[gnome-panel/wip/muktupavels/add-to-panel: 2/2] context-menu: switch to new Add to Panel window



commit 00a0f5cdffa4a7dd7f477175896b6b24954e6c3b
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Sat Apr 18 17:25:54 2020 +0300

    context-menu: switch to new Add to Panel window

 gnome-panel/Makefile.am             |   3 -
 gnome-panel/gp-applet-manager.c     |   6 +
 gnome-panel/gp-applet-manager.h     |   2 +
 gnome-panel/panel-addto-dialog.c    | 818 ------------------------------------
 gnome-panel/panel-addto-dialog.h    |  39 --
 gnome-panel/panel-addto-dialog.ui   | 184 --------
 gnome-panel/panel-applets-manager.c |   8 +
 gnome-panel/panel-applets-manager.h |   3 +
 gnome-panel/panel-context-menu.c    |  47 ++-
 gnome-panel/panel.gresource.xml     |   1 -
 po/POTFILES.in                      |   2 -
 11 files changed, 63 insertions(+), 1050 deletions(-)
---
diff --git a/gnome-panel/Makefile.am b/gnome-panel/Makefile.am
index 5d3c0a63c..373e32062 100644
--- a/gnome-panel/Makefile.am
+++ b/gnome-panel/Makefile.am
@@ -44,7 +44,6 @@ panel_sources =                       \
        panel-a11y.c            \
        panel-bindings.c        \
        panel-lockdown.c        \
-       panel-addto-dialog.c    \
        panel-layout.c          \
        panel-object-loader.c   \
        panel-applet-info.c
@@ -69,7 +68,6 @@ panel_headers =                       \
        panel-enums.h           \
        panel-enums-gsettings.h \
        panel-lockdown.h        \
-       panel-addto-dialog.h    \
        panel-icon-names.h      \
        panel-layout.h          \
        panel-object-loader.h   \
@@ -156,7 +154,6 @@ BUILT_SOURCES = \
 
 ui_FILES =                                     \
        gp-properties-dialog.ui \
-       panel-addto-dialog.ui \
        panel-run-dialog.ui
 
 panel-resources.c: panel.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) 
--generate-dependencies $(srcdir)/panel.gresource.xml)
diff --git a/gnome-panel/gp-applet-manager.c b/gnome-panel/gp-applet-manager.c
index 358cdcdea..9744f3ef2 100644
--- a/gnome-panel/gp-applet-manager.c
+++ b/gnome-panel/gp-applet-manager.c
@@ -210,6 +210,12 @@ gp_applet_manager_new (void)
   return g_object_new (GP_TYPE_APPLET_MANAGER, NULL);
 }
 
