OSDN Git Service

LinGui: automatically update the built-in presets when the hb build number changes
[handbrake-jp/handbrake-jp-git.git] / gtk / src / main.c
index e67b3db..ef0dc18 100644 (file)
@@ -54,6 +54,7 @@
 #include "values.h"
 #include "icons.h"
 #include "callbacks.h"
+#include "queuehandler.h"
 #include "x264handler.h"
 #include "settings.h"
 #include "resources.h"
@@ -201,7 +202,6 @@ change_font(GtkWidget *widget, gpointer data)
     //gtk_container_foreach((GtkContainer*)window, change_font, "sans 20");
 #endif
 
-extern G_MODULE_EXPORT void chapter_list_selection_changed_cb(void);
 extern G_MODULE_EXPORT void chapter_edited_cb(void);
 extern G_MODULE_EXPORT void chapter_keypress_cb(void);
 
@@ -239,7 +239,6 @@ bind_chapter_tree_model (signal_user_data_t *ud)
 
        g_signal_connect(cell, "key-press-event", chapter_keypress_cb, ud);
        g_signal_connect(cell, "edited", chapter_edited_cb, ud);
-       g_signal_connect(selection, "changed", chapter_list_selection_changed_cb, ud);
        g_debug("Done\n");
 }
 
@@ -343,6 +342,8 @@ bind_audio_tree_model (signal_user_data_t *ud)
        column = gtk_tree_view_column_new_with_attributes(
                                                                        _("Track"), cell, "text", 0, NULL);
     gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
+       gtk_tree_view_column_set_min_width (column, 210);
+       gtk_tree_view_column_set_max_width (column, 210);
 
        cell = gtk_cell_renderer_text_new();
        column = gtk_tree_view_column_new_with_attributes(
@@ -358,11 +359,13 @@ bind_audio_tree_model (signal_user_data_t *ud)
        column = gtk_tree_view_column_new_with_attributes(
                                                                        _("Sample Rate"), cell, "text", 3, NULL);
     gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
+       gtk_tree_view_column_set_min_width (column, 120);
 
        cell = gtk_cell_renderer_text_new();
        column = gtk_tree_view_column_new_with_attributes(
                                                                        _("Mix"), cell, "text", 4, NULL);
     gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
+       gtk_tree_view_column_set_min_width (column, 120);
 
        cell = gtk_cell_renderer_text_new();
        column = gtk_tree_view_column_new_with_attributes(
@@ -377,6 +380,78 @@ bind_audio_tree_model (signal_user_data_t *ud)
        g_debug("Done\n");
 }
 
+extern G_MODULE_EXPORT void subtitle_list_selection_changed_cb(void);
+extern G_MODULE_EXPORT void subtitle_enable_toggled_cb(void);
+extern G_MODULE_EXPORT void subtitle_forced_toggled_cb(void);
+extern G_MODULE_EXPORT void subtitle_burned_toggled_cb(void);
+extern G_MODULE_EXPORT void subtitle_track_changed_cb(void);
+
+// Create and bind the tree model to the tree view for the subtitle track list
+// Also, connect up the signal that lets us know the selection has changed
+static void
+bind_subtitle_tree_model (signal_user_data_t *ud)
+{
+       GtkCellRenderer *cell;
+       GtkTreeViewColumn *column;
+       GtkListStore *treestore;
+       GtkTreeView  *treeview;
+       GtkTreeSelection *selection;
+       GtkWidget *widget;
+
+       g_debug("bind_subtitle_tree_model ()\n");
+       treeview = GTK_TREE_VIEW(GHB_WIDGET (ud->builder, "subtitle_list"));
+       selection = gtk_tree_view_get_selection (treeview);
+       // 6 columns in model.  4 are visible, the other 2 is for storing
+       // values that I need
+       treestore = gtk_list_store_new(7, 
+                                                                       G_TYPE_BOOLEAN, G_TYPE_STRING,
+                                                                       G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
+                                                                       G_TYPE_STRING,  G_TYPE_STRING,
+                                                                       G_TYPE_BOOLEAN);
+       gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(treestore));
+
+       cell = gtk_cell_renderer_toggle_new();
+       column = gtk_tree_view_column_new_with_attributes(
+                                                                       _("On"), cell, "active", 0, NULL);
+       gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
+       g_signal_connect(cell, "toggled", subtitle_enable_toggled_cb, ud);
+
+       cell = gtk_cell_renderer_combo_new();
+       ghb_subtitle_track_model(ud, -1);
+       g_object_set(G_OBJECT(cell), "model", ud->subtitle_track_model,
+       "text-column", 0, "editable", TRUE, "width", 200, "has-entry", FALSE, NULL);
+       column = gtk_tree_view_column_new_with_attributes( _("Track"), cell, 
+                               "text", 1, NULL);
+       gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
+       g_signal_connect(cell, "changed", subtitle_track_changed_cb, ud);
+
+       cell = gtk_cell_renderer_toggle_new();
+       column = gtk_tree_view_column_new_with_attributes(
+                                                                       _("Forced Only"), cell, "active", 2, NULL);
+       gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
+       g_signal_connect(cell, "toggled", subtitle_forced_toggled_cb, ud);
+
+       cell = gtk_cell_renderer_toggle_new();
+       gtk_cell_renderer_toggle_set_radio(GTK_CELL_RENDERER_TOGGLE(cell), TRUE);
+       column = gtk_tree_view_column_new_with_attributes(
+                               _("Burned In"), cell, "active", 3, NULL);
+       gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
+       g_signal_connect(cell, "toggled", subtitle_burned_toggled_cb, ud);
+
+       cell = gtk_cell_renderer_text_new();
+       column = gtk_tree_view_column_new_with_attributes(
+                                                                       _("Type"), cell, "text", 4, NULL);
+       gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
+
+
+       g_signal_connect(selection, "changed", subtitle_list_selection_changed_cb, ud);
+       // Need to disable remove and update buttons since there are initially
+       // no selections
+       widget = GHB_WIDGET (ud->builder, "subtitle_remove");
+       gtk_widget_set_sensitive(widget, FALSE);
+       g_debug("Done\n");
+}
+
 extern G_MODULE_EXPORT void presets_list_selection_changed_cb(void);
 extern G_MODULE_EXPORT void presets_drag_cb(void);
 extern G_MODULE_EXPORT void presets_drag_motion_cb(void);
