Icon *gldi_stack_icon_add_new (CairoDock *pDock, double fOrder) { //\_________________ add a launcher in the current theme const gchar *cDockName = gldi_dock_get_name (pDock); if (fOrder == CAIRO_DOCK_LAST_ORDER) // the order is not defined -> place at the end { Icon *pLastIcon = cairo_dock_get_last_launcher (pDock->icons); fOrder = (pLastIcon ? pLastIcon->fOrder + 1 : 1); } gchar *cNewDesktopFileName = gldi_stack_icon_add_conf_file (cDockName, fOrder); g_return_val_if_fail (cNewDesktopFileName != NULL, NULL); //\_________________ load the new icon Icon *pNewIcon = gldi_user_icon_new (cNewDesktopFileName); g_free (cNewDesktopFileName); g_return_val_if_fail (pNewIcon, NULL); gldi_icon_insert_in_container (pNewIcon, CAIRO_CONTAINER(pDock), CAIRO_DOCK_ANIMATE_ICON); /// TODO: check without these 2 lines, with a box drawer... ///if (pNewIcon->pSubDock != NULL) /// cairo_dock_trigger_redraw_subdock_content (pNewIcon->pSubDock); return pNewIcon; }
Icon *gldi_launcher_add_new (const gchar *cURI, CairoDock *pDock, double fOrder) { //\_________________ add a launcher in the current theme const gchar *cDockName = gldi_dock_get_name (pDock); if (fOrder == CAIRO_DOCK_LAST_ORDER) // the order is not defined -> place at the end { Icon *pLastIcon = cairo_dock_get_last_launcher (pDock->icons); fOrder = (pLastIcon ? pLastIcon->fOrder + 1 : 1); } gchar *cNewDesktopFileName = gldi_launcher_add_conf_file (cURI, cDockName, fOrder); g_return_val_if_fail (cNewDesktopFileName != NULL, NULL); //\_________________ load the new icon Icon *pNewIcon = gldi_user_icon_new (cNewDesktopFileName); g_free (cNewDesktopFileName); g_return_val_if_fail (pNewIcon, NULL); gldi_icon_insert_in_container (pNewIcon, CAIRO_CONTAINER(pDock), CAIRO_DOCK_ANIMATE_ICON); return pNewIcon; }
gchar *cairo_dock_add_desktop_file_from_uri_full (const gchar *cURI, const gchar *cDockName, double fOrder, CairoDockNewLauncherType iNewLauncherType, CairoDock *pDock, GError **erreur) { cd_message ("%s (%s)", __func__, cURI); double fEffectiveOrder; if (fOrder == CAIRO_DOCK_LAST_ORDER && pDock != NULL) { Icon *pLastIcon = cairo_dock_get_last_launcher (pDock->icons); if (pLastIcon != NULL) fEffectiveOrder = pLastIcon->fOrder + 1; else fEffectiveOrder = 1; } else fEffectiveOrder = fOrder; //\_________________ On regarde si c'est un repertoire ou un fichier ou sinon un fichier cree a partir de zero. GError *tmp_erreur = NULL; gchar *cNewDesktopFileName; if (cURI == NULL) { cNewDesktopFileName = _cairo_dock_generate_desktop_file_for_edition (iNewLauncherType, cDockName, fEffectiveOrder, &tmp_erreur); } else if (g_str_has_suffix (cURI, ".desktop")) // && (strncmp (cURI, "file://", 7) == 0 || *cURI == '/') { cNewDesktopFileName = _cairo_dock_generate_desktop_file_for_launcher (cURI, cDockName, fEffectiveOrder, &tmp_erreur); } else { cNewDesktopFileName = _cairo_dock_generate_desktop_file_for_file (cURI, cDockName, fEffectiveOrder, &tmp_erreur); } if (tmp_erreur != NULL) { g_propagate_error (erreur, tmp_erreur); } return cNewDesktopFileName; }