[frogr] Porting the old menubar to GMenu (still Work-In-Progress)



commit b8103b917951b46974597d1ab5d2f734c713e871
Author: Mario Sanchez Prada <msanchez gnome org>
Date:   Tue Nov 20 17:03:21 2012 +0100

    Porting the old menubar to GMenu (still Work-In-Progress)

 Makefile.am                         |    3 +-
 data/gtkbuilder/frogr-main-view.xml |  286 ---------------------
 po/POTFILES.skip                    |    1 +
 src/frogr-main-view.c               |  481 ++++++++++++++++++++--------------
 4 files changed, 286 insertions(+), 485 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 966092a..77ba612 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -64,7 +64,8 @@ images_DATA = data/images/mpictures.png
 gtkbuilderdir = $(datadir)/frogr/gtkbuilder
 gtkbuilder_DATA = \
 	data/gtkbuilder/frogr-main-view.xml \
-	data/gtkbuilder/frogr-app-menu.xml
+	data/gtkbuilder/frogr-app-menu.xml \
+	data/gtkbuilder/frogr-menu-bar.xml
 
 desktopentrydir = $(datadir)/applications
 desktopentry_DATA = $(builddir)/data/frogr.desktop
diff --git a/data/gtkbuilder/frogr-main-view.xml b/data/gtkbuilder/frogr-main-view.xml
index ae4d810..b24f9f4 100644
--- a/data/gtkbuilder/frogr-main-view.xml
+++ b/data/gtkbuilder/frogr-main-view.xml
@@ -11,11 +11,6 @@
     <property name="stock_id">gtk-save</property>
     <signal name="activate" handler="_on_action_activated" swapped="no"/>
   </object>
-  <object class="GtkAction" id="save_project_as_action">
-    <property name="label" translatable="yes">_Save Project Asâ</property>
-    <property name="stock_id">gtk-save-as</property>
-    <signal name="activate" handler="_on_action_activated" swapped="no"/>
-  </object>
   <object class="GtkAction" id="load_pictures_action">
     <property name="label" translatable="yes">_Load Picturesâ</property>
     <property name="stock_id">gtk-add</property>
@@ -37,10 +32,6 @@
     <property name="label" translatable="yes">Add to _Existing Setâ</property>
     <signal name="activate" handler="_on_action_activated" swapped="no"/>
   </object>
-  <object class="GtkToggleAction" id="enable_tooltips_action">
-    <property name="label" translatable="yes">Enable _Tooltips</property>
-    <signal name="toggled" handler="_on_toggle_action_changed" swapped="no"/>
-  </object>
   <object class="GtkAction" id="edit_details_action">
     <property name="label" translatable="yes">Edit _Detailsâ</property>
     <signal name="activate" handler="_on_action_activated" swapped="no"/>
@@ -54,25 +45,6 @@
     <property name="stock_id">gtk-remove</property>
     <signal name="activate" handler="_on_action_activated" swapped="no"/>
   </object>
-  <object class="GtkToggleAction" id="reversed_order_action">
-    <property name="label" translatable="yes">_Reversed Order</property>
-    <signal name="toggled" handler="_on_toggle_action_changed" swapped="no"/>
-  </object>
-  <object class="GtkRadioAction" id="sort_as_loaded_action">
-    <property name="label" translatable="yes">As _Loaded</property>
-    <property name="draw_as_radio">True</property>
-    <signal name="toggled" handler="_on_toggle_action_changed" swapped="no"/>
-  </object>
-  <object class="GtkRadioAction" id="sort_by_date_taken_action">
-    <property name="label" translatable="yes">By _Date Taken</property>
-    <property name="draw_as_radio">True</property>
-    <signal name="toggled" handler="_on_toggle_action_changed" swapped="no"/>
-  </object>
-  <object class="GtkRadioAction" id="sort_by_title_action">
-    <property name="label" translatable="yes">By _Title</property>
-    <property name="draw_as_radio">True</property>
-    <signal name="toggled" handler="_on_toggle_action_changed" swapped="no"/>
-  </object>
   <object class="GtkAction" id="upload_pictures_action">
     <property name="label" translatable="yes">_Upload All</property>
     <property name="stock_id">gtk-go-up</property>
@@ -169,11 +141,6 @@
       </object>
     </child>
   </object>
-  <object class="GtkImage" id="image1">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="stock">gtk-missing-image</property>
-  </object>
   <object class="GtkVBox" id="main_window_vbox">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
@@ -302,257 +269,4 @@
       </packing>
     </child>
   </object>
