static void panel_addto_add_item (PanelAddtoDialog *dialog, PanelAddtoItemInfo *item_info) { g_assert (item_info != NULL); switch (item_info->type) { case PANEL_ADDTO_APPLET: mate_panel_applet_frame_create (dialog->panel_widget->toplevel, dialog->insertion_position, item_info->iid); break; case PANEL_ADDTO_ACTION: panel_action_button_create (dialog->panel_widget->toplevel, dialog->insertion_position, item_info->action_type); break; case PANEL_ADDTO_LAUNCHER_MENU: panel_addto_present_applications (dialog); break; case PANEL_ADDTO_LAUNCHER: panel_launcher_create (dialog->panel_widget->toplevel, dialog->insertion_position, item_info->launcher_path); break; case PANEL_ADDTO_LAUNCHER_NEW: ask_about_launcher (NULL, dialog->panel_widget, dialog->insertion_position, FALSE); break; case PANEL_ADDTO_MENU: panel_menu_button_create (dialog->panel_widget->toplevel, dialog->insertion_position, item_info->menu_filename, item_info->menu_path, item_info->menu_path != NULL, item_info->name); break; case PANEL_ADDTO_MENUBAR: panel_menu_bar_create (dialog->panel_widget->toplevel, dialog->insertion_position); break; case PANEL_ADDTO_SEPARATOR: panel_separator_create (dialog->panel_widget->toplevel, dialog->insertion_position); break; case PANEL_ADDTO_DRAWER: panel_drawer_create (dialog->panel_widget->toplevel, dialog->insertion_position, NULL, FALSE, NULL); break; } }
static gboolean drop_internal_applet (PanelWidget *panel, int pos, const char *applet_type, int action) { int applet_index = -1; gboolean remove_applet = FALSE; gboolean success = FALSE; if (applet_type == NULL) return FALSE; if (sscanf (applet_type, "MENU:%d", &applet_index) == 1 || sscanf (applet_type, "DRAWER:%d", &applet_index) == 1) { if (action != GDK_ACTION_MOVE) g_warning ("Only MOVE supported for menus/drawers"); success = move_applet (panel, pos, applet_index); } else if (strncmp (applet_type, "MENU:", strlen ("MENU:")) == 0) { const char *menu; const char *menu_path; menu = &applet_type[strlen ("MENU:")]; menu_path = strchr (menu, '/'); if (!menu_path) { if (strncmp (menu, "MAIN", strlen ("MAIN")) == 0) success = drop_menu (panel, pos, NULL, NULL); else success = drop_menu (panel, pos, menu, NULL); } else { char *menu_filename; menu_filename = g_strndup (menu, menu_path - menu); menu_path++; success = drop_menu (panel, pos, menu_filename, menu_path); g_free (menu_filename); } } else if (!strcmp (applet_type, "DRAWER:NEW")) { if (panel_profile_id_lists_are_writable ()) { panel_drawer_create (panel->toplevel, pos, NULL, FALSE, NULL); success = TRUE; } else { success = FALSE; } } else if (!strncmp (applet_type, "ACTION:", strlen ("ACTION:"))) { if (panel_profile_id_lists_are_writable ()) { remove_applet = panel_action_button_load_from_drag ( panel->toplevel, pos, applet_type, &applet_index); success = TRUE; } else { success = FALSE; } } else if (!strcmp (applet_type, "MENUBAR:NEW")) { if (panel_profile_id_lists_are_writable ()) { panel_menu_bar_create (panel->toplevel, pos); success = TRUE; } else { success = FALSE; } } else if (!strcmp(applet_type,"SEPARATOR:NEW")) { if (panel_profile_id_lists_are_writable ()) { panel_separator_create (panel->toplevel, pos); success = TRUE; } else { success = FALSE; } } else if (!strcmp(applet_type,"LAUNCHER:ASK")) { if (panel_profile_id_lists_are_writable ()) { ask_about_launcher (NULL, panel, pos, TRUE); success = TRUE; } else { success = FALSE; } } if (remove_applet && action == GDK_ACTION_MOVE) { AppletInfo *info; GSList *applet_list; applet_list = mate_panel_applet_list_applets (); info = g_slist_nth_data (applet_list, applet_index); if (info) panel_profile_delete_object (info); } return success; }