[gedit/wip/redesign] Better handling of sensitivity



commit 831591db6d13a9e5f29614a1295e21a3fcfed8dc
Author: Ignacio Casal Quinteiro <icq gnome org>
Date:   Mon May 6 17:13:00 2013 +0200

    Better handling of sensitivity

 gedit/gedit-ui.xml           |   19 -------
 gedit/gedit-window-private.h |    2 -
 gedit/gedit-window.c         |  119 ++++++++++++++++++++++++++++++------------
 3 files changed, 85 insertions(+), 55 deletions(-)
---
diff --git a/gedit/gedit-ui.xml b/gedit/gedit-ui.xml
index ff124c9..57fd3d5 100644
--- a/gedit/gedit-ui.xml
+++ b/gedit/gedit-ui.xml
@@ -37,7 +37,6 @@
       <placeholder name="FileOps_4"/>
       <separator/>
       <placeholder name="FileOps_5"/>
-      <placeholder name="FileQuitMenuHolder" />
     </menu>
 
     <menu name="EditMenu" action="Edit">
@@ -82,23 +81,5 @@
       <placeholder name="ToolsOps_5" />
     </menu>
 
-    <placeholder name="ExtraMenu_1" />
-
-    <menu name="HelpMenu" action="Help">
-     <placeholder name="HelpOps_1" />
-     <separator/>
-     <placeholder name="HelpHolder" />
-    </menu>
-
   </menubar>
-
-  <toolbar name="ToolBar">
-    <toolitem action="EditUndo"/>
-    <toolitem action="EditRedo"/>
-    <separator/>
-    <toolitem action="EditCut"/>
-    <toolitem action="EditCopy"/>
-    <toolitem action="EditPaste"/>
-  </toolbar>
-
 </ui>
diff --git a/gedit/gedit-window-private.h b/gedit/gedit-window-private.h
index 4522840..c5a7f9e 100644
--- a/gedit/gedit-window-private.h
+++ b/gedit/gedit-window-private.h
@@ -86,8 +86,6 @@ struct _GeditWindowPrivate
        GtkUIManager   *manager;
        GtkActionGroup *action_group;
        GtkActionGroup *always_sensitive_action_group;
-       GtkActionGroup *quit_action_group;
-       GtkActionGroup *panels_action_group;
        GtkActionGroup *languages_action_group;
        GtkActionGroup *documents_list_action_group;
        guint           documents_list_menu_ui_id;
diff --git a/gedit/gedit-window.c b/gedit/gedit-window.c
index 2eb0fff..4176faa 100644
--- a/gedit/gedit-window.c
+++ b/gedit/gedit-window.c
@@ -1137,7 +1137,6 @@ static void
 create_menu_bar_and_toolbar (GeditWindow *window)
 {
        GtkActionGroup *action_group;
-       GtkAction *action;
        GtkUIManager *manager;
        GError *error = NULL;
 
@@ -1170,21 +1169,6 @@ create_menu_bar_and_toolbar (GeditWindow *window)
        g_object_unref (action_group);
        window->priv->action_group = action_group;
 
-       /* set which actions should have priority on the toolbar */
-       action = gtk_action_group_get_action (action_group, "EditUndo");
-       g_object_set (action, "is_important", TRUE, NULL);
-
-       action_group = gtk_action_group_new ("GeditQuitWindowActions");
-       gtk_action_group_set_translation_domain (action_group, NULL);
-       gtk_action_group_add_actions (action_group,
-                                     gedit_quit_menu_entries,
-                                     G_N_ELEMENTS (gedit_quit_menu_entries),
-                                     window);
-
-       gtk_ui_manager_insert_action_group (manager, action_group, 0);
-       g_object_unref (action_group);
-       window->priv->quit_action_group = action_group;
-
        gtk_ui_manager_add_ui_from_resource (manager,
                                             "/org/gnome/gedit/ui/gedit-ui.xml",
                                             &error);
@@ -2101,15 +2085,19 @@ set_sensitivity_according_to_window_state (GeditWindow *window)
        gint num_tabs;
 
        lockdown = gedit_app_get_lockdown (GEDIT_APP (g_application_get_default ()));
+       num_tabs = gedit_multi_notebook_get_n_tabs (window->priv->multi_notebook);
 
        /* We disable File->Quit/SaveAll/CloseAll while printing to avoid to have two
           operations (save and print/print preview) that uses the message area at
           the same time (may be we can remove this limitation in the future) */
        /* We disable File->Quit/CloseAll if state is saving since saving cannot be
           cancelled (may be we can remove this limitation in the future) */
-       gtk_action_group_set_sensitive (window->priv->quit_action_group,
-                                 !(window->priv->state & GEDIT_WINDOW_STATE_SAVING) &&
-                                 !(window->priv->state & GEDIT_WINDOW_STATE_PRINTING));
+       action = g_action_map_lookup_action (G_ACTION_MAP (g_application_get_default ()),
+                                            "quit");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
+                                    !(window->priv->state & GEDIT_WINDOW_STATE_SAVING) &&
+                                    !(window->priv->state & GEDIT_WINDOW_STATE_PRINTING) &&
+                                    num_tabs > 0);
 
        action = g_action_map_lookup_action (G_ACTION_MAP (window), "close_all");
        g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
@@ -2121,19 +2109,47 @@ set_sensitivity_according_to_window_state (GeditWindow *window)
                                     !(window->priv->state & GEDIT_WINDOW_STATE_PRINTING) &&
                                     !(lockdown & GEDIT_LOCKDOWN_SAVE_TO_DISK));
 
-       num_tabs = gedit_multi_notebook_get_n_tabs (window->priv->multi_notebook);
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "save");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
 
-       if (!gtk_action_group_get_sensitive (window->priv->action_group))
-       {
-               gtk_action_group_set_sensitive (window->priv->action_group,
-                                               num_tabs > 0);
-       }
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "save_as");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
 
-       if (!gtk_action_group_get_sensitive (window->priv->quit_action_group))
-       {
-               gtk_action_group_set_sensitive (window->priv->quit_action_group,
-                                               num_tabs > 0);
-       }
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "revert");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "print");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "find");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "replace");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "find_next");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "find_prev");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "clear_highlight");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "goto_line");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "new_tab_group");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "previous_document");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "next_document");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "move_to_new_window");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 1);
 
        action = g_action_map_lookup_action (G_ACTION_MAP (window), "close");
        if (!g_action_get_enabled (action))
@@ -2675,7 +2691,7 @@ can_search_again (GeditDocument *doc,
 
 
        action = g_action_map_lookup_action (G_ACTION_MAP (window),
-                                            "find_previous");
+                                            "find_prev");
        g_simple_action_set_enabled (G_SIMPLE_ACTION (action), enabled);
 }
 
@@ -2808,9 +2824,44 @@ update_sensitivity_according_to_open_tabs (GeditWindow *window,
 {
        GAction *action;
 
-       /* Set sensitivity */
-       gtk_action_group_set_sensitive (window->priv->action_group,
-                                       num_tabs != 0);
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "save");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "save_as");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "revert");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "print");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "find");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "find_next");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "replace");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "find_prev");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "clear_highlight");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "goto_line");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "new_tab_group");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "previous_document");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
+
+       action = g_action_map_lookup_action (G_ACTION_MAP (window), "next_document");
+       g_simple_action_set_enabled (G_SIMPLE_ACTION (action), num_tabs > 0);
 
        action = g_action_map_lookup_action (G_ACTION_MAP (window), "move_to_new_window");
        g_simple_action_set_enabled (G_SIMPLE_ACTION (action),


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