[gnome-panel/wip/muktupavels/more-api: 3/4] applets-manager: add panel_applets_manager_is_applet_available
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-panel/wip/muktupavels/more-api: 3/4] applets-manager: add panel_applets_manager_is_applet_available
- Date: Mon, 13 Apr 2020 23:00:44 +0000 (UTC)
commit 3810455d0b40d4b1865b93b2a7ea067a7522139b
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Tue Apr 14 01:44:38 2020 +0300
applets-manager: add panel_applets_manager_is_applet_available
gnome-panel/gp-applet-manager.c | 39 +++++++++++++++++++++++++++++++++
gnome-panel/gp-applet-manager.h | 43 +++++++++++++++++++++----------------
gnome-panel/panel-applets-manager.c | 9 ++++++++
gnome-panel/panel-applets-manager.h | 3 +++
4 files changed, 75 insertions(+), 19 deletions(-)
---
diff --git a/gnome-panel/gp-applet-manager.c b/gnome-panel/gp-applet-manager.c
index 6ecae9d50..4d425df71 100644
--- a/gnome-panel/gp-applet-manager.c
+++ b/gnome-panel/gp-applet-manager.c
@@ -429,3 +429,42 @@ gp_applet_manager_get_standalone_menu (GpAppletManager *self)
return menu;
}
+
+gboolean
+gp_applet_manager_is_applet_available (GpAppletManager *self,
+ const char *iid,
+ char **reason)
+{
+ const gchar *applet_id;
+ gchar *module_id;
+ GpModule *module;
+ GpLockdownFlags lockdown_flags;
+
+ g_return_val_if_fail (iid != NULL, FALSE);
+ g_return_val_if_fail (reason == NULL || *reason == NULL, FALSE);
+
+ applet_id = g_strrstr (iid, "::");
+ if (!applet_id)
+ {
+ g_assert_not_reached ();
+ return FALSE;
+ }
+
+ module_id = g_strndup (iid, strlen (iid) - strlen (applet_id));
+ module = gp_module_manager_get_module (self->manager, module_id);
+ g_free (module_id);
+
+ if (!module)
+ {
+ g_assert_not_reached ();
+ return FALSE;
+ }
+
+ applet_id += 2;
+ lockdown_flags = panel_lockdown_get_lockdown_flags_s ();
+
+ return gp_module_is_applet_available (module,
+ applet_id,
+ lockdown_flags,
+ reason);
+}
diff --git a/gnome-panel/gp-applet-manager.h b/gnome-panel/gp-applet-manager.h
index e57f0ca03..cd7382456 100644
--- a/gnome-panel/gp-applet-manager.h
+++ b/gnome-panel/gp-applet-manager.h
@@ -28,32 +28,37 @@ G_DECLARE_FINAL_TYPE (GpAppletManager, gp_applet_manager,
GpAppletManager *gp_applet_manager_new (void);
-GList *gp_applet_manager_get_applets (GpAppletManager *self);
+GList *gp_applet_manager_get_applets (GpAppletManager *self);
-gboolean gp_applet_manager_factory_activate (GpAppletManager *self,
- const char *iid);
+gboolean gp_applet_manager_factory_activate (GpAppletManager *self,
+ const char *iid);
-void gp_applet_manager_factory_deactivate (GpAppletManager *self,
- const char *iid);
+void gp_applet_manager_factory_deactivate (GpAppletManager *self,
+ const char *iid);
-PanelAppletInfo *gp_applet_manager_get_applet_info (GpAppletManager *self,
- const char *iid);
+PanelAppletInfo *gp_applet_manager_get_applet_info (GpAppletManager *self,
+ const char *iid);
-gboolean gp_applet_manager_load_applet (GpAppletManager *self,
- const char *iid,
- PanelAppletFrameActivating *frame_act);
+gboolean gp_applet_manager_load_applet (GpAppletManager *self,
+ const char *iid,
+ PanelAppletFrameActivating *frame_act);
-char *gp_applet_manager_get_new_iid (GpAppletManager *self,
- const char *old_iid);
+char *gp_applet_manager_get_new_iid (GpAppletManager *self,
+ const char *old_iid);
-gboolean gp_applet_manager_open_initial_setup_dialog (GpAppletManager *self,
- const char *iid,
- GtkWindow *parent,
- GpInitialSetupCallback callback,
- gpointer user_data,
- GDestroyNotify free_func);
+gboolean gp_applet_manager_open_initial_setup_dialog (GpAppletManager *self,
+ const char *iid,
+ GtkWindow *parent,
+ GpInitialSetupCallback callback,
+ gpointer user_data,
+ GDestroyNotify free_func);
-GtkWidget *gp_applet_manager_get_standalone_menu (GpAppletManager *self);
+GtkWidget *gp_applet_manager_get_standalone_menu (GpAppletManager *self);
+
+
+gboolean gp_applet_manager_is_applet_available (GpAppletManager *self,
+ const char *iid,
+ char **reason);
G_END_DECLS
diff --git a/gnome-panel/panel-applets-manager.c b/gnome-panel/panel-applets-manager.c
index 99c2610a4..1d4d8879a 100644
--- a/gnome-panel/panel-applets-manager.c
+++ b/gnome-panel/panel-applets-manager.c
@@ -126,3 +126,12 @@ panel_applets_manager_get_standalone_menu (void)
return gp_applet_manager_get_standalone_menu (manager);
}
+
+gboolean
+panel_applets_manager_is_applet_available (const char *iid,
+ char **reason)
+{
+ _panel_applets_managers_ensure_loaded ();
+
+ return gp_applet_manager_is_applet_available (manager, iid, reason);
+}
diff --git a/gnome-panel/panel-applets-manager.h b/gnome-panel/panel-applets-manager.h
index a1839d874..42efd3e7a 100644
--- a/gnome-panel/panel-applets-manager.h
+++ b/gnome-panel/panel-applets-manager.h
@@ -49,6 +49,9 @@ gboolean panel_applets_manager_open_initial_setup_dialog (const gchar
GtkWidget *panel_applets_manager_get_standalone_menu (void);
+gboolean panel_applets_manager_is_applet_available (const char *iid,
+ char **reason);
+
G_END_DECLS
#endif /* __PANEL_APPLETS_MANAGER_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]