[gnumeric] AutoFormat: avoid GtkUIManager.



commit 8ca0af56688d92fccb5740f10fcff55d25e57c79
Author: Morten Welinder <terra gnome org>
Date:   Sun May 4 07:56:07 2014 -0400

    AutoFormat: avoid GtkUIManager.

 NEWS                            |    3 +
 src/dialogs/ChangeLog           |    5 ++
 src/dialogs/autoformat.ui       |  147 +++++++++++++++++++++++++++++++++++++--
 src/dialogs/dialog-autoformat.c |  100 +++++---------------------
 4 files changed, 167 insertions(+), 88 deletions(-)
---
diff --git a/NEWS b/NEWS
index cda64a2..dd2590a 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,8 @@
 Gnumeric 1.12.16
 
+Morten:
+       * Start moving off GtkUIManager.
+
 --------------------------------------------------------------------------
 Gnumeric 1.12.15
 
diff --git a/src/dialogs/ChangeLog b/src/dialogs/ChangeLog
index 2026528..e243927 100644
--- a/src/dialogs/ChangeLog
+++ b/src/dialogs/ChangeLog
@@ -1,3 +1,8 @@
+2014-05-04  Morten Welinder  <terra gnome org>
+
+       * dialog-autoformat.c (dialog_autoformat): Do the full dialog in
+       GtkBuilder instead of doing half in GtkUIManager.
+
 2014-04-30  Morten Welinder <terra gnome org>
 
        * Release 1.12.15
diff --git a/src/dialogs/autoformat.ui b/src/dialogs/autoformat.ui
index b10d103..8d96161 100644
--- a/src/dialogs/autoformat.ui
+++ b/src/dialogs/autoformat.ui
@@ -21,12 +21,10 @@
             <child>
               <object class="GtkButton" id="format_cancel">
                 <property name="label">gtk-cancel</property>
-                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
                 <property name="receives_default">False</property>
-                <property name="use_action_appearance">False</property>
                 <property name="use_stock">True</property>
               </object>
               <packing>
@@ -38,13 +36,11 @@
             <child>
               <object class="GtkButton" id="format_ok">
                 <property name="label">gtk-ok</property>
-                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
                 <property name="has_default">True</property>
                 <property name="receives_default">False</property>
-                <property name="use_action_appearance">False</property>
                 <property name="use_stock">True</property>
               </object>
               <packing>
@@ -56,12 +52,10 @@
             <child>
               <object class="GtkButton" id="help_button">
                 <property name="label">gtk-help</property>
-                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
                 <property name="receives_default">False</property>
-                <property name="use_action_appearance">False</property>
                 <property name="use_stock">True</property>
               </object>
               <packing>
@@ -257,7 +251,146 @@
                   </packing>
                 </child>
                 <child>
-                  <placeholder/>
+                  <object class="GtkMenuBar" id="menubar1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="hexpand">True</property>
+                    <child>
+                      <object class="GtkCheckMenuItem" id="menuitem1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">_Settings</property>
+                        <property name="use_underline">True</property>
+                        <child type="submenu">
+                          <object class="GtkMenu" id="menu1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkCheckMenuItem" id="number_menuitem">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Apply _Number Formats</property>
+                                <property name="use_underline">True</property>
+                                <property name="active">True</property>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkCheckMenuItem" id="border_menuitem">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Apply _Borders</property>
+                                <property name="use_underline">True</property>
+                                <property name="active">True</property>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkCheckMenuItem" id="font_menuitem">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Apply _Fonts</property>
+                                <property name="use_underline">True</property>
+                                <property name="active">True</property>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkCheckMenuItem" id="pattern_menuitem">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Apply _Patterns</property>
+                                <property name="use_underline">True</property>
+                                <property name="active">True</property>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkCheckMenuItem" id="alignment_menuitem">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Apply _Alignment</property>
+                                <property name="use_underline">True</property>
+                                <property name="active">True</property>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkSeparatorMenuItem" id="menuitem2">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkMenuItem" id="edges_menuitem">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">_Edges</property>
+                                <property name="use_underline">True</property>
+                                <child type="submenu">
+                                  <object class="GtkMenu" id="edges_menu">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <object class="GtkCheckMenuItem" id="left_menuitem">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="label" translatable="yes">_Left</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="active">True</property>
+                                      </object>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckMenuItem" id="right_menuitem">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="label" translatable="yes">_Right</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="active">True</property>
+                                      </object>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckMenuItem" id="top_menuitem">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="label" translatable="yes">_Top</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="active">True</property>
+                                      </object>
+                                    </child>
+                                    <child>
+                                      <object class="GtkCheckMenuItem" id="bottom_menuitem">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="label" translatable="yes">_Bottom</property>
+                                        <property name="use_underline">True</property>
+                                        <property name="active">True</property>
+                                      </object>
+                                    </child>
+                                  </object>
+                                </child>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkSeparatorMenuItem" id="menuitem3">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkCheckMenuItem" id="gridlines_menuitem">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">_Show Gridlines</property>
+                                <property name="use_underline">True</property>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">2</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
                 </child>
               </object>
             </child>
