[Xfce4-commits] r24093 - in xfce4-panel/trunk: . panel

Jasper Huijsmans jasper at xfce.org
Wed Dec 13 20:57:17 CET 2006


Author: jasper
Date: 2006-12-13 19:57:17 +0000 (Wed, 13 Dec 2006)
New Revision: 24093

Modified:
   xfce4-panel/trunk/README.Plugins
   xfce4-panel/trunk/panel/panel-app.c
   xfce4-panel/trunk/panel/panel.c
Log:
 * Improve panel_size_request().
 * Add extra check to panel_app_queue_save() to see if the panel is quitting.
 * Nick put the contents of README.Plugins on the wiki, so I'll just leave a link to that.


Modified: xfce4-panel/trunk/README.Plugins
===================================================================
--- xfce4-panel/trunk/README.Plugins	2006-12-13 19:07:59 UTC (rev 24092)
+++ xfce4-panel/trunk/README.Plugins	2006-12-13 19:57:17 UTC (rev 24093)
@@ -1,252 +1,4 @@
-= Plugin System for Xfce Panel 4.4 =
+Information about the plugin system can be found on the Xfce wiki:
 
-Starting from version 4.4 the Xfce Panel supports two types of plugins:
- * Internal plugins. These are loadable modules, using the gmodule interface.
- * External plugins. These are separate programs that are embedded into the
-   panel using the GtkPlug/GtkSocket mechanism.
+http://wiki.xfce.org/panel_plugins_howto
 