-  <object class="GtkMenuBar" id="menu_bar">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <child>
-      <object class="GtkMenuItem" id="file_menu_item">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="use_action_appearance">False</property>
-        <property name="label" translatable="yes">_File</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="GtkImageMenuItem" id="open_project_menu_item">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="related_action">open_project_action</property>
-                <property name="use_underline">True</property>
-                <property name="use_stock">True</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkImageMenuItem" id="save_project_menu_item">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="related_action">save_project_action</property>
-                <property name="use_underline">True</property>
-                <property name="use_stock">True</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkImageMenuItem" id="save_project_as_menu_item">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="related_action">save_project_as_action</property>
-                <property name="use_underline">True</property>
-                <property name="use_stock">True</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkSeparatorMenuItem" id="separator9">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkImageMenuItem" id="load_pictures_menu_item">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="related_action">load_pictures_action</property>
-                <property name="use_underline">True</property>
-                <property name="use_stock">True</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkImageMenuItem" id="remove_pictures_menu_item">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="related_action">remove_pictures_action</property>
-                <property name="use_underline">True</property>
-                <property name="use_stock">True</property>
-              </object>
-            </child>
-          </object>
-        </child>
-      </object>
-    </child>
-    <child>
-      <object class="GtkMenuItem" id="actions_menu_item">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="use_action_appearance">False</property>
-        <property name="label" translatable="yes">A_ctions</property>
-        <property name="use_underline">True</property>
-        <child type="submenu">
-          <object class="GtkMenu" id="menu2">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <child>
-              <object class="GtkImageMenuItem" id="edit_details_menu_item">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="related_action">edit_details_action</property>
-                <property name="use_underline">True</property>
-                <property name="use_stock">True</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="add_tags_menu_item">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="related_action">add_tags_action</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="add_to_group_menu_item">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="related_action">add_to_group_action</property>
-                <property name="use_action_appearance">False</property>
-                <property name="label" translatable="yes">Add to _Groupâ</property>
-                <property name="use_underline">True</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="add_to_set_menu_item">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
-                <property name="label" translatable="yes">Add to _Set</property>
-                <property name="use_underline">True</property>
-                <child type="submenu">
-                  <object class="GtkMenu" id="menu5">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkMenuItem" id="create_new_set_menu_item">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="related_action">add_to_new_set_action</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkMenuItem" id="add_to_existing_set_menu_item">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="related_action">add_to_set_action</property>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child>
-              <object class="GtkSeparatorMenuItem" id="separator5">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="open_in_external_viewer_menu_item">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="related_action">open_in_external_viewer_action</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkSeparatorMenuItem" id="menuitem6">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="upload_all_menu_item">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="related_action">upload_pictures_action</property>
-              </object>
-            </child>
-          </object>
-        </child>
-      </object>
-    </child>
-    <child>
-      <object class="GtkMenuItem" id="view_menu_item">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="use_action_appearance">False</property>
-        <property name="label" translatable="yes">_View</property>
-        <property name="use_underline">True</property>
-        <child type="submenu">
-          <object class="GtkMenu" id="menu4">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <child>
-              <object class="GtkMenuItem" id="sort_pictures_menu_item">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
-                <property name="label" translatable="yes">_Sort Pictures</property>
-                <property name="use_underline">True</property>
-                <child type="submenu">
-                  <object class="GtkMenu" id="menu6">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkRadioMenuItem" id="as_loaded_menu_item">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="related_action">sort_as_loaded_action</property>
-                        <property name="draw_as_radio">True</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkRadioMenuItem" id="by_title_menu_item">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="related_action">sort_by_title_action</property>
-                        <property name="draw_as_radio">True</property>
-                        <property name="group">as_loaded_menu_item</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkRadioMenuItem" id="by_date_taken_menu_item">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="related_action">sort_by_date_taken_action</property>
-                        <property name="draw_as_radio">True</property>
-                        <property name="group">as_loaded_menu_item</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkSeparatorMenuItem" id="separator6">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkCheckMenuItem" id="reversed_order_menu_item">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="related_action">reversed_order_action</property>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child>
-              <object class="GtkSeparatorMenuItem" id="separator7">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkCheckMenuItem" id="enable_tooltips_menu_item">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="related_action">enable_tooltips_action</property>
-              </object>
-            </child>
-          </object>
-        </child>
-      </object>
-    </child>
-  </object>
 </interface>
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index 692de41..b74fb09 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -1,3 +1,4 @@
 data/frogr.desktop.in
 data/gtkbuilder/frogr-main-view.xml
 data/gtkbuilder/frogr-app-menu.xml
+data/gtkbuilder/frogr-menu-bar.xml
diff --git a/src/frogr-main-view.c b/src/frogr-main-view.c
index d62d00d..c5081b4 100644
--- a/src/frogr-main-view.c
+++ b/src/frogr-main-view.c
@@ -52,6 +52,7 @@
 /* Path relative to the application data dir */
 #define UI_MAIN_VIEW_FILE "/gtkbuilder/frogr-main-view.xml"
 #define UI_APP_MENU_FILE "/gtkbuilder/frogr-app-menu.xml"
