static gboolean drop_caja_desktop_uri (PanelWidget *panel, int pos, const char *uri) { gboolean success; const char *id; const char *basename; if (g_ascii_strncasecmp (uri, "x-caja-desktop:///", strlen ("x-caja-desktop:///")) != 0) return FALSE; success = TRUE; id = panel_profile_get_toplevel_id (panel->toplevel); basename = uri + strlen ("x-caja-desktop:///"); if (strncmp (basename, "trash", strlen ("trash")) == 0) mate_panel_applet_frame_create (panel->toplevel, pos, "OAFIID:MATE_Panel_TrashApplet"); else if (strncmp (basename, "home", strlen ("home")) == 0) panel_launcher_create_with_id (id, pos, "caja-home.desktop"); else if (strncmp (basename, "computer", strlen ("computer")) == 0) panel_launcher_create_with_id (id, pos, "caja-computer.desktop"); else if (strncmp (basename, "network", strlen ("network")) == 0) panel_launcher_create_with_id (id, pos, "caja-scheme.desktop"); else success = FALSE; return success; }
static void add_drawers_from_alias (MateMenuTreeAlias *alias, const char *toplevel_id) { MateMenuTreeItem *aliased_item; aliased_item = matemenu_tree_alias_get_item (alias); switch (matemenu_tree_item_get_type (aliased_item)) { case MATEMENU_TREE_ITEM_DIRECTORY: add_drawers_from_dir (MATEMENU_TREE_DIRECTORY (aliased_item), G_MAXINT/2, toplevel_id); break; case MATEMENU_TREE_ITEM_ENTRY: panel_launcher_create_with_id (toplevel_id, G_MAXINT/2, matemenu_tree_entry_get_desktop_file_path (MATEMENU_TREE_ENTRY (aliased_item))); break; default: break; } matemenu_tree_item_unref (aliased_item); }
void panel_launcher_create (PanelToplevel *toplevel, PanelObjectPackType pack_type, int pack_index, const char *location) { panel_launcher_create_with_id (panel_toplevel_get_id (toplevel), pack_type, pack_index, location); }
static void add_drawers_from_dir (MateMenuTreeDirectory *directory, int pos, const char *toplevel_id) { const char *name; const char *icon; GSList *items; GSList *l; char *attached_toplevel_id; name = matemenu_tree_directory_get_name (directory); icon = matemenu_tree_directory_get_icon (directory); attached_toplevel_id = panel_drawer_create_with_id (toplevel_id, pos, icon, icon != NULL, name); if (!attached_toplevel_id) return; items = matemenu_tree_directory_get_contents (directory); for (l = items; l; l = l->next) { MateMenuTreeItem *item = l->data; switch (matemenu_tree_item_get_type (item)) { case MATEMENU_TREE_ITEM_ENTRY: panel_launcher_create_with_id (attached_toplevel_id, G_MAXINT/2, matemenu_tree_entry_get_desktop_file_path (MATEMENU_TREE_ENTRY (item))); break; case MATEMENU_TREE_ITEM_DIRECTORY: add_drawers_from_dir (MATEMENU_TREE_DIRECTORY (item), G_MAXINT/2, attached_toplevel_id); break; case MATEMENU_TREE_ITEM_ALIAS: add_drawers_from_alias (MATEMENU_TREE_ALIAS (item), attached_toplevel_id); break; default: break; } matemenu_tree_item_unref (item); } g_slist_free (items); g_free (attached_toplevel_id); }