Add CONF_TYPE_EXTERNAL support for lxpanel_generic_config_dlg().
authorAndriy Grytsenko <andrej@rep.kiev.ua>
Thu, 30 Oct 2014 13:33:49 +0000 (15:33 +0200)
committerAndriy Grytsenko <andrej@rep.kiev.ua>
Thu, 30 Oct 2014 13:33:49 +0000 (15:33 +0200)
That way plugins can use lxpanel_generic_config_dlg() with more
customized dialogs.

ChangeLog
src/configurator.c
src/plugin.h

index 80ca289..dda8ba8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,7 @@
 * Core functions are separated into a private library to allow reliable
     linking of modules using -Wl,-z,defs.
 * Added macro LXPANEL_CHECK_VERSION() for third party pluguns API check.
+* Added CONF_TYPE_EXTERNAL support for lxpanel_generic_config_dlg().
 
 0.7.2
 -------------------------------------------------------------------------
index 203a3f3..64050d5 100644 (file)
@@ -1403,7 +1403,9 @@ static GtkWidget *_lxpanel_generic_config_dlg(const char *title, Panel *p,
         GtkWidget* entry = NULL;
         gpointer val = va_arg( args, gpointer );
         PluginConfType type = va_arg( args, PluginConfType );
-        switch( type )
+        if (type != CONF_TYPE_TRIM && val == NULL)
+            g_critical("NULL pointer for generic config dialog");
+        else switch( type )
         {
             case CONF_TYPE_STR:
             case CONF_TYPE_FILE_ENTRY: /* entry with a button to browse for files. */
@@ -1444,6 +1446,12 @@ static GtkWidget *_lxpanel_generic_config_dlg(const char *title, Panel *p,
                 g_free (markup);
                 }
                 break;
+            case CONF_TYPE_EXTERNAL:
+                if (GTK_IS_WIDGET(val))
+                    gtk_box_pack_start(dlg_vbox, val, FALSE, FALSE, 2);
+                else
+                    g_critical("value for CONF_TYPE_EXTERNAL is not a GtkWidget");
+                break;
         }
         if( entry )
         {
index a689066..a734080 100644 (file)
@@ -234,6 +234,14 @@ extern void lxpanel_plugin_show_config_dialog(GtkWidget* plugin);
 
 /**
  * PluginConfType:
+ * @CONF_TYPE_STR: string entry, pointer is char **
+ * @CONF_TYPE_INT: spin entry (range 0...1000), pointer is gint *
+ * @CONF_TYPE_BOOL: check button, pointer is gboolean *
+ * @CONF_TYPE_FILE: file chooser, pointer is char **
+ * @CONF_TYPE_FILE_ENTRY: file path entry, pointer is char **
+ * @CONF_TYPE_DIRECTORY_ENTRY: directory path entry, pointer is char **
+ * @CONF_TYPE_TRIM: just a text in italic, pointer is ignored
+ * @CONF_TYPE_EXTERNAL: (since 0.8) provided by caller, pointer is GtkWidget *
  *
  * Type of variable passed to lxpanel_generic_config_dlg().
  */
@@ -244,7 +252,8 @@ typedef enum {
     CONF_TYPE_FILE,
     CONF_TYPE_FILE_ENTRY,
     CONF_TYPE_DIRECTORY_ENTRY,
-    CONF_TYPE_TRIM
+    CONF_TYPE_TRIM,
+    CONF_TYPE_EXTERNAL
 } PluginConfType;
 
 /**