+#define UI_MENU_BAR_FILE "/gtkbuilder/frogr-menu-bar.xml"
 
 #define FROGR_MAIN_VIEW_GET_PRIVATE(object)             \
   (G_TYPE_INSTANCE_GET_PRIVATE ((object),               \
@@ -80,7 +81,6 @@ typedef struct _FrogrMainViewPrivate {
 
   GtkWidget *icon_view;
   GtkWidget *status_bar;
-  GtkWidget *menu_bar;
   GtkWidget *accounts_menu_item;
   GtkWidget *accounts_menu;
   GtkWidget *add_to_set_menu_item;
@@ -100,7 +100,6 @@ typedef struct _FrogrMainViewPrivate {
 
   GtkAction *open_project_action;
   GtkAction *save_project_action;
-  GtkAction *save_project_as_action;
   GtkAction *load_pictures_action;
   GtkAction *remove_pictures_action;
   GtkAction *upload_pictures_action;
@@ -110,11 +109,6 @@ typedef struct _FrogrMainViewPrivate {
   GtkAction *add_to_group_action;
   GtkAction *add_to_new_set_action;
   GtkAction *add_to_set_action;
-  GtkToggleAction *enable_tooltips_action;
-  GtkToggleAction *reversed_order_action;
-  GtkToggleAction *sort_as_loaded_action;
-  GtkToggleAction *sort_by_title_action;
-  GtkToggleAction *sort_by_date_taken_action;
 } FrogrMainViewPrivate;
 
 
@@ -135,6 +129,25 @@ static void _about_action (GSimpleAction *action, GVariant *parameter, gpointer
 static void _help_action (GSimpleAction *action, GVariant *parameter, gpointer data);
 static void _quit_action (GSimpleAction *action, GVariant *parameter, gpointer data);
 
+static void _open_project_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+static void _save_project_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+static void _save_project_as_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+static void _load_pictures_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+static void _remove_pictures_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+static void _edit_details_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+static void _add_tags_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+static void _add_to_group_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+static void _add_to_set_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+static void _create_new_set_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+static void _open_in_external_viewer_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+static void _upload_all_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+static void _sort_by_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+static void _change_sort_by_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+static void _sort_in_reverse_order_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+static void _change_sort_in_reverse_order_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+static void _enable_tooltips_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+static void _change_enable_tooltips_action (GSimpleAction *action, GVariant *parameter, gpointer data);
+
 static void _quit_application (FrogrMainView *self);
 
 static void _update_project_path (FrogrMainView *self, const gchar *path);
@@ -145,8 +158,6 @@ static gboolean osx_can_activate_cb(GtkWidget* widget, guint signal_id, gpointer
 static void _tweak_menu_bar_for_mac (FrogrMainView *self);
 #endif
 
-static void _setup_keyboard_shortcuts (FrogrMainView *self);
-
 static void _populate_accounts_submenu (FrogrMainView *self);
 
 static void _initialize_drag_n_drop (FrogrMainView *self);
@@ -268,7 +279,25 @@ static GActionEntry app_entries[] = {
   { "preferences", _preferences_action, NULL, NULL, NULL },
   { "help", _help_action, NULL, NULL, NULL },
   { "about", _about_action, NULL, NULL, NULL },
-  { "quit", _quit_action, NULL, NULL, NULL },
+  { "quit", _quit_action, NULL, NULL, NULL }
+};
+
+static GActionEntry win_entries[] = {
+  { "open-project", _open_project_action, NULL, NULL, NULL },
+  { "save-project", _save_project_action, NULL, NULL, NULL },
+  { "save-project-as", _save_project_as_action, NULL, NULL, NULL },
+  { "load-pictures", _load_pictures_action, NULL, NULL, NULL },
+  { "remove-pictures", _remove_pictures_action, NULL, NULL, NULL },
+  { "edit-details", _edit_details_action, NULL, NULL, NULL },
+  { "add-tags", _add_tags_action, NULL, NULL, NULL },
+  { "add-to-group", _add_to_group_action, NULL, NULL, NULL },
+  { "add-to-set", _add_to_set_action, NULL, NULL, NULL },
+  { "create-new-set", _create_new_set_action, NULL, NULL, NULL },
+  { "open-in-external-viewer", _open_in_external_viewer_action, NULL, NULL, NULL },
+  { "upload-all", _upload_all_action, NULL, NULL, NULL },
+  { "sort-by", _sort_by_action, "s", "'as-loaded'", _change_sort_by_action },
+  { "sort-in-reverse-order", _sort_in_reverse_order_action, NULL, "false", _change_sort_in_reverse_order_action },
+  { "enable-tooltips", _enable_tooltips_action, NULL, "true", _change_enable_tooltips_action },
 };
 
 static void
@@ -332,15 +361,6 @@ _initialize_ui (FrogrMainView *self)
   main_vbox = GTK_WIDGET (gtk_builder_get_object (builder, "main_window_vbox"));
   gtk_container_add (GTK_CONTAINER (self), main_vbox);
 
-  /* Menu bar */
-  priv->menu_bar = GTK_WIDGET (gtk_builder_get_object (builder, "menu_bar"));
-  gtk_widget_show_all (priv->menu_bar);
-
-#ifndef MAC_INTEGRATION
-  gtk_box_pack_start (GTK_BOX (main_vbox), priv->menu_bar, FALSE, FALSE, 0);
-  gtk_box_reorder_child (GTK_BOX (main_vbox), priv->menu_bar, 0);
-#endif
-
   /* App menu */
   full_path = g_strdup_printf ("%s/" UI_APP_MENU_FILE, frogr_util_get_app_data_dir ());
   gtk_builder_add_from_file (builder, full_path, NULL);
@@ -353,6 +373,19 @@ _initialize_ui (FrogrMainView *self)
   gtk_application_set_app_menu (GTK_APPLICATION (gtk_app),
                                 G_MENU_MODEL (gtk_builder_get_object (builder, "app-menu")));
 
+  /* Menu bar */
+  full_path = g_strdup_printf ("%s/" UI_MENU_BAR_FILE, frogr_util_get_app_data_dir ());
+  gtk_builder_add_from_file (builder, full_path, NULL);
+  g_free (full_path);
+
+  g_action_map_add_action_entries (G_ACTION_MAP (self),
+                                   win_entries, G_N_ELEMENTS (win_entries),
+                                   self);
+
+  gtk_application_set_menubar (GTK_APPLICATION (gtk_app),
+                               G_MENU_MODEL (gtk_builder_get_object (builder, "menu-bar")));
+  gtk_application_window_set_show_menubar (GTK_APPLICATION_WINDOW (self), TRUE);
+
   toolbar = GTK_WIDGET (gtk_builder_get_object (builder, "toolbar"));
   gtk_style_context_add_class (gtk_widget_get_style_context (toolbar),
                                GTK_STYLE_CLASS_PRIMARY_TOOLBAR);
@@ -368,8 +401,6 @@ _initialize_ui (FrogrMainView *self)
     GTK_ACTION (gtk_builder_get_object (builder, "open_project_action"));
   priv->save_project_action =
     GTK_ACTION (gtk_builder_get_object (builder, "save_project_action"));
-  priv->save_project_as_action =
-    GTK_ACTION (gtk_builder_get_object (builder, "save_project_as_action"));
   priv->load_pictures_action =
     GTK_ACTION (gtk_builder_get_object (builder, "load_pictures_action"));
   priv->remove_pictures_action =
@@ -389,23 +420,6 @@ _initialize_ui (FrogrMainView *self)
     GTK_ACTION (gtk_builder_get_object (builder, "add_to_set_action"));
   priv->add_to_new_set_action =
     GTK_ACTION (gtk_builder_get_object (builder, "add_to_new_set_action"));
-  priv->enable_tooltips_action =
-    GTK_TOGGLE_ACTION (gtk_builder_get_object (builder,
-                                               "enable_tooltips_action"));
-  priv->sort_by_title_action =
-    GTK_TOGGLE_ACTION (gtk_builder_get_object (builder,
-                                               "sort_by_title_action"));
-  priv->sort_by_date_taken_action =
-    GTK_TOGGLE_ACTION (gtk_builder_get_object (builder,
-                                               "sort_by_date_taken_action"));
-  priv->sort_as_loaded_action =
-    GTK_TOGGLE_ACTION (gtk_builder_get_object (builder,
-                                               "sort_as_loaded_action"));
-  priv->reversed_order_action =
-    GTK_TOGGLE_ACTION (gtk_builder_get_object (builder,
-                                               "reversed_order_action"));
-  /* Set Keyboard shortcuts */
-  _setup_keyboard_shortcuts (self);
 
   /* Init main model's state description */
   _update_state_description (self);
@@ -414,33 +428,39 @@ _initialize_ui (FrogrMainView *self)
   _update_project_path (self, NULL);
 
   /* Initialize sorting criteria and reverse in the UI */
-  if (priv->sorting_criteria == SORT_BY_TITLE)
-    gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->sort_by_title_action), TRUE);
-  else if (priv->sorting_criteria == SORT_BY_DATE)
-    gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->sort_by_date_taken_action), TRUE);
-  else
-    gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->sort_as_loaded_action), TRUE);
 
