# HG changeset patch # User nadvornik # Date 1197741531 0 # Node ID dd6dc0a55d3dc429986619f4bbb1802d32367a6a # Parent d06bccc7551e79d566b438f0fc1a01e62368e42b better integration of split image functions into menu diff -r d06bccc7551e -r dd6dc0a55d3d src/layout_image.c --- a/src/layout_image.c Fri Dec 14 21:51:46 2007 +0000 +++ b/src/layout_image.c Sat Dec 15 17:58:51 2007 +0000 @@ -703,43 +703,6 @@ layout_tools_hide_toggle(lw); } -static void li_pop_menu_split_none_cb(GtkWidget *widget, gpointer data) -{ - LayoutWindow *lw = data; - layout_split_change(lw, SPLIT_NONE); -} - -static void li_pop_menu_split_hor_cb(GtkWidget *widget, gpointer data) -{ - LayoutWindow *lw = data; - layout_split_change(lw, SPLIT_HOR); -} - -static void li_pop_menu_split_vert_cb(GtkWidget *widget, gpointer data) -{ - LayoutWindow *lw = data; - layout_split_change(lw, SPLIT_VERT); -} - -static void li_pop_menu_split_quad_cb(GtkWidget *widget, gpointer data) -{ - LayoutWindow *lw = data; - layout_split_change(lw, SPLIT_QUAD); -} - -static void li_pop_menu_connect_scroll_cb(GtkWidget *widget, gpointer data) -{ - LayoutWindow *lw = data; - lw->connect_scroll = !lw->connect_scroll; -} - -static void li_pop_menu_connect_zoom_cb(GtkWidget *widget, gpointer data) -{ - LayoutWindow *lw = data; - lw->connect_zoom = !lw->connect_zoom; -} - - static GtkWidget *layout_image_pop_menu(LayoutWindow *lw) { GtkWidget *menu; @@ -758,18 +721,6 @@ menu_item_add_stock(menu, _("Zoom _1:1"), GTK_STOCK_ZOOM_100, G_CALLBACK(li_pop_menu_zoom_1_1_cb), lw); menu_item_add_stock(menu, _("Fit image to _window"), GTK_STOCK_ZOOM_FIT, G_CALLBACK(li_pop_menu_zoom_fit_cb), lw); menu_item_add_divider(menu); - if (!fullscreen) - { - menu_item_add(menu, _("No split"), G_CALLBACK(li_pop_menu_split_none_cb), lw); - menu_item_add(menu, _("Split horizontaly"), G_CALLBACK(li_pop_menu_split_hor_cb), lw); - menu_item_add(menu, _("Split verticaly"), G_CALLBACK(li_pop_menu_split_vert_cb), lw); - menu_item_add(menu, _("Split quad"), G_CALLBACK(li_pop_menu_split_quad_cb), lw); - menu_item_add_check(menu, _("Connected scroll"), lw->connect_scroll, - G_CALLBACK(li_pop_menu_connect_scroll_cb), lw); - menu_item_add_check(menu, _("Connected zoom"), lw->connect_zoom, - G_CALLBACK(li_pop_menu_connect_zoom_cb), lw); - menu_item_add_divider(menu); - } submenu = submenu_add_edit(menu, &item, G_CALLBACK(li_pop_menu_edit_cb), lw); if (!path) gtk_widget_set_sensitive(item, FALSE); @@ -1797,10 +1748,11 @@ layout_image_activate(lw, 0); } + /* horizontal split means vpaned and vice versa */ if (horizontal) + paned = gtk_vpaned_new (); + else paned = gtk_hpaned_new (); - else - paned = gtk_vpaned_new (); gtk_paned_pack1 (GTK_PANED (paned), lw->split_images[0]->widget, TRUE, TRUE); gtk_paned_pack2 (GTK_PANED (paned), lw->split_images[1]->widget, TRUE, TRUE); diff -r d06bccc7551e -r dd6dc0a55d3d src/layout_util.c --- a/src/layout_util.c Fri Dec 14 21:51:46 2007 +0000 +++ b/src/layout_util.c Sat Dec 15 17:58:51 2007 +0000 @@ -489,6 +489,29 @@ layout_image_zoom_set(lw, 0.0); } +static void layout_menu_split_cb(GtkRadioAction *action, GtkRadioAction *current, gpointer data) +{ + LayoutWindow *lw = data; + ImageSplitMode mode = gtk_radio_action_get_current_value(action); + + if (mode == lw->split_mode) mode = 0; /* toggle back */ + + layout_split_change(lw, mode); +} + +static void layout_menu_connect_scroll_cb(GtkToggleAction *action, gpointer data) +{ + LayoutWindow *lw = data; + lw->connect_scroll = gtk_toggle_action_get_active(action); +} + +static void layout_menu_connect_zoom_cb(GtkToggleAction *action, gpointer data) +{ + LayoutWindow *lw = data; + lw->connect_zoom = gtk_toggle_action_get_active(action); +} + + static void layout_menu_thumb_cb(GtkToggleAction *action, gpointer data) { LayoutWindow *lw = data; @@ -785,6 +808,7 @@ { "EditMenu", NULL, N_("_Edit") }, { "AdjustMenu", NULL, N_("_Adjust") }, { "ViewMenu", NULL, N_("_View") }, + { "SplitMenu", NULL, N_("_Split") }, { "HelpMenu", NULL, N_("_Help") }, { "NewWindow", GTK_STOCK_NEW, N_("New _window"), NULL, NULL, CB(layout_menu_new_window_cb) }, @@ -830,6 +854,9 @@ { "ZoomOut", GTK_STOCK_ZOOM_OUT, N_("Zoom _out"), "minus", NULL, CB(layout_menu_zoom_out_cb) }, { "Zoom100", GTK_STOCK_ZOOM_100, N_("Zoom _1:1"), "Z", NULL, CB(layout_menu_zoom_1_1_cb) }, { "ZoomFit", GTK_STOCK_ZOOM_FIT, N_("_Zoom to fit"), "X", NULL, CB(layout_menu_zoom_fit_cb) }, + + + { "FullScreen", NULL, N_("F_ull screen"), "F", NULL, CB(layout_menu_fullscreen_cb) }, { "HideTools", NULL, N_("_Hide file list"), "H", NULL, CB(layout_menu_hide_cb) }, { "SlideShow", NULL, N_("Toggle _slideshow"),"S", NULL, CB(layout_menu_slideshow_cb) }, @@ -843,13 +870,15 @@ static GtkToggleActionEntry menu_toggle_entries[] = { { "Thumbnails", NULL, N_("_Thumbnails"), "T", NULL, CB(layout_menu_thumb_cb) }, - { "Marks", NULL, N_("_Marks"), "M", NULL, CB(layout_menu_marks_cb) }, + { "Marks", NULL, N_("_Marks"), "M", NULL, CB(layout_menu_marks_cb) }, { "FolderTree", NULL, N_("Tr_ee"), "T", NULL, CB(layout_menu_tree_cb) }, { "FloatTools", NULL, N_("_Float file list"), "L", NULL, CB(layout_menu_float_cb) }, { "HideToolbar", NULL, N_("Hide tool_bar"), NULL, NULL, CB(layout_menu_toolbar_cb) }, { "SBarKeywords", NULL, N_("_Keywords"), "K", NULL, CB(layout_menu_bar_info_cb) }, { "SBarExif", NULL, N_("E_xif data"), "E", NULL, CB(layout_menu_bar_exif_cb) }, - { "SBarSort", NULL, N_("Sort _manager"), "S", NULL, CB(layout_menu_bar_sort_cb) } + { "SBarSort", NULL, N_("Sort _manager"), "S", NULL, CB(layout_menu_bar_sort_cb) }, + { "ConnectScroll", NULL, N_("Connected scroll"), "U", NULL, CB(layout_menu_connect_scroll_cb) }, + { "ConnectZoom", NULL, N_("Connected zoom"), "Y", NULL, CB(layout_menu_connect_zoom_cb) } }; static GtkRadioActionEntry menu_radio_entries[] = { @@ -857,6 +886,13 @@ { "ViewIcons", NULL, N_("I_cons"), "I", NULL, 1 } }; +static GtkRadioActionEntry menu_split_radio_entries[] = { + { "SplitHorizontal", NULL, N_("Horizontal"), "E", NULL, SPLIT_HOR }, + { "SplitVertical", NULL, N_("Vertical"), "U", NULL, SPLIT_VERT }, + { "SplitQuad", NULL, N_("Quad"), "Q", NULL, SPLIT_QUAD }, + { "SplitSingle", NULL, N_("Single"), "Y", NULL, SPLIT_NONE } +}; + #undef CB static const char *menu_ui_description = @@ -920,6 +956,15 @@ " " " " " " +" " +" " +" " +" " +" " +" " +" " +" " +" " " " " " " " @@ -972,6 +1017,9 @@ gtk_action_group_add_radio_actions(lw->action_group, menu_radio_entries, G_N_ELEMENTS(menu_radio_entries), 0, G_CALLBACK(layout_menu_list_cb), lw); + gtk_action_group_add_radio_actions(lw->action_group, + menu_split_radio_entries, G_N_ELEMENTS(menu_split_radio_entries), + 0, G_CALLBACK(layout_menu_split_cb), lw); lw->ui_manager = gtk_ui_manager_new(); gtk_ui_manager_set_add_tearoffs(lw->ui_manager, TRUE);