-In order to handle these plugins the plugin system was entirely rewritten,
-along with the rest of the panel framework. This file describes the way plugin
-writers should interact with this system.
-
-For the impatient, you can have a look at the plugins provided with the panel
-to see how the system is suposed to work.
-
-The API documentation is installed with the panel and also available from 
-http://www.xfce.org/documentation/api-4.4/
-
-
-== .desktop file ==
-
-New in version 4.4 is the requirement for a so called .desktop file, that is
-'pluginname.desktop', to be installed. It should look like this:
-
-  [Xfce Panel]
-  Name=Plugin
-  Comment=Plugin to solve all your problems
-  Icon=fancy-icon
-  X-XFCE-Exec=/full/path/to/xfce4-fancy-plugin
-
-See the plugins provided with the panel for some tricks for Makefile.am and
-to find out how to get translations in the file using intltool.
-
-For an internal plugin you would use 'X-XFCE-Module' with the full path to the
-loadable module.
-
-If the module should have no more than 1 instance running at the same time,
-you add this line:
-
-  X-XFCE-Unique=true
-
-
-== Library ==
-
-The necessary widgets are provided by libxfce4panel. In your configure.ac you
-should add a line like this:
-
-XDT_CHECK_PACKAGE ([LIBXFCE4PANEL], [libxfce4panel-1.0], [4.3.99.2])
-
-The above assumes that you are using the xfce4-dev-tools package, which you
-really should, because it makes you life easier. Otherwise, you'd have to
-adjust it to include the relevant PKG_CONFIG macro.
-
-
-== Header File ==
-
-There is only one header file that needs to be included, which will take care
-of including other required headers:
-
-  #include <libxfce4panel/xfce-panel-plugin.h>
-
-
-== Plugin Registration ==
-
-To register a plugin with the plugin system there are two macros available
-that should be used, instead of using the library functions directly; one for
-internal plugins and one for external plugins.
-
-  XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL(construct);
-
-  XFCE_PANEL_PLUGIN_REGISTER_INTERNAL(construct);
-
-The 'construct' argument is the name of a function that may be cast to
-XfcePanelPluginFunc, i.e. it takes a single XfcePanelPlugin pointer as
-argument. In the function all widgets should be created and callbacks
-connected to the appropriate plugin signals (see below).
-
-example usage:
-
-  static void plugin_construct (XfcePanelPlugin *plugin);
-  
-  XFCE_PANEL_PLUGIN_REGISTER_EXTERNAL (plugin_construct);
-
-  /* implement functions */
-  ....
-
-For an internal plugin, only the macro call is different. And of course the
-build files.
-
-
-== Signals ==
-
-There are several signals that plugins may be interested in:
-
-The "orientation-changed" signal
-  void user_function (XfcePanelPlugin *plugin, GtkOrientation orientation,
-  	              gpointer user_data);
-
-The "screen-position-changed" signal
-  void user_function (XfcePanelPlugin *plugin, XfceScreenPosition *position,
-  	              gpointer user_data);
-
-The XfceScreenPosition describes the position of the panel on the screen.
-There are 12 positions, 3 on each side, plus two floating positions.
-
-  typedef enum
-  {
-      XFCE_SCREEN_POSITION_NONE,
-    
-      /* top */
-      XFCE_SCREEN_POSITION_NW_H,          /* North West Horizontal */
-      XFCE_SCREEN_POSITION_N,             /* North                 */
-      XFCE_SCREEN_POSITION_NE_H,          /* North East Horizontal */
-
-      /* left */
-      XFCE_SCREEN_POSITION_NW_V,          /* North West Vertical   */
-      XFCE_SCREEN_POSITION_W,             /* West                  */
-      XFCE_SCREEN_POSITION_SW_V,          /* South West Vertical   */
-    
-      /* right */
-      XFCE_SCREEN_POSITION_NE_V,          /* North East Vertical   */
-      XFCE_SCREEN_POSITION_E,             /* East                  */
-      XFCE_SCREEN_POSITION_SE_V,          /* South East Vertical   */
-
-      /* bottom */
-      XFCE_SCREEN_POSITION_SW_H,          /* South West Horizontal */
-      XFCE_SCREEN_POSITION_S,             /* South                 */
-      XFCE_SCREEN_POSITION_SE_H,          /* South East Horizontal */
-
-      /* floating */
-      XFCE_SCREEN_POSITION_FLOATING_H,    /* Floating Horizontal */
-      XFCE_SCREEN_POSITION_FLOATING_V,    /* Floating Vertical */
-  }
-  XfceScreenPosition;
-
-Several macros are defined to make it easier to work with screen positions:
-
-  xfce_screen_position_is_horizontal(position);
-
-  xfce_screen_position_get_orientation(position);
-
-  xfce_screen_position_is_floating(position);
-
-  xfce_screen_position_is_top(position);
-
-  xfce_screen_position_is_left(position);
-
-  xfce_screen_position_is_right(position);
-
-  xfce_screen_position_is_bottom(position);
-
-The "size-changed" signal (return TRUE when you handle the size change):
-  gboolean user_function (XfcePanelPlugin *plugin, int size,
-  	                  gpointer user_data);
-
-The "free-data" signal, free all allocated resources:
-  void user_function (XfcePanelPlugin *plugin,
-  	              gpointer user_data);
-
-The "save" signal, save configuration, may be called more than once:
-  void user_function (XfcePanelPlugin *plugin,
-  	              gpointer user_data);
-
-The "about" signal, emitted when the 'About' menu item is clicked:
-  void user_function (XfcePanelPlugin *plugin,
-  	              gpointer user_data);
-
-To show the menu item the plugin writer should also call:
-  void xfce_panel_plugin_menu_show_about (XfcePanelPlugin *plugin);
-
-The "configure-plugin" signal, emitted when the 'Configure' menu item is 
-clicked:
-  void user_function (XfcePanelPlugin *plugin,
-  	              gpointer user_data);
-
-To show the menu item the plugin writer should also call:
-  void xfce_panel_plugin_menu_show_configure (XfcePanelPlugin *plugin);
-
-
-== Properties ==
-
-Several functions are available to get more information about the plugin (and
-the panel it is part of). Only one property can also be changed, the 'expand'
-behavior. The plugin API also provides convenience functions to store and
-retrieve a pointer to user data.
-
-  /* identification */
-  G_CONST_RETURN char *
-    xfce_panel_plugin_get_name (XfcePanelPlugin *plugin);
-
-  G_CONST_RETURN char *
-    xfce_panel_plugin_get_id (XfcePanelPlugin *plugin);
-
-  G_CONST_RETURN char *
-    xfce_panel_plugin_get_display_name (XfcePanelPlugin *plugin);
-
-  /* getting properties */
-  int xfce_panel_plugin_get_size (XfcePanelPlugin *plugin);
-
-  XfceScreenPosition 
-    xfce_panel_plugin_get_screen_position (XfcePanelPlugin *plugin);
-
-  gboolean xfce_panel_plugin_get_expand (XfcePanelPlugin *plugin);
-
-  GtkOrientation xfce_panel_plugin_get_orientation (XfcePanelPlugin *plugin);
-
-  /* settings properties */
-  void xfce_panel_plugin_set_expand (XfcePanelPlugin *plugin, 
-                                     gboolean expand);
-
-
-== Menu ==
-
-The plugin has a right-click mouse menu connected to it that allows the user
-to show the about or settings dialog, to remove the plugin, or to show the
-panel settings dialog. Plugin writers have to make sure all widgets in the
-plugin that receive mouse events are connected to the menu by using the
-xfce_panel_plugin_add_action_widget() function. A plugin can also add 
-additional, custom menu items.
-
-  void xfce_panel_plugin_add_action_widget (XfcePanelPlugin *plugin, 
-                                            GtkWidget *widget);
-
-  void xfce_panel_plugin_menu_insert_item (XfcePanelPlugin *plugin,
-                                           GtkMenuItem *item);
-
-If you're plugin has a configuration dialog you need to make that menu item
-visible and connect to the "configure-plugin" signal. The same for an about
-dialog and the "about" signal.
-
-  void xfce_panel_plugin_menu_show_about (XfcePanelPlugin *plugin);
-
-  void xfce_panel_plugin_menu_show_configure (XfcePanelPlugin *plugin);
-
-
-== Configuration ==
-
-Plugins can save and retrieve their configuration, using a unique file name.
-There's one function for looking up the config file for reading and one for
-the file to save.
-
-  char *xfce_panel_plugin_lookup_rc_file (XfcePanelPlugin *plugin);
-
-  char *xfce_panel_plugin_save_location (XfcePanelPlugin *plugin,
-                                         gboolean create);
-
-
-== Examples ==
-
-Look at the plugins included with the panel for examples on how to use the
-plugin interface.
-
-