-  gtk_toggle_action_set_active (priv->reversed_order_action, priv->sorting_reversed);
+  /* TODO */
+  /* if (priv->sorting_criteria == SORT_BY_TITLE) */
+  /*   gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->sort_by_title_action), TRUE); */
+  /* else if (priv->sorting_criteria == SORT_BY_DATE) */
+  /*   gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->sort_by_date_taken_action), TRUE); */
+  /* else */
+  /*   gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priv->sort_as_loaded_action), TRUE); */
+
+  /* gtk_toggle_action_set_active (priv->reversed_order_action, priv->sorting_reversed); */
 
   /* Initialize 'tooltips enabled' in the UI */
-  gtk_toggle_action_set_active (priv->enable_tooltips_action, priv->tooltips_enabled);
+
+  /* TODO */
+  /* gtk_toggle_action_set_active (priv->enable_tooltips_action, priv->tooltips_enabled); */
 
   /* Initialize extra widgets */
 
-  /* /\* Accounts menu *\/ */
-  /* priv->accounts_menu_item = */
-  /*   GTK_WIDGET (gtk_builder_get_object (builder, "accounts_menu_item")); */
+  /* Accounts menu */
+  priv->accounts_menu_item =
+    GTK_WIDGET (gtk_builder_get_object (builder, "accounts_menu_item"));
 
-  /* "Add to set" menu needs to be assigned to a var so we control
-     its visibility directly because it has no action assigned to it */
-  priv->add_to_set_menu_item =
-    GTK_WIDGET (gtk_builder_get_object (builder, "add_to_set_menu_item"));
+  /* "Add to set" menu needs to be assigned to a var so we control */
+  /* its visibility directly because it has no action assigned to it */
 