+GpModuleManager *
+gp_applet_manager_get_module_manager (GpAppletManager *self)
+{
+  return self->manager;
+}
+
 GList *
 gp_applet_manager_get_applets (GpAppletManager *self)
 {
diff --git a/gnome-panel/gp-applet-manager.h b/gnome-panel/gp-applet-manager.h
index 64c1793c2..03f37c696 100644
--- a/gnome-panel/gp-applet-manager.h
+++ b/gnome-panel/gp-applet-manager.h
@@ -28,6 +28,8 @@ G_DECLARE_FINAL_TYPE (GpAppletManager, gp_applet_manager,
 
 GpAppletManager *gp_applet_manager_new                       (void);
 
+GpModuleManager *gp_applet_manager_get_module_manager        (GpAppletManager             *self);
+
 GList           *gp_applet_manager_get_applets               (GpAppletManager             *self);
 
 gboolean         gp_applet_manager_factory_activate          (GpAppletManager             *self,
diff --git a/gnome-panel/panel-applets-manager.c b/gnome-panel/panel-applets-manager.c
index 0c89892bc..8fff46b83 100644
--- a/gnome-panel/panel-applets-manager.c
+++ b/gnome-panel/panel-applets-manager.c
@@ -46,6 +46,14 @@ _panel_applets_managers_ensure_loaded (void)
        manager = gp_applet_manager_new ();
 }
 
+GpModuleManager *
+panel_applets_maanger_get_module_manager (void)
+{
+       _panel_applets_managers_ensure_loaded ();
+
+       return gp_applet_manager_get_module_manager (manager);
+}
+
 GList *
 panel_applets_manager_get_applets (void)
 {
diff --git a/gnome-panel/panel-applets-manager.h b/gnome-panel/panel-applets-manager.h
index bf6826528..8efe14061 100644
--- a/gnome-panel/panel-applets-manager.h
+++ b/gnome-panel/panel-applets-manager.h
@@ -23,12 +23,15 @@
 
 #include <glib-object.h>
 
+#include "gp-module-manager.h"
 #include "libgnome-panel/gp-initial-setup-dialog-private.h"
 #include "panel-applet-frame.h"
 #include "panel-applet-info.h"
 
 G_BEGIN_DECLS
 
+GpModuleManager *panel_applets_maanger_get_module_manager        (void);
+
 GList           *panel_applets_manager_get_applets               (void);
 
 gboolean         panel_applets_manager_factory_activate          (const gchar                 *iid);
diff --git a/gnome-panel/panel-context-menu.c b/gnome-panel/panel-context-menu.c
index d56d2de4b..1af819bc1 100644
--- a/gnome-panel/panel-context-menu.c
+++ b/gnome-panel/panel-context-menu.c
@@ -37,10 +37,11 @@
 
 #include "panel-util.h"
 #include "panel.h"
+#include "gp-add-applet-window.h"
 #include "gp-properties-dialog.h"
+#include "panel-applets-manager.h"
 #include "panel-layout.h"
 #include "panel-lockdown.h"
-#include "panel-addto-dialog.h"
 #include "panel-icon-names.h"
 
 static void
@@ -129,6 +130,44 @@ add_menu_separator (GtkWidget *menu)
        return menuitem;
 }
 
+static void
+add_applet_dialog_destroy_cb (GtkWidget     *dialog,
+                              PanelToplevel *toplevel)
+{
+  panel_toplevel_pop_autohide_disabler (toplevel);
+  g_object_set_data (G_OBJECT (toplevel), "add-applet-dialog", NULL);
+}
+
+static void
+add_to_panel_activate_cb (GtkMenuItem   *menuitem,
+                          PanelToplevel *toplevel)
+{
+  GtkWidget *dialog;
+
+  dialog = g_object_get_data (G_OBJECT (toplevel), "add-applet-dialog");
+
+  if (dialog == NULL)
+    {
+      GpModuleManager *manager;
+
+      manager = panel_applets_maanger_get_module_manager ();
+      dialog = gp_add_applet_window_new (manager, toplevel);
+
+      g_signal_connect (dialog, "destroy",
+                        G_CALLBACK (add_applet_dialog_destroy_cb),
+                        toplevel);
+
+      g_object_set_data_full (G_OBJECT (toplevel),
+                              "add-applet-dialog",
+                              dialog,
+                              (GDestroyNotify) gtk_widget_destroy);
+
+      panel_toplevel_push_autohide_disabler (toplevel);
+    }
+
+  gtk_window_present (GTK_WINDOW (dialog));
+}
+
 static void
 panel_context_menu_build_edition (PanelWidget *panel_widget,
                                  GtkWidget   *menu)
@@ -138,8 +177,10 @@ panel_context_menu_build_edition (PanelWidget *panel_widget,
        menuitem = gtk_menu_item_new_with_mnemonic (_("_Add to Panel..."));
        gtk_widget_show (menuitem);
        gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
-        g_signal_connect (G_OBJECT (menuitem), "activate",
-                         G_CALLBACK (panel_addto_present), panel_widget);
+       g_signal_connect (menuitem,
+                         "activate",
+                         G_CALLBACK (add_to_panel_activate_cb),
+                         panel_widget->toplevel);
 
        if (!panel_layout_is_writable ())
                gtk_widget_set_sensitive (menuitem, FALSE);
diff --git a/gnome-panel/panel.gresource.xml b/gnome-panel/panel.gresource.xml
index 9f02f6598..e455a157c 100644
--- a/gnome-panel/panel.gresource.xml
+++ b/gnome-panel/panel.gresource.xml
@@ -11,7 +11,6 @@
   </gresource>
   <gresource prefix="/org/gnome/panel">
     <file compressed="true">gp-properties-dialog.ui</file>
-    <file compressed="true">panel-addto-dialog.ui</file>
     <file compressed="true">panel-run-dialog.ui</file>
   </gresource>
 </gresources>
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 1da75721f..cd0e4d562 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -17,8 +17,6 @@ gnome-panel/gp-properties-dialog.c
 gnome-panel/gp-properties-dialog.ui
 gnome-panel/libpanel-util/panel-error.c
 gnome-panel/libpanel-util/panel-show.c
-gnome-panel/panel-addto-dialog.c
-gnome-panel/panel-addto-dialog.ui
 gnome-panel/panel-applet-frame.c
 gnome-panel/panel-bindings.c
 gnome-panel/panel.c


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