[gnome-panel/wip/muktupavels/launcher] add gp_initital_setup_dialog_set_settings



commit d0fab534d09d7873ced514a583e32bea2f904af2
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Mon Apr 13 15:51:40 2020 +0300

    add gp_initital_setup_dialog_set_settings

 .../libpanel-applet-private/gp-applet-manager.c    |  3 ++
 gnome-panel/panel-addto-dialog.c                   |  1 +
 gnome-panel/panel-applets-manager.c                |  2 ++
 gnome-panel/panel-applets-manager.h                |  2 ++
 gnome-panel/panel.c                                |  4 +--
 libgnome-panel/gp-initial-setup-dialog-private.h   |  3 ++
 libgnome-panel/gp-initial-setup-dialog.c           | 37 ++++++++++++++++++++++
 libgnome-panel/gp-initial-setup-dialog.h           | 21 ++++++------
 modules/launcher/gp-custom-launcher-applet.c       |  8 +++++
 9 files changed, 70 insertions(+), 11 deletions(-)
---
diff --git a/gnome-panel/libpanel-applet-private/gp-applet-manager.c 
b/gnome-panel/libpanel-applet-private/gp-applet-manager.c
index 6bb2879e4..f3b4e9584 100644
--- a/gnome-panel/libpanel-applet-private/gp-applet-manager.c
+++ b/gnome-panel/libpanel-applet-private/gp-applet-manager.c
@@ -351,6 +351,7 @@ gp_applet_manager_get_new_iid (PanelAppletsManager *manager,
 static gboolean
 gp_applet_manager_open_initial_setup_dialog (PanelAppletsManager    *manager,
                                              const gchar            *iid,
+                                             GVariant               *settings,
                                              GtkWindow              *parent,
                                              GpInitialSetupCallback  callback,
                                              gpointer                user_data,
@@ -387,6 +388,8 @@ gp_applet_manager_open_initial_setup_dialog (PanelAppletsManager    *manager,
   dialog = gp_initital_setup_dialog_new ();
   gp_initital_setup_dialog_add_callback (dialog, callback, user_data, free_func);
 
+  gp_initital_setup_dialog_set_settings (dialog, settings);
+
   info->initial_setup_dialog_func (dialog);
 
   if (parent)
diff --git a/gnome-panel/panel-addto-dialog.c b/gnome-panel/panel-addto-dialog.c
index 1163a6047..b4631f44a 100644
--- a/gnome-panel/panel-addto-dialog.c
+++ b/gnome-panel/panel-addto-dialog.c
@@ -435,6 +435,7 @@ panel_addto_add_item (PanelAddtoDialog   *dialog,
                data = initial_setup_data_new (dialog, item_info->iid);
 
                if (!panel_applets_manager_open_initial_setup_dialog (item_info->iid,
+                                                                     NULL,
                                                                      GTK_WINDOW (dialog),
                                                                      initial_setup_dialog_cb,
                                                                      data, initial_setup_data_free)) {
diff --git a/gnome-panel/panel-applets-manager.c b/gnome-panel/panel-applets-manager.c
index 17a058299..e0b3b329e 100644
--- a/gnome-panel/panel-applets-manager.c
+++ b/gnome-panel/panel-applets-manager.c
@@ -179,6 +179,7 @@ panel_applets_manager_get_new_iid (const gchar *old_iid)
 
 gboolean
 panel_applets_manager_open_initial_setup_dialog (const gchar            *iid,
+                                                 GVariant               *settings,
                                                  GtkWindow              *parent,
                                                  GpInitialSetupCallback  callback,
                                                  gpointer                user_data,
@@ -198,6 +199,7 @@ panel_applets_manager_open_initial_setup_dialog (const gchar            *iid,
 
                ret = PANEL_APPLETS_MANAGER_GET_CLASS (manager)->open_initial_setup_dialog (manager,
                                                                                            iid,
+                                                                                           settings,
                                                                                            parent,
                                                                                            callback,
                                                                                            user_data,
diff --git a/gnome-panel/panel-applets-manager.h b/gnome-panel/panel-applets-manager.h
index c1cfa037d..b82ace307 100644
--- a/gnome-panel/panel-applets-manager.h
+++ b/gnome-panel/panel-applets-manager.h
@@ -63,6 +63,7 @@ struct _PanelAppletsManagerClass {
 
        gboolean           (*open_initial_setup_dialog) (PanelAppletsManager         *manager,
                                                         const gchar                 *iid,
+                                                        GVariant                    *settings,
                                                         GtkWindow                   *parent,
                                                         GpInitialSetupCallback       callback,
                                                         gpointer                     user_data,
@@ -90,6 +91,7 @@ gboolean          panel_applets_manager_load_applet                 (const gchar
 gchar            *panel_applets_manager_get_new_iid                 (const gchar     *old_iid);
 
 gboolean          panel_applets_manager_open_initial_setup_dialog   (const gchar            *iid,
+                                                                     GVariant               *settings,
                                                                      GtkWindow              *parent,
                                                                      GpInitialSetupCallback  callback,
                                                                      gpointer                user_data,
diff --git a/gnome-panel/panel.c b/gnome-panel/panel.c
index 289dcd124..372681320 100644
--- a/gnome-panel/panel.c
+++ b/gnome-panel/panel.c
@@ -528,9 +528,8 @@ ask_about_launcher (const char          *file,
   settings = g_variant_builder_end (&builder);
   g_variant_ref_sink (settings);
 
-  // FIXME: pass initial data to inital dialog :D
-
   panel_applets_manager_open_initial_setup_dialog (iid,
+                                                                    settings,
                                                                     NULL,
                                                                     initial_setup_dialog_cb,
                                                                     initial_setup_data,
@@ -1147,6 +1146,7 @@ panel_receive_dnd_data (PanelWidget         *panel,
                                                                     (char *) data);
 
                        if (!panel_applets_manager_open_initial_setup_dialog ((char *) data,
+                                                                             NULL,
                                                                              NULL,
                                                                              initial_setup_dialog_cb,
                                                                              initial_setup_data,
diff --git a/libgnome-panel/gp-initial-setup-dialog-private.h 
b/libgnome-panel/gp-initial-setup-dialog-private.h
index fc23740c7..fc603c389 100644
--- a/libgnome-panel/gp-initial-setup-dialog-private.h
+++ b/libgnome-panel/gp-initial-setup-dialog-private.h
@@ -39,6 +39,9 @@ void                  gp_initital_setup_dialog_add_callback (GpInitialSetupDialo
 
 GVariant             *gp_initital_setup_dialog_get_settings (GpInitialSetupDialog   *dialog);
 
+void                  gp_initital_setup_dialog_set_settings (GpInitialSetupDialog   *dialog,
+                                                             GVariant               *settings);
+
 G_END_DECLS
 
 #endif
diff --git a/libgnome-panel/gp-initial-setup-dialog.c b/libgnome-panel/gp-initial-setup-dialog.c
index e46456d49..a7c93d1fd 100644
--- a/libgnome-panel/gp-initial-setup-dialog.c
+++ b/libgnome-panel/gp-initial-setup-dialog.c
@@ -176,6 +176,22 @@ gp_initital_setup_dialog_add_content_widget (GpInitialSetupDialog *dialog,
   gtk_widget_show (content);
 }
 
+/**
+ * gp_initital_setup_dialog_get_setting:
+ * @dialog: a #GpInitialSetupDialog
+ * @key: the setting key
+ *
+ * Gets a setting for @key.
+ *
+ * Returns: (transfer none): a #GVariant, or %NULL.
+ */
+GVariant *
+gp_initital_setup_dialog_get_setting (GpInitialSetupDialog *dialog,
+                                      const char           *key)
+{
+  return g_hash_table_lookup (dialog->settings, key);
+}
+
 /**
  * gp_initital_setup_dialog_set_setting:
  * @dialog: a #GpInitialSetupDialog
@@ -223,6 +239,27 @@ gp_initital_setup_dialog_get_settings (GpInitialSetupDialog *dialog)
   return g_variant_ref_sink (settings);
 }
 
+void
+gp_initital_setup_dialog_set_settings (GpInitialSetupDialog *dialog,
+                                       GVariant             *settings)
+{
+  GVariantIter iter;
+  char *key;
+  GVariant *value;
+
+  if (settings == NULL)
+    return;
+
+  g_variant_iter_init (&iter, settings);
+  while (g_variant_iter_next (&iter, "{sv}", &key, &value))
+    {
+      gp_initital_setup_dialog_set_setting (dialog, key, value);
+
+      g_free (key);
+      g_variant_unref (value);
+    }
+}
+
 void
 gp_initital_setup_dialog_set_done (GpInitialSetupDialog *dialog,
                                    gboolean              done)
diff --git a/libgnome-panel/gp-initial-setup-dialog.h b/libgnome-panel/gp-initial-setup-dialog.h
index 69b5708e0..217de46ea 100644
--- a/libgnome-panel/gp-initial-setup-dialog.h
+++ b/libgnome-panel/gp-initial-setup-dialog.h
@@ -29,17 +29,20 @@ G_BEGIN_DECLS
  */
 typedef struct _GpInitialSetupDialog GpInitialSetupDialog;
 
-void gp_initital_setup_dialog_add_content_widget (GpInitialSetupDialog *dialog,
-                                                  GtkWidget            *content,
-                                                  gpointer              user_data,
-                                                  GDestroyNotify        free_func);
+void      gp_initital_setup_dialog_add_content_widget (GpInitialSetupDialog *dialog,
+                                                       GtkWidget            *content,
+                                                       gpointer              user_data,
+                                                       GDestroyNotify        free_func);
 
-void gp_initital_setup_dialog_set_setting        (GpInitialSetupDialog *dialog,
-                                                  const gchar          *key,
-                                                  GVariant             *value);
+GVariant *gp_initital_setup_dialog_get_setting        (GpInitialSetupDialog *dialog,
+                                                       const char           *key);
 
-void gp_initital_setup_dialog_set_done           (GpInitialSetupDialog *dialog,
-                                                  gboolean              done);
+void      gp_initital_setup_dialog_set_setting        (GpInitialSetupDialog *dialog,
+                                                       const gchar          *key,
+                                                       GVariant             *value);
+
+void      gp_initital_setup_dialog_set_done           (GpInitialSetupDialog *dialog,
+                                                       gboolean              done);
 
 G_END_DECLS
 
diff --git a/modules/launcher/gp-custom-launcher-applet.c b/modules/launcher/gp-custom-launcher-applet.c
index 8985bf721..d29724686 100644
--- a/modules/launcher/gp-custom-launcher-applet.c
+++ b/modules/launcher/gp-custom-launcher-applet.c
@@ -208,6 +208,7 @@ gp_custom_launcher_applet_initial_setup_dialog (GpInitialSetupDialog *dialog)
 {
   GtkWidget *editor;
   LauncherData *data;
+  GVariant *variant;
 
   editor = gp_editor_new (FALSE);
 
@@ -220,6 +221,13 @@ gp_custom_launcher_applet_initial_setup_dialog (GpInitialSetupDialog *dialog)
   g_signal_connect (editor, "command-changed", G_CALLBACK (command_changed_cb), data);
   g_signal_connect (editor, "comment-changed", G_CALLBACK (comment_changed_cb), data);
 
+  variant = gp_initital_setup_dialog_get_setting (dialog, "command");
+  if (variant != NULL)
+    {
+      gp_editor_set_command (GP_EDITOR (editor),
+                             g_variant_get_string (variant, NULL));
+    }
+
   icon_changed_cb (data->editor, data);
   type_changed_cb (data->editor, data);
 


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