-  /* populate accounts submenu from model */
+  /* TODO */
+  /* priv->add_to_set_menu_item = */
+  /*   GTK_WIDGET (gtk_builder_get_object (builder, "add_to_set_menu_item")); */
+
+  /* Populate accounts submenu from model */
   _populate_accounts_submenu (self);
 
-  /* create contextual menus for right-clicks */
+  /* Create contextual menus for right-clicks */
   priv->pictures_ctxt_menu =
       GTK_WIDGET (gtk_builder_get_object (builder, "ctxt_menu"));
 
@@ -538,6 +558,8 @@ _initialize_ui (FrogrMainView *self)
 
   /* Show the auth dialog, if needed, on idle */
   g_idle_add ((GSourceFunc) _maybe_show_auth_dialog_on_idle, self);
+
+  gtk_widget_show_all (GTK_WIDGET (self));
 }
 
 static gboolean
@@ -555,9 +577,7 @@ _maybe_show_auth_dialog_on_idle (FrogrMainView *self)
 }
 
 static void
-_authorize_action (GSimpleAction *action,
-                   GVariant *parameter,
-                   gpointer data)
+_authorize_action (GSimpleAction *action, GVariant *parameter, gpointer data)
 {
   FrogrMainViewPrivate *priv = NULL;
   priv = FROGR_MAIN_VIEW_GET_PRIVATE (data);
@@ -565,9 +585,7 @@ _authorize_action (GSimpleAction *action,
 }
 
 static void
-_preferences_action (GSimpleAction *action,
-                     GVariant *parameter,
-                     gpointer data)
+_preferences_action (GSimpleAction *action, GVariant *parameter, gpointer data)
 {
   FrogrMainViewPrivate *priv = NULL;
   priv = FROGR_MAIN_VIEW_GET_PRIVATE (data);
@@ -575,9 +593,7 @@ _preferences_action (GSimpleAction *action,
 }
 
 static void
-_about_action (GSimpleAction *action,
-               GVariant *parameter,
-               gpointer data)
+_about_action (GSimpleAction *action, GVariant *parameter, gpointer data)
 {
   FrogrMainViewPrivate *priv = NULL;
   priv = FROGR_MAIN_VIEW_GET_PRIVATE (data);
@@ -585,22 +601,144 @@ _about_action (GSimpleAction *action,
 }
 
 static void
-_help_action (GSimpleAction *action,
-              GVariant *parameter,
-              gpointer data)
+_help_action (GSimpleAction *action, GVariant *parameter, gpointer data)
 {
   frogr_util_open_uri ("ghelp:frogr");
 }
 
 static void
-_quit_action (GSimpleAction *action,
-              GVariant *parameter,
-              gpointer data)
+_quit_action (GSimpleAction *action, GVariant *parameter, gpointer data)
 {
   _quit_application (FROGR_MAIN_VIEW (data));
 }
 
 static void
+_open_project_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  _open_project_dialog (FROGR_MAIN_VIEW (data));
+}
+
+static void
+_save_project_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  _save_current_project (FROGR_MAIN_VIEW (data));
+}
+
+static void
+_save_project_as_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  _save_project_as_dialog (FROGR_MAIN_VIEW (data));
+}
+
+static void
+_load_pictures_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  _load_pictures_dialog (FROGR_MAIN_VIEW (data));
+}
+
+static void
+_remove_pictures_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  _remove_selected_pictures (FROGR_MAIN_VIEW (data));
+}
+
+static void
+_edit_details_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  _edit_selected_pictures (FROGR_MAIN_VIEW (data));
+}
+
+static void
+_add_tags_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  _add_tags_to_pictures (FROGR_MAIN_VIEW (data));
+}
+
+static void
+_add_to_group_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  _add_pictures_to_group (FROGR_MAIN_VIEW (data));
+}
+
+static void
+_add_to_set_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  _add_pictures_to_existing_set (FROGR_MAIN_VIEW (data));
+}
+
+static void
+_create_new_set_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  _add_pictures_to_new_set (FROGR_MAIN_VIEW (data));
+}
+
+static void
+_open_in_external_viewer_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  _open_pictures_in_external_viewer (FROGR_MAIN_VIEW (data));
+}
+
+static void
+_upload_all_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  _upload_pictures (FROGR_MAIN_VIEW (data));
+}
+
+static void
+_sort_by_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  /* TODO */
+
+  g_action_change_state (G_ACTION (action), parameter);
+}
+
+static void
+_change_sort_by_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  /* TODO */
+
+  g_simple_action_set_state (action, parameter);
+}
+
+static void
+_sort_in_reverse_order_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  /* TODO */
+
+  GVariant *state;
+
+  state = g_action_get_state (G_ACTION (action));
+  g_action_change_state (G_ACTION (action), g_variant_new_boolean (!g_variant_get_boolean (state)));
+  g_variant_unref (state);
+}
+
+static void
+_change_sort_in_reverse_order_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  /* TODO */
+  g_simple_action_set_state (action, parameter);
+}
+
+static void
+_enable_tooltips_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  /* TODO */
+
+  GVariant *state;
+
+  state = g_action_get_state (G_ACTION (action));
+  g_action_change_state (G_ACTION (action), g_variant_new_boolean (!g_variant_get_boolean (state)));
+  g_variant_unref (state);
+}
+
+static void
+_change_enable_tooltips_action (GSimpleAction *action, GVariant *parameter, gpointer data)
+{
+  /* TODO */
+  g_simple_action_set_state (action, parameter);
+}
+
+static void
 _quit_application (FrogrMainView *self)
 {
   GtkApplication *gtk_app = gtk_window_get_application (GTK_WINDOW (self));
@@ -701,6 +839,8 @@ _tweak_menu_bar_for_mac (FrogrMainView *self)
 
   priv = FROGR_MAIN_VIEW_GET_PRIVATE (self);
 
+  /* TODO: check in the Mac */
+
   osx_app = g_object_new (GTK_TYPE_OSX_APPLICATION, NULL);
   gtk_osxapplication_set_menu_bar (osx_app, GTK_MENU_SHELL(priv->menu_bar));
 
@@ -740,63 +880,6 @@ _tweak_menu_bar_for_mac (FrogrMainView *self)
 #endif
 
 static void
-_setup_keyboard_shortcuts (FrogrMainView *self)
-{
-  FrogrMainViewPrivate *priv = NULL;
-  GtkAccelGroup *accel = NULL;
-  GtkWidget *menu_item = NULL;
-
-  priv = FROGR_MAIN_VIEW_GET_PRIVATE (self);
-
-  accel = gtk_accel_group_new();
-  gtk_window_add_accel_group(GTK_WINDOW (self), accel);
-
-  menu_item = GTK_WIDGET (gtk_builder_get_object (priv->builder, "open_project_menu_item"));
-  gtk_widget_add_accelerator(menu_item, "activate", accel, GDK_KEY_o,
-                             GDK_PRIMARY_MODIFIER, GTK_ACCEL_VISIBLE);
-
-  menu_item = GTK_WIDGET (gtk_builder_get_object (priv->builder, "save_project_menu_item"));
-  gtk_widget_add_accelerator(menu_item, "activate", accel, GDK_KEY_s,
-                             GDK_PRIMARY_MODIFIER, GTK_ACCEL_VISIBLE);
-
-  menu_item = GTK_WIDGET (gtk_builder_get_object (priv->builder, "save_project_as_menu_item"));
-  gtk_widget_add_accelerator(menu_item, "activate", accel, GDK_KEY_s,
-                             GDK_PRIMARY_MODIFIER | GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE);
-
-  menu_item = GTK_WIDGET (gtk_builder_get_object (priv->builder, "load_pictures_menu_item"));
-  gtk_widget_add_accelerator(menu_item, "activate", accel, GDK_KEY_l,
-                             GDK_PRIMARY_MODIFIER, GTK_ACCEL_VISIBLE);
-
-  menu_item = GTK_WIDGET (gtk_builder_get_object (priv->builder, "edit_details_menu_item"));
-  gtk_widget_add_accelerator(menu_item, "activate", accel, GDK_KEY_d,
-                             GDK_PRIMARY_MODIFIER, GTK_ACCEL_VISIBLE);
-
-  menu_item = GTK_WIDGET (gtk_builder_get_object (priv->builder, "add_tags_menu_item"));
-  gtk_widget_add_accelerator(menu_item, "activate", accel, GDK_KEY_t,
-                             GDK_PRIMARY_MODIFIER, GTK_ACCEL_VISIBLE);
-
-  menu_item = GTK_WIDGET (gtk_builder_get_object (priv->builder, "add_to_group_menu_item"));
-  gtk_widget_add_accelerator(menu_item, "activate", accel, GDK_KEY_g,
-                             GDK_PRIMARY_MODIFIER, GTK_ACCEL_VISIBLE);
-
-  menu_item = GTK_WIDGET (gtk_builder_get_object (priv->builder, "add_to_existing_set_menu_item"));
-  gtk_widget_add_accelerator(menu_item, "activate", accel, GDK_KEY_p,
-                             GDK_PRIMARY_MODIFIER, GTK_ACCEL_VISIBLE);
-
-  menu_item = GTK_WIDGET (gtk_builder_get_object (priv->builder, "create_new_set_menu_item"));
-  gtk_widget_add_accelerator(menu_item, "activate", accel, GDK_KEY_p,
-                             GDK_PRIMARY_MODIFIER | GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE);
-
-  menu_item = GTK_WIDGET (gtk_builder_get_object (priv->builder, "open_in_external_viewer_menu_item"));
-  gtk_widget_add_accelerator(menu_item, "activate", accel, GDK_KEY_v,
-                             GDK_PRIMARY_MODIFIER | GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE);
-
-  menu_item = GTK_WIDGET (gtk_builder_get_object (priv->builder, "upload_all_menu_item"));
-  gtk_widget_add_accelerator(menu_item, "activate", accel, GDK_KEY_u,
-                             GDK_PRIMARY_MODIFIER | GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE);
-}
-
-static void
 _populate_accounts_submenu (FrogrMainView *self)
 {
   FrogrMainViewPrivate *priv = NULL;
@@ -832,6 +915,7 @@ _populate_accounts_submenu (FrogrMainView *self)
       gtk_menu_shell_append (GTK_MENU_SHELL (priv->accounts_menu), menu_item); 
     }
 
+  /* TODO */
   /* gtk_menu_item_set_submenu (GTK_MENU_ITEM (priv->accounts_menu_item), priv->accounts_menu); */
 
   if (priv->accounts_menu)
@@ -912,8 +996,6 @@ _on_action_activated (GtkAction *action, gpointer data)
     _open_project_dialog (mainview);
   else if (action == priv->save_project_action)
     _save_current_project (mainview);
-  else if (action == priv->save_project_as_action)
-    _save_project_as_dialog (mainview);
   else if (action == priv->load_pictures_action)
     _load_pictures_dialog (mainview);
   else if (action == priv->remove_pictures_action)
@@ -934,45 +1016,46 @@ _on_action_activated (GtkAction *action, gpointer data)
     _add_pictures_to_new_set (mainview);
 }
 
