91
94
if (pKeyFile != NULL)
93
96
if (cairo_dock_conf_file_needs_update (pKeyFile, pModuleInstance->pModule->pVisitCard->cModuleVersion))
94
cairo_dock_flush_conf_file (pKeyFile, pModuleInstance->cConfFilePath, pModuleInstance->pModule->pVisitCard->cShareDataDir, pModuleInstance->pModule->pVisitCard->cConfFileName);
98
///cairo_dock_flush_conf_file (pKeyFile, pModuleInstance->cConfFilePath, pModuleInstance->pModule->pVisitCard->cShareDataDir, pModuleInstance->pModule->pVisitCard->cConfFileName);
99
gchar *cTemplate = g_strdup_printf ("%s/%s", pModuleInstance->pModule->pVisitCard->cShareDataDir, pModuleInstance->pModule->pVisitCard->cConfFileName);
100
cairo_dock_upgrade_conf_file (pModuleInstance->cConfFilePath, pKeyFile, cTemplate);
97
105
//\_____________ On (re)lance l'executable de l'applet.
122
130
pVisitCard->iMinorVersionNeeded = 1;
123
131
pVisitCard->iMicroVersionNeeded = 1;
124
132
pVisitCard->cPreviewFilePath = cShareDataDir ? g_strdup_printf ("%s/preview", cShareDataDir) : NULL;
125
pVisitCard->cGettextDomain = g_strdup_printf ("cd-%s", cModuleName);
133
pVisitCard->cGettextDomain = g_strdup (GETTEXT_NAME_EXTRAS);
126
134
pVisitCard->cUserDataDir = g_strdup (cModuleName);
127
135
pVisitCard->cShareDataDir = g_strdup (cShareDataDir);
128
136
pVisitCard->cConfFileName = g_strdup_printf ("%s.conf", cModuleName);
219
227
return bActivationOk;
222
static void _cd_dbus_register_all_applets_in_dir (const gchar *cDirPath)
230
static gboolean _cd_dbus_register_all_applets_in_dir (const gchar *cDirPath)
232
gboolean bAppletRegistered = FALSE;
224
233
const gchar *cFileName;
225
234
gchar *cThirdPartyPath = g_strdup_printf ("%s/%s", cDirPath, CD_DBUS_APPLETS_FOLDER);
227
GDir *dir = g_dir_open (cThirdPartyPath, 0, NULL); // si le repertoire n'existe pas, on ne veut de warning.
236
GDir *dir = g_dir_open (cThirdPartyPath, 0, NULL); // si le repertoire n'existe pas, on ne veut pas de warning.
230
239
g_free (cThirdPartyPath);
240
return bAppletRegistered;
254
265
const gchar *cSharePackagesDir = MY_APPLET_SHARE_DATA_DIR"/"CD_DBUS_APPLETS_FOLDER;
255
266
gchar *cUserPackagesDir = g_strdup_printf ("%s/%s", g_cCairoDockDataDir, CD_DBUS_APPLETS_FOLDER);
256
gchar *cDistantPackagesDir = g_strdup_printf ("%s/%d.%d.%d", CD_DBUS_APPLETS_FOLDER, g_iMajorVersion, g_iMinorVersion, g_iMicroVersion);
257
gchar *cPath = cairo_dock_get_package_path (cModuleName, cSharePackagesDir, cUserPackagesDir, cDistantPackagesDir, CAIRO_DOCK_UPDATED_PACKAGE);
267
///gchar *cDistantPackagesDir = g_strdup_printf ("%s/%d.%d.%d", CD_DBUS_APPLETS_FOLDER, g_iMajorVersion, g_iMinorVersion, g_iMicroVersion);
268
const gchar *cDistantPackagesDir = CD_DBUS_APPLETS_FOLDER"/"DISTANT_DIR;
269
gchar *cPath = cairo_dock_get_package_path (cModuleName,
273
CAIRO_DOCK_UPDATED_PACKAGE);
258
274
cd_debug ("*** update of the applet '%s' -> got '%s'\n", cModuleName, cPath);
260
276
g_free (cUserPackagesDir);
261
g_free (cDistantPackagesDir);
277
//g_free (cDistantPackagesDir);
263
279
static gboolean _apply_package_update (gchar *cModuleName)
265
281
CairoDockModule *pModule = cairo_dock_find_module_from_name (cModuleName);
266
g_return_val_if_fail (pModule != NULL, TRUE);
268
if (pModule->pInstancesList != NULL) // applet active => on la recharge.
283
if (pModule && pModule->pInstancesList != NULL) // applet active => reload it (pModule can be NULL in case of "locale").
270
285
cd_debug ("*** applet '%s' is active, reload it", cModuleName);
271
286
CairoDockModuleInstance *pModuleInstance = pModule->pInstancesList->data;
424
439
const gchar *cProgName = g_get_prgname ();
425
440
g_return_if_fail (cProgName != NULL);
426
441
int n = strlen (cProgName);
427
gchar *cName1 = g_new0 (gchar, n+1);
428
gchar *cName2 = g_new0 (gchar, n+1);
442
gchar *cName1 = g_new0 (gchar, n+1); // prog name without '-' and '_'
443
gchar *cName2 = g_new0 (gchar, n+1); // same but with upper char after the '-' and '_'
430
445
for (i = 0; i < n; i ++)
450
465
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 ?...
452
467
//\____________ create the main object on the bus.
453
myData.pMainObject = g_object_new (cd_dbus_main_get_type(), NULL); // appelle cd_dbus_main_class_init() et cd_dbus_main_init().
468
myData.pMainObject = g_object_new (cd_dbus_main_get_type(), NULL); // call cd_dbus_main_class_init() and cd_dbus_main_init().
455
470
//\____________ register the applets installed in the default folders.
456
_cd_dbus_register_all_applets_in_dir (MY_APPLET_SHARE_DATA_DIR);
458
_cd_dbus_register_all_applets_in_dir (g_cCairoDockDataDir);
471
gboolean bAppletRegistered = FALSE;
472
bAppletRegistered |= _cd_dbus_register_all_applets_in_dir (MY_APPLET_SHARE_DATA_DIR);
474
bAppletRegistered |= _cd_dbus_register_all_applets_in_dir (g_cCairoDockDataDir);
476
//\____________ internationalize the applets.
477
gchar *cLocaleDir = g_strdup_printf ("%s/"CD_DBUS_APPLETS_FOLDER"/"LOCALE_DIR_NAME, g_cCairoDockDataDir); // user version of /usr/share/locale
478
if (! g_file_test (cLocaleDir, G_FILE_TEST_EXISTS)) // translations not downloaded yet.
480
gchar *cUserAppletsFolder = g_strdup_printf ("%s/"CD_DBUS_APPLETS_FOLDER, g_cCairoDockDataDir);
481
if (! g_file_test (cUserAppletsFolder, G_FILE_TEST_EXISTS))
483
if (g_mkdir (cUserAppletsFolder, 7*8*8+7*8+5) != 0) // create an empty folder; since there is no date file, the "locale" package will be seen as "to be updated" by the package manager, and will therefore download it.
484
cd_warning ("couldn't create '%s'; third-party applets can't be added", cUserAppletsFolder);
486
g_free (cUserAppletsFolder);
488
if (g_mkdir (cLocaleDir, 7*8*8+7*8+5) != 0) // create an empty folder; since there is no date file, the "locale" package will be seen as "to be updated" by the package manager, and will therefore download it.
489
cd_warning ("couldn't create '%s'; applets won't be translated", cLocaleDir);
491
bindtextdomain (GETTEXT_NAME_EXTRAS, cLocaleDir); // bind the applets' domain to the user locale folder.
492
bind_textdomain_codeset (GETTEXT_NAME_EXTRAS, "UTF-8");
460
495
//\____________ download in background the list of existing applets.
461
const gchar *cSharePackagesDir = NULL; // MY_APPLET_SHARE_DATA_DIR"/"CD_DBUS_APPLETS_FOLDER;
462
gchar *cUserPackagesDir = g_strdup_printf ("%s/%s", g_cCairoDockDataDir, CD_DBUS_APPLETS_FOLDER);
463
gchar *cDistantPackagesDir = g_strdup_printf ("%s/%d.%d.%d", CD_DBUS_APPLETS_FOLDER, g_iMajorVersion, g_iMinorVersion, g_iMicroVersion);
464
myData.pGetListTask = cairo_dock_list_packages_async (cSharePackagesDir,
467
(CairoDockGetPackagesFunc) _on_got_list,
470
g_free (cUserPackagesDir);
471
g_free (cDistantPackagesDir);
496
if (bAppletRegistered) // only if some third-party applets are present on the disk.
498
const gchar *cSharePackagesDir = NULL; // no share data dir, since we can't write in /usr
499
gchar *cUserPackagesDir = g_strdup_printf ("%s/%s", g_cCairoDockDataDir, CD_DBUS_APPLETS_FOLDER);
500
const gchar *cDistantPackagesDir = CD_DBUS_APPLETS_FOLDER"/"DISTANT_DIR;
501
myData.pGetListTask = cairo_dock_list_packages_async (cSharePackagesDir,
504
(CairoDockGetPackagesFunc) _on_got_list,
507
g_free (cUserPackagesDir);