diff --git a/src/dialogs/dialog-autoformat.c b/src/dialogs/dialog-autoformat.c
index 08f698b..69e50a6 100644
--- a/src/dialogs/dialog-autoformat.c
+++ b/src/dialogs/dialog-autoformat.c
@@ -485,58 +485,6 @@ cb_gridlines_item_toggled (G_GNUC_UNUSED GtkCheckMenuItem *item,
  * MAIN
  ********************************************************************************/
 
-/*      Menus   */
-static GtkActionEntry entries[] = {
-       { "settings", NULL, N_("_Settings"), NULL, NULL, NULL },
-               { "edges", NULL, N_("_Edges"), NULL, NULL, NULL }
-};
-
-/* Toggle items */
-static GtkToggleActionEntry toggle_entries[] = {
-       { "number", NULL, N_("Apply _Number Formats"), NULL,
-               NULL, G_CALLBACK (cb_check_item_toggled), TRUE},
-       { "border", NULL, N_("Apply _Borders"), NULL,
-               NULL, G_CALLBACK (cb_check_item_toggled), TRUE },
-       { "font", NULL, N_("Apply _Fonts"), NULL,
-               NULL, G_CALLBACK (cb_check_item_toggled), TRUE },
-       { "patterns", NULL, N_("Apply _Patterns"), NULL,
-               NULL, G_CALLBACK (cb_check_item_toggled), TRUE },
-       { "alignment", NULL, N_("Apply _Alignment"), NULL,
-               NULL, G_CALLBACK (cb_check_item_toggled), TRUE },
-       { "left", NULL, N_("_Left"), NULL,
-               NULL, G_CALLBACK (cb_check_item_toggled), TRUE },
-       { "right", NULL, N_("_Right"), NULL,
-               NULL, G_CALLBACK (cb_check_item_toggled), TRUE },
-       { "top", NULL, N_("_Top"), NULL,
-               NULL, G_CALLBACK (cb_check_item_toggled), TRUE },
-       { "bottom", NULL, N_("_Bottom"), NULL,
-               NULL, G_CALLBACK (cb_check_item_toggled), TRUE },
-       { "gridlines", NULL, N_("_Show Gridlines"), NULL,
-               NULL, G_CALLBACK (cb_gridlines_item_toggled), FALSE }
-};
-
-static const char *ui_description =
-"<ui>"
-"  <menubar name='bar'>"
-"    <menu action='settings'>"
-"      <menuitem action='number'/>"
-"      <menuitem action='border'/>"
-"      <menuitem action='font'/>"
-"      <menuitem action='patterns'/>"
-"      <menuitem action='alignment'/>"
-"      <separator name='settings-sep1'/>"
-"      <menu action='edges'>"
-"        <menuitem action='left'/>"
-"        <menuitem action='right'/>"
-"        <menuitem action='top'/>"
-"        <menuitem action='bottom'/>"
-"      </menu>"
-"      <separator name='settings-sep2'/>"
-"      <menuitem action='gridlines'/>"
-"    </menu>"
-"  </menubar>"
-"</ui>";
-
 static gboolean
 cb_canvas_focus (GtkWidget *canvas,
                 G_GNUC_UNUSED GtkDirectionType direction,
@@ -564,8 +512,6 @@ dialog_autoformat (WBCGtk *wbcg)
        GtkBuilder *gui;
        AutoFormatState *state;
        int i;
-       GtkUIManager *ui_manager;
-       GtkActionGroup *action_group;
 
        gui = gnm_gtk_builder_load ("autoformat.ui", NULL, GO_CMD_CONTEXT (wbcg));
        if (gui == NULL)
@@ -600,32 +546,25 @@ dialog_autoformat (WBCGtk *wbcg)
        state->ok     = GTK_BUTTON (go_gtk_builder_get_widget (gui, "format_ok"));
        state->cancel = GTK_BUTTON (go_gtk_builder_get_widget (gui, "format_cancel"));
 
-       action_group = gtk_action_group_new ("settings-actions");
-       gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE);
-       gtk_action_group_add_actions (action_group, entries, G_N_ELEMENTS (entries), state);
-       gtk_action_group_add_toggle_actions (action_group, toggle_entries, G_N_ELEMENTS (toggle_entries), 
state);
-
-       ui_manager = gtk_ui_manager_new ();
-       gtk_ui_manager_insert_action_group (ui_manager, action_group, 0);
-       g_object_unref (action_group);
-       gtk_ui_manager_add_ui_from_string (ui_manager, ui_description, -1, NULL);
-       state->number      = GTK_CHECK_MENU_ITEM  (gtk_ui_manager_get_widget (ui_manager, 
"/bar/settings/number"));
-       state->border      = GTK_CHECK_MENU_ITEM  (gtk_ui_manager_get_widget (ui_manager, 
"/bar/settings/border"));
-       state->font        = GTK_CHECK_MENU_ITEM  (gtk_ui_manager_get_widget (ui_manager, 
"/bar/settings/font"));
-       state->patterns    = GTK_CHECK_MENU_ITEM  (gtk_ui_manager_get_widget (ui_manager, 
"/bar/settings/patterns"));
-       state->alignment   = GTK_CHECK_MENU_ITEM  (gtk_ui_manager_get_widget (ui_manager, 
"/bar/settings/alignment"));
-
-       state->edges.left   = GTK_CHECK_MENU_ITEM  (gtk_ui_manager_get_widget (ui_manager, 
"/bar/settings/edges/left"));
-       state->edges.right  = GTK_CHECK_MENU_ITEM  (gtk_ui_manager_get_widget (ui_manager, 
"/bar/settings/edges/right"));
-       state->edges.top    = GTK_CHECK_MENU_ITEM  (gtk_ui_manager_get_widget (ui_manager, 
"/bar/settings/edges/top"));
-       state->edges.bottom = GTK_CHECK_MENU_ITEM  (gtk_ui_manager_get_widget (ui_manager, 
"/bar/settings/edges/bottom"));
-
-       state->gridlines  = GTK_CHECK_MENU_ITEM  (gtk_ui_manager_get_widget (ui_manager, 
"/bar/settings/gridlines"));
-
-       gtk_grid_attach (GTK_GRID (go_gtk_builder_get_widget (gui, "preview-grid")),
-                           gtk_ui_manager_get_widget (ui_manager, "/bar"),
-                           2, 0, 1, 1);
-       g_object_set (gtk_ui_manager_get_widget (ui_manager, "/bar"), "hexpand", TRUE, NULL);
+#define CHECK_ITEM(v_, w_,h_) do {                             \
+       GtkWidget *w = go_gtk_builder_get_widget (gui, (w_));   \
+       state->v_ = GTK_CHECK_MENU_ITEM (w);                    \
+       g_signal_connect (w, "activate", G_CALLBACK (h_), state);       \
+} while (0)
+
+       CHECK_ITEM (number, "number_menuitem", cb_check_item_toggled);
+       CHECK_ITEM (border, "border_menuitem", cb_check_item_toggled);
+       CHECK_ITEM (font, "font_menuitem", cb_check_item_toggled);
+       CHECK_ITEM (patterns, "pattern_menuitem", cb_check_item_toggled);
+       CHECK_ITEM (alignment, "alignment_menuitem", cb_check_item_toggled);
+       CHECK_ITEM (edges.left, "left_menuitem", cb_check_item_toggled);
+       CHECK_ITEM (edges.right, "right_menuitem", cb_check_item_toggled);
+       CHECK_ITEM (edges.top, "top_menuitem", cb_check_item_toggled);
+       CHECK_ITEM (edges.bottom, "bottom_menuitem", cb_check_item_toggled);
+       CHECK_ITEM (gridlines, "gridlines_menuitem", cb_gridlines_item_toggled);
+
+#undef CHECK_ITEM
+
        for (i = 0; i < NUM_PREVIEWS; i++) {
                char *name;
 
@@ -719,5 +658,4 @@ dialog_autoformat (WBCGtk *wbcg)
        /* not show all or the scrollbars will appear */
        gtk_widget_show (GTK_WIDGET (state->dialog));
        g_object_unref (gui);
-       g_object_unref (ui_manager);
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]