-void
-_on_toggle_action_changed (GtkToggleAction *action,
-                           gpointer data)
-{
-  gboolean checked;
-  FrogrMainView *mainview = FROGR_MAIN_VIEW (data);
-  FrogrMainViewPrivate *priv = NULL;
-
-  priv = FROGR_MAIN_VIEW_GET_PRIVATE (data);
-
-  checked = gtk_toggle_action_get_active (action);
-  if (action == priv->enable_tooltips_action)
-    {
-      frogr_config_set_mainview_enable_tooltips (priv->config, checked);
-      priv->tooltips_enabled = checked;
-    }
-  else if (action == priv->reversed_order_action)
-    {
-      _reorder_pictures (mainview, priv->sorting_criteria, checked);
-      frogr_config_set_mainview_sorting_reversed (priv->config, checked);
-    }
-  else if (checked)
-    {
-      /* Radio buttons handling here (only care about 'em when checked) */
-
-      SortingCriteria criteria = SORT_AS_LOADED;
-
-      if (action == priv->sort_by_title_action)
-        criteria = SORT_BY_TITLE;
-      else if (action == priv->sort_by_date_taken_action)
-        criteria = SORT_BY_DATE;
-
-      _reorder_pictures (mainview, criteria, priv->sorting_reversed);
-      frogr_config_set_mainview_sorting_criteria (priv->config, criteria);
-    }
-
-  /* State for check menu items should be immediately stored */
-  frogr_config_save_settings (priv->config);
-}
+/* TODO */
+/* void */
+/* _on_toggle_action_changed (GtkToggleAction *action, */
+/*                            gpointer data) */
+/* { */
+/*   gboolean checked; */
+/*   FrogrMainView *mainview = FROGR_MAIN_VIEW (data); */
+/*   FrogrMainViewPrivate *priv = NULL; */
+
+/*   priv = FROGR_MAIN_VIEW_GET_PRIVATE (data); */
+
+/*   checked = gtk_toggle_action_get_active (action); */
+/*   if (action == priv->enable_tooltips_action) */
+/*     { */
+/*       frogr_config_set_mainview_enable_tooltips (priv->config, checked); */
+/*       priv->tooltips_enabled = checked; */
+/*     } */
+/*   else if (action == priv->reversed_order_action) */
+/*     { */
+/*       _reorder_pictures (mainview, priv->sorting_criteria, checked); */
+/*       frogr_config_set_mainview_sorting_reversed (priv->config, checked); */
+/*     } */
+/*   else if (checked) */
+/*     { */
+/*       /\* Radio buttons handling here (only care about 'em when checked) *\/ */
+
+/*       SortingCriteria criteria = SORT_AS_LOADED; */
+
+/*       if (action == priv->sort_by_title_action) */
+/*         criteria = SORT_BY_TITLE; */
+/*       else if (action == priv->sort_by_date_taken_action) */
+/*         criteria = SORT_BY_DATE; */
+
+/*       _reorder_pictures (mainview, criteria, priv->sorting_reversed); */
+/*       frogr_config_set_mainview_sorting_criteria (priv->config, criteria); */
+/*     } */
+
+/*   /\* State for check menu items should be immediately stored *\/ */
+/*   frogr_config_save_settings (priv->config); */
+/* } */
 
 gboolean
 _on_icon_view_key_press_event (GtkWidget *widget,
@@ -2061,50 +2144,52 @@ static void
 _update_sensitiveness (FrogrMainView *self)
 {
   FrogrMainViewPrivate *priv = FROGR_MAIN_VIEW_GET_PRIVATE (self);
+
+  /* TODO */
   /* gboolean has_accounts = FALSE; */
-  gboolean has_pics = FALSE;
-  gint n_selected_pics = 0;
+  /* gboolean has_pics = FALSE; */
+  /* gint n_selected_pics = 0; */
 
   /* Set sensitiveness */
   switch (frogr_controller_get_state (priv->controller))
     {
     case FROGR_STATE_LOADING_PICTURES:
     case FROGR_STATE_UPLOADING_PICTURES:
-      gtk_action_set_sensitive (priv->open_project_action, FALSE);
-      gtk_action_set_sensitive (priv->save_project_action, FALSE);
-      gtk_action_set_sensitive (priv->save_project_as_action, FALSE);
-      gtk_action_set_sensitive (priv->load_pictures_action, FALSE);
-      gtk_action_set_sensitive (priv->remove_pictures_action, FALSE);
-      gtk_action_set_sensitive (priv->upload_pictures_action, FALSE);
-      gtk_action_set_sensitive (priv->open_in_external_viewer_action, FALSE);
-      gtk_action_set_sensitive (priv->add_tags_action, FALSE);
-      gtk_action_set_sensitive (priv->edit_details_action, FALSE);
-      gtk_action_set_sensitive (priv->add_to_group_action, FALSE);
-      gtk_action_set_sensitive (priv->add_to_set_action, FALSE);
-      gtk_action_set_sensitive (priv->add_to_new_set_action, FALSE);
+      /* gtk_action_set_sensitive (priv->open_project_action, FALSE); */
+      /* gtk_action_set_sensitive (priv->save_project_action, FALSE); */
+      /* gtk_action_set_sensitive (priv->load_pictures_action, FALSE); */
+      /* gtk_action_set_sensitive (priv->save_project_as_action, FALSE); */
+      /* gtk_action_set_sensitive (priv->remove_pictures_action, FALSE); */
+      /* gtk_action_set_sensitive (priv->upload_pictures_action, FALSE); */
+      /* gtk_action_set_sensitive (priv->open_in_external_viewer_action, FALSE); */
+      /* gtk_action_set_sensitive (priv->add_tags_action, FALSE); */
+      /* gtk_action_set_sensitive (priv->edit_details_action, FALSE); */
+      /* gtk_action_set_sensitive (priv->add_to_group_action, FALSE); */
+      /* gtk_action_set_sensitive (priv->add_to_set_action, FALSE); */
+      /* gtk_action_set_sensitive (priv->add_to_new_set_action, FALSE); */
       /* gtk_widget_set_sensitive (priv->accounts_menu_item, FALSE); */
-      gtk_widget_set_sensitive (priv->add_to_set_menu_item, FALSE);
+      /* gtk_widget_set_sensitive (priv->add_to_set_menu_item, FALSE); */
       break;
 
     case FROGR_STATE_IDLE:
-      has_pics = (_n_pictures (self) > 0);
+      /* has_pics = (_n_pictures (self) > 0); */
       /* has_accounts = (priv->accounts_menu != NULL); */
-      n_selected_pics = priv->n_selected_pictures;
+      /* n_selected_pics = priv->n_selected_pictures; */
 
-      gtk_action_set_sensitive (priv->open_project_action, TRUE);
-      gtk_action_set_sensitive (priv->save_project_action, TRUE);
-      gtk_action_set_sensitive (priv->save_project_as_action, TRUE);
-      gtk_action_set_sensitive (priv->load_pictures_action, TRUE);
+      /* gtk_action_set_sensitive (priv->open_project_action, TRUE); */
+      /* gtk_action_set_sensitive (priv->save_project_action, TRUE); */
+      /* gtk_action_set_sensitive (priv->load_pictures_action, TRUE); */
+      /* gtk_action_set_sensitive (priv->save_project_as_action, TRUE); */
       /* gtk_widget_set_sensitive (priv->accounts_menu_item, has_accounts); */
-      gtk_action_set_sensitive (priv->upload_pictures_action, has_pics);
-      gtk_action_set_sensitive (priv->remove_pictures_action, n_selected_pics > 0);
-      gtk_action_set_sensitive (priv->open_in_external_viewer_action, n_selected_pics > 0);
-      gtk_action_set_sensitive (priv->add_tags_action, n_selected_pics > 0);
-      gtk_action_set_sensitive (priv->edit_details_action, n_selected_pics > 0);
-      gtk_action_set_sensitive (priv->add_to_group_action, n_selected_pics > 0);
-      gtk_action_set_sensitive (priv->add_to_set_action, n_selected_pics > 0);
-      gtk_action_set_sensitive (priv->add_to_new_set_action, n_selected_pics > 0);
-      gtk_widget_set_sensitive (priv->add_to_set_menu_item, n_selected_pics > 0);
+      /* gtk_action_set_sensitive (priv->upload_pictures_action, has_pics); */
+      /* gtk_action_set_sensitive (priv->remove_pictures_action, n_selected_pics > 0); */
+      /* gtk_action_set_sensitive (priv->open_in_external_viewer_action, n_selected_pics > 0); */
+      /* gtk_action_set_sensitive (priv->add_tags_action, n_selected_pics > 0); */
+      /* gtk_action_set_sensitive (priv->edit_details_action, n_selected_pics > 0); */
+      /* gtk_action_set_sensitive (priv->add_to_group_action, n_selected_pics > 0); */
+      /* gtk_action_set_sensitive (priv->add_to_set_action, n_selected_pics > 0); */
+      /* gtk_action_set_sensitive (priv->add_to_new_set_action, n_selected_pics > 0); */
+      /* gtk_widget_set_sensitive (priv->add_to_set_menu_item, n_selected_pics > 0); */
       break;
 
     default:



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