Modified: xfce4-panel/trunk/panel/panel-app.c
===================================================================
--- xfce4-panel/trunk/panel/panel-app.c	2006-12-13 19:07:59 UTC (rev 24092)
+++ xfce4-panel/trunk/panel/panel-app.c	2006-12-13 19:57:17 UTC (rev 24093)
@@ -56,6 +56,7 @@
 
 #define SELECTION_NAME "XFCE4_PANEL"
 #define PANEL_LAUNCHER "launcher"
+#define SAVE_TIMEOUT   30000
 
 #if defined(TIMER) && defined(G_HAVE_ISO_VARARGS)
 void
@@ -767,11 +768,14 @@
 void 
 panel_app_queue_save (void)
 {
+    if (!panel_app.initialized)
+        return;
+
     if (panel_app.runstate == PANEL_RUN_STATE_NORMAL)
     {
         if (!panel_app.save_id)
             panel_app.save_id = 
-                g_timeout_add (30000, (GSourceFunc)save_timeout, NULL);
+                g_timeout_add (SAVE_TIMEOUT, (GSourceFunc)save_timeout, NULL);
     }
 }
 

Modified: xfce4-panel/trunk/panel/panel.c
===================================================================
--- xfce4-panel/trunk/panel/panel.c	2006-12-13 19:07:59 UTC (rev 24092)
+++ xfce4-panel/trunk/panel/panel.c	2006-12-13 19:57:17 UTC (rev 24093)
@@ -386,10 +386,20 @@
 panel_size_request  (GtkWidget      *widget, 
                      GtkRequisition *requisition)
 {
+    PanelPrivate *priv = PANEL(widget)->priv;
+
     GTK_WIDGET_CLASS (panel_parent_class)->size_request (widget, requisition);
 
-    requisition->width  = MAX (MIN_SIZE, requisition->width);
-    requisition->height = MAX (MIN_SIZE, requisition->height);
+    if (panel_is_horizontal (PANEL (widget)))
+    {
+        requisition->width  = MAX (MIN_SIZE,   requisition->width);
+        requisition->height = MAX (priv->size, requisition->height);
+    }
+    else
+    {
+        requisition->width  = MAX (priv->size, requisition->width);
+        requisition->height = MAX (MIN_SIZE,   requisition->height);
+    }
 }
 
 static gboolean 



More information about the Xfce4-commits mailing list