@@ -485,7 +560,6 @@ static GOptionEntry entries[] =
 };
 
 G_MODULE_EXPORT void drive_changed_cb(GVolumeMonitor *gvm, GDrive *gd, signal_user_data_t *ud);
-//void drive_disconnected_cb(GnomeVFSVolumeMonitor *gvm, GnomeVFSDrive *gd, signal_user_data_t *ud);
 
 #if defined(_WIN32)
 G_MODULE_EXPORT GdkFilterReturn
@@ -644,13 +718,13 @@ main (int argc, char *argv[])
        buffer = gtk_text_view_get_buffer (textview);
        g_signal_connect(buffer, "changed", (GCallback)x264_entry_changed_cb, ud);
 
-       ghb_file_menu_add_dvd(ud);
-       ghb_combo_init(ud->builder);
+       ghb_combo_init(ud);
 
        g_debug("ud %p\n", ud);
        g_debug("ud->builder %p\n", ud->builder);
 
        bind_audio_tree_model(ud);
+       bind_subtitle_tree_model(ud);
        bind_presets_tree_model(ud);
        bind_queue_tree_model(ud);
        bind_chapter_tree_model(ud);
@@ -662,7 +736,7 @@ main (int argc, char *argv[])
        // Load all internal settings
        ghb_settings_init(ud);
        // Load the presets files
-       ghb_presets_load();
+       ghb_presets_load(ud);
        ghb_prefs_load(ud);
 
        ghb_prefs_to_ui(ud);
@@ -715,6 +789,10 @@ main (int argc, char *argv[])
        }
        // Start timer for monitoring libhb status, 500ms
        g_timeout_add (500, ghb_timer_cb, (gpointer)ud);
+
+       // Add dvd devices to File menu
+       g_idle_add((GSourceFunc)ghb_file_menu_add_dvd, ud);
+
        // Everything should be go-to-go.  Lets rock!
 
        gtk_main ();