← Back to team overview

cairo-dock-team team mailing list archive

lp:~cairo-dock-team/ubuntu/natty/cairo-dock-plug-ins/2.3.0-0rc1 into lp:ubuntu/cairo-dock-plug-ins

 

Matthieu Baerts has proposed merging lp:~cairo-dock-team/ubuntu/natty/cairo-dock-plug-ins/2.3.0-0rc1 into lp:ubuntu/cairo-dock-plug-ins.

Requested reviews:
  Ubuntu Sponsors Team (ubuntu-sponsors)
Related bugs:
  #723995 Please update Cairo-Dock Plug-ins to 2.3.0~0rc1 version 
  https://bugs.launchpad.net/bugs/723995

For more details, see:
https://code.launchpad.net/~cairo-dock-team/ubuntu/natty/cairo-dock-plug-ins/2.3.0-0rc1/+merge/51035

The Cairo-Dock team proposes a Release Candidate for the version 2.3.0.
It's a major version, and it brings several improvements and fixes several bugs.

This version has been proposed on Debian too (on mentors.debian.net).

PS: don't forget to upload Cairo-Dock Core before because it contains the new API (LP: #723994)

(Bug: #723995)
-- 
The attached diff has been truncated due to its size.
https://code.launchpad.net/~cairo-dock-team/ubuntu/natty/cairo-dock-plug-ins/2.3.0-0rc1/+merge/51035
Your team Cairo-Dock Team is subscribed to branch lp:~cairo-dock-team/ubuntu/natty/cairo-dock-plug-ins/2.3.0-0rc1.
=== modified file 'Animated-icons/src/applet-config.c'
--- Animated-icons/src/applet-config.c	2009-10-05 19:27:17 +0000
+++ Animated-icons/src/applet-config.c	2011-02-23 23:29:29 +0000
@@ -31,7 +31,7 @@
 	{
 		myConfig.iEffectsOnMouseOver[i] = -1;
 	}
-	for (j = 0; j < CAIRO_DOCK_NB_TYPES; j += 2)
+	for (j = 0; j < CAIRO_DOCK_NB_GROUPS; j += 2)
 	{
 		for (i = 0; i < CD_ANIMATIONS_NB_EFFECTS; i ++)
 		{

=== modified file 'Animated-icons/src/applet-init.c'
--- Animated-icons/src/applet-init.c	2010-08-07 01:43:25 +0000
+++ Animated-icons/src/applet-init.c	2011-02-23 23:29:29 +0000
@@ -44,14 +44,38 @@
 	if (! cairo_dock_reserve_data_slot (myApplet))
 		return;
 	
-	cairo_dock_register_notification (CAIRO_DOCK_ENTER_ICON, (CairoDockNotificationFunc) cd_animations_on_enter, CAIRO_DOCK_RUN_AFTER, NULL);
-	cairo_dock_register_notification (CAIRO_DOCK_CLICK_ICON, (CairoDockNotificationFunc) cd_animations_on_click, CAIRO_DOCK_RUN_FIRST, NULL);
-	cairo_dock_register_notification (CAIRO_DOCK_REQUEST_ICON_ANIMATION, (CairoDockNotificationFunc) cd_animations_on_request, CAIRO_DOCK_RUN_FIRST, NULL);
-	cairo_dock_register_notification (CAIRO_DOCK_UPDATE_ICON, (CairoDockNotificationFunc) cd_animations_update_icon , CAIRO_DOCK_RUN_AFTER, NULL);
-	cairo_dock_register_notification (CAIRO_DOCK_RENDER_ICON, (CairoDockNotificationFunc) cd_animations_render_icon, CAIRO_DOCK_RUN_FIRST, NULL);
-	cairo_dock_register_notification (CAIRO_DOCK_RENDER_ICON, (CairoDockNotificationFunc) cd_animations_post_render_icon, CAIRO_DOCK_RUN_AFTER, NULL);
-	cairo_dock_register_notification (CAIRO_DOCK_STOP_ICON, (CairoDockNotificationFunc) cd_animations_free_data, CAIRO_DOCK_RUN_AFTER, NULL);
-	cairo_dock_register_notification (CAIRO_DOCK_UNFOLD_SUBDOCK, (CairoDockNotificationFunc) cd_animations_unfold_subdock, CAIRO_DOCK_RUN_AFTER, NULL);
+	cairo_dock_register_notification_on_object (&myContainersMgr,
+		NOTIFICATION_ENTER_ICON,
+		(CairoDockNotificationFunc) cd_animations_on_enter,
+		CAIRO_DOCK_RUN_AFTER, NULL);
+	cairo_dock_register_notification_on_object (&myContainersMgr,
+		NOTIFICATION_CLICK_ICON,
+		(CairoDockNotificationFunc) cd_animations_on_click,
+		CAIRO_DOCK_RUN_FIRST, NULL);
+	cairo_dock_register_notification_on_object (&myIconsMgr,
+		NOTIFICATION_REQUEST_ICON_ANIMATION,
+		(CairoDockNotificationFunc) cd_animations_on_request,
+		CAIRO_DOCK_RUN_FIRST, NULL);
+	cairo_dock_register_notification_on_object (&myIconsMgr,
+		NOTIFICATION_UPDATE_ICON,
+		(CairoDockNotificationFunc) cd_animations_update_icon,
+		CAIRO_DOCK_RUN_AFTER, NULL);
+	cairo_dock_register_notification_on_object (&myIconsMgr,
+		NOTIFICATION_RENDER_ICON,
+		(CairoDockNotificationFunc) cd_animations_render_icon,
+		CAIRO_DOCK_RUN_FIRST, NULL);
+	cairo_dock_register_notification_on_object (&myIconsMgr,
+		NOTIFICATION_RENDER_ICON,
+		(CairoDockNotificationFunc) cd_animations_post_render_icon,
+		CAIRO_DOCK_RUN_AFTER, NULL);
+	cairo_dock_register_notification_on_object (&myIconsMgr,
+		NOTIFICATION_STOP_ICON,
+		(CairoDockNotificationFunc) cd_animations_free_data,
+		CAIRO_DOCK_RUN_AFTER, NULL);
+	cairo_dock_register_notification_on_object (&myIconsMgr,
+		NOTIFICATION_UNFOLD_SUBDOCK,
+		(CairoDockNotificationFunc) cd_animations_unfold_subdock,
+		CAIRO_DOCK_RUN_AFTER, NULL);
 	
 	myData.iAnimationID[CD_ANIMATIONS_BOUNCE] = cairo_dock_register_animation ("bounce", D_("Bounce"), FALSE);
 	myData.iAnimationID[CD_ANIMATIONS_ROTATE] = cairo_dock_register_animation ("rotate", D_("Rotate"), FALSE);
@@ -60,9 +84,6 @@
 	myData.iAnimationID[CD_ANIMATIONS_WOBBLY] = cairo_dock_register_animation ("wobbly", D_("Wobbly"), FALSE);
 	myData.iAnimationID[CD_ANIMATIONS_WAVE] = cairo_dock_register_animation ("wave", D_("Wave"), FALSE);
 	myData.iAnimationID[CD_ANIMATIONS_SPOT] = cairo_dock_register_animation ("spot", D_("Spot"), FALSE);
-	
-	if (! cairo_dock_is_loading ())
-		cairo_dock_update_animations_list_for_gui ();
 CD_APPLET_INIT_END
 
 static void _free_data_on_icon (Icon *pIcon, CairoDock *pDock, gpointer data)
@@ -71,14 +92,30 @@
 }
 //\___________ Here is where you stop your applet. myConfig and myData are still valid, but will be reseted to 0 at the end of the function. In the end, your applet will go back to its original state, as if it had never been activated.
 CD_APPLET_STOP_BEGIN
-	cairo_dock_remove_notification_func (CAIRO_DOCK_ENTER_ICON, (CairoDockNotificationFunc) cd_animations_on_enter, NULL);
-	cairo_dock_remove_notification_func (CAIRO_DOCK_CLICK_ICON, (CairoDockNotificationFunc) cd_animations_on_click, NULL);
-	cairo_dock_remove_notification_func (CAIRO_DOCK_REQUEST_ICON_ANIMATION, (CairoDockNotificationFunc) cd_animations_on_request, NULL);
-	cairo_dock_remove_notification_func (CAIRO_DOCK_UPDATE_ICON, (CairoDockNotificationFunc) cd_animations_update_icon, NULL);
-	cairo_dock_remove_notification_func (CAIRO_DOCK_RENDER_ICON, (CairoDockNotificationFunc) cd_animations_render_icon, NULL);
-	cairo_dock_remove_notification_func (CAIRO_DOCK_RENDER_ICON, (CairoDockNotificationFunc) cd_animations_post_render_icon, NULL);
-	cairo_dock_remove_notification_func (CAIRO_DOCK_STOP_ICON, (CairoDockNotificationFunc) cd_animations_free_data, NULL);
-	cairo_dock_remove_notification_func (CAIRO_DOCK_UNFOLD_SUBDOCK, (CairoDockNotificationFunc) cd_animations_unfold_subdock, NULL);
+	cairo_dock_remove_notification_func_on_object (&myContainersMgr,
+		NOTIFICATION_ENTER_ICON,
+		(CairoDockNotificationFunc) cd_animations_on_enter, NULL);
+	cairo_dock_remove_notification_func_on_object (&myContainersMgr,
+		NOTIFICATION_CLICK_ICON,
+		(CairoDockNotificationFunc) cd_animations_on_click, NULL);
+	cairo_dock_remove_notification_func_on_object (&myIconsMgr,
+		NOTIFICATION_REQUEST_ICON_ANIMATION,
+		(CairoDockNotificationFunc) cd_animations_on_request, NULL);
+	cairo_dock_remove_notification_func_on_object (&myIconsMgr,
+		NOTIFICATION_UPDATE_ICON,
+		(CairoDockNotificationFunc) cd_animations_update_icon, NULL);
+	cairo_dock_remove_notification_func_on_object (&myIconsMgr,
+		NOTIFICATION_RENDER_ICON,
+		(CairoDockNotificationFunc) cd_animations_render_icon, NULL);
+	cairo_dock_remove_notification_func_on_object (&myIconsMgr,
+		NOTIFICATION_RENDER_ICON,
+		(CairoDockNotificationFunc) cd_animations_post_render_icon, NULL);
+	cairo_dock_remove_notification_func_on_object (&myIconsMgr,
+		NOTIFICATION_STOP_ICON,
+		(CairoDockNotificationFunc) cd_animations_free_data, NULL);
+	cairo_dock_remove_notification_func_on_object (&myIconsMgr,
+		NOTIFICATION_UNFOLD_SUBDOCK,
+		(CairoDockNotificationFunc) cd_animations_unfold_subdock, NULL);
 	
 	cairo_dock_unregister_animation ("bounce");
 	cairo_dock_unregister_animation ("rotate");
@@ -87,7 +124,6 @@
 	cairo_dock_unregister_animation ("wobbly");
 	cairo_dock_unregister_animation ("wave");
 	cairo_dock_unregister_animation ("spot");
-	cairo_dock_update_animations_list_for_gui ();
 	
 	cairo_dock_foreach_icons ((CairoDockForeachIconFunc) _free_data_on_icon, NULL);
 CD_APPLET_STOP_END

=== modified file 'Animated-icons/src/applet-notifications.c'
--- Animated-icons/src/applet-notifications.c	2010-08-07 01:43:25 +0000
+++ Animated-icons/src/applet-notifications.c	2011-02-23 23:29:29 +0000
@@ -56,7 +56,7 @@
 	_set_new_data (pIcon);
 	
 	gboolean bUseOpenGL = CAIRO_DOCK_CONTAINER_IS_OPENGL (CAIRO_CONTAINER (pDock));
-	double dt = (bUseOpenGL ? mySystem.iGLAnimationDeltaT : mySystem.iCairoAnimationDeltaT);
+	double dt = cairo_dock_get_animation_delta_t (CAIRO_CONTAINER (pDock));
 	
 	int i;
 	for (i = 0; i < CD_ANIMATIONS_NB_EFFECTS; i ++)
@@ -116,7 +116,7 @@
 	if (pIcon->bStatic || ! CAIRO_DOCK_CONTAINER_IS_OPENGL (CAIRO_CONTAINER (pDock)) || pIcon->iAnimationState > CAIRO_DOCK_STATE_MOUSE_HOVERED)
 		return CAIRO_DOCK_LET_PASS_NOTIFICATION;
 	
-	if (pIcon->pSubDock && pIcon->iSubdockViewType == 3 && !myAccessibility.bShowSubDockOnClick)
+	if (pIcon->pSubDock && pIcon->iSubdockViewType == 3 && !myDocksParam.bShowSubDockOnClick)  // icone de sous-dock avec rendu de type "box"-> on n'anime pas.
 	{
 		//cd_animations_free_data (pUserData, pIcon);
 		return CAIRO_DOCK_LET_PASS_NOTIFICATION;
@@ -138,7 +138,7 @@
 	if (! CAIRO_DOCK_IS_DOCK (pDock) || pIcon->iAnimationState > CAIRO_DOCK_STATE_CLICKED)
 		return CAIRO_DOCK_LET_PASS_NOTIFICATION;
 	
-	if (pIcon->pSubDock && pIcon->iSubdockViewType == 3)
+	if (pIcon->pSubDock && pIcon->iSubdockViewType == 3)  // icone de sous-dock avec rendu de type "box" -> on arrete l'animation en cours.
 	{
 		CDAnimationData *pData = CD_APPLET_GET_MY_ICON_DATA (pIcon);
 		if (pData && ! pData->bIsUnfolding)
@@ -146,11 +146,9 @@
 		return CAIRO_DOCK_LET_PASS_NOTIFICATION;
 	}
 	
-	CairoDockIconType iType = cairo_dock_get_icon_type (pIcon);
+	CairoDockIconGroup iType = cairo_dock_get_icon_type (pIcon);
 	if (iType == CAIRO_DOCK_LAUNCHER && CAIRO_DOCK_IS_APPLI (pIcon) && ! (iButtonState & GDK_SHIFT_MASK))
 		iType = CAIRO_DOCK_APPLI;
-	/**if (iType == CAIRO_DOCK_APPLI && CAIRO_DOCK_IS_LAUNCHER (pIcon) && iButtonState & GDK_SHIFT_MASK)
-		iType = CAIRO_DOCK_LAUNCHER;*/
 	
 	gboolean bStartAnimation = FALSE;
 	_cd_animations_start (pUserData, pIcon, pDock, myConfig.iEffectsOnClick[iType], &bStartAnimation);
@@ -171,7 +169,7 @@
 	CDAnimationsEffects anim[2] = {0, -1};
 	if (strcmp (cAnimation, "default") == 0)
 	{
-		CairoDockIconType iType = cairo_dock_get_icon_type (pIcon);
+		CairoDockIconGroup iType = cairo_dock_get_icon_type (pIcon);
 		anim[0] =  myConfig.iEffectsOnClick[iType][0];
 	}
 	else
@@ -362,7 +360,7 @@
 	if (pData == NULL)
 		return CAIRO_DOCK_LET_PASS_NOTIFICATION;
 	gboolean bUseOpenGL = CAIRO_DOCK_CONTAINER_IS_OPENGL (CAIRO_CONTAINER (pDock));
-	double dt = (bUseOpenGL ? mySystem.iGLAnimationDeltaT : mySystem.iCairoAnimationDeltaT);
+        double dt = cairo_dock_get_animation_delta_t (CAIRO_CONTAINER (pDock));
 	
 	if (pData->bIsUnfolding)
 	{
@@ -444,6 +442,7 @@
 		pIcon->fReflectShading = (double) pData->iReflectShadeCount / _REFLECT_FADE_NB_STEP;
 		if (pData->iReflectShadeCount != 0)
 			*bContinueAnimation = TRUE;
+		cairo_dock_redraw_icon (pIcon, CAIRO_CONTAINER (pDock));
 	}
 	
 	if (pData->fRadiusFactor != 0)

=== modified file 'Animated-icons/src/applet-rotation.c'
--- Animated-icons/src/applet-rotation.c	2010-02-14 00:51:22 +0000
+++ Animated-icons/src/applet-rotation.c	2011-02-23 23:29:29 +0000
@@ -248,7 +248,7 @@
 	if (pDock->container.bUseReflect)
 	{
 		glPushMatrix ();
-		_cairo_dock_set_alpha (myIcons.fAlbedo * sqrt (myIcons.fAlbedo) * pIcon->fAlpha);  // transparence du reflet, arrange pour essayer de cacher l'absence de degrade :p
+		_cairo_dock_set_alpha (myIconsParam.fAlbedo * sqrt (myIconsParam.fAlbedo) * pIcon->fAlpha);  // transparence du reflet, arrange pour essayer de cacher l'absence de degrade :p
 		double fOffsetY = pIcon->fHeight * pIcon->fScale + (0 + pIcon->fDeltaYReflection) * pDock->container.fRatio;
 		if (pDock->container.bIsHorizontal)
 		{
@@ -261,7 +261,7 @@
 			else
 			{
 				glTranslatef (0., fOffsetY, 0.);
-				//glScalef (pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, myIcons.fReflectSize * pDock->container.fRatio, 1.);
+				//glScalef (pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, myIconsParam.fReflectSize * pDock->container.fRatio, 1.);
 			}
 			glScalef (1., -1., 1.);
 		}
@@ -270,12 +270,12 @@
 			if (pDock->container.bDirectionUp)
 			{
 				glTranslatef (fOffsetY, 0., 0.);
-				//glScalef (- myIcons.fReflectSize * pDock->container.fRatio, pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, 1.);
+				//glScalef (- myIconsParam.fReflectSize * pDock->container.fRatio, pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, 1.);
 			}
 			else
 			{
 				glTranslatef (- fOffsetY, 0., 0.);
-				//glScalef (myIcons.fReflectSize * pDock->container.fRatio, pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, 1.);
+				//glScalef (myIconsParam.fReflectSize * pDock->container.fRatio, pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, 1.);
 			}
 			glScalef (-1., 1., 1.);
 		}

=== modified file 'Animated-icons/src/applet-spot.c'
--- Animated-icons/src/applet-spot.c	2010-02-14 00:51:22 +0000
+++ Animated-icons/src/applet-spot.c	2011-02-23 23:29:29 +0000
@@ -51,7 +51,7 @@
 		glRotatef (90, 0., 0., 1.);
 	double fY = (- pIcon->fHeight + CD_ANIMATIONS_SPOT_HEIGHT) * pIcon->fScale/2;  // * fRadiusFactor
 	if (pDock->container.bUseReflect)
-		fY -= MIN (myIcons.fReflectSize, CD_ANIMATIONS_SPOT_HEIGHT/2);
+		fY -= MIN (myIconsParam.fReflectSize, CD_ANIMATIONS_SPOT_HEIGHT/2);
 	if (! pDock->container.bDirectionUp)
 		fY = -fY;
 	glTranslatef (0., fY, 0.);
@@ -81,7 +81,7 @@
 		glRotatef (90, 0., 0., 1.);
 	double fY = CD_ANIMATIONS_SPOT_HEIGHT * (1 + cos (G_PI * fHaloRotationAngle / 180.))/2 - pIcon->fHeight * pIcon->fScale/2;  // * fRadiusFactor
 	if (pDock->container.bUseReflect)
-		fY -= MIN (myIcons.fReflectSize, CD_ANIMATIONS_SPOT_HEIGHT/2);
+		fY -= MIN (myIconsParam.fReflectSize, CD_ANIMATIONS_SPOT_HEIGHT/2);
 	if (! pDock->container.bDirectionUp)
 		fY = -fY;
 	double fX = .9 * pIcon->fWidth * pIcon->fScale/2;  // * fRadiusFactor
@@ -115,7 +115,7 @@
 		glRotatef (90, 0., 0., 1.);
 	double fY = (- pIcon->fHeight + CD_ANIMATIONS_SPOT_HEIGHT/2 + pIcon->fHeight * fRadiusFactor) * pIcon->fScale/2;  // CD_ANIMATIONS_SPOT_HEIGHT/2 * fRadiusFactor
 	if (pDock->container.bUseReflect)
-		fY -= MIN (myIcons.fReflectSize, CD_ANIMATIONS_SPOT_HEIGHT/2);
+		fY -= MIN (myIconsParam.fReflectSize, CD_ANIMATIONS_SPOT_HEIGHT/2);
 	if (! pDock->container.bDirectionUp)
 		fY = -fY;
 	glTranslatef (0., fY, 0.);
@@ -151,9 +151,9 @@
 			if (!bWillContinue)
 				pData->bGrowingSpot = FALSE;
 		}
-		pData->fIconOffsetY += 1.*myLabels.iconTextDescription.iSize / myConfig.iSpotDuration * dt;
-		if (pData->fIconOffsetY > myLabels.iconTextDescription.iSize)
-			pData->fIconOffsetY = myLabels.iconTextDescription.iSize;
+		pData->fIconOffsetY += 1.*myIconsParam.iconTextDescription.iSize / myConfig.iSpotDuration * dt;
+		if (pData->fIconOffsetY > myIconsParam.iconTextDescription.iSize)
+			pData->fIconOffsetY = myIconsParam.iconTextDescription.iSize;
 	}
 	else
 	{
@@ -162,7 +162,7 @@
 			pData->fRadiusFactor = 0.;
 		else
 			bContinueAnimation = TRUE;
-		pData->fIconOffsetY -= 1.*myLabels.iconTextDescription.iSize / myConfig.iSpotDuration * dt;
+		pData->fIconOffsetY -= 1.*myIconsParam.iconTextDescription.iSize / myConfig.iSpotDuration * dt;
 		if (pData->fIconOffsetY < 0)
 			pData->fIconOffsetY = 0.;
 		else

=== modified file 'Animated-icons/src/applet-struct.h'
--- Animated-icons/src/applet-struct.h	2010-08-07 01:43:25 +0000
+++ Animated-icons/src/applet-struct.h	2011-02-23 23:29:29 +0000
@@ -95,8 +95,8 @@
 	gboolean bContinueBlink;
 	
 	CDAnimationsEffects iEffectsOnMouseOver[CD_ANIMATIONS_NB_EFFECTS];
-	CDAnimationsEffects iEffectsOnClick[CAIRO_DOCK_NB_TYPES][CD_ANIMATIONS_NB_EFFECTS];
-	gint iNbRoundsOnClick[CAIRO_DOCK_NB_TYPES];
+	CDAnimationsEffects iEffectsOnClick[CAIRO_DOCK_NB_GROUPS][CD_ANIMATIONS_NB_EFFECTS];
+	gint iNbRoundsOnClick[CAIRO_DOCK_NB_GROUPS];
 	} ;
 
 //\___________ structure containing the applet's data, like surfaces, dialogs, results of calculus, etc.

=== modified file 'Animated-icons/src/applet-unfold.c'
--- Animated-icons/src/applet-unfold.c	2010-08-07 01:43:25 +0000
+++ Animated-icons/src/applet-unfold.c	2011-02-23 23:29:29 +0000
@@ -90,7 +90,7 @@
 	for (ic = pIcon->pSubDock->icons, i = 0; ic != NULL && i < 3; ic = ic->next, i++)
 	{
 		icon = ic->data;
-		if (CAIRO_DOCK_IS_SEPARATOR (icon))
+		if (CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (icon))
 		{
 			i --;
 			continue;
@@ -139,90 +139,8 @@
 	cairo_restore (pCairoContext);
 	
 	//\_____________________ On dessine son reflet.
-	if (pDock->container.bUseReflect && pIcon->pReflectionBuffer != NULL)  // on dessine les reflets.
-	{
-		cairo_save (pCairoContext);
-		double fRatio = pDock->container.fRatio;
-		if (pDock->container.bIsHorizontal)
-		{
-			if (myIcons.bConstantSeparatorSize && CAIRO_DOCK_IS_SEPARATOR (pIcon))
-				cairo_translate (pCairoContext, 0, (pDock->container.bDirectionUp ? pIcon->fDeltaYReflection + pIcon->fHeight : -pIcon->fDeltaYReflection - myIcons.fReflectSize * fRatio));
-			else
-				cairo_translate (pCairoContext, 0, (pDock->container.bDirectionUp ? pIcon->fDeltaYReflection + pIcon->fHeight * pIcon->fScale : -pIcon->fDeltaYReflection - myIcons.fReflectSize * pIcon->fScale * fRatio));
-		}
-		else
-		{
-			if (myIcons.bConstantSeparatorSize && CAIRO_DOCK_IS_SEPARATOR (pIcon))
-				cairo_translate (pCairoContext, (pDock->container.bDirectionUp ? pIcon->fDeltaYReflection + pIcon->fHeight : -pIcon->fDeltaYReflection - myIcons.fReflectSize * fRatio), 0);
-			else
-				cairo_translate (pCairoContext, (pDock->container.bDirectionUp ? pIcon->fDeltaYReflection + pIcon->fHeight * pIcon->fScale : -pIcon->fDeltaYReflection - myIcons.fReflectSize * pIcon->fScale * fRatio), 0);
-		}
-		cairo_dock_set_icon_scale_on_context (pCairoContext, pIcon, pDock->container.bIsHorizontal, fRatio, pDock->container.bDirectionUp);
-		
-		cairo_set_source_surface (pCairoContext, pIcon->pReflectionBuffer, 0.0, 0.0);
-		
-		if (mySystem.bDynamicReflection && pIcon->fScale > 1)  // on applique la surface avec un degrade en transparence, ou avec une transparence simple.
-		{
-			cairo_pattern_t *pGradationPattern;
-			if (pDock->container.bIsHorizontal)
-			{
-				pGradationPattern = cairo_pattern_create_linear (0.,
-					(pDock->container.bDirectionUp ? 0. : myIcons.fReflectSize / fRatio * (1 + myIcons.fAmplitude)),
-					0.,
-					(pDock->container.bDirectionUp ? myIcons.fReflectSize / fRatio * (1 + myIcons.fAmplitude) / pIcon->fScale : myIcons.fReflectSize / fRatio * (1 + myIcons.fAmplitude) * (1. - 1./ pIcon->fScale)));  // de haut en bas.
-				g_return_if_fail (cairo_pattern_status (pGradationPattern) == CAIRO_STATUS_SUCCESS);
-				
-				cairo_pattern_set_extend (pGradationPattern, CAIRO_EXTEND_NONE);
-				cairo_pattern_add_color_stop_rgba (pGradationPattern,
-					0.,
-					0.,
-					0.,
-					0.,
-					1.);
-				cairo_pattern_add_color_stop_rgba (pGradationPattern,
-					1.,
-					0.,
-					0.,
-					0.,
-					1 - (pIcon->fScale - 1) / myIcons.fAmplitude);  // astuce pour ne pas avoir a re-creer la surface de la reflection.
-			}
-			else
-			{
-				pGradationPattern = cairo_pattern_create_linear ((pDock->container.bDirectionUp ? 0. : myIcons.fReflectSize / fRatio * (1 + myIcons.fAmplitude)),
-					0.,
-					(pDock->container.bDirectionUp ? myIcons.fReflectSize / fRatio * (1 + myIcons.fAmplitude) / pIcon->fScale : myIcons.fReflectSize / fRatio * (1 + myIcons.fAmplitude) * (1. - 1./ pIcon->fScale)),
-					0.);
-				g_return_if_fail (cairo_pattern_status (pGradationPattern) == CAIRO_STATUS_SUCCESS);
-				
-				cairo_pattern_set_extend (pGradationPattern, CAIRO_EXTEND_NONE);
-				cairo_pattern_add_color_stop_rgba (pGradationPattern,
-					0.,
-					0.,
-					0.,
-					0.,
-					1.);
-				cairo_pattern_add_color_stop_rgba (pGradationPattern,
-					1.,
-					0.,
-					0.,
-					0.,
-					1. - (pIcon->fScale - 1) / myIcons.fAmplitude);  // astuce pour ne pas avoir a re-creer la surface de la reflection.
-			}
-			cairo_set_operator (pCairoContext, CAIRO_OPERATOR_OVER);
-			cairo_translate (pCairoContext, 0, 0);
-			cairo_mask (pCairoContext, pGradationPattern);
-
-			cairo_pattern_destroy (pGradationPattern);
-		}
-		else
-		{
-			if (pIcon->fAlpha == 1)
-				cairo_paint (pCairoContext);
-			else
-				cairo_paint_with_alpha (pCairoContext, pIcon->fAlpha);
-		}
-		cairo_restore (pCairoContext);
-	}
+	cairo_dock_draw_icon_reflect_cairo (pIcon, pDock, pCairoContext);
+	
 	cairo_restore (pCairoContext);
 }
 
@@ -283,7 +201,7 @@
 	for (ic = pIcon->pSubDock->icons, i = 0; ic != NULL && i < 3; ic = ic->next, i++)
 	{
 		icon = ic->data;
-		if (CAIRO_DOCK_IS_SEPARATOR (icon))
+		if (CAIRO_DOCK_ICON_TYPE_IS_SEPARATOR (icon))
 		{
 			i --;
 			continue;
@@ -302,4 +220,9 @@
 	_cairo_dock_set_alpha (1.);
 	_cairo_dock_apply_texture_at_size (g_pBoxAboveBuffer.iTexture, w, h);
 	glPopMatrix ();
+	
+	//\_____________________ On dessine son reflet.
+	cairo_dock_draw_icon_reflect_opengl (pIcon, pDock);
+	
+	_cairo_dock_disable_texture ();
 }

=== modified file 'Animated-icons/src/applet-wave.c'
--- Animated-icons/src/applet-wave.c	2010-08-07 01:43:25 +0000
+++ Animated-icons/src/applet-wave.c	2011-02-23 23:29:29 +0000
@@ -186,8 +186,8 @@
 	{
 		glPushMatrix ();
 		double x0, y0, x1, y1;
-		double fReflectRatio = myIcons.fReflectSize * pDock->container.fRatio / pIcon->fHeight / pIcon->fScale;
-		double fOffsetY = pIcon->fHeight * pIcon->fScale/2 + (myIcons.fReflectSize/2 + pIcon->fDeltaYReflection) * pDock->container.fRatio;
+		double fReflectRatio = myIconsParam.fReflectSize * pDock->container.fRatio / pIcon->fHeight / pIcon->fScale;
+		double fOffsetY = pIcon->fHeight * pIcon->fScale/2 + (myIconsParam.fReflectSize/2 + pIcon->fDeltaYReflection) * pDock->container.fRatio;
 		if (pDock->container.bIsHorizontal)
 		{
 			if (pDock->container.bDirectionUp)
@@ -203,7 +203,7 @@
 			else
 			{
 				glTranslatef (0., fOffsetY, 0.);
-				glScalef (pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, myIcons.fReflectSize * pDock->container.fRatio, 1.);
+				glScalef (pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, myIconsParam.fReflectSize * pDock->container.fRatio, 1.);
 				x0 = 0.;
 				y0 = fReflectRatio;
 				x1 = 1.;
@@ -215,7 +215,7 @@
 			if (pDock->container.bDirectionUp)
 			{
 				glTranslatef (fOffsetY, 0., 0.);
-				glScalef (- myIcons.fReflectSize * pDock->container.fRatio, pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, 1.);
+				glScalef (- myIconsParam.fReflectSize * pDock->container.fRatio, pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, 1.);
 				x0 = 1. - fReflectRatio;
 				y0 = 0.;
 				x1 = 1.;
@@ -224,7 +224,7 @@
 			else
 			{
 				glTranslatef (- fOffsetY, 0., 0.);
-				glScalef (myIcons.fReflectSize * pDock->container.fRatio, pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, 1.);
+				glScalef (myIconsParam.fReflectSize * pDock->container.fRatio, pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, 1.);
 				x0 = fReflectRatio;
 				y0 = 0.;
 				x1 = 0.;
@@ -236,7 +236,7 @@
 		glEnable(GL_TEXTURE_2D); // On active le texturing sur cette passe
 		glBindTexture(GL_TEXTURE_2D, pIcon->iIconTexture);
 		
-		glColor4f(1., 1., 1., myIcons.fAlbedo * pIcon->fAlpha);  // transparence du reflet.
+		glColor4f(1., 1., 1., myIconsParam.fAlbedo * pIcon->fAlpha);  // transparence du reflet.
 		glEnable(GL_BLEND);
 		glBlendFunc (1, 0);
 		glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

=== modified file 'Animated-icons/src/applet-wobbly.c'
--- Animated-icons/src/applet-wobbly.c	2009-10-05 19:27:17 +0000
+++ Animated-icons/src/applet-wobbly.c	2011-02-23 23:29:29 +0000
@@ -422,13 +422,14 @@
 	{
 		glPushMatrix ();
 		double x0, y0, x1, y1;
-		double fReflectRatio = myIcons.fReflectSize * pDock->container.fRatio / pIcon->fHeight / pIcon->fScale;
-		double fOffsetY = pIcon->fHeight * pIcon->fScale/2 + (myIcons.fReflectSize/2 + pIcon->fDeltaYReflection) * pDock->container.fRatio;
+		double fReflectRatio = myIconsParam.fReflectSize * pDock->container.fRatio / pIcon->fHeight / pIcon->fScale;
+		///double fOffsetY = pIcon->fHeight * pIcon->fScale/2 + (myIconsParam.fReflectSize/2 + pIcon->fDeltaYReflection) * pDock->container.fRatio;
+		double fOffsetY = pIcon->fHeight * pIcon->fScale + pIcon->fDeltaYReflection;
 		if (pDock->container.bIsHorizontal)
 		{
 			if (pDock->container.bDirectionUp)
 			{
-				fOffsetY = pIcon->fHeight * pIcon->fScale + pIcon->fDeltaYReflection;
+				//fOffsetY = pIcon->fHeight * pIcon->fScale + pIcon->fDeltaYReflection;
 				glTranslatef (0., - fOffsetY, 0.);
 				glScalef (pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, - pIcon->fHeight * pIcon->fScale, 1.);  // taille du reflet et on se retourne.
 				x0 = 0.;
@@ -439,7 +440,7 @@
 			else
 			{
 				glTranslatef (0., fOffsetY, 0.);
-				glScalef (pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, myIcons.fReflectSize * pDock->container.fRatio, 1.);
+				glScalef (pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, - pIcon->fHeight * pIcon->fScale, 1.);
 				x0 = 0.;
 				y0 = fReflectRatio;
 				x1 = 1.;
@@ -450,8 +451,9 @@
 		{
 			if (pDock->container.bDirectionUp)
 			{
+				//fOffsetY = pIcon->fHeight * pIcon->fScale + pIcon->fDeltaYReflection;
 				glTranslatef (fOffsetY, 0., 0.);
-				glScalef (- myIcons.fReflectSize * pDock->container.fRatio, pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, 1.);
+				glScalef (- pIcon->fHeight * pIcon->fScale, pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, 1.);
 				x0 = 1. - fReflectRatio;
 				y0 = 0.;
 				x1 = 1.;
@@ -459,8 +461,9 @@
 			}
 			else
 			{
+				//fOffsetY = pIcon->fHeight * pIcon->fScale + pIcon->fDeltaYReflection;
 				glTranslatef (- fOffsetY, 0., 0.);
-				glScalef (myIcons.fReflectSize * pDock->container.fRatio, pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, 1.);
+				glScalef (- pIcon->fHeight * pIcon->fScale, pIcon->fWidth * pIcon->fWidthFactor * pIcon->fScale, 1.);
 				x0 = fReflectRatio;
 				y0 = 0.;
 				x1 = 0.;
@@ -470,7 +473,7 @@
 		
 		///glActiveTextureARB(GL_TEXTURE0_ARB); // Go pour le multitexturing 1ere passe
 		glBindTexture(GL_TEXTURE_2D, pIcon->iIconTexture);
-		glColor4f(1.0f, 1.0f, 1.0f, myIcons.fAlbedo * pIcon->fAlpha);  // transparence du reflet.
+		glColor4f(1.0f, 1.0f, 1.0f, myIconsParam.fAlbedo * pIcon->fAlpha);  // transparence du reflet.
 		glBlendFuncSeparate (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA,
 			GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
 		glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
@@ -481,7 +484,7 @@
 		/*glActiveTextureARB(GL_TEXTURE1_ARB); // Go pour le texturing 2eme passe
 		glEnable(GL_TEXTURE_2D);
 		glBindTexture(GL_TEXTURE_2D, g_pGradationTexture[pDock->container.bIsHorizontal]);
-		glColor4f(1.0f, 1.0f, 1.0f, myIcons.fAlbedo * pIcon->fAlpha);  // transparence du reflet.  // myIcons.fAlbedo * pIcon->fAlpha
+		glColor4f(1.0f, 1.0f, 1.0f, myIconsParam.fAlbedo * pIcon->fAlpha);  // transparence du reflet.  // myIconsParam.fAlbedo * pIcon->fAlpha
 		glEnable(GL_BLEND);
 		glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 		glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); // Le mode de combinaison des textures

=== modified file 'Applets.stable'
--- Applets.stable	2010-08-07 01:43:25 +0000
+++ Applets.stable	2011-02-23 23:29:29 +0000
@@ -49,6 +49,12 @@
 ###Added in v2.1.3
 RSSReader
 kde-integration
+###Added in v2.2.0
+MeMenu
+Messaging-Menu
 ###All other applets are considered to be either not enough functionnal, buggy/untested, or under heavy development.
 #Scooby-Do
 #Network-Monitor
+#Recent-Events
+#Remote-Control
+#Status-Notifier

=== modified file 'CMakeLists.txt'
--- CMakeLists.txt	2010-09-07 00:39:20 +0000
+++ CMakeLists.txt	2011-02-23 23:29:29 +0000
@@ -10,7 +10,7 @@
 ########### project ###############
 
 project ("cairo-dock-plugins")
-set (VERSION "2.2.0-0rc1")
+set (VERSION "2.3.0~0rc1")
 
 add_definitions (-std=c99 -Wstrict-prototypes -Wextra -Wwrite-strings -Wuninitialized -Werror-implicit-function-declaration) #-Wunreachable-code -Wno-unused-parameter -Wall
 if (NOT ${CMAKE_BUILD_TYPE})
@@ -23,7 +23,7 @@
 set (CPACK_SOURCE_GENERATOR "TGZ")
 set (CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${VERSION}")
 set (CPACK_SOURCE_IGNORE_FILES 
-	"/build/;/.bzr/;bzrignore$;/misc/;/en_GB.po$;~$;${CPACK_SOURCE_IGNORE_FILES}")
+	"/build/;/.bzr/;bzrignore$;/misc/;~$;${CPACK_SOURCE_IGNORE_FILES}")
 include (CPack)
 
 add_custom_target( dist
@@ -45,52 +45,70 @@
 
 set (PACKAGE ${CMAKE_PROJECT_NAME})
 set (GETTEXT_PACKAGE ${PACKAGE})
+
+# get plug-ins install dir
 execute_process(
-    COMMAND pkg-config cairo-dock --variable=pluginsdir
+    COMMAND pkg-config cairo-dock --variable=pluginsdir		# /usr/lib/cairo-dock
     OUTPUT_VARIABLE pluginsdir)
 STRING (REGEX REPLACE "\n" "" pluginsdir ${pluginsdir})  # la commande rajoute un retour chariot ...
+# get plug-ins data dir
 execute_process(
-    COMMAND pkg-config cairo-dock --variable=pluginsdatadir
+    COMMAND pkg-config cairo-dock --variable=pluginsdatadir	# /usr/share/cairo-dock/plug-ins
     OUTPUT_VARIABLE pluginsdatadir)
 STRING (REGEX REPLACE "\n" "" pluginsdatadir ${pluginsdatadir})
+# check that version matches with the core
 execute_process(
-    COMMAND pkg-config --modversion cairo-dock
+    COMMAND pkg-config --modversion cairo-dock			# 2.2.0-3
     OUTPUT_VARIABLE dock_version)
 STRING (REGEX REPLACE "\n" "" dock_version ${dock_version})
-if (NOT "${dock_version}" STREQUAL "${VERSION}")
+if (NOT "${dock_version}" STREQUAL "${VERSION}")		# Version
 	MESSAGE (FATAL_ERROR "warning : version mismatch with the core : " ${VERSION} <> ${dock_version})
 endif()
+
+#if( CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT "${FORCE_LIB64}" STREQUAL "")  # 64bits and force install in lib64
+#	set (libname "lib64")
+#else()
+#	set (libname "lib${LIB_SUFFIX}")
+#endif()
+#set (libdir "${CMAKE_INSTALL_PREFIX}/${libname}/cairo-dock")	# /usr/lib
+
+# check that installation dir matches with the core
+GET_FILENAME_COMPONENT(libdir "${pluginsdir}/.." ABSOLUTE)  # /usr/lib
+GET_FILENAME_COMPONENT(prefix "${pluginsdir}/../.." ABSOLUTE)  # /usr
+if (NOT "${CMAKE_INSTALL_PREFIX}" STREQUAL "${prefix}")
+	message (STATUS "Warning : plug-ins should be installed in the same directory as the core, that is to say in ${pluginsdir}")
+	set (CMAKE_INSTALL_PREFIX "${prefix}")
+	#set (libdir "${CMAKE_INSTALL_PREFIX}/${libname}/cairo-dock")
+endif()
+
+# set internationalisation
 set (GETTEXT_PLUGINS "cairo-dock-plugins")
-
-if( CMAKE_SIZEOF_VOID_P EQUAL 8 AND "${LIB_SUFFIX}" STREQUAL "" AND "${FORCE_NOT_LIB64}" STREQUAL "" )
-	set (libdir lib64/cairo-dock)
-elseif( CMAKE_SIZEOF_VOID_P EQUAL 8 AND NOT "${FORCE_NOT_LIB64}" STREQUAL "" )
-	set (libdir lib${LIB_SUFFIX}/cairo-dock)
-else()
-	set (libdir lib${LIB_SUFFIX}/cairo-dock)
-endif()
-
-if (NOT "${pluginsdir}" STREQUAL "${CMAKE_INSTALL_PREFIX}/${libdir}")
-	message (STATUS "Warning : plug-ins should be installed in the same place asthe dock, that is to say in ${pluginsdir}")
-	STRING (REGEX REPLACE "/${libdir}" "" CMAKE_INSTALL_PREFIX ${pluginsdir})
-endif()
 set (localedir "${CMAKE_INSTALL_PREFIX}/share/locale")
 set (gaugesdir "${CMAKE_INSTALL_PREFIX}/share/cairo-dock/gauges")
 
-
-########### dependencies ###############
+set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules/")  # additionnal FindPackage files
+
+########### dependancies ###############
+
+message ("")
+message (STATUS "=====================")
+message (STATUS "Check dependancies...")
+message (STATUS "=====================")
+message ("")
 
 pkg_check_modules ("PACKAGE" REQUIRED "gtk+-2.0" "gthread-2.0" "cairo" "librsvg-2.0" "dbus-1" "dbus-glib-1" "libxml-2.0" "gtkglext-1.0" "cairo-dock")
 
 ############# ALSA_MIXER #################
-if (NOT "${enable_alsa_mixer}" STREQUAL "no")
+set (with_alsa "no")
+if (NOT "${enable-alsa-mixer}" STREQUAL "no")
 	pkg_check_modules (ALSA_MIXER_PACKAGE alsa)
 	if ("${ALSA_MIXER_PACKAGE_FOUND}" STREQUAL "")
 		message (STATUS "Could not find alsa; Cairo-Dock won't be built with AlsaMixer applet.")
 	else()
 		set (GETTEXT_ALSA_MIXER ${GETTEXT_PLUGINS})
-		set (VERSION_ALSA_MIXER "1.0.11")
+		set (VERSION_ALSA_MIXER "1.0.12")
 		set (PACKAGE_ALSA_MIXER "cd-AlsaMixer")
+		set (with_alsa "yes")
 		set (alsa_mixerdatadir "${pluginsdatadir}/AlsaMixer")
 		configure_file (${CMAKE_CURRENT_SOURCE_DIR}/alsaMixer/data/AlsaMixer.conf.in ${CMAKE_CURRENT_BINARY_DIR}/alsaMixer/data/AlsaMixer.conf)
 		add_subdirectory ("alsaMixer")
@@ -99,7 +117,7 @@
 
 ############# ANIMATED ICONS #################
 set (GETTEXT_ANIMATED_ICONS ${GETTEXT_PLUGINS})
-set (VERSION_ANIMATED_ICONS "1.0.8")
+set (VERSION_ANIMATED_ICONS "1.0.9")
 set (PACKAGE_ANIMATED_ICONS "cd-Animated-icons")
 set (animated_iconsdatadir "${pluginsdatadir}/Animated-icons")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Animated-icons/data/Animated-icons.conf.in ${CMAKE_CURRENT_BINARY_DIR}/Animated-icons/data/Animated-icons.conf)
@@ -107,7 +125,7 @@
 
 ############# CAIRO_PENGUIN #################
 set (GETTEXT_CAIRO_PENGUIN ${GETTEXT_PLUGINS})
-set (VERSION_CAIRO_PENGUIN "1.1.7")
+set (VERSION_CAIRO_PENGUIN "1.1.8")
 set (PACKAGE_CAIRO_PENGUIN "cd-Cairo-Penguin")
 set (cairo_penguinuserdirname "Cairo-Penguin")
 set (cairo_penguindatadir "${pluginsdatadir}/Cairo-Penguin")
@@ -116,19 +134,21 @@
 
 ############# CLIPPER #################
 set (GETTEXT_CLIPPER ${GETTEXT_PLUGINS})
-set (VERSION_CLIPPER "1.1.3")
+set (VERSION_CLIPPER "1.1.4")
 set (PACKAGE_CLIPPER "cd-Clipper")
 set (Clipperdatadir "${pluginsdatadir}/Clipper")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Clipper/data/Clipper.conf.in ${CMAKE_CURRENT_BINARY_DIR}/Clipper/data/Clipper.conf)
 add_subdirectory (Clipper)
 
 ############# CLOCK #################
+set (with_ical "yes")
 pkg_check_modules ("LIBICAL_PACKAGE" "libical")
 if ("${LIBICAL_PACKAGE_FOUND}" STREQUAL "")
+	set (with_ical "no")
 	message (STATUS "Could not find libical; Clock plugin won't be built with iCal support.")
 endif()
 set (GETTEXT_CLOCK ${GETTEXT_PLUGINS})
-set (VERSION_CLOCK "2.1.1")
+set (VERSION_CLOCK "2.1.2")
 set (PACKAGE_CLOCK "cd-clock")
 set (clockuserdirname "clock")
 set (clockdatadir "${pluginsdatadir}/clock")
@@ -137,15 +157,98 @@
 
 ############# COMPIZ_ICON #################
 set (GETTEXT_COMPIZ_ICON ${GETTEXT_PLUGINS})
-set (VERSION_COMPIZ_ICON "1.1.5")
+set (VERSION_COMPIZ_ICON "1.1.6")
 set (PACKAGE_COMPIZ_ICON "cd-compiz-icon")
 set (compiz_icondatadir "${pluginsdatadir}/compiz-icon")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/compiz-icon/data/compiz-icon.conf.in ${CMAKE_CURRENT_BINARY_DIR}/compiz-icon/data/compiz-icon.conf)
 add_subdirectory (compiz-icon)
 
 ############# DBUS #################
+find_program (PYTHON_EXECUTABLE python)
+EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "import sys; print sys.version" OUTPUT_VARIABLE PYTHON_VERSION)
+if ("${PYTHON_VERSION}" STREQUAL "") 
+	message (STATUS "Could not find Python, won't install Python interface.") 
+	set (with_python "no") 
+else() 
+	STRING (REGEX REPLACE "\n" "" PYTHON_VERSION ${PYTHON_VERSION})
+	message (STATUS "Python Version: ${PYTHON_VERSION}") 
+	GET_FILENAME_COMPONENT(DEBIAN_VERSION /etc/debian_version ABSOLUTE) 
+	if (EXISTS ${DEBIAN_VERSION}) 
+		message (STATUS "  will use '--install-layout deb' with 'python setup.py install'") 
+		set (DEBIAN_INSTALL_LAYOUT "--install-layout deb")
+	endif()
+	set (PYTHON_FOUND "TRUE")
+	set (with_python "yes") 
+endif()
+
+# find_package(Ruby) found libs of ruby-dev but we only need a directory where we can install ruby libs.
+find_program (RUBY_EXECUTABLE ruby)
+EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['rubylibdir']"
+	OUTPUT_VARIABLE RUBY_LIB_DIR)
+message (STATUS "RUBY_LIBRARY: ${RUBY_LIB_DIR}")
+if ("${RUBY_LIB_DIR}" STREQUAL "" OR "${RUBY_LIB_DIR}" STREQUAL "nil")
+	message (STATUS "Could not find ruby libs, won't install Ruby interface.")
+	set (with_ruby "no")
+else()
+	string (REGEX REPLACE "lib/ruby/[0-9].[0-9]" "" RUBY_LIB_DIR_INSTALL "${RUBY_LIB_DIR}")
+	string (REGEX REPLACE "${RUBY_LIB_DIR_INSTALL}" "" RUBY_LIB_DIR_INSTALL "${RUBY_LIB_DIR}")
+	set (RUBY_LIB_DIR "${CMAKE_INSTALL_PREFIX}/${RUBY_LIB_DIR_INSTALL}")
+	message (STATUS "  will be installed in: ${RUBY_LIB_DIR}")
+	set (RUBY_FOUND "TRUE")
+	set (with_ruby "yes")
+endif()
+
+#find_package (Mono)
+find_program (GMCS_EXECUTABLE gmcs)
+if ("${GMCS_EXECUTABLE}" STREQUAL "" OR NOT EXISTS ${GMCS_EXECUTABLE})
+	message (STATUS "Could not find Mono compiler gmcs, won't build Mono interface.")
+	set (with_mono "no")
+else()
+	set (MONO_FOUND "TRUE")
+	pkg_check_modules (MONO_PACKAGE glib-sharp-2.0 ndesk-dbus-1.0 ndesk-dbus-glib-1.0)
+	if ("${MONO_PACKAGE_FOUND}" STREQUAL "")
+		message (STATUS "Could not find glib-sharp-2.0, ndesk-dbus-1.0 or ndesk-dbus-glib-1.0; won't be built Mono interface.")
+		set (with_mono "no")
+	else()
+		set (with_mono "yes")
+	endif()
+endif()
+
+set (with_vala "yes")
+set (with_valac "no")
+find_program (VALA_EXECUTABLE valac)
+if ("${WITH_VALA}" STREQUAL "no")
+	set (with_vala "no")
+elseif ("${WITH_VALA}" STREQUAL "yes" AND NOT "${VALA_EXECUTABLE}" STREQUAL "")
+	execute_process(COMMAND ${VALA_EXECUTABLE} "--version"
+		OUTPUT_VARIABLE "VALA_VERSION")
+	string(REPLACE "Vala" "" "VALA_VERSION" ${VALA_VERSION})
+	string(STRIP ${VALA_VERSION} "VALA_VERSION")
+	message (STATUS "VALA_VERSION: ${VALA_VERSION}")
+
+	STRING (REGEX REPLACE "\\..*" "" VALA_MAJOR "${VALA_VERSION}")
+	message (STATUS "VALA_MAJOR : ${VALA_MAJOR}")
+	
+	STRING (REGEX REPLACE "[0-9]*\\.([^ ]+)" "\\1" VALA_MINOR "${VALA_VERSION}")  # 0.1.7 => 1.7
+	STRING (REGEX REPLACE "\\.[0-9]*" "" VALA_MINOR "${VALA_MINOR}")
+	message (STATUS "VALA_MINOR : ${VALA_MINOR}")
+
+	STRING (REGEX REPLACE ".*\\." "" VALA_NANO "${VALA_VERSION}")
+	STRING (REGEX REPLACE "-.*" "" VALA_NANO "${VALA_NANO}")
+	message (STATUS "VALA_NANO  : ${VALA_NANO}")
+
+	if (${VALA_MAJOR} GREATER 0 OR ${VALA_MINOR} GREATER 9)  # vala > 0.10
+		message (STATUS "Vala compiler ok.")
+		set (VALAC_FOUND "TRUE")
+		set (with_valac "yes")
+	else()
+		message (STATUS "Vala compiler too old (0.10 required), won't build Vala interface.")
+	endif()
+endif()
+
+
 set (GETTEXT_DBUS ${GETTEXT_PLUGINS})
-set (VERSION_DBUS "1.0.0")
+set (VERSION_DBUS "1.2.1")
 set (PACKAGE_DBUS "cd-Dbus")
 set (dbusdatadir "${pluginsdatadir}/Dbus")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Dbus/data/Dbus.conf.in ${CMAKE_CURRENT_BINARY_DIR}/Dbus/data/Dbus.conf)
@@ -153,7 +256,7 @@
 
 ############# DESKLET_RENDERING #################
 set (GETTEXT_DESKLET_RENDERING ${GETTEXT_PLUGINS})
-set (VERSION_DESKLET_RENDERING "1.5.5")
+set (VERSION_DESKLET_RENDERING "1.5.6")
 set (PACKAGE_DESKLET_RENDERING "cd-desklet-rendering")
 set (desklet_renderingdatadir "${pluginsdatadir}/desklet-rendering")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/desklet-rendering/data/desklet-rendering.conf.in ${CMAKE_CURRENT_BINARY_DIR}/desklet-rendering/data/desklet-rendering.conf)
@@ -161,15 +264,27 @@
 
 ############# DIALOG_RENDERING #################
 set (GETTEXT_DIALOG_RENDERING ${GETTEXT_PLUGINS})
-set (VERSION_DIALOG_RENDERING "0.4.4")
+set (VERSION_DIALOG_RENDERING "0.5.1")
 set (PACKAGE_DIALOG_RENDERING "cd-dialog-rendering")
 set (dialog_renderingdatadir "${pluginsdatadir}/dialog-rendering")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/dialog-rendering/data/dialog-rendering.conf.in ${CMAKE_CURRENT_BINARY_DIR}/dialog-rendering/data/dialog-rendering.conf)
 add_subdirectory (dialog-rendering)
 
+############# DISKS #################
+set (with_disks "no")
+if ("${enable-disks}" STREQUAL "yes")
+	set (GETTEXT_DISKS ${GETTEXT_PLUGINS})
+	set (VERSION_DISKS "0.0.2")
+	set (PACKAGE_DISKS "cd-disks")
+	set (with_disks "yes")
+	set (disksdatadir "${pluginsdatadir}/Disks")
+	configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Disks/data/Disks.conf.in ${CMAKE_CURRENT_BINARY_DIR}/Disks/data/Disks.conf)
+	add_subdirectory ("Disks")
+endif()
+
 ############# DND2SHARE #################
 set (GETTEXT_DND2SHARE ${GETTEXT_PLUGINS})
-set (VERSION_DND2SHARE "1.0.3")
+set (VERSION_DND2SHARE "1.0.5")
 set (PACKAGE_DND2SHARE "cd-dnd2share")
 set (dnd2sharedatadir "${pluginsdatadir}/dnd2share")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/dnd2share/data/dnd2share.conf.in ${CMAKE_CURRENT_BINARY_DIR}/dnd2share/data/dnd2share.conf)
@@ -177,17 +292,19 @@
 
 ############# DOCK RENDERING #################
 set (GETTEXT_RENDERING ${GETTEXT_PLUGINS})
-set (VERSION_RENDERING "1.5.7")
+set (VERSION_RENDERING "1.5.9")
 set (PACKAGE_RENDERING "cd-rendering")
 set (renderingdatadir "${pluginsdatadir}/rendering")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/dock-rendering/data/rendering.conf.in ${CMAKE_CURRENT_BINARY_DIR}/dock-rendering/data/rendering.conf)
 add_subdirectory (dock-rendering)
 
 ############# DONCKY #################
+set (with_doncky "no")
 if ("${enable-doncky}" STREQUAL "yes")
 	set (GETTEXT_DONCKY ${GETTEXT_PLUGINS})
-	set (VERSION_DONCKY "0.0.3")
+	set (VERSION_DONCKY "0.0.4")
 	set (PACKAGE_DONCKY "cd-doncky")
+	set (with_doncky "yes")
 	set (donckydatadir "${pluginsdatadir}/Doncky")
 	configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Doncky/data/Doncky.conf.in ${CMAKE_CURRENT_BINARY_DIR}/Doncky/data/Doncky.conf)
 	add_subdirectory (Doncky)
@@ -195,7 +312,7 @@
 
 ############# DROP INDICATOR #################
 set (GETTEXT_DROP_INDICATOR ${GETTEXT_PLUGINS})
-set (VERSION_DROP_INDICATOR "1.1.3")
+set (VERSION_DROP_INDICATOR "1.1.4")
 set (PACKAGE_DROP_INDICATOR "cd-drop_indicator")
 set (drop_indicatordatadir "${pluginsdatadir}/drop-indicator")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/drop-indicator/data/drop_indicator.conf.in ${CMAKE_CURRENT_BINARY_DIR}/drop-indicator/data/drop_indicator.conf)
@@ -203,7 +320,7 @@
 
 ############# DUSTBIN #################
 set (GETTEXT_DUSTBIN ${GETTEXT_PLUGINS})
-set (VERSION_DUSTBIN "2.3.0")
+set (VERSION_DUSTBIN "2.3.1")
 set (PACKAGE_DUSTBIN "cd-dustbin")
 set (dustbinuserdirname "dustbin")
 set (dustbindatadir "${pluginsdatadir}/dustbin")
@@ -212,21 +329,23 @@
 
 ############# FOLDERS #################
 set (GETTEXT_FOLDERS ${GETTEXT_PLUGINS})
-set (VERSION_FOLDERS "0.2.0")
+set (VERSION_FOLDERS "0.2.1")
 set (PACKAGE_FOLDERS "cd-Folders")
 set (foldersdatadir "${pluginsdatadir}/Folders")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Folders/data/Folders.conf.in ${CMAKE_CURRENT_BINARY_DIR}/Folders/data/Folders.conf)
 add_subdirectory (Folders)
 
 ############# GMENU #################
-if (NOT "${enable_gmenu}" STREQUAL "no")
+set (with_gmenu "no")
+if (NOT "${enable-gmenu}" STREQUAL "no")
 	pkg_check_modules (GMENU_PACKAGE libgnome-menu)
 	if ("${GMENU_PACKAGE_FOUND}" STREQUAL "")
 		message (STATUS "Could not find libgnome-menu; Cairo-Dock won't be built with GMenu applet.")
 	else()
 		set (GETTEXT_GMENU ${GETTEXT_PLUGINS})
-		set (VERSION_GMENU "1.1.5")
+		set (VERSION_GMENU "1.1.6")
 		set (PACKAGE_GMENU "cd-GMenu")
+		set (with_gmenu "yes")
 		set (gmenudatadir "${pluginsdatadir}/GMenu")
 		configure_file (${CMAKE_CURRENT_SOURCE_DIR}/GMenu/data/GMenu.conf.in ${CMAKE_CURRENT_BINARY_DIR}/GMenu/data/GMenu.conf)
 		add_subdirectory ("GMenu")
@@ -238,26 +357,30 @@
 add_subdirectory (gvfs-integration)
 
 ############# GNOME-INTEGRATION #################
-if (NOT "${enable_gnome_integration}" STREQUAL "no")
+set (with_gnome_integration "no")
+if (NOT "${enable-gnome-integration}" STREQUAL "no")
 	pkg_check_modules (GNOME_INTEGRATION gio-2.0)
 	if ("${GNOME_INTEGRATION_FOUND}" STREQUAL "")
 		message (STATUS "Could not find gio; Cairo-Dock won't be built with Gnome>=2.22 support.")
 	else()
-		set (VERSION_GNOME_INTEGRATION "1.0.2")
+		set (VERSION_GNOME_INTEGRATION "1.0.3")
 		set (PACKAGE_GNOME_INTEGRATION "cd_gnome-integration")
+		set (with_gnome_integration "yes")
 		set (gnome_integrationdatadir "${pluginsdatadir}/gnome-integration")
 		add_subdirectory ("gnome-integration")
 	endif()
 endif()
 
 ############# GNOME-INTEGRATION-OLD #################
-if ("${enable_old_gnome_integration}" STREQUAL "yes")
+set (with_gnome_integration_old "no")
+if ("${enable-old-gnome-integration}" STREQUAL "yes")
 	pkg_check_modules (OLD_GNOME_INTEGRATION gnome-vfs-2.0 libgnomeui-2.0)
 	if ("${OLD_GNOME_INTEGRATION_FOUND}" STREQUAL "")
 		message (STATUS "Could not find gnome-vfs and/or gnomeui; Cairo-Dock won't be built with Gnome<2.22 support.")
 	else()
-		set (VERSION_GNOME_INTEGRATION_OLD "1.0.3")
+		set (VERSION_GNOME_INTEGRATION_OLD "1.0.4")
 		set (PACKAGE_GNOME_INTEGRATION_OLD "cd_gnome-integration-old")
+		set (with_gnome_integration_old "yes")
 		set (gnome_integration_olddatadir "${pluginsdatadir}/gnome-integration-old")
 		add_subdirectory ("gnome-integration-old")
 	endif()
@@ -265,48 +388,82 @@
 
 ############# ICON EFFECT #################
 set (GETTEXT_ICON_EFFECTS ${GETTEXT_PLUGINS})
-set (VERSION_ICON_EFFECTS "1.2.3")
+set (VERSION_ICON_EFFECTS "1.2.4")
 set (PACKAGE_ICON_EFFECTS "cd-icon-effect")
 set (icon_effectsdatadir "${pluginsdatadir}/icon-effect")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/icon-effect/data/icon-effect.conf.in ${CMAKE_CURRENT_BINARY_DIR}/icon-effect/data/icon-effect.conf)
 add_subdirectory (icon-effect)
 
 ############# INDICATOR-APPLET #################
-pkg_check_modules (DBUSMENU dbusmenu-glib)
-pkg_check_modules (INDICATOR_APPLET indicator libido-0.1 dbusmenu-gtk)
-if (NOT "${INDICATOR_APPLET_FOUND}" STREQUAL "" AND NOT "${DBUSMENU_FOUND}" STREQUAL "")
+# Note: the names of dbusmenu-glib and dbusmenu-gtk have changed...
+pkg_check_modules (DBUSMENU_04 QUIET dbusmenu-glib-0.4)
+pkg_check_modules (DBUSMENU_GTK_04 QUIET dbusmenu-gtk-0.4)
+pkg_check_modules (INDICATOR_APPLET indicator libido-0.1)
+if ("${DBUSMENU_04_FOUND}" STREQUAL "1")
+	pkg_check_modules (DBUSMENU dbusmenu-glib-0.4)
+else()
+	pkg_check_modules (DBUSMENU dbusmenu-glib)
+endif()
+if ("${DBUSMENU_GTK_04_FOUND}" STREQUAL "1")
+	pkg_check_modules (DBUSMENU_GTK dbusmenu-gtk-0.4)
+else()
+	pkg_check_modules (DBUSMENU_GTK dbusmenu-gtk)
+endif()
+if ("${INDICATOR_APPLET_FOUND}" STREQUAL "1" AND "${DBUSMENU_FOUND}" STREQUAL "1" AND "${DBUSMENU_GTK_FOUND}" STREQUAL "1")
+	message (STATUS "DBUSMENU_VERSION : ${DBUSMENU_VERSION}")
+	
+	STRING (REGEX REPLACE "\\..*" "" DBUSMENU_MAJOR "${DBUSMENU_VERSION}")
+	message (STATUS "DBUSMENU_MAJOR : ${DBUSMENU_MAJOR}")
+	
+	STRING (REGEX REPLACE "[0-9]*\\.([^ ]+)" "\\1" DBUSMENU_MINOR "${DBUSMENU_VERSION}")  # 0.1.7 => 1.7
+	STRING (REGEX REPLACE "\\.[0-9]*" "" DBUSMENU_MINOR "${DBUSMENU_MINOR}")
+	message (STATUS "DBUSMENU_MINOR : ${DBUSMENU_MINOR}")
+	
+	STRING (REGEX REPLACE ".*\\." "" DBUSMENU_NANO "${DBUSMENU_VERSION}")
+	STRING (REGEX REPLACE "-.*" "" DBUSMENU_NANO "${DBUSMENU_NANO}")
+	message (STATUS "DBUSMENU_NANO  : ${DBUSMENU_NANO}")
+	
+	execute_process(
+		COMMAND pkg-config --variable=iconsdir indicator
+		OUTPUT_VARIABLE INDICATORICONSDIR)
+	STRING (REGEX REPLACE "\n" "" INDICATORICONSDIR ${INDICATORICONSDIR})  # la commande rajoute un retour chariot ...
 	add_subdirectory (Indicator-applet)
+	set (with_indicator "yes")
 endif()
 
 ############# ILLUSION #################
 set (GETTEXT_ILLUSION ${GETTEXT_PLUGINS})
-set (VERSION_ILLUSION "1.0.6")
+set (VERSION_ILLUSION "1.0.7")
 set (PACKAGE_ILLUSION "cd-illusion")
 set (illusiondatadir "${pluginsdatadir}/illusion")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/illusion/data/illusion.conf.in ${CMAKE_CURRENT_BINARY_DIR}/illusion/data/illusion.conf)
 add_subdirectory (illusion)
 
 ############# KDE-INTEGRATION #################
-if (NOT "${enable_kde_integration}" STREQUAL "no")
+set (with_kde_integration "no")
+if (NOT "${enable-kde-integration}" STREQUAL "no")
 	pkg_check_modules (KDE_INTEGRATION gio-2.0)
 	if ("${KDE_INTEGRATION_FOUND}" STREQUAL "")
 		message (STATUS "Could not find kde libs; Cairo-Dock won't be built with KDE support.")
 	else()
-		set (VERSION_KDE_INTEGRATION "0.0.1")
+		set (VERSION_KDE_INTEGRATION "0.0.2")
 		set (PACKAGE_KDE_INTEGRATION "cd_kde-integration")
+		set (with_kde_integration "yes")
 		set (kde_integrationdatadir "${pluginsdatadir}/kde-integration")
 		add_subdirectory ("kde-integration")
 	endif()
 endif()
 
 ############# KEYBOARD_INDICATOR #################
+set (with_keyboard_indicator "no")
 pkg_check_modules (KEYBOARD_INDICATOR_PACKAGE libxklavier)
 if ("${KEYBOARD_INDICATOR_PACKAGE_FOUND}" STREQUAL "")
 	message (STATUS "Could not find libxklavier; Cairo-Dock won't be built with keyboard-indicator applet.")
 else()
 	set (GETTEXT_KEYBOARD_INDICATOR ${GETTEXT_PLUGINS})
-	set (VERSION_KEYBOARD_INDICATOR "1.1.2")
+	set (VERSION_KEYBOARD_INDICATOR "1.1.3")
 	set (PACKAGE_KEYBOARD_INDICATOR "cd-keyboard-indicator")
+	set (with_keyboard_indicator "yes")
 	set (keyboard_indicatordatadir "${pluginsdatadir}/keyboard-indicator")
 	configure_file (${CMAKE_CURRENT_SOURCE_DIR}/keyboard-indicator/data/keyboard-indicator.conf.in ${CMAKE_CURRENT_BINARY_DIR}/keyboard-indicator/data/keyboard-indicator.conf)
 	add_subdirectory ("keyboard-indicator")
@@ -314,13 +471,14 @@
 
 ############# LOGOUT #################
 set (GETTEXT_LOGOUT ${GETTEXT_PLUGINS})
-set (VERSION_LOGOUT "1.2.9")
+set (VERSION_LOGOUT "1.2.10")
 set (PACKAGE_LOGOUT "cd-logout")
 set (logoutdatadir "${pluginsdatadir}/logout")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/logout/data/logout.conf.in ${CMAKE_CURRENT_BINARY_DIR}/logout/data/logout.conf)
 add_subdirectory (logout)
 
 ############# MAIL #################
+set (with_mail "no")
 # find the compilation flags
 execute_process(
 	COMMAND libetpan-config --cflags
@@ -351,41 +509,33 @@
 	message (STATUS "  Link directories: ${MAIL_PACKAGE_LIBRARY_DIRS}")
 	message (STATUS "  Link libraries: ${MAIL_PACKAGE_LIBRARIES}")
 	set (GETTEXT_MAIL ${GETTEXT_PLUGINS})
-	set (VERSION_MAIL "1.0.6")
+	set (VERSION_MAIL "1.0.8")
 	set (PACKAGE_MAIL "cd-mail")
 	set (maildatadir "${pluginsdatadir}/mail")
+	set (with_mail "yes")
 	configure_file (${CMAKE_CURRENT_SOURCE_DIR}/mail/data/mail.conf.in ${CMAKE_CURRENT_BINARY_DIR}/mail/data/mail.conf)
 	add_subdirectory ("mail")
 endif()
 
 ############# MEMENU #################
-if (NOT "${INDICATOR_APPLET_FOUND}" STREQUAL "" AND NOT "${DBUSMENU_FOUND}" STREQUAL "")
-	message (STATUS "DBUSMENU_VERSION : ${DBUSMENU_VERSION}")
-	
-	STRING (REGEX REPLACE "\\..*" "" DBUSMENU_MAJOR "${DBUSMENU_VERSION}")
-	message (STATUS "DBUSMENU_MAJOR : ${DBUSMENU_MAJOR}")
-	
-	STRING (REGEX REPLACE "[0-9]*\\.([^ ]+)" "\\1" DBUSMENU_MINOR "${DBUSMENU_VERSION}")  # 0.1.7 => 1.7
-	STRING (REGEX REPLACE "\\.[0-9]*" "" DBUSMENU_MINOR "${DBUSMENU_MINOR}")
-	message (STATUS "DBUSMENU_MINOR : ${DBUSMENU_MINOR}")
-	
-	STRING (REGEX REPLACE ".*\\." "" DBUSMENU_NANO "${DBUSMENU_VERSION}")
-	STRING (REGEX REPLACE "-.*" "" DBUSMENU_NANO "${DBUSMENU_NANO}")
-	message (STATUS "DBUSMENU_NANO  : ${DBUSMENU_NANO}")
-	
+set (with_me_menu "no")
+if ("${with_indicator}" STREQUAL "yes")
 	set (GETTEXT_MEMENU ${GETTEXT_PLUGINS})
-	set (VERSION_MEMENU "1.0.0")
+	set (VERSION_MEMENU "1.0.1")
 	set (PACKAGE_MEMENU "cd-MeMenu")
 	set (memenudatadir "${pluginsdatadir}/MeMenu")
+	set (with_me_menu "yes")
 	configure_file (${CMAKE_CURRENT_SOURCE_DIR}/MeMenu/data/MeMenu.conf.in ${CMAKE_CURRENT_BINARY_DIR}/MeMenu/data/MeMenu.conf)
 	add_subdirectory (MeMenu)
 endif()
 
 ############# MESSAGING_MENU #################
-if (NOT "${INDICATOR_APPLET_FOUND}" STREQUAL "" AND NOT "${DBUSMENU_FOUND}" STREQUAL "")
+set (with_messaging_menu "no")
+if ("${with_indicator}" STREQUAL "yes")
 	set (GETTEXT_MESSAGING_MENU ${GETTEXT_PLUGINS})
-	set (VERSION_MESSAGING_MENU "0.0.1")
+	set (VERSION_MESSAGING_MENU "1.0.1")
 	set (PACKAGE_MESSAGING_MENU "cd-Messaging-Menu")
+	set (with_messaging_menu "yes")
 	set (messaging_menudatadir "${pluginsdatadir}/Messaging-Menu")
 	configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Messaging-Menu/data/Messaging-Menu.conf.in ${CMAKE_CURRENT_BINARY_DIR}/Messaging-Menu/data/Messaging-Menu.conf)
 	add_subdirectory (Messaging-Menu)
@@ -393,7 +543,7 @@
 
 ############# MOTION BLUR #################
 set (GETTEXT_MOTION_BLUR ${GETTEXT_PLUGINS})
-set (VERSION_MOTION_BLUR "1.0.3")
+set (VERSION_MOTION_BLUR "1.0.4")
 set (PACKAGE_MOTION_BLUR "cd-motion_blur")
 set (motion_blurdatadir "${pluginsdatadir}/motion-blur")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/motion-blur/data/motion_blur.conf.in ${CMAKE_CURRENT_BINARY_DIR}/motion-blur/data/motion_blur.conf)
@@ -401,7 +551,7 @@
 
 ############# MUSICPLAYER #################
 set (GETTEXT_MUSICPLAYER ${GETTEXT_PLUGINS})
-set (VERSION_MUSICPLAYER "1.0.6")
+set (VERSION_MUSICPLAYER "1.0.7")
 set (PACKAGE_MUSICPLAYER "cd-musicPlayer")
 set (musicplayerdatadir "${pluginsdatadir}/musicPlayer")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/musicPlayer/data/musicPlayer.conf.in ${CMAKE_CURRENT_BINARY_DIR}/musicPlayer/data/musicPlayer.conf)
@@ -409,17 +559,19 @@
 
 ############# NETSPEED #################
 set (GETTEXT_NETSPEED ${GETTEXT_PLUGINS})
-set (VERSION_NETSPEED "1.2.4")
+set (VERSION_NETSPEED "1.2.5")
 set (PACKAGE_NETSPEED "cd-netspeed")
 set (netspeeddatadir "${pluginsdatadir}/netspeed")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/netspeed/data/netspeed.conf.in ${CMAKE_CURRENT_BINARY_DIR}/netspeed/data/netspeed.conf)
 add_subdirectory (netspeed)
 
 ############# NETWORK_MONITOR #################
+set (with_network_monitor "no")
 if ("${enable-network-monitor}" STREQUAL "yes")
 	set (GETTEXT_NETWORK_MONITOR ${GETTEXT_PLUGINS})
-	set (VERSION_NETWORK_MONITOR "0.2.2")
+	set (VERSION_NETWORK_MONITOR "0.2.3")
 	set (PACKAGE_NETWORK_MONITOR "cd-network-monitor")
+	set (with_network_monitor "yes")
 	set (network_monitordatadir "${pluginsdatadir}/Network-Monitor")
 	configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Network-Monitor/data/Network-Monitor.conf.in ${CMAKE_CURRENT_BINARY_DIR}/Network-Monitor/data/Network-Monitor.conf)
 	add_subdirectory (Network-Monitor)
@@ -427,7 +579,7 @@
 
 ############# POWERMANAGER #################
 set (GETTEXT_POWERMANAGER ${GETTEXT_PLUGINS})
-set (VERSION_POWERMANAGER "1.3.3")
+set (VERSION_POWERMANAGER "1.3.4")
 set (PACKAGE_POWERMANAGER "cd-powermanager")
 set (powermanagerdatadir "${pluginsdatadir}/powermanager")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/powermanager/data/powermanager.conf.in ${CMAKE_CURRENT_BINARY_DIR}/powermanager/data/powermanager.conf)
@@ -435,25 +587,50 @@
 
 ############# QUICK BROWSER #################
 set (GETTEXT_QUICK_BROWSER ${GETTEXT_PLUGINS})
-set (VERSION_QUICK_BROWSER "1.0.7")
+set (VERSION_QUICK_BROWSER "1.0.8")
 set (PACKAGE_QUICK_BROWSER "cd-quick-browser")
 set (quick_browserdatadir "${pluginsdatadir}/quick_browser")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/quick-browser/data/quick-browser.conf.in ${CMAKE_CURRENT_BINARY_DIR}/quick-browser/data/quick-browser.conf)
 add_subdirectory (quick-browser)
 
+############# RECENT-EVENTS #################
+set (with_recent_events "no")
+pkg_check_modules (RECENT_EVENTS zeitgeist-1.0)
+if ("${RECENT_EVENTS_FOUND}" STREQUAL "")
+	message (STATUS "Could not find libzeitgeist; Cairo-Dock won't be built with Zeitgeist support.")
+else()
+	set (GETTEXT_RECENT_EVENTS ${GETTEXT_PLUGINS})
+	set (VERSION_RECENT_EVENTS "0.0.2")
+	set (PACKAGE_RECENT_EVENTS "cd-Recent-Events")
+	set (with_recent_events "yes")
+	set (recent_eventsdatadir "${pluginsdatadir}/Recent-Events")
+	configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Recent-Events/data/Recent-Events.conf.in ${CMAKE_CURRENT_BINARY_DIR}/Recent-Events/data/Recent-Events.conf)
+	add_subdirectory ("Recent-Events")
+endif()
+
+############# REMOTE_CONTROL #################
+set (GETTEXT_REMOTE_CONTROL ${GETTEXT_PLUGINS})
+set (VERSION_REMOTE_CONTROL "0.0.2")
+set (PACKAGE_REMOTE_CONTROL "cd-Remote-Control")
+set (remote_controldatadir "${pluginsdatadir}/Remote-Control")
+configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Remote-Control/data/Remote-Control.conf.in ${CMAKE_CURRENT_BINARY_DIR}/Remote-Control/data/Remote-Control.conf)
+add_subdirectory (Remote-Control)
+
 ############# RSSREADER #################
 set (GETTEXT_RSS_READER ${GETTEXT_PLUGINS})
-set (VERSION_RSS_READER "1.0.2")
+set (VERSION_RSS_READER "1.0.3")
 set (PACKAGE_RSS_READER "cd-rssreader")
 set (rss_readerdatadir "${pluginsdatadir}/RSSreader")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/RSSreader/data/RSSreader.conf.in ${CMAKE_CURRENT_BINARY_DIR}/RSSreader/data/RSSreader.conf)
 add_subdirectory (RSSreader)
 
 ############# SCOOBY_DO #################
+set (with_scooby_do "no")
 if ("${enable-scooby-do}" STREQUAL "yes")
 	set (GETTEXT_SCOOBY_DO ${GETTEXT_PLUGINS})
-	set (VERSION_SCOOBY_DO "0.1.0")
+	set (VERSION_SCOOBY_DO "0.1.1")
 	set (PACKAGE_SCOOBY_DO "cd-scooby-do")
+	set (with_scooby_do "yes")
 	set (scooby_dodatadir "${pluginsdatadir}/Scooby-Do")
 	configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Scooby-Do/data/Scooby-Do.conf.in ${CMAKE_CURRENT_BINARY_DIR}/Scooby-Do/data/Scooby-Do.conf)
 	add_subdirectory (Scooby-Do)
@@ -461,19 +638,21 @@
 
 ############# SHORTCUTS #################
 set (GETTEXT_SHORTCUTS ${GETTEXT_PLUGINS})
-set (VERSION_SHORTCUTS "1.3.0")
+set (VERSION_SHORTCUTS "1.3.1")
 set (PACKAGE_SHORTCUTS "cd-shortcuts")
 set (shortcutsdatadir "${pluginsdatadir}/shortcuts")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/shortcuts/data/shortcuts.conf.in ${CMAKE_CURRENT_BINARY_DIR}/shortcuts/data/shortcuts.conf)
 add_subdirectory (shortcuts)
 
 ############# SHOW DESKTOP #################
+set (with_xrandr "yes")
 pkg_check_modules (SHOW_DESKTOP_XRANDR xrandr)
 if ("${SHOW_DESKTOP_XRANDR_FOUND}" STREQUAL "")
 	message (STATUS "Could not find xrandr; ShowDesktop won't be built with screen resolution abilities.")
+	set (with_xrandr "no")
 endif()
 set (GETTEXT_SHOW_DESKTOP ${GETTEXT_PLUGINS})
-set (VERSION_SHOW_DESKTOP "1.2.2")
+set (VERSION_SHOW_DESKTOP "1.2.3")
 set (PACKAGE_SHOW_DESKTOP "cd-showDesktop")
 set (show_desktopdatadir "${pluginsdatadir}/showDesktop")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/showDesktop/data/showDesktop.conf.in ${CMAKE_CURRENT_BINARY_DIR}/showDesktop/data/showDesktop.conf)
@@ -481,19 +660,21 @@
 
 ############# SHOW MOUSE #################
 set (GETTEXT_SHOW_MOUSE ${GETTEXT_PLUGINS})
-set (VERSION_SHOW_MOUSE "1.0.3")
+set (VERSION_SHOW_MOUSE "1.0.4")
 set (PACKAGE_SHOW_MOUSE "cd-show_mouse")
 set (show_mousedatadir "${pluginsdatadir}/show_mouse")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/show-mouse/data/show_mouse.conf.in ${CMAKE_CURRENT_BINARY_DIR}/show-mouse/data/show_mouse.conf)
 add_subdirectory (show-mouse)
 
 ############# SLIDER #################
+set (with_exif "yes")
 pkg_check_modules (EXIF libexif)
 if ("${EXIF_FOUND}" STREQUAL "")
 	message (STATUS "Could not find libexif; Slider won't be able to rotate the images accordingly to their exif data.")
+	set (with_exif "no")
 endif()
 set (GETTEXT_SLIDER ${GETTEXT_PLUGINS})
-set (VERSION_SLIDER "2.0.6")
+set (VERSION_SLIDER "2.0.8")
 set (PACKAGE_SLIDER "cd-slider")
 set (sliderdatadir "${pluginsdatadir}/slider")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/slider/data/slider.conf.in ${CMAKE_CURRENT_BINARY_DIR}/slider/data/slider.conf)
@@ -501,21 +682,22 @@
 
 ############# STACK #################
 set (GETTEXT_STACK ${GETTEXT_PLUGINS})
-set (VERSION_STACK "0.3.0")
+set (VERSION_STACK "0.3.1")
 set (PACKAGE_STACK "cd-stack")
 set (stackdatadir "${pluginsdatadir}/stack")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/stack/data/stack.conf.in ${CMAKE_CURRENT_BINARY_DIR}/stack/data/stack.conf)
 add_subdirectory (stack)
 
 ############# STATUS NOTIFIER #################
+set (with_status_notifier "no")
 if ("${enable-status-notifier}" STREQUAL "yes")
-	pkg_check_modules (STATUS_NOTIFIER dbusmenu-gtk)
-	if ("${STATUS_NOTIFIER_FOUND}" STREQUAL "")
+	if ("${DBUSMENU_GTK_FOUND}" STREQUAL "")
 		message (STATUS "Could not find Status-Notifier libs; Cairo-Dock won't be built with Status-Notifier support.")
 	else()
 		set (GETTEXT_STATUS_NOTIFIER ${GETTEXT_PLUGINS})
-		set (VERSION_STATUS_NOTIFIER "0.1.0")
+		set (VERSION_STATUS_NOTIFIER "0.1.1")
 		set (PACKAGE_STATUS_NOTIFIER "cd-status-notifier")
+		set (with_status_notifier "yes")
 		set (status_notifierdatadir "${pluginsdatadir}/Status-Notifier")
 		configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Status-Notifier/data/Status-Notifier.conf.in ${CMAKE_CURRENT_BINARY_DIR}/Status-Notifier/data/Status-Notifier.conf)
 		add_subdirectory (Status-Notifier)
@@ -524,15 +706,21 @@
 
 ############# SWITCHER #################
 set (GETTEXT_SWITCHER ${GETTEXT_PLUGINS})
-set (VERSION_SWITCHER "2.1.4")
+set (VERSION_SWITCHER "2.1.5")
 set (PACKAGE_SWITCHER "cd-switcher")
 set (switcherdatadir "${pluginsdatadir}/switcher")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/switcher/data/switcher.conf.in ${CMAKE_CURRENT_BINARY_DIR}/switcher/data/switcher.conf)
 add_subdirectory (switcher)
 
 ############# SYSTEM MONITOR #################
+set (with_sensors "yes")
+find_package (Sensors)
+if (NOT "${SENSORS_FOUND}" STREQUAL "TRUE")
+	message (STATUS "Could not find libsensors; System-Monitor won't be able to monitor fan speed and CPU temperature.")
+	set (with_sensors "no")
+endif()
 set (GETTEXT_SYSTEM_MONITOR ${GETTEXT_PLUGINS})
-set (VERSION_SYSTEM_MONITOR "1.0.5")
+set (VERSION_SYSTEM_MONITOR "1.0.6")
 set (PACKAGE_SYSTEM_MONITOR "cd-system-monitor")
 set (system_monitordatadir "${pluginsdatadir}/System-monitor")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/System-Monitor/data/System-Monitor.conf.in ${CMAKE_CURRENT_BINARY_DIR}/System-Monitor/data/System-Monitor.conf)
@@ -540,7 +728,7 @@
 
 ############# SYSTRAY #################
 set (GETTEXT_SYSTRAY ${GETTEXT_PLUGINS})
-set (VERSION_SYSTRAY "0.2.1")
+set (VERSION_SYSTRAY "0.2.2")
 set (PACKAGE_SYSTRAY "cd-systray")
 set (systraydatadir "${pluginsdatadir}/systray")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/systray/data/systray.conf.in ${CMAKE_CURRENT_BINARY_DIR}/systray/data/systray.conf)
@@ -550,18 +738,20 @@
 pkg_check_modules (TERMINAL_PACKAGE vte)
 if ("${TERMINAL_PACKAGE_FOUND}" STREQUAL "")
 	message (STATUS "Could not find libvte; Cairo-Dock won't be built with terminal applet.")
+	set (with_terminal "no")
 else()
 	set (GETTEXT_TERMINAL ${GETTEXT_PLUGINS})
-	set (VERSION_TERMINAL "1.0.9")
+	set (VERSION_TERMINAL "1.0.10")
 	set (PACKAGE_TERMINAL "cd-terminal")
+	set (with_terminal "yes")
 	set (terminaldatadir "${pluginsdatadir}/terminal")
 	configure_file (${CMAKE_CURRENT_SOURCE_DIR}/terminal/data/terminal.conf.in ${CMAKE_CURRENT_BINARY_DIR}/terminal/data/terminal.conf)
 	add_subdirectory (terminal)
 endif()
 
-############# OY #################
+############# TOMBOY #################
 set (GETTEXT_TOMBOY ${GETTEXT_PLUGINS})
-set (VERSION_TOMBOY "1.3.0")
+set (VERSION_TOMBOY "1.3.1")
 set (PACKAGE_TOMBOY "cd-tomboy")
 set (tomboydatadir "${pluginsdatadir}/tomboy")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/tomboy/data/tomboy.conf.in ${CMAKE_CURRENT_BINARY_DIR}/tomboy/data/tomboy.conf)
@@ -569,7 +759,7 @@
 
 ############# TOONS #################
 set (GETTEXT_TOONS ${GETTEXT_PLUGINS})
-set (VERSION_TOONS "1.0.7")
+set (VERSION_TOONS "1.0.8")
 set (PACKAGE_TOONS "cd-Toons")
 set (toonsdatadir "${pluginsdatadir}/Toons")
 set (toonsuserdirname "Toons")
@@ -578,7 +768,7 @@
 
 ############# WEATHER #################
 set (GETTEXT_WEATHER ${GETTEXT_PLUGINS})
-set (VERSION_WEATHER "1.2.9")
+set (VERSION_WEATHER "1.2.10")
 set (PACKAGE_WEATHER "cd-weather")
 set (weatherdatadir "${pluginsdatadir}/weather")
 set (weatheruserdirname "weather")
@@ -586,15 +776,17 @@
 add_subdirectory (weather)
 
 ############# WEBLETS #################
-pkg_check_modules (WEBKIT webkit-1.0)
-if (NOT "${enable_weblets}" STREQUAL "no")
+set (with_weblets "no")
+if (NOT "${enable-weblets}" STREQUAL "no")
+	pkg_check_modules (WEBKIT webkit-1.0)
 	if ("${WEBKIT_FOUND}" STREQUAL "")
 		message (STATUS "Could not find webkit-1.0; Cairo-Dock won't be built with Weblets applet.")
 	else()
 		set (GETTEXT_WEBLETS ${GETTEXT_PLUGINS})
-		set (VERSION_WEBLETS "0.0.9")
+		set (VERSION_WEBLETS "0.0.10")
 		set (PACKAGE_WEBLETS "cd-weblets")
 		set (webletsdatadir "${pluginsdatadir}/weblets")
+		set (with_weblets "yes")
 		configure_file (${CMAKE_CURRENT_SOURCE_DIR}/weblets/data/weblets.conf.in ${CMAKE_CURRENT_BINARY_DIR}/weblets/data/weblets.conf)
 		add_subdirectory ("weblets")
 	endif()
@@ -602,21 +794,23 @@
 
 ############# WIFI #################
 set (GETTEXT_WIFI ${GETTEXT_PLUGINS})
-set (VERSION_WIFI "1.2.5")
+set (VERSION_WIFI "1.2.6")
 set (PACKAGE_WIFI "cd-wifi")
 set (wifidatadir "${pluginsdatadir}/wifi")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/wifi/data/wifi.conf.in ${CMAKE_CURRENT_BINARY_DIR}/wifi/data/wifi.conf)
 add_subdirectory (wifi)
 
 ############# XFCE-INTEGRATION #################
-if (NOT "${enable_xfce_integration}" STREQUAL "no")
+set (with_xfce_integration "no")
+if (NOT "${enable-xfce-integration}" STREQUAL "no")
 	pkg_check_modules (XFCE_INTEGRATION_THUNAR thunar-vfs-1)
 	pkg_check_modules (XFCE_INTEGRATION_GVFS gio-2.0)
 	if ("${XFCE_INTEGRATION_THUNAR_FOUND}" STREQUAL "" AND "${XFCE_INTEGRATION_GVFS_FOUND}" STREQUAL "")
 		message (STATUS "Could find neither thunar-vfs or libgio-2.0; Cairo-Dock won't be built with XFCE support.")
 	else()
-		set (VERSION_XFCE_INTEGRATION "1.0.2")
+		set (VERSION_XFCE_INTEGRATION "1.0.3")
 		set (PACKAGE_XFCE_INTEGRATION "cd_xfce-integration")
+		set (with_xfce_integration "yes")
 		set (xfce_integrationdatadir "${pluginsdatadir}/xfce-integration")
 		add_subdirectory ("xfce-integration")
 	endif()
@@ -626,23 +820,53 @@
 pkg_check_modules (XGAMMA_PACKAGE x11 xxf86vm)
 if ("${XGAMMA_PACKAGE_FOUND}" STREQUAL "")
 	message (STATUS "Could not find xxf86vm; Cairo-Dock won't be built with Xgamma applet.")
+	set (with_xgamma "no")
 else()
 	set (GETTEXT_XGAMMA ${GETTEXT_PLUGINS})
-	set (VERSION_XGAMMA "1.1.5")
+	set (VERSION_XGAMMA "1.2.0")
 	set (PACKAGE_XGAMMA "cd-Xgamma")
+	set (with_xgamma "yes")
 	set (xgammadatadir "${pluginsdatadir}/Xgamma")
 	configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Xgamma/data/Xgamma.conf.in ${CMAKE_CURRENT_BINARY_DIR}/Xgamma/data/Xgamma.conf)
 	add_subdirectory ("Xgamma")
 endif()
 
+message ("")
+message (STATUS "===============")
+message (STATUS "Language build:")
+message (STATUS "===============")
+message ("")
 add_subdirectory (po)
 
-############# REMOTE_CONTROL #################
-if ("${enable_remote_control}" STREQUAL "yes")
-	set (GETTEXT_REMOTE_CONTROL ${GETTEXT_PLUGINS})
-	set (VERSION_REMOTE_CONTROL "0.0.1")
-	set (PACKAGE_REMOTE_CONTROL "cd-Remote-Control")
-	set (remote_controldatadir "${pluginsdatadir}/Remote-Control")
-	configure_file (Remote-Control/data/Remote-Control.conf.in ${CMAKE_CURRENT_SOURCE_DIR}/Remote-Control/data/Remote-Control.conf)
-	add_subdirectory (Remote-Control)
-endif()
+message ("")
+message (STATUS "===============")
+message (STATUS "Plug-ins build:")
+message (STATUS "===============")
+message ("")
+message (STATUS " - with Alsa-Mixer applet:         ${with_alsa}")
+message (STATUS " - with iCal support:              ${with_ical}")
+message (STATUS " - with Disks applet:              ${with_disks}")
+message (STATUS " - with Doncky applet:             ${with_doncky}")
+message (STATUS " - with GMenu applet:              ${with_gmenu}")
+message (STATUS " - with Gnome support:             ${with_gnome_integration}")
+message (STATUS " - with old Gnome support:         ${with_gnome_integration_old}")
+message (STATUS " - with KDE support:               ${with_kde_integration}")
+message (STATUS " - with XFCE support:              ${with_xfce_integration}")
+message (STATUS " - with Keyboard-indicator applet: ${with_keyboard_indicator}")
+message (STATUS " - with Mail applet:               ${with_mail}")
+message (STATUS " - with Me-Menu applet:            ${with_me_menu}")
+message (STATUS " - with Messaging-Menu:            ${with_messaging_menu}")
+message (STATUS " - with Network-Monitor applet:    ${with_network_monitor}")
+message (STATUS " - with Scooby-Do applet:          ${with_scooby_do}")
+message (STATUS " - with Screen Resolution support: ${with_xrandr}")
+message (STATUS " - with Status-Notifier applet:    ${with_status_notifier}")
+message (STATUS " - with Sensors support:           ${with_sensors}")
+message (STATUS " - with Terminal applet:           ${with_terminal}")
+message (STATUS " - with Weblets applet:            ${with_weblets}")
+message (STATUS " - with Xgamma applet:             ${with_xgamma}")
+message (STATUS " - with Recent-Events applet:      ${with_recent_events}")
+message (STATUS " - with Python interface:          ${with_python}")
+message (STATUS " - with Ruby interface:            ${with_ruby}")
+message (STATUS " - with Mono interface:            ${with_mono}")
+message (STATUS " - with Vala interface:            ${with_vala}")
+message (STATUS " - with Vala Translator (valac) :  ${with_valac}")

=== modified file 'Cairo-Penguin/data/Cairo-Penguin.conf.in'
--- Cairo-Penguin/data/Cairo-Penguin.conf.in	2010-09-07 00:39:20 +0000
+++ Cairo-Penguin/data/Cairo-Penguin.conf.in	2011-02-23 23:29:29 +0000
@@ -2,16 +2,25 @@
 
 #[gtk-about]
 [Icon]
+
+#F[Applet]
+frame_maininfo=
+
+#d Name of the dock it belongs to:
+dock name = 
+
+#s Name of the icon as it will appear in its caption in the dock:
+name = 
+
+#F[Display]
+frame_display=
+
+icon =
+
 #j+[0;128] Icon size for busy penguin:
 #{Set to 0 to use the default applet size}
 icon size = 0;0
 
-#s Icon name for busy penguin:
-name = 
-
-#d Name of the dock it belongs to:
-dock name = 
-
 order = 
 
 #F[Applet's Handbook]
@@ -25,7 +34,7 @@
 #h+[@cairo_penguindatadir@/themes;@cairo_penguinuserdirname@;Cairo-Penguin] Choose one of the available themes:/
 theme = Classic
 
-#i Delay between animation changes :
+#i[4;30] Delay between animation changes :
 #{in seconds.}
 change delay = 8
 

=== modified file 'Cairo-Penguin/src/applet-animation.c'
--- Cairo-Penguin/src/applet-animation.c	2010-08-07 01:43:25 +0000
+++ Cairo-Penguin/src/applet-animation.c	2011-02-23 23:29:29 +0000
@@ -201,7 +201,7 @@
 		cairo_dock_get_icon_extent (myIcon, myContainer, &iIconWidth, &iIconHeight);
 		
 		g_return_if_fail (pAnimation->iTexture != 0);
-		double f = (1 + g_fAmplitude) / fScale;
+		double f = (1 + myIconsParam.fAmplitude) / fScale;
 		double x, y;  // centre du pingouin, en coordonnées absolues.
 		x = myData.iCurrentPositionX - iXMin - iIconWidth/2 + pAnimation->iFrameWidth/2*f;
 		y = myData.iCurrentPositionY + pAnimation->iFrameHeight/2*f;
@@ -235,7 +235,7 @@
 		if (pSurface != NULL)
 		{
 			cairo_save (myDrawContext);
-			cairo_scale (myDrawContext, (1 + g_fAmplitude) / fScale, (1 + g_fAmplitude) / fScale);
+			cairo_scale (myDrawContext, (1 + myIconsParam.fAmplitude) / fScale, (1 + myIconsParam.fAmplitude) / fScale);
 			cairo_set_source_surface (
 				myDrawContext,
 				pSurface,
@@ -308,9 +308,9 @@
 		}
 	}
 	
-	if (myData.iCurrentPositionY < (myConfig.bFree ? myBackground.iDockLineWidth + myConfig.iGroundOffset : 0))
+	if (myData.iCurrentPositionY < (myConfig.bFree ? myDocksParam.iDockLineWidth + myConfig.iGroundOffset : 0))
 	{
-		myData.iCurrentPositionY = (myConfig.bFree ? myBackground.iDockLineWidth + myConfig.iGroundOffset : 0);
+		myData.iCurrentPositionY = (myConfig.bFree ? myDocksParam.iDockLineWidth + myConfig.iGroundOffset : 0);
 	}
 	else if (myData.iCurrentPositionY + pAnimation->iFrameHeight > iHeight)
 	{
@@ -340,7 +340,7 @@
 					cairo_surface_destroy (myIcon->pReflectionBuffer);
 					myIcon->pReflectionBuffer = NULL;
 				}
-					if (CAIRO_DOCK_CONTAINER_IS_OPENGL (myContainer))
+				if (CAIRO_DOCK_CONTAINER_IS_OPENGL (myContainer))
 					cairo_dock_update_icon_texture (myIcon);
 			}
 			else  // on reste sur la derniere image de l'animation de fin.
@@ -484,7 +484,7 @@
 			myData.iCurrentDirection = g_random_int_range (0, 2);  // [a;b[
 		else
 			myData.iCurrentDirection = 0;
-		myData.iCurrentPositionY = (myConfig.bFree ? myBackground.iDockLineWidth + myConfig.iGroundOffset : 0);
+		myData.iCurrentPositionY = (myConfig.bFree ? myDocksParam.iDockLineWidth + myConfig.iGroundOffset : 0);
 	}
 	else  // la direction reste la meme.
 	{
@@ -533,12 +533,12 @@
 	penguin_remove_notfications();
 	if (myConfig.bFree)
 	{
-		cairo_dock_register_notification_on_container (myContainer, CAIRO_DOCK_UPDATE_DOCK_SLOW, (CairoDockNotificationFunc) penguin_update_container, CAIRO_DOCK_RUN_AFTER, myApplet);
-		cairo_dock_register_notification_on_container (myContainer, CAIRO_DOCK_RENDER_DOCK, (CairoDockNotificationFunc) penguin_render_on_container, CAIRO_DOCK_RUN_AFTER, myApplet);
+		cairo_dock_register_notification_on_object (myContainer, NOTIFICATION_UPDATE_DOCK_SLOW, (CairoDockNotificationFunc) penguin_update_container, CAIRO_DOCK_RUN_AFTER, myApplet);
+		cairo_dock_register_notification_on_object (myContainer, NOTIFICATION_RENDER_DOCK, (CairoDockNotificationFunc) penguin_render_on_container, CAIRO_DOCK_RUN_AFTER, myApplet);
 	}
 	else
 	{
-		cairo_dock_register_notification_on_icon (myIcon, CAIRO_DOCK_UPDATE_ICON_SLOW, (CairoDockNotificationFunc) penguin_update_icon, CAIRO_DOCK_RUN_AFTER, myApplet);
+		cairo_dock_register_notification_on_object (myIcon, NOTIFICATION_UPDATE_ICON_SLOW, (CairoDockNotificationFunc) penguin_update_icon, CAIRO_DOCK_RUN_AFTER, myApplet);
 	}
 }
 
@@ -554,7 +554,7 @@
 		
 		if (myConfig.bFree)  // attention : c'est un hack moyen; il faudrait pouvoir indiquer a cairo-dock de ne pas inserer notre icone...
 		{
-			cairo_dock_detach_icon_from_dock (myIcon, myDock, myIcons.iSeparateIcons);
+			cairo_dock_detach_icon_from_dock (myIcon, myDock, myIconsParam.iSeparateIcons);
 			cairo_dock_update_dock_size (myDock);
 		}
 		else

=== modified file 'Cairo-Penguin/src/applet-animation.h'
--- Cairo-Penguin/src/applet-animation.h	2009-10-05 19:27:17 +0000
+++ Cairo-Penguin/src/applet-animation.h	2011-02-23 23:29:29 +0000
@@ -29,9 +29,9 @@
 #define penguin_is_resting(pAnimation) ((pAnimation) == NULL || (pAnimation)->iNbFrames <= 1 && (pAnimation)->iSpeed == 0)
 
 #define penguin_remove_notfications() do {\
-	cairo_dock_remove_notification_func_on_icon (myIcon, CAIRO_DOCK_UPDATE_ICON_SLOW, (CairoDockNotificationFunc) penguin_update_icon, myApplet);\
-	cairo_dock_remove_notification_func_on_container (CAIRO_CONTAINER (g_pMainDock), CAIRO_DOCK_UPDATE_DOCK_SLOW, (CairoDockNotificationFunc) penguin_update_container, myApplet);\
-	cairo_dock_remove_notification_func_on_container (CAIRO_CONTAINER (g_pMainDock), CAIRO_DOCK_RENDER_DOCK, (CairoDockNotificationFunc) penguin_render_on_container, myApplet); } while (0)
+	cairo_dock_remove_notification_func_on_object (myIcon, NOTIFICATION_UPDATE_ICON_SLOW, (CairoDockNotificationFunc) penguin_update_icon, myApplet);\
+	cairo_dock_remove_notification_func_on_object (myDock, NOTIFICATION_UPDATE_DOCK_SLOW, (CairoDockNotificationFunc) penguin_update_container, myApplet);\
+	cairo_dock_remove_notification_func_on_object (myDock, NOTIFICATION_RENDER_DOCK, (CairoDockNotificationFunc) penguin_render_on_container, myApplet); } while (0)
 
 void penguin_move_in_dock (CairoDockModuleInstance *myApplet);
 gboolean penguin_render_on_container (CairoDockModuleInstance *myApplet, CairoContainer *pContainer, cairo_t *pCairoContext);

=== modified file 'Cairo-Penguin/src/applet-init.c'
--- Cairo-Penguin/src/applet-init.c	2010-08-07 01:43:25 +0000
+++ Cairo-Penguin/src/applet-init.c	2011-02-23 23:29:29 +0000
@@ -47,23 +47,47 @@
 	
 	penguin_start_animating_with_delay (myApplet);
 	
-	cairo_dock_register_notification (CAIRO_DOCK_CLICK_ICON,
+	cairo_dock_register_notification_on_object (myContainer,
+		NOTIFICATION_CLICK_ICON,
 		(CairoDockNotificationFunc) CD_APPLET_ON_CLICK_FUNC,
 		CAIRO_DOCK_RUN_FIRST,
 		myApplet);
-	cairo_dock_register_notification (CAIRO_DOCK_MIDDLE_CLICK_ICON,
+	cairo_dock_register_notification_on_object (myContainer,
+		NOTIFICATION_MIDDLE_CLICK_ICON,
 		(CairoDockNotificationFunc) CD_APPLET_ON_MIDDLE_CLICK_FUNC,
 		CAIRO_DOCK_RUN_FIRST,
 		myApplet);
-	CD_APPLET_REGISTER_FOR_BUILD_MENU_EVENT;
+	cairo_dock_register_notification_on_object (myContainer,
+		NOTIFICATION_BUILD_ICON_MENU,
+		(CairoDockNotificationFunc) CD_APPLET_ON_BUILD_MENU_FUNC,
+		CAIRO_DOCK_RUN_FIRST,
+		myApplet);
+	cairo_dock_register_notification_on_object (myDock,
+		NOTIFICATION_STOP_DOCK,
+		(CairoDockNotificationFunc) cd_on_dock_destroyed,
+		CAIRO_DOCK_RUN_AFTER,
+		myApplet);
 CD_APPLET_INIT_END
 
 
 CD_APPLET_STOP_BEGIN
 	//\_______________ On se desabonne de nos notifications.
-	CD_APPLET_UNREGISTER_FOR_CLICK_EVENT;
-	CD_APPLET_UNREGISTER_FOR_MIDDLE_CLICK_EVENT;
-	CD_APPLET_UNREGISTER_FOR_BUILD_MENU_EVENT;
+	cairo_dock_remove_notification_func_on_object (myContainer,
+		NOTIFICATION_CLICK_ICON,
+		(CairoDockNotificationFunc) CD_APPLET_ON_CLICK_FUNC,
+		myApplet);
+	cairo_dock_remove_notification_func_on_object (myContainer,
+		NOTIFICATION_MIDDLE_CLICK_ICON,
+		(CairoDockNotificationFunc) CD_APPLET_ON_MIDDLE_CLICK_FUNC,
+		myApplet);
+	cairo_dock_remove_notification_func_on_object (myContainer,
+		NOTIFICATION_BUILD_ICON_MENU,
+		(CairoDockNotificationFunc) CD_APPLET_ON_BUILD_MENU_FUNC,
+		myApplet);
+	cairo_dock_remove_notification_func_on_object (myDock,
+		NOTIFICATION_STOP_DOCK,
+		(CairoDockNotificationFunc) cd_on_dock_destroyed,
+		myApplet);
 	penguin_remove_notfications();
 	
 	if (myData.iSidRestartDelayed != 0)
@@ -94,7 +118,7 @@
 			area.x = (myDock->container.iWidth - myDock->fFlatDockWidth) / 2 + myData.iCurrentPositionX;
 			area.y = myDock->container.iHeight - myData.iCurrentPositionY - pAnimation->iFrameHeight;
 			area.width = pAnimation->iFrameWidth;
-			area.height = pAnimation->iFrameHeight + myDock->container.bUseReflect * g_fReflectSize;
+			area.height = pAnimation->iFrameHeight + myDock->container.bUseReflect * myIconsParam.fReflectSize;
 			gdk_window_invalidate_rect (myContainer->pWidget->window, &area, FALSE);
 		}
 		
@@ -106,7 +130,7 @@
 		//\_______________ On libere le pingouin ou au contraire on le cloisonne.
 		if (myConfig.bFree)
 		{
-			cairo_dock_detach_icon_from_dock (myIcon, myDock, myIcons.iSeparateIcons);
+			cairo_dock_detach_icon_from_dock (myIcon, myDock, myIconsParam.iSeparateIcons);
 			cairo_dock_update_dock_size (myDock);
 		}
 		else

=== modified file 'Cairo-Penguin/src/applet-notifications.c'
--- Cairo-Penguin/src/applet-notifications.c	2010-09-07 00:39:20 +0000
+++ Cairo-Penguin/src/applet-notifications.c	2011-02-23 23:29:29 +0000
@@ -49,7 +49,7 @@
 	
 	if ((myConfig.bFree && pClickedContainer == myContainer && myDock->container.iMouseX >  (myDock->container.iWidth - myDock->fFlatDockWidth) / 2 + myData.iCurrentPositionX && myDock->container.iMouseX < (myDock->container.iWidth - myDock->fFlatDockWidth) / 2 +  myData.iCurrentPositionX + pAnimation->iFrameWidth && myDock->container.iMouseY > myContainer->iHeight - myData.iCurrentPositionY - pAnimation->iFrameHeight && myDock->container.iMouseY < myContainer->iHeight - myData.iCurrentPositionY) || (! myConfig.bFree && pClickedIcon == myIcon))
 	{
-		myData.iCurrentPositionY = (myConfig.bFree ? g_iDockLineWidth : 0);
+		myData.iCurrentPositionY = (myConfig.bFree ? myDocksParam.iDockLineWidth : 0);
 		PenguinAnimation *pAnimation = penguin_get_current_animation ();
 		int iNewAnimation;
 		int iRandom = g_random_int_range (0, 4);
@@ -81,13 +81,13 @@
 		g_source_remove (myData.iSidRestartDelayed);
 		myData.iSidRestartDelayed = 0;
 	}
-	cairo_dock_remove_notification_func_on_container (myContainer, CAIRO_DOCK_UPDATE_DOCK_SLOW, (CairoDockNotificationFunc) penguin_update_container, myApplet);
-	cairo_dock_remove_notification_func_on_icon (myIcon, CAIRO_DOCK_UPDATE_ICON_SLOW, (CairoDockNotificationFunc) penguin_update_icon, myApplet);
+	cairo_dock_remove_notification_func_on_object (myContainer, NOTIFICATION_UPDATE_DOCK_SLOW, (CairoDockNotificationFunc) penguin_update_container, myApplet);
+	cairo_dock_remove_notification_func_on_object (myIcon, NOTIFICATION_UPDATE_ICON_SLOW, (CairoDockNotificationFunc) penguin_update_icon, myApplet);
 	
 	//\_______________ On met l'animation de repos et on la dessine.
 	int iNewAnimation = penguin_choose_resting_animation (myApplet);
 	penguin_set_new_animation (myApplet, iNewAnimation);
-	myData.iCurrentPositionY = (myConfig.bFree ? g_iDockLineWidth : 0);
+	myData.iCurrentPositionY = (myConfig.bFree ? myDocksParam.iDockLineWidth : 0);
 	if (myConfig.bFree)
 	{
 		penguin_move_in_dock (myApplet);
@@ -112,7 +112,7 @@
 		if (pClickedIcon != myIcon && ! (CAIRO_DOCK_IS_APPLET (pClickedIcon) && pClickedIcon->pModuleInstance->pModule == myIcon->pModuleInstance->pModule))
 		{
 			cd_debug ("%s\n", myApplet->cConfFilePath);
-			cairo_dock_notify (CAIRO_DOCK_BUILD_ICON_MENU, myIcon, myContainer, CD_APPLET_MY_MENU);
+			cairo_dock_notify_on_object (myContainer, NOTIFICATION_BUILD_ICON_MENU, myIcon, myContainer, CD_APPLET_MY_MENU);
 			CD_APPLET_LEAVE (CAIRO_DOCK_INTERCEPT_NOTIFICATION);
 		}
 		
@@ -184,3 +184,10 @@
 			}
 		}
 CD_APPLET_ON_MIDDLE_CLICK_END
+
+
+gboolean cd_on_dock_destroyed (CairoDockModuleInstance *myApplet, CairoDock *pDock)
+{
+	cairo_dock_deactivate_module_and_unload (myApplet->pModule->pVisitCard->cModuleName);
+	return CAIRO_DOCK_LET_PASS_NOTIFICATION;
+}

=== modified file 'Cairo-Penguin/src/applet-notifications.h'
--- Cairo-Penguin/src/applet-notifications.h	2009-08-26 21:07:39 +0000
+++ Cairo-Penguin/src/applet-notifications.h	2011-02-23 23:29:29 +0000
@@ -17,7 +17,6 @@
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-
 #ifndef __APPLET_NOTIFICATIONS__
 #define  __APPLET_NOTIFICATIONS__
 
@@ -25,12 +24,13 @@
 #include <cairo-dock.h>
 
 
-
 CD_APPLET_ON_CLICK_H
 
 CD_APPLET_ON_BUILD_MENU_H
 
 CD_APPLET_ON_MIDDLE_CLICK_H
 
+gboolean cd_on_dock_destroyed (CairoDockModuleInstance *myApplet, CairoDock *pDock);
+
 
 #endif

=== modified file 'Clipper/data/Clipper.conf.in'
--- Clipper/data/Clipper.conf.in	2010-09-07 00:39:20 +0000
+++ Clipper/data/Clipper.conf.in	2011-02-23 23:29:29 +0000
@@ -2,19 +2,26 @@
 
 #[gtk-about]
 [Icon]
-#j+[0;128] Desired icon size for this applet
-#{Set to 0 to use the default applet size}
-icon size = 0;0
+
+#F[Applet]
+frame_maininfo=
+
+#d Name of the dock it belongs to:
+dock name = 
 
 #s Name of the icon as it will appear in its caption in the dock:
-name = Clipper
+name = Clipboard
+
+#F[Display]
+frame_display=
 
 #S+ Image filename:
 #{Leave empty to use the default one.}
 icon = 
 
-#d Name of the dock it belongs to:
-dock name = 
+#j+[0;128] Desired icon size for this applet
+#{Set to 0 to use the default applet size}
+icon size = 0;0
 
 order=
 
@@ -136,7 +143,7 @@
 #F[Actions;gtk-execute]
 frame_act =
 
-#b Enable actions?
+#B[2] Enable actions?
 #{If some actions are associated with an item, they will be proposed when the item is created.}
 enable actions = false
 

=== modified file 'Clipper/src/applet-clipboard.c'
--- Clipper/src/applet-clipboard.c	2010-08-07 01:43:25 +0000
+++ Clipper/src/applet-clipboard.c	2011-02-23 23:29:29 +0000
@@ -23,7 +23,7 @@
 #include "applet-struct.h"
 #include "applet-clipboard.h"
 
-const gchar *cEnvName[4] = {NULL, "gnome", "kde", "xfce"};
+const gchar *cEnvName[4] = {"other", "gnome", "kde", "xfce"};  // "other" allows to handle all the other DE (put your own actions into the corresponding file).
 
 static int _cd_clipper_compare_item (CDClipperItem *pItem1, CDClipperItem *pItem2)
 {

=== modified file 'Clipper/src/applet-notifications.c'
--- Clipper/src/applet-notifications.c	2010-09-07 00:39:20 +0000
+++ Clipper/src/applet-notifications.c	2011-02-23 23:29:29 +0000
@@ -35,7 +35,8 @@
 	else
 	{
 		GtkWidget *pMenu = cd_clipper_build_items_menu ();
-		cairo_dock_popup_menu_on_icon (pMenu, myIcon, myContainer);
+		CD_APPLET_POPUP_MENU_ON_MY_ICON (pMenu);
+		gtk_menu_shell_select_first (GTK_MENU_SHELL (pMenu), FALSE);  // must be done here, after the menu has been realized.
 	}
 CD_APPLET_ON_CLICK_END
 
@@ -103,7 +104,7 @@
 	else
 	{
 		GtkWidget *pMenu = cd_clipper_build_persistent_items_menu ();
-		cairo_dock_popup_menu_on_icon (pMenu, myIcon, myContainer);
+		CD_APPLET_POPUP_MENU_ON_MY_ICON (pMenu);
 	}
 CD_APPLET_ON_MIDDLE_CLICK_END
 

=== modified file 'Dbus/CMakeLists.txt'
--- Dbus/CMakeLists.txt	2010-08-07 01:43:25 +0000
+++ Dbus/CMakeLists.txt	2011-02-23 23:29:29 +0000
@@ -1,15 +1,5 @@
 
 add_subdirectory(src)
 add_subdirectory(data)
-
-
-########### install files ###############
-
-
-
-
-#original Makefile.am contents follow:
-
-##dnl Process this file with automake to produce Makefile.in
-#
-#SUBDIRS = . src data
+add_subdirectory(interfaces)
+

=== modified file 'Dbus/data/Dbus.conf.in' (properties changed: +x to -x)
--- Dbus/data/Dbus.conf.in	2010-08-07 01:43:25 +0000
+++ Dbus/data/Dbus.conf.in	2011-02-23 23:29:29 +0000
@@ -35,8 +35,3 @@
 
 #b Let extern applications animate icons?
 enable animate icon = true
-
-#b Let extern applications register new module?
-enable new module = true
-
-modules=
\ No newline at end of file

=== modified file 'Dbus/data/icon.svg' (properties changed: +x to -x)
=== modified file 'Dbus/demos/demo_bash/demo_bash'
--- Dbus/demos/demo_bash/demo_bash	2010-08-07 01:43:25 +0000
+++ Dbus/demos/demo_bash/demo_bash	2011-02-23 23:29:29 +0000
@@ -1,12 +1,8 @@
 #!/usr/bin/python
 
 # This is a part of the external demo applet for Cairo-Dock
-#
-# Copyright : (C) 2010 by Nochka85
-#                      modified by matttbe for the new API
-#                      (based on the demo.py by Fabounet)
-# E-mail : nochka85@xxxxxxxxxxxx
-#
+# Copyright : (C) 2010-2011 by Nochka85, Fabounet and atttbe
+# E-mail : fabounet@xxxxxxxxxxxx
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -15,100 +11,21 @@
 #
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# ERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 # GNU General Public License for more details.
 # http://www.gnu.org/licenses/licenses.html#GPL
 
-### We assume the name of this applet is "demo_bash"
-### This Python script (demo_bash) should be placed in a folder alongside with 3 files :
-### demo_bash.conf (the default config file), "icon" (the default icon of the applet) , "preview" (a preview of this applet) and demo_bash.sh (the script in bash, where you will place your code)
-
-### REV : 21/01/2010
-
-### import ###
-import sys
-import gobject
-import glib
-import gtk
-import dbus
-import os.path
-from dbus.mainloop.glib import DBusGMainLoop
-
-# get our applet on the bus
-app_folder = os.path.dirname(sys.argv[0])
-applet_name = os.path.basename(os.path.abspath("."))
-applet_path = "/org/cairodock/CairoDock/"+applet_name
-DBusGMainLoop(set_as_default=True)
-bus = dbus.SessionBus()
-try:
-	applet_object = bus.get_object("org.cairodock.CairoDock", applet_path)
-except dbus.DBusException:
-	print ">>> module '"+applet_name+"' can't be found on the bus, exit."
-	sys.exit(2)
-myIcon = dbus.Interface(applet_object, "org.cairodock.CairoDock.applet") 
-
-### we'll have a sub-dock, so we also get the sub-icons object ###
-#sub_icons_object = bus.get_object("org.cairodock.CairoDock", applet_path+"/sub_icons")
-#mySubIcons = dbus.Interface(sub_icons_object, "org.cairodock.CairoDock.subapplet") 
-
-### callbacks ###
-def action_on_click(iState):
-	return_from_bash = os.popen("cd " + app_folder + " && ./" + applet_name + ".sh " + " action_on_click").read().rstrip()
-	print return_from_bash
-	
-def action_on_middle_click():
-	return_from_bash = os.popen("cd " + app_folder + " && ./" + applet_name + ".sh " + " action_on_middle_click").read().rstrip()
-	print return_from_bash
-
-def action_on_scroll_icon(bUpOrDown):
-	if bUpOrDown:
-		return_from_bash = os.popen("cd " + app_folder + " && ./" + applet_name + ".sh " + " action_on_scroll_icon 0").read().rstrip()
-		print return_from_bash
-	else:
-		return_from_bash = os.popen("cd " + app_folder + " && ./" + applet_name + ".sh " + " action_on_scroll_icon 1").read().rstrip()
-		print return_from_bash
-
-def action_on_drop_data(sDataName):
-	return_from_bash = os.popen("cd " + app_folder + " && ./" + applet_name + ".sh " + " action_on_drop_data " + sDataName).read().rstrip()
-	print return_from_bash
-
-def action_on_init():
-	return_from_bash = os.popen("cd " + app_folder + " && ./" + applet_name + ".sh " + " action_on_init").read().rstrip()
-	print return_from_bash
-	
-def action_on_stop():
-	return_from_bash = os.popen("cd " + app_folder + " && ./" + applet_name + ".sh " + " action_on_stop").read().rstrip()
-	print return_from_bash
-	
-def action_on_reload(bConfigHasChanged):
-	if bConfigHasChanged:
-		return_from_bash = os.popen("cd " + app_folder + " && ./" + applet_name + ".sh " + " action_on_reload").read().rstrip()
-		print return_from_bash
-
-def action_on_build_menu():
-	return_from_bash = os.popen("cd " + app_folder + " && ./" + applet_name + ".sh " + " action_on_build_menu").read().rstrip()
-	print return_from_bash
-	
-def action_on_menu_select(iNumEntry):
-	return_from_bash = os.popen("cd " + app_folder + " && ./" + applet_name + ".sh " + " action_on_menu_select " + str(iNumEntry)).read().rstrip()
-	print return_from_bash
-
-### init ###
-def init():
-	# register to the notifications on our applet
-	myIcon.connect_to_signal("on_click", action_on_click)
-	myIcon.connect_to_signal("on_middle_click", action_on_middle_click)
-	myIcon.connect_to_signal("on_scroll", action_on_scroll_icon)
-	myIcon.connect_to_signal("on_drop_data", action_on_drop_data)
-	myIcon.connect_to_signal("on_init_module", action_on_init)
-	myIcon.connect_to_signal("on_stop_module", action_on_stop)
-	myIcon.connect_to_signal("on_reload_module", action_on_reload)
-	myIcon.connect_to_signal("on_build_menu", action_on_build_menu)
-	myIcon.connect_to_signal("on_menu_select", action_on_menu_select)
-
-### main ###
+# The name of this applet is "demo_bash"; it is placed in a folder named "demo_bash", with a file named "auto-load.conf" which describes it.
+# Copy this folder into ~/.config/cairo-dock/third-party to let the dock register it automatically.
+# In the folder we have :
+# - "demo_bash"         : this python script, without extension
+# - "demo_bash.sh"      : the script in bash, where you actually place your code
+# - "demo_bash.conf"    : the config file of the applet
+# - "auto-load.conf"    : the file describing the applet
+# - "icon"              : the default icon of the applet (optionnal)
+# - "preview"           : a preview of this applet (optionnal)
+
+from CDBashApplet import CDBashApplet
+
 if __name__ == '__main__':
-	init()
-	gtk.main()
-	stop()
-	sys.exit(0)
+	CDBashApplet().run()

=== modified file 'Dbus/demos/demo_bash/demo_bash.conf' (properties changed: +x to -x)
=== modified file 'Dbus/demos/demo_bash/demo_bash.sh'
--- Dbus/demos/demo_bash/demo_bash.sh	2010-08-07 01:43:25 +0000
+++ Dbus/demos/demo_bash/demo_bash.sh	2011-02-23 23:29:29 +0000
@@ -1,10 +1,10 @@
 #!/bin/bash
 
-# This is a part of the external demo applet for Cairo-Dock
+# This is a part of the external demo applets for Cairo-Dock
 #
-# Copyright : (C) 2010 by Nochka85
+# Copyright : (C) 2010-2011 by Nochka85
 #                      modified by matttbe for the new API
-#                      (based on the demo.py by Fabounet)
+#                      modified by Fabounet for the new interface
 # E-mail : nochka85@xxxxxxxxxxxx
 #
 #
@@ -15,168 +15,111 @@
 #
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# ERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 # GNU General Public License for more details.
 # http://www.gnu.org/licenses/licenses.html#GPL
 
-### This is a part of the external applet demo_bash.py for cairo-dock
+### This is a part of the external applet demo_bash for cairo-dock
 ### Author : Nochka85
 ### Contact : nochka85@xxxxxxxxxxxx
-### Rev : 21/01/2010
-
-DBUS_NAME="org.cairodock.CairoDock"
-DBUS_PATH="/org/cairodock/CairoDock"
-DBUS_INTERFACE="org.cairodock.CairoDock"
-COMMAND=$0
-SCRIPT_NAME=`basename $COMMAND`
-APP_NAME="`echo $SCRIPT_NAME | cut -f1 -d '.' `"
-ACTION=$1
-DROP_DATA=$2
-MENU_SELECT=$2
-SCROLL_UP=$2
-CONF_FILE="/home/$USER/.config/cairo-dock/current_theme/plug-ins/$APP_NAME/$APP_NAME.conf"
-
-#############################################################################################################
-get_conf_param() {
-LIGNE=`cat $CONF_FILE | grep "$1"`
-PARAM="`echo $LIGNE | cut -f2 -d '=' `"
-}
-
-#############################################################################################################
-get_ALL_conf_params() {
-
-get_conf_param "demo_text"
-demo_text="$PARAM"
-
-get_conf_param "demo_truefalse"
-demo_truefalse="$PARAM"
-
-get_conf_param "demo_value"
-demo_value="$PARAM"
-
-}
-
-#############################################################################################################
-action_on_click() {
-echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> Left clic !"
-dbus-send --session --dest=$DBUS_NAME $DBUS_PATH/$APP_NAME $DBUS_INTERFACE.applet.ShowDialog string:"Left clic !" int32:2
-
-exit
-}
-
-#############################################################################################################
-action_on_middle_click() {
-echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> Middle clic !"
-dbus-send --session --dest=$DBUS_NAME $DBUS_PATH/$APP_NAME $DBUS_INTERFACE.applet.ShowDialog string:"Middle clic !" int32:2
-
-exit
-}
-
-#############################################################################################################
-action_on_scroll_icon() {
-if [ $SCROLL_UP -eq "0" ]; then
-	echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> Scroll UP !"
-	dbus-send --session --dest=$DBUS_NAME $DBUS_PATH/$APP_NAME $DBUS_INTERFACE.applet.ShowDialog string:"Scroll UP!" int32:1
-else
-	echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> Scroll DOWN !"
-	dbus-send --session --dest=$DBUS_NAME $DBUS_PATH/$APP_NAME $DBUS_INTERFACE.applet.ShowDialog string:"Scroll DOWN!" int32:1
-fi
-
-exit
-}
-
-#############################################################################################################
-action_on_drop_data() {
-echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> $DROP_DATA has been dropped on applet !"
-
-
-if [ "`echo $DROP_DATA |grep 'file://'`" != "" ]; then 	# It's a file !
-	DROP_DATA="`echo $DROP_DATA | cut -c 8-`"  # we remove 'file://' before the location
-	dbus-send --session --dest=$DBUS_NAME $DBUS_PATH/$APP_NAME $DBUS_INTERFACE.applet.ShowDialog string:"FILE : $DROP_DATA has been dropped on applet !" int32:4
-else	# It's an URL !
-	dbus-send --session --dest=$DBUS_NAME $DBUS_PATH/$APP_NAME $DBUS_INTERFACE.applet.ShowDialog string:"URL : $DROP_DATA has been dropped on applet !" int32:4	# we keep the 'http://' in the name
-fi
-
-exit
-}
-
-#############################################################################################################
-action_on_init() {
-get_ALL_conf_params
-
-echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> The demo_text in config is : $demo_text"
-echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> The demo_truefalse in config is : $demo_truefalse"
-echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> The demo_value in config is : $demo_value"
-
-echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> Our module is started"
-dbus-send --session --dest=$DBUS_NAME $DBUS_PATH/$APP_NAME $DBUS_INTERFACE.applet.ShowDialog string:"I'm connected to Cairo-Dock !" int32:4
-dbus-send --session --dest=$DBUS_NAME $DBUS_PATH/$APP_NAME $DBUS_INTERFACE.applet.SetQuickInfo string:"123"
-
-exit
-}
-
-#############################################################################################################
-action_on_stop() {
-echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> Our module is stopped"
-
-exit
-}
-
-#############################################################################################################
-action_on_reload() {
-get_ALL_conf_params
-
-echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> The demo_text in config is : $demo_text"
-echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> The demo_truefalse in config is : $demo_truefalse"
-echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> The demo_value in config is : $demo_value"
-
-echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> Our module is reloaded"
-dbus-send --session --dest=$DBUS_NAME $DBUS_PATH/$APP_NAME $DBUS_INTERFACE.applet.ShowDialog string:"Our module is reloaded" int32:2
-
-exit
-}
-
-#############################################################################################################
-action_on_build_menu() {
-echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> Build menu !"
-dbus-send --session --dest=$DBUS_NAME $DBUS_PATH/$APP_NAME $DBUS_INTERFACE.applet.PopulateMenu array:string:"choice 0","choice 1"
-
-exit
-}
-
-#############################################################################################################
-action_on_menu_select() {
-echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> Choice $MENU_SELECT has been selected !"
-dbus-send --session --dest=$DBUS_NAME $DBUS_PATH/$APP_NAME $DBUS_INTERFACE.applet.ShowDialog string:"Choice $MENU_SELECT has been selected !" int32:4
-
-exit
-}
-
-#############################################################################################################
-# START ### DO NOT CHANGE THIS SECTION
-#############################################################################################################
-
-if [ "`echo $ACTION |grep 'register_the_applet'`" != "" ]; then
-	register_the_applet
-elif [ "`echo $ACTION |grep 'action_on_click'`" != "" ]; then
-	action_on_click
-elif [ "`echo $ACTION |grep 'action_on_middle_click'`" != "" ]; then
-	action_on_middle_click
-elif [ "`echo $ACTION |grep 'action_on_scroll_icon'`" != "" ]; then
-	action_on_scroll_icon
-elif [ "`echo $ACTION |grep 'action_on_drop_data'`" != "" ]; then
-	action_on_drop_data
-elif [ "`echo $ACTION |grep 'action_on_init'`" != "" ]; then
-	action_on_init
-elif [ "`echo $ACTION |grep 'action_on_stop'`" != "" ]; then
-	action_on_stop
-elif [ "`echo $ACTION |grep 'action_on_reload'`" != "" ]; then
-	action_on_reload
-elif [ "`echo $ACTION |grep 'action_on_build_menu'`" != "" ]; then
-	action_on_build_menu
-elif [ "`echo $ACTION |grep 'action_on_menu_select'`" != "" ]; then
-	action_on_menu_select
-fi
-
-exit
-
+### Rev : 09/02/2011
+
+. /usr/share/cairo-dock/plug-ins/Dbus/CDBashApplet.sh $*
+
+#############################################################################################################
+
+get_config()
+{
+	demo_text=`get_conf_param "demo_text"`
+	
+	demo_truefalse=`get_conf_param "demo_truefalse"`
+	
+	demo_value=`get_conf_param "demo_value"`
+}
+
+#############################################################################################################
+
+on_click()
+{
+	call ShowDialog "string:\"Left clic\"" "int32:2"
+}
+
+on_middle_click()
+{
+	call ShowDialog "string:\"Middle clic\"" "int32:2"
+}
+
+
+on_scroll_icon()
+{
+	i=0
+	if [ -f store ]; then
+		i=`cat store`
+	fi
+	if [ $1 -eq 1 ]; then
+		let "i += 1"
+	else
+		let "i -= 1"
+	fi
+	call SetQuickInfo "string:$i"
+	echo "$i" > store
+}
+
+on_drop_data()
+{
+	if [ "`echo $1 |grep file://`" ]; then # It's a file !
+		file="`echo $1 | cut -c 8-`" # we remove 'file://' before the location
+		call ShowDialog "string:\"FILE : $file has been dropped on the applet\"" "int32:5"
+	else	# It's an URL !
+		call ShowDialog "string:\"URL : $1 has been dropped on the applet\"" "int32:5"  # we keep the 'http://' in the name
+	fi
+}
+
+on_build_menu()
+{
+	call PopulateMenu "array:string:\"choice 0\",\"choice 1\""
+}
+
+on_menu_select()
+{
+	call ShowDialog "string:\"Choice $1 has been selected\"" "int32:4"
+}
+
+#############################################################################################################
+
+begin()
+{
+	get_config
+	
+	echo "from file $CONF_FILE:"
+	echo "Param 'demo_text' in config is : $demo_text"
+	echo "Param 'demo_truefalse' in config is : $demo_truefalse"
+	echo "Param 'demo_value' in config is : $demo_value"
+	
+	call ShowDialog "string:\"I'm connected to Cairo-Dock \!\"" "int32:4"
+	call SetQuickInfo "string:0"
+	
+	echo "0" > store
+}
+
+end()
+{
+	rm -f store
+}
+
+reload()
+{
+	get_config
+	
+	echo "Param 'demo_text' in config is now : $demo_text"
+	echo "Param 'demo_truefalse' in config is now : $demo_truefalse"
+	echo "Param 'demo_value' in config is now : $demo_value"
+	
+	call ShowDialog "string:\"Our module is reloaded\"" "int32:2"
+}
+
+#############################################################################################################
+
+run $*
+
+exit 0

=== modified file 'Dbus/demos/demo_bash/icon' (properties changed: +x to -x)
=== modified file 'Dbus/demos/demo_bash/preview' (properties changed: +x to -x)
=== removed file 'Dbus/demos/demo_mono/demo_mono'
Binary files Dbus/demos/demo_mono/demo_mono	2010-08-07 01:43:25 +0000 and Dbus/demos/demo_mono/demo_mono	1970-01-01 00:00:00 +0000 differ
=== added file 'Dbus/demos/demo_mono/demo_mono.conf'
--- Dbus/demos/demo_mono/demo_mono.conf	1970-01-01 00:00:00 +0000
+++ Dbus/demos/demo_mono/demo_mono.conf	2011-02-23 23:29:29 +0000
@@ -0,0 +1,101 @@
+#!en;0.0.2
+
+#[gtk-about]
+[Icon]
+#j+[0;128] Desired icon size for this applet
+#{Set to 0 to use the default applet size}
+icon size = 0;0
+
+#s Name of the icon as it will appear in its label in the dock :
+name = Dbus Applet
+
+#S+ Image's filename :
+#{Let empty to use the default one.}
+icon = 
+
+#d Name of the dock it belongs to:
+dock name = 
+
+order=
+
+#F[Applet's Handbook]
+frame_hand=
+#A
+handbook=demo_mono
+
+#[gtk-convert]
+[Desklet]
+
+#j+[48;512] Desklet's dimension (width x height) :
+#{Depending on your WindowManager, you can resize it with ALT + middle_click or ALT + left_click for exemple.}
+size = 164;96
+
+#i[-2048;2048] Desklet's position (x ; y) :
+#{Depending on your WindowManager, you can move it with ALT + left_click}
+x position=0
+#i[-2048;2048] ...
+y position=0
+
+#b Is detached from the dock ?
+initially detached=false
+#l[Normal;Keep above;Keep below;On Widget Layer;Reserve space] Accessibility :
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+accessibility=0
+#b Should be visible on all desktops ?
+sticky=true
+
+#b Lock position ?
+#{If locked, the desklet can't be moved by simply dragging it with the left mouse button. Of course you can still move it with ALT + left_click.}
+locked = false
+
+#I[-180;180] Rotation :
+#{in degrees.}
+rotation = 0
+
+use size=
+
+#F[Decorations;gtk-orientation-portrait]
+frame_deco=
+
+#o+ Choose a decoration theme for this desklet :
+#{Choose the 'personnal' one to define your own decorations below.}
+decorations = default
+
+#v
+sep_deco =
+
+#S+ Background image :
+#{It's an image that will be displayed below the drawings, like a frame for exemple. Let empty to not use any.}
+bg desklet =
+#e+[0;1] Background tansparency :
+bg alpha = 1
+#i+[0;256] Left offset :
+#{in pixels. Use this to adjust the left position of the drawings.}
+left offset = 0
+#i+[0;256] Top offset :
+#{in pixels. Use this to adjust the top position of the drawings.}
+top offset = 0
+#i+[0;256] Right offset :
+#{in pixels. Use this to adjust the right position of the drawings.}
+right offset = 0
+#i+[0;256] Bottom offset :
+#{in pixels. Use this to adjust the bottom position of the drawings.}
+bottom offset = 0
+#S+ Foreground image :
+#{It's an image that will be displayed above the drawings, like a reflect for exemple. Let empty to not use any.}
+fg desklet =
+#e+[0;1] Foreground tansparency :
+fg alpha = 1
+
+#[gtk-preferences]
+[Configuration]
+
+#h+[/usr/share/cairo-dock/gauges;gauges;gauges] Choose one of the available themes :/
+theme = Turbo-night
+
+#i[10;100] Max value :
+max value = 100
+
+#b Yes / No  ?
+yesno = false
+

=== modified file 'Dbus/demos/demo_mono/demo_mono.cs' (properties changed: +x to -x)
--- Dbus/demos/demo_mono/demo_mono.cs	2010-08-07 01:43:25 +0000
+++ Dbus/demos/demo_mono/demo_mono.cs	2011-02-23 23:29:29 +0000
@@ -2,7 +2,7 @@
 //
 //This is a part of the external demo applet for Cairo-Dock
 //
-//Copyright : (C) 2010 by Fabounet
+//Copyright : (C) 2010-2011 by Fabounet
 //E-mail : fabounet@xxxxxxxxxxxx
 //
 //
@@ -30,125 +30,103 @@
 //If you drop some text on the icon, it will be used as the icon's label.
 
 // Compile it with the following command, then rename 'demo_mono.exe' to 'demo_mono'.
-//gmcs demo_mono.cs -r:/usr/lib/mono/gtk-sharp-2.0/glib-sharp.dll -r:/usr/lib/cli/ndesk-dbus-glib-1.0/NDesk.DBus.GLib.dll -r:/usr/lib/cli/ndesk-dbus-1.0/NDesk.DBus.dll
+// gmcs demo_mono.cs -r:/usr/lib/cli/CDApplet.dll
+// ln -s demo_mono.exe demo_mono
 
   //////////////////////////
  ////// dependancies //////
 //////////////////////////
 using System;
-using GLib;
-using NDesk.DBus;
-
-  ////////////////////////////
- ////// DBus Interface //////
-////////////////////////////
-public delegate void OnClickEvent (int i);
-public delegate void OnMiddleClickEvent ();
-public delegate void OnScrollEvent (bool b);
-public delegate void OnBuildMenuEvent ();
-public delegate void OnMenuSelectEvent (int i);
-public delegate void OnDropDataEvent (string s);
-public delegate void OnChangeFocusEvent (bool b);
-public delegate void OnAnswerEvent (System.Object v);
-public delegate void OnStopModuleEvent ();
-public delegate void OnReloadModuleEvent (bool b);
-[NDesk.DBus.Interface ("org.cairodock.CairoDock.applet")]
-public interface IIcon
-{
-	System.Object Get (string s);
-	void GetAll ();
-	void SetLabel (string s);
-	void SetIcon (string s);
-	void SetEmblem (string s, int i);
-	void Animate (string s, int i);
-	void SetQuickInfo (string s);
-	void ShowDialog (string s, int i);
-	void AskQuestion (string s);
-	void AskValue (string s, double x, double y);
-	void AskText (string s, string t);
-	void AddDataRenderer (string s, int i, string t);
-	void RenderValues (double[] x);
-	void ControlAppli (string s);
-	void PopulateMenu (string[] s);
-	event OnClickEvent on_click; 
-	event OnMiddleClickEvent on_middle_click; 
-	event OnScrollEvent on_scroll; 
-	event OnBuildMenuEvent on_build_menu; 
-	event OnMenuSelectEvent on_menu_select; 
-	event OnDropDataEvent on_drop_data; 
-	event OnChangeFocusEvent on_change_focus; 
-	event OnAnswerEvent on_answer; 
-	event OnStopModuleEvent on_stop_module; 
-	event OnReloadModuleEvent on_reload_module; 
-}
+using System.Collections.Generic;
+using CairoDock.Applet;
 
 public struct Config {
+	public string cTheme;
+	public int iMaxValue;
 	public bool yesno;
-	public int iMaxValue;
-	public string cTheme;
 }
 
-public class Applet
+////////////////////
+/// Applet class ///
+////////////////////
+public class Applet : CDApplet
 {
-	public static string applet_name = "demo_mono";  // the name of the applet must the same as the folder.
-	public static string applet_path = "/org/cairodock/CairoDock/"+applet_name;  // path where our object is stored on the bus.
-	public static string conf_file = Environment.GetEnvironmentVariable("HOME")+"/.config/cairo-dock/current_theme/plug-ins/"+applet_name+"/"+applet_name+".conf";  // path to the conf file of our applet.
-	public IIcon myIcon = null;
-	public Config myConfig;
-	private GLib.MainLoop loop = null;
+	private Config config;
 	private int count = 0;
 	
-	public void begin()
-	{
-		connect_to_dock ();
-		get_config ();
-		myIcon.ShowDialog ("I'm connected to Cairo-Dock !", 4);
-		myIcon.AddDataRenderer("gauge", 1, myConfig.cTheme);
+	public Applet()
+	{
+		
+	}
+	
+	  ////////////////////////////
+	 ////// private methods //////
+	////////////////////////////
+	
+	private void set_counter(int n)
+	{
+		this.count = n;
+		this.icon.RenderValues(new double[] {(double)n/this.config.iMaxValue});
+		this.icon.SetQuickInfo(String.Format(n.ToString()));
+	}
+	
+	  ///////////////////////////////
+	 ////// applet definition //////
+	///////////////////////////////
+	
+	public override void get_config (string cConfFilePath)
+	{
+		/// read cConfFilePath...
+		this.config.iMaxValue = 100;
+		this.config.cTheme = "Turbo-night";
+		this.config.yesno = true;
+	}
+	
+	public override void end()
+	{
+		Console.WriteLine("*** Bye !");
+	}
+	
+	public override void begin()
+	{
+		this.icon.ShowDialog ("I'm connected to Cairo-Dock !", 4);
+		this.icon.AddDataRenderer("gauge", 1, this.config.cTheme);
 		this.set_counter (0);
-		loop = new GLib.MainLoop();
-		loop.Run();
-	}
-	public void end()
-	{
-		loop.Quit();
-	}
-	public void connect_to_dock()
-	{
-		BusG.Init ();
-		Bus bus = Bus.Session;
-		myIcon = bus.GetObject<IIcon> ("org.cairodock.CairoDock", new ObjectPath (applet_path));
-		myIcon.on_click 			+= new OnClickEvent (action_on_click);
-		myIcon.on_middle_click 	+= new OnMiddleClickEvent (action_on_middle_click);
-		myIcon.on_scroll 		+= new OnScrollEvent (action_on_scroll);
-		myIcon.on_build_menu 	+= new OnBuildMenuEvent (action_on_build_menu);
-		myIcon.on_menu_select 	+= new OnMenuSelectEvent (action_on_menu_select);
-		myIcon.on_drop_data 		+= new OnDropDataEvent (action_on_drop_data);
-		myIcon.on_answer 		+= new OnAnswerEvent (action_on_answer);
-		myIcon.on_stop_module 	+= new OnStopModuleEvent (action_on_stop_module);
-		myIcon.on_reload_module 	+= new OnReloadModuleEvent (action_on_reload_module);
-	}
-	public void get_config ()
-	{
-		/// read this.conf_file ...
-		myConfig.iMaxValue = 100;
-		myConfig.cTheme = "Turbo-night";
-		myConfig.yesno = true;
-	}
+	}
+	
+	public override void reload()
+	{
+		this.icon.AddDataRenderer("gauge", 1, this.config.cTheme);
+		this.set_counter (Math.Min (this.count, this.config.iMaxValue));
+	}
+	
 	  ////////////////////////////////////////
 	 ////// callbacks on the main icon //////
 	////////////////////////////////////////
-	private void action_on_click (int iClickState)
-	{
-		Console.WriteLine(">>> click");
-	}
-	private void action_on_middle_click ()
-	{
-		Console.WriteLine(">>> middle click");
-		myIcon.AskValue("Set the value you want", this.count, 100);
-	}
-	private void action_on_scroll (bool bScrollUp)
-	{
-		Console.WriteLine(">>> scroll up " + bScrollUp);
+	
+	public override void on_click (int iClickState)
+	{
+		Console.WriteLine("*** click");
+	}
+	
+	public override void on_middle_click ()
+	{
+		Console.WriteLine("*** middle click");
+		Dictionary<string, object> dialog_attributes = new Dictionary<string, object> () {
+			{"icon" , "stock_properties"},
+			{"message" , "Set the value you want"},
+			{"buttons" , "ok;cancel"} };
+		Dictionary<string, object> widget_attributes = new Dictionary<string, object> () {
+			{"widget-type" , "scale"},
+			{"max-value" , this.config.iMaxValue},
+			{"message" , "Set the value you want"} };
+		
+		this.icon.PopupDialog(dialog_attributes, widget_attributes);
+	}
+	
+	public override void on_scroll (bool bScrollUp)
+	{
+		Console.WriteLine("*** scroll up " + bScrollUp);
 		int n;
 		if (bScrollUp)
 			n = Math.Min(100, this.count+1);
@@ -156,70 +134,68 @@
 			n = Math.Max(0, this.count-1);
 		this.set_counter(n);
 	}
-	private void action_on_build_menu ()
+	
+	public override void on_build_menu ()
 	{
-		Console.WriteLine(">>> build menu");
-		myIcon.PopulateMenu(new string [] {"set min value", "set medium value", "set max value"});
+		Console.WriteLine("*** build menu");
+		/// Warning : teh AddMenuItems fails with NDesk-DBus 0.6.0; until this is fixed, use the PopulateMenu method.
+		/**Dictionary<string, object>[] pItems = new Dictionary<string, object>[] {
+			new Dictionary<string, object>()
+			{
+				{"label", "set min value"},
+				{"icon", "gtk-zoom-out"},
+				{"id", 0}
+			},
+			new Dictionary<string, object>()
+			{
+				{"label", "set medium value"},
+				{"icon", "gtk-zoom-fit"},
+				{"id", 1}
+			},
+			new Dictionary<string, object>()
+			{
+				{"label", "set max value"},
+				{"icon", "gtk-zoom-in"},
+				{"id", 2}
+			}
+		};
+		Console.WriteLine("*** item 1:"+pItems[0]["icon"]);
+		this.icon.AddMenuItems(pItems);*/
+		this.icon.PopulateMenu(new string[] {"set min value", "set medium value", "set max value"});
 	}
-	private void action_on_menu_select (int iNumEntry)
+	
+	public override void on_menu_select (int iNumEntry)
 	{
-		Console.WriteLine(">>> select entry : "+iNumEntry);
+		Console.WriteLine("*** select entry : "+iNumEntry);
 		if (iNumEntry == 0)
 			this.set_counter(0);
 		else if (iNumEntry == 1)
-			this.set_counter(100/2);
+			this.set_counter(this.config.iMaxValue/2);
 		else if (iNumEntry == 2)
-			this.set_counter(100);
-	}
-	private void action_on_drop_data (string cReceivedData)
-	{
-		Console.WriteLine(">>> drop : "+cReceivedData);
-		myIcon.SetLabel(cReceivedData);
-	}
-	private void action_on_answer (System.Object answer)
-	{
-		Console.WriteLine(">>> answer : "+(double)answer);
-		double x = (double)answer;
-		this.set_counter((int) x);
-	}
-	  /////////////////////////////////////
-	 ////// callbacks on the applet //////
-	/////////////////////////////////////
-	private void action_on_stop_module ()
-	{
-		Console.WriteLine(">>> stop");
-		this.end();
-	}
-	private void action_on_reload_module (bool bConfigHasChanged)
-	{
-		Console.WriteLine(">>> our module is reloaded");
-		if (bConfigHasChanged)
+			this.set_counter(this.config.iMaxValue);
+	}
+	public override void on_drop_data (string cReceivedData)
+	{
+		Console.WriteLine("*** drop : "+cReceivedData);
+		this.icon.SetLabel(cReceivedData);
+	}
+	public override void on_answer_dialog (int iButton, System.Object answer)
+	{
+		Console.WriteLine("*** answer : "+(double)answer);
+		if (iButton == 0)
 		{
-			Console.WriteLine (">>>  and our config has changed");
-			this.get_config();
-			myIcon.AddDataRenderer("gauge", 1, this.myConfig.cTheme);
-			this.set_counter (Math.Min (this.count, this.myConfig.iMaxValue));
+			double x = (double)answer;
+			this.set_counter((int) x);
 		}
 	}
 	
-	  ////////////////////////////
-	 ////// applet methods //////
-	////////////////////////////
-	public void set_counter(int n)
-	{
-		this.count = n;
-		myIcon.RenderValues(new double[] {(double)n/myConfig.iMaxValue});
-		myIcon.SetQuickInfo(String.Format(n.ToString()));
-	}
-	
 	  //////////////////
 	 ////// main //////
 	//////////////////
-	public static void Main ()
+	public static void Main (string[] args)
 	{
-		Applet myApplet = new Applet ();
-		myApplet.begin();
-		Console.WriteLine(">>> bye");
+		Applet myApplet = new Applet();
+		myApplet.run();
 	}
 }
 

=== removed file 'Dbus/demos/demo_mono/demo_mono.exe'
Binary files Dbus/demos/demo_mono/demo_mono.exe	2010-08-07 01:43:25 +0000 and Dbus/demos/demo_mono/demo_mono.exe	1970-01-01 00:00:00 +0000 differ
=== modified file 'Dbus/demos/demo_mono/icon' (properties changed: +x to -x)
=== modified file 'Dbus/demos/demo_mono/preview' (properties changed: +x to -x)
=== modified file 'Dbus/demos/demo_python/auto-load.conf'
--- Dbus/demos/demo_python/auto-load.conf	2010-08-07 01:43:25 +0000
+++ Dbus/demos/demo_python/auto-load.conf	2011-02-23 23:29:29 +0000
@@ -11,3 +11,9 @@
 
 # Version of the applet; change it everytime you change something in the config file. Don't forget to update the version both in this file and in the config file.
 version = 0.0.2
+
+# Default icon to use if no icon has been defined by the user. If not specified, or if the file is not found, the "icon" file will be used.
+icon = 
+
+# Whether the applet can be instanciated several times or not.
+multi-instance = true
\ No newline at end of file

=== modified file 'Dbus/demos/demo_python/demo_python' (properties changed: +x to -x)
--- Dbus/demos/demo_python/demo_python	2010-08-07 01:43:25 +0000
+++ Dbus/demos/demo_python/demo_python	2011-02-23 23:29:29 +0000
@@ -1,11 +1,9 @@
 #!/usr/bin/python
 
 # This is a part of the external demo applet for Cairo-Dock
-#
-# Copyright : (C) 2010 by Fabounet
+# Copyright : (C) 2010-2011 by Fabounet
 # E-mail : fabounet@xxxxxxxxxxxx
 #
-#
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
 # as published by the Free Software Foundation; either version 2
@@ -17,166 +15,143 @@
 # GNU General Public License for more details.
 # http://www.gnu.org/licenses/licenses.html#GPL
 
-### The name of this applet is "demo_python"; it is placed in a folder named "demo_python", with a file named "auto-load.conf" which describes it.
-### Copy this folder into ~/.config/cairo-dock/third-party to let the dock register it automatically.
-### In the folder we have :
-### "demo_python" (the executable script), "demo_python.conf" (the default config file), "auto-load.conf" (the file describing our applet), "icon" (the default icon of the applet) and "preview" (a preview of this applet)
+# The name of this applet is "demo_python"; it is placed in a folder named "demo_python", with a file named "auto-load.conf" which describes it.
+# Copy this folder into ~/.config/cairo-dock/third-party to let the dock register it automatically.
+# In the folder we have :
+# - "demo_python"       : the executable script, without extension
+# - "demo_python.conf"  : the default config file
+# - "auto-load.conf"    : the file describing our applet
+# - "icon"              : the default icon of the applet (optionnal)
+# - "preview"           : a preview of this applet (optionnal)
 
 ### This very simple applet features a counter from 0 to iMaxValue It displays the counter on the icon with a gauge and a quick info.
 ### Scroll on the icon increase or decrease the counter.
 ### The menu offers the possibility to set some default value.
-### Left click on the icon will set a random value.
-### Middle click on the icon will raise a dialog asking you to set the value you want.
+### Left-click on the icon will set a random value.
+### Middle-click on the icon will raise a dialog asking you to set the value you want.
 ### If you drop some text on the icon, it will be used as the icon's label.
 
 ####################
 ### dependancies ###
 ####################
-import sys
-import os.path
-import ConfigParser
 import random
-import gobject
-import glib
-import dbus
-from dbus.mainloop.glib import DBusGMainLoop
-
-applet_name = os.path.basename(os.path.abspath("."))  # the name of the applet must the same as the folder.
-DBusGMainLoop(set_as_default=True)
-
-##################################
-### callbacks on the main icon ###
-##################################
-def action_on_click(iState):
-	print ">>> clic !"
-	set_counter(random.randint(0,myApplet.config['iMaxValue']))
-
-def action_on_middle_click():
-	print ">>> middle clic !"
-	myApplet.icon.AskValue("Set the value you want", myApplet.count, myApplet.config['iMaxValue']);
-
-def action_on_build_menu():
-	print ">>> build menu !"
-	myApplet.icon.PopulateMenu(["set min value", "set medium value", "set max value"])
-	
-def action_on_menu_select(iNumEntry):
-	print ">>> choice",iNumEntry,"has been selected !"
-	if iNumEntry == 0:
-		myApplet.set_counter(0)
-	elif iNumEntry == 1:
-		myApplet.set_counter(myApplet.config['iMaxValue']/2)
-	elif iNumEntry == 2:
-		myApplet.set_counter(myApplet.config['iMaxValue'])
-
-def action_on_scroll(bScrollUp):
-	print ">>> scroll !"
-	if bScrollUp:
-		count = min(myApplet.config['iMaxValue'], myApplet.count+1)
-	else:
-		count = max(0, myApplet.count-1)
-	myApplet.set_counter(count)
-
-def action_on_drop_data(cReceivedData):
-	print ">>> received",cReceivedData
-	myApplet.icon.SetLabel(cReceivedData)
-
-def action_on_answer(answer):
-	print ">>> answer :",answer
-	myApplet.set_counter(int (answer))
-
-##################################
-### callbacks on the sub-icons ###
-##################################
-def on_click_sub_icon(iState, cIconID):
-	print "clic on the sub-icon '"+cIconID+"' !"
-
-###############################
-### callbacks on the applet ###
-###############################
-def action_on_stop():
-	print ">>> our module is stopped"
-	myApplet.end()
-	loop.quit()
-
-def action_on_reload(bConfigHasChanged):
-	print ">>> our module is reloaded"
-	if bConfigHasChanged:
-		print ">>>  and our config has changed"
-		myApplet.get_config()
-		myApplet.icon.AddDataRenderer("gauge", 1, myApplet.config['cTheme'])
-		myApplet.icon.RenderValues([float(myApplet.count)/myApplet.config['iMaxValue']])
-		myApplet.sub_icons.RemoveSubIcon("any")
-		myApplet.sub_icons.AddSubIcons(["icon 1", "firefox-3.0", "id1", "icon 2", "natilus", "id2", "icon 3", "thunderbird", "id3"])
+from CDApplet import CDApplet
 
 ####################
 ### Applet class ###
 ####################
-class Applet:
+class Applet(CDApplet):
 	def __init__(self):
-		self.icon = None
-		self.sub_icons = None
-		self.config = {}
-		self.conf_file = os.path.expanduser("~/.config/cairo-dock/current_theme/plug-ins/"+applet_name+"/"+applet_name+".conf")  # path to the conf file of our applet.
+		# define internal variables
 		self.count = 0
-	
-	def get_config(self):
-		keyfile = ConfigParser.RawConfigParser()
-		keyfile.read(self.conf_file)
+		# call high-level init
+		CDApplet.__init__(self)
+	
+	##### private methods #####
+	
+	def set_counter(self,count):
+		self.count = count
+		percent = float(self.count)/self.config['iMaxValue']
+		self.icon.RenderValues([percent])
+		self.icon.SetQuickInfo(format(self.count, "d"))
+	
+	##### applet definition #####
+	
+	def get_config(self,keyfile):
+		print "*** get config"
 		self.config['cTheme'] 		= keyfile.get('Configuration', 'theme')
 		self.config['iMaxValue'] 	= keyfile.getint('Configuration', 'max value')
 		self.config['yesno'] 		= keyfile.getboolean('Configuration', 'yesno')
 	
+	def end(self):
+		print "*** end of demo_python"
+	
 	def begin(self):
-		self.connect_to_dock()
+		print "*** begin"
 		self.icon.ShowDialog("I'm connected to Cairo-Dock !", 4)  # show a dialog with this message for 4 seconds.
-		self.icon.SetQuickInfo(format(self.count, "d"))  # write the counter value on the icon.
 		self.icon.AddDataRenderer("gauge", 1, self.config['cTheme'])  # set a gauge with the theme read in config to display the value of the counter.
-		self.icon.RenderValues([float(self.count)/self.config['iMaxValue']])  # draw the gauge with an initial value.
+		self.set_counter(0)  # set the initial value of our counter.
 		self.sub_icons.AddSubIcons(["icon 1", "firefox-3.0", "id1", "icon 2", "trash", "id2", "icon 3", "thunderbird", "id3", "icon 4", "nautilus", "id4"])  # add 4 icons in our sub-dock. The tab contains triplets of {label, image, ID}.
 		self.sub_icons.RemoveSubIcon("id2")  # remove the 2nd icon of our sub-dock.
 		self.sub_icons.SetQuickInfo("1", "id1")  # write the ID on each icon of the sub-dock.
 		self.sub_icons.SetQuickInfo("3", "id3")
 		self.sub_icons.SetQuickInfo("4", "id4")
-	
-	def end(self):
-		pass
-	
-	def connect_to_dock(self):
-		# get our applet on the bus.
-		applet_path = "/org/cairodock/CairoDock/"+applet_name  # path where our object is stored on the bus.
-		bus = dbus.SessionBus()
-		applet_object = bus.get_object("org.cairodock.CairoDock", applet_path)
-		self.icon = dbus.Interface(applet_object, "org.cairodock.CairoDock.applet")  # this object represents our applet and also our icon inside the dock or a desklet.
-		# we'll have a sub-dock, so we also get the sub-icons object
-		sub_icons_object = bus.get_object("org.cairodock.CairoDock", applet_path+"/sub_icons")
-		self.sub_icons = dbus.Interface(sub_icons_object, "org.cairodock.CairoDock.subapplet")  # this object represents the list of icons contained in our sub-dock, or in our desklet. We'll add them one by one later, giving them a unique ID, which will be used to identify each of them.
-		# connect to signals.
-		self.icon.connect_to_signal("on_click", action_on_click)  # when the user left-clicks on our icon.
-		self.icon.connect_to_signal("on_middle_click", action_on_middle_click)  # when the user middle-clicks on our icon.
-		self.icon.connect_to_signal("on_build_menu", action_on_build_menu)  # when the user right-clicks on our applet (which builds the menu)
-		self.icon.connect_to_signal("on_menu_select", action_on_menu_select)  # when the user selects an entry of this menu.
-		self.icon.connect_to_signal("on_scroll", action_on_scroll)  # when the user scroll up or down on our icon.
-		self.icon.connect_to_signal("on_drop_data", action_on_drop_data)  # when the user drops something on our icon.
-		#myApplet.icon.connect_to_signal("on_init_module", action_on_init)
-		self.icon.connect_to_signal("on_answer", action_on_answer)  # when the user answer a question.
-		self.icon.connect_to_signal("on_stop_module", action_on_stop)  # when the user deactivate our applet (or the DBus plug-in, or when the Cairo-Dock is stopped).
-		self.icon.connect_to_signal("on_reload_module", action_on_reload)  # when the user changes something in our config, or when the desklet is resized (with no change in the config).
-		self.sub_icons.connect_to_signal("on_click_sub_icon", on_click_sub_icon)  # when the user left-clicks on a sub-icon.
-	
-	def set_counter(self,count):
-		self.count = count
-		percent = float(self.count)/self.config['iMaxValue']
-		self.icon.RenderValues([percent])
-		self.icon.SetQuickInfo(format(self.count, "d"))
-
+		self.icon.BindShortkey(["<Control>F9"])  # bind to ctrl+F9
+	
+	def reload(self):
+		print "*** reload"
+		self.icon.AddDataRenderer("gauge", 1, self.config['cTheme'])
+		self.icon.RenderValues([float(self.count)/self.config['iMaxValue']])
+		self.sub_icons.RemoveSubIcon("any")
+		self.sub_icons.AddSubIcons(["icon 1", "firefox-3.0", "id1", "icon 2", "natilus", "id2", "icon 3", "thunderbird", "id3"])
+	
+	##### callbacks #####
+	
+	def on_click(self,iState):
+		print "*** click"
+		self.set_counter(random.randint(0,self.config['iMaxValue']))
+	
+	def on_middle_click(self):
+		print "*** middle click"
+		dialog_attributes = {
+			"icon" : "stock_properties",
+			"message" : "Set the value you want",
+			"buttons" : "ok;cancel"}
+		widget_attributes = {
+			"widget-type" : "scale",
+			"max-value" : self.config['iMaxValue'],
+			"message" : "Set the value you want"}
+		
+		self.icon.PopupDialog(dialog_attributes, widget_attributes)
+	
+	def on_build_menu(self):
+		print "*** build menu"
+		items = [ {
+				"label": "set min value",
+				"icon" : "gtk-zoom-out",
+				"id"   : 1
+			}, {
+				"label": "set medium value",
+				"icon" : "gtk-zoom-fit",
+				"id"   : 2 
+			}, {
+				"label": "set max value",
+				"icon" : "gtk-zoom-in",
+				"id"   : 3
+			} ]
+		self.icon.AddMenuItems(items)
+		
+	def on_menu_select(self,iNumEntry):
+		print "*** choice",iNumEntry,"has been selected !"
+		if iNumEntry == 1:
+			self.set_counter(0)
+		elif iNumEntry == 2:
+			self.set_counter(self.config['iMaxValue']/2)
+		elif iNumEntry == 3:
+			self.set_counter(self.config['iMaxValue'])
+	
+	def on_scroll(self,bScrollUp):
+		print "*** scroll !"
+		if bScrollUp:
+			count = min(self.config['iMaxValue'], self.count+1)
+		else:
+			count = max(0, self.count-1)
+		self.set_counter(count)
+	
+	def on_drop_data(self,cReceivedData):
+		print "*** received",cReceivedData
+		self.icon.SetLabel(cReceivedData)
+	
+	def on_answer_dialog(self,button, answer):
+		print "*** answer dialog :",button, answer
+		self.set_counter(int (answer))
+	
+	def on_shortkey(self,key):
+		print "*** shortkey :",key
+	
+	
 ############
 ### main ###
 ############
 if __name__ == '__main__':
-	myApplet = Applet()
-	myApplet.get_config()
-	myApplet.begin()
-	loop = gobject.MainLoop()
-	loop.run()
-	print ">>> bye"
-	sys.exit(0)
+	Applet().run()

=== modified file 'Dbus/demos/demo_python/demo_python.conf' (properties changed: +x to -x)
=== modified file 'Dbus/demos/demo_python/icon' (properties changed: +x to -x)
=== modified file 'Dbus/demos/demo_python/preview' (properties changed: +x to -x)
=== added directory 'Dbus/demos/demo_ruby'
=== added file 'Dbus/demos/demo_ruby/README'
--- Dbus/demos/demo_ruby/README	1970-01-01 00:00:00 +0000
+++ Dbus/demos/demo_ruby/README	2011-02-23 23:29:29 +0000
@@ -0,0 +1,19 @@
+In order to use this applet, it is necessary to install Ruby, Rubygems and the gems dbus and parseconfig.
+
+# Installation process (Debian/Ubuntu)
+
+[+] Ruby 1.8: sudo apt-get install ruby1.8-dev ruby1.8 ri1.8 rdoc1.8 irb1.8 libreadline-ruby1.8 libruby1.8
+[+] Rubygems: (sudo) apt-get install rubygems
+[+] Gem parseconfig: (sudo) gem install parseconfig
+[+] Gem Dbus: (sudo) gem install ruby-dbus
+
+# Tips
+
+When running Cairo-Dock through terminal, for example, cairo-dock -c, check if any message regarding execution permission is being shown. If so, set execution permission to the applet, chmod a+x 755 demo_ruby
+
+# Contact me
+
+Any doubt, suggestion or anything else, except asking for some money, I would be pleased to received a message from you.
+
+Author: Eduardo Mucelli Rezende Oliveira
+E-mail: edumucelli@xxxxxxxxx or eduardom@xxxxxxxxxxx

=== added file 'Dbus/demos/demo_ruby/auto-load.conf'
--- Dbus/demos/demo_ruby/auto-load.conf	1970-01-01 00:00:00 +0000
+++ Dbus/demos/demo_ruby/auto-load.conf	2011-02-23 23:29:29 +0000
@@ -0,0 +1,19 @@
+[Register]
+
+# Author of the applet
+author = Eduardo Mucelli
+
+# A short description of the applet and how to use it.
+description = This is a distant applet\nIt simulates a counter:\n Scroll up/down to increase/decrease the counter,\n Click/middle-click to increase/decrease the counter by 10\n Drop some text to set it as the label.
+
+# Category of the applet : 2 = files, 3 = internet, 4 = Desktop, 5 = accessory, 6 = fun
+category = 5
+
+# Version of the applet; change it everytime you change something in the config file. Don't forget to update the version both in this file and in the config file.
+version = 0.0.1
+
+# Default icon to use if no icon has been defined by the user. If not specified, or if the file is not found, the "icon" file will be used.
+icon = 
+
+# Whether the applet can be instanciated several times or not.
+multi-instance = true

=== added file 'Dbus/demos/demo_ruby/demo_ruby'
--- Dbus/demos/demo_ruby/demo_ruby	1970-01-01 00:00:00 +0000
+++ Dbus/demos/demo_ruby/demo_ruby	2011-02-23 23:29:29 +0000
@@ -0,0 +1,127 @@
+#!/usr/bin/ruby
+
+# This is a part of the external demo_ruby applet for Cairo-Dock
+#
+# Author: Eduardo Mucelli Rezende Oliveira
+# E-mail: edumucelli@xxxxxxxxx or eduardom@xxxxxxxxxxx
+#
+# This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+
+# This very simple applet features a counter from 0 to max_value. It displays the counter on the icon with a gauge and a quick info.
+# Scroll on the icon increase or decrease the counter
+# The menu offers the possibility to set some default value
+# Left click on the icon will set a random value
+# Middle click on the icon will raise a dialog asking you to set the value you want
+# If you drop some text on the icon, it will be used as the icon's label
+# Be aware to the messages, they are very wise :-)
+
+%w{rubygems dbus parseconfig CDApplet}.each { |x| require x }                           # requirements, do not forget CDApplet, it is not like Python
+
+class String
+	def to_b																			    # string to boolean
+	    ["true", "1", "T", "t"].include?(self.downcase)
+    end
+end
+
+class Applet < CDApplet
+	attr_accessor :counter, :configuration
+	def initialize
+		self.counter = 0
+        super
+	end
+	def start
+		self.icon.ShowDialog("I'm connected to Cairo-Dock !", 4)  							# show a dialog with this message for 4 seconds
+        self.icon.SetQuickInfo("#{self.counter}")			  								# write the counter value on the icon
+        self.icon.AddDataRenderer("gauge", 1, self.configuration['theme'])  				# set 1 gauge with the theme read in config
+        self.icon.RenderValues([Float(self.counter)/self.configuration['max_value']])  		# draw the gauge with an initial value
+
+        self.sub_icons.AddSubIcons(["icon 1", "firefox-3.0", "id1", "icon 3", "thunderbird", "id3", "icon 4", "nautilus", "id4"])	
+        self.sub_icons.RemoveSubIcon("id2") 												# remove the 2nd icon of our sub-dock
+        self.sub_icons.SetQuickInfo("1", "id1")  											# write the ID on each icon of the sub-dock
+        self.sub_icons.SetQuickInfo("3", "id3")
+        self.sub_icons.SetQuickInfo("4", "id4")
+	end
+
+    def get_config keyfile
+		self.configuration = {}
+		self.configuration['max_value'] = keyfile.params['Configuration']['max value'].to_i
+		self.configuration['theme'] = keyfile.params['Configuration']['theme']
+		self.configuration['yes_no'] = keyfile.params['Configuration']['yesno'].to_b        
+    end
+
+	# callbacks on the main icon
+	def on_click iState
+		p "[+] roger, right-click"
+		render_counter (self.counter+10)
+	end
+	def on_middle_click
+		p "[+] yes sir, middle-click received"
+		self.icon.AskValue("Set the value you want", self.counter, self.configuration['max_value'])
+	end
+	def on_build_menu
+		p "[+] let's build the menu"
+		self.icon.PopulateMenu(["Reset the counter", "Set Medium Value", "Set Max Value"])
+	end
+	def on_menu_select param
+		p "[+] let me guess, somebody chose the menu identified by the ID #{param}"
+		if param == 0
+			render_counter 0
+		elsif param == 1
+			render_counter self.configuration['max_value']/2
+		else
+			render_counter self.configuration['max_value']
+		end
+	end
+	def on_scroll scroll_up
+		p "[+] is there anybody out there scrolling #{scroll_up ? "up" : "down"} on my icon ?"
+		if scroll_up
+			count = [self.configuration['max_value'], self.counter + 1].min
+		else
+			count = self.counter - 1
+		end
+		render_counter count
+	end
+	def on_drop_data dropped_data
+		print "[+] ops, someone let #{dropped_data} fall into my icon"
+		self.icon.SetLabel(dropped_data)
+	end
+	def on_answer answer
+		p "[+] answer: #{answer}"
+		render_counter answer
+	end
+
+	# callbacks on the applet
+	def stop
+		p "[+] bye bye"
+		exit
+	end
+	def reload
+		p "[+] our module was reloaded, welcome back!"
+		self.icon.AddDataRenderer("gauge", 1, myApplet.config['theme'])
+		self.icon.RenderValues([Float(self.counter)/self.configuration['max_value']])
+		self.sub_icons.RemoveSubIcon("any")
+		self.sub_icons.AddSubIcons(["icon 1", "firefox-3.0", "id1", "icon 2", "natilus", "id2", "icon 3", "thunderbird", "id3"]) 
+	end
+	
+	# callbacks on the sub-icons
+	def on_click_sub_icon state, icon_id
+		p "[+] something tells me that you clicked on the icon #{icon_id}"
+	end
+
+	def render_counter cont
+		self.counter = cont																# equivalent to the set_count method in demo_python
+		percent = Float(self.counter) / self.configuration['max_value']
+		self.icon.RenderValues([percent])
+		self.icon.SetQuickInfo("#{self.counter.to_i}")
+	end
+end
+
+Applet.new.run

=== added file 'Dbus/demos/demo_ruby/demo_ruby.conf'
--- Dbus/demos/demo_ruby/demo_ruby.conf	1970-01-01 00:00:00 +0000
+++ Dbus/demos/demo_ruby/demo_ruby.conf	2011-02-23 23:29:29 +0000
@@ -0,0 +1,101 @@
+#!en;0.0.1
+
+#[gtk-about]
+[Icon]
+#j+[0;128] Desired icon size for this applet
+#{Set to 0 to use the default applet size}
+icon size = 0;0
+
+#s Name of the icon as it will appear in its label in the dock :
+name = Dbus Applet
+
+#S+ Image's filename :
+#{Let empty to use the default one.}
+icon = 
+
+#d Name of the dock it belongs to:
+dock name = 
+
+order=
+
+#F[Applet's Handbook]
+frame_hand=
+#A
+handbook=demo_ruby
+
+#[gtk-convert]
+[Desklet]
+
+#j+[48;512] Desklet's dimension (width x height) :
+#{Depending on your WindowManager, you can resize it with ALT + middle_click or ALT + left_click for exemple.}
+size = 164;96
+
+#i[-2048;2048] Desklet's position (x ; y) :
+#{Depending on your WindowManager, you can move it with ALT + left_click}
+x position=0
+#i[-2048;2048] ...
+y position=0
+
+#b Is detached from the dock ?
+initially detached=false
+#l[Normal;Keep above;Keep below;On Widget Layer;Reserve space] Accessibility :
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+accessibility=0
+#b Should be visible on all desktops ?
+sticky=true
+
+#b Lock position ?
+#{If locked, the desklet can't be moved by simply dragging it with the left mouse button. Of course you can still move it with ALT + left_click.}
+locked = false
+
+#I[-180;180] Rotation :
+#{in degrees.}
+rotation = 0
+
+use size=
+
+#F[Decorations;gtk-orientation-portrait]
+frame_deco=
+
+#o+ Choose a decoration theme for this desklet :
+#{Choose the 'personnal' one to define your own decorations below.}
+decorations = default
+
+#v
+sep_deco =
+
+#S+ Background image :
+#{It's an image that will be displayed below the drawings, like a frame for exemple. Let empty to not use any.}
+bg desklet =
+#e+[0;1] Background tansparency :
+bg alpha = 1
+#i+[0;256] Left offset :
+#{in pixels. Use this to adjust the left position of the drawings.}
+left offset = 0
+#i+[0;256] Top offset :
+#{in pixels. Use this to adjust the top position of the drawings.}
+top offset = 0
+#i+[0;256] Right offset :
+#{in pixels. Use this to adjust the right position of the drawings.}
+right offset = 0
+#i+[0;256] Bottom offset :
+#{in pixels. Use this to adjust the bottom position of the drawings.}
+bottom offset = 0
+#S+ Foreground image :
+#{It's an image that will be displayed above the drawings, like a reflect for exemple. Let empty to not use any.}
+fg desklet =
+#e+[0;1] Foreground tansparency :
+fg alpha = 1
+
+#[gtk-preferences]
+[Configuration]
+
+#h+[/usr/share/cairo-dock/gauges;gauges;gauges] Choose one of the available themes :/
+theme = Turbo-night
+
+#i[10;100] Max value :
+max value = 100
+
+#b Yes / No  ?
+yesno = false
+

=== added file 'Dbus/demos/demo_ruby/icon'
Binary files Dbus/demos/demo_ruby/icon	1970-01-01 00:00:00 +0000 and Dbus/demos/demo_ruby/icon	2011-02-23 23:29:29 +0000 differ
=== added file 'Dbus/demos/demo_ruby/preview'
Binary files Dbus/demos/demo_ruby/preview	1970-01-01 00:00:00 +0000 and Dbus/demos/demo_ruby/preview	2011-02-23 23:29:29 +0000 differ
=== modified file 'Dbus/demos/demo_vala/demo_vala.vala' (properties changed: +x to -x)
--- Dbus/demos/demo_vala/demo_vala.vala	2010-08-07 01:43:25 +0000
+++ Dbus/demos/demo_vala/demo_vala.vala	2011-02-23 23:29:29 +0000
@@ -1,9 +1,8 @@
 /* This is a part of the external demo applet for Cairo-Dock
 
-Copyright : (C) 2010 by Fabounet
+Copyright : (C) 2010-2011 by Fabounet
 E-mail : fabounet@xxxxxxxxxxxx
 
-
 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License
 as published by the Free Software Foundation; either version 2
@@ -28,12 +27,17 @@
 /// If you drop some text on the icon, it will be used as the icon's label.
 
 /// Compile it with (you may have to install valac) :
-/// valac --disable-dbus-transformation --pkg dbus-glib-1 -o demo_vala demo_vala.vala
+/// valac --pkg CDApplet -o demo_vala demo_vala.vala
+/// ou
+/// valac -q -C --disable-warnings --pkg CDApplet demo_vala.vala
+/// gcc -o demo_vala $(pkg-config --cflags --libs CDApplet) demo_vala.c
+
 
   /////////////////////////
  ///// dependancies //////
 /////////////////////////
 using GLib;
+using CairoDock.Applet;
 
 struct Config {
     public string cTheme;
@@ -41,57 +45,82 @@
     public bool yesno;
 }
 
-public class Applet : GLib.Object
+public class MyApplet : CDApplet
 {
-	// internal data.
-	private dynamic DBus.Object icon;
-	private dynamic DBus.Object sub_icons;
-	private MainLoop loop;
-	private string applet_name;
-	private string conf_file;
 	// my config.
 	private Config config;
 	// my data.
 	private int count;
 	
-	public Applet()
+	public MyApplet(string[] argv)
 	{
-		this.applet_name = GLib.Path.get_basename(GLib.Environment.get_current_dir());  // the name of the applet must the same as the folder.
-		this.conf_file = GLib.Environment.get_home_dir()+"/.config/cairo-dock/current_theme/plug-ins/"+applet_name+"/"+applet_name+".conf";  // path to the conf file of our applet.
-		this.config = Config();
+		//this.config = Config();
+		base(argv);
 	}
 	
-	public void run()
+	  ///////////////////////
+	 /// private methods ///
+	///////////////////////
+	
+	private void set_counter(int count)
 	{
-		this.connect_to_bus();
-		this.get_config();
-		this.load();
-		this.loop = new MainLoop(null, false);
-		this.loop.run();
+		this.count = count;
+		double[] percent = {1.0*this.count/this.config.iMaxValue};
+		base.icon.RenderValues(percent);
+		this.icon.SetQuickInfo("%d".printf(this.count));
 	}
 	
 	  ////////////////////////////////////////
 	 ////// callbacks on the main icon //////
 	////////////////////////////////////////
-	private void action_on_click(dynamic DBus.Object myIcon, int iState)
+	public override void on_click(int iState)
 	{
-		print (">>> clic !\n");
+		print ("*** clic !\n");
 		set_counter(GLib.Random.int_range(0,this.config.iMaxValue+1));
 	}
-	private void action_on_middle_click(dynamic DBus.Object myIcon)
-	{
-		print (">>> middle clic !\n");
-		myIcon.AskValue("Set the value you want", (double)this.count, (double)this.config.iMaxValue);
-	}
-	private void action_on_build_menu(dynamic DBus.Object myIcon)
-	{
-		print (">>> build menu !\n");
-		string[] entries = {"set min value", "set medium value", "set max value"};
-		myIcon.PopulateMenu(entries);
-	}
-	private void action_on_menu_select(dynamic DBus.Object myIcon, int iNumEntry)
-	{
-		print (">>> choice %d has been selected !\n", iNumEntry);
+	public override void on_middle_click()
+	{
+		print ("*** middle clic !\n");
+		//this.icon.AskValue("Set the value you want", (double)this.count, (double)this.config.iMaxValue);
+		HashTable<string,Variant>dialog_attributes = new HashTable<string,Variant>(str_hash, str_equal);
+		dialog_attributes.insert("icon", "stock_properties");
+		dialog_attributes.insert("message", "Set the value you want");
+		dialog_attributes.insert("buttons", "ok;cancel");
+		HashTable<string,Variant> widget_attributes = new HashTable<string,Variant>(str_hash, str_equal);  // even if you don't have widget attributes, you must fill the hash-table with at least 1 value, otherwise vala will crash :-/
+		widget_attributes.insert("widget-type","scale");
+		widget_attributes.insert("max-value",this.config.iMaxValue);
+		widget_attributes.insert("message","Set the value you want");
+		this.icon.PopupDialog(dialog_attributes, widget_attributes);
+	}
+	public override void on_build_menu()
+	{
+		print ("*** build menu !\n");
+		HashTable<string,Variant>[] pItems = {};
+		HashTable<string,Variant> pItem;
+		
+		pItem = new HashTable<string,Variant?>(str_hash, str_equal);
+		pItem.insert("label", "set min value");
+		pItem.insert("icon", "gtk-zoom-out");
+		pItem.insert("id", 0);
+		pItems += pItem;
+		
+		pItem = new HashTable<string,Variant?>(str_hash, str_equal);
+		pItem.insert("label", "set medium value");
+		pItem.insert("icon", "gtk-zoom-fit");
+		pItem.insert("id", 1);
+		pItems += pItem;
+		
+		pItem = new HashTable<string,Variant?>(str_hash, str_equal);
+		pItem.insert("label", "set max value");
+		pItem.insert("icon", "gtk-zoom-in");
+		pItem.insert("id", 2);
+		pItems += pItem;
+		
+		this.icon.AddMenuItems(pItems);
+	}
+	public override void on_menu_select(int iNumEntry)
+	{
+		print ("*** choice %d has been selected !\n", iNumEntry);
 		if (iNumEntry == 0)
 			this.set_counter(0);
 		else if (iNumEntry == 1)
@@ -99,100 +128,63 @@
 		else if (iNumEntry == 2)
 			this.set_counter(this.config.iMaxValue);
 	}
-	private void action_on_scroll(dynamic DBus.Object myIcon, bool bScrollUp)
+	public override void on_scroll(bool bScrollUp)
 	{
-		print (">>> scroll !\n");
+		print ("*** scroll !\n");
+		int count;
 		if (bScrollUp)
 			count = int.min(this.config.iMaxValue, this.count+1);
 		else
 			count = int.max(0, this.count-1);
 		this.set_counter(count);
 	}
-	private void action_on_drop_data(dynamic DBus.Object myIcon, string cReceivedData)
+	public override void on_drop_data(string cReceivedData)
 	{
-		print (">>> received : %s\n",cReceivedData);
+		print ("*** received : %s\n",cReceivedData);
 		this.icon.SetLabel(cReceivedData);
 	}
-	private void action_on_answer(dynamic DBus.Object myIcon, Value answer)
+	public override void on_answer_dialog(int iButton, Variant answer)
 	{
-		print (">>> answer : %d\n",(int)answer.get_double());
-		this.set_counter((int)answer.get_double());
+		print ("*** answer : %d\n",(int)answer.get_double());
+		if (iButton == 0)  // ok
+			this.set_counter((int)answer.get_double());
 	}
+	
 	  ////////////////////////////////////////
 	 ////// callbacks on the sub-icons //////
 	////////////////////////////////////////
-	private void action_on_click_sub_icon(dynamic DBus.Object mySubIcons, int iState, string cIconID)
+	public override void on_click_sub_icon(int iState, string cIconID)
 	{
 		print ("clic on the sub-icon '%s' !\n", cIconID);
 	}
-	  /////////////////////////////////////
-	 ////// callbacks on the applet //////
-	/////////////////////////////////////
-	private void action_on_stop(dynamic DBus.Object myIcon)
-	{
-		print (">>> our module is stopped\n");
-		loop.quit();
-	}
-
-	private void action_on_reload(dynamic DBus.Object myIcon, bool bConfigHasChanged)
-	{
-		print (">>> our module is reloaded");
-		if (bConfigHasChanged)
-		{
-			print (">>>  and our config has changed");
-			this.get_config();
-			this.icon.AddDataRenderer("gauge", 1, this.config.cTheme);
-			double[] percent = {1.0*this.count/this.config.iMaxValue};
-			this.icon.RenderValues(percent);
-			this.sub_icons.RemoveSubIcon("any");
-			string[] subicons = {"icon 1", "firefox-3.0", "id1", "icon 3", "thunderbird", "id3", "icon 4", "nautilus", "id4"};
-			this.sub_icons.AddSubIcons(subicons);
-		}
-	}
-	  //////////////////////////////////////
-	 ////// get our applet on the bus /////
-	//////////////////////////////////////
-	private void connect_to_bus()
-	{
-		string applet_path = "/org/cairodock/CairoDock/"+applet_name;  // path where our object is stored on the bus.
-		DBus.Connection bus = DBus.Bus.get (DBus.BusType.SESSION);
-		if (bus == null)
-		{
-			GLib.error (">>> module '%s' can't be found on the bus, exit.", this.applet_name);
-		}
-		this.icon = bus.get_object ("org.cairodock.CairoDock",
-			applet_path,
-			"org.cairodock.CairoDock.applet");  // this object represents our applet and also our icon. It can be either in a dock or in a desklet, we don't have to care.
-
-		////// we'll have a sub-dock, so we also get the sub-icons object //////
-		this.sub_icons = bus.get_object ("org.cairodock.CairoDock",
-			applet_path+"/sub_icons",
-			"org.cairodock.CairoDock.subapplet");  // this object represents the list of icons contained in our sub-dock, or in our desklet. We'll add them one by one later, giving them a unique ID, which will be used to identify each of them.
-		
-		this.icon.on_click += action_on_click;  // when the user left-clicks on our icon.
-		this.icon.on_middle_click += action_on_middle_click;  // when the user middle-clicks on our icon.
-		this.icon.on_build_menu += action_on_build_menu;  // when the user right-clicks on our applet (which builds the menu)
-		this.icon.on_menu_select += action_on_menu_select;  // when the user selects an entry of this menu.
-		this.icon.on_scroll += action_on_scroll;  // when the user scroll up or down on our icon.
-		this.icon.on_drop_data += action_on_drop_data;  // when the user drops something on our icon.
-		this.icon.on_answer += action_on_answer;  // when the user answer a question.
-		this.icon.on_stop_module += action_on_stop;  // when the user deactivate our applet (or the DBus plug-in, or when the Cairo-Dock is stopped).
-		this.icon.on_reload_module += action_on_reload;  // when the user changes something in our config, or when the desklet is resized (with no change in the config).
-		this.sub_icons.on_click_sub_icon += action_on_click_sub_icon;  // when the user left-clicks on a sub-icon.
-	}
-	private void get_config()
-	{
-		GLib.KeyFile keyfile = new GLib.KeyFile();
-		keyfile.load_from_file(this.conf_file, GLib.KeyFileFlags.NONE);
-		
+	
+	  ///////////////////////////////
+	 ////// applet definition //////
+	///////////////////////////////
+	public override void end()
+	{
+		print ("*** our module is stopped\n");
+	}
+
+	public override void reload()
+	{
+		this.icon.AddDataRenderer("gauge", 1, this.config.cTheme);
+		double[] percent = {1.0*this.count/this.config.iMaxValue};
+		this.icon.RenderValues(percent);
+		this.sub_icons.RemoveSubIcon("any");
+		string[] subicons = {"icon 1", "firefox-3.0", "id1", "icon 3", "thunderbird", "id3", "icon 4", "nautilus", "id4"};
+		this.sub_icons.AddSubIcons(subicons);
+	}
+	public override void get_config(GLib.KeyFile keyfile)
+	{
 		this.config.cTheme 	= keyfile.get_string("Configuration", "theme");
+		print ("cTheme: %s\n", this.config.cTheme);
 		this.config.iMaxValue 	= keyfile.get_integer("Configuration", "max value");
 		this.config.yesno 	= keyfile.get_boolean("Configuration", "yesno");
 	}
-	private void load()
+	public override void begin()
 	{
 		this.icon.ShowDialog("I'm connected to Cairo-Dock !", 4);  // show a dialog with this message for 4 seconds.
-		this.icon.SetQuickInfo("%d".printf(this.count));  // write the counter value on the icon.
 		this.icon.AddDataRenderer("gauge", 1, this.config.cTheme);  // set a gauge with the theme read in config to display the value of the counter.
 		double[] percent  = {1.0*this.count/this.config.iMaxValue};
 		this.icon.RenderValues(percent);  // draw the gauge with an initial value.
@@ -202,23 +194,16 @@
 		this.sub_icons.SetQuickInfo("1", "id1");  // write the ID on each icon of the sub-dock.
 		this.sub_icons.SetQuickInfo("3", "id3");
 		this.sub_icons.SetQuickInfo("4", "id4");
-	}
-	private void set_counter(int count)
-	{
-		this.count = count;
-		double[] percent = {1.0*this.count/this.config.iMaxValue};
-		this.icon.RenderValues(percent);
-		this.icon.SetQuickInfo("%d".printf(this.count));
+		print ("DEMO %s\n", this.config.cTheme);
 	}
 }
 
   //////////////////
  ////// main //////
 //////////////////
-static int main (string[] args)
+static int main (string[] argv)
 {	
-	var myApplet = new Applet();
+	var myApplet = new MyApplet(argv);
 	myApplet.run();
-	print("bye\n");
 	return 0;
 }

=== modified file 'Dbus/demos/demo_vala/icon' (properties changed: +x to -x)
=== modified file 'Dbus/demos/demo_vala/preview' (properties changed: +x to -x)
=== added directory 'Dbus/interfaces'
=== added file 'Dbus/interfaces/CMakeLists.txt'
--- Dbus/interfaces/CMakeLists.txt	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/CMakeLists.txt	2011-02-23 23:29:29 +0000
@@ -0,0 +1,14 @@
+
+if ("${PYTHON_FOUND}" STREQUAL "TRUE")
+	add_subdirectory(python)
+	add_subdirectory(bash)
+endif()
+if ("${RUBY_FOUND}" STREQUAL "TRUE")
+	add_subdirectory(ruby)
+endif()
+if ("${MONO_FOUND}" STREQUAL "TRUE")
+	add_subdirectory(mono)
+endif()
+if ("${with_vala}" STREQUAL "yes")
+	add_subdirectory(vala)
+endif()

=== added directory 'Dbus/interfaces/bash'
=== added file 'Dbus/interfaces/bash/BashInstall.cmake.in'
--- Dbus/interfaces/bash/BashInstall.cmake.in	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/bash/BashInstall.cmake.in	2011-02-23 23:29:29 +0000
@@ -0,0 +1,15 @@
+IF("@ROOT_PREFIX@" STREQUAL "")
+	EXEC_PROGRAM("@PYTHON_EXECUTABLE@" "${CMAKE_CURRENT_BINARY_DIR}" ARGS
+					"setup.py" "install"
+					"--prefix=${CMAKE_INSTALL_PREFIX}"
+					"@DEBIAN_INSTALL_LAYOUT@")
+ELSEIF(NOT "@ROOT_PREFIX@" STREQUAL "" AND "@python_no_deb_layout@" STREQUAL "")
+	EXEC_PROGRAM("@PYTHON_EXECUTABLE@" "${CMAKE_CURRENT_BINARY_DIR}" ARGS
+					"setup.py" "install"
+					"--root=@ROOT_PREFIX@"
+					"@DEBIAN_INSTALL_LAYOUT@")
+ELSE()
+	EXEC_PROGRAM("@PYTHON_EXECUTABLE@" "${CMAKE_CURRENT_BINARY_DIR}" ARGS
+					"setup.py" "install"
+					"--root=@ROOT_PREFIX@")
+ENDIF()

=== added file 'Dbus/interfaces/bash/CDBashApplet.py'
--- Dbus/interfaces/bash/CDBashApplet.py	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/bash/CDBashApplet.py	2011-02-23 23:29:29 +0000
@@ -0,0 +1,83 @@
+#!/usr/bin/python
+
+# This is a part of the external applets for Cairo-Dock
+# Copyright : (C) 2010-2011 by Nochka85, Fabounet and Matttbe
+# E-mail : fabounet@xxxxxxxxxxxx
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# http://www.gnu.org/licenses/licenses.html#GPL
+
+####################
+### dependancies ###
+####################
+import os.path
+from CDApplet import CDApplet
+
+####################
+### Applet class ###
+####################
+class CDBashApplet(CDApplet):
+	def __init__(self):
+		# call high-level init
+		self.app_folder = os.path.abspath(".")
+		CDApplet.__init__(self)
+	
+	##### private methods #####
+	
+	def call(self,action):
+		os.popen("cd " + self.app_folder + " && ./" + self.cAppletName + ".sh " + self.cAppletName + " " + self.cBusPath + " " + self.cConfFile + " " + self.cParentAppName + " " + action).read().rstrip()
+	
+	##### applet definition #####
+	
+	def get_config(self,keyfile):
+		self.call("get_config")
+	
+	def end(self):
+		self.call("end")
+	
+	def begin(self):
+		self.call("begin")
+	
+	def reload(self):
+		self.call("reload")
+	
+	##### callbacks #####
+	
+	def on_click(self,iState):
+		self.call("on_click "+str(iState))
+	
+	def on_middle_click(self):
+		self.call("on_middle_click")
+		
+	def on_build_menu(self):
+		self.call("on_build_menu")
+		
+	def on_menu_select(self,iNumEntry):
+		self.call("on_menu_select "+str(iNumEntry))
+	
+	def on_scroll(self,bScrollUp):
+		self.call("on_scroll "+str(bScrollUp))
+	
+	def on_drop_data(self,cReceivedData):
+		self.call("on_drop_data '"+cReceivedData+"'")
+	
+	def on_answer_dialog(self, button, answer):
+		self.call("on_answer_dialog "+str(button)+" '"+str(answer)+"'")
+	
+	def on_shortkey(self,key):
+		self.call("on_shortkey '"+key+"'")
+	
+	def on_change_focus(self,bIsActive):
+		self.call("on_change_focus '"+str(bIsActive)+"'")
+	
+	def on_click_sub_icon(self, iState, cIconID):
+		self.call("on_click_sub_icon '"+str(iState)+"' '"+cIconID+"'")
+	

=== added file 'Dbus/interfaces/bash/CDBashApplet.sh'
--- Dbus/interfaces/bash/CDBashApplet.sh	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/bash/CDBashApplet.sh	2011-02-23 23:29:29 +0000
@@ -0,0 +1,178 @@
+#!/bin/bash
+
+# This is a part of the external applets for Cairo-Dock
+# Copyright : (C) 2010-2011 by Nochka85
+#                      modified by matttbe for the new API
+#                      (based on the demo.py by Fabounet)
+# E-mail : fabounet@xxxxxxxxxxxx, nochka85@xxxxxxxxxxxx
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# http://www.gnu.org/licenses/licenses.html#GPL
+
+## Rev : 09/02/2011
+
+APP_NAME="$1"
+shift 1
+DBUS_NAME="org.cairodock.CairoDock"
+DBUS_PATH="$1"
+shift 1
+DBUS_INTERFACE="org.cairodock.CairoDock"
+CONF_FILE="$1"
+shift 1
+PARENT_APP_NAME="$1"
+shift 1
+
+BOTTOM=0
+TOP=1
+RIGHT=2
+LEFT=3
+DOCK=0
+DESKLET=1
+UPPER_LEFT=0
+LOWER_RIGHT=1
+LOWER_LEFT=2
+UPPER_RIGHT=3
+MIDDLE=4
+MENU_ENTRY=0
+MENU_SUB_MENU=1
+MENU_SEPARATOR=2
+MENU_CHECKBOX=3
+MENU_RADIO_BUTTON=4
+MAIN_MENU_ID=0
+DIALOG_KEY_ENTER=-1
+DIALOG_KEY_ESCAPE=-2
+
+call() {  # method, args
+	method=$1
+	shift 1
+	command=`echo -e "dbus-send --session --dest=$DBUS_NAME $DBUS_PATH $DBUS_INTERFACE.applet.$method $*"`
+	eval $command
+}
+
+call_sub_icon() { # method, args
+	method=$1
+	shift
+	command=`echo "dbus-send --session --dest=$DBUS_NAME $DBUS_PATH/sub_icons $DBUS_INTERFACE.subapplet.$method $*"`
+	eval $command
+}
+
+get_conf_param() { # group, key
+	LINE=`cat $CONF_FILE | grep "$1"`
+	echo $LINE | cut -f2 -d '='
+}
+
+#############################################################################################################
+
+on_click()
+{
+	echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> Left clic !"
+}
+
+on_middle_click()
+{
+	echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> Middle clic !"
+}
+
+on_scroll_icon()
+{
+	echo -n "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> Scroll"
+	if [ $1 -eq 1 ]; then
+		echo " UP !"
+	else
+		echo " DOWN !"
+	fi
+}
+
+on_drop_data()
+{
+	echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> $1 has been dropped on applet !"
+}
+
+on_build_menu()
+{
+	echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> Build menu !"
+}
+
+on_menu_select()
+{
+	echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> Choice $1 has been selected !"
+}
+
+on_shortkey()
+{
+	echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> key $1 has been pressed !"
+}
+
+on_change_focus()
+{
+	echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> focus has changed to $1 !"
+}
+
+on_answer_dialog()
+{
+	echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> $2 has been answered with button $1!"
+}
+
+on_click_sub_icon()
+{
+	echo "$APP_NAME applet -> Script Name : $SCRIPT_NAME -> sub-icon $2 has been left-clicked !"
+}
+
+#############################################################################################################
+
+begin()
+{
+	echo "start !"
+}
+
+end()
+{
+	echo "stop !"
+}
+
+reload()
+{
+	echo "reload !"
+}
+
+#############################################################################################################
+
+run()
+{
+	shift 4
+	if [ "$1" = "on_click" ]; then
+		on_click $2
+	elif [ "$1" = "on_middle_click" ]; then
+		on_middle_click
+	elif [ "$1" = "on_scroll" ]; then
+		on_scroll_icon $2
+	elif [ "$1" = "on_drop_data" ]; then
+		on_drop_data "$2"
+	elif [ "$1" = "on_build_menu" ]; then
+		on_build_menu
+	elif [ "$1" = "on_menu_select" ]; then
+		on_menu_select $2
+	elif [ "$1" = "on_answer_dialog" ]; then
+		on_answer_dialog $2 "$3"
+	elif [ "$1" = "on_shortkey" ]; then
+		on_shortkey "$2"
+	elif [ "$1" = "on_change_focus" ]; then
+		on_change_focus $2
+	elif [ "$1" = "on_click_sub_icon" ]; then
+		on_click_sub_icon $2 "$3"
+	elif [ "$1" = "begin" ]; then
+		begin
+	elif [ "$1" = "end" ]; then
+		end
+	elif [ "$1" = "reload" ]; then
+		reload
+	fi
+}

=== added file 'Dbus/interfaces/bash/CMakeLists.txt'
--- Dbus/interfaces/bash/CMakeLists.txt	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/bash/CMakeLists.txt	2011-02-23 23:29:29 +0000
@@ -0,0 +1,19 @@
+
+########### install files ###############
+
+# the python script goes with other python scripts.
+if (NOT "${CMAKE_CURRENT_BINARY_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
+	# copy *.py to current binary dir (cleaner)
+	execute_process(COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/setup.py" "${CMAKE_CURRENT_SOURCE_DIR}/CDBashApplet.py" ${CMAKE_CURRENT_BINARY_DIR})
+	exec_program("${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_BINARY_DIR}" ARGS "setup.py" "-q" "build")
+endif()
+# Run a custom script with 'make install' 
+add_custom_target(bash_pyc ALL)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/BashInstall.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/BashInstall.cmake)
+set_target_properties(bash_pyc PROPERTIES POST_INSTALL_SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/BashInstall.cmake)
+
+# and the bash functions goes into the data dir of the applet (didn't find a better place).
+install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/CDBashApplet.sh
+	DESTINATION ${dbusdatadir}
+	PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
+WORLD_READ WORLD_EXECUTE)

=== added file 'Dbus/interfaces/bash/setup.py'
--- Dbus/interfaces/bash/setup.py	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/bash/setup.py	2011-02-23 23:29:29 +0000
@@ -0,0 +1,25 @@
+# This is a part of the external demo applet for Cairo-Dock
+# Copyright : (C) 2011 by matttbe
+# E-mail : matttbe@xxxxxxxxxxxx
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# http://www.gnu.org/licenses/licenses.html#GPL
+
+from distutils.core import setup
+setup(name='CDBashApplet',
+		version='1.0',
+		license='GPL-3',
+		author='Fabrice Rey',
+		author_email='fabounet@xxxxxxxxxxxx',
+		description='Bash interface for Cairo-Dock',
+		url='https://launchpad.net/cairo-dock',
+		py_modules=['CDBashApplet']
+	)

=== added directory 'Dbus/interfaces/mono'
=== added file 'Dbus/interfaces/mono/CDApplet.cs'
--- Dbus/interfaces/mono/CDApplet.cs	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/mono/CDApplet.cs	2011-02-23 23:29:29 +0000
@@ -0,0 +1,273 @@
+//
+//
+//This is a part of the external demo applet for Cairo-Dock
+//
+//Copyright : (C) 2010-2011 by Fabounet
+//E-mail : fabounet@xxxxxxxxxxxx
+//
+//
+//This program is free software; you can redistribute it and/or
+//modify it under the terms of the GNU General Public License
+//as published by the Free Software Foundation; either version 2
+//of the License, or (at your option) any later version.
+//
+//This program is distributed in the hope that it will be useful,
+//but WITHOUT ANY WARRANTY; without even the implied warranty of
+//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+//GNU General Public License for more details.
+//http://www.gnu.org/licenses/licenses.html//GPL
+
+// Base class for Cairo-Dock's applets.
+// Make your own class derive from a CDApplet, and override the functions you need (the ones which don't start with an underscore).
+
+// Compile it with the following command, then rename 'demo_mono.exe' to 'demo_mono'.
+// gmcs /target:library CDApplet.cs ISubApplet.cs IApplet.cs -pkg:glib-sharp-2.0 -pkg:ndesk-dbus-1.0 -pkg:ndesk-dbus-glib-1.0
+  //////////////////////////
+ ////// dependancies //////
+//////////////////////////
+using System;  // Environment
+using System.IO;  // Path, Directory
+using System.Reflection;
+using GLib;
+using NDesk.DBus;
+using CairoDock.Applet;
+
+//namespace CairoDock.Applet
+//{
+public class CDApplet
+{
+	public string cAppletName = null;
+	public string cParentAppName = null;
+	public string cBusPath = null;
+	public string cConfFile = null;
+	public IApplet icon = null;
+	public ISubApplet sub_icons= null;
+	private GLib.MainLoop loop = null;
+	private string cMenuIconId = null;
+	
+	public enum ScreenPosition {
+		BOTTOM = 0,
+		TOP,
+		RIGHT,
+		LEFT
+	}
+	public enum ContainerType {
+		DOCK = 0,
+		DESKLET
+	}
+	public enum EmblemPosition {
+		UPPER_LEFT = 0,
+		LOWER_RIGHT,
+		LOWER_LEFT,
+		UPPER_RIGHT,
+		MIDDLE
+	}
+	public enum MenuItemType {
+		MENU_ENTRY = 0,
+		MENU_SUB_MENU,
+		MENU_SEPARATOR,
+		MENU_CHECKBOX,
+		MENU_RADIO_BUTTON
+	}
+
+	public enum MenuItemId {
+		MAIN_MENU_ID = 0
+    }
+    
+	public enum DialogKey {
+		DIALOG_KEY_ENTER = -1,
+		DIALOG_KEY_ESCAPE = -2
+    }
+	
+	public CDApplet()
+	{
+		String[] argv = Environment.GetCommandLineArgs();
+		this.cAppletName = argv[0].Substring(2);
+		this.cBusPath = argv[2];
+		this.cConfFile = argv[3];
+		this.cParentAppName = argv[4];
+		
+		this._get_config ();
+		this._connect_to_dock ();
+	}
+	
+	public void run()
+	{
+		this.begin();
+		loop = new GLib.MainLoop();
+		loop.Run();
+		Console.WriteLine(">>> Applet " + this.cAppletName + " terminated");
+	}
+	
+	//////////////////////////////////
+	/// callbacks on the main icon ///
+	//////////////////////////////////
+	
+	public virtual void on_click (int iClickState)
+	{
+		Console.WriteLine(">>> click");
+	}
+	public virtual void on_middle_click ()
+	{
+		Console.WriteLine(">>> middle click");
+	}
+	public virtual void on_scroll (bool bScrollUp)
+	{
+		Console.WriteLine(">>> scroll up " + bScrollUp);
+	}
+	private void _on_build_menu ()
+	{
+		this.cMenuIconId = null;
+		this.on_build_menu ();
+	}
+	public virtual void on_build_menu ()
+	{
+		Console.WriteLine(">>> build menu");
+	}
+	private void _on_menu_select (int iNumEntry)
+	{
+		if (this.cMenuIconId == null)
+			this.on_menu_select (iNumEntry);
+		else
+			this.on_menu_select_sub_icon (iNumEntry, this.cMenuIconId);
+	}
+	public virtual void on_menu_select (int iNumEntry)
+	{
+		Console.WriteLine(">>> select entry : "+iNumEntry);
+	}
+	public virtual void on_drop_data (string cReceivedData)
+	{
+		Console.WriteLine(">>> drop : "+cReceivedData);
+	}
+	public virtual void on_answer (System.Object answer)
+	{
+		Console.WriteLine(">>> answer : "+answer);
+	}
+	public virtual void on_answer_dialog (int iButton, System.Object answer)
+	{
+		Console.WriteLine(">>> answer : "+answer);
+	}
+	public virtual void on_shortkey (string cKey)
+	{
+		Console.WriteLine(">>> key : "+cKey);
+	}
+	public virtual void on_change_focus (bool bIsActive)
+	{
+		Console.WriteLine(">>> focus changed : "+bIsActive);
+	}
+	
+	//////////////////////////////////
+	/// callbacks on the sub-icons ///
+	//////////////////////////////////
+	
+	public virtual void on_click_sub_icon (int iClickState, string cIconID)
+	{
+		Console.WriteLine(">>> click on sub-icon "+cIconID);
+	}
+	
+	public virtual void on_middle_click_sub_icon (string cIconID)
+	{
+		Console.WriteLine(">>> middle-click on sub-icon "+cIconID);
+	}
+	
+	public virtual void on_scroll_sub_icon (bool bScrollUp, string cIconID)
+	{
+		Console.WriteLine(">>> scroll on sub-icon "+cIconID);
+	}
+	
+	private void _on_build_menu_sub_icon (string cIconID)
+	{
+		this.cMenuIconId = cIconID;
+		this.on_build_menu_sub_icon (cIconID);
+	}
+	public virtual void on_build_menu_sub_icon (string cIconID)
+	{
+		Console.WriteLine(">>> menu on sub-icon "+cIconID);
+	}
+	
+	public virtual void on_menu_select_sub_icon (int iNumEntry, string cIconID)
+	{
+		Console.WriteLine(">>> menu entry "+iNumEntry+" selected on sub-icon "+cIconID);
+	}
+	
+	public virtual void on_drop_data_sub_icon (string cReceivedData, string cIconID)
+	{
+		Console.WriteLine(">>> data "+cReceivedData+" dropped on sub-icon "+cIconID);
+	}
+	
+	public virtual void on_answer_sub_icon (System.Object answer, string cIconID)
+	{
+		Console.WriteLine(">>> answer "+answer+" from sub-icon "+cIconID);
+	}
+	
+	///////////////////////////////
+	/// callbacks on the applet ///
+	///////////////////////////////
+	
+	public virtual void begin ()
+	{
+		
+	}
+	
+	public virtual void end ()
+	{
+		
+	}
+	
+	private void _on_stop ()
+	{
+		this.end();
+		this.loop.Quit();
+	}
+	
+	public virtual void reload ()
+	{
+		
+	}
+	
+	private void _on_reload (bool bConfigHasChanged)
+	{
+		if (bConfigHasChanged)
+		{
+			this._get_config();
+			this.reload();
+		}
+	}
+	
+	public virtual void get_config (string cConfFile_path)
+	{
+		
+	}
+	
+	private void _get_config()
+	{
+		this.get_config(this.cConfFile);
+	}
+	
+	private void _connect_to_dock ()
+	{
+		NDesk.DBus.BusG.Init();
+		NDesk.DBus.Bus bus = NDesk.DBus.Bus.Session;
+		this.icon = bus.GetObject<IApplet> ("org.cairodock.CairoDock", new ObjectPath (this.cBusPath));
+		this.icon.on_click 			+= new OnClickEvent (on_click);
+		this.icon.on_middle_click 	+= new OnMiddleClickEvent (on_middle_click);
+		this.icon.on_scroll 		+= new OnScrollEvent (on_scroll);
+		this.icon.on_build_menu 	+= new OnBuildMenuEvent (_on_build_menu);
+		this.icon.on_menu_select 	+= new OnMenuSelectEvent (_on_menu_select);
+		this.icon.on_drop_data 		+= new OnDropDataEvent (on_drop_data);
+		this.icon.on_answer 		+= new OnAnswerEvent (on_answer);
+		this.icon.on_answer_dialog 	+= new OnAnswerDialogEvent (on_answer_dialog);
+		this.icon._on_stop 			+= new OnStopModuleEvent (_on_stop);
+		this.icon._on_reload 		+= new OnReloadModuleEvent (_on_reload);
+		
+		this.sub_icons = bus.GetObject<ISubApplet>("org.cairodock.CairoDock", new ObjectPath(this.cBusPath + "/sub_icons"));
+		this.sub_icons.on_click_sub_icon			+= new OnClickSubIconEvent (on_click_sub_icon);
+		this.sub_icons.on_middle_click_sub_icon 	+= new OnMiddleClickSubIconEvent (on_middle_click_sub_icon);
+		this.sub_icons.on_scroll_sub_icon 		+= new OnScrollSubIconEvent (on_scroll_sub_icon);
+		this.sub_icons.on_build_menu_sub_icon 	+= new OnBuildMenuSubIconEvent (_on_build_menu_sub_icon);
+		this.sub_icons.on_menu_select_sub_icon 	+= new OnMenuSelectSubIconEvent (on_menu_select_sub_icon);
+		this.sub_icons.on_drop_data_sub_icon 	+= new OnDropDataSubIconEvent (on_drop_data_sub_icon);
+		this.sub_icons.on_answer_sub_icon 		+= new OnAnswerSubIconEvent (on_answer_sub_icon);
+	}
+}
+//}

=== added file 'Dbus/interfaces/mono/CMakeLists.txt'
--- Dbus/interfaces/mono/CMakeLists.txt	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/mono/CMakeLists.txt	2011-02-23 23:29:29 +0000
@@ -0,0 +1,13 @@
+	
+########### install files ###############
+
+execute_process(COMMAND ${GMCS_EXECUTABLE}
+	-target:library
+	-pkg:glib-sharp-2.0 -pkg:ndesk-dbus-1.0 -pkg:ndesk-dbus-glib-1.0
+	-out:${CMAKE_CURRENT_BINARY_DIR}/CDApplet.dll
+	${CMAKE_CURRENT_SOURCE_DIR}/CDApplet.cs ${CMAKE_CURRENT_SOURCE_DIR}/ISubApplet.cs ${CMAKE_CURRENT_SOURCE_DIR}/IApplet.cs)
+### find how to register to GAC ...
+set (MONO_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib/cli")
+install (FILES ${CMAKE_CURRENT_BINARY_DIR}/CDApplet.dll
+	DESTINATION ${MONO_LIB_DIR})
+

=== added file 'Dbus/interfaces/mono/IApplet.cs'
--- Dbus/interfaces/mono/IApplet.cs	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/mono/IApplet.cs	2011-02-23 23:29:29 +0000
@@ -0,0 +1,91 @@
+using System;
+using System.Collections.Generic;  // Dictionnary
+using NDesk.DBus;
+
+namespace CairoDock.Applet
+{
+	public enum AppletEmblemPosition
+	{
+		UpperLeft,
+		LowerRight,
+		LowerLeft,
+		UpperRight,
+		Middle
+	}
+	
+	public enum AppletContainerType
+	{
+		Dock,
+		Desklet
+	}
+	
+	public enum AppletOrientationType
+	{
+		Bottom,
+		Top,
+		Right,
+		Left
+	}
+
+	[NDesk.DBus.Interface("org.cairodock.CairoDock.applet")]
+	public interface IApplet
+	{
+		object Get(string cProperty);
+		Dictionary<string, object> GetAll();
+		void SetQuickInfo(string cQuickInfo);
+		void SetLabel(string cLabel);
+		void SetIcon(string cImage);
+		void SetEmblem(string cImage, int iPosition);
+		void Animate(string cAnimation, int iNbRounds);
+		void DemandsAttention(bool bStart, string cAnimation);
+		void ShowDialog(string cMessage, int iDuration);
+		void AskQuestion(string cMessage);
+		void AskValue(string cMessage, double fInitialValue, double fMaxlValue);
+		void AskText(string cMessage, string cInitialText);
+		void PopupDialog(Dictionary<string, object> hDialogAttributes, Dictionary<string, object> hWidgetAttributes);
+		void AddDataRenderer(string cType, int iNbValues, string cTheme);
+		void RenderValues(double[] pValues);
+		void ControlAppli(string cApplicationClass);
+		void ShowAppli(bool bShow);
+		void PopulateMenu(string[] pLabels);
+		void AddMenuItems(Dictionary<string, object>[] pItems);
+		void BindShortkey(string[] cShortkeys);
+		event OnClickEvent on_click;
+		event OnMiddleClickEvent on_middle_click;
+		event OnScrollEvent on_scroll;
+		event OnBuildMenuEvent on_build_menu;
+		event OnMenuSelectEvent on_menu_select;
+		event OnDropDataEvent on_drop_data;
+		event OnChangeFocusEvent on_change_focus;
+		event OnAnswerEvent on_answer;
+		event OnAnswerDialogEvent on_answer_dialog;
+		event OnShortkeyEvent on_shortkey;
+		event OnStopModuleEvent _on_stop;
+		event OnReloadModuleEvent _on_reload;
+	}
+
+	public delegate void OnClickEvent(int iButtonState);
+
+	public delegate void OnMiddleClickEvent();
+
+	public delegate void OnScrollEvent(bool bDirectionUp);
+
+	public delegate void OnBuildMenuEvent();
+
+	public delegate void OnMenuSelectEvent(int iNumEntry);
+
+	public delegate void OnDropDataEvent(string cReceivedData);
+
+	public delegate void OnChangeFocusEvent(bool is_active);
+
+	public delegate void OnAnswerEvent(object answer);
+
+	public delegate void OnAnswerDialogEvent(int iClickedButton, object answer);
+
+	public delegate void OnShortkeyEvent(string cShortkey);
+
+	public delegate void OnStopModuleEvent();
+
+	public delegate void OnReloadModuleEvent(bool bConfigHasChanged);
+
+}

=== added file 'Dbus/interfaces/mono/ISubApplet.cs'
--- Dbus/interfaces/mono/ISubApplet.cs	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/mono/ISubApplet.cs	2011-02-23 23:29:29 +0000
@@ -0,0 +1,43 @@
+using System;
+using System.Collections.Generic;  // Dictionnary
+using NDesk.DBus;
+
+namespace CairoDock.Applet
+{
+    [Interface("org.cairodock.CairoDock.subapplet")]
+    public interface ISubApplet
+    {
+        void SetQuickInfo(string cQuickInfo, string cIconID);
+        void SetLabel(string cLabel, string cIconID);
+        void SetIcon(string cImage, string cIconID);
+        void SetEmblem(string cImage, int iPosition, string cIconID);
+        void Animate(string cAnimation, int iNbRounds, string cIconID);
+        void ShowDialog(string message, int iDuration, string cIconID);
+        void AskQuestion(string cMessage, string cIconID);
+        void AskValue(string cMessage, double fInitialValue, double fMaxlValue, string cIconID);
+        void AskText(string cMessage, string cInitialText, string cIconID);
+        void AddSubIcons(string[] pIconFields);
+        void RemoveSubIcon(string cIconID);
+        event OnClickSubIconEvent on_click_sub_icon;
+        event OnMiddleClickSubIconEvent on_middle_click_sub_icon;
+        event OnScrollSubIconEvent on_scroll_sub_icon;
+        event OnBuildMenuSubIconEvent on_build_menu_sub_icon;
+        event OnMenuSelectSubIconEvent on_menu_select_sub_icon;
+        event OnDropDataSubIconEvent on_drop_data_sub_icon;
+        event OnAnswerSubIconEvent on_answer_sub_icon;
+    }
+
+    public delegate void OnClickSubIconEvent(int iButtonState, string cIconID);
+
+    public delegate void OnMiddleClickSubIconEvent(string cIconID);
+
+    public delegate void OnScrollSubIconEvent(bool bDirectionUp, string cIconID);
+
+    public delegate void OnBuildMenuSubIconEvent(string cIconID);
+
+    public delegate void OnMenuSelectSubIconEvent(int iNumEntry, string cIconID);
+
+    public delegate void OnDropDataSubIconEvent(string cReceivedData, string cIconID);
+
+    public delegate void OnAnswerSubIconEvent(object answer, string cIconID);
+}

=== added directory 'Dbus/interfaces/python'
=== added file 'Dbus/interfaces/python/CDApplet.py'
--- Dbus/interfaces/python/CDApplet.py	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/python/CDApplet.py	2011-02-23 23:29:29 +0000
@@ -0,0 +1,246 @@
+# This is a part of the external demo applet for Cairo-Dock
+# Copyright : (C) 2010-2011 by Fabounet
+# E-mail : fabounet@xxxxxxxxxxxx
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# http://www.gnu.org/licenses/licenses.html#GPL
+
+# Base class for Cairo-Dock's applets.
+# Make your own class derive from a CDApplet, and override the functions you need (the ones which don't start with an underscore).
+
+####################
+### dependancies ###
+####################
+import sys
+import os.path
+import ConfigParser
+import gobject
+import glib
+import dbus
+from dbus.mainloop.glib import DBusGMainLoop
+
+DBusGMainLoop(set_as_default=True)
+
+####################
+### Applet class ###
+####################
+class CDApplet:
+	
+	BOTTOM = 0
+	TOP    = 1
+	RIGHT  = 2
+	LEFT   = 3
+	
+	DOCK    = 0
+	DESKLET = 1
+	
+	UPPER_LEFT  = 0
+	LOWER_RIGHT = 1
+	LOWER_LEFT  = 2
+	UPPER_RIGHT = 3
+	MIDDLE      = 4
+	
+	MENU_ENTRY        = 0
+	MENU_SUB_MENU     = 1
+	MENU_SEPARATOR    = 2
+	MENU_CHECKBOX     = 3
+	MENU_RADIO_BUTTON = 4
+
+	MAIN_MENU_ID = 0
+	
+	DIALOG_KEY_ENTER = -1
+	DIALOG_KEY_ESCAPE = -2
+	
+	def __init__(self):
+		""" initialize the applet. Must be called by any class that inheritates from it.
+		It defines the following:
+		 - icon : our main icon
+		 - sub_icons: our sub-icons
+		 - config : a dictionnary where our configuration parameters are stored
+		 - cAppletName : name of our applet (the same as the folder where files are stored)
+		 - cConfFile : path to our config file (you will rarely need it)
+		 """
+		self.icon = None
+		self.sub_icons = None
+		self.config = {}
+		self.loop = None
+		self._bEnded = False
+		self._cMenuIconId = None
+		self.cAppletName = sys.argv[0][2:]
+		self.cBusPath = sys.argv[2]
+		self.cConfFile = sys.argv[3]
+		self.cParentAppName = sys.argv[4]
+		
+		self._get_config()
+		self._connect_to_dock()
+	
+	def run(self):
+		""" start the applet and enter the main loop; we never get out of this function """
+		self.begin()
+		if not self._bEnded:  # _bEnded can be true if the applet runs its own main loop, in which case we stay stuck in the 'begin' function until the end of the applet; in this case, we don't want to run a main loop again!
+			self.loop = gobject.MainLoop()
+			self.loop.run()
+		print ">>> applet '"+self.cAppletName+"' terminated."
+		sys.exit(0)
+	
+	##################################
+	### callbacks on the main icon ###
+	##################################
+	def on_click(self,iState):
+		""" action on click """
+		pass
+	
+	def on_middle_click(self):
+		""" action on middle-click """
+		pass
+	
+	def _on_build_menu(self):
+		self._cMenuIconId = None
+		self.on_build_menu()
+		pass
+		
+	def on_build_menu(self):
+		""" build our menu """
+		pass
+	
+	def _on_menu_select(self,iNumEntry):
+		if self._cMenuIconId == None:
+			self.on_menu_select(iNumEntry)
+		else:
+			self.on_menu_select_sub_icon(iNumEntry,self._cMenuIconId)
+	
+	def on_menu_select(self,iNumEntry):
+		""" action on selecting an entry of our menu """
+		pass
+	
+	def on_scroll(self,bScrollUp):
+		""" action on scroll """
+		pass
+	
+	def on_drop_data(self,cReceivedData):
+		""" action on dropping something on our applet """
+	
+	def on_answer(self,answer):
+		""" action on answering ok to a dialog with ok/cancel buttons (deprecated) """
+		pass
+	
+	def on_answer_dialog(self, button, answer):
+		""" action on answering a dialog """
+		if button == -1 or button == 0:
+			self.on_answer(answer)
+	
+	def on_shortkey(self,cKey):
+		""" action on pressing one of the shortkeys we bound beforehand """
+		pass
+	
+	def on_change_focus(self,bIsActive):
+		""" action when the window controlled by the applet takes or looses the focus """
+		pass
+	
+	##################################
+	### callbacks on the sub-icons ###
+	##################################
+	def on_click_sub_icon(self, iState, cIconID):
+		""" action on click on one of our sub-icons"""
+		pass
+	
+	def on_middle_click_sub_icon(self, cIconID):
+		""" action on middle-click on one of our sub-icons"""
+		pass
+	
+	def on_scroll_sub_icon(self, bScrollUp, cIconID):
+		""" action on scroll on one of our sub-icons"""
+		pass
+	
+	def _on_build_menu_sub_icon(self, cIconID):
+		self._cMenuIconId = cIconID
+		self.on_build_menu_sub_icon(cIconID)
+	
+	def on_build_menu_sub_icon(self, cIconID):
+		""" build our menu on one of our sub-icons"""
+		pass
+	
+	def on_menu_select_sub_icon(self, iNumEntry, cIconID):
+		""" action on selecting an entry of our menu on a sub-icon"""
+		pass
+	
+	def on_drop_data_sub_icon(self, cReceivedData, cIconID):
+		""" action on dropping something on one of our sub-icons"""
+		pass
+	
+	def on_answer_dialog_sub_icon(self, button, answer, cIconID):
+		""" action on answering a dialog about a sub-icon"""
+		pass
+	
+	###############################
+	### callbacks on the applet ###
+	###############################
+	def begin(self):
+		""" action when the applet is started """
+		pass
+	
+	def end(self):
+		""" action when the applet is terminated """
+		pass
+	
+	def _on_stop(self):
+		self._bEnded = True
+		self.end()
+		if self.loop != None:
+			self.loop.quit()
+	
+	def reload(self):
+		""" called when our applet is reloaded (config parameters have changed) """
+		pass
+	
+	def _on_reload(self,bConfigHasChanged):
+		if bConfigHasChanged:
+			self._get_config()
+			self.reload()
+	
+	def get_config(self,keyfile):
+		""" get our parameters from the key-file """
+		pass
+	
+	def _get_config(self):
+		keyfile = ConfigParser.RawConfigParser()
+		keyfile.read(self.cConfFile)
+		self.get_config(keyfile)
+	
+	def _connect_to_dock(self):
+		# get our applet on the bus.
+		#~ applet_path = "/org/cairodock/CairoDock/"+self.cAppletName  # path where our object is stored on the bus.
+		bus = dbus.SessionBus()
+		try:
+			applet_object = bus.get_object("org.cairodock.CairoDock", self.cBusPath)
+		except:
+			print ">>> object '"+self.cBusPath+"' can't be found on the bus, exit.\nMake sure that the 'Dbus' plug-in is activated in Cairo-Dock"
+			sys.exit(2)
+		self.icon = dbus.Interface(applet_object, "org.cairodock.CairoDock.applet")  # this object represents our icon inside the dock or a desklet.
+		sub_icons_object = bus.get_object("org.cairodock.CairoDock", self.cBusPath+"/sub_icons")
+		self.sub_icons = dbus.Interface(sub_icons_object, "org.cairodock.CairoDock.subapplet")  # this object represents the list of icons contained in our sub-dock, or in our desklet. We'll add them one by one later, giving them a unique ID, which will be used to identify each of them.
+		# connect to signals.
+		self.icon.connect_to_signal("on_click", self.on_click)  # when the user left-clicks on our icon.
+		self.icon.connect_to_signal("on_middle_click", self.on_middle_click)  # when the user middle-clicks on our icon.
+		self.icon.connect_to_signal("on_build_menu", self._on_build_menu)  # when the user right-clicks on our applet (which builds the menu)
+		self.icon.connect_to_signal("on_menu_select", self._on_menu_select)  # when the user selects an entry of this menu.
+		self.icon.connect_to_signal("on_scroll", self.on_scroll)  # when the user scroll up or down on our icon.
+		self.icon.connect_to_signal("on_drop_data", self.on_drop_data)  # when the user drops something on our icon.
+		self.icon.connect_to_signal("on_answer_dialog", self.on_answer_dialog)  # when the user answer a question.
+		self.icon.connect_to_signal("on_shortkey", self.on_shortkey)  # when the user press the shortkey.
+		self.icon.connect_to_signal("on_change_focus", self.on_change_focus)  # when the window's focus changes.
+		self.icon.connect_to_signal("on_stop_module", self._on_stop)  # when the user deactivate our applet (or the DBus plug-in, or when the Cairo-Dock is stopped).
+		self.icon.connect_to_signal("on_reload_module", self._on_reload)  # when the user changes something in our config, or when the desklet is resized (with no change in the config).
+		self.sub_icons.connect_to_signal("on_click_sub_icon", self.on_click_sub_icon)  # when the user left-clicks on a sub-icon.
+		self.sub_icons.connect_to_signal("on_middle_click_sub_icon", self.on_middle_click_sub_icon)
+		self.sub_icons.connect_to_signal("on_scroll_sub_icon", self.on_scroll_sub_icon)
+		self.sub_icons.connect_to_signal("on_build_menu_sub_icon", self._on_build_menu_sub_icon)
+		self.sub_icons.connect_to_signal("on_drop_data_sub_icon", self.on_drop_data_sub_icon)

=== added file 'Dbus/interfaces/python/CMakeLists.txt'
--- Dbus/interfaces/python/CMakeLists.txt	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/python/CMakeLists.txt	2011-02-23 23:29:29 +0000
@@ -0,0 +1,13 @@
+
+########### install files ###############
+
+if (NOT "${CMAKE_CURRENT_BINARY_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
+	# copy *.py to current binary dir (cleaner)
+	execute_process(COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/setup.py" "${CMAKE_CURRENT_SOURCE_DIR}/CDApplet.py" ${CMAKE_CURRENT_BINARY_DIR})
+	exec_program("${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_BINARY_DIR}" ARGS "setup.py" "-q" "build")
+endif()
+# Run a custom script with 'make install' 
+add_custom_target(python_pyc ALL)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/PythonInstall.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/PythonInstall.cmake)
+set_target_properties(python_pyc PROPERTIES POST_INSTALL_SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/PythonInstall.cmake)
+# execute_process(COMMAND python setup.py install ${DEBIAN_INSTALL_LAYOUT})

=== added file 'Dbus/interfaces/python/PythonInstall.cmake.in'
--- Dbus/interfaces/python/PythonInstall.cmake.in	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/python/PythonInstall.cmake.in	2011-02-23 23:29:29 +0000
@@ -0,0 +1,15 @@
+IF("@ROOT_PREFIX@" STREQUAL "")
+	EXEC_PROGRAM("@PYTHON_EXECUTABLE@" "${CMAKE_CURRENT_BINARY_DIR}" ARGS
+					"setup.py" "install"
+					"--prefix=${CMAKE_INSTALL_PREFIX}"
+					"@DEBIAN_INSTALL_LAYOUT@")
+ELSEIF(NOT "@ROOT_PREFIX@" STREQUAL "" AND "@python_no_deb_layout@" STREQUAL "")
+	EXEC_PROGRAM("@PYTHON_EXECUTABLE@" "${CMAKE_CURRENT_BINARY_DIR}" ARGS
+					"setup.py" "install"
+					"--root=@ROOT_PREFIX@"
+					"@DEBIAN_INSTALL_LAYOUT@")
+ELSE()
+	EXEC_PROGRAM("@PYTHON_EXECUTABLE@" "${CMAKE_CURRENT_BINARY_DIR}" ARGS
+					"setup.py" "install"
+					"--root=@ROOT_PREFIX@")
+ENDIF()

=== added file 'Dbus/interfaces/python/setup.py'
--- Dbus/interfaces/python/setup.py	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/python/setup.py	2011-02-23 23:29:29 +0000
@@ -0,0 +1,25 @@
+# This is a part of the external demo applet for Cairo-Dock
+# Copyright : (C) 2011 by matttbe
+# E-mail : matttbe@xxxxxxxxxxxx
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# http://www.gnu.org/licenses/licenses.html#GPL
+
+from distutils.core import setup
+setup(name='CDApplet',
+		version='1.0',
+		license='GPL-3',
+		author='Fabrice Rey',
+		author_email='fabounet@xxxxxxxxxxxx',
+		description='Python interface for Cairo-Dock',
+		url='https://launchpad.net/cairo-dock',
+		py_modules=['CDApplet']
+	)

=== added directory 'Dbus/interfaces/ruby'
=== added file 'Dbus/interfaces/ruby/CDApplet.rb'
--- Dbus/interfaces/ruby/CDApplet.rb	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/ruby/CDApplet.rb	2011-02-23 23:29:29 +0000
@@ -0,0 +1,291 @@
+#!/usr/bin/ruby
+
+# This is a part of the external Ruby Interface for Cairo-Dock
+
+# Author: Fabounet and Eduardo Mucelli Rezende Oliveira
+# E-mail: fabounet@xxxxxxxxxxxx, edumucelli@xxxxxxxxx or eduardom@xxxxxxxxxxx
+#
+# This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+
+# This applet monitors the battery through acpi module. It is possbile to show a dialog message
+#    containing the baterry status, charge, and temperature by left-clicking on the icon.
+#    Also, through the configuration panel it is possible to set the icon's label, 
+#	 show the % of carge as quick info, and activate an alert message to be shown when the charge is critically low.
+
+require 'rubygems'
+require 'dbus'
+require 'parseconfig'
+
+class CDApplet
+	attr_accessor :cConfFile, :cAppletName, :icon, :sub_icons, :config, :bus, :_cMenuIconId, :cParentAppName, :cBusPath
+	
+	BOTTOM = 0
+	TOP    = 1
+	RIGHT  = 2
+	LEFT   = 3
+	
+	DOCK    = 0
+	DESKLET = 1
+	
+	UPPER_LEFT  = 0
+	LOWER_RIGHT = 1
+	LOWER_LEFT  = 2
+	UPPER_RIGHT = 3
+	MIDDLE      = 4
+	
+	MENU_ENTRY        = 0
+	MENU_SUB_MENU     = 1
+	MENU_SEPARATOR    = 2
+	MENU_CHECKBOX     = 3
+	MENU_RADIO_BUTTON = 4
+
+	MAIN_MENU_ID = 0
+	
+	DIALOG_KEY_ENTER = -1
+	DIALOG_KEY_ESCAPE = -2
+
+	def initialize
+		#~ self.cAppletName = File.basename(Dir.getwd)
+		#~ self.cConfFile = File.expand_path("~/.config/cairo-dock/current_theme/plug-ins/#{self.cAppletName}/#{self.cAppletName}.conf")
+		self.config = {}
+		self.bus = nil
+		self.icon = nil
+		self.sub_icons = nil
+		self._cMenuIconId = nil
+		self.cAppletName = $0[2,999]
+		self.cBusPath = ARGV[1]
+		self.cConfFile = ARGV[2]
+		self.cParentAppName = ARGV[3]
+		
+		self._get_config()
+		self._connect_to_dock()
+	end
+	
+	def run
+		self.start()
+		loop = DBus::Main.new
+		loop << self.bus
+		loop.run
+		puts ">>> applet '#{self.cAppletName}' terminated."
+		exit
+	end
+	
+	##################################
+	### callbacks on the main icon ###
+	##################################
+	
+	def on_click iState
+		### action on click
+	end
+	
+	def on_middle_click
+		puts ">>> on_middle_click"
+		### action on middle-click
+	end
+	
+	def _on_build_menu
+		self._cMenuIconId = nil
+		self.on_build_menu()
+	end
+	
+	def on_build_menu
+		### build our menu
+	end
+	
+	def _on_menu_select(iNumEntry)
+		if self._cMenuIconId == nil
+			self.on_menu_select(iNumEntry)
+		else
+			self.on_menu_select_sub_icon(iNumEntry, self._cMenuIconId)
+		end
+	end
+	
+	def on_menu_select(iNumEntry)
+		### action on selecting an entry of our menu """
+	end
+	
+	def on_scroll(bScrollUp)
+		### action on scroll
+	end
+
+	def on_drop_data(cReceivedData)
+		### action on dropping something on our applet
+	end
+	
+	def on_answer(answer)
+		### action on answering a dialog
+	end
+
+	def on_answer_dialog(button, answer)
+		### action on answering a dialog
+	end
+
+	def on_shortkey(cKey)
+		### action on pressing one of the shortkeys we bound beforehand
+	end
+	
+	def on_change_focus(bIsActive)
+		### action when the window controlled by the applet takes or looses the focus
+	end
+	
+	##################################
+	### callbacks on the sub-icons ###
+	##################################
+	def on_click_sub_icon(iState, cIconID)
+		### action on click on one of our sub-icons
+	end
+	
+	def on_middle_click_sub_icon(cIconID)
+		### action on middle-click on one of our sub-icons
+	end
+	
+	def on_scroll_sub_icon(bScrollUp, cIconID)
+		### action on scroll on one of our sub-icons
+	end
+	
+	def _on_build_menu_sub_icon(cIconID)
+		self._cMenuIconId = cIconID
+		self.on_build_menu_sub_icon(cIconID)
+	end
+	
+	def on_build_menu_sub_icon(cIconID)
+		### action on build menu on one of our sub-icons
+	end
+	
+	def on_drop_data_sub_icon(cReceivedData, cIconID)
+		### action on drop data on one of our sub-icons
+	end
+	
+	def on_menu_select_sub_icon(iNumEntry, cIconID)
+		### action on select entry in the menu on one of our sub-icons
+	end
+	
+	
+	###############################
+	### callbacks on the applet ###
+	###############################
+	
+	def start
+		### action when the applet is started
+	end
+	
+	def stop
+		### action when the applet is terminated
+	end
+	
+	def _on_stop
+		self.stop()
+		exit
+	end
+	
+	def reload
+		### called when our applet is reloaded (config parameters have changed)
+	end
+	
+	def _on_reload bConfigHasChanged
+		if bConfigHasChanged
+			self._get_config()
+			self.reload()
+		end
+	end
+	
+	def _get_config
+		keyfile = ParseConfig.new(self.cConfFile)
+		self.get_config(keyfile)
+	end
+	
+	def get_config keyfile
+		### get our parameters from the key-file
+	end
+	
+	def _connect_to_dock
+		# get the icon object on the bus
+		self.bus = DBus::SessionBus.instance
+		#~ applet_path = "/org/cairodock/CairoDock/#{self.cAppletName}" # path where our object is stored on the bus
+		applet_service = bus.service("org.cairodock.CairoDock")
+		begin
+			applet_object = applet_service.object(self.cBusPath)
+			applet_object.introspect
+			applet_object.default_iface = 'org.cairodock.CairoDock.applet'
+		rescue
+			puts ">>> object '#{self.cAppletName}' can't be found on the bus, exit.\nMake sure that the 'Dbus' plug-in is activated in Cairo-Dock"
+			exit
+		end
+		self.icon = applet_object
+		
+		# get the sub-icons object on the bus
+		applet_sub_icons_object = applet_service.object("#{self.cBusPath}/sub_icons")
+		applet_sub_icons_object.introspect
+		applet_sub_icons_object.default_iface = 'org.cairodock.CairoDock.subapplet'
+		self.sub_icons = applet_sub_icons_object
+		
+		# now connect to the signals
+		self.icon.on_signal("on_click") do |iState|
+			self.on_click iState
+		end
+		self.icon.on_signal("on_middle_click") do
+			self.on_middle_click
+		end
+		self.icon.on_signal("on_build_menu") do
+			self._on_build_menu
+		end
+		self.icon.on_signal("on_menu_select") do |iNumEntry|
+			self._on_menu_select iNumEntry
+		end
+		self.icon.on_signal("on_scroll") do |bScrollUp|
+			self.on_scroll bScrollUp
+		end
+		self.icon.on_signal("on_drop_data") do |cReceivedData|
+			self.on_drop_data cReceivedData
+		end
+		self.icon.on_signal("on_answer") do |answer|
+			self.on_answer answer
+		end
+		self.icon.on_signal("on_answer_dialog") do |button, answer|
+			self.on_answer_dialog button, answer
+		end
+		self.icon.on_signal("on_shortkey") do |cKey|
+			self.on_shortkey cKey
+		end
+		self.icon.on_signal("on_change_focus") do |bIsActive|
+			self.on_change_focus bIsActive
+		end
+		
+		self.icon.on_signal("on_stop_module") do
+			self._on_stop
+		end
+		
+		self.icon.on_signal("on_reload_module") do |bConfigHasChanged|
+			self._on_reload bConfigHasChanged
+		end
+		
+		self.sub_icons.on_signal("on_click_sub_icon") do |iState, sub_icon_id|
+			self.on_click_sub_icon iState, sub_icon_id
+		end
+		
+		self.sub_icons.on_signal("on_middle_click_sub_icon") do |sub_icon_id|
+			self.on_middle_click_sub_icon sub_icon_id
+		end
+		
+		self.sub_icons.on_signal("on_scroll_sub_icon") do |bScrollUp, sub_icon_id|
+			self.on_scroll_sub_icon bScrollUp, sub_icon_id
+		end
+		
+		self.sub_icons.on_signal("on_build_menu_sub_icon") do |sub_icon_id|
+			self._on_build_menu_sub_icon sub_icon_id
+		end
+		
+		self.sub_icons.on_signal("on_drop_data_sub_icon") do |cReceivedData, sub_icon_id|
+			self.on_drop_data_sub_icon cReceivedData, sub_icon_id
+		end
+		
+	end
+end

=== added file 'Dbus/interfaces/ruby/CMakeLists.txt'
--- Dbus/interfaces/ruby/CMakeLists.txt	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/ruby/CMakeLists.txt	2011-02-23 23:29:29 +0000
@@ -0,0 +1,5 @@
+
+########### install files ###############
+
+install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/CDApplet.rb
+	DESTINATION ${RUBY_LIB_DIR})

=== added directory 'Dbus/interfaces/vala'
=== added file 'Dbus/interfaces/vala/CDApplet.deps'
--- Dbus/interfaces/vala/CDApplet.deps	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/vala/CDApplet.deps	2011-02-23 23:29:29 +0000
@@ -0,0 +1,1 @@
+gio-2.0

=== added file 'Dbus/interfaces/vala/CDApplet.pc.in'
--- Dbus/interfaces/vala/CDApplet.pc.in	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/vala/CDApplet.pc.in	2011-02-23 23:29:29 +0000
@@ -0,0 +1,11 @@
+prefix = @prefix@
+exec_prefix = @prefix@
+libdir = @libdir@
+includedir = @dbusdatadir@
+
+Name: CDApplet
+Description: Library that wraps the Cairo-Dock's DBus interface into a convenient class.
+Requires: gobject-2.0 gio-2.0
+Libs: -L${libdir} -lCDApplet
+Cflags: -I${dbusdatadir}
+Version: @VERSION_DBUS@

=== added file 'Dbus/interfaces/vala/CDApplet.vala'
--- Dbus/interfaces/vala/CDApplet.vala	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/vala/CDApplet.vala	2011-02-23 23:29:29 +0000
@@ -0,0 +1,328 @@
+/* This is a part of the external applet for Cairo-Dock
+
+Copyright : (C) 2010-2011 by Fabounet
+E-mail : fabounet@xxxxxxxxxxxx
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+http://www.gnu.org/licenses/licenses.html#GPL */
+
+/// To compile it manually:
+/// valac -q -C --disable-warnings --disable-dbus-transformation --pkg gio-2.0 --vapi=CDApplet-simple.vapi --internal-vapi=CDApplet.vapi --header=CDApplet-simple.h --internal-header=CDApplet.h CDApplet.vala
+/// gcc --shared -fPIC -o CDApplet.so $(pkg-config --cflags --libs gobject-2.0 gio-2.0) CDApplet.c
+
+  /////////////////////////
+ ///// dependancies //////
+/////////////////////////
+using GLib;
+
+namespace CairoDock.Applet
+{
+[DBus (name = "org.cairodock.CairoDock.applet")]
+public interface IApplet : Object {
+	public signal void on_click (int iState);
+	public signal void on_middle_click ();
+	public signal void on_build_menu ();
+	public signal void on_menu_select(int iNumEntry);
+	public signal void on_scroll(bool bScrollUp);
+	public signal void on_drop_data(string cReceivedData);
+	public signal void on_answer(Variant answer);
+	public signal void on_answer_dialog(int iButton, Variant answer);
+	public signal void on_shortkey(string cKey);
+	public signal void on_change_focus(bool bIsActive);
+	public signal void on_stop_module ();
+	public signal void on_reload_module (bool bConfigHasChanged);
+	public abstract Variant Get (string cProperty) throws IOError;
+	public abstract HashTable<string,Variant> GetAll () throws IOError;
+	public abstract void SetQuickInfo (string cQuickInfo) throws IOError;
+	public abstract void SetLabel (string cLabel) throws IOError;
+	public abstract void SetIcon (string cImage) throws IOError;
+	public abstract void SetEmblem (string cImage, int iPosition) throws IOError;
+	public abstract void Animate (string cAnimation, int iRounds) throws IOError;
+	public abstract void DemandsAttention (bool bStart, string cAnimation) throws IOError;
+	public abstract void ShowDialog (string cMessage, int iDuration) throws IOError;
+	public abstract void PopupDialog (HashTable<string,Variant> hDialogAttributes, HashTable<string,Variant> hWidgetAttributes) throws IOError;
+	public abstract void AddDataRenderer (string cType, int iNbValues, string cTheme) throws IOError;
+	public abstract void RenderValues (double[] pValues) throws IOError;
+	public abstract void ControlAppli (string cApplicationClass) throws IOError;
+	public abstract void ShowAppli (bool bShow) throws IOError;
+	public abstract void AddMenuItems (HashTable<string,Variant>[] pItems) throws IOError;
+	public abstract void BindShortkey (string[] cShortkeys) throws IOError;
+}
+
+[DBus (name = "org.cairodock.CairoDock.subapplet")]
+public interface ISubApplet : Object {
+	public signal void on_click_sub_icon (int iState, string cIconID);
+	public signal void on_middle_click_sub_icon (string cIconID);
+	public signal void on_scroll_sub_icon (bool bScrollUp, string cIconID);
+	public signal void on_drop_data_sub_icon (string cReceivedData, string cIconID);
+	public signal void on_build_menu_sub_icon (string cIconID);
+	public abstract void SetQuickInfo(string cQuickInfo, string cIconID) throws IOError;
+	public abstract void SetLabel(string cLabel, string cIconID) throws IOError;
+	public abstract void SetIcon(string cImage, string cIconID) throws IOError;
+	public abstract void SetEmblem(string cImage, int iPosition, string cIconID) throws IOError;
+	public abstract void Animate(string cAnimation, int iNbRounds, string cIconID) throws IOError;
+	public abstract void ShowDialog(string message, int iDuration, string cIconID) throws IOError;
+	public abstract void AddSubIcons(string[] pIconFields) throws IOError;
+	public abstract void RemoveSubIcon(string cIconID) throws IOError;
+}
+
+public class CDApplet : GLib.Object
+{
+	// internal data.
+	public IApplet icon;
+	public ISubApplet sub_icons;
+	public string cAppletName;
+	public string cConfFile;
+	public string cParentAppName;
+	public string cBusPath;
+	private MainLoop loop;
+	private string _cMenuIconId;
+	
+	public enum ScreenPosition {
+		BOTTOM = 0,
+		TOP,
+		RIGHT,
+		LEFT
+	}
+	public enum ContainerType {
+		DOCK = 0,
+		DESKLET
+	}
+	public enum EmblemPosition {
+		UPPER_LEFT = 0,
+		LOWER_RIGHT,
+		LOWER_LEFT,
+		UPPER_RIGHT,
+		MIDDLE
+	}
+	public enum MenuItemType {
+		MENU_ENTRY = 0,
+		MENU_SUB_MENU,
+		MENU_SEPARATOR,
+		MENU_CHECKBOX,
+		MENU_RADIO_BUTTON
+	}
+	
+	public enum MenuItemId {
+		MAIN_MENU_ID = 0
+	}
+
+	public enum DialogKey {
+		DIALOG_KEY_ENTER = -1,
+		DIALOG_KEY_ESCAPE = -2
+    }
+	
+	public CDApplet(string[] argv)
+	{
+		this.cAppletName = argv[0].substring(2,999);
+		this.cBusPath = argv[2];
+		this.cConfFile = argv[3];
+		this.cParentAppName = argv[4];
+		
+		this._get_config();
+		this._connect_to_bus();
+		this._cMenuIconId = null;
+	}
+	
+	public void run()
+	{
+		this.begin();
+		this.loop = new MainLoop();
+		this.loop.run();
+	}
+	
+	  ////////////////////////////////////////
+	 ////// callbacks on the main icon //////
+	////////////////////////////////////////
+	public virtual void on_click(int iState)
+	{
+		print (">>> clic !\n");
+	}
+	public virtual void on_middle_click()
+	{
+		print (">>> middle clic !\n");
+	}
+	private void _on_build_menu()
+	{
+		this._cMenuIconId = null;
+		this.on_build_menu();
+	}
+	public virtual void on_build_menu()
+	{
+		print (">>> build menu !\n");
+	}
+	private void _on_menu_select(int iNumEntry)
+	{
+		if (this._cMenuIconId == null)
+			this.on_menu_select (iNumEntry);
+		else
+			this.on_menu_select_sub_icon (iNumEntry, this._cMenuIconId);
+	}
+	public virtual void on_menu_select(int iNumEntry)
+	{
+		print (">>> choice %d has been selected !\n", iNumEntry);
+	}
+	public virtual void on_scroll(bool bScrollUp)
+	{
+		print (">>> scroll (up:%d)\n", (int)bScrollUp);
+	}
+	public virtual void on_drop_data(string cReceivedData)
+	{
+		print (">>> received : %s\n",cReceivedData);
+	}
+	public virtual void on_answer(Variant answer)
+	{
+		print (">>> answer\n");
+	}
+	public virtual void on_answer_dialog(int iButton, Variant answer)
+	{
+		print (">>> answer dialog\n");
+	}
+	public virtual void on_shortkey(string cKey)
+	{
+		print (">>> shortkey : %s\n", cKey);
+	}
+	public virtual void on_change_focus(bool bIsActive)
+	{
+		print (">>> changed focus -> %d\n", (int)bIsActive);
+	}
+
+	  ////////////////////////////////////////
+	 ////// callbacks on the sub-icons //////
+	////////////////////////////////////////
+	public virtual void on_click_sub_icon(int iState, string cIconID)
+	{
+		print ("clic on the sub-icon '%s' !\n", cIconID);
+	}
+	
+	public virtual void on_middle_click_sub_icon(string cIconID)
+	{
+		print ("middle-clic on the sub-icon '%s' !\n", cIconID);
+	}
+	
+	public virtual void on_scroll_sub_icon(bool bScrollUp, string cIconID)
+	{
+		print ("scroll on the sub-icon '%s' !\n", cIconID);
+	}
+	
+	public virtual void on_drop_data_sub_icon(string cReceivedData, string cIconID)
+	{
+		print ("drop on the sub-icon '%s' !\n", cIconID);
+	}
+	
+	private void _on_build_menu_sub_icon(string cIconID)
+	{
+		this._cMenuIconId = cIconID;
+		this.on_build_menu_sub_icon (cIconID);
+	}
+	public virtual void on_build_menu_sub_icon(string cIconID)
+	{
+		print ("build menu on the sub-icon '%s' !\n", cIconID);
+	}
+	public virtual void on_menu_select_sub_icon(int iNumEntry, string cIconID)
+	{
+		print (">>> choice %d has been selected on icon %s !\n", iNumEntry, cIconID);
+	}
+	
+	  /////////////////////////////////////
+	 ////// callbacks on the applet //////
+	/////////////////////////////////////
+	public virtual void begin()
+	{
+	}
+	
+	public virtual void end()
+	{
+	}
+	private void _on_stop()
+	{
+		print (">>> applet '%s' is stopped\n", this.cAppletName);
+		this.end();
+		loop.quit();
+	}
+	
+	public virtual void reload()
+	{
+	}
+	private void _on_reload(bool bConfigHasChanged)
+	{
+		print (">>> our module is reloaded");
+		if (bConfigHasChanged)
+		{
+			print (">>>  and our config has changed");
+			this._get_config();
+			this.reload();
+		}
+	}
+	
+	public virtual void get_config(GLib.KeyFile keyfile)
+	{
+	}
+	private void _get_config()
+	{
+		GLib.KeyFile keyfile = new GLib.KeyFile();
+		try
+		{
+			keyfile.load_from_file(this.cConfFile, GLib.KeyFileFlags.NONE);
+		}
+		catch (Error e)
+		{
+			warning (e.message);
+		}
+		finally
+		{
+			this.get_config(keyfile);
+		}
+	}
+	
+	private void _connect_to_bus()
+	{
+		///string cBusPath = "/org/cairodock/CairoDock/"+cAppletName;  // path where our object is stored on the bus.
+		try
+		{
+			this.icon = Bus.get_proxy_sync (BusType.SESSION,
+				"org.cairodock.CairoDock",
+				this.cBusPath);
+		}
+		catch (IOError e)
+		{
+			GLib.error (">>> module '%s' can't be found on the bus, exit.\nError was: %s", this.cAppletName, e.message);
+		}
+		try
+		{
+			this.sub_icons = Bus.get_proxy_sync (BusType.SESSION,
+				"org.cairodock.CairoDock",
+				this.cBusPath+"/sub_icons");
+		}
+		catch (IOError e)
+		{
+			GLib.error (">>> module '%s' can't be found on the bus, exit.\nError was: %s", this.cAppletName, e.message);
+		}
+		this.icon.on_click.connect(on_click);  // when the user left-clicks on our icon.
+		this.icon.on_middle_click.connect(on_middle_click);  // when the user middle-clicks on our icon.
+		this.icon.on_build_menu.connect(_on_build_menu);  // when the user right-clicks on our applet (which builds the menu)
+		this.icon.on_menu_select.connect(_on_menu_select);  // when the user selects an entry of this menu.
+		this.icon.on_scroll.connect(on_scroll);  // when the user scroll up or down on our icon.
+		this.icon.on_drop_data.connect(on_drop_data);  // when the user drops something on our icon.
+		this.icon.on_answer.connect(on_answer);  // when the user answer a question (deprecated).
+		this.icon.on_answer_dialog.connect(on_answer_dialog);  // when the user answer a dialog.
+		this.icon.on_shortkey.connect(on_shortkey);  // when the user presses a shortkey.
+		this.icon.on_change_focus.connect(on_change_focus);  // when the focus of the applet's window changes.
+		this.icon.on_stop_module.connect(_on_stop);  // when the user deactivate our applet (or the DBus plug-in, or when the Cairo-Dock is stopped).
+		this.icon.on_reload_module.connect(_on_reload);  // when the user changes something in our config, or when the desklet is resized (with no change in the config).
+		this.sub_icons.on_click_sub_icon.connect(on_click_sub_icon);  // when the user left-clicks on a sub-icon.
+		this.sub_icons.on_middle_click_sub_icon.connect(on_middle_click_sub_icon);  // when the user middle-clicks on a sub-icon.
+		this.sub_icons.on_scroll_sub_icon.connect(on_scroll_sub_icon);  // when the user scrolls on a sub-icon.
+		this.sub_icons.on_drop_data_sub_icon.connect(on_drop_data_sub_icon);  // when the user drops sth on a sub-icon.
+		this.sub_icons.on_build_menu_sub_icon.connect(_on_build_menu_sub_icon);  // when the user drops sth on a sub-icon.
+	}
+}
+}

=== added file 'Dbus/interfaces/vala/CMakeLists.txt'
--- Dbus/interfaces/vala/CMakeLists.txt	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/vala/CMakeLists.txt	2011-02-23 23:29:29 +0000
@@ -0,0 +1,51 @@
+
+########### install files ###############
+
+# ${CMAKE_INSTALL_PREFIX} can change... so if we want to install new vala files,
+# we have to use this variable => we can put this variable into ValaVapiPath.txt.in...
+set (VALA_SHARE_PATH "${CMAKE_INSTALL_PREFIX}/share")
+set (CDAPPLET "CDApplet")
+
+# if we want to produce new .c, .h, .vapi, .deps:
+if ("${VALAC_FOUND}" STREQUAL "TRUE")
+	# first, precompile the Vala code into C code.
+	execute_process(COMMAND
+		${VALA_EXECUTABLE} -q -C --disable-warnings --disable-dbus-transformation
+		--pkg gio-2.0
+		--vapi=${CMAKE_CURRENT_SOURCE_DIR}/src/${CDAPPLET}.vapi
+		--header=${CMAKE_CURRENT_SOURCE_DIR}/src/${CDAPPLET}.h
+		-o ${CDAPPLET}.c
+		${CMAKE_CURRENT_SOURCE_DIR}/${CDAPPLET}.vala)
+	# it seems that valac can only produce the output into the current directory.
+	execute_process(COMMAND mv ${CDAPPLET}.c ${CMAKE_CURRENT_SOURCE_DIR}/src/${CDAPPLET}.c)
+	
+	# valac is a bad boy, it messes up the signal names.
+	execute_process(COMMAND
+		sed -i "s/OnClick/on_click/g; s/OnMiddleClick/on_middle_click/g; s/OnScroll/on_scroll/g; s/OnBuildMenu/on_build_menu/g; s/OnMenuSelect/on_menu_select/g; s/OnDropData/on_drop_data/g; s/OnAnswerDialog/on_answer_dialog/g; s/OnAnswer/on_answer/g; s/OnShortkey/on_shortkey/g; s/OnChangeFocus/on_change_focus/g; s/OnReloadModule/on_reload_module/g; s/OnStopModule/on_stop_module/g" ${CMAKE_CURRENT_SOURCE_DIR}/src/CDApplet.c)
+
+	# .vapi install dir:
+	# GET_FILENAME_COMPONENT(VALA_EXECUTABLE_PATH ${VALA_EXECUTABLE} PATH) # -> /usr/bin
+	# GET_FILENAME_COMPONENT(VALA_SHARE_PATH ${VALA_EXECUTABLE_PATH}/../share ABSOLUTE)  # -> /usr/share
+	# with my valac-0.12, the version is Vala 0.11.3 because it's still under a development release => gnome versions.
+	string (REGEX REPLACE "\\..*" "" VALA_VERSION_MAJOR "${VALA_VERSION}")
+	string (REGEX REPLACE "([^ ]+)\\.[0-9]*" "\\1" VALA_VERSION_MINOR "${VALA_VERSION}")  # remove nano: 0.10.0 -> 0.10
+	string (REGEX REPLACE ".*\\." "" VALA_VERSION_MINOR "${VALA_VERSION_MINOR}")
+	string (REGEX REPLACE "-.*" "" VALA_VERSION_MINOR "${VALA_VERSION_MINOR}")
+	math (EXPR VALA_VERSION_MINOR_MODULO "${VALA_VERSION_MINOR} % 2")
+	if ("${VALA_VERSION_MINOR_MODULO}" STREQUAL "1")
+		math (EXPR VALA_VERSION_MINOR "${VALA_VERSION_MINOR} + 1")
+	endif()
+	get_filename_component(VALA_VAPI_PATH "${VALA_SHARE_PATH}/vala-${VALA_VERSION_MAJOR}.${VALA_VERSION_MINOR}/vapi" ABSOLUTE)
+	if (NOT EXISTS ${VALA_VAPI_PATH})
+		set(VALA_VAPI_PATH "vala/vapi")
+	else()
+		set(VALA_VAPI_PATH "vala-${VALA_VERSION_MAJOR}.${VALA_VERSION_MINOR}/vapi")
+	endif()
+	configure_file(${CMAKE_CURRENT_SOURCE_DIR}/ValaVapiPath.txt.in ${CMAKE_CURRENT_SOURCE_DIR}/src/ValaVapiPath.txt)
+endif()
+
+# now we can install vala files.
+add_subdirectory(src)
+# .pc goes with others
+configure_file (${CMAKE_CURRENT_SOURCE_DIR}/${CDAPPLET}.pc.in ${CMAKE_CURRENT_BINARY_DIR}/${CDAPPLET}.pc)
+install (FILES  ${CMAKE_CURRENT_BINARY_DIR}/${CDAPPLET}.pc DESTINATION ${libdir}/pkgconfig)

=== added file 'Dbus/interfaces/vala/ValaVapiPath.txt.in'
--- Dbus/interfaces/vala/ValaVapiPath.txt.in	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/vala/ValaVapiPath.txt.in	2011-02-23 23:29:29 +0000
@@ -0,0 +1,1 @@
+@VALA_VAPI_PATH@

=== added directory 'Dbus/interfaces/vala/src'
=== added file 'Dbus/interfaces/vala/src/CDApplet.c'
--- Dbus/interfaces/vala/src/CDApplet.c	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/vala/src/CDApplet.c	2011-02-23 23:29:29 +0000
@@ -0,0 +1,3530 @@
+/* CDApplet.c generated by valac 0.10.0, the Vala compiler
+ * generated from CDApplet.vala, do not modify */
+
+/* This is a part of the external applet for Cairo-Dock
+
+Copyright : (C) 2010-2011 by Fabounet
+E-mail : fabounet@xxxxxxxxxxxx
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+http://www.gnu.org/licenses/licenses.html#GPL */
+/*/ To compile it manually:*/
+/*/ valac -q -C --disable-warnings --disable-dbus-transformation --pkg gio-2.0 --vapi=CDApplet-simple.vapi --internal-vapi=CDApplet.vapi --header=CDApplet-simple.h --internal-header=CDApplet.h CDApplet.vala*/
+/*/ gcc --shared -fPIC -o CDApplet.so $(pkg-config --cflags --libs gobject-2.0 gio-2.0) CDApplet.c*/
+/*///////////////////////*/
+/*/// dependancies //////*/
+/*///////////////////////*/
+
+#include <glib.h>
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gio/gio.h>
+#include <float.h>
+#include <math.h>
+
+
+#define CAIRO_DOCK_APPLET_TYPE_IAPPLET (cairo_dock_applet_iapplet_get_type ())
+#define CAIRO_DOCK_APPLET_IAPPLET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CAIRO_DOCK_APPLET_TYPE_IAPPLET, CairoDockAppletIApplet))
+#define CAIRO_DOCK_APPLET_IS_IAPPLET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CAIRO_DOCK_APPLET_TYPE_IAPPLET))
+#define CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), CAIRO_DOCK_APPLET_TYPE_IAPPLET, CairoDockAppletIAppletIface))
+
+typedef struct _CairoDockAppletIApplet CairoDockAppletIApplet;
+typedef struct _CairoDockAppletIAppletIface CairoDockAppletIAppletIface;
+
+#define CAIRO_DOCK_APPLET_TYPE_IAPPLET_PROXY (cairo_dock_applet_iapplet_proxy_get_type ())
+typedef GDBusProxy CairoDockAppletIAppletProxy;
+typedef GDBusProxyClass CairoDockAppletIAppletProxyClass;
+#define _g_free0(var) (var = (g_free (var), NULL))
+#define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL)))
+#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
+
+#define CAIRO_DOCK_APPLET_TYPE_ISUB_APPLET (cairo_dock_applet_isub_applet_get_type ())
+#define CAIRO_DOCK_APPLET_ISUB_APPLET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CAIRO_DOCK_APPLET_TYPE_ISUB_APPLET, CairoDockAppletISubApplet))
+#define CAIRO_DOCK_APPLET_IS_ISUB_APPLET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CAIRO_DOCK_APPLET_TYPE_ISUB_APPLET))
+#define CAIRO_DOCK_APPLET_ISUB_APPLET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), CAIRO_DOCK_APPLET_TYPE_ISUB_APPLET, CairoDockAppletISubAppletIface))
+
+typedef struct _CairoDockAppletISubApplet CairoDockAppletISubApplet;
+typedef struct _CairoDockAppletISubAppletIface CairoDockAppletISubAppletIface;
+
+#define CAIRO_DOCK_APPLET_TYPE_ISUB_APPLET_PROXY (cairo_dock_applet_isub_applet_proxy_get_type ())
+typedef GDBusProxy CairoDockAppletISubAppletProxy;
+typedef GDBusProxyClass CairoDockAppletISubAppletProxyClass;
+
+#define CAIRO_DOCK_APPLET_TYPE_CD_APPLET (cairo_dock_applet_cd_applet_get_type ())
+#define CAIRO_DOCK_APPLET_CD_APPLET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CAIRO_DOCK_APPLET_TYPE_CD_APPLET, CairoDockAppletCDApplet))
+#define CAIRO_DOCK_APPLET_CD_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CAIRO_DOCK_APPLET_TYPE_CD_APPLET, CairoDockAppletCDAppletClass))
+#define CAIRO_DOCK_APPLET_IS_CD_APPLET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CAIRO_DOCK_APPLET_TYPE_CD_APPLET))
+#define CAIRO_DOCK_APPLET_IS_CD_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CAIRO_DOCK_APPLET_TYPE_CD_APPLET))
+#define CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CAIRO_DOCK_APPLET_TYPE_CD_APPLET, CairoDockAppletCDAppletClass))
+
+typedef struct _CairoDockAppletCDApplet CairoDockAppletCDApplet;
+typedef struct _CairoDockAppletCDAppletClass CairoDockAppletCDAppletClass;
+typedef struct _CairoDockAppletCDAppletPrivate CairoDockAppletCDAppletPrivate;
+
+#define CAIRO_DOCK_APPLET_CD_APPLET_TYPE_SCREEN_POSITION (cairo_dock_applet_cd_applet_screen_position_get_type ())
+
+#define CAIRO_DOCK_APPLET_CD_APPLET_TYPE_CONTAINER_TYPE (cairo_dock_applet_cd_applet_container_type_get_type ())
+
+#define CAIRO_DOCK_APPLET_CD_APPLET_TYPE_EMBLEM_POSITION (cairo_dock_applet_cd_applet_emblem_position_get_type ())
+
+#define CAIRO_DOCK_APPLET_CD_APPLET_TYPE_MENU_ITEM_TYPE (cairo_dock_applet_cd_applet_menu_item_type_get_type ())
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _g_main_loop_unref0(var) ((var == NULL) ? NULL : (var = (g_main_loop_unref (var), NULL)))
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+#define _g_key_file_free0(var) ((var == NULL) ? NULL : (var = (g_key_file_free (var), NULL)))
+
+struct _CairoDockAppletIAppletIface {
+	GTypeInterface parent_iface;
+	GVariant* (*Get) (CairoDockAppletIApplet* self, const char* cProperty, GError** error);
+	GHashTable* (*GetAll) (CairoDockAppletIApplet* self, GError** error);
+	void (*SetQuickInfo) (CairoDockAppletIApplet* self, const char* cQuickInfo, GError** error);
+	void (*SetLabel) (CairoDockAppletIApplet* self, const char* cLabel, GError** error);
+	void (*SetIcon) (CairoDockAppletIApplet* self, const char* cImage, GError** error);
+	void (*SetEmblem) (CairoDockAppletIApplet* self, const char* cImage, gint iPosition, GError** error);
+	void (*Animate) (CairoDockAppletIApplet* self, const char* cAnimation, gint iRounds, GError** error);
+	void (*DemandsAttention) (CairoDockAppletIApplet* self, gboolean bStart, const char* cAnimation, GError** error);
+	void (*ShowDialog) (CairoDockAppletIApplet* self, const char* cMessage, gint iDuration, GError** error);
+	void (*PopupDialog) (CairoDockAppletIApplet* self, GHashTable* hDialogAttributes, GHashTable* hWidgetAttributes, GError** error);
+	void (*AddDataRenderer) (CairoDockAppletIApplet* self, const char* cType, gint iNbValues, const char* cTheme, GError** error);
+	void (*RenderValues) (CairoDockAppletIApplet* self, double* pValues, int pValues_length1, GError** error);
+	void (*ControlAppli) (CairoDockAppletIApplet* self, const char* cApplicationClass, GError** error);
+	void (*ShowAppli) (CairoDockAppletIApplet* self, gboolean bShow, GError** error);
+	void (*AddMenuItems) (CairoDockAppletIApplet* self, GHashTable** pItems, int pItems_length1, GError** error);
+	void (*BindShortkey) (CairoDockAppletIApplet* self, char** cShortkeys, int cShortkeys_length1, GError** error);
+};
+
+struct _CairoDockAppletISubAppletIface {
+	GTypeInterface parent_iface;
+	void (*SetQuickInfo) (CairoDockAppletISubApplet* self, const char* cQuickInfo, const char* cIconID, GError** error);
+	void (*SetLabel) (CairoDockAppletISubApplet* self, const char* cLabel, const char* cIconID, GError** error);
+	void (*SetIcon) (CairoDockAppletISubApplet* self, const char* cImage, const char* cIconID, GError** error);
+	void (*SetEmblem) (CairoDockAppletISubApplet* self, const char* cImage, gint iPosition, const char* cIconID, GError** error);
+	void (*Animate) (CairoDockAppletISubApplet* self, const char* cAnimation, gint iNbRounds, const char* cIconID, GError** error);
+	void (*ShowDialog) (CairoDockAppletISubApplet* self, const char* message, gint iDuration, const char* cIconID, GError** error);
+	void (*AddSubIcons) (CairoDockAppletISubApplet* self, char** pIconFields, int pIconFields_length1, GError** error);
+	void (*RemoveSubIcon) (CairoDockAppletISubApplet* self, const char* cIconID, GError** error);
+};
+
+struct _CairoDockAppletCDApplet {
+	GObject parent_instance;
+	CairoDockAppletCDAppletPrivate * priv;
+	CairoDockAppletIApplet* icon;
+	CairoDockAppletISubApplet* sub_icons;
+	char* cAppletName;
+	char* cConfFile;
+	char* cParentAppName;
+	char* cBusPath;
+};
+
+struct _CairoDockAppletCDAppletClass {
+	GObjectClass parent_class;
+	void (*on_click) (CairoDockAppletCDApplet* self, gint iState);
+	void (*on_middle_click) (CairoDockAppletCDApplet* self);
+	void (*on_build_menu) (CairoDockAppletCDApplet* self);
+	void (*on_menu_select) (CairoDockAppletCDApplet* self, gint iNumEntry);
+	void (*on_scroll) (CairoDockAppletCDApplet* self, gboolean bScrollUp);
+	void (*on_drop_data) (CairoDockAppletCDApplet* self, const char* cReceivedData);
+	void (*on_answer) (CairoDockAppletCDApplet* self, GVariant* answer);
+	void (*on_answer_dialog) (CairoDockAppletCDApplet* self, gint iButton, GVariant* answer);
+	void (*on_shortkey) (CairoDockAppletCDApplet* self, const char* cKey);
+	void (*on_change_focus) (CairoDockAppletCDApplet* self, gboolean bIsActive);
+	void (*on_click_sub_icon) (CairoDockAppletCDApplet* self, gint iState, const char* cIconID);
+	void (*on_middle_click_sub_icon) (CairoDockAppletCDApplet* self, const char* cIconID);
+	void (*on_scroll_sub_icon) (CairoDockAppletCDApplet* self, gboolean bScrollUp, const char* cIconID);
+	void (*on_drop_data_sub_icon) (CairoDockAppletCDApplet* self, const char* cReceivedData, const char* cIconID);
+	void (*on_build_menu_sub_icon) (CairoDockAppletCDApplet* self, const char* cIconID);
+	void (*on_menu_select_sub_icon) (CairoDockAppletCDApplet* self, gint iNumEntry, const char* cIconID);
+	void (*begin) (CairoDockAppletCDApplet* self);
+	void (*end) (CairoDockAppletCDApplet* self);
+	void (*reload) (CairoDockAppletCDApplet* self);
+	void (*get_config) (CairoDockAppletCDApplet* self, GKeyFile* keyfile);
+};
+
+struct _CairoDockAppletCDAppletPrivate {
+	GMainLoop* loop;
+	char* _cMenuIconId;
+};
+
+typedef enum  {
+	CAIRO_DOCK_APPLET_CD_APPLET_SCREEN_POSITION_BOTTOM = 0,
+	CAIRO_DOCK_APPLET_CD_APPLET_SCREEN_POSITION_TOP,
+	CAIRO_DOCK_APPLET_CD_APPLET_SCREEN_POSITION_RIGHT,
+	CAIRO_DOCK_APPLET_CD_APPLET_SCREEN_POSITION_LEFT
+} CairoDockAppletCDAppletScreenPosition;
+
+typedef enum  {
+	CAIRO_DOCK_APPLET_CD_APPLET_CONTAINER_TYPE_DOCK = 0,
+	CAIRO_DOCK_APPLET_CD_APPLET_CONTAINER_TYPE_DESKLET
+} CairoDockAppletCDAppletContainerType;
+
+typedef enum  {
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_UPPER_LEFT = 0,
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_LOWER_RIGHT,
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_LOWER_LEFT,
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_UPPER_RIGHT,
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_MIDDLE
+} CairoDockAppletCDAppletEmblemPosition;
+
+typedef enum  {
+	CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_ENTRY = 0,
+	CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_SUB_MENU,
+	CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_SEPARATOR,
+	CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_CHECKBOX,
+	CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_RADIO_BUTTON
+} CairoDockAppletCDAppletMenuItemType;
+
+
+static gpointer cairo_dock_applet_cd_applet_parent_class = NULL;
+
+GType cairo_dock_applet_iapplet_proxy_get_type (void) G_GNUC_CONST;
+guint cairo_dock_applet_iapplet_register_object (void* object, GDBusConnection* connection, const gchar* path, GError** error);
+GType cairo_dock_applet_iapplet_get_type (void) G_GNUC_CONST;
+GVariant* cairo_dock_applet_iapplet_Get (CairoDockAppletIApplet* self, const char* cProperty, GError** error);
+GHashTable* cairo_dock_applet_iapplet_GetAll (CairoDockAppletIApplet* self, GError** error);
+void cairo_dock_applet_iapplet_SetQuickInfo (CairoDockAppletIApplet* self, const char* cQuickInfo, GError** error);
+void cairo_dock_applet_iapplet_SetLabel (CairoDockAppletIApplet* self, const char* cLabel, GError** error);
+void cairo_dock_applet_iapplet_SetIcon (CairoDockAppletIApplet* self, const char* cImage, GError** error);
+void cairo_dock_applet_iapplet_SetEmblem (CairoDockAppletIApplet* self, const char* cImage, gint iPosition, GError** error);
+void cairo_dock_applet_iapplet_Animate (CairoDockAppletIApplet* self, const char* cAnimation, gint iRounds, GError** error);
+void cairo_dock_applet_iapplet_DemandsAttention (CairoDockAppletIApplet* self, gboolean bStart, const char* cAnimation, GError** error);
+void cairo_dock_applet_iapplet_ShowDialog (CairoDockAppletIApplet* self, const char* cMessage, gint iDuration, GError** error);
+void cairo_dock_applet_iapplet_PopupDialog (CairoDockAppletIApplet* self, GHashTable* hDialogAttributes, GHashTable* hWidgetAttributes, GError** error);
+void cairo_dock_applet_iapplet_AddDataRenderer (CairoDockAppletIApplet* self, const char* cType, gint iNbValues, const char* cTheme, GError** error);
+void cairo_dock_applet_iapplet_RenderValues (CairoDockAppletIApplet* self, double* pValues, int pValues_length1, GError** error);
+void cairo_dock_applet_iapplet_ControlAppli (CairoDockAppletIApplet* self, const char* cApplicationClass, GError** error);
+void cairo_dock_applet_iapplet_ShowAppli (CairoDockAppletIApplet* self, gboolean bShow, GError** error);
+void cairo_dock_applet_iapplet_AddMenuItems (CairoDockAppletIApplet* self, GHashTable** pItems, int pItems_length1, GError** error);
+void cairo_dock_applet_iapplet_BindShortkey (CairoDockAppletIApplet* self, char** cShortkeys, int cShortkeys_length1, GError** error);
+static void cairo_dock_applet_iapplet_proxy_g_signal (GDBusProxy* proxy, const gchar* sender_name, const gchar* signal_name, GVariant* parameters);
+static void _dbus_handle_cairo_dock_applet_iapplet_on_click (CairoDockAppletIApplet* self, GVariant* parameters);
+static void _dbus_handle_cairo_dock_applet_iapplet_on_middle_click (CairoDockAppletIApplet* self, GVariant* parameters);
+static void _dbus_handle_cairo_dock_applet_iapplet_on_build_menu (CairoDockAppletIApplet* self, GVariant* parameters);
+static void _dbus_handle_cairo_dock_applet_iapplet_on_menu_select (CairoDockAppletIApplet* self, GVariant* parameters);
+static void _dbus_handle_cairo_dock_applet_iapplet_on_scroll (CairoDockAppletIApplet* self, GVariant* parameters);
+static void _dbus_handle_cairo_dock_applet_iapplet_on_drop_data (CairoDockAppletIApplet* self, GVariant* parameters);
+static void _dbus_handle_cairo_dock_applet_iapplet_on_answer (CairoDockAppletIApplet* self, GVariant* parameters);
+static void _dbus_handle_cairo_dock_applet_iapplet_on_answer_dialog (CairoDockAppletIApplet* self, GVariant* parameters);
+static void _dbus_handle_cairo_dock_applet_iapplet_on_shortkey (CairoDockAppletIApplet* self, GVariant* parameters);
+static void _dbus_handle_cairo_dock_applet_iapplet_on_change_focus (CairoDockAppletIApplet* self, GVariant* parameters);
+static void _dbus_handle_cairo_dock_applet_iapplet_on_stop_module (CairoDockAppletIApplet* self, GVariant* parameters);
+static void _dbus_handle_cairo_dock_applet_iapplet_on_reload_module (CairoDockAppletIApplet* self, GVariant* parameters);
+static GVariant* cairo_dock_applet_iapplet_proxy_Get (CairoDockAppletIApplet* self, const char* cProperty, GError** error);
+static GHashTable* cairo_dock_applet_iapplet_proxy_GetAll (CairoDockAppletIApplet* self, GError** error);
+static void cairo_dock_applet_iapplet_proxy_SetQuickInfo (CairoDockAppletIApplet* self, const char* cQuickInfo, GError** error);
+static void cairo_dock_applet_iapplet_proxy_SetLabel (CairoDockAppletIApplet* self, const char* cLabel, GError** error);
+static void cairo_dock_applet_iapplet_proxy_SetIcon (CairoDockAppletIApplet* self, const char* cImage, GError** error);
+static void cairo_dock_applet_iapplet_proxy_SetEmblem (CairoDockAppletIApplet* self, const char* cImage, gint iPosition, GError** error);
+static void cairo_dock_applet_iapplet_proxy_Animate (CairoDockAppletIApplet* self, const char* cAnimation, gint iRounds, GError** error);
+static void cairo_dock_applet_iapplet_proxy_DemandsAttention (CairoDockAppletIApplet* self, gboolean bStart, const char* cAnimation, GError** error);
+static void cairo_dock_applet_iapplet_proxy_ShowDialog (CairoDockAppletIApplet* self, const char* cMessage, gint iDuration, GError** error);
+static void cairo_dock_applet_iapplet_proxy_PopupDialog (CairoDockAppletIApplet* self, GHashTable* hDialogAttributes, GHashTable* hWidgetAttributes, GError** error);
+static void cairo_dock_applet_iapplet_proxy_AddDataRenderer (CairoDockAppletIApplet* self, const char* cType, gint iNbValues, const char* cTheme, GError** error);
+static void cairo_dock_applet_iapplet_proxy_RenderValues (CairoDockAppletIApplet* self, double* pValues, int pValues_length1, GError** error);
+static void cairo_dock_applet_iapplet_proxy_ControlAppli (CairoDockAppletIApplet* self, const char* cApplicationClass, GError** error);
+static void cairo_dock_applet_iapplet_proxy_ShowAppli (CairoDockAppletIApplet* self, gboolean bShow, GError** error);
+static void cairo_dock_applet_iapplet_proxy_AddMenuItems (CairoDockAppletIApplet* self, GHashTable** pItems, int pItems_length1, GError** error);
+static void cairo_dock_applet_iapplet_proxy_BindShortkey (CairoDockAppletIApplet* self, char** cShortkeys, int cShortkeys_length1, GError** error);
+static void cairo_dock_applet_iapplet_proxy_cairo_dock_applet_iapplet_interface_init (CairoDockAppletIAppletIface* iface);
+static void cairo_dock_applet_iapplet_dbus_interface_method_call (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer user_data);
+static void _dbus_cairo_dock_applet_iapplet_Get (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_iapplet_GetAll (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_iapplet_SetQuickInfo (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_iapplet_SetLabel (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_iapplet_SetIcon (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_iapplet_SetEmblem (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_iapplet_Animate (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_iapplet_DemandsAttention (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_iapplet_ShowDialog (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_iapplet_PopupDialog (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_iapplet_AddDataRenderer (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_iapplet_RenderValues (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_iapplet_ControlAppli (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_iapplet_ShowAppli (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_iapplet_AddMenuItems (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_iapplet_BindShortkey (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static GVariant* cairo_dock_applet_iapplet_dbus_interface_get_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error, gpointer user_data);
+static gboolean cairo_dock_applet_iapplet_dbus_interface_set_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error, gpointer user_data);
+static void _dbus_cairo_dock_applet_iapplet_on_click (GObject* _sender, gint iState, gpointer* _data);
+static void _dbus_cairo_dock_applet_iapplet_on_middle_click (GObject* _sender, gpointer* _data);
+static void _dbus_cairo_dock_applet_iapplet_on_build_menu (GObject* _sender, gpointer* _data);
+static void _dbus_cairo_dock_applet_iapplet_on_menu_select (GObject* _sender, gint iNumEntry, gpointer* _data);
+static void _dbus_cairo_dock_applet_iapplet_on_scroll (GObject* _sender, gboolean bScrollUp, gpointer* _data);
+static void _dbus_cairo_dock_applet_iapplet_on_drop_data (GObject* _sender, const char* cReceivedData, gpointer* _data);
+static void _dbus_cairo_dock_applet_iapplet_on_answer (GObject* _sender, GVariant* answer, gpointer* _data);
+static void _dbus_cairo_dock_applet_iapplet_on_answer_dialog (GObject* _sender, gint iButton, GVariant* answer, gpointer* _data);
+static void _dbus_cairo_dock_applet_iapplet_on_shortkey (GObject* _sender, const char* cKey, gpointer* _data);
+static void _dbus_cairo_dock_applet_iapplet_on_change_focus (GObject* _sender, gboolean bIsActive, gpointer* _data);
+static void _dbus_cairo_dock_applet_iapplet_on_stop_module (GObject* _sender, gpointer* _data);
+static void _dbus_cairo_dock_applet_iapplet_on_reload_module (GObject* _sender, gboolean bConfigHasChanged, gpointer* _data);
+static void _cairo_dock_applet_iapplet_unregister_object (gpointer user_data);
+GType cairo_dock_applet_isub_applet_proxy_get_type (void) G_GNUC_CONST;
+guint cairo_dock_applet_isub_applet_register_object (void* object, GDBusConnection* connection, const gchar* path, GError** error);
+GType cairo_dock_applet_isub_applet_get_type (void) G_GNUC_CONST;
+void cairo_dock_applet_isub_applet_SetQuickInfo (CairoDockAppletISubApplet* self, const char* cQuickInfo, const char* cIconID, GError** error);
+void cairo_dock_applet_isub_applet_SetLabel (CairoDockAppletISubApplet* self, const char* cLabel, const char* cIconID, GError** error);
+void cairo_dock_applet_isub_applet_SetIcon (CairoDockAppletISubApplet* self, const char* cImage, const char* cIconID, GError** error);
+void cairo_dock_applet_isub_applet_SetEmblem (CairoDockAppletISubApplet* self, const char* cImage, gint iPosition, const char* cIconID, GError** error);
+void cairo_dock_applet_isub_applet_Animate (CairoDockAppletISubApplet* self, const char* cAnimation, gint iNbRounds, const char* cIconID, GError** error);
+void cairo_dock_applet_isub_applet_ShowDialog (CairoDockAppletISubApplet* self, const char* message, gint iDuration, const char* cIconID, GError** error);
+void cairo_dock_applet_isub_applet_AddSubIcons (CairoDockAppletISubApplet* self, char** pIconFields, int pIconFields_length1, GError** error);
+void cairo_dock_applet_isub_applet_RemoveSubIcon (CairoDockAppletISubApplet* self, const char* cIconID, GError** error);
+static void cairo_dock_applet_isub_applet_proxy_g_signal (GDBusProxy* proxy, const gchar* sender_name, const gchar* signal_name, GVariant* parameters);
+static void _dbus_handle_cairo_dock_applet_isub_applet_on_click_sub_icon (CairoDockAppletISubApplet* self, GVariant* parameters);
+static void _dbus_handle_cairo_dock_applet_isub_applet_on_middle_click_sub_icon (CairoDockAppletISubApplet* self, GVariant* parameters);
+static void _dbus_handle_cairo_dock_applet_isub_applet_on_scroll_sub_icon (CairoDockAppletISubApplet* self, GVariant* parameters);
+static void _dbus_handle_cairo_dock_applet_isub_applet_on_drop_data_sub_icon (CairoDockAppletISubApplet* self, GVariant* parameters);
+static void _dbus_handle_cairo_dock_applet_isub_applet_on_build_menu_sub_icon (CairoDockAppletISubApplet* self, GVariant* parameters);
+static void cairo_dock_applet_isub_applet_proxy_SetQuickInfo (CairoDockAppletISubApplet* self, const char* cQuickInfo, const char* cIconID, GError** error);
+static void cairo_dock_applet_isub_applet_proxy_SetLabel (CairoDockAppletISubApplet* self, const char* cLabel, const char* cIconID, GError** error);
+static void cairo_dock_applet_isub_applet_proxy_SetIcon (CairoDockAppletISubApplet* self, const char* cImage, const char* cIconID, GError** error);
+static void cairo_dock_applet_isub_applet_proxy_SetEmblem (CairoDockAppletISubApplet* self, const char* cImage, gint iPosition, const char* cIconID, GError** error);
+static void cairo_dock_applet_isub_applet_proxy_Animate (CairoDockAppletISubApplet* self, const char* cAnimation, gint iNbRounds, const char* cIconID, GError** error);
+static void cairo_dock_applet_isub_applet_proxy_ShowDialog (CairoDockAppletISubApplet* self, const char* message, gint iDuration, const char* cIconID, GError** error);
+static void cairo_dock_applet_isub_applet_proxy_AddSubIcons (CairoDockAppletISubApplet* self, char** pIconFields, int pIconFields_length1, GError** error);
+static void cairo_dock_applet_isub_applet_proxy_RemoveSubIcon (CairoDockAppletISubApplet* self, const char* cIconID, GError** error);
+static void cairo_dock_applet_isub_applet_proxy_cairo_dock_applet_isub_applet_interface_init (CairoDockAppletISubAppletIface* iface);
+static void cairo_dock_applet_isub_applet_dbus_interface_method_call (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer user_data);
+static void _dbus_cairo_dock_applet_isub_applet_SetQuickInfo (CairoDockAppletISubApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_isub_applet_SetLabel (CairoDockAppletISubApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_isub_applet_SetIcon (CairoDockAppletISubApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_isub_applet_SetEmblem (CairoDockAppletISubApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_isub_applet_Animate (CairoDockAppletISubApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_isub_applet_ShowDialog (CairoDockAppletISubApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_isub_applet_AddSubIcons (CairoDockAppletISubApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static void _dbus_cairo_dock_applet_isub_applet_RemoveSubIcon (CairoDockAppletISubApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation);
+static GVariant* cairo_dock_applet_isub_applet_dbus_interface_get_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error, gpointer user_data);
+static gboolean cairo_dock_applet_isub_applet_dbus_interface_set_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error, gpointer user_data);
+static void _dbus_cairo_dock_applet_isub_applet_on_click_sub_icon (GObject* _sender, gint iState, const char* cIconID, gpointer* _data);
+static void _dbus_cairo_dock_applet_isub_applet_on_middle_click_sub_icon (GObject* _sender, const char* cIconID, gpointer* _data);
+static void _dbus_cairo_dock_applet_isub_applet_on_scroll_sub_icon (GObject* _sender, gboolean bScrollUp, const char* cIconID, gpointer* _data);
+static void _dbus_cairo_dock_applet_isub_applet_on_drop_data_sub_icon (GObject* _sender, const char* cReceivedData, const char* cIconID, gpointer* _data);
+static void _dbus_cairo_dock_applet_isub_applet_on_build_menu_sub_icon (GObject* _sender, const char* cIconID, gpointer* _data);
+static void _cairo_dock_applet_isub_applet_unregister_object (gpointer user_data);
+GType cairo_dock_applet_cd_applet_get_type (void) G_GNUC_CONST;
+#define CAIRO_DOCK_APPLET_CD_APPLET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), CAIRO_DOCK_APPLET_TYPE_CD_APPLET, CairoDockAppletCDAppletPrivate))
+enum  {
+	CAIRO_DOCK_APPLET_CD_APPLET_DUMMY_PROPERTY
+};
+GType cairo_dock_applet_cd_applet_screen_position_get_type (void) G_GNUC_CONST;
+GType cairo_dock_applet_cd_applet_container_type_get_type (void) G_GNUC_CONST;
+GType cairo_dock_applet_cd_applet_emblem_position_get_type (void) G_GNUC_CONST;
+GType cairo_dock_applet_cd_applet_menu_item_type_get_type (void) G_GNUC_CONST;
+CairoDockAppletCDApplet* cairo_dock_applet_cd_applet_new (char** argv, int argv_length1);
+CairoDockAppletCDApplet* cairo_dock_applet_cd_applet_construct (GType object_type, char** argv, int argv_length1);
+static void _cairo_dock_applet_cd_applet_get_config (CairoDockAppletCDApplet* self);
+static void _cairo_dock_applet_cd_applet_connect_to_bus (CairoDockAppletCDApplet* self);
+void cairo_dock_applet_cd_applet_run (CairoDockAppletCDApplet* self);
+void cairo_dock_applet_cd_applet_begin (CairoDockAppletCDApplet* self);
+void cairo_dock_applet_cd_applet_on_click (CairoDockAppletCDApplet* self, gint iState);
+static void cairo_dock_applet_cd_applet_real_on_click (CairoDockAppletCDApplet* self, gint iState);
+void cairo_dock_applet_cd_applet_on_middle_click (CairoDockAppletCDApplet* self);
+static void cairo_dock_applet_cd_applet_real_on_middle_click (CairoDockAppletCDApplet* self);
+static void _cairo_dock_applet_cd_applet_on_build_menu (CairoDockAppletCDApplet* self);
+void cairo_dock_applet_cd_applet_on_build_menu (CairoDockAppletCDApplet* self);
+static void cairo_dock_applet_cd_applet_real_on_build_menu (CairoDockAppletCDApplet* self);
+static void _cairo_dock_applet_cd_applet_on_menu_select (CairoDockAppletCDApplet* self, gint iNumEntry);
+void cairo_dock_applet_cd_applet_on_menu_select (CairoDockAppletCDApplet* self, gint iNumEntry);
+void cairo_dock_applet_cd_applet_on_menu_select_sub_icon (CairoDockAppletCDApplet* self, gint iNumEntry, const char* cIconID);
+static void cairo_dock_applet_cd_applet_real_on_menu_select (CairoDockAppletCDApplet* self, gint iNumEntry);
+void cairo_dock_applet_cd_applet_on_scroll (CairoDockAppletCDApplet* self, gboolean bScrollUp);
+static void cairo_dock_applet_cd_applet_real_on_scroll (CairoDockAppletCDApplet* self, gboolean bScrollUp);
+void cairo_dock_applet_cd_applet_on_drop_data (CairoDockAppletCDApplet* self, const char* cReceivedData);
+static void cairo_dock_applet_cd_applet_real_on_drop_data (CairoDockAppletCDApplet* self, const char* cReceivedData);
+void cairo_dock_applet_cd_applet_on_answer (CairoDockAppletCDApplet* self, GVariant* answer);
+static void cairo_dock_applet_cd_applet_real_on_answer (CairoDockAppletCDApplet* self, GVariant* answer);
+void cairo_dock_applet_cd_applet_on_answer_dialog (CairoDockAppletCDApplet* self, gint iButton, GVariant* answer);
+static void cairo_dock_applet_cd_applet_real_on_answer_dialog (CairoDockAppletCDApplet* self, gint iButton, GVariant* answer);
+void cairo_dock_applet_cd_applet_on_shortkey (CairoDockAppletCDApplet* self, const char* cKey);
+static void cairo_dock_applet_cd_applet_real_on_shortkey (CairoDockAppletCDApplet* self, const char* cKey);
+void cairo_dock_applet_cd_applet_on_change_focus (CairoDockAppletCDApplet* self, gboolean bIsActive);
+static void cairo_dock_applet_cd_applet_real_on_change_focus (CairoDockAppletCDApplet* self, gboolean bIsActive);
+void cairo_dock_applet_cd_applet_on_click_sub_icon (CairoDockAppletCDApplet* self, gint iState, const char* cIconID);
+static void cairo_dock_applet_cd_applet_real_on_click_sub_icon (CairoDockAppletCDApplet* self, gint iState, const char* cIconID);
+void cairo_dock_applet_cd_applet_on_middle_click_sub_icon (CairoDockAppletCDApplet* self, const char* cIconID);
+static void cairo_dock_applet_cd_applet_real_on_middle_click_sub_icon (CairoDockAppletCDApplet* self, const char* cIconID);
+void cairo_dock_applet_cd_applet_on_scroll_sub_icon (CairoDockAppletCDApplet* self, gboolean bScrollUp, const char* cIconID);
+static void cairo_dock_applet_cd_applet_real_on_scroll_sub_icon (CairoDockAppletCDApplet* self, gboolean bScrollUp, const char* cIconID);
+void cairo_dock_applet_cd_applet_on_drop_data_sub_icon (CairoDockAppletCDApplet* self, const char* cReceivedData, const char* cIconID);
+static void cairo_dock_applet_cd_applet_real_on_drop_data_sub_icon (CairoDockAppletCDApplet* self, const char* cReceivedData, const char* cIconID);
+static void _cairo_dock_applet_cd_applet_on_build_menu_sub_icon (CairoDockAppletCDApplet* self, const char* cIconID);
+void cairo_dock_applet_cd_applet_on_build_menu_sub_icon (CairoDockAppletCDApplet* self, const char* cIconID);
+static void cairo_dock_applet_cd_applet_real_on_build_menu_sub_icon (CairoDockAppletCDApplet* self, const char* cIconID);
+static void cairo_dock_applet_cd_applet_real_on_menu_select_sub_icon (CairoDockAppletCDApplet* self, gint iNumEntry, const char* cIconID);
+static void cairo_dock_applet_cd_applet_real_begin (CairoDockAppletCDApplet* self);
+void cairo_dock_applet_cd_applet_end (CairoDockAppletCDApplet* self);
+static void cairo_dock_applet_cd_applet_real_end (CairoDockAppletCDApplet* self);
+static void _cairo_dock_applet_cd_applet_on_stop (CairoDockAppletCDApplet* self);
+void cairo_dock_applet_cd_applet_reload (CairoDockAppletCDApplet* self);
+static void cairo_dock_applet_cd_applet_real_reload (CairoDockAppletCDApplet* self);
+static void _cairo_dock_applet_cd_applet_on_reload (CairoDockAppletCDApplet* self, gboolean bConfigHasChanged);
+void cairo_dock_applet_cd_applet_get_config (CairoDockAppletCDApplet* self, GKeyFile* keyfile);
+static void cairo_dock_applet_cd_applet_real_get_config (CairoDockAppletCDApplet* self, GKeyFile* keyfile);
+static void _cairo_dock_applet_cd_applet_on_click_cairo_dock_applet_iapplet_on_click (CairoDockAppletIApplet* _sender, gint iState, gpointer self);
+static void _cairo_dock_applet_cd_applet_on_middle_click_cairo_dock_applet_iapplet_on_middle_click (CairoDockAppletIApplet* _sender, gpointer self);
+static void __cairo_dock_applet_cd_applet_on_build_menu_cairo_dock_applet_iapplet_on_build_menu (CairoDockAppletIApplet* _sender, gpointer self);
+static void __cairo_dock_applet_cd_applet_on_menu_select_cairo_dock_applet_iapplet_on_menu_select (CairoDockAppletIApplet* _sender, gint iNumEntry, gpointer self);
+static void _cairo_dock_applet_cd_applet_on_scroll_cairo_dock_applet_iapplet_on_scroll (CairoDockAppletIApplet* _sender, gboolean bScrollUp, gpointer self);
+static void _cairo_dock_applet_cd_applet_on_drop_data_cairo_dock_applet_iapplet_on_drop_data (CairoDockAppletIApplet* _sender, const char* cReceivedData, gpointer self);
+static void _cairo_dock_applet_cd_applet_on_answer_cairo_dock_applet_iapplet_on_answer (CairoDockAppletIApplet* _sender, GVariant* answer, gpointer self);
+static void _cairo_dock_applet_cd_applet_on_answer_dialog_cairo_dock_applet_iapplet_on_answer_dialog (CairoDockAppletIApplet* _sender, gint iButton, GVariant* answer, gpointer self);
+static void _cairo_dock_applet_cd_applet_on_shortkey_cairo_dock_applet_iapplet_on_shortkey (CairoDockAppletIApplet* _sender, const char* cKey, gpointer self);
+static void _cairo_dock_applet_cd_applet_on_change_focus_cairo_dock_applet_iapplet_on_change_focus (CairoDockAppletIApplet* _sender, gboolean bIsActive, gpointer self);
+static void __cairo_dock_applet_cd_applet_on_stop_cairo_dock_applet_iapplet_on_stop_module (CairoDockAppletIApplet* _sender, gpointer self);
+static void __cairo_dock_applet_cd_applet_on_reload_cairo_dock_applet_iapplet_on_reload_module (CairoDockAppletIApplet* _sender, gboolean bConfigHasChanged, gpointer self);
+static void _cairo_dock_applet_cd_applet_on_click_sub_icon_cairo_dock_applet_isub_applet_on_click_sub_icon (CairoDockAppletISubApplet* _sender, gint iState, const char* cIconID, gpointer self);
+static void _cairo_dock_applet_cd_applet_on_middle_click_sub_icon_cairo_dock_applet_isub_applet_on_middle_click_sub_icon (CairoDockAppletISubApplet* _sender, const char* cIconID, gpointer self);
+static void _cairo_dock_applet_cd_applet_on_scroll_sub_icon_cairo_dock_applet_isub_applet_on_scroll_sub_icon (CairoDockAppletISubApplet* _sender, gboolean bScrollUp, const char* cIconID, gpointer self);
+static void _cairo_dock_applet_cd_applet_on_drop_data_sub_icon_cairo_dock_applet_isub_applet_on_drop_data_sub_icon (CairoDockAppletISubApplet* _sender, const char* cReceivedData, const char* cIconID, gpointer self);
+static void __cairo_dock_applet_cd_applet_on_build_menu_sub_icon_cairo_dock_applet_isub_applet_on_build_menu_sub_icon (CairoDockAppletISubApplet* _sender, const char* cIconID, gpointer self);
+static void cairo_dock_applet_cd_applet_finalize (GObject* obj);
+static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
+static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
+
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_Get_cProperty = {-1, "cProperty", "s"};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_Get_result = {-1, "result", "v"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_Get_in[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_Get_cProperty, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_Get_out[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_Get_result, NULL};
+static const GDBusMethodInfo _cairo_dock_applet_iapplet_dbus_method_info_Get = {-1, "Get", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_Get_in), (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_Get_out)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_GetAll_result = {-1, "result", "a{sv}"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_GetAll_in[] = {NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_GetAll_out[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_GetAll_result, NULL};
+static const GDBusMethodInfo _cairo_dock_applet_iapplet_dbus_method_info_GetAll = {-1, "GetAll", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_GetAll_in), (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_GetAll_out)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_SetQuickInfo_cQuickInfo = {-1, "cQuickInfo", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_SetQuickInfo_in[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_SetQuickInfo_cQuickInfo, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_SetQuickInfo_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_iapplet_dbus_method_info_SetQuickInfo = {-1, "SetQuickInfo", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_SetQuickInfo_in), (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_SetQuickInfo_out)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_SetLabel_cLabel = {-1, "cLabel", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_SetLabel_in[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_SetLabel_cLabel, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_SetLabel_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_iapplet_dbus_method_info_SetLabel = {-1, "SetLabel", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_SetLabel_in), (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_SetLabel_out)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_SetIcon_cImage = {-1, "cImage", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_SetIcon_in[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_SetIcon_cImage, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_SetIcon_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_iapplet_dbus_method_info_SetIcon = {-1, "SetIcon", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_SetIcon_in), (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_SetIcon_out)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_SetEmblem_cImage = {-1, "cImage", "s"};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_SetEmblem_iPosition = {-1, "iPosition", "i"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_SetEmblem_in[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_SetEmblem_cImage, &_cairo_dock_applet_iapplet_dbus_arg_info_SetEmblem_iPosition, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_SetEmblem_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_iapplet_dbus_method_info_SetEmblem = {-1, "SetEmblem", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_SetEmblem_in), (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_SetEmblem_out)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_Animate_cAnimation = {-1, "cAnimation", "s"};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_Animate_iRounds = {-1, "iRounds", "i"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_Animate_in[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_Animate_cAnimation, &_cairo_dock_applet_iapplet_dbus_arg_info_Animate_iRounds, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_Animate_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_iapplet_dbus_method_info_Animate = {-1, "Animate", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_Animate_in), (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_Animate_out)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_DemandsAttention_bStart = {-1, "bStart", "b"};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_DemandsAttention_cAnimation = {-1, "cAnimation", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_DemandsAttention_in[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_DemandsAttention_bStart, &_cairo_dock_applet_iapplet_dbus_arg_info_DemandsAttention_cAnimation, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_DemandsAttention_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_iapplet_dbus_method_info_DemandsAttention = {-1, "DemandsAttention", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_DemandsAttention_in), (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_DemandsAttention_out)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_ShowDialog_cMessage = {-1, "cMessage", "s"};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_ShowDialog_iDuration = {-1, "iDuration", "i"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_ShowDialog_in[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_ShowDialog_cMessage, &_cairo_dock_applet_iapplet_dbus_arg_info_ShowDialog_iDuration, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_ShowDialog_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_iapplet_dbus_method_info_ShowDialog = {-1, "ShowDialog", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_ShowDialog_in), (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_ShowDialog_out)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_PopupDialog_hDialogAttributes = {-1, "hDialogAttributes", "a{sv}"};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_PopupDialog_hWidgetAttributes = {-1, "hWidgetAttributes", "a{sv}"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_PopupDialog_in[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_PopupDialog_hDialogAttributes, &_cairo_dock_applet_iapplet_dbus_arg_info_PopupDialog_hWidgetAttributes, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_PopupDialog_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_iapplet_dbus_method_info_PopupDialog = {-1, "PopupDialog", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_PopupDialog_in), (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_PopupDialog_out)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_AddDataRenderer_cType = {-1, "cType", "s"};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_AddDataRenderer_iNbValues = {-1, "iNbValues", "i"};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_AddDataRenderer_cTheme = {-1, "cTheme", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_AddDataRenderer_in[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_AddDataRenderer_cType, &_cairo_dock_applet_iapplet_dbus_arg_info_AddDataRenderer_iNbValues, &_cairo_dock_applet_iapplet_dbus_arg_info_AddDataRenderer_cTheme, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_AddDataRenderer_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_iapplet_dbus_method_info_AddDataRenderer = {-1, "AddDataRenderer", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_AddDataRenderer_in), (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_AddDataRenderer_out)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_RenderValues_pValues = {-1, "pValues", "ad"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_RenderValues_in[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_RenderValues_pValues, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_RenderValues_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_iapplet_dbus_method_info_RenderValues = {-1, "RenderValues", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_RenderValues_in), (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_RenderValues_out)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_ControlAppli_cApplicationClass = {-1, "cApplicationClass", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_ControlAppli_in[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_ControlAppli_cApplicationClass, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_ControlAppli_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_iapplet_dbus_method_info_ControlAppli = {-1, "ControlAppli", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_ControlAppli_in), (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_ControlAppli_out)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_ShowAppli_bShow = {-1, "bShow", "b"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_ShowAppli_in[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_ShowAppli_bShow, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_ShowAppli_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_iapplet_dbus_method_info_ShowAppli = {-1, "ShowAppli", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_ShowAppli_in), (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_ShowAppli_out)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_AddMenuItems_pItems = {-1, "pItems", "aa{sv}"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_AddMenuItems_in[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_AddMenuItems_pItems, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_AddMenuItems_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_iapplet_dbus_method_info_AddMenuItems = {-1, "AddMenuItems", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_AddMenuItems_in), (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_AddMenuItems_out)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_BindShortkey_cShortkeys = {-1, "cShortkeys", "as"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_BindShortkey_in[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_BindShortkey_cShortkeys, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_BindShortkey_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_iapplet_dbus_method_info_BindShortkey = {-1, "BindShortkey", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_BindShortkey_in), (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_BindShortkey_out)};
+static const GDBusMethodInfo * const _cairo_dock_applet_iapplet_dbus_method_info[] = {&_cairo_dock_applet_iapplet_dbus_method_info_Get, &_cairo_dock_applet_iapplet_dbus_method_info_GetAll, &_cairo_dock_applet_iapplet_dbus_method_info_SetQuickInfo, &_cairo_dock_applet_iapplet_dbus_method_info_SetLabel, &_cairo_dock_applet_iapplet_dbus_method_info_SetIcon, &_cairo_dock_applet_iapplet_dbus_method_info_SetEmblem, &_cairo_dock_applet_iapplet_dbus_method_info_Animate, &_cairo_dock_applet_iapplet_dbus_method_info_DemandsAttention, &_cairo_dock_applet_iapplet_dbus_method_info_ShowDialog, &_cairo_dock_applet_iapplet_dbus_method_info_PopupDialog, &_cairo_dock_applet_iapplet_dbus_method_info_AddDataRenderer, &_cairo_dock_applet_iapplet_dbus_method_info_RenderValues, &_cairo_dock_applet_iapplet_dbus_method_info_ControlAppli, &_cairo_dock_applet_iapplet_dbus_method_info_ShowAppli, &_cairo_dock_applet_iapplet_dbus_method_info_AddMenuItems, &_cairo_dock_applet_iapplet_dbus_method_info_BindShortkey, NULL};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_on_click_iState = {-1, "iState", "i"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_on_click[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_on_click_iState, NULL};
+static const GDBusSignalInfo _cairo_dock_applet_iapplet_dbus_signal_info_on_click = {-1, "on_click", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_on_click)};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_on_middle_click[] = {NULL};
+static const GDBusSignalInfo _cairo_dock_applet_iapplet_dbus_signal_info_on_middle_click = {-1, "on_middle_click", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_on_middle_click)};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_on_build_menu[] = {NULL};
+static const GDBusSignalInfo _cairo_dock_applet_iapplet_dbus_signal_info_on_build_menu = {-1, "on_build_menu", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_on_build_menu)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_on_menu_select_iNumEntry = {-1, "iNumEntry", "i"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_on_menu_select[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_on_menu_select_iNumEntry, NULL};
+static const GDBusSignalInfo _cairo_dock_applet_iapplet_dbus_signal_info_on_menu_select = {-1, "on_menu_select", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_on_menu_select)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_on_scroll_bScrollUp = {-1, "bScrollUp", "b"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_on_scroll[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_on_scroll_bScrollUp, NULL};
+static const GDBusSignalInfo _cairo_dock_applet_iapplet_dbus_signal_info_on_scroll = {-1, "on_scroll", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_on_scroll)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_on_drop_data_cReceivedData = {-1, "cReceivedData", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_on_drop_data[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_on_drop_data_cReceivedData, NULL};
+static const GDBusSignalInfo _cairo_dock_applet_iapplet_dbus_signal_info_on_drop_data = {-1, "on_drop_data", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_on_drop_data)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_on_answer_answer = {-1, "answer", "v"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_on_answer[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_on_answer_answer, NULL};
+static const GDBusSignalInfo _cairo_dock_applet_iapplet_dbus_signal_info_on_answer = {-1, "on_answer", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_on_answer)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_on_answer_dialog_iButton = {-1, "iButton", "i"};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_on_answer_dialog_answer = {-1, "answer", "v"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_on_answer_dialog[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_on_answer_dialog_iButton, &_cairo_dock_applet_iapplet_dbus_arg_info_on_answer_dialog_answer, NULL};
+static const GDBusSignalInfo _cairo_dock_applet_iapplet_dbus_signal_info_on_answer_dialog = {-1, "on_answer_dialog", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_on_answer_dialog)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_on_shortkey_cKey = {-1, "cKey", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_on_shortkey[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_on_shortkey_cKey, NULL};
+static const GDBusSignalInfo _cairo_dock_applet_iapplet_dbus_signal_info_on_shortkey = {-1, "on_shortkey", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_on_shortkey)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_on_change_focus_bIsActive = {-1, "bIsActive", "b"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_on_change_focus[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_on_change_focus_bIsActive, NULL};
+static const GDBusSignalInfo _cairo_dock_applet_iapplet_dbus_signal_info_on_change_focus = {-1, "on_change_focus", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_on_change_focus)};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_on_stop_module[] = {NULL};
+static const GDBusSignalInfo _cairo_dock_applet_iapplet_dbus_signal_info_on_stop_module = {-1, "on_stop_module", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_on_stop_module)};
+static const GDBusArgInfo _cairo_dock_applet_iapplet_dbus_arg_info_on_reload_module_bConfigHasChanged = {-1, "bConfigHasChanged", "b"};
+static const GDBusArgInfo * const _cairo_dock_applet_iapplet_dbus_arg_info_on_reload_module[] = {&_cairo_dock_applet_iapplet_dbus_arg_info_on_reload_module_bConfigHasChanged, NULL};
+static const GDBusSignalInfo _cairo_dock_applet_iapplet_dbus_signal_info_on_reload_module = {-1, "on_reload_module", (GDBusArgInfo **) (&_cairo_dock_applet_iapplet_dbus_arg_info_on_reload_module)};
+static const GDBusSignalInfo * const _cairo_dock_applet_iapplet_dbus_signal_info[] = {&_cairo_dock_applet_iapplet_dbus_signal_info_on_click, &_cairo_dock_applet_iapplet_dbus_signal_info_on_middle_click, &_cairo_dock_applet_iapplet_dbus_signal_info_on_build_menu, &_cairo_dock_applet_iapplet_dbus_signal_info_on_menu_select, &_cairo_dock_applet_iapplet_dbus_signal_info_on_scroll, &_cairo_dock_applet_iapplet_dbus_signal_info_on_drop_data, &_cairo_dock_applet_iapplet_dbus_signal_info_on_answer, &_cairo_dock_applet_iapplet_dbus_signal_info_on_answer_dialog, &_cairo_dock_applet_iapplet_dbus_signal_info_on_shortkey, &_cairo_dock_applet_iapplet_dbus_signal_info_on_change_focus, &_cairo_dock_applet_iapplet_dbus_signal_info_on_stop_module, &_cairo_dock_applet_iapplet_dbus_signal_info_on_reload_module, NULL};
+static const GDBusPropertyInfo * const _cairo_dock_applet_iapplet_dbus_property_info[] = {NULL};
+static const GDBusInterfaceInfo _cairo_dock_applet_iapplet_dbus_interface_info = {-1, "org.cairodock.CairoDock.applet", (GDBusMethodInfo **) (&_cairo_dock_applet_iapplet_dbus_method_info), (GDBusSignalInfo **) (&_cairo_dock_applet_iapplet_dbus_signal_info), (GDBusPropertyInfo **) (&_cairo_dock_applet_iapplet_dbus_property_info)};
+static const GDBusInterfaceVTable _cairo_dock_applet_iapplet_dbus_interface_vtable = {cairo_dock_applet_iapplet_dbus_interface_method_call, cairo_dock_applet_iapplet_dbus_interface_get_property, cairo_dock_applet_iapplet_dbus_interface_set_property};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_SetQuickInfo_cQuickInfo = {-1, "cQuickInfo", "s"};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_SetQuickInfo_cIconID = {-1, "cIconID", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_SetQuickInfo_in[] = {&_cairo_dock_applet_isub_applet_dbus_arg_info_SetQuickInfo_cQuickInfo, &_cairo_dock_applet_isub_applet_dbus_arg_info_SetQuickInfo_cIconID, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_SetQuickInfo_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_isub_applet_dbus_method_info_SetQuickInfo = {-1, "SetQuickInfo", (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_SetQuickInfo_in), (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_SetQuickInfo_out)};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_SetLabel_cLabel = {-1, "cLabel", "s"};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_SetLabel_cIconID = {-1, "cIconID", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_SetLabel_in[] = {&_cairo_dock_applet_isub_applet_dbus_arg_info_SetLabel_cLabel, &_cairo_dock_applet_isub_applet_dbus_arg_info_SetLabel_cIconID, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_SetLabel_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_isub_applet_dbus_method_info_SetLabel = {-1, "SetLabel", (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_SetLabel_in), (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_SetLabel_out)};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_SetIcon_cImage = {-1, "cImage", "s"};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_SetIcon_cIconID = {-1, "cIconID", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_SetIcon_in[] = {&_cairo_dock_applet_isub_applet_dbus_arg_info_SetIcon_cImage, &_cairo_dock_applet_isub_applet_dbus_arg_info_SetIcon_cIconID, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_SetIcon_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_isub_applet_dbus_method_info_SetIcon = {-1, "SetIcon", (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_SetIcon_in), (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_SetIcon_out)};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_SetEmblem_cImage = {-1, "cImage", "s"};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_SetEmblem_iPosition = {-1, "iPosition", "i"};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_SetEmblem_cIconID = {-1, "cIconID", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_SetEmblem_in[] = {&_cairo_dock_applet_isub_applet_dbus_arg_info_SetEmblem_cImage, &_cairo_dock_applet_isub_applet_dbus_arg_info_SetEmblem_iPosition, &_cairo_dock_applet_isub_applet_dbus_arg_info_SetEmblem_cIconID, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_SetEmblem_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_isub_applet_dbus_method_info_SetEmblem = {-1, "SetEmblem", (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_SetEmblem_in), (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_SetEmblem_out)};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_Animate_cAnimation = {-1, "cAnimation", "s"};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_Animate_iNbRounds = {-1, "iNbRounds", "i"};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_Animate_cIconID = {-1, "cIconID", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_Animate_in[] = {&_cairo_dock_applet_isub_applet_dbus_arg_info_Animate_cAnimation, &_cairo_dock_applet_isub_applet_dbus_arg_info_Animate_iNbRounds, &_cairo_dock_applet_isub_applet_dbus_arg_info_Animate_cIconID, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_Animate_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_isub_applet_dbus_method_info_Animate = {-1, "Animate", (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_Animate_in), (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_Animate_out)};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_ShowDialog_message = {-1, "message", "s"};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_ShowDialog_iDuration = {-1, "iDuration", "i"};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_ShowDialog_cIconID = {-1, "cIconID", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_ShowDialog_in[] = {&_cairo_dock_applet_isub_applet_dbus_arg_info_ShowDialog_message, &_cairo_dock_applet_isub_applet_dbus_arg_info_ShowDialog_iDuration, &_cairo_dock_applet_isub_applet_dbus_arg_info_ShowDialog_cIconID, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_ShowDialog_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_isub_applet_dbus_method_info_ShowDialog = {-1, "ShowDialog", (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_ShowDialog_in), (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_ShowDialog_out)};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_AddSubIcons_pIconFields = {-1, "pIconFields", "as"};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_AddSubIcons_in[] = {&_cairo_dock_applet_isub_applet_dbus_arg_info_AddSubIcons_pIconFields, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_AddSubIcons_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_isub_applet_dbus_method_info_AddSubIcons = {-1, "AddSubIcons", (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_AddSubIcons_in), (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_AddSubIcons_out)};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_RemoveSubIcon_cIconID = {-1, "cIconID", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_RemoveSubIcon_in[] = {&_cairo_dock_applet_isub_applet_dbus_arg_info_RemoveSubIcon_cIconID, NULL};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_RemoveSubIcon_out[] = {NULL};
+static const GDBusMethodInfo _cairo_dock_applet_isub_applet_dbus_method_info_RemoveSubIcon = {-1, "RemoveSubIcon", (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_RemoveSubIcon_in), (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_RemoveSubIcon_out)};
+static const GDBusMethodInfo * const _cairo_dock_applet_isub_applet_dbus_method_info[] = {&_cairo_dock_applet_isub_applet_dbus_method_info_SetQuickInfo, &_cairo_dock_applet_isub_applet_dbus_method_info_SetLabel, &_cairo_dock_applet_isub_applet_dbus_method_info_SetIcon, &_cairo_dock_applet_isub_applet_dbus_method_info_SetEmblem, &_cairo_dock_applet_isub_applet_dbus_method_info_Animate, &_cairo_dock_applet_isub_applet_dbus_method_info_ShowDialog, &_cairo_dock_applet_isub_applet_dbus_method_info_AddSubIcons, &_cairo_dock_applet_isub_applet_dbus_method_info_RemoveSubIcon, NULL};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_on_click_sub_icon_iState = {-1, "iState", "i"};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_on_click_sub_icon_cIconID = {-1, "cIconID", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_on_click_sub_icon[] = {&_cairo_dock_applet_isub_applet_dbus_arg_info_on_click_sub_icon_iState, &_cairo_dock_applet_isub_applet_dbus_arg_info_on_click_sub_icon_cIconID, NULL};
+static const GDBusSignalInfo _cairo_dock_applet_isub_applet_dbus_signal_info_on_click_sub_icon = {-1, "on_clickSubIcon", (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_on_click_sub_icon)};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_on_middle_click_sub_icon_cIconID = {-1, "cIconID", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_on_middle_click_sub_icon[] = {&_cairo_dock_applet_isub_applet_dbus_arg_info_on_middle_click_sub_icon_cIconID, NULL};
+static const GDBusSignalInfo _cairo_dock_applet_isub_applet_dbus_signal_info_on_middle_click_sub_icon = {-1, "on_middle_clickSubIcon", (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_on_middle_click_sub_icon)};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_on_scroll_sub_icon_bScrollUp = {-1, "bScrollUp", "b"};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_on_scroll_sub_icon_cIconID = {-1, "cIconID", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_on_scroll_sub_icon[] = {&_cairo_dock_applet_isub_applet_dbus_arg_info_on_scroll_sub_icon_bScrollUp, &_cairo_dock_applet_isub_applet_dbus_arg_info_on_scroll_sub_icon_cIconID, NULL};
+static const GDBusSignalInfo _cairo_dock_applet_isub_applet_dbus_signal_info_on_scroll_sub_icon = {-1, "on_scrollSubIcon", (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_on_scroll_sub_icon)};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_on_drop_data_sub_icon_cReceivedData = {-1, "cReceivedData", "s"};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_on_drop_data_sub_icon_cIconID = {-1, "cIconID", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_on_drop_data_sub_icon[] = {&_cairo_dock_applet_isub_applet_dbus_arg_info_on_drop_data_sub_icon_cReceivedData, &_cairo_dock_applet_isub_applet_dbus_arg_info_on_drop_data_sub_icon_cIconID, NULL};
+static const GDBusSignalInfo _cairo_dock_applet_isub_applet_dbus_signal_info_on_drop_data_sub_icon = {-1, "on_drop_dataSubIcon", (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_on_drop_data_sub_icon)};
+static const GDBusArgInfo _cairo_dock_applet_isub_applet_dbus_arg_info_on_build_menu_sub_icon_cIconID = {-1, "cIconID", "s"};
+static const GDBusArgInfo * const _cairo_dock_applet_isub_applet_dbus_arg_info_on_build_menu_sub_icon[] = {&_cairo_dock_applet_isub_applet_dbus_arg_info_on_build_menu_sub_icon_cIconID, NULL};
+static const GDBusSignalInfo _cairo_dock_applet_isub_applet_dbus_signal_info_on_build_menu_sub_icon = {-1, "on_build_menuSubIcon", (GDBusArgInfo **) (&_cairo_dock_applet_isub_applet_dbus_arg_info_on_build_menu_sub_icon)};
+static const GDBusSignalInfo * const _cairo_dock_applet_isub_applet_dbus_signal_info[] = {&_cairo_dock_applet_isub_applet_dbus_signal_info_on_click_sub_icon, &_cairo_dock_applet_isub_applet_dbus_signal_info_on_middle_click_sub_icon, &_cairo_dock_applet_isub_applet_dbus_signal_info_on_scroll_sub_icon, &_cairo_dock_applet_isub_applet_dbus_signal_info_on_drop_data_sub_icon, &_cairo_dock_applet_isub_applet_dbus_signal_info_on_build_menu_sub_icon, NULL};
+static const GDBusPropertyInfo * const _cairo_dock_applet_isub_applet_dbus_property_info[] = {NULL};
+static const GDBusInterfaceInfo _cairo_dock_applet_isub_applet_dbus_interface_info = {-1, "org.cairodock.CairoDock.subapplet", (GDBusMethodInfo **) (&_cairo_dock_applet_isub_applet_dbus_method_info), (GDBusSignalInfo **) (&_cairo_dock_applet_isub_applet_dbus_signal_info), (GDBusPropertyInfo **) (&_cairo_dock_applet_isub_applet_dbus_property_info)};
+static const GDBusInterfaceVTable _cairo_dock_applet_isub_applet_dbus_interface_vtable = {cairo_dock_applet_isub_applet_dbus_interface_method_call, cairo_dock_applet_isub_applet_dbus_interface_get_property, cairo_dock_applet_isub_applet_dbus_interface_set_property};
+
+static void g_cclosure_user_marshal_VOID__VARIANT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
+static void g_cclosure_user_marshal_VOID__INT_VARIANT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
+static void g_cclosure_user_marshal_VOID__INT_STRING (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
+static void g_cclosure_user_marshal_VOID__BOOLEAN_STRING (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
+static void g_cclosure_user_marshal_VOID__STRING_STRING (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data);
+
+GVariant* cairo_dock_applet_iapplet_Get (CairoDockAppletIApplet* self, const char* cProperty, GError** error) {
+	return CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE (self)->Get (self, cProperty, error);
+}
+
+
+GHashTable* cairo_dock_applet_iapplet_GetAll (CairoDockAppletIApplet* self, GError** error) {
+	return CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE (self)->GetAll (self, error);
+}
+
+
+void cairo_dock_applet_iapplet_SetQuickInfo (CairoDockAppletIApplet* self, const char* cQuickInfo, GError** error) {
+	CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE (self)->SetQuickInfo (self, cQuickInfo, error);
+}
+
+
+void cairo_dock_applet_iapplet_SetLabel (CairoDockAppletIApplet* self, const char* cLabel, GError** error) {
+	CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE (self)->SetLabel (self, cLabel, error);
+}
+
+
+void cairo_dock_applet_iapplet_SetIcon (CairoDockAppletIApplet* self, const char* cImage, GError** error) {
+	CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE (self)->SetIcon (self, cImage, error);
+}
+
+
+void cairo_dock_applet_iapplet_SetEmblem (CairoDockAppletIApplet* self, const char* cImage, gint iPosition, GError** error) {
+	CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE (self)->SetEmblem (self, cImage, iPosition, error);
+}
+
+
+void cairo_dock_applet_iapplet_Animate (CairoDockAppletIApplet* self, const char* cAnimation, gint iRounds, GError** error) {
+	CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE (self)->Animate (self, cAnimation, iRounds, error);
+}
+
+
+void cairo_dock_applet_iapplet_DemandsAttention (CairoDockAppletIApplet* self, gboolean bStart, const char* cAnimation, GError** error) {
+	CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE (self)->DemandsAttention (self, bStart, cAnimation, error);
+}
+
+
+void cairo_dock_applet_iapplet_ShowDialog (CairoDockAppletIApplet* self, const char* cMessage, gint iDuration, GError** error) {
+	CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE (self)->ShowDialog (self, cMessage, iDuration, error);
+}
+
+
+void cairo_dock_applet_iapplet_PopupDialog (CairoDockAppletIApplet* self, GHashTable* hDialogAttributes, GHashTable* hWidgetAttributes, GError** error) {
+	CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE (self)->PopupDialog (self, hDialogAttributes, hWidgetAttributes, error);
+}
+
+
+void cairo_dock_applet_iapplet_AddDataRenderer (CairoDockAppletIApplet* self, const char* cType, gint iNbValues, const char* cTheme, GError** error) {
+	CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE (self)->AddDataRenderer (self, cType, iNbValues, cTheme, error);
+}
+
+
+void cairo_dock_applet_iapplet_RenderValues (CairoDockAppletIApplet* self, double* pValues, int pValues_length1, GError** error) {
+	CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE (self)->RenderValues (self, pValues, pValues_length1, error);
+}
+
+
+void cairo_dock_applet_iapplet_ControlAppli (CairoDockAppletIApplet* self, const char* cApplicationClass, GError** error) {
+	CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE (self)->ControlAppli (self, cApplicationClass, error);
+}
+
+
+void cairo_dock_applet_iapplet_ShowAppli (CairoDockAppletIApplet* self, gboolean bShow, GError** error) {
+	CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE (self)->ShowAppli (self, bShow, error);
+}
+
+
+void cairo_dock_applet_iapplet_AddMenuItems (CairoDockAppletIApplet* self, GHashTable** pItems, int pItems_length1, GError** error) {
+	CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE (self)->AddMenuItems (self, pItems, pItems_length1, error);
+}
+
+
+void cairo_dock_applet_iapplet_BindShortkey (CairoDockAppletIApplet* self, char** cShortkeys, int cShortkeys_length1, GError** error) {
+	CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE (self)->BindShortkey (self, cShortkeys, cShortkeys_length1, error);
+}
+
+
+static void cairo_dock_applet_iapplet_base_init (CairoDockAppletIAppletIface * iface) {
+	static gboolean initialized = FALSE;
+	if (!initialized) {
+		initialized = TRUE;
+		g_signal_new ("on_click", CAIRO_DOCK_APPLET_TYPE_IAPPLET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT);
+		g_signal_new ("on_middle_click", CAIRO_DOCK_APPLET_TYPE_IAPPLET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+		g_signal_new ("on_build_menu", CAIRO_DOCK_APPLET_TYPE_IAPPLET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+		g_signal_new ("on_menu_select", CAIRO_DOCK_APPLET_TYPE_IAPPLET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT);
+		g_signal_new ("on_scroll", CAIRO_DOCK_APPLET_TYPE_IAPPLET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
+		g_signal_new ("on_drop_data", CAIRO_DOCK_APPLET_TYPE_IAPPLET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING);
+		g_signal_new ("on_answer", CAIRO_DOCK_APPLET_TYPE_IAPPLET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__VARIANT, G_TYPE_NONE, 1, G_TYPE_VARIANT);
+		g_signal_new ("on_answer_dialog", CAIRO_DOCK_APPLET_TYPE_IAPPLET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__INT_VARIANT, G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_VARIANT);
+		g_signal_new ("on_shortkey", CAIRO_DOCK_APPLET_TYPE_IAPPLET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING);
+		g_signal_new ("on_change_focus", CAIRO_DOCK_APPLET_TYPE_IAPPLET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
+		g_signal_new ("on_stop_module", CAIRO_DOCK_APPLET_TYPE_IAPPLET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+		g_signal_new ("on_reload_module", CAIRO_DOCK_APPLET_TYPE_IAPPLET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
+	}
+}
+
+
+GType cairo_dock_applet_iapplet_get_type (void) {
+	static volatile gsize cairo_dock_applet_iapplet_type_id__volatile = 0;
+	if (g_once_init_enter (&cairo_dock_applet_iapplet_type_id__volatile)) {
+		static const GTypeInfo g_define_type_info = { sizeof (CairoDockAppletIAppletIface), (GBaseInitFunc) cairo_dock_applet_iapplet_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
+		GType cairo_dock_applet_iapplet_type_id;
+		cairo_dock_applet_iapplet_type_id = g_type_register_static (G_TYPE_INTERFACE, "CairoDockAppletIApplet", &g_define_type_info, 0);
+		g_type_interface_add_prerequisite (cairo_dock_applet_iapplet_type_id, G_TYPE_OBJECT);
+		g_once_init_leave (&cairo_dock_applet_iapplet_type_id__volatile, cairo_dock_applet_iapplet_type_id);
+	}
+	return cairo_dock_applet_iapplet_type_id__volatile;
+}
+
+
+G_DEFINE_TYPE_EXTENDED (CairoDockAppletIAppletProxy, cairo_dock_applet_iapplet_proxy, G_TYPE_DBUS_PROXY, 0, G_IMPLEMENT_INTERFACE (CAIRO_DOCK_APPLET_TYPE_IAPPLET, cairo_dock_applet_iapplet_proxy_cairo_dock_applet_iapplet_interface_init) );
+static void cairo_dock_applet_iapplet_proxy_class_init (CairoDockAppletIAppletProxyClass* klass) {
+	G_DBUS_PROXY_CLASS (klass)->g_signal = cairo_dock_applet_iapplet_proxy_g_signal;
+}
+
+
+static void _dbus_handle_cairo_dock_applet_iapplet_on_click (CairoDockAppletIApplet* self, GVariant* parameters) {
+	gint iState = 0;
+	GVariant* _tmp0_;
+	GVariantIter _arguments_iter;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp0_ = g_variant_iter_next_value (&_arguments_iter);
+	iState = g_variant_get_int32 (_tmp0_);
+	g_variant_unref (_tmp0_);
+	g_signal_emit_by_name (self, "on-click", iState);
+}
+
+
+static void _dbus_handle_cairo_dock_applet_iapplet_on_middle_click (CairoDockAppletIApplet* self, GVariant* parameters) {
+	GVariantIter _arguments_iter;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	g_signal_emit_by_name (self, "on-middle-click");
+}
+
+
+static void _dbus_handle_cairo_dock_applet_iapplet_on_build_menu (CairoDockAppletIApplet* self, GVariant* parameters) {
+	GVariantIter _arguments_iter;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	g_signal_emit_by_name (self, "on-build-menu");
+}
+
+
+static void _dbus_handle_cairo_dock_applet_iapplet_on_menu_select (CairoDockAppletIApplet* self, GVariant* parameters) {
+	gint iNumEntry = 0;
+	GVariant* _tmp1_;
+	GVariantIter _arguments_iter;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp1_ = g_variant_iter_next_value (&_arguments_iter);
+	iNumEntry = g_variant_get_int32 (_tmp1_);
+	g_variant_unref (_tmp1_);
+	g_signal_emit_by_name (self, "on-menu-select", iNumEntry);
+}
+
+
+static void _dbus_handle_cairo_dock_applet_iapplet_on_scroll (CairoDockAppletIApplet* self, GVariant* parameters) {
+	gboolean bScrollUp = FALSE;
+	GVariant* _tmp2_;
+	GVariantIter _arguments_iter;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp2_ = g_variant_iter_next_value (&_arguments_iter);
+	bScrollUp = g_variant_get_boolean (_tmp2_);
+	g_variant_unref (_tmp2_);
+	g_signal_emit_by_name (self, "on-scroll", bScrollUp);
+}
+
+
+static void _dbus_handle_cairo_dock_applet_iapplet_on_drop_data (CairoDockAppletIApplet* self, GVariant* parameters) {
+	char* cReceivedData = NULL;
+	GVariant* _tmp3_;
+	GVariantIter _arguments_iter;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp3_ = g_variant_iter_next_value (&_arguments_iter);
+	cReceivedData = g_variant_dup_string (_tmp3_, NULL);
+	g_variant_unref (_tmp3_);
+	g_signal_emit_by_name (self, "on-drop-data", cReceivedData);
+	_g_free0 (cReceivedData);
+}
+
+
+static void _dbus_handle_cairo_dock_applet_iapplet_on_answer (CairoDockAppletIApplet* self, GVariant* parameters) {
+	GVariant* answer = NULL;
+	GVariant* _tmp4_;
+	GVariantIter _arguments_iter;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp4_ = g_variant_iter_next_value (&_arguments_iter);
+	answer = g_variant_get_variant (_tmp4_);
+	g_variant_unref (_tmp4_);
+	g_signal_emit_by_name (self, "on-answer", answer);
+	_g_variant_unref0 (answer);
+}
+
+
+static void _dbus_handle_cairo_dock_applet_iapplet_on_answer_dialog (CairoDockAppletIApplet* self, GVariant* parameters) {
+	gint iButton = 0;
+	GVariant* _tmp5_;
+	GVariant* answer = NULL;
+	GVariant* _tmp6_;
+	GVariantIter _arguments_iter;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp5_ = g_variant_iter_next_value (&_arguments_iter);
+	iButton = g_variant_get_int32 (_tmp5_);
+	g_variant_unref (_tmp5_);
+	_tmp6_ = g_variant_iter_next_value (&_arguments_iter);
+	answer = g_variant_get_variant (_tmp6_);
+	g_variant_unref (_tmp6_);
+	g_signal_emit_by_name (self, "on-answer-dialog", iButton, answer);
+	_g_variant_unref0 (answer);
+}
+
+
+static void _dbus_handle_cairo_dock_applet_iapplet_on_shortkey (CairoDockAppletIApplet* self, GVariant* parameters) {
+	char* cKey = NULL;
+	GVariant* _tmp7_;
+	GVariantIter _arguments_iter;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp7_ = g_variant_iter_next_value (&_arguments_iter);
+	cKey = g_variant_dup_string (_tmp7_, NULL);
+	g_variant_unref (_tmp7_);
+	g_signal_emit_by_name (self, "on-shortkey", cKey);
+	_g_free0 (cKey);
+}
+
+
+static void _dbus_handle_cairo_dock_applet_iapplet_on_change_focus (CairoDockAppletIApplet* self, GVariant* parameters) {
+	gboolean bIsActive = FALSE;
+	GVariant* _tmp8_;
+	GVariantIter _arguments_iter;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp8_ = g_variant_iter_next_value (&_arguments_iter);
+	bIsActive = g_variant_get_boolean (_tmp8_);
+	g_variant_unref (_tmp8_);
+	g_signal_emit_by_name (self, "on-change-focus", bIsActive);
+}
+
+
+static void _dbus_handle_cairo_dock_applet_iapplet_on_stop_module (CairoDockAppletIApplet* self, GVariant* parameters) {
+	GVariantIter _arguments_iter;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	g_signal_emit_by_name (self, "on-stop-module");
+}
+
+
+static void _dbus_handle_cairo_dock_applet_iapplet_on_reload_module (CairoDockAppletIApplet* self, GVariant* parameters) {
+	gboolean bConfigHasChanged = FALSE;
+	GVariant* _tmp9_;
+	GVariantIter _arguments_iter;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp9_ = g_variant_iter_next_value (&_arguments_iter);
+	bConfigHasChanged = g_variant_get_boolean (_tmp9_);
+	g_variant_unref (_tmp9_);
+	g_signal_emit_by_name (self, "on-reload-module", bConfigHasChanged);
+}
+
+
+static void cairo_dock_applet_iapplet_proxy_g_signal (GDBusProxy* proxy, const gchar* sender_name, const gchar* signal_name, GVariant* parameters) {
+	if (strcmp (signal_name, "on_click") == 0) {
+		_dbus_handle_cairo_dock_applet_iapplet_on_click (proxy, parameters);
+	} else if (strcmp (signal_name, "on_middle_click") == 0) {
+		_dbus_handle_cairo_dock_applet_iapplet_on_middle_click (proxy, parameters);
+	} else if (strcmp (signal_name, "on_build_menu") == 0) {
+		_dbus_handle_cairo_dock_applet_iapplet_on_build_menu (proxy, parameters);
+	} else if (strcmp (signal_name, "on_menu_select") == 0) {
+		_dbus_handle_cairo_dock_applet_iapplet_on_menu_select (proxy, parameters);
+	} else if (strcmp (signal_name, "on_scroll") == 0) {
+		_dbus_handle_cairo_dock_applet_iapplet_on_scroll (proxy, parameters);
+	} else if (strcmp (signal_name, "on_drop_data") == 0) {
+		_dbus_handle_cairo_dock_applet_iapplet_on_drop_data (proxy, parameters);
+	} else if (strcmp (signal_name, "on_answer") == 0) {
+		_dbus_handle_cairo_dock_applet_iapplet_on_answer (proxy, parameters);
+	} else if (strcmp (signal_name, "on_answer_dialog") == 0) {
+		_dbus_handle_cairo_dock_applet_iapplet_on_answer_dialog (proxy, parameters);
+	} else if (strcmp (signal_name, "on_shortkey") == 0) {
+		_dbus_handle_cairo_dock_applet_iapplet_on_shortkey (proxy, parameters);
+	} else if (strcmp (signal_name, "on_change_focus") == 0) {
+		_dbus_handle_cairo_dock_applet_iapplet_on_change_focus (proxy, parameters);
+	} else if (strcmp (signal_name, "on_stop_module") == 0) {
+		_dbus_handle_cairo_dock_applet_iapplet_on_stop_module (proxy, parameters);
+	} else if (strcmp (signal_name, "on_reload_module") == 0) {
+		_dbus_handle_cairo_dock_applet_iapplet_on_reload_module (proxy, parameters);
+	}
+}
+
+
+static void cairo_dock_applet_iapplet_proxy_init (CairoDockAppletIAppletProxy* self) {
+}
+
+
+static GVariant* cairo_dock_applet_iapplet_proxy_Get (CairoDockAppletIApplet* self, const char* cProperty, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	GVariant* _result;
+	GVariant* _tmp10_;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cProperty));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.applet.Get", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return NULL;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	_tmp10_ = g_variant_iter_next_value (&_reply_iter);
+	_result = g_variant_get_variant (_tmp10_);
+	g_variant_unref (_tmp10_);
+	g_variant_unref (_reply);
+	return _result;
+}
+
+
+static GHashTable* cairo_dock_applet_iapplet_proxy_GetAll (CairoDockAppletIApplet* self, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	GHashTable* _result;
+	GVariant* _tmp11_;
+	GHashTable* _tmp12_;
+	GVariantIter _tmp13_;
+	GVariant* _tmp14_;
+	GVariant* _tmp15_;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.applet.GetAll", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return NULL;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	_tmp11_ = g_variant_iter_next_value (&_reply_iter);
+	_tmp12_ = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+	g_variant_iter_init (&_tmp13_, _tmp11_);
+	while (g_variant_iter_loop (&_tmp13_, "{?*}", &_tmp14_, &_tmp15_)) {
+		g_hash_table_insert (_tmp12_, g_variant_dup_string (_tmp14_, NULL), g_variant_get_variant (_tmp15_));
+	}
+	_result = _tmp12_;
+	g_variant_unref (_tmp11_);
+	g_variant_unref (_reply);
+	return _result;
+}
+
+
+static void cairo_dock_applet_iapplet_proxy_SetQuickInfo (CairoDockAppletIApplet* self, const char* cQuickInfo, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cQuickInfo));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.applet.SetQuickInfo", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_iapplet_proxy_SetLabel (CairoDockAppletIApplet* self, const char* cLabel, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cLabel));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.applet.SetLabel", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_iapplet_proxy_SetIcon (CairoDockAppletIApplet* self, const char* cImage, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cImage));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.applet.SetIcon", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_iapplet_proxy_SetEmblem (CairoDockAppletIApplet* self, const char* cImage, gint iPosition, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cImage));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_int32 (iPosition));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.applet.SetEmblem", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_iapplet_proxy_Animate (CairoDockAppletIApplet* self, const char* cAnimation, gint iRounds, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cAnimation));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_int32 (iRounds));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.applet.Animate", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_iapplet_proxy_DemandsAttention (CairoDockAppletIApplet* self, gboolean bStart, const char* cAnimation, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_boolean (bStart));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cAnimation));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.applet.DemandsAttention", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_iapplet_proxy_ShowDialog (CairoDockAppletIApplet* self, const char* cMessage, gint iDuration, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cMessage));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_int32 (iDuration));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.applet.ShowDialog", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_iapplet_proxy_PopupDialog (CairoDockAppletIApplet* self, GHashTable* hDialogAttributes, GHashTable* hWidgetAttributes, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantBuilder _tmp16_;
+	GHashTableIter _tmp17_;
+	gpointer _tmp18_, _tmp19_;
+	GVariantBuilder _tmp20_;
+	GHashTableIter _tmp21_;
+	gpointer _tmp22_, _tmp23_;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_hash_table_iter_init (&_tmp17_, hDialogAttributes);
+	g_variant_builder_init (&_tmp16_, G_VARIANT_TYPE_DICTIONARY);
+	while (g_hash_table_iter_next (&_tmp17_, &_tmp18_, &_tmp19_)) {
+		char* _key;
+		GVariant* _value;
+		_key = (char*) _tmp18_;
+		_value = (GVariant*) _tmp19_;
+		g_variant_builder_add (&_tmp16_, "{?*}", g_variant_new_string (_key), g_variant_new_variant (_value));
+	}
+	g_variant_builder_add_value (&_arguments_builder, g_variant_builder_end (&_tmp16_));
+	g_hash_table_iter_init (&_tmp21_, hWidgetAttributes);
+	g_variant_builder_init (&_tmp20_, G_VARIANT_TYPE_DICTIONARY);
+	while (g_hash_table_iter_next (&_tmp21_, &_tmp22_, &_tmp23_)) {
+		char* _key;
+		GVariant* _value;
+		_key = (char*) _tmp22_;
+		_value = (GVariant*) _tmp23_;
+		g_variant_builder_add (&_tmp20_, "{?*}", g_variant_new_string (_key), g_variant_new_variant (_value));
+	}
+	g_variant_builder_add_value (&_arguments_builder, g_variant_builder_end (&_tmp20_));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.applet.PopupDialog", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_iapplet_proxy_AddDataRenderer (CairoDockAppletIApplet* self, const char* cType, gint iNbValues, const char* cTheme, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cType));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_int32 (iNbValues));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cTheme));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.applet.AddDataRenderer", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_iapplet_proxy_RenderValues (CairoDockAppletIApplet* self, double* pValues, int pValues_length1, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	double* _tmp24_;
+	GVariantBuilder _tmp25_;
+	int _tmp26_;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	_tmp24_ = pValues;
+	g_variant_builder_init (&_tmp25_, G_VARIANT_TYPE_ARRAY);
+	for (_tmp26_ = 0; _tmp26_ < pValues_length1; _tmp26_++) {
+		g_variant_builder_add_value (&_tmp25_, g_variant_new_double (*_tmp24_));
+		_tmp24_++;
+	}
+	g_variant_builder_add_value (&_arguments_builder, g_variant_builder_end (&_tmp25_));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.applet.RenderValues", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_iapplet_proxy_ControlAppli (CairoDockAppletIApplet* self, const char* cApplicationClass, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cApplicationClass));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.applet.ControlAppli", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_iapplet_proxy_ShowAppli (CairoDockAppletIApplet* self, gboolean bShow, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_boolean (bShow));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.applet.ShowAppli", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_iapplet_proxy_AddMenuItems (CairoDockAppletIApplet* self, GHashTable** pItems, int pItems_length1, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GHashTable** _tmp27_;
+	GVariantBuilder _tmp28_;
+	int _tmp29_;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	_tmp27_ = pItems;
+	g_variant_builder_init (&_tmp28_, G_VARIANT_TYPE_ARRAY);
+	for (_tmp29_ = 0; _tmp29_ < pItems_length1; _tmp29_++) {
+		GVariantBuilder _tmp30_;
+		GHashTableIter _tmp31_;
+		gpointer _tmp32_, _tmp33_;
+		g_hash_table_iter_init (&_tmp31_, *_tmp27_);
+		g_variant_builder_init (&_tmp30_, G_VARIANT_TYPE_DICTIONARY);
+		while (g_hash_table_iter_next (&_tmp31_, &_tmp32_, &_tmp33_)) {
+			char* _key;
+			GVariant* _value;
+			_key = (char*) _tmp32_;
+			_value = (GVariant*) _tmp33_;
+			g_variant_builder_add (&_tmp30_, "{?*}", g_variant_new_string (_key), g_variant_new_variant (_value));
+		}
+		g_variant_builder_add_value (&_tmp28_, g_variant_builder_end (&_tmp30_));
+		_tmp27_++;
+	}
+	g_variant_builder_add_value (&_arguments_builder, g_variant_builder_end (&_tmp28_));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.applet.AddMenuItems", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_iapplet_proxy_BindShortkey (CairoDockAppletIApplet* self, char** cShortkeys, int cShortkeys_length1, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	char** _tmp34_;
+	GVariantBuilder _tmp35_;
+	int _tmp36_;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	_tmp34_ = cShortkeys;
+	g_variant_builder_init (&_tmp35_, G_VARIANT_TYPE_ARRAY);
+	for (_tmp36_ = 0; _tmp36_ < cShortkeys_length1; _tmp36_++) {
+		g_variant_builder_add_value (&_tmp35_, g_variant_new_string (*_tmp34_));
+		_tmp34_++;
+	}
+	g_variant_builder_add_value (&_arguments_builder, g_variant_builder_end (&_tmp35_));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.applet.BindShortkey", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_iapplet_proxy_cairo_dock_applet_iapplet_interface_init (CairoDockAppletIAppletIface* iface) {
+	iface->Get = cairo_dock_applet_iapplet_proxy_Get;
+	iface->GetAll = cairo_dock_applet_iapplet_proxy_GetAll;
+	iface->SetQuickInfo = cairo_dock_applet_iapplet_proxy_SetQuickInfo;
+	iface->SetLabel = cairo_dock_applet_iapplet_proxy_SetLabel;
+	iface->SetIcon = cairo_dock_applet_iapplet_proxy_SetIcon;
+	iface->SetEmblem = cairo_dock_applet_iapplet_proxy_SetEmblem;
+	iface->Animate = cairo_dock_applet_iapplet_proxy_Animate;
+	iface->DemandsAttention = cairo_dock_applet_iapplet_proxy_DemandsAttention;
+	iface->ShowDialog = cairo_dock_applet_iapplet_proxy_ShowDialog;
+	iface->PopupDialog = cairo_dock_applet_iapplet_proxy_PopupDialog;
+	iface->AddDataRenderer = cairo_dock_applet_iapplet_proxy_AddDataRenderer;
+	iface->RenderValues = cairo_dock_applet_iapplet_proxy_RenderValues;
+	iface->ControlAppli = cairo_dock_applet_iapplet_proxy_ControlAppli;
+	iface->ShowAppli = cairo_dock_applet_iapplet_proxy_ShowAppli;
+	iface->AddMenuItems = cairo_dock_applet_iapplet_proxy_AddMenuItems;
+	iface->BindShortkey = cairo_dock_applet_iapplet_proxy_BindShortkey;
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_Get (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char* cProperty = NULL;
+	GVariant* _tmp37_;
+	GVariant* result;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp37_ = g_variant_iter_next_value (&_arguments_iter);
+	cProperty = g_variant_dup_string (_tmp37_, NULL);
+	g_variant_unref (_tmp37_);
+	result = cairo_dock_applet_iapplet_Get (self, cProperty, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_free0 (cProperty);
+	g_variant_builder_add_value (&_reply_builder, g_variant_new_variant (result));
+	_g_variant_unref0 (result);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_GetAll (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	GHashTable* result;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	GVariantBuilder _tmp38_;
+	GHashTableIter _tmp39_;
+	gpointer _tmp40_, _tmp41_;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	result = cairo_dock_applet_iapplet_GetAll (self, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	g_hash_table_iter_init (&_tmp39_, result);
+	g_variant_builder_init (&_tmp38_, G_VARIANT_TYPE_DICTIONARY);
+	while (g_hash_table_iter_next (&_tmp39_, &_tmp40_, &_tmp41_)) {
+		char* _key;
+		GVariant* _value;
+		_key = (char*) _tmp40_;
+		_value = (GVariant*) _tmp41_;
+		g_variant_builder_add (&_tmp38_, "{?*}", g_variant_new_string (_key), g_variant_new_variant (_value));
+	}
+	g_variant_builder_add_value (&_reply_builder, g_variant_builder_end (&_tmp38_));
+	_g_hash_table_unref0 (result);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_SetQuickInfo (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char* cQuickInfo = NULL;
+	GVariant* _tmp42_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp42_ = g_variant_iter_next_value (&_arguments_iter);
+	cQuickInfo = g_variant_dup_string (_tmp42_, NULL);
+	g_variant_unref (_tmp42_);
+	cairo_dock_applet_iapplet_SetQuickInfo (self, cQuickInfo, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_free0 (cQuickInfo);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_SetLabel (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char* cLabel = NULL;
+	GVariant* _tmp43_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp43_ = g_variant_iter_next_value (&_arguments_iter);
+	cLabel = g_variant_dup_string (_tmp43_, NULL);
+	g_variant_unref (_tmp43_);
+	cairo_dock_applet_iapplet_SetLabel (self, cLabel, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_free0 (cLabel);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_SetIcon (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char* cImage = NULL;
+	GVariant* _tmp44_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp44_ = g_variant_iter_next_value (&_arguments_iter);
+	cImage = g_variant_dup_string (_tmp44_, NULL);
+	g_variant_unref (_tmp44_);
+	cairo_dock_applet_iapplet_SetIcon (self, cImage, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_free0 (cImage);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_SetEmblem (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char* cImage = NULL;
+	GVariant* _tmp45_;
+	gint iPosition = 0;
+	GVariant* _tmp46_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp45_ = g_variant_iter_next_value (&_arguments_iter);
+	cImage = g_variant_dup_string (_tmp45_, NULL);
+	g_variant_unref (_tmp45_);
+	_tmp46_ = g_variant_iter_next_value (&_arguments_iter);
+	iPosition = g_variant_get_int32 (_tmp46_);
+	g_variant_unref (_tmp46_);
+	cairo_dock_applet_iapplet_SetEmblem (self, cImage, iPosition, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_free0 (cImage);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_Animate (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char* cAnimation = NULL;
+	GVariant* _tmp47_;
+	gint iRounds = 0;
+	GVariant* _tmp48_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp47_ = g_variant_iter_next_value (&_arguments_iter);
+	cAnimation = g_variant_dup_string (_tmp47_, NULL);
+	g_variant_unref (_tmp47_);
+	_tmp48_ = g_variant_iter_next_value (&_arguments_iter);
+	iRounds = g_variant_get_int32 (_tmp48_);
+	g_variant_unref (_tmp48_);
+	cairo_dock_applet_iapplet_Animate (self, cAnimation, iRounds, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_free0 (cAnimation);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_DemandsAttention (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	gboolean bStart = FALSE;
+	GVariant* _tmp49_;
+	char* cAnimation = NULL;
+	GVariant* _tmp50_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp49_ = g_variant_iter_next_value (&_arguments_iter);
+	bStart = g_variant_get_boolean (_tmp49_);
+	g_variant_unref (_tmp49_);
+	_tmp50_ = g_variant_iter_next_value (&_arguments_iter);
+	cAnimation = g_variant_dup_string (_tmp50_, NULL);
+	g_variant_unref (_tmp50_);
+	cairo_dock_applet_iapplet_DemandsAttention (self, bStart, cAnimation, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_free0 (cAnimation);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_ShowDialog (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char* cMessage = NULL;
+	GVariant* _tmp51_;
+	gint iDuration = 0;
+	GVariant* _tmp52_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp51_ = g_variant_iter_next_value (&_arguments_iter);
+	cMessage = g_variant_dup_string (_tmp51_, NULL);
+	g_variant_unref (_tmp51_);
+	_tmp52_ = g_variant_iter_next_value (&_arguments_iter);
+	iDuration = g_variant_get_int32 (_tmp52_);
+	g_variant_unref (_tmp52_);
+	cairo_dock_applet_iapplet_ShowDialog (self, cMessage, iDuration, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_free0 (cMessage);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_PopupDialog (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	GHashTable* hDialogAttributes = NULL;
+	GVariant* _tmp53_;
+	GHashTable* _tmp54_;
+	GVariantIter _tmp55_;
+	GVariant* _tmp56_;
+	GVariant* _tmp57_;
+	GHashTable* hWidgetAttributes = NULL;
+	GVariant* _tmp58_;
+	GHashTable* _tmp59_;
+	GVariantIter _tmp60_;
+	GVariant* _tmp61_;
+	GVariant* _tmp62_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp53_ = g_variant_iter_next_value (&_arguments_iter);
+	_tmp54_ = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+	g_variant_iter_init (&_tmp55_, _tmp53_);
+	while (g_variant_iter_loop (&_tmp55_, "{?*}", &_tmp56_, &_tmp57_)) {
+		g_hash_table_insert (_tmp54_, g_variant_dup_string (_tmp56_, NULL), g_variant_get_variant (_tmp57_));
+	}
+	hDialogAttributes = _tmp54_;
+	g_variant_unref (_tmp53_);
+	_tmp58_ = g_variant_iter_next_value (&_arguments_iter);
+	_tmp59_ = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+	g_variant_iter_init (&_tmp60_, _tmp58_);
+	while (g_variant_iter_loop (&_tmp60_, "{?*}", &_tmp61_, &_tmp62_)) {
+		g_hash_table_insert (_tmp59_, g_variant_dup_string (_tmp61_, NULL), g_variant_get_variant (_tmp62_));
+	}
+	hWidgetAttributes = _tmp59_;
+	g_variant_unref (_tmp58_);
+	cairo_dock_applet_iapplet_PopupDialog (self, hDialogAttributes, hWidgetAttributes, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_hash_table_unref0 (hDialogAttributes);
+	_g_hash_table_unref0 (hWidgetAttributes);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_AddDataRenderer (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char* cType = NULL;
+	GVariant* _tmp63_;
+	gint iNbValues = 0;
+	GVariant* _tmp64_;
+	char* cTheme = NULL;
+	GVariant* _tmp65_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp63_ = g_variant_iter_next_value (&_arguments_iter);
+	cType = g_variant_dup_string (_tmp63_, NULL);
+	g_variant_unref (_tmp63_);
+	_tmp64_ = g_variant_iter_next_value (&_arguments_iter);
+	iNbValues = g_variant_get_int32 (_tmp64_);
+	g_variant_unref (_tmp64_);
+	_tmp65_ = g_variant_iter_next_value (&_arguments_iter);
+	cTheme = g_variant_dup_string (_tmp65_, NULL);
+	g_variant_unref (_tmp65_);
+	cairo_dock_applet_iapplet_AddDataRenderer (self, cType, iNbValues, cTheme, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_free0 (cType);
+	_g_free0 (cTheme);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_RenderValues (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	double* pValues = NULL;
+	int pValues_length1;
+	GVariant* _tmp66_;
+	double* _tmp67_;
+	int _tmp67__length;
+	int _tmp67__size;
+	int _tmp67__length1;
+	GVariantIter _tmp68_;
+	GVariant* _tmp69_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	pValues_length1 = 0;
+	_tmp66_ = g_variant_iter_next_value (&_arguments_iter);
+	_tmp67_ = g_new (double, 5);
+	_tmp67__length = 0;
+	_tmp67__size = 4;
+	_tmp67__length1 = 0;
+	g_variant_iter_init (&_tmp68_, _tmp66_);
+	for (; _tmp69_ = g_variant_iter_next_value (&_tmp68_); _tmp67__length1++) {
+		if (_tmp67__size == _tmp67__length) {
+			_tmp67__size = 2 * _tmp67__size;
+			_tmp67_ = g_renew (double, _tmp67_, _tmp67__size + 1);
+		}
+		_tmp67_[_tmp67__length++] = g_variant_get_double (_tmp69_);
+		g_variant_unref (_tmp69_);
+	}
+	pValues_length1 = _tmp67__length1;
+	pValues = _tmp67_;
+	g_variant_unref (_tmp66_);
+	cairo_dock_applet_iapplet_RenderValues (self, pValues, pValues_length1, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	pValues = (g_free (pValues), NULL);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_ControlAppli (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char* cApplicationClass = NULL;
+	GVariant* _tmp70_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp70_ = g_variant_iter_next_value (&_arguments_iter);
+	cApplicationClass = g_variant_dup_string (_tmp70_, NULL);
+	g_variant_unref (_tmp70_);
+	cairo_dock_applet_iapplet_ControlAppli (self, cApplicationClass, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_free0 (cApplicationClass);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_ShowAppli (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	gboolean bShow = FALSE;
+	GVariant* _tmp71_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp71_ = g_variant_iter_next_value (&_arguments_iter);
+	bShow = g_variant_get_boolean (_tmp71_);
+	g_variant_unref (_tmp71_);
+	cairo_dock_applet_iapplet_ShowAppli (self, bShow, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_AddMenuItems (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	GHashTable** pItems = NULL;
+	int pItems_length1;
+	GVariant* _tmp72_;
+	GHashTable** _tmp73_;
+	int _tmp73__length;
+	int _tmp73__size;
+	int _tmp73__length1;
+	GVariantIter _tmp74_;
+	GVariant* _tmp75_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	pItems_length1 = 0;
+	_tmp72_ = g_variant_iter_next_value (&_arguments_iter);
+	_tmp73_ = g_new (GHashTable*, 5);
+	_tmp73__length = 0;
+	_tmp73__size = 4;
+	_tmp73__length1 = 0;
+	g_variant_iter_init (&_tmp74_, _tmp72_);
+	for (; _tmp75_ = g_variant_iter_next_value (&_tmp74_); _tmp73__length1++) {
+		GHashTable* _tmp76_;
+		GVariantIter _tmp77_;
+		GVariant* _tmp78_;
+		GVariant* _tmp79_;
+		if (_tmp73__size == _tmp73__length) {
+			_tmp73__size = 2 * _tmp73__size;
+			_tmp73_ = g_renew (GHashTable*, _tmp73_, _tmp73__size + 1);
+		}
+		_tmp76_ = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+		g_variant_iter_init (&_tmp77_, _tmp75_);
+		while (g_variant_iter_loop (&_tmp77_, "{?*}", &_tmp78_, &_tmp79_)) {
+			g_hash_table_insert (_tmp76_, g_variant_dup_string (_tmp78_, NULL), g_variant_get_variant (_tmp79_));
+		}
+		_tmp73_[_tmp73__length++] = _tmp76_;
+		g_variant_unref (_tmp75_);
+	}
+	pItems_length1 = _tmp73__length1;
+	_tmp73_[_tmp73__length] = NULL;
+	pItems = _tmp73_;
+	g_variant_unref (_tmp72_);
+	cairo_dock_applet_iapplet_AddMenuItems (self, pItems, pItems_length1, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	pItems = (_vala_array_free (pItems, pItems_length1, (GDestroyNotify) g_hash_table_unref), NULL);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_BindShortkey (CairoDockAppletIApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char** cShortkeys = NULL;
+	int cShortkeys_length1;
+	GVariant* _tmp80_;
+	char** _tmp81_;
+	int _tmp81__length;
+	int _tmp81__size;
+	int _tmp81__length1;
+	GVariantIter _tmp82_;
+	GVariant* _tmp83_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	cShortkeys_length1 = 0;
+	_tmp80_ = g_variant_iter_next_value (&_arguments_iter);
+	_tmp81_ = g_new (char*, 5);
+	_tmp81__length = 0;
+	_tmp81__size = 4;
+	_tmp81__length1 = 0;
+	g_variant_iter_init (&_tmp82_, _tmp80_);
+	for (; _tmp83_ = g_variant_iter_next_value (&_tmp82_); _tmp81__length1++) {
+		if (_tmp81__size == _tmp81__length) {
+			_tmp81__size = 2 * _tmp81__size;
+			_tmp81_ = g_renew (char*, _tmp81_, _tmp81__size + 1);
+		}
+		_tmp81_[_tmp81__length++] = g_variant_dup_string (_tmp83_, NULL);
+		g_variant_unref (_tmp83_);
+	}
+	cShortkeys_length1 = _tmp81__length1;
+	_tmp81_[_tmp81__length] = NULL;
+	cShortkeys = _tmp81_;
+	g_variant_unref (_tmp80_);
+	cairo_dock_applet_iapplet_BindShortkey (self, cShortkeys, cShortkeys_length1, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	cShortkeys = (_vala_array_free (cShortkeys, cShortkeys_length1, (GDestroyNotify) g_free), NULL);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void cairo_dock_applet_iapplet_dbus_interface_method_call (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer user_data) {
+	gpointer* data;
+	gpointer object;
+	data = user_data;
+	object = data[0];
+	if (strcmp (method_name, "Get") == 0) {
+		_dbus_cairo_dock_applet_iapplet_Get (object, parameters, invocation);
+	} else if (strcmp (method_name, "GetAll") == 0) {
+		_dbus_cairo_dock_applet_iapplet_GetAll (object, parameters, invocation);
+	} else if (strcmp (method_name, "SetQuickInfo") == 0) {
+		_dbus_cairo_dock_applet_iapplet_SetQuickInfo (object, parameters, invocation);
+	} else if (strcmp (method_name, "SetLabel") == 0) {
+		_dbus_cairo_dock_applet_iapplet_SetLabel (object, parameters, invocation);
+	} else if (strcmp (method_name, "SetIcon") == 0) {
+		_dbus_cairo_dock_applet_iapplet_SetIcon (object, parameters, invocation);
+	} else if (strcmp (method_name, "SetEmblem") == 0) {
+		_dbus_cairo_dock_applet_iapplet_SetEmblem (object, parameters, invocation);
+	} else if (strcmp (method_name, "Animate") == 0) {
+		_dbus_cairo_dock_applet_iapplet_Animate (object, parameters, invocation);
+	} else if (strcmp (method_name, "DemandsAttention") == 0) {
+		_dbus_cairo_dock_applet_iapplet_DemandsAttention (object, parameters, invocation);
+	} else if (strcmp (method_name, "ShowDialog") == 0) {
+		_dbus_cairo_dock_applet_iapplet_ShowDialog (object, parameters, invocation);
+	} else if (strcmp (method_name, "PopupDialog") == 0) {
+		_dbus_cairo_dock_applet_iapplet_PopupDialog (object, parameters, invocation);
+	} else if (strcmp (method_name, "AddDataRenderer") == 0) {
+		_dbus_cairo_dock_applet_iapplet_AddDataRenderer (object, parameters, invocation);
+	} else if (strcmp (method_name, "RenderValues") == 0) {
+		_dbus_cairo_dock_applet_iapplet_RenderValues (object, parameters, invocation);
+	} else if (strcmp (method_name, "ControlAppli") == 0) {
+		_dbus_cairo_dock_applet_iapplet_ControlAppli (object, parameters, invocation);
+	} else if (strcmp (method_name, "ShowAppli") == 0) {
+		_dbus_cairo_dock_applet_iapplet_ShowAppli (object, parameters, invocation);
+	} else if (strcmp (method_name, "AddMenuItems") == 0) {
+		_dbus_cairo_dock_applet_iapplet_AddMenuItems (object, parameters, invocation);
+	} else if (strcmp (method_name, "BindShortkey") == 0) {
+		_dbus_cairo_dock_applet_iapplet_BindShortkey (object, parameters, invocation);
+	}
+}
+
+
+static GVariant* cairo_dock_applet_iapplet_dbus_interface_get_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error, gpointer user_data) {
+	gpointer* data;
+	gpointer object;
+	data = user_data;
+	object = data[0];
+	return NULL;
+}
+
+
+static gboolean cairo_dock_applet_iapplet_dbus_interface_set_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error, gpointer user_data) {
+	gpointer* data;
+	gpointer object;
+	data = user_data;
+	object = data[0];
+	return FALSE;
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_on_click (GObject* _sender, gint iState, gpointer* _data) {
+	GDBusConnection * _connection;
+	const gchar * _path;
+	GVariant *_arguments;
+	GVariantBuilder _arguments_builder;
+	_connection = _data[1];
+	_path = _data[2];
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_int32 (iState));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.cairodock.CairoDock.applet", "on_click", _arguments, NULL);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_on_middle_click (GObject* _sender, gpointer* _data) {
+	GDBusConnection * _connection;
+	const gchar * _path;
+	GVariant *_arguments;
+	GVariantBuilder _arguments_builder;
+	_connection = _data[1];
+	_path = _data[2];
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.cairodock.CairoDock.applet", "on_middle_click", _arguments, NULL);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_on_build_menu (GObject* _sender, gpointer* _data) {
+	GDBusConnection * _connection;
+	const gchar * _path;
+	GVariant *_arguments;
+	GVariantBuilder _arguments_builder;
+	_connection = _data[1];
+	_path = _data[2];
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.cairodock.CairoDock.applet", "on_build_menu", _arguments, NULL);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_on_menu_select (GObject* _sender, gint iNumEntry, gpointer* _data) {
+	GDBusConnection * _connection;
+	const gchar * _path;
+	GVariant *_arguments;
+	GVariantBuilder _arguments_builder;
+	_connection = _data[1];
+	_path = _data[2];
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_int32 (iNumEntry));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.cairodock.CairoDock.applet", "on_menu_select", _arguments, NULL);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_on_scroll (GObject* _sender, gboolean bScrollUp, gpointer* _data) {
+	GDBusConnection * _connection;
+	const gchar * _path;
+	GVariant *_arguments;
+	GVariantBuilder _arguments_builder;
+	_connection = _data[1];
+	_path = _data[2];
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_boolean (bScrollUp));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.cairodock.CairoDock.applet", "on_scroll", _arguments, NULL);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_on_drop_data (GObject* _sender, const char* cReceivedData, gpointer* _data) {
+	GDBusConnection * _connection;
+	const gchar * _path;
+	GVariant *_arguments;
+	GVariantBuilder _arguments_builder;
+	_connection = _data[1];
+	_path = _data[2];
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cReceivedData));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.cairodock.CairoDock.applet", "on_drop_data", _arguments, NULL);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_on_answer (GObject* _sender, GVariant* answer, gpointer* _data) {
+	GDBusConnection * _connection;
+	const gchar * _path;
+	GVariant *_arguments;
+	GVariantBuilder _arguments_builder;
+	_connection = _data[1];
+	_path = _data[2];
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_variant (answer));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.cairodock.CairoDock.applet", "on_answer", _arguments, NULL);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_on_answer_dialog (GObject* _sender, gint iButton, GVariant* answer, gpointer* _data) {
+	GDBusConnection * _connection;
+	const gchar * _path;
+	GVariant *_arguments;
+	GVariantBuilder _arguments_builder;
+	_connection = _data[1];
+	_path = _data[2];
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_int32 (iButton));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_variant (answer));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.cairodock.CairoDock.applet", "on_answer_dialog", _arguments, NULL);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_on_shortkey (GObject* _sender, const char* cKey, gpointer* _data) {
+	GDBusConnection * _connection;
+	const gchar * _path;
+	GVariant *_arguments;
+	GVariantBuilder _arguments_builder;
+	_connection = _data[1];
+	_path = _data[2];
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cKey));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.cairodock.CairoDock.applet", "on_shortkey", _arguments, NULL);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_on_change_focus (GObject* _sender, gboolean bIsActive, gpointer* _data) {
+	GDBusConnection * _connection;
+	const gchar * _path;
+	GVariant *_arguments;
+	GVariantBuilder _arguments_builder;
+	_connection = _data[1];
+	_path = _data[2];
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_boolean (bIsActive));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.cairodock.CairoDock.applet", "on_change_focus", _arguments, NULL);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_on_stop_module (GObject* _sender, gpointer* _data) {
+	GDBusConnection * _connection;
+	const gchar * _path;
+	GVariant *_arguments;
+	GVariantBuilder _arguments_builder;
+	_connection = _data[1];
+	_path = _data[2];
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.cairodock.CairoDock.applet", "on_stop_module", _arguments, NULL);
+}
+
+
+static void _dbus_cairo_dock_applet_iapplet_on_reload_module (GObject* _sender, gboolean bConfigHasChanged, gpointer* _data) {
+	GDBusConnection * _connection;
+	const gchar * _path;
+	GVariant *_arguments;
+	GVariantBuilder _arguments_builder;
+	_connection = _data[1];
+	_path = _data[2];
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_boolean (bConfigHasChanged));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.cairodock.CairoDock.applet", "on_reload_module", _arguments, NULL);
+}
+
+
+guint cairo_dock_applet_iapplet_register_object (gpointer object, GDBusConnection* connection, const gchar* path, GError** error) {
+	guint result;
+	gpointer *data;
+	data = g_new (gpointer, 3);
+	data[0] = g_object_ref (object);
+	data[1] = g_object_ref (connection);
+	data[2] = g_strdup (path);
+	result = g_dbus_connection_register_object (connection, path, &_cairo_dock_applet_iapplet_dbus_interface_info, &_cairo_dock_applet_iapplet_dbus_interface_vtable, data, _cairo_dock_applet_iapplet_unregister_object, error);
+	if (!result) {
+		return 0;
+	}
+	g_signal_connect (object, "on-click", (GCallback) _dbus_cairo_dock_applet_iapplet_on_click, data);
+	g_signal_connect (object, "on-middle-click", (GCallback) _dbus_cairo_dock_applet_iapplet_on_middle_click, data);
+	g_signal_connect (object, "on-build-menu", (GCallback) _dbus_cairo_dock_applet_iapplet_on_build_menu, data);
+	g_signal_connect (object, "on-menu-select", (GCallback) _dbus_cairo_dock_applet_iapplet_on_menu_select, data);
+	g_signal_connect (object, "on-scroll", (GCallback) _dbus_cairo_dock_applet_iapplet_on_scroll, data);
+	g_signal_connect (object, "on-drop-data", (GCallback) _dbus_cairo_dock_applet_iapplet_on_drop_data, data);
+	g_signal_connect (object, "on-answer", (GCallback) _dbus_cairo_dock_applet_iapplet_on_answer, data);
+	g_signal_connect (object, "on-answer-dialog", (GCallback) _dbus_cairo_dock_applet_iapplet_on_answer_dialog, data);
+	g_signal_connect (object, "on-shortkey", (GCallback) _dbus_cairo_dock_applet_iapplet_on_shortkey, data);
+	g_signal_connect (object, "on-change-focus", (GCallback) _dbus_cairo_dock_applet_iapplet_on_change_focus, data);
+	g_signal_connect (object, "on-stop-module", (GCallback) _dbus_cairo_dock_applet_iapplet_on_stop_module, data);
+	g_signal_connect (object, "on-reload-module", (GCallback) _dbus_cairo_dock_applet_iapplet_on_reload_module, data);
+	return result;
+}
+
+
+static void _cairo_dock_applet_iapplet_unregister_object (gpointer user_data) {
+	gpointer* data;
+	data = user_data;
+	g_object_unref (data[0]);
+	g_object_unref (data[1]);
+	g_free (data[2]);
+	g_free (data);
+}
+
+
+void cairo_dock_applet_isub_applet_SetQuickInfo (CairoDockAppletISubApplet* self, const char* cQuickInfo, const char* cIconID, GError** error) {
+	CAIRO_DOCK_APPLET_ISUB_APPLET_GET_INTERFACE (self)->SetQuickInfo (self, cQuickInfo, cIconID, error);
+}
+
+
+void cairo_dock_applet_isub_applet_SetLabel (CairoDockAppletISubApplet* self, const char* cLabel, const char* cIconID, GError** error) {
+	CAIRO_DOCK_APPLET_ISUB_APPLET_GET_INTERFACE (self)->SetLabel (self, cLabel, cIconID, error);
+}
+
+
+void cairo_dock_applet_isub_applet_SetIcon (CairoDockAppletISubApplet* self, const char* cImage, const char* cIconID, GError** error) {
+	CAIRO_DOCK_APPLET_ISUB_APPLET_GET_INTERFACE (self)->SetIcon (self, cImage, cIconID, error);
+}
+
+
+void cairo_dock_applet_isub_applet_SetEmblem (CairoDockAppletISubApplet* self, const char* cImage, gint iPosition, const char* cIconID, GError** error) {
+	CAIRO_DOCK_APPLET_ISUB_APPLET_GET_INTERFACE (self)->SetEmblem (self, cImage, iPosition, cIconID, error);
+}
+
+
+void cairo_dock_applet_isub_applet_Animate (CairoDockAppletISubApplet* self, const char* cAnimation, gint iNbRounds, const char* cIconID, GError** error) {
+	CAIRO_DOCK_APPLET_ISUB_APPLET_GET_INTERFACE (self)->Animate (self, cAnimation, iNbRounds, cIconID, error);
+}
+
+
+void cairo_dock_applet_isub_applet_ShowDialog (CairoDockAppletISubApplet* self, const char* message, gint iDuration, const char* cIconID, GError** error) {
+	CAIRO_DOCK_APPLET_ISUB_APPLET_GET_INTERFACE (self)->ShowDialog (self, message, iDuration, cIconID, error);
+}
+
+
+void cairo_dock_applet_isub_applet_AddSubIcons (CairoDockAppletISubApplet* self, char** pIconFields, int pIconFields_length1, GError** error) {
+	CAIRO_DOCK_APPLET_ISUB_APPLET_GET_INTERFACE (self)->AddSubIcons (self, pIconFields, pIconFields_length1, error);
+}
+
+
+void cairo_dock_applet_isub_applet_RemoveSubIcon (CairoDockAppletISubApplet* self, const char* cIconID, GError** error) {
+	CAIRO_DOCK_APPLET_ISUB_APPLET_GET_INTERFACE (self)->RemoveSubIcon (self, cIconID, error);
+}
+
+
+static void cairo_dock_applet_isub_applet_base_init (CairoDockAppletISubAppletIface * iface) {
+	static gboolean initialized = FALSE;
+	if (!initialized) {
+		initialized = TRUE;
+		g_signal_new ("on_click_sub_icon", CAIRO_DOCK_APPLET_TYPE_ISUB_APPLET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__INT_STRING, G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_STRING);
+		g_signal_new ("on_middle_click_sub_icon", CAIRO_DOCK_APPLET_TYPE_ISUB_APPLET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING);
+		g_signal_new ("on_scroll_sub_icon", CAIRO_DOCK_APPLET_TYPE_ISUB_APPLET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__BOOLEAN_STRING, G_TYPE_NONE, 2, G_TYPE_BOOLEAN, G_TYPE_STRING);
+		g_signal_new ("on_drop_data_sub_icon", CAIRO_DOCK_APPLET_TYPE_ISUB_APPLET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__STRING_STRING, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING);
+		g_signal_new ("on_build_menu_sub_icon", CAIRO_DOCK_APPLET_TYPE_ISUB_APPLET, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING);
+	}
+}
+
+
+GType cairo_dock_applet_isub_applet_get_type (void) {
+	static volatile gsize cairo_dock_applet_isub_applet_type_id__volatile = 0;
+	if (g_once_init_enter (&cairo_dock_applet_isub_applet_type_id__volatile)) {
+		static const GTypeInfo g_define_type_info = { sizeof (CairoDockAppletISubAppletIface), (GBaseInitFunc) cairo_dock_applet_isub_applet_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
+		GType cairo_dock_applet_isub_applet_type_id;
+		cairo_dock_applet_isub_applet_type_id = g_type_register_static (G_TYPE_INTERFACE, "CairoDockAppletISubApplet", &g_define_type_info, 0);
+		g_type_interface_add_prerequisite (cairo_dock_applet_isub_applet_type_id, G_TYPE_OBJECT);
+		g_once_init_leave (&cairo_dock_applet_isub_applet_type_id__volatile, cairo_dock_applet_isub_applet_type_id);
+	}
+	return cairo_dock_applet_isub_applet_type_id__volatile;
+}
+
+
+G_DEFINE_TYPE_EXTENDED (CairoDockAppletISubAppletProxy, cairo_dock_applet_isub_applet_proxy, G_TYPE_DBUS_PROXY, 0, G_IMPLEMENT_INTERFACE (CAIRO_DOCK_APPLET_TYPE_ISUB_APPLET, cairo_dock_applet_isub_applet_proxy_cairo_dock_applet_isub_applet_interface_init) );
+static void cairo_dock_applet_isub_applet_proxy_class_init (CairoDockAppletISubAppletProxyClass* klass) {
+	G_DBUS_PROXY_CLASS (klass)->g_signal = cairo_dock_applet_isub_applet_proxy_g_signal;
+}
+
+
+static void _dbus_handle_cairo_dock_applet_isub_applet_on_click_sub_icon (CairoDockAppletISubApplet* self, GVariant* parameters) {
+	gint iState = 0;
+	GVariant* _tmp84_;
+	char* cIconID = NULL;
+	GVariant* _tmp85_;
+	GVariantIter _arguments_iter;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp84_ = g_variant_iter_next_value (&_arguments_iter);
+	iState = g_variant_get_int32 (_tmp84_);
+	g_variant_unref (_tmp84_);
+	_tmp85_ = g_variant_iter_next_value (&_arguments_iter);
+	cIconID = g_variant_dup_string (_tmp85_, NULL);
+	g_variant_unref (_tmp85_);
+	g_signal_emit_by_name (self, "on-click-sub-icon", iState, cIconID);
+	_g_free0 (cIconID);
+}
+
+
+static void _dbus_handle_cairo_dock_applet_isub_applet_on_middle_click_sub_icon (CairoDockAppletISubApplet* self, GVariant* parameters) {
+	char* cIconID = NULL;
+	GVariant* _tmp86_;
+	GVariantIter _arguments_iter;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp86_ = g_variant_iter_next_value (&_arguments_iter);
+	cIconID = g_variant_dup_string (_tmp86_, NULL);
+	g_variant_unref (_tmp86_);
+	g_signal_emit_by_name (self, "on-middle-click-sub-icon", cIconID);
+	_g_free0 (cIconID);
+}
+
+
+static void _dbus_handle_cairo_dock_applet_isub_applet_on_scroll_sub_icon (CairoDockAppletISubApplet* self, GVariant* parameters) {
+	gboolean bScrollUp = FALSE;
+	GVariant* _tmp87_;
+	char* cIconID = NULL;
+	GVariant* _tmp88_;
+	GVariantIter _arguments_iter;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp87_ = g_variant_iter_next_value (&_arguments_iter);
+	bScrollUp = g_variant_get_boolean (_tmp87_);
+	g_variant_unref (_tmp87_);
+	_tmp88_ = g_variant_iter_next_value (&_arguments_iter);
+	cIconID = g_variant_dup_string (_tmp88_, NULL);
+	g_variant_unref (_tmp88_);
+	g_signal_emit_by_name (self, "on-scroll-sub-icon", bScrollUp, cIconID);
+	_g_free0 (cIconID);
+}
+
+
+static void _dbus_handle_cairo_dock_applet_isub_applet_on_drop_data_sub_icon (CairoDockAppletISubApplet* self, GVariant* parameters) {
+	char* cReceivedData = NULL;
+	GVariant* _tmp89_;
+	char* cIconID = NULL;
+	GVariant* _tmp90_;
+	GVariantIter _arguments_iter;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp89_ = g_variant_iter_next_value (&_arguments_iter);
+	cReceivedData = g_variant_dup_string (_tmp89_, NULL);
+	g_variant_unref (_tmp89_);
+	_tmp90_ = g_variant_iter_next_value (&_arguments_iter);
+	cIconID = g_variant_dup_string (_tmp90_, NULL);
+	g_variant_unref (_tmp90_);
+	g_signal_emit_by_name (self, "on-drop-data-sub-icon", cReceivedData, cIconID);
+	_g_free0 (cReceivedData);
+	_g_free0 (cIconID);
+}
+
+
+static void _dbus_handle_cairo_dock_applet_isub_applet_on_build_menu_sub_icon (CairoDockAppletISubApplet* self, GVariant* parameters) {
+	char* cIconID = NULL;
+	GVariant* _tmp91_;
+	GVariantIter _arguments_iter;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp91_ = g_variant_iter_next_value (&_arguments_iter);
+	cIconID = g_variant_dup_string (_tmp91_, NULL);
+	g_variant_unref (_tmp91_);
+	g_signal_emit_by_name (self, "on-build-menu-sub-icon", cIconID);
+	_g_free0 (cIconID);
+}
+
+
+static void cairo_dock_applet_isub_applet_proxy_g_signal (GDBusProxy* proxy, const gchar* sender_name, const gchar* signal_name, GVariant* parameters) {
+	if (strcmp (signal_name, "on_clickSubIcon") == 0) {
+		_dbus_handle_cairo_dock_applet_isub_applet_on_click_sub_icon (proxy, parameters);
+	} else if (strcmp (signal_name, "on_middle_clickSubIcon") == 0) {
+		_dbus_handle_cairo_dock_applet_isub_applet_on_middle_click_sub_icon (proxy, parameters);
+	} else if (strcmp (signal_name, "on_scrollSubIcon") == 0) {
+		_dbus_handle_cairo_dock_applet_isub_applet_on_scroll_sub_icon (proxy, parameters);
+	} else if (strcmp (signal_name, "on_drop_dataSubIcon") == 0) {
+		_dbus_handle_cairo_dock_applet_isub_applet_on_drop_data_sub_icon (proxy, parameters);
+	} else if (strcmp (signal_name, "on_build_menuSubIcon") == 0) {
+		_dbus_handle_cairo_dock_applet_isub_applet_on_build_menu_sub_icon (proxy, parameters);
+	}
+}
+
+
+static void cairo_dock_applet_isub_applet_proxy_init (CairoDockAppletISubAppletProxy* self) {
+}
+
+
+static void cairo_dock_applet_isub_applet_proxy_SetQuickInfo (CairoDockAppletISubApplet* self, const char* cQuickInfo, const char* cIconID, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cQuickInfo));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cIconID));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.subapplet.SetQuickInfo", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_isub_applet_proxy_SetLabel (CairoDockAppletISubApplet* self, const char* cLabel, const char* cIconID, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cLabel));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cIconID));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.subapplet.SetLabel", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_isub_applet_proxy_SetIcon (CairoDockAppletISubApplet* self, const char* cImage, const char* cIconID, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cImage));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cIconID));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.subapplet.SetIcon", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_isub_applet_proxy_SetEmblem (CairoDockAppletISubApplet* self, const char* cImage, gint iPosition, const char* cIconID, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cImage));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_int32 (iPosition));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cIconID));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.subapplet.SetEmblem", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_isub_applet_proxy_Animate (CairoDockAppletISubApplet* self, const char* cAnimation, gint iNbRounds, const char* cIconID, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cAnimation));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_int32 (iNbRounds));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cIconID));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.subapplet.Animate", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_isub_applet_proxy_ShowDialog (CairoDockAppletISubApplet* self, const char* message, gint iDuration, const char* cIconID, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (message));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_int32 (iDuration));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cIconID));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.subapplet.ShowDialog", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_isub_applet_proxy_AddSubIcons (CairoDockAppletISubApplet* self, char** pIconFields, int pIconFields_length1, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	char** _tmp92_;
+	GVariantBuilder _tmp93_;
+	int _tmp94_;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	_tmp92_ = pIconFields;
+	g_variant_builder_init (&_tmp93_, G_VARIANT_TYPE_ARRAY);
+	for (_tmp94_ = 0; _tmp94_ < pIconFields_length1; _tmp94_++) {
+		g_variant_builder_add_value (&_tmp93_, g_variant_new_string (*_tmp92_));
+		_tmp92_++;
+	}
+	g_variant_builder_add_value (&_arguments_builder, g_variant_builder_end (&_tmp93_));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.subapplet.AddSubIcons", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_isub_applet_proxy_RemoveSubIcon (CairoDockAppletISubApplet* self, const char* cIconID, GError** error) {
+	GVariant *_arguments, *_reply;
+	GVariantBuilder _arguments_builder;
+	GVariantIter _reply_iter;
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cIconID));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	_reply = g_dbus_proxy_call_sync ((GDBusProxy *) self, "org.cairodock.CairoDock.subapplet.RemoveSubIcon", _arguments, G_DBUS_CALL_FLAGS_NONE, -1, NULL, error);
+	if (!_reply) {
+		return;
+	}
+	g_variant_iter_init (&_reply_iter, _reply);
+	g_variant_unref (_reply);
+}
+
+
+static void cairo_dock_applet_isub_applet_proxy_cairo_dock_applet_isub_applet_interface_init (CairoDockAppletISubAppletIface* iface) {
+	iface->SetQuickInfo = cairo_dock_applet_isub_applet_proxy_SetQuickInfo;
+	iface->SetLabel = cairo_dock_applet_isub_applet_proxy_SetLabel;
+	iface->SetIcon = cairo_dock_applet_isub_applet_proxy_SetIcon;
+	iface->SetEmblem = cairo_dock_applet_isub_applet_proxy_SetEmblem;
+	iface->Animate = cairo_dock_applet_isub_applet_proxy_Animate;
+	iface->ShowDialog = cairo_dock_applet_isub_applet_proxy_ShowDialog;
+	iface->AddSubIcons = cairo_dock_applet_isub_applet_proxy_AddSubIcons;
+	iface->RemoveSubIcon = cairo_dock_applet_isub_applet_proxy_RemoveSubIcon;
+}
+
+
+static void _dbus_cairo_dock_applet_isub_applet_SetQuickInfo (CairoDockAppletISubApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char* cQuickInfo = NULL;
+	GVariant* _tmp95_;
+	char* cIconID = NULL;
+	GVariant* _tmp96_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp95_ = g_variant_iter_next_value (&_arguments_iter);
+	cQuickInfo = g_variant_dup_string (_tmp95_, NULL);
+	g_variant_unref (_tmp95_);
+	_tmp96_ = g_variant_iter_next_value (&_arguments_iter);
+	cIconID = g_variant_dup_string (_tmp96_, NULL);
+	g_variant_unref (_tmp96_);
+	cairo_dock_applet_isub_applet_SetQuickInfo (self, cQuickInfo, cIconID, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_free0 (cQuickInfo);
+	_g_free0 (cIconID);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_isub_applet_SetLabel (CairoDockAppletISubApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char* cLabel = NULL;
+	GVariant* _tmp97_;
+	char* cIconID = NULL;
+	GVariant* _tmp98_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp97_ = g_variant_iter_next_value (&_arguments_iter);
+	cLabel = g_variant_dup_string (_tmp97_, NULL);
+	g_variant_unref (_tmp97_);
+	_tmp98_ = g_variant_iter_next_value (&_arguments_iter);
+	cIconID = g_variant_dup_string (_tmp98_, NULL);
+	g_variant_unref (_tmp98_);
+	cairo_dock_applet_isub_applet_SetLabel (self, cLabel, cIconID, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_free0 (cLabel);
+	_g_free0 (cIconID);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_isub_applet_SetIcon (CairoDockAppletISubApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char* cImage = NULL;
+	GVariant* _tmp99_;
+	char* cIconID = NULL;
+	GVariant* _tmp100_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp99_ = g_variant_iter_next_value (&_arguments_iter);
+	cImage = g_variant_dup_string (_tmp99_, NULL);
+	g_variant_unref (_tmp99_);
+	_tmp100_ = g_variant_iter_next_value (&_arguments_iter);
+	cIconID = g_variant_dup_string (_tmp100_, NULL);
+	g_variant_unref (_tmp100_);
+	cairo_dock_applet_isub_applet_SetIcon (self, cImage, cIconID, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_free0 (cImage);
+	_g_free0 (cIconID);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_isub_applet_SetEmblem (CairoDockAppletISubApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char* cImage = NULL;
+	GVariant* _tmp101_;
+	gint iPosition = 0;
+	GVariant* _tmp102_;
+	char* cIconID = NULL;
+	GVariant* _tmp103_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp101_ = g_variant_iter_next_value (&_arguments_iter);
+	cImage = g_variant_dup_string (_tmp101_, NULL);
+	g_variant_unref (_tmp101_);
+	_tmp102_ = g_variant_iter_next_value (&_arguments_iter);
+	iPosition = g_variant_get_int32 (_tmp102_);
+	g_variant_unref (_tmp102_);
+	_tmp103_ = g_variant_iter_next_value (&_arguments_iter);
+	cIconID = g_variant_dup_string (_tmp103_, NULL);
+	g_variant_unref (_tmp103_);
+	cairo_dock_applet_isub_applet_SetEmblem (self, cImage, iPosition, cIconID, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_free0 (cImage);
+	_g_free0 (cIconID);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_isub_applet_Animate (CairoDockAppletISubApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char* cAnimation = NULL;
+	GVariant* _tmp104_;
+	gint iNbRounds = 0;
+	GVariant* _tmp105_;
+	char* cIconID = NULL;
+	GVariant* _tmp106_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp104_ = g_variant_iter_next_value (&_arguments_iter);
+	cAnimation = g_variant_dup_string (_tmp104_, NULL);
+	g_variant_unref (_tmp104_);
+	_tmp105_ = g_variant_iter_next_value (&_arguments_iter);
+	iNbRounds = g_variant_get_int32 (_tmp105_);
+	g_variant_unref (_tmp105_);
+	_tmp106_ = g_variant_iter_next_value (&_arguments_iter);
+	cIconID = g_variant_dup_string (_tmp106_, NULL);
+	g_variant_unref (_tmp106_);
+	cairo_dock_applet_isub_applet_Animate (self, cAnimation, iNbRounds, cIconID, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_free0 (cAnimation);
+	_g_free0 (cIconID);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_isub_applet_ShowDialog (CairoDockAppletISubApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char* message = NULL;
+	GVariant* _tmp107_;
+	gint iDuration = 0;
+	GVariant* _tmp108_;
+	char* cIconID = NULL;
+	GVariant* _tmp109_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp107_ = g_variant_iter_next_value (&_arguments_iter);
+	message = g_variant_dup_string (_tmp107_, NULL);
+	g_variant_unref (_tmp107_);
+	_tmp108_ = g_variant_iter_next_value (&_arguments_iter);
+	iDuration = g_variant_get_int32 (_tmp108_);
+	g_variant_unref (_tmp108_);
+	_tmp109_ = g_variant_iter_next_value (&_arguments_iter);
+	cIconID = g_variant_dup_string (_tmp109_, NULL);
+	g_variant_unref (_tmp109_);
+	cairo_dock_applet_isub_applet_ShowDialog (self, message, iDuration, cIconID, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_free0 (message);
+	_g_free0 (cIconID);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_isub_applet_AddSubIcons (CairoDockAppletISubApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char** pIconFields = NULL;
+	int pIconFields_length1;
+	GVariant* _tmp110_;
+	char** _tmp111_;
+	int _tmp111__length;
+	int _tmp111__size;
+	int _tmp111__length1;
+	GVariantIter _tmp112_;
+	GVariant* _tmp113_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	pIconFields_length1 = 0;
+	_tmp110_ = g_variant_iter_next_value (&_arguments_iter);
+	_tmp111_ = g_new (char*, 5);
+	_tmp111__length = 0;
+	_tmp111__size = 4;
+	_tmp111__length1 = 0;
+	g_variant_iter_init (&_tmp112_, _tmp110_);
+	for (; _tmp113_ = g_variant_iter_next_value (&_tmp112_); _tmp111__length1++) {
+		if (_tmp111__size == _tmp111__length) {
+			_tmp111__size = 2 * _tmp111__size;
+			_tmp111_ = g_renew (char*, _tmp111_, _tmp111__size + 1);
+		}
+		_tmp111_[_tmp111__length++] = g_variant_dup_string (_tmp113_, NULL);
+		g_variant_unref (_tmp113_);
+	}
+	pIconFields_length1 = _tmp111__length1;
+	_tmp111_[_tmp111__length] = NULL;
+	pIconFields = _tmp111_;
+	g_variant_unref (_tmp110_);
+	cairo_dock_applet_isub_applet_AddSubIcons (self, pIconFields, pIconFields_length1, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	pIconFields = (_vala_array_free (pIconFields, pIconFields_length1, (GDestroyNotify) g_free), NULL);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void _dbus_cairo_dock_applet_isub_applet_RemoveSubIcon (CairoDockAppletISubApplet* self, GVariant* parameters, GDBusMethodInvocation* invocation) {
+	GError* error;
+	char* cIconID = NULL;
+	GVariant* _tmp114_;
+	GVariantIter _arguments_iter;
+	GVariant* _reply;
+	GVariantBuilder _reply_builder;
+	error = NULL;
+	g_variant_iter_init (&_arguments_iter, parameters);
+	_tmp114_ = g_variant_iter_next_value (&_arguments_iter);
+	cIconID = g_variant_dup_string (_tmp114_, NULL);
+	g_variant_unref (_tmp114_);
+	cairo_dock_applet_isub_applet_RemoveSubIcon (self, cIconID, &error);
+	if (error) {
+		g_dbus_method_invocation_return_gerror (invocation, error);
+		return;
+	}
+	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
+	_g_free0 (cIconID);
+	_reply = g_variant_builder_end (&_reply_builder);
+	g_dbus_method_invocation_return_value (invocation, _reply);
+}
+
+
+static void cairo_dock_applet_isub_applet_dbus_interface_method_call (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer user_data) {
+	gpointer* data;
+	gpointer object;
+	data = user_data;
+	object = data[0];
+	if (strcmp (method_name, "SetQuickInfo") == 0) {
+		_dbus_cairo_dock_applet_isub_applet_SetQuickInfo (object, parameters, invocation);
+	} else if (strcmp (method_name, "SetLabel") == 0) {
+		_dbus_cairo_dock_applet_isub_applet_SetLabel (object, parameters, invocation);
+	} else if (strcmp (method_name, "SetIcon") == 0) {
+		_dbus_cairo_dock_applet_isub_applet_SetIcon (object, parameters, invocation);
+	} else if (strcmp (method_name, "SetEmblem") == 0) {
+		_dbus_cairo_dock_applet_isub_applet_SetEmblem (object, parameters, invocation);
+	} else if (strcmp (method_name, "Animate") == 0) {
+		_dbus_cairo_dock_applet_isub_applet_Animate (object, parameters, invocation);
+	} else if (strcmp (method_name, "ShowDialog") == 0) {
+		_dbus_cairo_dock_applet_isub_applet_ShowDialog (object, parameters, invocation);
+	} else if (strcmp (method_name, "AddSubIcons") == 0) {
+		_dbus_cairo_dock_applet_isub_applet_AddSubIcons (object, parameters, invocation);
+	} else if (strcmp (method_name, "RemoveSubIcon") == 0) {
+		_dbus_cairo_dock_applet_isub_applet_RemoveSubIcon (object, parameters, invocation);
+	}
+}
+
+
+static GVariant* cairo_dock_applet_isub_applet_dbus_interface_get_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error, gpointer user_data) {
+	gpointer* data;
+	gpointer object;
+	data = user_data;
+	object = data[0];
+	return NULL;
+}
+
+
+static gboolean cairo_dock_applet_isub_applet_dbus_interface_set_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error, gpointer user_data) {
+	gpointer* data;
+	gpointer object;
+	data = user_data;
+	object = data[0];
+	return FALSE;
+}
+
+
+static void _dbus_cairo_dock_applet_isub_applet_on_click_sub_icon (GObject* _sender, gint iState, const char* cIconID, gpointer* _data) {
+	GDBusConnection * _connection;
+	const gchar * _path;
+	GVariant *_arguments;
+	GVariantBuilder _arguments_builder;
+	_connection = _data[1];
+	_path = _data[2];
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_int32 (iState));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cIconID));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.cairodock.CairoDock.subapplet", "on_clickSubIcon", _arguments, NULL);
+}
+
+
+static void _dbus_cairo_dock_applet_isub_applet_on_middle_click_sub_icon (GObject* _sender, const char* cIconID, gpointer* _data) {
+	GDBusConnection * _connection;
+	const gchar * _path;
+	GVariant *_arguments;
+	GVariantBuilder _arguments_builder;
+	_connection = _data[1];
+	_path = _data[2];
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cIconID));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.cairodock.CairoDock.subapplet", "on_middle_clickSubIcon", _arguments, NULL);
+}
+
+
+static void _dbus_cairo_dock_applet_isub_applet_on_scroll_sub_icon (GObject* _sender, gboolean bScrollUp, const char* cIconID, gpointer* _data) {
+	GDBusConnection * _connection;
+	const gchar * _path;
+	GVariant *_arguments;
+	GVariantBuilder _arguments_builder;
+	_connection = _data[1];
+	_path = _data[2];
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_boolean (bScrollUp));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cIconID));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.cairodock.CairoDock.subapplet", "on_scrollSubIcon", _arguments, NULL);
+}
+
+
+static void _dbus_cairo_dock_applet_isub_applet_on_drop_data_sub_icon (GObject* _sender, const char* cReceivedData, const char* cIconID, gpointer* _data) {
+	GDBusConnection * _connection;
+	const gchar * _path;
+	GVariant *_arguments;
+	GVariantBuilder _arguments_builder;
+	_connection = _data[1];
+	_path = _data[2];
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cReceivedData));
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cIconID));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.cairodock.CairoDock.subapplet", "on_drop_dataSubIcon", _arguments, NULL);
+}
+
+
+static void _dbus_cairo_dock_applet_isub_applet_on_build_menu_sub_icon (GObject* _sender, const char* cIconID, gpointer* _data) {
+	GDBusConnection * _connection;
+	const gchar * _path;
+	GVariant *_arguments;
+	GVariantBuilder _arguments_builder;
+	_connection = _data[1];
+	_path = _data[2];
+	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
+	g_variant_builder_add_value (&_arguments_builder, g_variant_new_string (cIconID));
+	_arguments = g_variant_builder_end (&_arguments_builder);
+	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.cairodock.CairoDock.subapplet", "on_build_menuSubIcon", _arguments, NULL);
+}
+
+
+guint cairo_dock_applet_isub_applet_register_object (gpointer object, GDBusConnection* connection, const gchar* path, GError** error) {
+	guint result;
+	gpointer *data;
+	data = g_new (gpointer, 3);
+	data[0] = g_object_ref (object);
+	data[1] = g_object_ref (connection);
+	data[2] = g_strdup (path);
+	result = g_dbus_connection_register_object (connection, path, &_cairo_dock_applet_isub_applet_dbus_interface_info, &_cairo_dock_applet_isub_applet_dbus_interface_vtable, data, _cairo_dock_applet_isub_applet_unregister_object, error);
+	if (!result) {
+		return 0;
+	}
+	g_signal_connect (object, "on-click-sub-icon", (GCallback) _dbus_cairo_dock_applet_isub_applet_on_click_sub_icon, data);
+	g_signal_connect (object, "on-middle-click-sub-icon", (GCallback) _dbus_cairo_dock_applet_isub_applet_on_middle_click_sub_icon, data);
+	g_signal_connect (object, "on-scroll-sub-icon", (GCallback) _dbus_cairo_dock_applet_isub_applet_on_scroll_sub_icon, data);
+	g_signal_connect (object, "on-drop-data-sub-icon", (GCallback) _dbus_cairo_dock_applet_isub_applet_on_drop_data_sub_icon, data);
+	g_signal_connect (object, "on-build-menu-sub-icon", (GCallback) _dbus_cairo_dock_applet_isub_applet_on_build_menu_sub_icon, data);
+	return result;
+}
+
+
+static void _cairo_dock_applet_isub_applet_unregister_object (gpointer user_data) {
+	gpointer* data;
+	data = user_data;
+	g_object_unref (data[0]);
+	g_object_unref (data[1]);
+	g_free (data[2]);
+	g_free (data);
+}
+
+
+GType cairo_dock_applet_cd_applet_screen_position_get_type (void) {
+	static volatile gsize cairo_dock_applet_cd_applet_screen_position_type_id__volatile = 0;
+	if (g_once_init_enter (&cairo_dock_applet_cd_applet_screen_position_type_id__volatile)) {
+		static const GEnumValue values[] = {{CAIRO_DOCK_APPLET_CD_APPLET_SCREEN_POSITION_BOTTOM, "CAIRO_DOCK_APPLET_CD_APPLET_SCREEN_POSITION_BOTTOM", "bottom"}, {CAIRO_DOCK_APPLET_CD_APPLET_SCREEN_POSITION_TOP, "CAIRO_DOCK_APPLET_CD_APPLET_SCREEN_POSITION_TOP", "top"}, {CAIRO_DOCK_APPLET_CD_APPLET_SCREEN_POSITION_RIGHT, "CAIRO_DOCK_APPLET_CD_APPLET_SCREEN_POSITION_RIGHT", "right"}, {CAIRO_DOCK_APPLET_CD_APPLET_SCREEN_POSITION_LEFT, "CAIRO_DOCK_APPLET_CD_APPLET_SCREEN_POSITION_LEFT", "left"}, {0, NULL, NULL}};
+		GType cairo_dock_applet_cd_applet_screen_position_type_id;
+		cairo_dock_applet_cd_applet_screen_position_type_id = g_enum_register_static ("CairoDockAppletCDAppletScreenPosition", values);
+		g_once_init_leave (&cairo_dock_applet_cd_applet_screen_position_type_id__volatile, cairo_dock_applet_cd_applet_screen_position_type_id);
+	}
+	return cairo_dock_applet_cd_applet_screen_position_type_id__volatile;
+}
+
+
+GType cairo_dock_applet_cd_applet_container_type_get_type (void) {
+	static volatile gsize cairo_dock_applet_cd_applet_container_type_type_id__volatile = 0;
+	if (g_once_init_enter (&cairo_dock_applet_cd_applet_container_type_type_id__volatile)) {
+		static const GEnumValue values[] = {{CAIRO_DOCK_APPLET_CD_APPLET_CONTAINER_TYPE_DOCK, "CAIRO_DOCK_APPLET_CD_APPLET_CONTAINER_TYPE_DOCK", "dock"}, {CAIRO_DOCK_APPLET_CD_APPLET_CONTAINER_TYPE_DESKLET, "CAIRO_DOCK_APPLET_CD_APPLET_CONTAINER_TYPE_DESKLET", "desklet"}, {0, NULL, NULL}};
+		GType cairo_dock_applet_cd_applet_container_type_type_id;
+		cairo_dock_applet_cd_applet_container_type_type_id = g_enum_register_static ("CairoDockAppletCDAppletContainerType", values);
+		g_once_init_leave (&cairo_dock_applet_cd_applet_container_type_type_id__volatile, cairo_dock_applet_cd_applet_container_type_type_id);
+	}
+	return cairo_dock_applet_cd_applet_container_type_type_id__volatile;
+}
+
+
+GType cairo_dock_applet_cd_applet_emblem_position_get_type (void) {
+	static volatile gsize cairo_dock_applet_cd_applet_emblem_position_type_id__volatile = 0;
+	if (g_once_init_enter (&cairo_dock_applet_cd_applet_emblem_position_type_id__volatile)) {
+		static const GEnumValue values[] = {{CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_UPPER_LEFT, "CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_UPPER_LEFT", "upper-left"}, {CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_LOWER_RIGHT, "CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_LOWER_RIGHT", "lower-right"}, {CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_LOWER_LEFT, "CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_LOWER_LEFT", "lower-left"}, {CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_UPPER_RIGHT, "CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_UPPER_RIGHT", "upper-right"}, {CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_MIDDLE, "CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_MIDDLE", "middle"}, {0, NULL, NULL}};
+		GType cairo_dock_applet_cd_applet_emblem_position_type_id;
+		cairo_dock_applet_cd_applet_emblem_position_type_id = g_enum_register_static ("CairoDockAppletCDAppletEmblemPosition", values);
+		g_once_init_leave (&cairo_dock_applet_cd_applet_emblem_position_type_id__volatile, cairo_dock_applet_cd_applet_emblem_position_type_id);
+	}
+	return cairo_dock_applet_cd_applet_emblem_position_type_id__volatile;
+}
+
+
+GType cairo_dock_applet_cd_applet_menu_item_type_get_type (void) {
+	static volatile gsize cairo_dock_applet_cd_applet_menu_item_type_type_id__volatile = 0;
+	if (g_once_init_enter (&cairo_dock_applet_cd_applet_menu_item_type_type_id__volatile)) {
+		static const GEnumValue values[] = {{CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_ENTRY, "CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_ENTRY", "menu-entry"}, {CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_SUB_MENU, "CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_SUB_MENU", "menu-sub-menu"}, {CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_SEPARATOR, "CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_SEPARATOR", "menu-separator"}, {CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_CHECKBOX, "CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_CHECKBOX", "menu-checkbox"}, {CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_RADIO_BUTTON, "CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_RADIO_BUTTON", "menu-radio-button"}, {0, NULL, NULL}};
+		GType cairo_dock_applet_cd_applet_menu_item_type_type_id;
+		cairo_dock_applet_cd_applet_menu_item_type_type_id = g_enum_register_static ("CairoDockAppletCDAppletMenuItemType", values);
+		g_once_init_leave (&cairo_dock_applet_cd_applet_menu_item_type_type_id__volatile, cairo_dock_applet_cd_applet_menu_item_type_type_id);
+	}
+	return cairo_dock_applet_cd_applet_menu_item_type_type_id__volatile;
+}
+
+
+static glong string_get_length (const char* self) {
+	glong result;
+	g_return_val_if_fail (self != NULL, 0L);
+	result = g_utf8_strlen (self, (gssize) (-1));
+	return result;
+}
+
+
+static char* string_substring (const char* self, glong offset, glong len) {
+	char* result = NULL;
+	glong string_length;
+	const char* start;
+	g_return_val_if_fail (self != NULL, NULL);
+	string_length = string_get_length (self);
+	if (offset < 0) {
+		offset = string_length + offset;
+		g_return_val_if_fail (offset >= 0, NULL);
+	} else {
+		g_return_val_if_fail (offset <= string_length, NULL);
+	}
+	if (len < 0) {
+		len = string_length - offset;
+	}
+	g_return_val_if_fail ((offset + len) <= string_length, NULL);
+	start = g_utf8_offset_to_pointer (self, offset);
+	result = g_strndup (start, ((gchar*) g_utf8_offset_to_pointer (start, len)) - ((gchar*) start));
+	return result;
+}
+
+
+CairoDockAppletCDApplet* cairo_dock_applet_cd_applet_construct (GType object_type, char** argv, int argv_length1) {
+	CairoDockAppletCDApplet * self;
+	char* _tmp0_;
+	char* _tmp1_;
+	char* _tmp2_;
+	char* _tmp3_;
+	char* _tmp4_;
+	self = (CairoDockAppletCDApplet*) g_object_new (object_type, NULL);
+	self->cAppletName = (_tmp0_ = string_substring (argv[0], (glong) 2, (glong) 999), _g_free0 (self->cAppletName), _tmp0_);
+	self->cBusPath = (_tmp1_ = g_strdup (argv[2]), _g_free0 (self->cBusPath), _tmp1_);
+	self->cConfFile = (_tmp2_ = g_strdup (argv[3]), _g_free0 (self->cConfFile), _tmp2_);
+	self->cParentAppName = (_tmp3_ = g_strdup (argv[4]), _g_free0 (self->cParentAppName), _tmp3_);
+	_cairo_dock_applet_cd_applet_get_config (self);
+	_cairo_dock_applet_cd_applet_connect_to_bus (self);
+	self->priv->_cMenuIconId = (_tmp4_ = NULL, _g_free0 (self->priv->_cMenuIconId), _tmp4_);
+	return self;
+}
+
+
+CairoDockAppletCDApplet* cairo_dock_applet_cd_applet_new (char** argv, int argv_length1) {
+	return cairo_dock_applet_cd_applet_construct (CAIRO_DOCK_APPLET_TYPE_CD_APPLET, argv, argv_length1);
+}
+
+
+void cairo_dock_applet_cd_applet_run (CairoDockAppletCDApplet* self) {
+	GMainLoop* _tmp0_;
+	g_return_if_fail (self != NULL);
+	cairo_dock_applet_cd_applet_begin (self);
+	self->priv->loop = (_tmp0_ = g_main_loop_new (NULL, FALSE), _g_main_loop_unref0 (self->priv->loop), _tmp0_);
+	g_main_loop_run (self->priv->loop);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_on_click (CairoDockAppletCDApplet* self, gint iState) {
+	g_return_if_fail (self != NULL);
+	g_print (">>> clic !\n");
+}
+
+
+void cairo_dock_applet_cd_applet_on_click (CairoDockAppletCDApplet* self, gint iState) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->on_click (self, iState);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_on_middle_click (CairoDockAppletCDApplet* self) {
+	g_return_if_fail (self != NULL);
+	g_print (">>> middle clic !\n");
+}
+
+
+void cairo_dock_applet_cd_applet_on_middle_click (CairoDockAppletCDApplet* self) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->on_middle_click (self);
+}
+
+
+static void _cairo_dock_applet_cd_applet_on_build_menu (CairoDockAppletCDApplet* self) {
+	char* _tmp0_;
+	g_return_if_fail (self != NULL);
+	self->priv->_cMenuIconId = (_tmp0_ = NULL, _g_free0 (self->priv->_cMenuIconId), _tmp0_);
+	cairo_dock_applet_cd_applet_on_build_menu (self);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_on_build_menu (CairoDockAppletCDApplet* self) {
+	g_return_if_fail (self != NULL);
+	g_print (">>> build menu !\n");
+}
+
+
+void cairo_dock_applet_cd_applet_on_build_menu (CairoDockAppletCDApplet* self) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->on_build_menu (self);
+}
+
+
+static void _cairo_dock_applet_cd_applet_on_menu_select (CairoDockAppletCDApplet* self, gint iNumEntry) {
+	g_return_if_fail (self != NULL);
+	if (self->priv->_cMenuIconId == NULL) {
+		cairo_dock_applet_cd_applet_on_menu_select (self, iNumEntry);
+	} else {
+		cairo_dock_applet_cd_applet_on_menu_select_sub_icon (self, iNumEntry, self->priv->_cMenuIconId);
+	}
+}
+
+
+static void cairo_dock_applet_cd_applet_real_on_menu_select (CairoDockAppletCDApplet* self, gint iNumEntry) {
+	g_return_if_fail (self != NULL);
+	g_print (">>> choice %d has been selected !\n", iNumEntry);
+}
+
+
+void cairo_dock_applet_cd_applet_on_menu_select (CairoDockAppletCDApplet* self, gint iNumEntry) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->on_menu_select (self, iNumEntry);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_on_scroll (CairoDockAppletCDApplet* self, gboolean bScrollUp) {
+	g_return_if_fail (self != NULL);
+	g_print (">>> scroll (up:%d)\n", (gint) bScrollUp);
+}
+
+
+void cairo_dock_applet_cd_applet_on_scroll (CairoDockAppletCDApplet* self, gboolean bScrollUp) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->on_scroll (self, bScrollUp);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_on_drop_data (CairoDockAppletCDApplet* self, const char* cReceivedData) {
+	g_return_if_fail (self != NULL);
+	g_return_if_fail (cReceivedData != NULL);
+	g_print (">>> received : %s\n", cReceivedData);
+}
+
+
+void cairo_dock_applet_cd_applet_on_drop_data (CairoDockAppletCDApplet* self, const char* cReceivedData) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->on_drop_data (self, cReceivedData);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_on_answer (CairoDockAppletCDApplet* self, GVariant* answer) {
+	g_return_if_fail (self != NULL);
+	g_return_if_fail (answer != NULL);
+	g_print (">>> answer\n");
+}
+
+
+void cairo_dock_applet_cd_applet_on_answer (CairoDockAppletCDApplet* self, GVariant* answer) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->on_answer (self, answer);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_on_answer_dialog (CairoDockAppletCDApplet* self, gint iButton, GVariant* answer) {
+	g_return_if_fail (self != NULL);
+	g_return_if_fail (answer != NULL);
+	g_print (">>> answer dialog\n");
+}
+
+
+void cairo_dock_applet_cd_applet_on_answer_dialog (CairoDockAppletCDApplet* self, gint iButton, GVariant* answer) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->on_answer_dialog (self, iButton, answer);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_on_shortkey (CairoDockAppletCDApplet* self, const char* cKey) {
+	g_return_if_fail (self != NULL);
+	g_return_if_fail (cKey != NULL);
+	g_print (">>> shortkey : %s\n", cKey);
+}
+
+
+void cairo_dock_applet_cd_applet_on_shortkey (CairoDockAppletCDApplet* self, const char* cKey) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->on_shortkey (self, cKey);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_on_change_focus (CairoDockAppletCDApplet* self, gboolean bIsActive) {
+	g_return_if_fail (self != NULL);
+	g_print (">>> changed focus -> %d\n", (gint) bIsActive);
+}
+
+
+void cairo_dock_applet_cd_applet_on_change_focus (CairoDockAppletCDApplet* self, gboolean bIsActive) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->on_change_focus (self, bIsActive);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_on_click_sub_icon (CairoDockAppletCDApplet* self, gint iState, const char* cIconID) {
+	g_return_if_fail (self != NULL);
+	g_return_if_fail (cIconID != NULL);
+	g_print ("clic on the sub-icon '%s' !\n", cIconID);
+}
+
+
+void cairo_dock_applet_cd_applet_on_click_sub_icon (CairoDockAppletCDApplet* self, gint iState, const char* cIconID) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->on_click_sub_icon (self, iState, cIconID);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_on_middle_click_sub_icon (CairoDockAppletCDApplet* self, const char* cIconID) {
+	g_return_if_fail (self != NULL);
+	g_return_if_fail (cIconID != NULL);
+	g_print ("middle-clic on the sub-icon '%s' !\n", cIconID);
+}
+
+
+void cairo_dock_applet_cd_applet_on_middle_click_sub_icon (CairoDockAppletCDApplet* self, const char* cIconID) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->on_middle_click_sub_icon (self, cIconID);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_on_scroll_sub_icon (CairoDockAppletCDApplet* self, gboolean bScrollUp, const char* cIconID) {
+	g_return_if_fail (self != NULL);
+	g_return_if_fail (cIconID != NULL);
+	g_print ("scroll on the sub-icon '%s' !\n", cIconID);
+}
+
+
+void cairo_dock_applet_cd_applet_on_scroll_sub_icon (CairoDockAppletCDApplet* self, gboolean bScrollUp, const char* cIconID) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->on_scroll_sub_icon (self, bScrollUp, cIconID);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_on_drop_data_sub_icon (CairoDockAppletCDApplet* self, const char* cReceivedData, const char* cIconID) {
+	g_return_if_fail (self != NULL);
+	g_return_if_fail (cReceivedData != NULL);
+	g_return_if_fail (cIconID != NULL);
+	g_print ("drop on the sub-icon '%s' !\n", cIconID);
+}
+
+
+void cairo_dock_applet_cd_applet_on_drop_data_sub_icon (CairoDockAppletCDApplet* self, const char* cReceivedData, const char* cIconID) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->on_drop_data_sub_icon (self, cReceivedData, cIconID);
+}
+
+
+static void _cairo_dock_applet_cd_applet_on_build_menu_sub_icon (CairoDockAppletCDApplet* self, const char* cIconID) {
+	char* _tmp0_;
+	g_return_if_fail (self != NULL);
+	g_return_if_fail (cIconID != NULL);
+	self->priv->_cMenuIconId = (_tmp0_ = g_strdup (cIconID), _g_free0 (self->priv->_cMenuIconId), _tmp0_);
+	cairo_dock_applet_cd_applet_on_build_menu_sub_icon (self, cIconID);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_on_build_menu_sub_icon (CairoDockAppletCDApplet* self, const char* cIconID) {
+	g_return_if_fail (self != NULL);
+	g_return_if_fail (cIconID != NULL);
+	g_print ("build menu on the sub-icon '%s' !\n", cIconID);
+}
+
+
+void cairo_dock_applet_cd_applet_on_build_menu_sub_icon (CairoDockAppletCDApplet* self, const char* cIconID) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->on_build_menu_sub_icon (self, cIconID);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_on_menu_select_sub_icon (CairoDockAppletCDApplet* self, gint iNumEntry, const char* cIconID) {
+	g_return_if_fail (self != NULL);
+	g_return_if_fail (cIconID != NULL);
+	g_print (">>> choice %d has been selected on icon %s !\n", iNumEntry, cIconID);
+}
+
+
+void cairo_dock_applet_cd_applet_on_menu_select_sub_icon (CairoDockAppletCDApplet* self, gint iNumEntry, const char* cIconID) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->on_menu_select_sub_icon (self, iNumEntry, cIconID);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_begin (CairoDockAppletCDApplet* self) {
+	g_return_if_fail (self != NULL);
+}
+
+
+void cairo_dock_applet_cd_applet_begin (CairoDockAppletCDApplet* self) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->begin (self);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_end (CairoDockAppletCDApplet* self) {
+	g_return_if_fail (self != NULL);
+}
+
+
+void cairo_dock_applet_cd_applet_end (CairoDockAppletCDApplet* self) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->end (self);
+}
+
+
+static void _cairo_dock_applet_cd_applet_on_stop (CairoDockAppletCDApplet* self) {
+	g_return_if_fail (self != NULL);
+	g_print (">>> applet '%s' is stopped\n", self->cAppletName);
+	cairo_dock_applet_cd_applet_end (self);
+	g_main_loop_quit (self->priv->loop);
+}
+
+
+static void cairo_dock_applet_cd_applet_real_reload (CairoDockAppletCDApplet* self) {
+	g_return_if_fail (self != NULL);
+}
+
+
+void cairo_dock_applet_cd_applet_reload (CairoDockAppletCDApplet* self) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->reload (self);
+}
+
+
+static void _cairo_dock_applet_cd_applet_on_reload (CairoDockAppletCDApplet* self, gboolean bConfigHasChanged) {
+	g_return_if_fail (self != NULL);
+	g_print (">>> our module is reloaded");
+	if (bConfigHasChanged) {
+		g_print (">>>  and our config has changed");
+		_cairo_dock_applet_cd_applet_get_config (self);
+		cairo_dock_applet_cd_applet_reload (self);
+	}
+}
+
+
+static void cairo_dock_applet_cd_applet_real_get_config (CairoDockAppletCDApplet* self, GKeyFile* keyfile) {
+	g_return_if_fail (self != NULL);
+	g_return_if_fail (keyfile != NULL);
+}
+
+
+void cairo_dock_applet_cd_applet_get_config (CairoDockAppletCDApplet* self, GKeyFile* keyfile) {
+	CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS (self)->get_config (self, keyfile);
+}
+
+
+static void _cairo_dock_applet_cd_applet_get_config (CairoDockAppletCDApplet* self) {
+	GKeyFile* keyfile;
+	GError * _inner_error_ = NULL;
+	g_return_if_fail (self != NULL);
+	keyfile = g_key_file_new ();
+	{
+		g_key_file_load_from_file (keyfile, self->cConfFile, G_KEY_FILE_NONE, &_inner_error_);
+		if (_inner_error_ != NULL) {
+			goto __catch0_g_error;
+		}
+	}
+	goto __finally0;
+	__catch0_g_error:
+	{
+		GError * e;
+		e = _inner_error_;
+		_inner_error_ = NULL;
+		{
+			g_warning ("CDApplet.vala:269: %s", e->message);
+			_g_error_free0 (e);
+		}
+	}
+	__finally0:
+	{
+		cairo_dock_applet_cd_applet_get_config (self, keyfile);
+	}
+	if (_inner_error_ != NULL) {
+		_g_key_file_free0 (keyfile);
+		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+		g_clear_error (&_inner_error_);
+		return;
+	}
+	_g_key_file_free0 (keyfile);
+}
+
+
+static void _cairo_dock_applet_cd_applet_on_click_cairo_dock_applet_iapplet_on_click (CairoDockAppletIApplet* _sender, gint iState, gpointer self) {
+	cairo_dock_applet_cd_applet_on_click (self, iState);
+}
+
+
+static void _cairo_dock_applet_cd_applet_on_middle_click_cairo_dock_applet_iapplet_on_middle_click (CairoDockAppletIApplet* _sender, gpointer self) {
+	cairo_dock_applet_cd_applet_on_middle_click (self);
+}
+
+
+static void __cairo_dock_applet_cd_applet_on_build_menu_cairo_dock_applet_iapplet_on_build_menu (CairoDockAppletIApplet* _sender, gpointer self) {
+	_cairo_dock_applet_cd_applet_on_build_menu (self);
+}
+
+
+static void __cairo_dock_applet_cd_applet_on_menu_select_cairo_dock_applet_iapplet_on_menu_select (CairoDockAppletIApplet* _sender, gint iNumEntry, gpointer self) {
+	_cairo_dock_applet_cd_applet_on_menu_select (self, iNumEntry);
+}
+
+
+static void _cairo_dock_applet_cd_applet_on_scroll_cairo_dock_applet_iapplet_on_scroll (CairoDockAppletIApplet* _sender, gboolean bScrollUp, gpointer self) {
+	cairo_dock_applet_cd_applet_on_scroll (self, bScrollUp);
+}
+
+
+static void _cairo_dock_applet_cd_applet_on_drop_data_cairo_dock_applet_iapplet_on_drop_data (CairoDockAppletIApplet* _sender, const char* cReceivedData, gpointer self) {
+	cairo_dock_applet_cd_applet_on_drop_data (self, cReceivedData);
+}
+
+
+static void _cairo_dock_applet_cd_applet_on_answer_cairo_dock_applet_iapplet_on_answer (CairoDockAppletIApplet* _sender, GVariant* answer, gpointer self) {
+	cairo_dock_applet_cd_applet_on_answer (self, answer);
+}
+
+
+static void _cairo_dock_applet_cd_applet_on_answer_dialog_cairo_dock_applet_iapplet_on_answer_dialog (CairoDockAppletIApplet* _sender, gint iButton, GVariant* answer, gpointer self) {
+	cairo_dock_applet_cd_applet_on_answer_dialog (self, iButton, answer);
+}
+
+
+static void _cairo_dock_applet_cd_applet_on_shortkey_cairo_dock_applet_iapplet_on_shortkey (CairoDockAppletIApplet* _sender, const char* cKey, gpointer self) {
+	cairo_dock_applet_cd_applet_on_shortkey (self, cKey);
+}
+
+
+static void _cairo_dock_applet_cd_applet_on_change_focus_cairo_dock_applet_iapplet_on_change_focus (CairoDockAppletIApplet* _sender, gboolean bIsActive, gpointer self) {
+	cairo_dock_applet_cd_applet_on_change_focus (self, bIsActive);
+}
+
+
+static void __cairo_dock_applet_cd_applet_on_stop_cairo_dock_applet_iapplet_on_stop_module (CairoDockAppletIApplet* _sender, gpointer self) {
+	_cairo_dock_applet_cd_applet_on_stop (self);
+}
+
+
+static void __cairo_dock_applet_cd_applet_on_reload_cairo_dock_applet_iapplet_on_reload_module (CairoDockAppletIApplet* _sender, gboolean bConfigHasChanged, gpointer self) {
+	_cairo_dock_applet_cd_applet_on_reload (self, bConfigHasChanged);
+}
+
+
+static void _cairo_dock_applet_cd_applet_on_click_sub_icon_cairo_dock_applet_isub_applet_on_click_sub_icon (CairoDockAppletISubApplet* _sender, gint iState, const char* cIconID, gpointer self) {
+	cairo_dock_applet_cd_applet_on_click_sub_icon (self, iState, cIconID);
+}
+
+
+static void _cairo_dock_applet_cd_applet_on_middle_click_sub_icon_cairo_dock_applet_isub_applet_on_middle_click_sub_icon (CairoDockAppletISubApplet* _sender, const char* cIconID, gpointer self) {
+	cairo_dock_applet_cd_applet_on_middle_click_sub_icon (self, cIconID);
+}
+
+
+static void _cairo_dock_applet_cd_applet_on_scroll_sub_icon_cairo_dock_applet_isub_applet_on_scroll_sub_icon (CairoDockAppletISubApplet* _sender, gboolean bScrollUp, const char* cIconID, gpointer self) {
+	cairo_dock_applet_cd_applet_on_scroll_sub_icon (self, bScrollUp, cIconID);
+}
+
+
+static void _cairo_dock_applet_cd_applet_on_drop_data_sub_icon_cairo_dock_applet_isub_applet_on_drop_data_sub_icon (CairoDockAppletISubApplet* _sender, const char* cReceivedData, const char* cIconID, gpointer self) {
+	cairo_dock_applet_cd_applet_on_drop_data_sub_icon (self, cReceivedData, cIconID);
+}
+
+
+static void __cairo_dock_applet_cd_applet_on_build_menu_sub_icon_cairo_dock_applet_isub_applet_on_build_menu_sub_icon (CairoDockAppletISubApplet* _sender, const char* cIconID, gpointer self) {
+	_cairo_dock_applet_cd_applet_on_build_menu_sub_icon (self, cIconID);
+}
+
+
+static void _cairo_dock_applet_cd_applet_connect_to_bus (CairoDockAppletCDApplet* self) {
+	GError * _inner_error_ = NULL;
+	g_return_if_fail (self != NULL);
+	{
+		CairoDockAppletIApplet* _tmp0_;
+		CairoDockAppletIApplet* _tmp1_;
+		_tmp0_ = (CairoDockAppletIApplet*) g_initable_new (CAIRO_DOCK_APPLET_TYPE_IAPPLET_PROXY, NULL, &_inner_error_, "g-flags", G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, "g-name", "org.cairodock.CairoDock", "g-bus-type", G_BUS_TYPE_SESSION, "g-object-path", self->cBusPath, "g-interface-name", "org.cairodock.CairoDock.applet", NULL);
+		if (_inner_error_ != NULL) {
+			if (_inner_error_->domain == G_IO_ERROR) {
+				goto __catch1_g_io_error;
+			}
+			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+			g_clear_error (&_inner_error_);
+			return;
+		}
+		self->icon = (_tmp1_ = _tmp0_, _g_object_unref0 (self->icon), _tmp1_);
+	}
+	goto __finally1;
+	__catch1_g_io_error:
+	{
+		GError * e;
+		e = _inner_error_;
+		_inner_error_ = NULL;
+		{
+			g_error ("CDApplet.vala:288: >>> module '%s' can't be found on the bus, exit.\n" \
+"Error was: %s", self->cAppletName, e->message);
+			_g_error_free0 (e);
+		}
+	}
+	__finally1:
+	if (_inner_error_ != NULL) {
+		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+		g_clear_error (&_inner_error_);
+		return;
+	}
+	{
+		char* _tmp2_;
+		char* _tmp3_;
+		CairoDockAppletISubApplet* _tmp4_;
+		CairoDockAppletISubApplet* _tmp5_;
+		CairoDockAppletISubApplet* _tmp6_;
+		_tmp5_ = (_tmp4_ = (CairoDockAppletISubApplet*) g_initable_new (CAIRO_DOCK_APPLET_TYPE_ISUB_APPLET_PROXY, NULL, &_inner_error_, "g-flags", G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, "g-name", "org.cairodock.CairoDock", "g-bus-type", G_BUS_TYPE_SESSION, "g-object-path", _tmp3_ = g_strconcat (self->cBusPath, "/sub_icons", NULL), "g-interface-name", "org.cairodock.CairoDock.subapplet", NULL), _g_free0 (_tmp3_), _g_free0 (_tmp2_), _tmp4_);
+		if (_inner_error_ != NULL) {
+			if (_inner_error_->domain == G_IO_ERROR) {
+				goto __catch2_g_io_error;
+			}
+			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+			g_clear_error (&_inner_error_);
+			return;
+		}
+		self->sub_icons = (_tmp6_ = _tmp5_, _g_object_unref0 (self->sub_icons), _tmp6_);
+	}
+	goto __finally2;
+	__catch2_g_io_error:
+	{
+		GError * e;
+		e = _inner_error_;
+		_inner_error_ = NULL;
+		{
+			g_error ("CDApplet.vala:298: >>> module '%s' can't be found on the bus, exit.\n" \
+"Error was: %s", self->cAppletName, e->message);
+			_g_error_free0 (e);
+		}
+	}
+	__finally2:
+	if (_inner_error_ != NULL) {
+		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+		g_clear_error (&_inner_error_);
+		return;
+	}
+	g_signal_connect_object (self->icon, "on-click", (GCallback) _cairo_dock_applet_cd_applet_on_click_cairo_dock_applet_iapplet_on_click, self, 0);
+	g_signal_connect_object (self->icon, "on-middle-click", (GCallback) _cairo_dock_applet_cd_applet_on_middle_click_cairo_dock_applet_iapplet_on_middle_click, self, 0);
+	g_signal_connect_object (self->icon, "on-build-menu", (GCallback) __cairo_dock_applet_cd_applet_on_build_menu_cairo_dock_applet_iapplet_on_build_menu, self, 0);
+	g_signal_connect_object (self->icon, "on-menu-select", (GCallback) __cairo_dock_applet_cd_applet_on_menu_select_cairo_dock_applet_iapplet_on_menu_select, self, 0);
+	g_signal_connect_object (self->icon, "on-scroll", (GCallback) _cairo_dock_applet_cd_applet_on_scroll_cairo_dock_applet_iapplet_on_scroll, self, 0);
+	g_signal_connect_object (self->icon, "on-drop-data", (GCallback) _cairo_dock_applet_cd_applet_on_drop_data_cairo_dock_applet_iapplet_on_drop_data, self, 0);
+	g_signal_connect_object (self->icon, "on-answer", (GCallback) _cairo_dock_applet_cd_applet_on_answer_cairo_dock_applet_iapplet_on_answer, self, 0);
+	g_signal_connect_object (self->icon, "on-answer-dialog", (GCallback) _cairo_dock_applet_cd_applet_on_answer_dialog_cairo_dock_applet_iapplet_on_answer_dialog, self, 0);
+	g_signal_connect_object (self->icon, "on-shortkey", (GCallback) _cairo_dock_applet_cd_applet_on_shortkey_cairo_dock_applet_iapplet_on_shortkey, self, 0);
+	g_signal_connect_object (self->icon, "on-change-focus", (GCallback) _cairo_dock_applet_cd_applet_on_change_focus_cairo_dock_applet_iapplet_on_change_focus, self, 0);
+	g_signal_connect_object (self->icon, "on-stop-module", (GCallback) __cairo_dock_applet_cd_applet_on_stop_cairo_dock_applet_iapplet_on_stop_module, self, 0);
+	g_signal_connect_object (self->icon, "on-reload-module", (GCallback) __cairo_dock_applet_cd_applet_on_reload_cairo_dock_applet_iapplet_on_reload_module, self, 0);
+	g_signal_connect_object (self->sub_icons, "on-click-sub-icon", (GCallback) _cairo_dock_applet_cd_applet_on_click_sub_icon_cairo_dock_applet_isub_applet_on_click_sub_icon, self, 0);
+	g_signal_connect_object (self->sub_icons, "on-middle-click-sub-icon", (GCallback) _cairo_dock_applet_cd_applet_on_middle_click_sub_icon_cairo_dock_applet_isub_applet_on_middle_click_sub_icon, self, 0);
+	g_signal_connect_object (self->sub_icons, "on-scroll-sub-icon", (GCallback) _cairo_dock_applet_cd_applet_on_scroll_sub_icon_cairo_dock_applet_isub_applet_on_scroll_sub_icon, self, 0);
+	g_signal_connect_object (self->sub_icons, "on-drop-data-sub-icon", (GCallback) _cairo_dock_applet_cd_applet_on_drop_data_sub_icon_cairo_dock_applet_isub_applet_on_drop_data_sub_icon, self, 0);
+	g_signal_connect_object (self->sub_icons, "on-build-menu-sub-icon", (GCallback) __cairo_dock_applet_cd_applet_on_build_menu_sub_icon_cairo_dock_applet_isub_applet_on_build_menu_sub_icon, self, 0);
+}
+
+
+static void cairo_dock_applet_cd_applet_class_init (CairoDockAppletCDAppletClass * klass) {
+	cairo_dock_applet_cd_applet_parent_class = g_type_class_peek_parent (klass);
+	g_type_class_add_private (klass, sizeof (CairoDockAppletCDAppletPrivate));
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->on_click = cairo_dock_applet_cd_applet_real_on_click;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->on_middle_click = cairo_dock_applet_cd_applet_real_on_middle_click;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->on_build_menu = cairo_dock_applet_cd_applet_real_on_build_menu;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->on_menu_select = cairo_dock_applet_cd_applet_real_on_menu_select;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->on_scroll = cairo_dock_applet_cd_applet_real_on_scroll;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->on_drop_data = cairo_dock_applet_cd_applet_real_on_drop_data;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->on_answer = cairo_dock_applet_cd_applet_real_on_answer;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->on_answer_dialog = cairo_dock_applet_cd_applet_real_on_answer_dialog;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->on_shortkey = cairo_dock_applet_cd_applet_real_on_shortkey;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->on_change_focus = cairo_dock_applet_cd_applet_real_on_change_focus;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->on_click_sub_icon = cairo_dock_applet_cd_applet_real_on_click_sub_icon;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->on_middle_click_sub_icon = cairo_dock_applet_cd_applet_real_on_middle_click_sub_icon;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->on_scroll_sub_icon = cairo_dock_applet_cd_applet_real_on_scroll_sub_icon;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->on_drop_data_sub_icon = cairo_dock_applet_cd_applet_real_on_drop_data_sub_icon;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->on_build_menu_sub_icon = cairo_dock_applet_cd_applet_real_on_build_menu_sub_icon;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->on_menu_select_sub_icon = cairo_dock_applet_cd_applet_real_on_menu_select_sub_icon;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->begin = cairo_dock_applet_cd_applet_real_begin;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->end = cairo_dock_applet_cd_applet_real_end;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->reload = cairo_dock_applet_cd_applet_real_reload;
+	CAIRO_DOCK_APPLET_CD_APPLET_CLASS (klass)->get_config = cairo_dock_applet_cd_applet_real_get_config;
+	G_OBJECT_CLASS (klass)->finalize = cairo_dock_applet_cd_applet_finalize;
+}
+
+
+static void cairo_dock_applet_cd_applet_instance_init (CairoDockAppletCDApplet * self) {
+	self->priv = CAIRO_DOCK_APPLET_CD_APPLET_GET_PRIVATE (self);
+}
+
+
+static void cairo_dock_applet_cd_applet_finalize (GObject* obj) {
+	CairoDockAppletCDApplet * self;
+	self = CAIRO_DOCK_APPLET_CD_APPLET (obj);
+	_g_object_unref0 (self->icon);
+	_g_object_unref0 (self->sub_icons);
+	_g_free0 (self->cAppletName);
+	_g_free0 (self->cConfFile);
+	_g_free0 (self->cParentAppName);
+	_g_free0 (self->cBusPath);
+	_g_main_loop_unref0 (self->priv->loop);
+	_g_free0 (self->priv->_cMenuIconId);
+	G_OBJECT_CLASS (cairo_dock_applet_cd_applet_parent_class)->finalize (obj);
+}
+
+
+GType cairo_dock_applet_cd_applet_get_type (void) {
+	static volatile gsize cairo_dock_applet_cd_applet_type_id__volatile = 0;
+	if (g_once_init_enter (&cairo_dock_applet_cd_applet_type_id__volatile)) {
+		static const GTypeInfo g_define_type_info = { sizeof (CairoDockAppletCDAppletClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) cairo_dock_applet_cd_applet_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (CairoDockAppletCDApplet), 0, (GInstanceInitFunc) cairo_dock_applet_cd_applet_instance_init, NULL };
+		GType cairo_dock_applet_cd_applet_type_id;
+		cairo_dock_applet_cd_applet_type_id = g_type_register_static (G_TYPE_OBJECT, "CairoDockAppletCDApplet", &g_define_type_info, 0);
+		g_once_init_leave (&cairo_dock_applet_cd_applet_type_id__volatile, cairo_dock_applet_cd_applet_type_id);
+	}
+	return cairo_dock_applet_cd_applet_type_id__volatile;
+}
+
+
+static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
+	if ((array != NULL) && (destroy_func != NULL)) {
+		int i;
+		for (i = 0; i < array_length; i = i + 1) {
+			if (((gpointer*) array)[i] != NULL) {
+				destroy_func (((gpointer*) array)[i]);
+			}
+		}
+	}
+}
+
+
+static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
+	_vala_array_destroy (array, array_length, destroy_func);
+	g_free (array);
+}
+
+
+
+static void g_cclosure_user_marshal_VOID__VARIANT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
+	typedef void (*GMarshalFunc_VOID__VARIANT) (gpointer data1, gpointer arg_1, gpointer data2);
+	register GMarshalFunc_VOID__VARIANT callback;
+	register GCClosure * cc;
+	register gpointer data1, data2;
+	cc = (GCClosure *) closure;
+	g_return_if_fail (n_param_values == 2);
+	if (G_CCLOSURE_SWAP_DATA (closure)) {
+		data1 = closure->data;
+		data2 = param_values->data[0].v_pointer;
+	} else {
+		data1 = param_values->data[0].v_pointer;
+		data2 = closure->data;
+	}
+	callback = (GMarshalFunc_VOID__VARIANT) (marshal_data ? marshal_data : cc->callback);
+	callback (data1, g_value_get_variant (param_values + 1), data2);
+}
+
+
+static void g_cclosure_user_marshal_VOID__INT_VARIANT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
+	typedef void (*GMarshalFunc_VOID__INT_VARIANT) (gpointer data1, gint arg_1, gpointer arg_2, gpointer data2);
+	register GMarshalFunc_VOID__INT_VARIANT callback;
+	register GCClosure * cc;
+	register gpointer data1, data2;
+	cc = (GCClosure *) closure;
+	g_return_if_fail (n_param_values == 3);
+	if (G_CCLOSURE_SWAP_DATA (closure)) {
+		data1 = closure->data;
+		data2 = param_values->data[0].v_pointer;
+	} else {
+		data1 = param_values->data[0].v_pointer;
+		data2 = closure->data;
+	}
+	callback = (GMarshalFunc_VOID__INT_VARIANT) (marshal_data ? marshal_data : cc->callback);
+	callback (data1, g_value_get_int (param_values + 1), g_value_get_variant (param_values + 2), data2);
+}
+
+
+static void g_cclosure_user_marshal_VOID__INT_STRING (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
+	typedef void (*GMarshalFunc_VOID__INT_STRING) (gpointer data1, gint arg_1, const char* arg_2, gpointer data2);
+	register GMarshalFunc_VOID__INT_STRING callback;
+	register GCClosure * cc;
+	register gpointer data1, data2;
+	cc = (GCClosure *) closure;
+	g_return_if_fail (n_param_values == 3);
+	if (G_CCLOSURE_SWAP_DATA (closure)) {
+		data1 = closure->data;
+		data2 = param_values->data[0].v_pointer;
+	} else {
+		data1 = param_values->data[0].v_pointer;
+		data2 = closure->data;
+	}
+	callback = (GMarshalFunc_VOID__INT_STRING) (marshal_data ? marshal_data : cc->callback);
+	callback (data1, g_value_get_int (param_values + 1), g_value_get_string (param_values + 2), data2);
+}
+
+
+static void g_cclosure_user_marshal_VOID__BOOLEAN_STRING (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
+	typedef void (*GMarshalFunc_VOID__BOOLEAN_STRING) (gpointer data1, gboolean arg_1, const char* arg_2, gpointer data2);
+	register GMarshalFunc_VOID__BOOLEAN_STRING callback;
+	register GCClosure * cc;
+	register gpointer data1, data2;
+	cc = (GCClosure *) closure;
+	g_return_if_fail (n_param_values == 3);
+	if (G_CCLOSURE_SWAP_DATA (closure)) {
+		data1 = closure->data;
+		data2 = param_values->data[0].v_pointer;
+	} else {
+		data1 = param_values->data[0].v_pointer;
+		data2 = closure->data;
+	}
+	callback = (GMarshalFunc_VOID__BOOLEAN_STRING) (marshal_data ? marshal_data : cc->callback);
+	callback (data1, g_value_get_boolean (param_values + 1), g_value_get_string (param_values + 2), data2);
+}
+
+
+static void g_cclosure_user_marshal_VOID__STRING_STRING (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) {
+	typedef void (*GMarshalFunc_VOID__STRING_STRING) (gpointer data1, const char* arg_1, const char* arg_2, gpointer data2);
+	register GMarshalFunc_VOID__STRING_STRING callback;
+	register GCClosure * cc;
+	register gpointer data1, data2;
+	cc = (GCClosure *) closure;
+	g_return_if_fail (n_param_values == 3);
+	if (G_CCLOSURE_SWAP_DATA (closure)) {
+		data1 = closure->data;
+		data2 = param_values->data[0].v_pointer;
+	} else {
+		data1 = param_values->data[0].v_pointer;
+		data2 = closure->data;
+	}
+	callback = (GMarshalFunc_VOID__STRING_STRING) (marshal_data ? marshal_data : cc->callback);
+	callback (data1, g_value_get_string (param_values + 1), g_value_get_string (param_values + 2), data2);
+}
+
+
+

=== added file 'Dbus/interfaces/vala/src/CDApplet.h'
--- Dbus/interfaces/vala/src/CDApplet.h	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/vala/src/CDApplet.h	2011-02-23 23:29:29 +0000
@@ -0,0 +1,215 @@
+/* CDApplet.h generated by valac 0.10.0, the Vala compiler, do not modify */
+
+
+#ifndef ___HOME_FAB_CD2_CAIRO_DOCK_PLUG_INS_DBUS_INTERFACES_VALA_SRC_CDAPPLET_H__
+#define ___HOME_FAB_CD2_CAIRO_DOCK_PLUG_INS_DBUS_INTERFACES_VALA_SRC_CDAPPLET_H__
+
+#include <glib.h>
+#include <glib-object.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gio/gio.h>
+#include <float.h>
+#include <math.h>
+
+G_BEGIN_DECLS
+
+
+#define CAIRO_DOCK_APPLET_TYPE_IAPPLET (cairo_dock_applet_iapplet_get_type ())
+#define CAIRO_DOCK_APPLET_IAPPLET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CAIRO_DOCK_APPLET_TYPE_IAPPLET, CairoDockAppletIApplet))
+#define CAIRO_DOCK_APPLET_IS_IAPPLET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CAIRO_DOCK_APPLET_TYPE_IAPPLET))
+#define CAIRO_DOCK_APPLET_IAPPLET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), CAIRO_DOCK_APPLET_TYPE_IAPPLET, CairoDockAppletIAppletIface))
+
+typedef struct _CairoDockAppletIApplet CairoDockAppletIApplet;
+typedef struct _CairoDockAppletIAppletIface CairoDockAppletIAppletIface;
+
+#define CAIRO_DOCK_APPLET_TYPE_IAPPLET_PROXY (cairo_dock_applet_iapplet_proxy_get_type ())
+
+#define CAIRO_DOCK_APPLET_TYPE_ISUB_APPLET (cairo_dock_applet_isub_applet_get_type ())
+#define CAIRO_DOCK_APPLET_ISUB_APPLET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CAIRO_DOCK_APPLET_TYPE_ISUB_APPLET, CairoDockAppletISubApplet))
+#define CAIRO_DOCK_APPLET_IS_ISUB_APPLET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CAIRO_DOCK_APPLET_TYPE_ISUB_APPLET))
+#define CAIRO_DOCK_APPLET_ISUB_APPLET_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), CAIRO_DOCK_APPLET_TYPE_ISUB_APPLET, CairoDockAppletISubAppletIface))
+
+typedef struct _CairoDockAppletISubApplet CairoDockAppletISubApplet;
+typedef struct _CairoDockAppletISubAppletIface CairoDockAppletISubAppletIface;
+
+#define CAIRO_DOCK_APPLET_TYPE_ISUB_APPLET_PROXY (cairo_dock_applet_isub_applet_proxy_get_type ())
+
+#define CAIRO_DOCK_APPLET_TYPE_CD_APPLET (cairo_dock_applet_cd_applet_get_type ())
+#define CAIRO_DOCK_APPLET_CD_APPLET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CAIRO_DOCK_APPLET_TYPE_CD_APPLET, CairoDockAppletCDApplet))
+#define CAIRO_DOCK_APPLET_CD_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CAIRO_DOCK_APPLET_TYPE_CD_APPLET, CairoDockAppletCDAppletClass))
+#define CAIRO_DOCK_APPLET_IS_CD_APPLET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CAIRO_DOCK_APPLET_TYPE_CD_APPLET))
+#define CAIRO_DOCK_APPLET_IS_CD_APPLET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CAIRO_DOCK_APPLET_TYPE_CD_APPLET))
+#define CAIRO_DOCK_APPLET_CD_APPLET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CAIRO_DOCK_APPLET_TYPE_CD_APPLET, CairoDockAppletCDAppletClass))
+
+typedef struct _CairoDockAppletCDApplet CairoDockAppletCDApplet;
+typedef struct _CairoDockAppletCDAppletClass CairoDockAppletCDAppletClass;
+typedef struct _CairoDockAppletCDAppletPrivate CairoDockAppletCDAppletPrivate;
+
+#define CAIRO_DOCK_APPLET_CD_APPLET_TYPE_SCREEN_POSITION (cairo_dock_applet_cd_applet_screen_position_get_type ())
+
+#define CAIRO_DOCK_APPLET_CD_APPLET_TYPE_CONTAINER_TYPE (cairo_dock_applet_cd_applet_container_type_get_type ())
+
+#define CAIRO_DOCK_APPLET_CD_APPLET_TYPE_EMBLEM_POSITION (cairo_dock_applet_cd_applet_emblem_position_get_type ())
+
+#define CAIRO_DOCK_APPLET_CD_APPLET_TYPE_MENU_ITEM_TYPE (cairo_dock_applet_cd_applet_menu_item_type_get_type ())
+
+struct _CairoDockAppletIAppletIface {
+	GTypeInterface parent_iface;
+	GVariant* (*Get) (CairoDockAppletIApplet* self, const char* cProperty, GError** error);
+	GHashTable* (*GetAll) (CairoDockAppletIApplet* self, GError** error);
+	void (*SetQuickInfo) (CairoDockAppletIApplet* self, const char* cQuickInfo, GError** error);
+	void (*SetLabel) (CairoDockAppletIApplet* self, const char* cLabel, GError** error);
+	void (*SetIcon) (CairoDockAppletIApplet* self, const char* cImage, GError** error);
+	void (*SetEmblem) (CairoDockAppletIApplet* self, const char* cImage, gint iPosition, GError** error);
+	void (*Animate) (CairoDockAppletIApplet* self, const char* cAnimation, gint iRounds, GError** error);
+	void (*DemandsAttention) (CairoDockAppletIApplet* self, gboolean bStart, const char* cAnimation, GError** error);
+	void (*ShowDialog) (CairoDockAppletIApplet* self, const char* cMessage, gint iDuration, GError** error);
+	void (*PopupDialog) (CairoDockAppletIApplet* self, GHashTable* hDialogAttributes, GHashTable* hWidgetAttributes, GError** error);
+	void (*AddDataRenderer) (CairoDockAppletIApplet* self, const char* cType, gint iNbValues, const char* cTheme, GError** error);
+	void (*RenderValues) (CairoDockAppletIApplet* self, double* pValues, int pValues_length1, GError** error);
+	void (*ControlAppli) (CairoDockAppletIApplet* self, const char* cApplicationClass, GError** error);
+	void (*ShowAppli) (CairoDockAppletIApplet* self, gboolean bShow, GError** error);
+	void (*AddMenuItems) (CairoDockAppletIApplet* self, GHashTable** pItems, int pItems_length1, GError** error);
+	void (*BindShortkey) (CairoDockAppletIApplet* self, char** cShortkeys, int cShortkeys_length1, GError** error);
+};
+
+struct _CairoDockAppletISubAppletIface {
+	GTypeInterface parent_iface;
+	void (*SetQuickInfo) (CairoDockAppletISubApplet* self, const char* cQuickInfo, const char* cIconID, GError** error);
+	void (*SetLabel) (CairoDockAppletISubApplet* self, const char* cLabel, const char* cIconID, GError** error);
+	void (*SetIcon) (CairoDockAppletISubApplet* self, const char* cImage, const char* cIconID, GError** error);
+	void (*SetEmblem) (CairoDockAppletISubApplet* self, const char* cImage, gint iPosition, const char* cIconID, GError** error);
+	void (*Animate) (CairoDockAppletISubApplet* self, const char* cAnimation, gint iNbRounds, const char* cIconID, GError** error);
+	void (*ShowDialog) (CairoDockAppletISubApplet* self, const char* message, gint iDuration, const char* cIconID, GError** error);
+	void (*AddSubIcons) (CairoDockAppletISubApplet* self, char** pIconFields, int pIconFields_length1, GError** error);
+	void (*RemoveSubIcon) (CairoDockAppletISubApplet* self, const char* cIconID, GError** error);
+};
+
+struct _CairoDockAppletCDApplet {
+	GObject parent_instance;
+	CairoDockAppletCDAppletPrivate * priv;
+	CairoDockAppletIApplet* icon;
+	CairoDockAppletISubApplet* sub_icons;
+	char* cAppletName;
+	char* cConfFile;
+	char* cParentAppName;
+	char* cBusPath;
+};
+
+struct _CairoDockAppletCDAppletClass {
+	GObjectClass parent_class;
+	void (*on_click) (CairoDockAppletCDApplet* self, gint iState);
+	void (*on_middle_click) (CairoDockAppletCDApplet* self);
+	void (*on_build_menu) (CairoDockAppletCDApplet* self);
+	void (*on_menu_select) (CairoDockAppletCDApplet* self, gint iNumEntry);
+	void (*on_scroll) (CairoDockAppletCDApplet* self, gboolean bScrollUp);
+	void (*on_drop_data) (CairoDockAppletCDApplet* self, const char* cReceivedData);
+	void (*on_answer) (CairoDockAppletCDApplet* self, GVariant* answer);
+	void (*on_answer_dialog) (CairoDockAppletCDApplet* self, gint iButton, GVariant* answer);
+	void (*on_shortkey) (CairoDockAppletCDApplet* self, const char* cKey);
+	void (*on_change_focus) (CairoDockAppletCDApplet* self, gboolean bIsActive);
+	void (*on_click_sub_icon) (CairoDockAppletCDApplet* self, gint iState, const char* cIconID);
+	void (*on_middle_click_sub_icon) (CairoDockAppletCDApplet* self, const char* cIconID);
+	void (*on_scroll_sub_icon) (CairoDockAppletCDApplet* self, gboolean bScrollUp, const char* cIconID);
+	void (*on_drop_data_sub_icon) (CairoDockAppletCDApplet* self, const char* cReceivedData, const char* cIconID);
+	void (*on_build_menu_sub_icon) (CairoDockAppletCDApplet* self, const char* cIconID);
+	void (*on_menu_select_sub_icon) (CairoDockAppletCDApplet* self, gint iNumEntry, const char* cIconID);
+	void (*begin) (CairoDockAppletCDApplet* self);
+	void (*end) (CairoDockAppletCDApplet* self);
+	void (*reload) (CairoDockAppletCDApplet* self);
+	void (*get_config) (CairoDockAppletCDApplet* self, GKeyFile* keyfile);
+};
+
+typedef enum  {
+	CAIRO_DOCK_APPLET_CD_APPLET_SCREEN_POSITION_BOTTOM = 0,
+	CAIRO_DOCK_APPLET_CD_APPLET_SCREEN_POSITION_TOP,
+	CAIRO_DOCK_APPLET_CD_APPLET_SCREEN_POSITION_RIGHT,
+	CAIRO_DOCK_APPLET_CD_APPLET_SCREEN_POSITION_LEFT
+} CairoDockAppletCDAppletScreenPosition;
+
+typedef enum  {
+	CAIRO_DOCK_APPLET_CD_APPLET_CONTAINER_TYPE_DOCK = 0,
+	CAIRO_DOCK_APPLET_CD_APPLET_CONTAINER_TYPE_DESKLET
+} CairoDockAppletCDAppletContainerType;
+
+typedef enum  {
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_UPPER_LEFT = 0,
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_LOWER_RIGHT,
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_LOWER_LEFT,
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_UPPER_RIGHT,
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_MIDDLE
+} CairoDockAppletCDAppletEmblemPosition;
+
+typedef enum  {
+	CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_ENTRY = 0,
+	CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_SUB_MENU,
+	CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_SEPARATOR,
+	CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_CHECKBOX,
+	CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_MENU_RADIO_BUTTON
+} CairoDockAppletCDAppletMenuItemType;
+
+
+GType cairo_dock_applet_iapplet_proxy_get_type (void) G_GNUC_CONST;
+guint cairo_dock_applet_iapplet_register_object (void* object, GDBusConnection* connection, const gchar* path, GError** error);
+GType cairo_dock_applet_iapplet_get_type (void) G_GNUC_CONST;
+GVariant* cairo_dock_applet_iapplet_Get (CairoDockAppletIApplet* self, const char* cProperty, GError** error);
+GHashTable* cairo_dock_applet_iapplet_GetAll (CairoDockAppletIApplet* self, GError** error);
+void cairo_dock_applet_iapplet_SetQuickInfo (CairoDockAppletIApplet* self, const char* cQuickInfo, GError** error);
+void cairo_dock_applet_iapplet_SetLabel (CairoDockAppletIApplet* self, const char* cLabel, GError** error);
+void cairo_dock_applet_iapplet_SetIcon (CairoDockAppletIApplet* self, const char* cImage, GError** error);
+void cairo_dock_applet_iapplet_SetEmblem (CairoDockAppletIApplet* self, const char* cImage, gint iPosition, GError** error);
+void cairo_dock_applet_iapplet_Animate (CairoDockAppletIApplet* self, const char* cAnimation, gint iRounds, GError** error);
+void cairo_dock_applet_iapplet_DemandsAttention (CairoDockAppletIApplet* self, gboolean bStart, const char* cAnimation, GError** error);
+void cairo_dock_applet_iapplet_ShowDialog (CairoDockAppletIApplet* self, const char* cMessage, gint iDuration, GError** error);
+void cairo_dock_applet_iapplet_PopupDialog (CairoDockAppletIApplet* self, GHashTable* hDialogAttributes, GHashTable* hWidgetAttributes, GError** error);
+void cairo_dock_applet_iapplet_AddDataRenderer (CairoDockAppletIApplet* self, const char* cType, gint iNbValues, const char* cTheme, GError** error);
+void cairo_dock_applet_iapplet_RenderValues (CairoDockAppletIApplet* self, double* pValues, int pValues_length1, GError** error);
+void cairo_dock_applet_iapplet_ControlAppli (CairoDockAppletIApplet* self, const char* cApplicationClass, GError** error);
+void cairo_dock_applet_iapplet_ShowAppli (CairoDockAppletIApplet* self, gboolean bShow, GError** error);
+void cairo_dock_applet_iapplet_AddMenuItems (CairoDockAppletIApplet* self, GHashTable** pItems, int pItems_length1, GError** error);
+void cairo_dock_applet_iapplet_BindShortkey (CairoDockAppletIApplet* self, char** cShortkeys, int cShortkeys_length1, GError** error);
+GType cairo_dock_applet_isub_applet_proxy_get_type (void) G_GNUC_CONST;
+guint cairo_dock_applet_isub_applet_register_object (void* object, GDBusConnection* connection, const gchar* path, GError** error);
+GType cairo_dock_applet_isub_applet_get_type (void) G_GNUC_CONST;
+void cairo_dock_applet_isub_applet_SetQuickInfo (CairoDockAppletISubApplet* self, const char* cQuickInfo, const char* cIconID, GError** error);
+void cairo_dock_applet_isub_applet_SetLabel (CairoDockAppletISubApplet* self, const char* cLabel, const char* cIconID, GError** error);
+void cairo_dock_applet_isub_applet_SetIcon (CairoDockAppletISubApplet* self, const char* cImage, const char* cIconID, GError** error);
+void cairo_dock_applet_isub_applet_SetEmblem (CairoDockAppletISubApplet* self, const char* cImage, gint iPosition, const char* cIconID, GError** error);
+void cairo_dock_applet_isub_applet_Animate (CairoDockAppletISubApplet* self, const char* cAnimation, gint iNbRounds, const char* cIconID, GError** error);
+void cairo_dock_applet_isub_applet_ShowDialog (CairoDockAppletISubApplet* self, const char* message, gint iDuration, const char* cIconID, GError** error);
+void cairo_dock_applet_isub_applet_AddSubIcons (CairoDockAppletISubApplet* self, char** pIconFields, int pIconFields_length1, GError** error);
+void cairo_dock_applet_isub_applet_RemoveSubIcon (CairoDockAppletISubApplet* self, const char* cIconID, GError** error);
+GType cairo_dock_applet_cd_applet_get_type (void) G_GNUC_CONST;
+GType cairo_dock_applet_cd_applet_screen_position_get_type (void) G_GNUC_CONST;
+GType cairo_dock_applet_cd_applet_container_type_get_type (void) G_GNUC_CONST;
+GType cairo_dock_applet_cd_applet_emblem_position_get_type (void) G_GNUC_CONST;
+GType cairo_dock_applet_cd_applet_menu_item_type_get_type (void) G_GNUC_CONST;
+CairoDockAppletCDApplet* cairo_dock_applet_cd_applet_new (char** argv, int argv_length1);
+CairoDockAppletCDApplet* cairo_dock_applet_cd_applet_construct (GType object_type, char** argv, int argv_length1);
+void cairo_dock_applet_cd_applet_run (CairoDockAppletCDApplet* self);
+void cairo_dock_applet_cd_applet_on_click (CairoDockAppletCDApplet* self, gint iState);
+void cairo_dock_applet_cd_applet_on_middle_click (CairoDockAppletCDApplet* self);
+void cairo_dock_applet_cd_applet_on_build_menu (CairoDockAppletCDApplet* self);
+void cairo_dock_applet_cd_applet_on_menu_select (CairoDockAppletCDApplet* self, gint iNumEntry);
+void cairo_dock_applet_cd_applet_on_scroll (CairoDockAppletCDApplet* self, gboolean bScrollUp);
+void cairo_dock_applet_cd_applet_on_drop_data (CairoDockAppletCDApplet* self, const char* cReceivedData);
+void cairo_dock_applet_cd_applet_on_answer (CairoDockAppletCDApplet* self, GVariant* answer);
+void cairo_dock_applet_cd_applet_on_answer_dialog (CairoDockAppletCDApplet* self, gint iButton, GVariant* answer);
+void cairo_dock_applet_cd_applet_on_shortkey (CairoDockAppletCDApplet* self, const char* cKey);
+void cairo_dock_applet_cd_applet_on_change_focus (CairoDockAppletCDApplet* self, gboolean bIsActive);
+void cairo_dock_applet_cd_applet_on_click_sub_icon (CairoDockAppletCDApplet* self, gint iState, const char* cIconID);
+void cairo_dock_applet_cd_applet_on_middle_click_sub_icon (CairoDockAppletCDApplet* self, const char* cIconID);
+void cairo_dock_applet_cd_applet_on_scroll_sub_icon (CairoDockAppletCDApplet* self, gboolean bScrollUp, const char* cIconID);
+void cairo_dock_applet_cd_applet_on_drop_data_sub_icon (CairoDockAppletCDApplet* self, const char* cReceivedData, const char* cIconID);
+void cairo_dock_applet_cd_applet_on_build_menu_sub_icon (CairoDockAppletCDApplet* self, const char* cIconID);
+void cairo_dock_applet_cd_applet_on_menu_select_sub_icon (CairoDockAppletCDApplet* self, gint iNumEntry, const char* cIconID);
+void cairo_dock_applet_cd_applet_begin (CairoDockAppletCDApplet* self);
+void cairo_dock_applet_cd_applet_end (CairoDockAppletCDApplet* self);
+void cairo_dock_applet_cd_applet_reload (CairoDockAppletCDApplet* self);
+void cairo_dock_applet_cd_applet_get_config (CairoDockAppletCDApplet* self, GKeyFile* keyfile);
+
+
+G_END_DECLS
+
+#endif

=== added file 'Dbus/interfaces/vala/src/CDApplet.vapi'
--- Dbus/interfaces/vala/src/CDApplet.vapi	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/vala/src/CDApplet.vapi	2011-02-23 23:29:29 +0000
@@ -0,0 +1,116 @@
+/* CDApplet.vapi generated by valac 0.10.0, do not modify. */
+
+[CCode (cprefix = "CairoDock", lower_case_cprefix = "cairo_dock_")]
+namespace CairoDock {
+	[CCode (cprefix = "CairoDockApplet", lower_case_cprefix = "cairo_dock_applet_")]
+	namespace Applet {
+		[CCode (cheader_filename = "CDApplet.h")]
+		public class CDApplet : GLib.Object {
+			[CCode (cprefix = "CAIRO_DOCK_APPLET_CD_APPLET_CONTAINER_TYPE_", cheader_filename = "CDApplet.h")]
+			public enum ContainerType {
+				DOCK,
+				DESKLET
+			}
+			[CCode (cprefix = "CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_", cheader_filename = "CDApplet.h")]
+			public enum EmblemPosition {
+				UPPER_LEFT,
+				LOWER_RIGHT,
+				LOWER_LEFT,
+				UPPER_RIGHT,
+				MIDDLE
+			}
+			[CCode (cprefix = "CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_TYPE_", cheader_filename = "CDApplet.h")]
+			public enum MenuItemType {
+				MENU_ENTRY,
+				MENU_SUB_MENU,
+				MENU_SEPARATOR,
+				MENU_CHECKBOX,
+				MENU_RADIO_BUTTON
+			}
+			[CCode (cprefix = "CAIRO_DOCK_APPLET_CD_APPLET_SCREEN_POSITION_", cheader_filename = "CDApplet.h")]
+			public enum ScreenPosition {
+				BOTTOM,
+				TOP,
+				RIGHT,
+				LEFT
+			}
+			public string cAppletName;
+			public string cBusPath;
+			public string cConfFile;
+			public string cParentAppName;
+			public CairoDock.Applet.IApplet icon;
+			public CairoDock.Applet.ISubApplet sub_icons;
+			public CDApplet (string[] argv);
+			public virtual void begin ();
+			public virtual void end ();
+			public virtual void get_config (GLib.KeyFile keyfile);
+			public virtual void on_answer (GLib.Variant answer);
+			public virtual void on_answer_dialog (int iButton, GLib.Variant answer);
+			public virtual void on_build_menu ();
+			public virtual void on_build_menu_sub_icon (string cIconID);
+			public virtual void on_change_focus (bool bIsActive);
+			public virtual void on_click (int iState);
+			public virtual void on_click_sub_icon (int iState, string cIconID);
+			public virtual void on_drop_data (string cReceivedData);
+			public virtual void on_drop_data_sub_icon (string cReceivedData, string cIconID);
+			public virtual void on_menu_select (int iNumEntry);
+			public virtual void on_menu_select_sub_icon (int iNumEntry, string cIconID);
+			public virtual void on_middle_click ();
+			public virtual void on_middle_click_sub_icon (string cIconID);
+			public virtual void on_scroll (bool bScrollUp);
+			public virtual void on_scroll_sub_icon (bool bScrollUp, string cIconID);
+			public virtual void on_shortkey (string cKey);
+			public virtual void reload ();
+			public void run ();
+		}
+		[CCode (cheader_filename = "CDApplet.h")]
+		[DBus (name = "org.cairodock.CairoDock.applet")]
+		public interface IApplet : GLib.Object {
+			public abstract void AddDataRenderer (string cType, int iNbValues, string cTheme) throws GLib.IOError;
+			public abstract void AddMenuItems (GLib.HashTable<string,GLib.Variant>[] pItems) throws GLib.IOError;
+			public abstract void Animate (string cAnimation, int iRounds) throws GLib.IOError;
+			public abstract void BindShortkey (string[] cShortkeys) throws GLib.IOError;
+			public abstract void ControlAppli (string cApplicationClass) throws GLib.IOError;
+			public abstract void DemandsAttention (bool bStart, string cAnimation) throws GLib.IOError;
+			public abstract GLib.Variant Get (string cProperty) throws GLib.IOError;
+			public abstract GLib.HashTable<string,GLib.Variant> GetAll () throws GLib.IOError;
+			public abstract void PopupDialog (GLib.HashTable<string,GLib.Variant> hDialogAttributes, GLib.HashTable<string,GLib.Variant> hWidgetAttributes) throws GLib.IOError;
+			public abstract void RenderValues (double[] pValues) throws GLib.IOError;
+			public abstract void SetEmblem (string cImage, int iPosition) throws GLib.IOError;
+			public abstract void SetIcon (string cImage) throws GLib.IOError;
+			public abstract void SetLabel (string cLabel) throws GLib.IOError;
+			public abstract void SetQuickInfo (string cQuickInfo) throws GLib.IOError;
+			public abstract void ShowAppli (bool bShow) throws GLib.IOError;
+			public abstract void ShowDialog (string cMessage, int iDuration) throws GLib.IOError;
+			public signal void on_answer (GLib.Variant answer);
+			public signal void on_answer_dialog (int iButton, GLib.Variant answer);
+			public signal void on_build_menu ();
+			public signal void on_change_focus (bool bIsActive);
+			public signal void on_click (int iState);
+			public signal void on_drop_data (string cReceivedData);
+			public signal void on_menu_select (int iNumEntry);
+			public signal void on_middle_click ();
+			public signal void on_reload_module (bool bConfigHasChanged);
+			public signal void on_scroll (bool bScrollUp);
+			public signal void on_shortkey (string cKey);
+			public signal void on_stop_module ();
+		}
+		[CCode (cheader_filename = "CDApplet.h")]
+		[DBus (name = "org.cairodock.CairoDock.subapplet")]
+		public interface ISubApplet : GLib.Object {
+			public abstract void AddSubIcons (string[] pIconFields) throws GLib.IOError;
+			public abstract void Animate (string cAnimation, int iNbRounds, string cIconID) throws GLib.IOError;
+			public abstract void RemoveSubIcon (string cIconID) throws GLib.IOError;
+			public abstract void SetEmblem (string cImage, int iPosition, string cIconID) throws GLib.IOError;
+			public abstract void SetIcon (string cImage, string cIconID) throws GLib.IOError;
+			public abstract void SetLabel (string cLabel, string cIconID) throws GLib.IOError;
+			public abstract void SetQuickInfo (string cQuickInfo, string cIconID) throws GLib.IOError;
+			public abstract void ShowDialog (string message, int iDuration, string cIconID) throws GLib.IOError;
+			public signal void on_build_menu_sub_icon (string cIconID);
+			public signal void on_click_sub_icon (int iState, string cIconID);
+			public signal void on_drop_data_sub_icon (string cReceivedData, string cIconID);
+			public signal void on_middle_click_sub_icon (string cIconID);
+			public signal void on_scroll_sub_icon (bool bScrollUp, string cIconID);
+		}
+	}
+}

=== added file 'Dbus/interfaces/vala/src/CMakeLists.txt'
--- Dbus/interfaces/vala/src/CMakeLists.txt	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/vala/src/CMakeLists.txt	2011-02-23 23:29:29 +0000
@@ -0,0 +1,30 @@
+# now, compile it as any normal C lib.
+add_library (${CDAPPLET} SHARED ${CMAKE_CURRENT_SOURCE_DIR}/${CDAPPLET}.c)
+add_definitions (-fPIC)
+
+pkg_check_modules ("CDAPPLET_DEPS" "gobject-2.0" "gio-2.0")
+
+include_directories (
+	${CDAPPLET_DEPS_INCLUDE_DIRS})
+
+link_directories (
+	${CDAPPLET_DEPS_LIBRARY_DIRS})
+
+target_link_libraries (${CDAPPLET}
+	${CDAPPLET_DEPS_LIBRARIES})
+
+
+# .so goes with other libs (to be found on runtime)
+install (TARGETS ${CDAPPLET} DESTINATION "${libdir}")
+# .h goes in the dbus data dir
+install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/${CDAPPLET}.h DESTINATION "${dbusdatadir}")
+
+# Use the VAPI path from ValaVapiPath.txt file:
+find_program (HEAD_EXECUTABLE head)
+execute_process(COMMAND ${HEAD_EXECUTABLE} -n 1 ${CMAKE_CURRENT_SOURCE_DIR}/ValaVapiPath.txt
+	OUTPUT_VARIABLE VALA_VAPI_PATH)
+STRING (REGEX REPLACE "\n" "" VALA_VAPI_PATH ${VALA_VAPI_PATH})
+
+get_filename_component(VALA_VAPI_PATH "${VALA_SHARE_PATH}/${VALA_VAPI_PATH}" ABSOLUTE)
+install (FILES "${CMAKE_CURRENT_SOURCE_DIR}/${CDAPPLET}.vapi" DESTINATION "${VALA_VAPI_PATH}")
+install (FILES "${CMAKE_CURRENT_SOURCE_DIR}/../${CDAPPLET}.deps" DESTINATION "${VALA_VAPI_PATH}")

=== added file 'Dbus/interfaces/vala/src/ValaVapiPath.txt'
--- Dbus/interfaces/vala/src/ValaVapiPath.txt	1970-01-01 00:00:00 +0000
+++ Dbus/interfaces/vala/src/ValaVapiPath.txt	2011-02-23 23:29:29 +0000
@@ -0,0 +1,1 @@
+vala-0.10/vapi

=== modified file 'Dbus/src/CMakeLists.txt'
--- Dbus/src/CMakeLists.txt	2010-08-07 01:43:25 +0000
+++ Dbus/src/CMakeLists.txt	2011-02-23 23:29:29 +0000
@@ -39,58 +39,3 @@
 ########### install files ###############
 
 install (TARGETS ${PACKAGE_DBUS} DESTINATION ${pluginsdir})
-
-
-#original Makefile.am contents follow:
-
-# #dnl Process this file with automake to produce Makefile.in
-#
-#lib_LTLIBRARIES = 
-#	libcd-Dbus.la
-#
-#
-#libcd_Dbus_la_SOURCES = 
-#	applet-init.c
-#	applet-init.h
-#	applet-config.c
-#	applet-config.h
-#	applet-dbus.c
-#	applet-dbus.h
-#	interface-main-methods.c
-#	interface-main-methods.h
-#	interface-applet-object.c
-#	interface-applet-object.h
-#	interface-applet-methods.c
-#	interface-applet-methods.h
-#	interface-applet-signals.c
-#	interface-applet-signals.h
-#	dbus-applet-spec.h
-#	dbus-sub-applet-spec.h
-#	dbus-main-spec.h
-#	applet-struct.h
-#
-#
-#dock_version = `pkg-config --modversion cairo-dock`
-#
-#libcd_Dbus_la_CFLAGS = 
-#	-I$(top_srcdir)/src
-#	$(PACKAGE_CFLAGS)
-#	-DMY_APPLET_SHARE_DATA_DIR=""${dbusdatadir)""
-#	-DMY_APPLET_PREVIEW_FILE=""none""
-#	-DMY_APPLET_CONF_FILE=""Dbus.conf""
-#	-DMY_APPLET_USER_DATA_DIR=""Dbus""
-#	-DMY_APPLET_VERSION=""${VERSION_DBUS)""
-#	-DMY_APPLET_GETTEXT_DOMAIN=""${GETTEXT_DBUS)""
-#	-DMY_APPLET_DOCK_VERSION=""${dock_version)""
-#	-DMY_APPLET_ICON_FILE=""icon.svg""
-#	-std=c99
-#	-Werror-implicit-function-declaration
-##	-g -ggdb -W -Wall
-#
-#
-#libcd_Dbus_la_LIBADD = 
-#	$(PACKAGE_LIBS) -lm
-#
-#
-#libcd_Dbus_la_LDFLAGS =
-#	-avoid-version -module

=== modified file 'Dbus/src/applet-config.c' (properties changed: +x to -x)
--- Dbus/src/applet-config.c	2009-10-05 19:27:17 +0000
+++ Dbus/src/applet-config.c	2011-02-23 23:29:29 +0000
@@ -39,19 +39,4 @@
 	myConfig.bEnableSetLabel 		= CD_CONFIG_GET_BOOLEAN ("Configuration", "enable set label");
 	myConfig.bEnableSetIcon 		= CD_CONFIG_GET_BOOLEAN ("Configuration", "enable set icon");
 	myConfig.bEnableAnimateIcon		= CD_CONFIG_GET_BOOLEAN ("Configuration", "enable animate icon");
-	myConfig.bEnableNewModule		= CD_CONFIG_GET_BOOLEAN ("Configuration", "enable new module");
-	
-	myData.cActiveModules = CD_CONFIG_GET_STRING ("Configuration", "modules");
 CD_APPLET_GET_CONFIG_END
-
-
-//\_________________ Here you have to free all ressources allocated for myConfig. This one will be reseted to 0 at the end of this function. This function is called right before yo get the applet's config, and when your applet is stopped.
-CD_APPLET_RESET_CONFIG_BEGIN
-	
-CD_APPLET_RESET_CONFIG_END
-
-
-//\_________________ Here you have to free all ressources allocated for myData. This one will be reseted to 0 at the end of this function. This function is called when your applet is stopped.
-CD_APPLET_RESET_DATA_BEGIN
-	g_free (myData.cActiveModules);
-CD_APPLET_RESET_DATA_END

=== modified file 'Dbus/src/applet-config.h' (properties changed: +x to -x)
=== modified file 'Dbus/src/applet-dbus.c' (properties changed: +x to -x)
--- Dbus/src/applet-dbus.c	2010-09-07 00:39:20 +0000
+++ Dbus/src/applet-dbus.c	2011-02-23 23:29:29 +0000
@@ -33,7 +33,10 @@
 
 ******************************************************************************/
 
-#include <unistd.h>
+#include <fcntl.h>  // O_RDONLY
+#include <unistd.h>  // open, read, close
+#define __USE_POSIX
+#include <signal.h>  // kill
 #include <glib.h>
 #include <dbus/dbus-glib.h>
 #include <dbus/dbus-glib-bindings.h>
@@ -44,9 +47,13 @@
 #include "interface-applet-signals.h"
 #include "applet-dbus.h"
 
+
+  ///////////////////
+ /// MAIN OBJECT ///
+///////////////////
+
 G_DEFINE_TYPE(dbusMainObject, cd_dbus_main, G_TYPE_OBJECT);
 
-
 static void cd_dbus_main_class_init(dbusMainObjectClass *klass)
 {
 	cd_message("");
@@ -61,7 +68,89 @@
 	dbus_g_object_type_install_info(cd_dbus_main_get_type(), &dbus_glib_cd_dbus_main_object_info);
 	
 	// Register DBUS path
-	dbus_g_connection_register_g_object(pMainObject->connection, "/org/cairodock/CairoDock", G_OBJECT(pMainObject));
+	dbus_g_connection_register_g_object(pMainObject->connection, myData.cBasePath, G_OBJECT(pMainObject));
+}
+
+
+  //////////////////////////
+ /// MODULE REGISTERING ///
+//////////////////////////
+
+static void _on_init_module (CairoDockModuleInstance *pModuleInstance, GKeyFile *pKeyFile)
+{
+	cd_debug ("%s (%d)", __func__, (int)pModuleInstance->pModule->fLastLoadingTime);
+	
+	//\_____________ On initialise l'icone.
+	cd_dbus_action_on_init_module (pModuleInstance);
+	
+	//\_____________ On cree l'objet sur le bus.
+	dbusApplet *pDbusApplet = cd_dbus_create_remote_applet_object (pModuleInstance);
+	g_return_if_fail (pDbusApplet != NULL);
+	
+	//\____________ On met a jour le fichier de conf si necessaire, c'est plus simple pour les applets.
+	if (pKeyFile != NULL)
+	{
+		if (cairo_dock_conf_file_needs_update (pKeyFile, pModuleInstance->pModule->pVisitCard->cModuleVersion))
+			cairo_dock_flush_conf_file (pKeyFile, pModuleInstance->cConfFilePath, pModuleInstance->pModule->pVisitCard->cShareDataDir, pModuleInstance->pModule->pVisitCard->cConfFileName);
+	}
+	
+	//\_____________ On (re)lance l'executable de l'applet.
+	cd_dbus_launch_applet_process (pModuleInstance, pDbusApplet);
+}
+static gboolean _cd_dbus_register_new_module (const gchar *cModuleName, const gchar *cDescription, const gchar *cAuthor, const gchar *cVersion, gint iCategory, const gchar *cIconName, const gchar *cShareDataDir, gboolean bMultiInstance)
+{
+	cd_message ("%s (%s)", __func__, cModuleName);
+	
+	//\____________ on cree et on enregistre un nouveau module s'il n'existe pas deja.
+	CairoDockModule *pModule = cairo_dock_find_module_from_name (cModuleName);
+	if (pModule != NULL)  // le module existe deja, rien a faire.
+	{
+		cd_warning ("this module (%s) is already registered", cModuleName);
+		if (pModule->cSoFilePath != NULL)
+		{
+			cd_warning ("an installed module already exists with this name (%s).", cModuleName);
+			return FALSE;
+		}
+	}
+	else  // on enregistre ce nouveau module.
+	{
+		pModule = g_new0 (CairoDockModule, 1);
+		CairoDockVisitCard *pVisitCard = g_new0 (CairoDockVisitCard, 1);
+		pModule->pVisitCard = pVisitCard;
+		pVisitCard->cModuleName = g_strdup (cModuleName);
+		pVisitCard->iMajorVersionNeeded = 2;
+		pVisitCard->iMinorVersionNeeded = 1;
+		pVisitCard->iMicroVersionNeeded = 1;
+		pVisitCard->cPreviewFilePath = cShareDataDir ? g_strdup_printf ("%s/preview", cShareDataDir) : NULL;
+		pVisitCard->cGettextDomain = g_strdup_printf ("cd-%s", cModuleName);
+		pVisitCard->cUserDataDir = g_strdup (cModuleName);
+		pVisitCard->cShareDataDir = g_strdup (cShareDataDir);
+		pVisitCard->cConfFileName = g_strdup_printf ("%s.conf", cModuleName);
+		pVisitCard->cModuleVersion = g_strdup (cVersion);
+		pVisitCard->cAuthor = g_strdup (cAuthor);
+		pVisitCard->iCategory = iCategory;
+		if (cIconName != NULL)
+			pVisitCard->cIconFilePath = cairo_dock_search_icon_s_path (cIconName);
+		if (pVisitCard->cIconFilePath == NULL)
+			pVisitCard->cIconFilePath = (cShareDataDir ? g_strdup_printf ("%s/icon", cShareDataDir) : NULL);
+		pVisitCard->iSizeOfConfig = 4;  // au cas ou ...
+		pVisitCard->iSizeOfData = 4;  // au cas ou ...
+		pVisitCard->cDescription = g_strdup (cDescription);
+		pVisitCard->cTitle = g_strdup (dgettext (pVisitCard->cGettextDomain, cModuleName));
+		pVisitCard->iContainerType = CAIRO_DOCK_MODULE_CAN_DOCK | CAIRO_DOCK_MODULE_CAN_DESKLET;
+		pVisitCard->bMultiInstance = bMultiInstance;
+		pModule->pInterface = g_new0 (CairoDockModuleInterface, 1);
+		pModule->pInterface->initModule = _on_init_module;
+		pModule->pInterface->stopModule = cd_dbus_emit_on_stop_module;
+		pModule->pInterface->reloadModule = cd_dbus_emit_on_reload_module;
+		if (! cairo_dock_register_module (pModule))
+		{
+			cairo_dock_free_module (pModule);
+			cd_warning ("registration of '%s' has failed.", cModuleName);
+			return FALSE;
+		}
+	}
+	return TRUE;
 }
 
 gboolean cd_dbus_register_module_in_dir (const gchar *cModuleName, const gchar *cThirdPartyPath)
@@ -69,7 +158,12 @@
 	cd_debug ("%s (%s, %s)", __func__, cModuleName, cThirdPartyPath);
 	gchar *cFilePath = g_strdup_printf ("%s/%s/auto-load.conf", cThirdPartyPath, cModuleName);
 	GKeyFile *pKeyFile = cairo_dock_open_key_file (cFilePath);
-	g_return_val_if_fail (pKeyFile != NULL, FALSE);
+	if (pKeyFile == NULL)
+	{
+		cd_warning ("file %s should not be here", cFilePath);
+		g_free (cFilePath);
+		return FALSE;
+	}
 	
 	GError *error = NULL;
 	
@@ -100,22 +194,32 @@
 		cd_warning (error->message);
 		g_error_free (error);
 		error = NULL;
-	}
+		iCategory = CAIRO_DOCK_CATEGORY_APPLET_ACCESSORY;
+	}
+	gchar *cIconName = g_key_file_get_string (pKeyFile, "Register", "icon", NULL);  // NULL if not specified, in which case we use the "icon" file.
+	if (cIconName && *cIconName == '\0')
+	{
+		g_free (cIconName);
+		cIconName = NULL;
+	}
+	
+	gboolean bMultiInstance = g_key_file_get_boolean (pKeyFile, "Register", "multi-instance", NULL);  // false if not specified
 	
 	gchar *cShareDataDir = g_strdup_printf ("%s/%s", cThirdPartyPath, cModuleName);
 	
 	g_key_file_free (pKeyFile);
 	
-	gboolean bActivationOk = cd_dbus_register_new_module (cModuleName, cDescription, cAuthor, cVersion, iCategory, cShareDataDir);
+	gboolean bActivationOk = _cd_dbus_register_new_module (cModuleName, cDescription, cAuthor, cVersion, iCategory, cIconName, cShareDataDir, bMultiInstance);
 	g_free (cDescription);
 	g_free (cAuthor);
 	g_free (cVersion);
+	g_free (cIconName);
 	g_free (cShareDataDir);
 	g_free (cFilePath);
 	return bActivationOk;
 }
 
-static void _cd_dbus_launch_third_party_applets_in_dir (const gchar *cDirPath)
+static void _cd_dbus_register_all_applets_in_dir (const gchar *cDirPath)
 {
 	const gchar *cFileName;
 	gchar *cThirdPartyPath = g_strdup_printf ("%s/%s", cDirPath, CD_DBUS_APPLETS_FOLDER);
@@ -140,6 +244,11 @@
 	g_free (cThirdPartyPath);
 }
 
+
+  /////////////////////
+ /// MODULE UPDATE ///
+/////////////////////
+
 static void _get_package_path (gchar *cModuleName)
 {
 	gchar *cSharePackagesDir = g_strdup_printf ("%s/%s", MY_APPLET_SHARE_DATA_DIR, CD_DBUS_APPLETS_FOLDER);
@@ -151,8 +260,6 @@
 	g_free (cSharePackagesDir);
 	g_free (cUserPackagesDir);
 	g_free (cDistantPackagesDir);
-	
-	
 }
 static gboolean _apply_package_update (gchar *cModuleName)
 {
@@ -165,30 +272,34 @@
 		CairoDockModuleInstance *pModuleInstance = pModule->pInstancesList->data;
 		Icon *pIcon = pModuleInstance->pIcon;
 		CairoContainer *pContainer = pModuleInstance->pContainer;
-		/*dbusApplet *pDbusApplet = cd_dbus_get_dbus_applet_from_instance (pModuleInstance);
-		g_return_val_if_fail (pDbusApplet != NULL, TRUE);*/
-		
-		myData.bServiceIsStopping = TRUE;  // c'est le service qui stoppe l'applet, pas l'utilisateur.
-		cairo_dock_unregister_module (cModuleName);  // stoppe le module (toutes les instances), ce qui appelle stop_module, qui emet le signal 'stop' vers l'applet distante (qui du coup quitte), et enleve le module de la table. l'objet distant n'est pas detruit, puisque de toute facon on vide toute la liste.
-		myData.bServiceIsStopping = FALSE;
-		
+		
+		// unregister the module, since anything can have changed, including its definition.
+		cairo_dock_unregister_module (cModuleName);  // stoppe le module (toutes les instances), ce qui appelle stop_module, qui emet le signal 'stop' vers l'applet distante (qui du coup quitte), et enleve le module de la table. L'objet distant est detruit durant le stop.
+		
+		// clean the dock from the remaining icon.
 		if (pIcon != NULL && pContainer != NULL)  // par contre les icones restent, mais ne sont plus des applets (elles ont perdu leur module). On fait donc le menage.
 		{
 			if (CAIRO_DOCK_IS_DOCK (pContainer))
 			{
-				cairo_dock_detach_icon_from_dock (pIcon, CAIRO_DOCK (pContainer), myIcons.iSeparateIcons);
+				cairo_dock_detach_icon_from_dock (pIcon, CAIRO_DOCK (pContainer), myIconsParam.iSeparateIcons);
 				cairo_dock_free_icon (pIcon);
 				cairo_dock_update_dock_size (CAIRO_DOCK (pContainer));
 				cairo_dock_redraw_container (pContainer);
 			}
 		}
 		
+		// now register again the updated module.
 		gchar *cThirdPartyPath = g_strdup_printf ("%s/%s", g_cCairoDockDataDir, CD_DBUS_APPLETS_FOLDER);
 		cd_dbus_register_module_in_dir (cModuleName, cThirdPartyPath);
 		g_free (cThirdPartyPath);
+		
+		// and activate it again.
+		pModule = cairo_dock_find_module_from_name (cModuleName);  // the module has been destroyed previously, so grab it again.
+		g_return_val_if_fail (pModule != NULL, TRUE);
+		cairo_dock_activate_module (pModule, NULL);
 	}
 	
-	/// get corresponding task ...
+	/// get corresponding task and free it...
 	//myData.pUpdateTasksList = g_list_remove (myData.pUpdateTasksList, pUpdateTask);
 	//cairo_dock_free_task (pUpdateTask);
 	return TRUE;
@@ -202,230 +313,155 @@
 		if (g_file_test (cUserDirPath, G_FILE_TEST_EXISTS))
 		{
 			cd_message ("*** the applet '%s' needs to be updated", cModuleName);
-			CairoDockTask *pUpdateTask = cairo_dock_new_task_full (0, (CairoDockGetDataAsyncFunc) _get_package_path, (CairoDockUpdateSyncFunc) _apply_package_update, (GFreeFunc) g_free, g_strdup (cModuleName));
+			CairoDockTask *pUpdateTask = cairo_dock_new_task_full (0,
+				(CairoDockGetDataAsyncFunc) _get_package_path,
+				(CairoDockUpdateSyncFunc) _apply_package_update,
+				(GFreeFunc) g_free,
+				g_strdup (cModuleName));
 			myData.pUpdateTasksList = g_list_prepend (myData.pUpdateTasksList, pUpdateTask);
 			cairo_dock_launch_task (pUpdateTask);
 		}
 	}
 }
-static void _on_got_list (GHashTable *pThemesTable, gpointer data)
+static void _on_got_list (GHashTable *pPackagesTable, gpointer data)
 {
-	if (pThemesTable != NULL)
+	if (pPackagesTable != NULL)
 	{
-		g_hash_table_foreach (pThemesTable, (GHFunc) _check_update_package, NULL);
+		g_hash_table_foreach (pPackagesTable, (GHFunc) _check_update_package, NULL);
 	}
-	cairo_dock_free_task (myData.pGetListTask);
+	cairo_dock_discard_task (myData.pGetListTask);
 	myData.pGetListTask = NULL;
 }
-static gboolean _cd_dbus_launch_third_party_applets (gpointer data)
+
+
+  ///////////////
+ /// SERVICE ///
+///////////////
+
+void cd_dbus_clean_up_processes (gboolean bAll)
 {
-	_cd_dbus_launch_third_party_applets_in_dir (MY_APPLET_SHARE_DATA_DIR);
-	
-	_cd_dbus_launch_third_party_applets_in_dir (g_cCairoDockDataDir);
-	return FALSE;
+	static gchar cFilePathBuffer[23+1];  // /proc/12345/cmdline + 4octets de marge.
+	static gchar cContent[512+1];
+	gboolean bIsRunning = FALSE;
+	
+	GError *erreur = NULL;
+	GDir *dir = g_dir_open ("/proc", 0, &erreur);
+	if (erreur != NULL)
+	{
+		cd_warning ("Dbus : %s", erreur->message);
+		g_error_free (erreur);
+		return;
+	}
+	
+	int iPid, iPPid;
+	gchar *str, *sp;
+	const gchar *cPid;
+	while ((cPid = g_dir_read_name (dir)) != NULL)
+	{
+		// get the command line that spawned the process.
+		if (! g_ascii_isdigit (*cPid))
+			continue;
+		
+		snprintf (cFilePathBuffer, 23, "/proc/%s/cmdline", cPid);
+		int pipe = open (cFilePathBuffer, O_RDONLY);
+		if (pipe <= 0)
+			continue ;
+		
+		int iNbBytesRead;
+		if ((iNbBytesRead = read (pipe, cContent, sizeof (cContent))) <= 1)  // ends with a nul char.
+		{
+			close (pipe);
+			continue;
+		}
+		close (pipe);
+		
+		// search for the pattern "... progname 123", where spaces are nul char.
+		const gchar *str = cContent + iNbBytesRead - 2;  // last non-nul char.
+		while (*str != '\0' && str != cContent)  // search the previous nul char.
+			str --;
+		if (str == cContent)  // not found
+			continue;
+		iPPid = atoi (str+1);
+		if (iPPid == 0)  // not a pid.
+			continue;
+		
+		str --;  // skip the nul char.
+		while (*str != '\0' && str != cContent)  // search the previous nul char.
+			str --;
+		if (str == cContent)  // not found
+			continue;
+		if (strcmp (str+1, myData.cProgName) != 0)  // not our program name.
+			continue;
+		
+		// found, kill the applet process.
+		gchar *cProcFile = g_strdup_printf ("/proc/%d", iPPid);
+		if (bAll || ! g_file_test (cProcFile, G_FILE_TEST_EXISTS))  // old process
+		{
+			g_print ("this applet (%s %s) is linked to an old gldi process (%d), kill it.\n", cContent, cPid, iPPid);
+			iPid = atoi (cPid);
+			kill (iPid, SIGTERM);
+		}
+	}
+	g_dir_close (dir);
 }
+
 void cd_dbus_launch_service (void)
 {
 	g_return_if_fail (myData.pMainObject == NULL);
 	g_type_init();
-	
-	// on cree l'objet distant principal.
 	cd_message ("dbus : launching service...");
+	
+	//\____________ define the base path on the bus. So each program built on gldi has its own path on the gldi bus, and will place its applets under its own path.
+	const gchar *cProgName = g_get_prgname ();
+	g_return_if_fail (cProgName != NULL);
+	int n = strlen (cProgName);
+	gchar *cName1 = g_new0 (gchar, n+1);
+	gchar *cName2 = g_new0 (gchar, n+1);
+	int i, k=0;
+	for (i = 0; i < n; i ++)
+	{
+		if (cProgName[i] == '-' || cProgName[i] == '_')
+			continue;
+		cName1[k] = g_ascii_tolower (cProgName[i]);
+		if (i == 0 || cProgName[i-1] == '-' || cProgName[i-1] == '_')
+			cName2[k] = g_ascii_toupper (cProgName[i]);
+		else
+			cName2[k] = cName1[k];
+		k ++;
+	}
+	myData.cProgName = cProgName;
+	myData.cBasePath = g_strdup_printf ("/org/%s/%s", cName1, cName2);
+	g_free (cName1);
+	g_free (cName2);
+	
+	//\____________ kill all the orphean applets (for instance if the dock has crashed, or if it was interrupted by a CTRL+C, or if it stopped and the applet was busy and didn't receive the stop event (dbus-timeout)).
+	cd_dbus_clean_up_processes (FALSE);  // FALSE <=> from old gldi instances
+	
+	//\____________ Register the service name (the service name is registerd once by the first gldi instance).
+	cairo_dock_register_service_name ("org.cairodock.CairoDock");  /// what happens if the gldi instance that had registered the name quits while a 2nd instance remains ? do we need to queue ?...
+	
+	//\____________ create the main object on the bus.
 	myData.pMainObject = g_object_new (cd_dbus_main_get_type(), NULL);  // appelle cd_dbus_main_class_init() et cd_dbus_main_init().
 	
-	// Register the service name
-	cairo_dock_register_service_name ("org.cairodock.CairoDock");
-	
-	// on lance les applets distantes.
-	g_idle_add ((GSourceFunc) _cd_dbus_launch_third_party_applets, NULL);  // on les lance avec un delai, car si l'applet DBus est lancee au demarrage du dock, on est dans la fonction cairo_dock_activate_modules_from_list(), et donc si on enregistre des applets pendant ce temps, le dock risque de recharger certaines des applets distantes (celles qui seront actives en conf et qui viendront apres DBus).
-	
-	// on telecharge en tache de fond la liste des applets.
+	//\____________ register the applets installed in the default folders.
+	_cd_dbus_register_all_applets_in_dir (MY_APPLET_SHARE_DATA_DIR);
+	
+	_cd_dbus_register_all_applets_in_dir (g_cCairoDockDataDir);
+	
+	//\____________ download in background the list of existing applets.
 	const gchar *cSharePackagesDir = NULL;  // MY_APPLET_SHARE_DATA_DIR"/"CD_DBUS_APPLETS_FOLDER;
 	gchar *cUserPackagesDir = g_strdup_printf ("%s/%s", g_cCairoDockDataDir, CD_DBUS_APPLETS_FOLDER);
 	gchar *cDistantPackagesDir = g_strdup_printf ("%s/%d.%d.%d", CD_DBUS_APPLETS_FOLDER, g_iMajorVersion, g_iMinorVersion, g_iMicroVersion);
-	myData.pGetListTask = cairo_dock_list_packages_async (cSharePackagesDir, cUserPackagesDir, cDistantPackagesDir, (CairoDockGetPackagesFunc) _on_got_list, NULL);
+	myData.pGetListTask = cairo_dock_list_packages_async (cSharePackagesDir, cUserPackagesDir, cDistantPackagesDir, (CairoDockGetPackagesFunc) _on_got_list, NULL, NULL);
 	g_free (cUserPackagesDir);
 	g_free (cDistantPackagesDir);
 }
 
-void cd_dbus_stop_service (void)
-{
-	// on abandonne les mises a jour.
-	cairo_dock_free_task (myData.pGetListTask);
-	myData.pGetListTask = NULL;
-	g_list_foreach (myData.pUpdateTasksList, (GFunc) cairo_dock_free_task, NULL);
-	g_list_free (myData.pUpdateTasksList);
-	myData.pUpdateTasksList = NULL;
-	
-	// on vire tous les modules distants.
-	myData.bServiceIsStopping = TRUE;  // on stoppe les applets distantes differemment suivant que c'est l'utilisateur qui la decoche ou pas.
-	dbusApplet *pDbusApplet;
-	Icon *pIcon;
-	CairoContainer *pContainer;
-	GList *a;
-	for (a = myData.pAppletList; a != NULL; a = a->next)
-	{
-		pDbusApplet = a->data;
-		pIcon = (pDbusApplet->pModuleInstance ? pDbusApplet->pModuleInstance->pIcon : NULL);
-		pContainer = (pDbusApplet->pModuleInstance ? pDbusApplet->pModuleInstance->pContainer : NULL);
-		
-		cairo_dock_unregister_module (pDbusApplet->cModuleName);  // stoppe le module (toutes les instances), ce qui appelle stop_module, qui emet le signal 'stop' vers l'applet distante (qui du coup quitte), et enleve le module de la table. l'objet distant n'est pas detruit, puisque de toute facon on vide toute la liste.
-		
-		if (pIcon != NULL && pContainer != NULL)  // par contre les icones restent, mais ne sont plus des applets (elles ont perdu leur module). On fait donc le menage.
-		{
-			if (CAIRO_DOCK_IS_DOCK (pContainer))
-			{
-				cairo_dock_detach_icon_from_dock (pIcon, CAIRO_DOCK (pContainer), myIcons.iSeparateIcons);
-				cairo_dock_free_icon (pIcon);
-				cairo_dock_update_dock_size (CAIRO_DOCK (pContainer));
-				cairo_dock_redraw_container (pContainer);
-			}
-		}
-		if (pDbusApplet->pSubApplet != NULL)
-			g_object_unref (pDbusApplet->pSubApplet);
-		g_object_unref (pDbusApplet);
-	}
-	g_list_free (myData.pAppletList);
-	myData.pAppletList = NULL;
-	
-	// on se desabonne de toutes les notifications.
-	cd_dbus_unregister_notifications ();
-	
-	// on vire le main object.
-	if (myData.pMainObject != NULL)
-		g_object_unref (myData.pMainObject);
-	myData.pMainObject = NULL;
-	myData.bServiceIsStopping = FALSE;
-}
-
-
-void cd_dbus_add_applet_to_startup (const gchar *cModuleName)
-{
-	if (! cd_dbus_applet_is_used (cModuleName))  // precaution pour eviter de le rajouter 2 fois.
-	{
-		gchar *str = myData.cActiveModules;
-		if (myData.cActiveModules)
-			myData.cActiveModules = g_strdup_printf ("%s;%s", myData.cActiveModules, cModuleName);
-		else
-			myData.cActiveModules = g_strdup (cModuleName);
-		g_free (str);
-		cairo_dock_update_conf_file (CD_APPLET_MY_CONF_FILE,
-			G_TYPE_STRING, "Configuration", "modules", myData.cActiveModules,
-			G_TYPE_INVALID);
-	}
-}
-static void _on_init_module (CairoDockModuleInstance *pModuleInstance, GKeyFile *pKeyFile)
-{
-	cd_debug ("%s (%d)", __func__, (int)pModuleInstance->pModule->fLastLoadingTime);
-	
-	//\_____________ On initialise l'icone.
-	cd_dbus_action_on_init_module (pModuleInstance);
-	
-	//\_____________ On se souvient qu'il faut lancer cette applet au demarrage.
-	cd_dbus_add_applet_to_startup (pModuleInstance->pModule->pVisitCard->cModuleName);
-	
-	//\_____________ On cree l'objet sur le bus.
-	dbusApplet *pDbusApplet = cd_dbus_get_dbus_applet_from_instance (pModuleInstance);
-	if (pDbusApplet == NULL)
-		pDbusApplet = cd_dbus_create_remote_applet_object (pModuleInstance);
-	g_return_if_fail (pDbusApplet != NULL);
-	
-	//\____________ On met a jour le fichier de conf si necessaire, c'est plus simple pour les applets.
-	if (pKeyFile != NULL)
-	{
-		if (cairo_dock_conf_file_needs_update (pKeyFile, pModuleInstance->pModule->pVisitCard->cModuleVersion))
-			cairo_dock_flush_conf_file (pKeyFile, pModuleInstance->cConfFilePath, pModuleInstance->pModule->pVisitCard->cShareDataDir, pModuleInstance->pModule->pVisitCard->cConfFileName);
-	}
-	
-	//\_____________ On (re)lance le script distant.
-	cd_dbus_launch_distant_applet_in_dir (pModuleInstance->pModule->pVisitCard->cModuleName, pModuleInstance->pModule->pVisitCard->cShareDataDir);
-}
-gboolean cd_dbus_register_new_module (const gchar *cModuleName, const gchar *cDescription, const gchar *cAuthor, const gchar *cVersion, gint iCategory, const gchar *cShareDataDir)
-{
-	if (! myConfig.bEnableNewModule)
-		return FALSE;
-	cd_message ("%s (%s)", __func__, cModuleName);
-	
-	//\____________ on cree et on enregistre un nouveau module s'il n'existe pas deja.
-	CairoDockModule *pModule = cairo_dock_find_module_from_name (cModuleName);
-	if (pModule != NULL)  // le module existe deja, rien a faire.
-	{
-		cd_warning ("this module (%s) is already registered", cModuleName);
-		if (pModule->cSoFilePath != NULL)
-		{
-			cd_warning ("an installed module already exists with this name (%s).", cModuleName);
-			return FALSE;
-		}
-	}
-	else  // on enregistre ce nouveau module.
-	{
-		pModule = g_new0 (CairoDockModule, 1);
-		CairoDockVisitCard *pVisitCard = g_new0 (CairoDockVisitCard, 1);
-		pModule->pVisitCard = pVisitCard;
-		pVisitCard->cModuleName = g_strdup (cModuleName);
-		pVisitCard->iMajorVersionNeeded = 2;
-		pVisitCard->iMinorVersionNeeded = 1;
-		pVisitCard->iMicroVersionNeeded = 1;
-		pVisitCard->cPreviewFilePath = cShareDataDir ? g_strdup_printf ("%s/preview", cShareDataDir) : NULL;
-		pVisitCard->cGettextDomain = g_strdup_printf ("cd-%s", cModuleName);
-		pVisitCard->cUserDataDir = g_strdup (cModuleName);
-		pVisitCard->cShareDataDir = g_strdup (cShareDataDir);
-		pVisitCard->cConfFileName = g_strdup_printf ("%s.conf", cModuleName);
-		pVisitCard->cModuleVersion = g_strdup (cVersion);
-		pVisitCard->cAuthor = g_strdup (cAuthor);
-		pVisitCard->iCategory = iCategory;
-		pVisitCard->cIconFilePath = cShareDataDir ? g_strdup_printf ("%s/icon", cShareDataDir) : NULL;
-		pVisitCard->iSizeOfConfig = 4;  // au cas ou ...
-		pVisitCard->iSizeOfData = 4;  // au cas ou ...
-		pVisitCard->cDescription = g_strdup (cDescription);
-		pVisitCard->cTitle = g_strdup (dgettext (pVisitCard->cGettextDomain, cModuleName));
-		pVisitCard->iContainerType = CAIRO_DOCK_MODULE_CAN_DOCK | CAIRO_DOCK_MODULE_CAN_DESKLET;
-		//pVisitCard->bMultiInstance = TRUE;
-		pModule->pInterface = g_new0 (CairoDockModuleInterface, 1);
-		pModule->pInterface->initModule = _on_init_module;
-		pModule->pInterface->stopModule = cd_dbus_emit_on_stop_module;
-		pModule->pInterface->reloadModule = cd_dbus_emit_on_reload_module;
-		if (! cairo_dock_register_module (pModule))
-		{
-			cairo_dock_free_module (pModule);
-			cd_warning ("registration of '%s' has failed.", cModuleName);
-			return FALSE;
-		}
-	}
-	
-	//\____________ si l'applet n'est pas activee en conf, on en reste la.
-	gboolean bAppletIsUsed = cd_dbus_applet_is_used (cModuleName);
-	if (! bAppletIsUsed)
-	{
-		cd_debug ("applet %s has been registered, but is not wanted by the user.", cModuleName);
-		return TRUE;
-	}
-	
-	//\____________ sinon on active le module.
-	GError *tmp_erreur = NULL;
-	cairo_dock_activate_module (pModule, &tmp_erreur);
-	if (tmp_erreur != NULL)
-	{
-		cd_warning (tmp_erreur->message);
-		g_error_free (tmp_erreur);
-		return FALSE;
-	}
-	
-	CairoDockModuleInstance *pInstance = pModule->pInstancesList->data;
-	g_return_val_if_fail (pModule->pInstancesList != NULL, FALSE);
-	if (pInstance->pDock)  // la fonction cairo_dock_activate_module() ne fait pas ca.
-	{
-		cairo_dock_update_dock_size (pInstance->pDock);
-		cairo_dock_redraw_container (pInstance->pContainer);
-	}
-	
-	cd_debug ("applet has been successfully instanciated");
-	return TRUE;
-}
 
   ///////////////////
- /// Marshallers ///
+ /// MARSHALLERS ///
 ///////////////////
+// must be in this file, otherwise we get include hell because of the generated code in *-spec.h
 
 void cd_dbus_marshal_VOID__INT_STRING (GClosure *closure,
 	GValue *return_value G_GNUC_UNUSED,
@@ -434,7 +470,7 @@
 	gpointer invocation_hint G_GNUC_UNUSED,
 	gpointer marshal_data)
 {
-	g_print ("%s ()\n", __func__);
+	//g_print ("%s ()\n", __func__);
 	typedef void (*GMarshalFunc_VOID__INT_STRING) (gpointer     data1,
 												gint        arg_1,
 												gchar 	   *arg_2,
@@ -468,7 +504,7 @@
 	gpointer invocation_hint G_GNUC_UNUSED,
 	gpointer marshal_data)
 {
-	g_print ("%s ()\n", __func__);
+	//g_print ("%s ()\n", __func__);
 	typedef void (*GMarshalFunc_VOID__BOOLEAN_STRING) (gpointer     data1,
 												gboolean    arg_1,
 												gchar 	   *arg_2,
@@ -502,7 +538,7 @@
 	gpointer invocation_hint G_GNUC_UNUSED,
 	gpointer marshal_data)
 {
-	g_print ("%s ()\n", __func__);
+	//g_print ("%s ()\n", __func__);
 	typedef void (*GMarshalFunc_VOID__STRING_STRING) (gpointer     data1,
 												gchar      *arg_1,
 												gchar 	   *arg_2,
@@ -536,7 +572,7 @@
 	gpointer invocation_hint G_GNUC_UNUSED,
 	gpointer marshal_data)
 {
-	g_print ("%s ()\n", __func__);
+	//g_print ("%s ()\n", __func__);
 	typedef void (*GMarshalFunc_VOID__VALUE) (gpointer     data1,
 												GValue     *arg_1,
 												gpointer     data2);
@@ -568,7 +604,7 @@
 	gpointer invocation_hint G_GNUC_UNUSED,
 	gpointer marshal_data)
 {
-	g_print ("%s ()\n", __func__);
+	//g_print ("%s ()\n", __func__);
 	typedef void (*GMarshalFunc_VOID__INT_VALUE) (gpointer     data1,
 												gint 		arg_1,
 												GValue     *arg_2,
@@ -602,7 +638,7 @@
 	gpointer invocation_hint G_GNUC_UNUSED,
 	gpointer marshal_data)
 {
-	g_print ("%s ()\n", __func__);
+	//g_print ("%s ()\n", __func__);
 	typedef void (*GMarshalFunc_VOID__VALUE_STRING) (gpointer     data1,
 												GValue     *arg_1,
 												gchar 	   *arg_2,

=== modified file 'Dbus/src/applet-dbus.h' (properties changed: +x to -x)
--- Dbus/src/applet-dbus.h	2010-08-07 01:43:25 +0000
+++ Dbus/src/applet-dbus.h	2011-02-23 23:29:29 +0000
@@ -17,7 +17,6 @@
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-
 #ifndef __APPLET_DBUS__
 #define  __APPLET_DBUS__
 
@@ -25,18 +24,13 @@
 #include "applet-struct.h"
 
 
+void cd_dbus_clean_up_processes (gboolean bAll);
+
 void cd_dbus_launch_service (void);
 
-void cd_dbus_stop_service (void);
-
-void cd_dbus_add_applet_to_startup (const gchar *cModuleName);
 
 gboolean cd_dbus_register_module_in_dir (const gchar *cModuleName, const gchar *cThirdPartyPath);
 
-gboolean cd_dbus_register_new_module (const gchar *cModuleName, const gchar *cDescription, const gchar *cAuthor, const gchar *cVersion, gint iCategory, const gchar *cShareDataDir);
-
-
-// Marshallers //
 
 void cd_dbus_marshal_VOID__INT_STRING (GClosure *closure,
 	GValue *return_value,

=== modified file 'Dbus/src/applet-init.c' (properties changed: +x to -x)
--- Dbus/src/applet-init.c	2010-08-07 01:43:25 +0000
+++ Dbus/src/applet-init.c	2011-02-23 23:29:29 +0000
@@ -25,14 +25,20 @@
 #include "interface-applet-signals.h"
 #include "applet-init.h"
 
+static AppletData s_myDataCopy;
+
+static void cd_dbus_save_my_data (CairoDockModuleInstance *myApplet);
+
 
 CD_APPLET_DEFINE_BEGIN ("Dbus",
-	2, 0, 9,
+	2, 2, 1,
 	CAIRO_DOCK_CATEGORY_APPLET_SYSTEM,
 	N_("This plug-in lets extern applications interact on the dock.\n"
 	"The communication between both sides is based on Dbus"),
 	"Necropotame & Fabounet")
-	CD_APPLET_DEFINE_COMMON_APPLET_INTERFACE
+	pInterface->initModule = CD_APPLET_INIT_FUNC;  // no stop method -> the plug-in will be auto-loaded.
+	pInterface->read_conf_file = CD_APPLET_READ_CONFIG_FUNC;  /// inutile je pense...
+	pInterface->reset_data = cd_dbus_save_my_data;
 	CD_APPLET_REDEFINE_TITLE ("DBus");
 	CD_APPLET_SET_CONTAINER_TYPE (CAIRO_DOCK_MODULE_IS_PLUGIN);
 CD_APPLET_DEFINE_END
@@ -40,26 +46,26 @@
 
 //\___________ Here is where you initiate your applet. myConfig is already set at this point, and also myIcon, myContainer, myDock, myDesklet (and myDrawContext if you're in dock mode). The macro CD_APPLET_MY_CONF_FILE and CD_APPLET_MY_KEY_FILE can give you access to the applet's conf-file and its corresponding key-file (also available during reload). If you're in desklet mode, myDrawContext is still NULL, and myIcon's buffers has not been filled, because you may not need them then (idem when reloading).
 CD_APPLET_INIT_BEGIN
-	cd_dbus_launch_service ();
-	cairo_dock_register_notification (CAIRO_DOCK_DROP_DATA,
-		(CairoDockNotificationFunc) cd_dbus_applet_emit_on_drop_data,
-		CAIRO_DOCK_RUN_FIRST,
-		NULL);  // on enregistre cette notification ici car elle gere le drop d'applets.
+	static gboolean s_bInitialized = FALSE;
+	if (!s_bInitialized)  // since the service lives on the bus, only launch it once.
+	{
+		s_bInitialized = TRUE;
+		cd_dbus_launch_service ();
+		cairo_dock_register_notification_on_object (&myContainersMgr,
+			NOTIFICATION_DROP_DATA,
+			(CairoDockNotificationFunc) cd_dbus_applet_emit_on_drop_data,
+			CAIRO_DOCK_RUN_FIRST,
+			NULL);  // to register new applets by dropping a package on the dock.
+	}
+	else
+	{
+		memcpy (myDataPtr, &s_myDataCopy, sizeof (AppletData));
+		cd_dbus_clean_up_processes (TRUE);  // TRUE <=> including applets spawned from our process.
+	}
 CD_APPLET_INIT_END
 
 
-//\___________ Here is where you stop your applet. myConfig and myData are still valid, but will be reseted to 0 at the end of the function. In the end, your applet will go back to its original state, as if it had never been activated.
-CD_APPLET_STOP_BEGIN
-	cairo_dock_remove_notification_func (CAIRO_DOCK_DROP_DATA,
-		(CairoDockNotificationFunc) cd_dbus_applet_emit_on_drop_data,
-		NULL);
-	if (myData.iSidRemoveAppletFromConf != 0)
-		g_source_remove (myData.iSidRemoveAppletFromConf);
-	cd_dbus_stop_service ();
-CD_APPLET_STOP_END
-
-
-//\___________ The reload occurs in 2 occasions : when the user changes the applet's config, and when the user reload the cairo-dock's config or modify the desklet's size. The macro CD_APPLET_MY_CONFIG_CHANGED can tell you this. myConfig has already been reloaded at this point if you're in the first case, myData is untouched. You also have the macro CD_APPLET_MY_CONTAINER_TYPE_CHANGED that can tell you if you switched from dock/desklet to desklet/dock mode.
-CD_APPLET_RELOAD_BEGIN
-	
-CD_APPLET_RELOAD_END
+static void cd_dbus_save_my_data (CairoDockModuleInstance *myApplet)
+{
+	memcpy (&s_myDataCopy, myDataPtr, sizeof (AppletData));
+}

=== modified file 'Dbus/src/applet-init.h' (properties changed: +x to -x)
=== added file 'Dbus/src/applet-marshallers.c'
--- Dbus/src/applet-marshallers.c	1970-01-01 00:00:00 +0000
+++ Dbus/src/applet-marshallers.c	2011-02-23 23:29:29 +0000
@@ -0,0 +1,230 @@
+/**
+* This file is a part of the Cairo-Dock project
+*
+* Copyright : (C) see the 'copyright' file.
+* E-mail    : see the 'copyright' file.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 3
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* You should have received a copy of the GNU General Public License
+* along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <unistd.h>
+#include <glib.h>
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus-glib-bindings.h>
+
+#include "interface-main-methods.h"
+#include "dbus-main-spec.h"
+#include "applet-marshallers.h"
+
+void cd_dbus_marshal_VOID__INT_STRING (GClosure *closure,
+	GValue *return_value G_GNUC_UNUSED,
+	guint n_param_values,
+	const GValue *param_values,
+	gpointer invocation_hint G_GNUC_UNUSED,
+	gpointer marshal_data)
+{
+	//g_print ("%s ()\n", __func__);
+	typedef void (*GMarshalFunc_VOID__INT_STRING) (gpointer     data1,
+												gint        arg_1,
+												gchar 	   *arg_2,
+												gpointer     data2);
+	register GMarshalFunc_VOID__INT_STRING callback;
+	register GCClosure *cc = (GCClosure*) closure;
+	register gpointer data1, data2;
+	g_return_if_fail (n_param_values == 3);  // return_value est NULL ici, car la callback ne renvoit rien.
+
+	if (G_CCLOSURE_SWAP_DATA (closure))
+	{
+		data1 = closure->data;
+		data2 = g_value_peek_pointer (param_values + 0);
+	}
+	else
+	{
+		data1 = g_value_peek_pointer (param_values + 0);
+		data2 = closure->data;
+	}
+	callback = (GMarshalFunc_VOID__INT_STRING) (marshal_data ? marshal_data : cc->callback);
+
+	callback (data1,
+		g_marshal_value_peek_int (param_values + 1),
+		g_marshal_value_peek_string (param_values + 2),
+		data2);
+}
+void cd_dbus_marshal_VOID__BOOLEAN_STRING (GClosure *closure,
+	GValue *return_value G_GNUC_UNUSED,
+	guint n_param_values,
+	const GValue *param_values,
+	gpointer invocation_hint G_GNUC_UNUSED,
+	gpointer marshal_data)
+{
+	//g_print ("%s ()\n", __func__);
+	typedef void (*GMarshalFunc_VOID__BOOLEAN_STRING) (gpointer     data1,
+												gboolean    arg_1,
+												gchar 	   *arg_2,
+												gpointer     data2);
+	register GMarshalFunc_VOID__BOOLEAN_STRING callback;
+	register GCClosure *cc = (GCClosure*) closure;
+	register gpointer data1, data2;
+	g_return_if_fail (n_param_values == 3);  // return_value est NULL ici, car la callback ne renvoit rien.
+
+	if (G_CCLOSURE_SWAP_DATA (closure))
+	{
+		data1 = closure->data;
+		data2 = g_value_peek_pointer (param_values + 0);
+	}
+	else
+	{
+		data1 = g_value_peek_pointer (param_values + 0);
+		data2 = closure->data;
+	}
+	callback = (GMarshalFunc_VOID__BOOLEAN_STRING) (marshal_data ? marshal_data : cc->callback);
+
+	callback (data1,
+		g_marshal_value_peek_boolean (param_values + 1),
+		g_marshal_value_peek_string (param_values + 2),
+		data2);
+}
+void cd_dbus_marshal_VOID__STRING_STRING (GClosure *closure,
+	GValue *return_value G_GNUC_UNUSED,
+	guint n_param_values,
+	const GValue *param_values,
+	gpointer invocation_hint G_GNUC_UNUSED,
+	gpointer marshal_data)
+{
+	//g_print ("%s ()\n", __func__);
+	typedef void (*GMarshalFunc_VOID__STRING_STRING) (gpointer     data1,
+												gchar      *arg_1,
+												gchar 	   *arg_2,
+												gpointer     data2);
+	register GMarshalFunc_VOID__STRING_STRING callback;
+	register GCClosure *cc = (GCClosure*) closure;
+	register gpointer data1, data2;
+	g_return_if_fail (n_param_values == 3);  // return_value est NULL ici, car la callback ne renvoit rien.
+
+	if (G_CCLOSURE_SWAP_DATA (closure))
+	{
+		data1 = closure->data;
+		data2 = g_value_peek_pointer (param_values + 0);
+	}
+	else
+	{
+		data1 = g_value_peek_pointer (param_values + 0);
+		data2 = closure->data;
+	}
+	callback = (GMarshalFunc_VOID__STRING_STRING) (marshal_data ? marshal_data : cc->callback);
+
+	callback (data1,
+		g_marshal_value_peek_string (param_values + 1),
+		g_marshal_value_peek_string (param_values + 2),
+		data2);
+}
+void cd_dbus_marshal_VOID__VALUE (GClosure *closure,
+	GValue *return_value G_GNUC_UNUSED,
+	guint n_param_values,
+	const GValue *param_values,
+	gpointer invocation_hint G_GNUC_UNUSED,
+	gpointer marshal_data)
+{
+	//g_print ("%s ()\n", __func__);
+	typedef void (*GMarshalFunc_VOID__VALUE) (gpointer     data1,
+												GValue     *arg_1,
+												gpointer     data2);
+	register GMarshalFunc_VOID__VALUE callback;
+	register GCClosure *cc = (GCClosure*) closure;
+	register gpointer data1, data2;
+	g_return_if_fail (n_param_values == 2);  // return_value est NULL ici, car la callback ne renvoit rien.
+
+	if (G_CCLOSURE_SWAP_DATA (closure))
+	{
+		data1 = closure->data;
+		data2 = g_value_peek_pointer (param_values + 0);
+	}
+	else
+	{
+		data1 = g_value_peek_pointer (param_values + 0);
+		data2 = closure->data;
+	}
+	callback = (GMarshalFunc_VOID__VALUE) (marshal_data ? marshal_data : cc->callback);
+
+	callback (data1,
+		g_marshal_value_peek_pointer (param_values + 1),
+		data2);
+}
+void cd_dbus_marshal_VOID__INT_VALUE (GClosure *closure,
+	GValue *return_value G_GNUC_UNUSED,
+	guint n_param_values,
+	const GValue *param_values,
+	gpointer invocation_hint G_GNUC_UNUSED,
+	gpointer marshal_data)
+{
+	//g_print ("%s ()\n", __func__);
+	typedef void (*GMarshalFunc_VOID__INT_VALUE) (gpointer     data1,
+												gint 		arg_1,
+												GValue     *arg_2,
+												gpointer     data2);
+	register GMarshalFunc_VOID__INT_VALUE callback;
+	register GCClosure *cc = (GCClosure*) closure;
+	register gpointer data1, data2;
+	g_return_if_fail (n_param_values == 3);  // return_value est NULL ici, car la callback ne renvoit rien.
+
+	if (G_CCLOSURE_SWAP_DATA (closure))
+	{
+		data1 = closure->data;
+		data2 = g_value_peek_pointer (param_values + 0);
+	}
+	else
+	{
+		data1 = g_value_peek_pointer (param_values + 0);
+		data2 = closure->data;
+	}
+	callback = (GMarshalFunc_VOID__INT_VALUE) (marshal_data ? marshal_data : cc->callback);
+
+	callback (data1,
+		g_marshal_value_peek_int (param_values + 1),
+		g_marshal_value_peek_pointer (param_values + 2),
+		data2);
+}
+void cd_dbus_marshal_VOID__VALUE_STRING (GClosure *closure,
+	GValue *return_value G_GNUC_UNUSED,
+	guint n_param_values,
+	const GValue *param_values,
+	gpointer invocation_hint G_GNUC_UNUSED,
+	gpointer marshal_data)
+{
+	//g_print ("%s ()\n", __func__);
+	typedef void (*GMarshalFunc_VOID__VALUE_STRING) (gpointer     data1,
+												GValue     *arg_1,
+												gchar 	   *arg_2,
+												gpointer     data2);
+	register GMarshalFunc_VOID__VALUE_STRING callback;
+	register GCClosure *cc = (GCClosure*) closure;
+	register gpointer data1, data2;
+	g_return_if_fail (n_param_values == 3);  // return_value est NULL ici, car la callback ne renvoit rien.
+
+	if (G_CCLOSURE_SWAP_DATA (closure))
+	{
+		data1 = closure->data;
+		data2 = g_value_peek_pointer (param_values + 0);
+	}
+	else
+	{
+		data1 = g_value_peek_pointer (param_values + 0);
+		data2 = closure->data;
+	}
+	callback = (GMarshalFunc_VOID__VALUE_STRING) (marshal_data ? marshal_data : cc->callback);
+
+	callback (data1,
+		g_marshal_value_peek_pointer (param_values + 1),
+		g_marshal_value_peek_string (param_values + 2),
+		data2);
+}

=== added file 'Dbus/src/applet-marshallers.h'
--- Dbus/src/applet-marshallers.h	1970-01-01 00:00:00 +0000
+++ Dbus/src/applet-marshallers.h	2011-02-23 23:29:29 +0000
@@ -0,0 +1,72 @@
+/**
+* This file is a part of the Cairo-Dock project
+*
+* Copyright : (C) see the 'copyright' file.
+* E-mail    : see the 'copyright' file.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 3
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* You should have received a copy of the GNU General Public License
+* along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef __APPLET_MARSHALLERS__
+#define  __APPLET_MARSHALLERS__
+
+#include <cairo-dock.h>
+
+void cd_dbus_marshal_VOID__INT_STRING (GClosure *closure,
+	GValue *return_value,
+	guint n_param_values,
+	const GValue *param_values,
+	gpointer invocation_hint,
+	gpointer marshal_data);
+
+void cd_dbus_marshal_VOID__BOOLEAN_STRING (GClosure *closure,
+	GValue *return_value,
+	guint n_param_values,
+	const GValue *param_values,
+	gpointer invocation_hint,
+	gpointer marshal_data);
+
+void cd_dbus_marshal_VOID__STRING_STRING (GClosure *closure,
+	GValue *return_value,
+	guint n_param_values,
+	const GValue *param_values,
+	gpointer invocation_hint,
+	gpointer marshal_data);
+
+void cd_dbus_marshal_VOID__VALUE (GClosure *closure,
+	GValue *return_value,
+	guint n_param_values,
+	const GValue *param_values,
+	gpointer invocation_hint,
+	gpointer marshal_data);
+
+void cd_dbus_marshal_VOID__INT_VALUE (GClosure *closure,
+	GValue *return_value,
+	guint n_param_values,
+	const GValue *param_values,
+	gpointer invocation_hint,
+	gpointer marshal_data);
+
+void cd_dbus_marshal_VOID__VALUE_STRING (GClosure *closure,
+	GValue *return_value,
+	guint n_param_values,
+	const GValue *param_values,
+	gpointer invocation_hint,
+	gpointer marshal_data);
+
+#define cd_dbus_marshal_VOID__INT g_cclosure_marshal_VOID__INT
+#define cd_dbus_marshal_VOID__BOOLEAN g_cclosure_marshal_VOID__BOOLEAN
+#define cd_dbus_marshal_VOID__STRING g_cclosure_marshal_VOID__STRING
+#define cd_dbus_marshal_VOID__VOID g_cclosure_marshal_VOID__VOID
+
+#endif

=== modified file 'Dbus/src/applet-struct.h' (properties changed: +x to -x)
--- Dbus/src/applet-struct.h	2010-08-07 01:43:25 +0000
+++ Dbus/src/applet-struct.h	2011-02-23 23:29:29 +0000
@@ -63,6 +63,8 @@
 	DBusGProxy *proxy;
 	CairoDockModuleInstance *pModuleInstance;
 	gchar *cModuleName;
+	gint id;
+	gchar *cBusPath;
 	dbusSubApplet *pSubApplet;
 	CairoDialog *pDialog;
 	GList *pShortkeyList;
@@ -101,17 +103,14 @@
 //\___________ structure containing the applet's data, like surfaces, dialogs, results of calculus, etc.
 struct _AppletData {
 	dbusMainObject *pMainObject;
+	const gchar *cProgName;
+	gchar *cBasePath;
 	GList *pAppletList;
 	GtkWidget *pModuleSubMenu;
 	GtkWidget *pModuleMainMenu;
-	Icon *pCurrentMenuIcon;
 	dbusApplet *pCurrentMenuDbusApplet;
-	gchar *cActiveModules;
-	gboolean bServiceIsStopping;
-	guint iSidRemoveAppletFromConf;
 	Window xActiveWindow;
 	CairoDockTask *pGetListTask;
-	GHashTable *pThemesTable;
 	GList *pUpdateTasksList;
 	} ;
 

=== modified file 'Dbus/src/dbus-applet-spec.h' (properties changed: +x to -x)
--- Dbus/src/dbus-applet-spec.h	2010-08-07 01:43:25 +0000
+++ Dbus/src/dbus-applet-spec.h	2011-02-23 23:29:29 +0000
@@ -27,6 +27,7 @@
 #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
 #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
 #define g_marshal_value_peek_object(v)   g_value_get_object (v)
+#define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
 #else /* !G_ENABLE_DEBUG */
 /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
  *          Do not access GValues directly in your code. Instead, use the
@@ -50,6 +51,7 @@
 #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
 #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
 #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
+#define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
 #endif /* !G_ENABLE_DEBUG */
 
 
@@ -616,8 +618,7 @@
   { (GCallback) cd_dbus_applet_bind_shortkey, dbus_glib_marshal_cd_dbus_applet_BOOLEAN__BOXED_POINTER, 1298 },
 };
 
-const DBusGObjectInfo dbus_glib_cd_dbus_applet_object_info = {
-  0,
+const DBusGObjectInfo dbus_glib_cd_dbus_applet_object_info = {  1,
   dbus_glib_cd_dbus_applet_methods,
   20,
 "org.cairodock.CairoDock.applet\0Get\0S\0cProperty\0I\0s\0value\0O\0F\0N\0v\0\0org.cairodock.CairoDock.applet\0GetAll\0S\0hProperties\0O\0F\0N\0a{sv}\0\0org.cairodock.CairoDock.applet\0SetQuickInfo\0S\0cQuickInfo\0I\0s\0\0org.cairodock.CairoDock.applet\0SetLabel\0S\0cLabel\0I\0s\0\0org.cairodock.CairoDock.applet\0SetIcon\0S\0cImage\0I\0s\0\0org.cairodock.CairoDock.applet\0SetEmblem\0S\0cImage\0I\0s\0iPosition\0I\0i\0\0org.cairodock.CairoDock.applet\0Animate\0S\0cAnimation\0I\0s\0iNbRounds\0I\0i\0\0org.cairodock.CairoDock.applet\0DemandsAttention\0S\0bStart\0I\0b\0cAnimation\0I\0s\0\0org.cairodock.CairoDock.applet\0ShowDialog\0S\0cMessage\0I\0s\0iDuration\0I\0i\0\0org.cairodock.CairoDock.applet\0AskQuestion\0S\0cMessage\0I\0s\0\0org.cairodock.CairoDock.applet\0AskValue\0S\0cMessage\0I\0s\0fInitialValue\0I\0d\0fMaxlValue\0I\0d\0\0org.cairodock.CairoDock.applet\0AskText\0S\0cMessage\0I\0s\0cInitialText\0I\0s\0\0org.cairodock.CairoDock.applet\0PopupDialog\0S\0hDialogAttributes\0I\0a{sv}\0hWidgetAttributes\0I\0a{sv}\0\0org.cairodock.CairoDock.applet\0AddDataRenderer\0S\0cType\0I\0s\0iNbValues\0I\0i\0cTheme\0I\0s\0\0org.cairodock.CairoDock.applet\0RenderValues\0S\0pValues\0I\0ad\0\0org.cairodock.CairoDock.applet\0ControlAppli\0S\0cApplicationClass\0I\0s\0\0org.cairodock.CairoDock.applet\0ShowAppli\0S\0bShow\0I\0b\0\0org.cairodock.CairoDock.applet\0PopulateMenu\0S\0pLabels\0I\0as\0\0org.cairodock.CairoDock.applet\0AddMenuItems\0S\0pItems\0I\0aa{sv}\0\0org.cairodock.CairoDock.applet\0BindShortkey\0S\0cShortkeys\0I\0as\0\0\0",

=== modified file 'Dbus/src/dbus-main-spec.h' (properties changed: +x to -x)
--- Dbus/src/dbus-main-spec.h	2010-04-21 10:50:32 +0000
+++ Dbus/src/dbus-main-spec.h	2011-02-23 23:29:29 +0000
@@ -27,6 +27,7 @@
 #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
 #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
 #define g_marshal_value_peek_object(v)   g_value_get_object (v)
+#define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
 #else /* !G_ENABLE_DEBUG */
 /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
  *          Do not access GValues directly in your code. Instead, use the
@@ -50,6 +51,7 @@
 #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
 #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
 #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
+#define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
 #endif /* !G_ENABLE_DEBUG */
 
 
@@ -373,8 +375,7 @@
   { (GCallback) cd_dbus_main_show_dialog, dbus_glib_marshal_cd_dbus_main_BOOLEAN__STRING_INT_STRING_STRING_STRING_POINTER, 1097 },
 };
 
-const DBusGObjectInfo dbus_glib_cd_dbus_main_object_info = {
-  0,
+const DBusGObjectInfo dbus_glib_cd_dbus_main_object_info = {  1,
   dbus_glib_cd_dbus_main_methods,
   16,
 "org.cairodock.CairoDock\0Reboot\0S\0\0org.cairodock.CairoDock\0Quit\0S\0\0org.cairodock.CairoDock\0ShowDesklet\0S\0widgetLayer\0I\0b\0\0org.cairodock.CairoDock\0ReloadModule\0S\0cModuleName\0I\0s\0\0org.cairodock.CairoDock\0ActivateModule\0S\0cModuleName\0I\0s\0bActivate\0I\0b\0\0org.cairodock.CairoDock\0ShowDock\0S\0show\0I\0b\0\0org.cairodock.CairoDock\0CreateLauncherFromScratch\0S\0cIconFile\0I\0s\0cLabel\0I\0s\0cCommand\0I\0s\0cParentDockName\0I\0s\0\0org.cairodock.CairoDock\0LoadLauncherFromFile\0S\0cDesktopFile\0I\0s\0\0org.cairodock.CairoDock\0ReloadLauncher\0S\0cDesktopFile\0I\0s\0\0org.cairodock.CairoDock\0RemoveLauncher\0S\0cDesktopFile\0I\0s\0\0org.cairodock.CairoDock\0SetQuickInfo\0S\0cQuickInfo\0I\0s\0cIconName\0I\0s\0cIconCommand\0I\0s\0cModuleName\0I\0s\0\0org.cairodock.CairoDock\0SetLabel\0S\0cLabel\0I\0s\0cIconName\0I\0s\0cIconCommand\0I\0s\0cModuleName\0I\0s\0\0org.cairodock.CairoDock\0SetIcon\0S\0cImage\0I\0s\0cIconName\0I\0s\0cIconCommand\0I\0s\0cModuleName\0I\0s\0\0org.cairodock.CairoDock\0SetEmblem\0S\0cImage\0I\0s\0iPosition\0I\0i\0cIconName\0I\0s\0cIconCommand\0I\0s\0cModuleName\0I\0s\0\0org.cairodock.CairoDock\0Animate\0S\0cAnimation\0I\0s\0iNbRounds\0I\0i\0cIconName\0I\0s\0cIconCommand\0I\0s\0cModuleName\0I\0s\0\0org.cairodock.CairoDock\0ShowDialog\0S\0message\0I\0s\0iDuration\0I\0i\0cIconName\0I\0s\0cIconCommand\0I\0s\0cModuleName\0I\0s\0\0\0",

=== modified file 'Dbus/src/dbus-sub-applet-spec.h' (properties changed: +x to -x)
--- Dbus/src/dbus-sub-applet-spec.h	2010-04-21 10:50:32 +0000
+++ Dbus/src/dbus-sub-applet-spec.h	2011-02-23 23:29:29 +0000
@@ -27,6 +27,7 @@
 #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
 #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
 #define g_marshal_value_peek_object(v)   g_value_get_object (v)
+#define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
 #else /* !G_ENABLE_DEBUG */
 /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
  *          Do not access GValues directly in your code. Instead, use the
@@ -50,6 +51,7 @@
 #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
 #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
 #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
+#define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
 #endif /* !G_ENABLE_DEBUG */
 
 
@@ -370,12 +372,11 @@
   { (GCallback) cd_dbus_sub_applet_remove_sub_icon, dbus_glib_marshal_cd_dbus_sub_applet_BOOLEAN__STRING_POINTER, 801 },
 };
 
-const DBusGObjectInfo dbus_glib_cd_dbus_sub_applet_object_info = {
-  0,
+const DBusGObjectInfo dbus_glib_cd_dbus_sub_applet_object_info = {  1,
   dbus_glib_cd_dbus_sub_applet_methods,
   11,
 "org.cairodock.CairoDock.subapplet\0SetQuickInfo\0S\0cQuickInfo\0I\0s\0cIconID\0I\0s\0\0org.cairodock.CairoDock.subapplet\0SetLabel\0S\0cLabel\0I\0s\0cIconID\0I\0s\0\0org.cairodock.CairoDock.subapplet\0SetIcon\0S\0cImage\0I\0s\0cIconID\0I\0s\0\0org.cairodock.CairoDock.subapplet\0SetEmblem\0S\0cImage\0I\0s\0iPosition\0I\0i\0cIconID\0I\0s\0\0org.cairodock.CairoDock.subapplet\0Animate\0S\0cAnimation\0I\0s\0iNbRounds\0I\0i\0cIconID\0I\0s\0\0org.cairodock.CairoDock.subapplet\0ShowDialog\0S\0message\0I\0s\0iDuration\0I\0i\0cIconID\0I\0s\0\0org.cairodock.CairoDock.subapplet\0AskQuestion\0S\0cMessage\0I\0s\0cIconID\0I\0s\0\0org.cairodock.CairoDock.subapplet\0AskValue\0S\0cMessage\0I\0s\0fInitialValue\0I\0d\0fMaxlValue\0I\0d\0cIconID\0I\0s\0\0org.cairodock.CairoDock.subapplet\0AskText\0S\0cMessage\0I\0s\0cInitialText\0I\0s\0cIconID\0I\0s\0\0org.cairodock.CairoDock.subapplet\0AddSubIcons\0S\0pIconFields\0I\0as\0\0org.cairodock.CairoDock.subapplet\0RemoveSubIcon\0S\0cIconID\0I\0s\0\0\0",
-"org.cairodock.CairoDock.subapplet\0on_click_sub_icon\0org.cairodock.CairoDock.subapplet\0on_middle_click_sub_icon\0org.cairodock.CairoDock.subapplet\0on_scroll_sub_icon\0org.cairodock.CairoDock.subapplet\0on_build_menu_sub_icon\0org.cairodock.CairoDock.subapplet\0on_menu_select_sub_icon\0org.cairodock.CairoDock.subapplet\0on_drop_data_sub_icon\0org.cairodock.CairoDock.subapplet\0on_answer_sub_icon\0\0",
+"org.cairodock.CairoDock.subapplet\0on_click_sub_icon\0org.cairodock.CairoDock.subapplet\0on_middle_click_sub_icon\0org.cairodock.CairoDock.subapplet\0on_scroll_sub_icon\0org.cairodock.CairoDock.subapplet\0on_build_menu_sub_icon\0org.cairodock.CairoDock.subapplet\0on_drop_data_sub_icon\0\0",
 "\0"
 };
 

=== modified file 'Dbus/src/dbus_applet_introspectable.xml' (properties changed: +x to -x)
=== modified file 'Dbus/src/dbus_introspectable.xml' (properties changed: +x to -x)
=== modified file 'Dbus/src/dbus_sub_applet_introspectable.xml' (properties changed: +x to -x)
--- Dbus/src/dbus_sub_applet_introspectable.xml	2010-08-07 01:43:25 +0000
+++ Dbus/src/dbus_sub_applet_introspectable.xml	2011-02-23 23:29:29 +0000
@@ -66,17 +66,9 @@
 		<signal name="on_build_menu_sub_icon">
 			<arg name="cIconID" type="s"/>
 		</signal>
-		<signal name="on_menu_select_sub_icon">
-			<arg name="iNumEntry" type="i"/>
-			<arg name="cIconID" type="s"/>
-		</signal>
 		<signal name="on_drop_data_sub_icon">
 			<arg name="cReceivedData" type="s"/>
 			<arg name="cIconID" type="s"/>
 		</signal>
-		<signal name="on_answer_sub_icon">
-			<arg name="answer" type="v"/>
-			<arg name="cIconID" type="s"/>
-		</signal>
 	</interface>
 </node>

=== modified file 'Dbus/src/interface-applet-methods.c' (properties changed: +x to -x)
--- Dbus/src/interface-applet-methods.c	2010-08-07 01:43:25 +0000
+++ Dbus/src/interface-applet-methods.c	2011-02-23 23:29:29 +0000
@@ -39,10 +39,7 @@
 
 static inline CairoDockModuleInstance *_get_module_instance_from_dbus_applet (dbusApplet *pDbusApplet)
 {
-	CairoDockModule *pModule = cairo_dock_find_module_from_name (pDbusApplet->cModuleName);
-	g_return_val_if_fail (pModule != NULL && pModule->pInstancesList != NULL, NULL);
-	
-	return pModule->pInstancesList->data;
+	return pDbusApplet->pModuleInstance;
 }
 
 static inline gboolean _get_icon_and_container_from_id (dbusApplet *pDbusApplet, const gchar *cIconID, Icon **pIcon, CairoContainer **pContainer)
@@ -86,6 +83,7 @@
 		return FALSE;
 	
 	cairo_dock_set_icon_name (cLabel, pIcon, pContainer);
+	cairo_dock_redraw_icon (pIcon, pContainer);  /// needs a function to redraw the label...
 	return TRUE;
 }
 
@@ -104,6 +102,26 @@
 	return TRUE;
 }
 
+static gboolean _applet_set_icon_with_default (dbusApplet *pDbusApplet, const gchar **cImages, const gchar *cIconID, GError **error)
+{
+	Icon *pIcon;
+	CairoContainer *pContainer;
+	if (! _get_icon_and_container_from_id (pDbusApplet, cIconID, &pIcon, &pContainer))
+		return FALSE;
+	
+	g_return_val_if_fail (pIcon->pIconBuffer != NULL, FALSE);
+	cairo_t *pIconContext = cairo_create (pIcon->pIconBuffer);
+	int i;
+	for (i = 0; cImages[i] != NULL; i ++)
+	{
+		
+		///cairo_dock_set_image_on_icon (pIconContext, cImage, pIcon, pContainer);
+	}
+	cairo_destroy (pIconContext);
+	cairo_dock_redraw_icon (pIcon, pContainer);
+	return TRUE;
+}
+
 static gboolean _applet_set_emblem (dbusApplet *pDbusApplet, const gchar *cImage, gint iPosition, const gchar *cIconID, GError **error)
 {
 	Icon *pIcon;
@@ -151,6 +169,7 @@
 	return TRUE;
 }
 
+// deprecated
 static gboolean _applet_ask_question (dbusApplet *pDbusApplet, const gchar *cMessage, const gchar *cIconID, GError **error)
 {
 	Icon *pIcon;
@@ -189,6 +208,7 @@
 	pDbusApplet->pDialog = cairo_dock_show_dialog_with_entry (cMessage, pIcon, pContainer, "same icon", cInitialText, (CairoDockActionOnAnswerFunc) cd_dbus_applet_emit_on_answer_text, pDbusApplet, NULL);
 	return TRUE;
 }
+// end of deprecated
 
 static void _on_text_changed (GtkWidget *pEntry, GtkWidget *pLabel)
 {
@@ -200,7 +220,7 @@
 	}
 	else
 	{
-		GtkTextBuffer *pBuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (pEntry));
+		GtkTextBuffer *pBuffer = GTK_TEXT_BUFFER (pEntry);
 		iNbChars = gtk_text_buffer_get_char_count (pBuffer);
 	}
 	
@@ -268,7 +288,7 @@
 	attr.pUserData = pDbusApplet;
 	
 	// attributs du widget interactif.
-	GtkWidget *pWidget = NULL;
+	GtkWidget *pInteractiveWidget = NULL, *pOneWidget = NULL;
 	if (hWidgetAttributes != NULL)  // un widget d'interaction est defini.
 	{
 		v = g_hash_table_lookup (hWidgetAttributes, "widget-type");
@@ -279,7 +299,6 @@
 			{
 				if (strcmp (cType, "text-entry") == 0)
 				{
-					GtkWidget *pEntry = NULL;
 					gboolean bMultiLines = FALSE;
 					gboolean bEditable = TRUE;
 					gboolean bVisible = TRUE;
@@ -308,16 +327,19 @@
 					
 					if (bMultiLines)
 					{
-						pEntry = gtk_text_view_new ();
-						pWidget = pEntry;
-						gtk_widget_set (pEntry, "width-request", 200, "height-request", 100, NULL);
+						pOneWidget = gtk_text_view_new ();
+						GtkWidget *pScrolledWindow = gtk_scrolled_window_new (NULL, NULL);
+						gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (pScrolledWindow), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+						gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (pScrolledWindow), pOneWidget);
+						gtk_widget_set (pScrolledWindow, "width-request", 230, "height-request", 130, NULL);
+						pInteractiveWidget = pScrolledWindow;
 						
 						if (! bEditable)
-							gtk_text_view_set_editable (GTK_TEXT_VIEW (pEntry), FALSE);
+							gtk_text_view_set_editable (GTK_TEXT_VIEW (pOneWidget), FALSE);
 						
 						if (cInitialText != NULL)
 						{
-							GtkTextBuffer *pBuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (pEntry));
+							GtkTextBuffer *pBuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (pOneWidget));
 							gtk_text_buffer_set_text (pBuffer, cInitialText, -1);
 						}
 						
@@ -326,16 +348,16 @@
 					}
 					else
 					{
-						pEntry = gtk_entry_new ();
-						pWidget = pEntry;
-						gtk_entry_set_has_frame (GTK_ENTRY (pEntry), FALSE);
-						gtk_widget_set (pEntry, "width-request", CAIRO_DIALOG_MIN_ENTRY_WIDTH, NULL);
+						pOneWidget = gtk_entry_new ();
+						pInteractiveWidget = pOneWidget;
+						gtk_entry_set_has_frame (GTK_ENTRY (pOneWidget), FALSE);
+						gtk_widget_set (pOneWidget, "width-request", CAIRO_DIALOG_MIN_ENTRY_WIDTH, NULL);
 						if (cInitialText != NULL)
-							gtk_entry_set_text (GTK_ENTRY (pEntry), cInitialText);
+							gtk_entry_set_text (GTK_ENTRY (pOneWidget), cInitialText);
 						if (! bEditable)
-							gtk_editable_set_editable (GTK_EDITABLE (pEntry), FALSE);
+							gtk_editable_set_editable (GTK_EDITABLE (pOneWidget), FALSE);
 						if (! bVisible)
-							gtk_entry_set_visibility (GTK_ENTRY (pEntry), FALSE);
+							gtk_entry_set_visibility (GTK_ENTRY (pOneWidget), FALSE);
 						
 						if (attr.cButtonsImage != NULL)
 							attr.pActionFunc = (CairoDockActionOnAnswerFunc) cd_dbus_applet_emit_on_answer_text_entry;
@@ -347,11 +369,21 @@
 						g_free (cLabel);
 						gtk_label_set_use_markup (GTK_LABEL (pLabel), TRUE);
 						GtkWidget *pBox = gtk_hbox_new (FALSE, 3);
-						gtk_box_pack_start (GTK_BOX (pBox), pEntry, FALSE, FALSE, 0);
+						gtk_box_pack_start (GTK_BOX (pBox), pInteractiveWidget, TRUE, TRUE, 0);
 						gtk_box_pack_start (GTK_BOX (pBox), pLabel, FALSE, FALSE, 0);
-						pWidget = pBox;
-						g_object_set_data (G_OBJECT (pEntry), "nb-chars-max", GINT_TO_POINTER (iNbCharsMax));
-						g_signal_connect (pEntry, "changed", G_CALLBACK (_on_text_changed), pLabel);
+						pInteractiveWidget = pBox;
+						
+						if (bMultiLines)
+						{
+							GtkTextBuffer *pBuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (pOneWidget));
+							g_signal_connect (pBuffer, "changed", G_CALLBACK (_on_text_changed), pLabel);
+							g_object_set_data (G_OBJECT (pBuffer), "nb-chars-max", GINT_TO_POINTER (iNbCharsMax));
+						}
+						else
+						{
+							g_signal_connect (pOneWidget, "changed", G_CALLBACK (_on_text_changed), pLabel);
+							g_object_set_data (G_OBJECT (pOneWidget), "nb-chars-max", GINT_TO_POINTER (iNbCharsMax));
+						}
 					}
 				}
 				else if (strcmp (cType, "scale") == 0)
@@ -391,6 +423,7 @@
 						cMaxLabel = g_value_get_string (v);
 					
 					pScale = gtk_hscale_new_with_range (fMinValue, fMaxValue, (fMaxValue - fMinValue) / 100.);
+					pOneWidget = pScale;
 					gtk_scale_set_digits (GTK_SCALE (pScale), iNbDigit);
 					gtk_range_set_value (GTK_RANGE (pScale), fInitialValue);
 					
@@ -408,10 +441,10 @@
 						pAlign = gtk_alignment_new (1., 1., 0., 0.);
 						gtk_container_add (GTK_CONTAINER (pAlign), label);
 						gtk_box_pack_start (GTK_BOX (pExtendedWidget), pAlign, FALSE, FALSE, 0);
-						pWidget = pExtendedWidget;
+						pInteractiveWidget = pExtendedWidget;
 					}
 					else
-						pWidget = pScale;
+						pInteractiveWidget = pScale;
 					
 					if (attr.cButtonsImage != NULL)
 						attr.pActionFunc = (CairoDockActionOnAnswerFunc) cd_dbus_applet_emit_on_answer_scale;
@@ -436,16 +469,17 @@
 						cValuesList = g_strsplit (cValues, ";", -1);
 					
 					if (bEditable)
-						pWidget = gtk_combo_box_entry_new_text ();
+						pOneWidget = gtk_combo_box_entry_new_text ();
 					else
-						pWidget = gtk_combo_box_new_text ();
+						pOneWidget = gtk_combo_box_new_text ();
+					pInteractiveWidget = pOneWidget;
 					
 					if (cValuesList != NULL)
 					{
 						int i;
 						for (i = 0; cValuesList[i] != NULL; i ++)
 						{
-							gtk_combo_box_append_text (GTK_COMBO_BOX (pWidget), cValuesList[i]);
+							gtk_combo_box_append_text (GTK_COMBO_BOX (pInteractiveWidget), cValuesList[i]);
 						}
 					}
 					
@@ -456,7 +490,7 @@
 							cInitialText = g_value_get_string (v);
 						if (cInitialText != NULL)
 						{
-							GtkWidget *pEntry = gtk_bin_get_child (GTK_BIN (pWidget));
+							GtkWidget *pEntry = gtk_bin_get_child (GTK_BIN (pInteractiveWidget));
 							gtk_entry_set_text (GTK_ENTRY (pEntry), cInitialText);
 						}
 					}
@@ -464,7 +498,7 @@
 					{
 						if (v && G_VALUE_HOLDS_INT (v))
 							iInitialValue = g_value_get_int (v);
-						gtk_combo_box_set_active (GTK_COMBO_BOX (pWidget), iInitialValue);
+						gtk_combo_box_set_active (GTK_COMBO_BOX (pInteractiveWidget), iInitialValue);
 					}
 					
 					if (attr.cButtonsImage != NULL)
@@ -480,19 +514,23 @@
 			}  // fin du type de widget.
 		}
 	}
-	attr.pInteractiveWidget = pWidget;
+	attr.pInteractiveWidget = pInteractiveWidget;
 	
-	if (pWidget == NULL)  // pas de widget, on renverra le numero du bouton appuye.
+	if (pInteractiveWidget == NULL)  // pas de widget, on renverra le numero du bouton appuye.
 	{
 		if (attr.cButtonsImage != NULL)
 			attr.pActionFunc = (CairoDockActionOnAnswerFunc) cd_dbus_applet_emit_on_answer_buttons;
 	}
+	else
+		g_object_set_data (G_OBJECT (pInteractiveWidget), "cd-widget", pOneWidget);
 	
 	if (bUseMarkup)
-		myDialogs.dialogTextDescription.bUseMarkup = TRUE;
+		myDialogsParam.dialogTextDescription.bUseMarkup = TRUE;
 	pDbusApplet->pDialog = cairo_dock_build_dialog (&attr, pIcon, pContainer);
+	if (pOneWidget)
+		gtk_widget_grab_focus (pOneWidget);
 	if (bUseMarkup)
-		myDialogs.dialogTextDescription.bUseMarkup = FALSE;
+		myDialogsParam.dialogTextDescription.bUseMarkup = FALSE;
 	
 	g_free (cImageFilePath);
 	if (cButtonsImage)
@@ -535,6 +573,7 @@
 	return _applet_show_dialog (pDbusSubApplet->pApplet, cMessage, iDuration, cIconID, error);
 }
 
+// deprecated
 gboolean cd_dbus_sub_applet_ask_question (dbusSubApplet *pDbusSubApplet, const gchar *cMessage, const gchar *cIconID, GError **error)
 {
 	return _applet_ask_question (pDbusSubApplet->pApplet, cMessage, cIconID, error);
@@ -549,6 +588,7 @@
 {
 	return _applet_ask_text (pDbusSubApplet->pApplet, cMessage, cInitialText, cIconID, error);
 }
+// end of deprecated
 
 gboolean cd_dbus_sub_applet_popup_dialog (dbusSubApplet *pDbusSubApplet, GHashTable *hDialogAttributes, GHashTable *hWidgetAttributes, const gchar *cIconID, GError **error)
 {
@@ -741,6 +781,7 @@
 	return _applet_show_dialog (pDbusApplet, message, iDuration, NULL, error);
 }
 
+// deprecated
 gboolean cd_dbus_applet_ask_question (dbusApplet *pDbusApplet, const gchar *message, GError **error)
 {
 	cd_debug ("%s (%s)\n", __func__, message);
@@ -758,6 +799,7 @@
 	cd_debug ("%s (%s)\n", __func__, message);
 	return _applet_ask_text (pDbusApplet, message, cInitialText, NULL, error);
 }
+// end of deprecated
 
 gboolean cd_dbus_applet_popup_dialog (dbusApplet *pDbusApplet, GHashTable *hDialogAttributes, GHashTable *hWidgetAttributes, GError **error)
 {
@@ -878,9 +920,9 @@
 	if (cairo_dock_strings_differ (pIcon->cClass, cClass))
 	{
 		if (pIcon->cClass != NULL)
-			cairo_dock_deinhibate_class (pIcon->cClass, pIcon);
+			cairo_dock_deinhibite_class (pIcon->cClass, pIcon);
 		if (cClass != NULL)
-			cairo_dock_inhibate_class (cClass, pIcon);
+			cairo_dock_inhibite_class (cClass, pIcon);
 		if (! cairo_dock_is_loading ())
 		{
 			CairoContainer *pContainer = pInstance->pContainer;
@@ -1145,7 +1187,7 @@
 		}
 		if (! cShortkeys[i])  // raccourci non trouve dans la nouvelle liste => on l'enleve
 		{
-			g_print (" shortkey '%s' not wanted anymore\n", key);
+			//g_print (" shortkey '%s' not wanted anymore\n", key);
 			cd_keybinder_unbind (key, (CDBindkeyHandler) cd_dbus_applet_emit_on_shortkey);
 			pDbusApplet->pShortkeyList = g_list_delete_link (pDbusApplet->pShortkeyList, sk);
 		}
@@ -1165,10 +1207,11 @@
 		}
 		if (! sk)  // raccourci non encore lie => on lie.
 		{
-			g_print (" shortkey '%s' wanted\n", cShortkey);
+			//g_print (" shortkey '%s' wanted\n", cShortkey);
 			bCouldBind = cd_keybinder_bind (cShortkey, (CDBindkeyHandler) cd_dbus_applet_emit_on_shortkey, pDbusApplet);
 			if (bCouldBind)
 				pDbusApplet->pShortkeyList = g_list_prepend (pDbusApplet->pShortkeyList, g_strdup (cShortkey));
+			g_print ("*** bind %s: %d\n", cShortkey, bCouldBind);
 		}
 	}
 	return TRUE;
@@ -1231,6 +1274,12 @@
 	{
 		int iWidth, iHeight;
 		cairo_dock_get_icon_extent (pIcon, pContainer, &iWidth, &iHeight);
+		if (pInstance->pDock)
+		{
+			double a = cairo_dock_get_max_scale (pContainer);
+			double s = pInstance->pDock->fMagnitudeMax;
+			iWidth /= (1 + a) / (1 + s*a);
+		}
 		g_value_init (v, G_TYPE_INT);
 		g_value_set_int (v, iWidth);
 	}
@@ -1238,6 +1287,12 @@
 	{
 		int iWidth, iHeight;
 		cairo_dock_get_icon_extent (pIcon, pContainer, &iWidth, &iHeight);
+		if (pInstance->pDock)
+		{
+			double a = cairo_dock_get_max_scale (pContainer);
+			double s = pInstance->pDock->fMagnitudeMax;
+			iHeight /= (1 + a) / (1 + s*a);
+		}
 		g_value_init (v, G_TYPE_INT);
 		g_value_set_int (v, iHeight);
 	}
@@ -1287,6 +1342,13 @@
 	CairoDockPositionType iScreenBorder = ((! pContainer->bIsHorizontal) << 1) | (! pContainer->bDirectionUp);
 	int iWidth, iHeight;
 	cairo_dock_get_icon_extent (pIcon, pContainer, &iWidth, &iHeight);
+	if (pInstance->pDock)
+	{
+		double a = cairo_dock_get_max_scale (pContainer);
+		double s = pInstance->pDock->fMagnitudeMax;
+		iWidth /= (1 + a) / (1 + s*a);
+		iHeight /= (1 + a) / (1 + s*a);
+	}
 	
 	Window Xid = pIcon->Xid;
 	gboolean bHasFocus = (pIcon->Xid != 0 && pIcon->Xid == cairo_dock_get_current_active_window ());

=== modified file 'Dbus/src/interface-applet-methods.h' (properties changed: +x to -x)
=== modified file 'Dbus/src/interface-applet-object.c' (properties changed: +x to -x)
--- Dbus/src/interface-applet-object.c	2010-08-07 01:43:25 +0000
+++ Dbus/src/interface-applet-object.c	2011-02-23 23:29:29 +0000
@@ -17,11 +17,7 @@
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-
-#include <stdlib.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <unistd.h>
+#include <unistd.h>  // getpid
 #include <glib.h>
 #include <dbus/dbus-glib.h>
 #include <dbus/dbus-glib-bindings.h>
@@ -32,14 +28,21 @@
 #include "dbus-sub-applet-spec.h"
 #include "interface-applet-object.h"
 
+static int s_iModuleId = 1;
+
+static void cd_dbus_applet_dispose (GObject *object);
+static void cd_dbus_applet_finalize (GObject *object);
+
 G_DEFINE_TYPE(dbusApplet, cd_dbus_applet, G_TYPE_OBJECT);
 
 G_DEFINE_TYPE(dbusSubApplet, cd_dbus_sub_applet, G_TYPE_OBJECT);
 
-
 static void cd_dbus_applet_class_init(dbusAppletClass *klass)
 {
-	cd_message("");
+	cd_debug("");
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+	object_class->dispose = cd_dbus_applet_dispose;
+	object_class->finalize = cd_dbus_applet_finalize;
 	
 	cd_dbus_applet_init_signals_once (klass);
 	
@@ -47,7 +50,7 @@
 }
 static void cd_dbus_applet_init (dbusApplet *pDbusApplet)
 {
-	cd_message("");
+	cd_debug("");
 	
 	pDbusApplet->connection = cairo_dock_get_session_connection ();
 	pDbusApplet->proxy = cairo_dock_get_main_proxy ();
@@ -55,9 +58,26 @@
 	pDbusApplet->pSubApplet->pApplet = pDbusApplet;
 }
 
+static void cd_dbus_applet_dispose (GObject *object)
+{
+	dbusApplet *pDbusApplet = (dbusApplet*)object;
+	if (pDbusApplet->pSubApplet != NULL)
+	{
+		g_object_unref (pDbusApplet->pSubApplet);
+		pDbusApplet->pSubApplet = NULL;
+	}
+}
+
+static void cd_dbus_applet_finalize (GObject *object)
+{
+	dbusApplet *pDbusApplet = (dbusApplet*)object;
+	g_free (pDbusApplet->cBusPath);
+	pDbusApplet->cBusPath = NULL;
+}
+
 static void cd_dbus_sub_applet_class_init(dbusSubAppletClass *klass)
 {
-	cd_message("");
+	cd_debug("");
 	
 	cd_dbus_sub_applet_init_signals_once (klass);
 	
@@ -65,89 +85,97 @@
 }
 static void cd_dbus_sub_applet_init (dbusSubApplet *pDbusSubApplet)
 {
-	cd_message("");
+	cd_debug("");
 }
 
 
-
 dbusApplet * cd_dbus_get_dbus_applet_from_instance (CairoDockModuleInstance *pModuleInstance)
 {
-	const gchar *cModuleName = pModuleInstance->pModule->pVisitCard->cModuleName;
 	dbusApplet *pDbusApplet = NULL;
 	GList *a;
 	for (a = myData.pAppletList; a != NULL; a = a->next)
 	{
 		pDbusApplet = a->data;
-		if (strcmp (cModuleName, pDbusApplet->cModuleName) == 0)
-			break ;
+		if (pDbusApplet->pModuleInstance == pModuleInstance)
+			return pDbusApplet;
 	}
-	return (a ? pDbusApplet : NULL);
+	return NULL;
 }
 
-static dbusApplet * _remove_dbus_applet_from_list (CairoDockModuleInstance *pModuleInstance)
-{
-	const gchar *cModuleName = pModuleInstance->pModule->pVisitCard->cModuleName;
-	dbusApplet *pDbusApplet;
-	GList *a;
-	for (a = myData.pAppletList; a != NULL; a = a->next)
-	{
-		pDbusApplet = a->data;
-		if (strcmp (cModuleName, pDbusApplet->cModuleName) == 0)
-			break ;
-	}
-	myData.pAppletList = g_list_delete_link (myData.pAppletList, a);
-	return (a ? pDbusApplet : NULL);
-}
 
 #define _applet_list_is_empty() (myData.pAppletList == NULL)
 
 dbusApplet *cd_dbus_create_remote_applet_object (CairoDockModuleInstance *pModuleInstance)
 {
-	g_return_val_if_fail (pModuleInstance != NULL && myData.pMainObject != NULL, NULL);  // l'interface principale a deja enregistre notre domaine, etc.
+	g_return_val_if_fail (pModuleInstance != NULL && myData.pMainObject != NULL, NULL);
 	const gchar *cModuleName = pModuleInstance->pModule->pVisitCard->cModuleName;
+	g_return_val_if_fail (cModuleName != NULL, NULL);
 	cd_debug ("%s (%s)", __func__, cModuleName);
 	
-	// on assure l'unicite.
+	//\_____________ unicity check.
 	dbusApplet *pDbusApplet = cd_dbus_get_dbus_applet_from_instance (pModuleInstance);
-	if (pDbusApplet != NULL)
+	if (pDbusApplet != NULL)  // shouldn't arrive, but let's be cautious.
 	{
 		cd_warning ("this applet (%s) already has a remote object on the bus", cModuleName);
 		return pDbusApplet;
 	}
 	
-	// on cree l'objet DBus correspondant a l'applet.
+	//\_____________ create a DBus object corresponding to the applet.
 	pDbusApplet = g_object_new (cd_dbus_applet_get_type(), NULL);  // appelle cd_dbus_applet_class_init() et cd_dbus_applet_init().
 	pDbusApplet->cModuleName = g_strdup (cModuleName);
 	pDbusApplet->pModuleInstance = pModuleInstance;
-	
-	// on l'enregistre sous un chemin propre a l'applet.
-	gchar *cPath = g_strconcat ("/org/cairodock/CairoDock/", cModuleName, NULL);
-	dbus_g_connection_register_g_object (pDbusApplet->connection, cPath, G_OBJECT(pDbusApplet));
-	g_free (cPath);
-	cPath = g_strconcat ("/org/cairodock/CairoDock/", cModuleName, "/sub_icons", NULL);
-	dbus_g_connection_register_g_object (pDbusApplet->connection, cPath, G_OBJECT(pDbusApplet->pSubApplet));
-	g_free (cPath);
-	
-	// on s'abonne aux notifications qu'on voudra propager sur le bus.
+	pDbusApplet->id = s_iModuleId++;
+	
+	//\_____________ register it under a unique path.
+	gchar *cSuffix = NULL;
+	if (pModuleInstance->pModule->pInstancesList->next != NULL)  // if this is the only instance of the applet, don't add suffix (it's not needed, and it keeps backward compatibility).
+		cSuffix = g_strdup_printf ("_%d", pDbusApplet->id);
+	
+	gchar *cNameWithoutHyphen = NULL;
+	if (strchr (cModuleName, '-') != NULL)
+	{
+		cNameWithoutHyphen = g_strdup (cModuleName);
+		int i;
+		for (i = 0; cNameWithoutHyphen[i] != '\0'; i ++)
+			if (cNameWithoutHyphen[i] == '-' || cNameWithoutHyphen[i] == ' ')
+				cNameWithoutHyphen[i] = ' ';
+		
+	}
+	pDbusApplet->cBusPath = g_strconcat (myData.cBasePath, "/", cNameWithoutHyphen ? cNameWithoutHyphen : cModuleName, cSuffix, NULL);
+	g_free (cNameWithoutHyphen);
+	g_free (cSuffix);
+	
+	dbus_g_connection_register_g_object (pDbusApplet->connection, pDbusApplet->cBusPath, G_OBJECT(pDbusApplet));
+	
+	gchar *cSubPath = g_strconcat (pDbusApplet->cBusPath, "/sub_icons", NULL);
+	dbus_g_connection_register_g_object (pDbusApplet->connection, cSubPath, G_OBJECT(pDbusApplet->pSubApplet));
+	g_free (cSubPath);
+	
+	//\_____________ register to the notifications we'll want to propagate on the bus.
 	if (pDbusApplet->proxy != NULL && _applet_list_is_empty ())  // 1ere applet Dbus.
 	{
-		cairo_dock_register_notification (CAIRO_DOCK_CLICK_ICON,
+		cairo_dock_register_notification_on_object (&myContainersMgr,
+			NOTIFICATION_CLICK_ICON,
 			(CairoDockNotificationFunc) cd_dbus_applet_emit_on_click_icon,
 			CAIRO_DOCK_RUN_AFTER,
 			NULL);
-		cairo_dock_register_notification (CAIRO_DOCK_MIDDLE_CLICK_ICON,
+		cairo_dock_register_notification_on_object (&myContainersMgr,
+			NOTIFICATION_MIDDLE_CLICK_ICON,
 			(CairoDockNotificationFunc) cd_dbus_applet_emit_on_middle_click_icon,
 			CAIRO_DOCK_RUN_AFTER,
 			NULL);
-		cairo_dock_register_notification (CAIRO_DOCK_SCROLL_ICON,
+		cairo_dock_register_notification_on_object (&myContainersMgr,
+			NOTIFICATION_SCROLL_ICON,
 			(CairoDockNotificationFunc) cd_dbus_applet_emit_on_scroll_icon,
 			CAIRO_DOCK_RUN_FIRST,
 			NULL);
-		cairo_dock_register_notification (CAIRO_DOCK_BUILD_ICON_MENU,
+		cairo_dock_register_notification_on_object (&myContainersMgr,
+			NOTIFICATION_BUILD_ICON_MENU,
 			(CairoDockNotificationFunc) cd_dbus_applet_emit_on_build_menu,
 			CAIRO_DOCK_RUN_FIRST,
 			NULL);
-		cairo_dock_register_notification (CAIRO_DOCK_WINDOW_ACTIVATED,
+		cairo_dock_register_notification_on_object (&myDesktopMgr,
+			NOTIFICATION_WINDOW_ACTIVATED,
 			(CairoDockNotificationFunc) cd_dbus_applet_emit_on_change_focus,
 			CAIRO_DOCK_RUN_AFTER,
 			NULL);
@@ -158,9 +186,9 @@
 	return pDbusApplet;
 }
 
-void cd_dbus_delete_remote_applet_object (CairoDockModuleInstance *pModuleInstance)
+void cd_dbus_delete_remote_applet_object (dbusApplet *pDbusApplet)
 {
-	dbusApplet *pDbusApplet = _remove_dbus_applet_from_list (pModuleInstance);
+	myData.pAppletList = g_list_remove (myData.pAppletList, pDbusApplet);
 	
 	if (_applet_list_is_empty ())  // si plus d'applet dbus, inutile de garder les notifications actives.
 	{
@@ -178,134 +206,51 @@
 			cd_keybinder_unbind (key, (CDBindkeyHandler) cd_dbus_applet_emit_on_shortkey);
 		}
 		
-		// on detruit l'objet associe aux sous-icones.
-		if (pDbusApplet->pSubApplet != NULL)
-		{
-			g_object_unref (pDbusApplet->pSubApplet);
-			pDbusApplet->pSubApplet = NULL;
-		}
+		// on detruit l'objet.
 		g_object_unref (pDbusApplet);
 	}
 }
 
 void cd_dbus_unregister_notifications (void)
 {
-	cairo_dock_remove_notification_func (CAIRO_DOCK_CLICK_ICON,
+	cairo_dock_remove_notification_func_on_object (&myContainersMgr,
+		NOTIFICATION_CLICK_ICON,
 		(CairoDockNotificationFunc) cd_dbus_applet_emit_on_click_icon,
 		NULL);
-	cairo_dock_remove_notification_func (CAIRO_DOCK_MIDDLE_CLICK_ICON,
+	cairo_dock_remove_notification_func_on_object (&myContainersMgr,
+		NOTIFICATION_MIDDLE_CLICK_ICON,
 		(CairoDockNotificationFunc) cd_dbus_applet_emit_on_middle_click_icon,
 		NULL);
-	cairo_dock_remove_notification_func (CAIRO_DOCK_SCROLL_ICON,
+	cairo_dock_remove_notification_func_on_object (&myContainersMgr,
+		NOTIFICATION_SCROLL_ICON,
 		(CairoDockNotificationFunc) cd_dbus_applet_emit_on_scroll_icon,
 		NULL);
-	cairo_dock_remove_notification_func (CAIRO_DOCK_BUILD_ICON_MENU,
+	cairo_dock_remove_notification_func_on_object (&myContainersMgr,
+		NOTIFICATION_BUILD_ICON_MENU,
 		(CairoDockNotificationFunc) cd_dbus_applet_emit_on_build_menu,
 		NULL);
-	cairo_dock_remove_notification_func (CAIRO_DOCK_WINDOW_ACTIVATED,
+	cairo_dock_remove_notification_func_on_object (&myDesktopMgr,
+		NOTIFICATION_WINDOW_ACTIVATED,
 		(CairoDockNotificationFunc) cd_dbus_applet_emit_on_change_focus,
 		NULL);
 }
 
 
-gboolean cd_dbus_applet_is_used (const gchar *cModuleName)
-{
-	//g_print ("%s (%s in %s)\n", __func__, cModuleName, myData.cActiveModules);
-	if (myData.cActiveModules == NULL)
-		return FALSE;
-	gchar *str = g_strstr_len (myData.cActiveModules, -1, cModuleName);
-	return (str && (str[strlen(cModuleName)] == ';' || str[strlen(cModuleName)] == '\0'));
-}
-
-static inline const gchar *_strstr_len (const gchar *haystack, gint iNbChars, const gchar *needle)
-{
-	if (iNbChars <= 0)
-		iNbChars = strlen (haystack);
-	int i;
-	for (i = 0; i < iNbChars; i ++)
-	{
-		if (haystack[i] == *needle)
-		{
-			int j;
-			for (j = 1; needle[j] != '\0' && i+j < iNbChars; j ++)
-			{
-				if (haystack[i+j] != needle[j])
-					break;
-			}
-			if (needle[j] == '\0')
-				return haystack+i;
-		}
-	}
-	return NULL;
-}
-int cd_dbus_applet_is_running (const gchar *cModuleName)
-{
-	static gchar cFilePathBuffer[23+1];  // /proc/12345/cmdline + 4octets de marge.
-	static gchar cContent[512+1];
-	gboolean bIsRunning = FALSE;
-	
-	GError *erreur = NULL;
-	GDir *dir = g_dir_open ("/proc", 0, &erreur);
-	if (erreur != NULL)
-	{
-		cd_warning ("Dbus : %s", erreur->message);
-		g_error_free (erreur);
-		return 0;
-	}
-	
-	int iPid = 0;
-	gchar *cCommand = g_strdup_printf ("./%s", cModuleName);
-	gchar *str, *sp;
-	const gchar *cPid;
-	while ((cPid = g_dir_read_name (dir)) != NULL)
-	{
-		if (! g_ascii_isdigit (*cPid))
-			continue;
-		
-		snprintf (cFilePathBuffer, 23, "/proc/%s/cmdline", cPid);
-		int pipe = open (cFilePathBuffer, O_RDONLY);
-		if (pipe <= 0)
-			continue ;
-		
-		int iNbBytesRead;
-		if ((iNbBytesRead = read (pipe, cContent, sizeof (cContent))) <= 0)
-		{
-			close (pipe);
-			continue;
-		}
-		close (pipe);
-		
-		if (_strstr_len (cContent, iNbBytesRead, cCommand))  // g_strstr_len s'arrete aux '\0' alors qu'on lui specifie iNbBytesRead !
-		{
-			iPid = atoi (cPid);
-			break;
-		}
-	}
-	g_dir_close (dir);
-	
-	g_free (cCommand);
-	return iPid;
-}
-
-gboolean cd_dbus_launch_distant_applet_in_dir (const gchar *cModuleName, const gchar *cDirPath)
-{
+void cd_dbus_launch_applet_process (CairoDockModuleInstance *pModuleInstance, dbusApplet *pDbusApplet)
+{
+	const gchar *cModuleName = pModuleInstance->pModule->pVisitCard->cModuleName;
+	const gchar *cDirPath = pModuleInstance->pModule->pVisitCard->cShareDataDir;
 	cd_message ("%s (%s)", __func__, cModuleName);
-	// on verifie que le processus distant n'est pas deja lance.
-	int iPid = cd_dbus_applet_is_running (cModuleName);
-	if (iPid > 0)
-	{
-		/*cd_debug ("  l'applet est deja lancee\n");
-		return FALSE;*/
-		cd_debug ("  l'applet est deja lancee, on la tue sauvagement.");
-		gchar *cCommand = g_strdup_printf ("kill %d", iPid);
-		int r = system (cCommand);
-		g_free (cCommand);
-	}
 	
-	// on le lance.
-	gchar *cCommand = g_strdup_printf ("cd \"%s\" && ./\"%s\"", cDirPath, cModuleName);
-	cd_debug ("on lance une applet distante : '%s'", cCommand);
+ 	gchar *cCommand = g_strdup_printf ("cd \"%s\" && ./\"%s\" %d \"%s\" \"%s\" %s %d",
+ 		cDirPath,
+ 		cModuleName,
+ 		pDbusApplet->id,
+ 		pDbusApplet->cBusPath,
+ 		pModuleInstance->cConfFilePath,
+ 		myData.cProgName,
+ 		getpid());
+	cd_debug ("launching distant applet with: '%s'", cCommand);
 	cairo_dock_launch_command (cCommand);
 	g_free (cCommand);
-	return TRUE;
 }

=== modified file 'Dbus/src/interface-applet-object.h' (properties changed: +x to -x)
--- Dbus/src/interface-applet-object.h	2010-02-14 00:51:22 +0000
+++ Dbus/src/interface-applet-object.h	2011-02-23 23:29:29 +0000
@@ -29,16 +29,14 @@
 
 dbusApplet *cd_dbus_create_remote_applet_object (CairoDockModuleInstance *pModuleInstance);
 
-void cd_dbus_delete_remote_applet_object (CairoDockModuleInstance *pModuleInstance);
+void cd_dbus_delete_remote_applet_object (dbusApplet *pDbusApplet);
 
 void cd_dbus_unregister_notifications (void);
 
 
-gboolean cd_dbus_applet_is_used (const gchar *cModuleName);
-
 int cd_dbus_applet_is_running (const gchar *cModuleName);
 
-gboolean cd_dbus_launch_distant_applet_in_dir (const gchar *cModuleName, const gchar *cDirPath);
+void cd_dbus_launch_applet_process (CairoDockModuleInstance *pModuleInstance, dbusApplet *pDbusApplet);
 
 
 #endif

=== modified file 'Dbus/src/interface-applet-signals.c' (properties changed: +x to -x)
--- Dbus/src/interface-applet-signals.c	2010-08-07 01:43:25 +0000
+++ Dbus/src/interface-applet-signals.c	2011-02-23 23:29:29 +0000
@@ -107,7 +107,7 @@
 			0,
 			NULL, NULL,
 			cd_dbus_marshal_VOID__VALUE,
-			G_TYPE_NONE, 1, G_TYPE_VALUE);
+			G_TYPE_NONE, 1, G_TYPE_VALUE);  // deprecated
 	s_iSignals[ANSWER_DIALOG] =
 		g_signal_new("on_answer_dialog",
 			G_OBJECT_CLASS_TYPE(klass),
@@ -168,7 +168,7 @@
 		dbus_g_proxy_add_signal(pProxy, "on_change_focus",
 			G_TYPE_BOOLEAN, G_TYPE_INVALID);
 		dbus_g_proxy_add_signal(pProxy, "on_answer",
-			G_TYPE_VALUE, G_TYPE_INVALID);
+			G_TYPE_VALUE, G_TYPE_INVALID);  // deprecated
 		dbus_g_proxy_add_signal(pProxy, "on_answer_dialog",
 			G_TYPE_VALUE, G_TYPE_INVALID);
 		dbus_g_proxy_add_signal(pProxy, "on_shortkey",
@@ -232,14 +232,6 @@
 				NULL, NULL,
 				cd_dbus_marshal_VOID__STRING,
 				G_TYPE_NONE, 1, G_TYPE_STRING);
-	s_iSubSignals[MENU_SELECT] =
-		g_signal_new("on_menu_select_sub_icon",
-			G_OBJECT_CLASS_TYPE(klass),
-				G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
-				0,
-				NULL, NULL,
-				cd_dbus_marshal_VOID__INT_STRING,
-				G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_STRING);
 	s_iSubSignals[DROP_DATA] =
 		g_signal_new("on_drop_data_sub_icon",
 			G_OBJECT_CLASS_TYPE(klass),
@@ -248,14 +240,6 @@
 				NULL, NULL,
 				cd_dbus_marshal_VOID__STRING_STRING,
 				G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING);
-	s_iSubSignals[ANSWER] =
-		g_signal_new("on_answer_sub_icon",
-			G_OBJECT_CLASS_TYPE(klass),
-				G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
-				0,
-				NULL, NULL,
-				cd_dbus_marshal_VOID__VALUE_STRING,
-				G_TYPE_NONE, 2, G_TYPE_VALUE, G_TYPE_STRING);
 	
 	// Add signals
 	DBusGProxy *pProxy = cairo_dock_get_main_proxy ();
@@ -269,16 +253,12 @@
 			G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_INVALID);
 		dbus_g_proxy_add_signal(pProxy, "on_build_menu_sub_icon",
 			G_TYPE_STRING, G_TYPE_INVALID);
-		dbus_g_proxy_add_signal(pProxy, "on_menu_select_sub_icon",
-			G_TYPE_INT, G_TYPE_STRING, G_TYPE_INVALID);
 		dbus_g_proxy_add_signal(pProxy, "on_drop_data_sub_icon",
 			G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
-		dbus_g_proxy_add_signal(pProxy, "on_answer_sub_icon",
-			G_TYPE_VALUE, G_TYPE_STRING, G_TYPE_INVALID);
 	}
 }
 
-#define CAIRO_DOCK_IS_MANUAL_APPLET(pIcon) (CAIRO_DOCK_IS_APPLET (pIcon) && pIcon->pModuleInstance->pModule->cSoFilePath == NULL)
+#define CAIRO_DOCK_IS_EXTERNAL_APPLET(pIcon) (CAIRO_DOCK_IS_APPLET (pIcon) && pIcon->pModuleInstance->pModule->cSoFilePath == NULL)
 
 static inline Icon *_get_main_icon_from_clicked_icon (Icon *pIcon, CairoContainer *pContainer)
 {
@@ -306,7 +286,7 @@
 	if (pClickedIcon == NULL)
 		return CAIRO_DOCK_LET_PASS_NOTIFICATION;
 	Icon *pAppletIcon = _get_main_icon_from_clicked_icon (pClickedIcon, pClickedContainer);
-	if (! CAIRO_DOCK_IS_MANUAL_APPLET (pAppletIcon))
+	if (! CAIRO_DOCK_IS_EXTERNAL_APPLET (pAppletIcon))
 		return CAIRO_DOCK_LET_PASS_NOTIFICATION;
 	
 	//g_print ("%s (%s, %d)\n", __func__, pAppletIcon->pModuleInstance->pModule->pVisitCard->cModuleName, iButtonState);
@@ -331,7 +311,7 @@
 	if (pClickedIcon == NULL)
 		return CAIRO_DOCK_LET_PASS_NOTIFICATION;
 	Icon *pAppletIcon = _get_main_icon_from_clicked_icon (pClickedIcon, pClickedContainer);
-	if (! CAIRO_DOCK_IS_MANUAL_APPLET (pAppletIcon))
+	if (! CAIRO_DOCK_IS_EXTERNAL_APPLET (pAppletIcon))
 		return CAIRO_DOCK_LET_PASS_NOTIFICATION;
 	
 	//g_print ("%s (%s)\n", __func__, pAppletIcon->pModuleInstance->pModule->pVisitCard->cModuleName);
@@ -350,7 +330,7 @@
 	if (pClickedIcon == NULL)
 		return CAIRO_DOCK_LET_PASS_NOTIFICATION;
 	Icon *pAppletIcon = _get_main_icon_from_clicked_icon (pClickedIcon, pClickedContainer);
-	if (! CAIRO_DOCK_IS_MANUAL_APPLET (pAppletIcon))
+	if (! CAIRO_DOCK_IS_EXTERNAL_APPLET (pAppletIcon))
 		return CAIRO_DOCK_LET_PASS_NOTIFICATION;
 	
 	//g_print ("%s (%s, %d)\n", __func__, pAppletIcon->pModuleInstance->pModule->pVisitCard->cModuleName, iDirection);
@@ -374,7 +354,7 @@
 	if (pClickedIcon == NULL)
 		return CAIRO_DOCK_LET_PASS_NOTIFICATION;
 	Icon 

Follow ups