X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;ds=inline;f=gtk%2Fsrc%2Fmain.c;h=e92f974d50234baf4e488e26cfe88782a9b9acc5;hb=9460d9624a5cf24126bc39605bc47d43330fcdf4;hp=a9c07fab231dedfd980888c1fc365bf82adb8fd0;hpb=f8be0851bfc4d3d548f29db61b3b13f15a8e2dd1;p=handbrake-jp%2Fhandbrake-jp-git.git
diff --git a/gtk/src/main.c b/gtk/src/main.c
index a9c07fab..e92f974d 100644
--- a/gtk/src/main.c
+++ b/gtk/src/main.c
@@ -342,26 +342,32 @@ 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, 200);
+ gtk_tree_view_column_set_max_width (column, 200);
cell = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(
_("Codec"), cell, "text", 1, NULL);
gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
+ gtk_tree_view_column_set_min_width (column, 110);
cell = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(
_("Bitrate"), cell, "text", 2, NULL);
gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
+ gtk_tree_view_column_set_min_width (column, 50);
cell = gtk_cell_renderer_text_new();
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, 100);
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, 115);
cell = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(
@@ -379,6 +385,7 @@ bind_audio_tree_model (signal_user_data_t *ud)
extern G_MODULE_EXPORT void subtitle_list_selection_changed_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_default_toggled_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
@@ -395,39 +402,57 @@ bind_subtitle_tree_model (signal_user_data_t *ud)
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
+ // 6 columns in model. 5 are visible, the other 1 is for storing
// values that I need
- treestore = gtk_list_store_new(8,
+ // Track, force, burn, default, type, srt offset, track short, source
+ // force visible, burn visible, offset visible
+ treestore = gtk_list_store_new(11,
G_TYPE_STRING,
G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
- G_TYPE_STRING, G_TYPE_STRING,
- G_TYPE_STRING, G_TYPE_INT,
- G_TYPE_INT);
+ G_TYPE_BOOLEAN, G_TYPE_STRING,
+ G_TYPE_INT, G_TYPE_STRING,
+ G_TYPE_INT,
+ G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
+ G_TYPE_BOOLEAN);
gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(treestore));
cell = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes( _("Track"), cell,
- "text", 0, "foreground", 5, "weight", 6, "style", 7, NULL);
+ 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, 190);
+ gtk_tree_view_column_set_max_width (column, 190);
cell = gtk_cell_renderer_toggle_new();
column = gtk_tree_view_column_new_with_attributes(
- _("Forced Only"), cell, "active", 1, NULL);
- gtk_tree_view_column_set_max_width (column, 50);
+ _("Forced Only"), cell, "active", 1, "visible", 8, 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", 2, "cell-background", 5, NULL);
- gtk_tree_view_column_set_max_width (column, 50);
+ _("Burned In"), cell, "active", 2, "visible", 9, 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_toggle_new();
+ gtk_cell_renderer_toggle_set_radio(GTK_CELL_RENDERER_TOGGLE(cell), TRUE);
+ column = gtk_tree_view_column_new_with_attributes(
+ _("Default"), cell, "active", 3, NULL);
+ gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
+ g_signal_connect(cell, "toggled", subtitle_default_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));
+ gtk_tree_view_column_set_min_width (column, 190);
+ gtk_tree_view_column_set_max_width (column, 190);
+
cell = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(
- _("Type"), cell, "text", 3, NULL);
+ _("Srt Offset"), cell, "text", 5, "visible", 10, NULL);
gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
@@ -442,6 +467,7 @@ bind_subtitle_tree_model (signal_user_data_t *ud)
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);
+extern G_MODULE_EXPORT void preset_edited_cb(void);
extern void presets_row_expanded_cb(void);
// Create and bind the tree model to the tree view for the preset list
@@ -462,13 +488,17 @@ bind_presets_tree_model (signal_user_data_t *ud)
g_debug("bind_presets_tree_model ()\n");
treeview = GTK_TREE_VIEW(GHB_WIDGET (ud->builder, "presets_list"));
selection = gtk_tree_view_get_selection (treeview);
- treestore = gtk_tree_store_new(5, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT,
- G_TYPE_STRING, G_TYPE_STRING);
+ treestore = gtk_tree_store_new(6, G_TYPE_STRING, G_TYPE_INT, G_TYPE_INT,
+ G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN);
gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(treestore));
cell = gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(_("Preset Name"), cell,
- "text", 0, "weight", 1, "style", 2, "foreground", 3, NULL);
+ "text", 0, "weight", 1, "style", 2,
+ "foreground", 3, "editable", 5, NULL);
+
+ g_signal_connect(cell, "edited", preset_edited_cb, ud);
+
gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column));
gtk_tree_view_column_set_expand (column, TRUE);
gtk_tree_view_set_tooltip_column (treeview, 4);
@@ -493,7 +523,7 @@ IoRedirect(signal_user_data_t *ud)
{
GIOChannel *channel;
gint pfd[2];
- gchar *config, *path;
+ gchar *config, *path, *str;
// I'm opening a pipe and attaching the writer end to stderr
// The reader end will be polled by main event loop and I'll get
@@ -509,7 +539,9 @@ IoRedirect(signal_user_data_t *ud)
path = g_strdup_printf("%s/%s", config, "Activity.log");
ud->activity_log = g_io_channel_new_file (path, "w", NULL);
ud->job_activity_log = NULL;
- ghb_ui_update(ud, "activity_location", ghb_string_value(path));
+ str = g_strdup_printf("%s", path);
+ ghb_ui_update(ud, "activity_location", ghb_string_value(str));
+ g_free(str);
g_free(path);
g_free(config);
// Set encoding to raw.
@@ -613,10 +645,15 @@ const gchar *hud_rcstyle =
"fg[PRELIGHT]=\"white\"\n"
"}\n"
"widget_class \"*.GtkComboBox.GtkToggleButton\" style \"ghb-combo\"\n"
+"widget_class \"*.GtkScaleButton\" style \"ghb-combo\"\n"
"widget_class \"*.GtkEntry\" style \"ghb-entry\"\n"
"widget \"preview_window.*.preview_hud.*\" style \"ghb-hud\"\n"
"widget \"preview_window\" style \"ghb-preview\"\n";
+#if GTK_CHECK_VERSION(2, 16, 0)
+extern G_MODULE_EXPORT void status_icon_query_tooltip_cb(void);
+#endif
+
int
main (int argc, char *argv[])
{
@@ -651,6 +688,8 @@ main (int argc, char *argv[])
gtk_set_locale ();
gtk_init (&argc, &argv);
gtk_rc_parse_string(hud_rcstyle);
+ g_type_class_unref(g_type_class_ref(GTK_TYPE_BUTTON));
+ g_object_set(gtk_settings_get_default(), "gtk-button-images", TRUE, NULL);
#if !defined(_WIN32)
notify_init("HandBrake");
#endif
@@ -662,6 +701,21 @@ main (int argc, char *argv[])
ghb_hal_init();
#endif
+ if (!ghb_lock_file("queue_lock"))
+ {
+ const gchar *markup =
+ N_("Another instance of HandBrake is already running.\n"
+ "\n"
+ "Only one instance of HandBrake may run.\n");
+ GtkWidget *dialog = gtk_message_dialog_new_with_markup(NULL,
+ GTK_DIALOG_MODAL,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ _(markup));
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+ exit(EXIT_FAILURE);
+ }
ud = g_malloc0(sizeof(signal_user_data_t));
ud->debug = ghb_debug;
g_log_set_handler (NULL, G_LOG_LEVEL_DEBUG, debug_log_handler, ud);
@@ -679,7 +733,7 @@ main (int argc, char *argv[])
GtkWidget *draw, *hud, *blender, *align;
align = GHB_WIDGET(ud->builder, "preview_window_alignment");
- draw = GHB_WIDGET(ud->builder, "preview_image");
+ draw = GHB_WIDGET(ud->builder, "preview_image_align");
hud = GHB_WIDGET(ud->builder, "preview_hud");
// Set up compositing for hud
@@ -723,7 +777,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);
@@ -770,19 +824,47 @@ main (int argc, char *argv[])
}
// Reload and check status of the last saved queue
g_idle_add((GSourceFunc)ghb_reload_queue, ud);
- if (ghb_settings_get_boolean(ud->settings, "check_updates"))
- {
- g_thread_create((GThreadFunc)ghb_check_update, ud, FALSE, NULL);
- }
+
// 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);
+ ghb_volname_cache_init();
+ g_thread_create((GThreadFunc)ghb_cache_volnames, ud, FALSE, NULL);
+
+ GtkStatusIcon *si;
+ si = GTK_STATUS_ICON(GHB_OBJECT(ud->builder, "hb_status"));
+
+ gtk_status_icon_set_visible(si,
+ ghb_settings_get_boolean(ud->settings, "show_status"));
+#if GTK_CHECK_VERSION(2, 16, 0)
+ gtk_status_icon_set_has_tooltip(si, TRUE);
+ g_signal_connect(si, "query-tooltip",
+ status_icon_query_tooltip_cb, ud);
+#else
+ gtk_status_icon_set_tooltip(si, "HandBrake");
+#endif
+
+ // Ugly hack to keep subtitle table from bouncing around as I change
+ // which set of controls are visible
+ GtkRequisition req;
+ GtkWidget *widget;
+ gint height;
+
+ widget = GHB_WIDGET(ud->builder, "SrtCodeset");
+ gtk_widget_size_request( widget, &req );
+ height = req.height;
+ widget = GHB_WIDGET(ud->builder, "srt_code_label");
+ gtk_widget_size_request( widget, &req );
+ height += req.height;
+ widget = GHB_WIDGET(ud->builder, "subtitle_table");
+ gtk_widget_set_size_request(widget, -1, height);
+
// Everything should be go-to-go. Lets rock!
gtk_main ();
+ gtk_status_icon_set_visible(si, FALSE);
ghb_backend_close();
if (ud->queue)
ghb_value_free(ud->queue);