356
359
*@return Le chemin vers le repertoire du theme, dans une chaine nouvellement allouee.
358
361
#define CD_CONFIG_GET_THEME_PATH(cGroupName, cKeyName, cThemeDirName, cDefaultThemeName) \
359
cairo_dock_get_theme_path_for_module (pKeyFile, cGroupName, cKeyName, &bFlushConfFileNeeded, cDefaultThemeName, MY_APPLET_SHARE_DATA_DIR"/"cThemeDirName, MY_APPLET_USER_DATA_DIR)
363
gchar *_cThemePath = cairo_dock_get_theme_path_for_module (pKeyFile, cGroupName, cKeyName, &bFlushConfFileNeeded, cDefaultThemeName, MY_APPLET_SHARE_DATA_DIR"/"cThemeDirName, MY_APPLET_USER_DATA_DIR);\
364
if (_cThemePath == NULL) {\
365
const gchar *_cMessage = _("the theme couldn't be found; the default theme will be used instead.\n You can change this by opening the configuration of this module; do you want to do it now ?");\
366
Icon *_pIcon = cairo_dock_get_dialogless_icon ();\
367
gchar *_cQuestion = g_strdup_printf ("%s : %s", myApplet->pModule->pVisitCard->cModuleName, _cMessage);\
368
cairo_dock_show_dialog_with_question (_cQuestion, _pIcon, CAIRO_CONTAINER (g_pMainDock), MY_APPLET_SHARE_DATA_DIR"/"MY_APPLET_ICON_FILE, (CairoDockActionOnAnswerFunc) cairo_dock_open_module_config_on_demand, myApplet, NULL);\
369
g_free (_cQuestion); }\
362
*Recupere la valeur d'un theme de gauge, en mettant a jour la liste des jauges disponibles dans le fichier de conf.
373
*Recupere la valeur d'un theme de gauge, en cherchant parmi les themes distants si necessaire.
363
374
*@param cGroupName nom du groupe (dans le fichier de conf) du parametre correspondant au theme.
364
375
*@param cKeyName nom de la cle (dans le fichier de conf) du parametre correspondant au theme.
366
377
#define CD_CONFIG_GET_GAUGE_THEME(cGroupName, cKeyName) \
367
cairo_dock_get_gauge_key_value(CD_APPLET_MY_CONF_FILE, pKeyFile, cGroupName, cKeyName, &bFlushConfFileNeeded, "turbo-night-fuel")
379
gchar *_cThemePath = cairo_dock_get_gauge_key_value(CD_APPLET_MY_CONF_FILE, pKeyFile, cGroupName, cKeyName, &bFlushConfFileNeeded, "turbo-night-fuel");\
380
if (_cThemePath == NULL) {\
381
const gchar *_cMessage = _("the gauge theme couldn't be found; a default gauge will be used instead.\n You can change this by opening the configuration of this module; do you want to do it now ?");\
382
Icon *_pIcon = cairo_dock_get_dialogless_icon ();\
383
gchar *_cQuestion = g_strdup_printf ("%s : %s", myApplet->pModule->pVisitCard->cModuleName, _cMessage);\
384
cairo_dock_show_dialog_with_question (_cQuestion, _pIcon, CAIRO_CONTAINER (g_pMainDock), MY_APPLET_SHARE_DATA_DIR"/"MY_APPLET_ICON_FILE, (CairoDockActionOnAnswerFunc) cairo_dock_open_module_config_on_demand, myApplet, NULL);\
385
g_free (_cQuestion); }\
375
394
*@param pMenu GtkWidget du menu auquel on rajoutera le sous-menu.
376
395
*@return le sous-menu nouvellement cree et attache au menu.
378
#define CD_APPLET_ADD_SUB_MENU(cLabel, pMenu) \
397
#define CD_APPLET_ADD_SUB_MENU_WITH_IMAGE(cLabel, pMenu, cImage) \
379
398
__extension__ ({\
380
399
GtkWidget *_pSubMenu = gtk_menu_new (); \
381
pMenuItem = gtk_menu_item_new_with_label (cLabel); \
400
if (cImage == NULL) {\
401
pMenuItem = gtk_menu_item_new_with_label (cLabel); }\
403
gchar *__cImage = cImage;\
404
pMenuItem = gtk_image_menu_item_new_with_label (cLabel);\
405
if (*__cImage == '/') {\
406
GdkPixbuf *_pixbuf = gdk_pixbuf_new_from_file_at_size (__cImage, 32, 32, NULL);\
407
image = gtk_image_new_from_pixbuf (_pixbuf);\
408
g_object_unref (_pixbuf); }\
410
image = gtk_image_new_from_stock (__cImage, GTK_ICON_SIZE_MENU); }\
411
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (pMenuItem), image); }\
382
412
gtk_menu_shell_append (GTK_MENU_SHELL (pMenu), pMenuItem); \
383
413
gtk_menu_item_set_submenu (GTK_MENU_ITEM (pMenuItem), _pSubMenu);\
416
#define CD_APPLET_ADD_SUB_MENU(cLabel, pMenu) CD_APPLET_ADD_SUB_MENU_WITH_IMAGE(cLabel, pMenu, NULL)
386
418
/** Cree et ajoute un sous-menu par defaut au menu principal. Ce sous-menu est nomme suivant le nom de l'applet, et est represente par l'icone de l'applet.
387
419
*@return le sous-menu nouvellement cree et attache au menu.
389
#define CD_APPLET_CREATE_MY_SUB_MENU(...) \
391
pMenuItem = gtk_image_menu_item_new_with_label (myApplet->pModule->pVisitCard->cModuleName);\
392
GdkPixbuf *_pixbuf = gdk_pixbuf_new_from_file_at_size (MY_APPLET_SHARE_DATA_DIR"/"MY_APPLET_ICON_FILE, 32, 32, NULL);\
393
image = gtk_image_new_from_pixbuf (_pixbuf);\
394
g_object_unref (_pixbuf);\
395
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (pMenuItem), image);\
396
gtk_menu_shell_append (GTK_MENU_SHELL (CD_APPLET_MY_MENU), pMenuItem);\
397
GtkWidget *_pSubMenu = gtk_menu_new ();\
398
gtk_menu_item_set_submenu (GTK_MENU_ITEM (pMenuItem), _pSubMenu);\
421
#define CD_APPLET_CREATE_MY_SUB_MENU(...) CD_APPLET_ADD_SUB_MENU_WITH_IMAGE (myApplet->pModule->pVisitCard->cModuleName, CD_APPLET_MY_MENU, MY_APPLET_SHARE_DATA_DIR"/"MY_APPLET_ICON_FILE)
401
423
/** Cree et ajoute un sous-menu a un menu deja existant.
402
424
*@param cLabel nom du sous-menu, tel qu'il apparaitra dans le menu.
427
449
*Ajoute une entree avec une icone GTK a un menu deja existant.
428
450
*@param cLabel nom de l'entree, tel qu'il apparaitra dans le menu.
429
*@param gtkStock nom d'une icone de GTK.
451
*@param gtkStock nom d'une icone de GTK ou chemin complet d'une image quelconque.
430
452
*@param pFunction fonction appelee lors de la selection de cette entree.
431
453
*@param pMenu GtkWidget du menu auquel on rajoutera l'entree.
432
454
*@param pData donnees passees en parametre de la fonction (doit contenir myApplet).
875
897
#define CD_APPLET_MY_ICONS_LIST (myDock ? (myIcon->pSubDock ? myIcon->pSubDock->icons : NULL) : myDesklet->icons)
876
898
#define CD_APPLET_MY_ICONS_LIST_CONTAINER (myDock ? CAIRO_CONTAINER (myIcon->pSubDock) : CAIRO_CONTAINER (myDesklet))
900
//\_________________________________ TASKBAR
901
#define CD_APPLET_MANAGE_APPLICATION(cApplicationClass, bStealTaskBarIcon) do {\
902
if (myIcon->cClass != NULL && ! bStealTaskBarIcon)\
903
cairo_dock_deinhibate_class (cApplicationClass, myIcon);\
904
else if (myIcon->cClass == NULL && bStealTaskBarIcon)\
905
cairo_dock_inhibate_class (cApplicationClass, myIcon); } while (0)
879
907
//\_________________________________ INTERNATIONNALISATION