static gboolean panel_show_caja_search_uri(GdkScreen* screen, const gchar* uri, guint32 timestamp, GError** error) { char* desktopfile = NULL; GDesktopAppInfo* appinfo = NULL; gboolean ret; desktopfile = panel_g_lookup_in_applications_dirs("caja-folder-handler.desktop"); if (desktopfile) { appinfo = g_desktop_app_info_new_from_filename(desktopfile); g_free(desktopfile); } if (!appinfo) { _panel_show_error_dialog (uri, screen, _("No application to handle search folders is installed.")); return FALSE; } ret = panel_app_info_launch_uri(appinfo, uri, screen, timestamp, error); g_object_unref(appinfo); return ret; }
static gboolean screensaver_properties_enabled (void) { char *desktop; gboolean found; if (panel_lockdown_get_panels_locked_down_s () || panel_lockdown_get_disable_lock_screen_s ()) return FALSE; desktop = panel_g_lookup_in_applications_dirs ("gnome-screen-panel.desktop"); found = (desktop != NULL); g_free (desktop); return found; }
gboolean panel_launch_desktop_file (const char *desktop_file, GdkScreen *screen, GError **error) { GDesktopAppInfo *appinfo; gboolean retval; g_return_val_if_fail (desktop_file != NULL, FALSE); g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); appinfo = NULL; if (g_path_is_absolute (desktop_file)) appinfo = g_desktop_app_info_new_from_filename (desktop_file); else { char *full; full = panel_g_lookup_in_applications_dirs (desktop_file); if (full) { appinfo = g_desktop_app_info_new_from_filename (full); g_free (full); } } if (appinfo == NULL) return FALSE; retval = panel_app_info_launch_uris (G_APP_INFO (appinfo), NULL, screen, gtk_get_current_event_time (), error); g_object_unref (appinfo); return retval; }
int main (int argc, char **argv) { char *desktopfile; GOptionContext *context; GError *error; bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); /* We will register explicitly when we're ready -- see panel-session.c */ egg_sm_client_set_mode (EGG_SM_CLIENT_MODE_DISABLED); g_set_prgname ("mate-panel"); desktopfile = panel_g_lookup_in_applications_dirs ("mate-panel.desktop"); if (desktopfile) { egg_set_desktop_file (desktopfile); g_free (desktopfile); } context = g_option_context_new (""); g_option_context_add_group (context, egg_sm_client_get_option_group ()); g_option_context_add_group (context, gtk_get_option_group (TRUE)); g_option_context_add_main_entries (context, options, GETTEXT_PACKAGE); gtk_init (&argc, &argv); error = NULL; if (!g_option_context_parse (context, &argc, &argv, &error)) { g_printerr ("%s\n", error->message); g_error_free (error); g_option_context_free (context); return 1; } g_option_context_free (context); /* reset the configuration and exit. */ if (reset == TRUE) { panel_reset(); return 0; } if (!egg_get_desktop_file ()) { g_set_application_name (_("Panel")); gtk_window_set_default_icon_name (PANEL_ICON_PANEL); } if (!panel_shell_register (replace)) { panel_cleanup_do (); return -1; } panel_action_protocol_init (); panel_multiscreen_init (); panel_init_stock_icons_and_items (); mateconf_client_add_dir (panel_mateconf_get_client (), "/desktop/mate/interface", MATECONF_CLIENT_PRELOAD_NONE, NULL); panel_global_config_load (); panel_lockdown_init (); panel_profile_load (); /*add forbidden lists to ALL panels*/ g_slist_foreach (panels, (GFunc)panel_widget_add_forbidden, NULL); xstuff_init (); /* Flush to make sure our struts are seen by everyone starting * immediate after (eg, the caja desktop). */ gdk_flush (); /* Do this at the end, to be sure that we're really ready when * connecting to the session manager */ panel_session_init (); gtk_main (); panel_lockdown_finalize (); mateconf_client_remove_dir (panel_mateconf_get_client (), "/desktop/mate/interface", NULL); panel_cleanup_do (); return 0; }
int main (int argc, char **argv) { char *desktopfile; GOptionContext *context; GError *error; bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); /* We will register explicitly when we're ready -- see panel-session.c */ egg_sm_client_set_mode (EGG_SM_CLIENT_MODE_DISABLED); g_set_prgname ("gnome-panel"); desktopfile = panel_g_lookup_in_applications_dirs ("gnome-panel.desktop"); if (desktopfile) { egg_set_desktop_file (desktopfile); g_free (desktopfile); } context = g_option_context_new (""); g_option_context_add_group (context, egg_sm_client_get_option_group ()); g_option_context_add_group (context, gtk_get_option_group (TRUE)); g_option_context_add_main_entries (context, options, GETTEXT_PACKAGE); gtk_init (&argc, &argv); error = NULL; if (!g_option_context_parse (context, &argc, &argv, &error)) { g_printerr ("%s\n", error->message); g_error_free (error); g_option_context_free (context); return 1; } g_option_context_free (context); if (!egg_get_desktop_file ()) { g_set_application_name (_("Panel")); gtk_window_set_default_icon_name (PANEL_ICON_PANEL); } if (!panel_shell_register (replace)) { panel_cleanup_do (); return 1; } panel_action_protocol_init (); panel_multiscreen_init (); panel_init_stock_icons_and_items (); if (!panel_layout_load ()) { panel_cleanup_do (); return 1; } xstuff_init (); /* Flush to make sure our struts are seen by everyone starting * immediate after (eg, the nautilus desktop). */ gdk_flush (); /* Do this at the end, to be sure that we're really ready when * connecting to the session manager */ panel_session_init (); gtk_main (); panel_cleanup_do (); return 0; }
int main (int argc, char **argv) { char *desktopfile; GOptionContext *context; GError *error; bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); /* We will register explicitly when we're ready -- see panel-session.c */ egg_sm_client_set_mode (EGG_SM_CLIENT_MODE_DISABLED); g_set_prgname ("mate-panel"); desktopfile = panel_g_lookup_in_applications_dirs ("mate-panel.desktop"); if (desktopfile) { egg_set_desktop_file (desktopfile); g_free (desktopfile); } context = g_option_context_new (""); g_option_context_add_group (context, egg_sm_client_get_option_group ()); g_option_context_add_group (context, gtk_get_option_group (TRUE)); g_option_context_add_main_entries (context, options, GETTEXT_PACKAGE); gtk_init (&argc, &argv); error = NULL; if (!g_option_context_parse (context, &argc, &argv, &error)) { g_printerr ("%s\n", error->message); g_error_free (error); g_option_context_free (context); return 1; } g_option_context_free (context); /* set the default layout */ if (layout != NULL && layout[0] != 0) { GSettings *settings; settings = g_settings_new (PANEL_SCHEMA); g_settings_set_string (settings, PANEL_DEFAULT_LAYOUT, layout); g_object_unref (settings); g_message ("Panel layout set to '%s'", layout); /* exit, except if reset argument is given */ if (!reset) return 0; } /* reset the configuration and exit. */ if (reset == TRUE) { panel_reset(); return 0; } /* open the run dialog and exit */ if (run_dialog == TRUE) { panel_multiscreen_init (); panel_global_config_load (); panel_lockdown_init (); panel_profile_settings_load (); panel_run_dialog_present (gdk_screen_get_default (), gtk_get_current_event_time ()); panel_run_dialog_quit_on_destroy (); gtk_main (); panel_lockdown_finalize (); panel_cleanup_do (); return 0; } if (!egg_get_desktop_file ()) { g_set_application_name (_("Panel")); gtk_window_set_default_icon_name (PANEL_ICON_PANEL); } if (!panel_shell_register (replace)) { panel_cleanup_do (); return -1; } panel_action_protocol_init (); panel_multiscreen_init (); panel_init_stock_icons_and_items (); panel_global_config_load (); panel_lockdown_init (); panel_profile_load (); /*add forbidden lists to ALL panels*/ g_slist_foreach (panels, (GFunc)panel_widget_add_forbidden, NULL); xstuff_init (); /* Flush to make sure our struts are seen by everyone starting * immediate after (eg, the caja desktop). */ gdk_flush (); /* Do this at the end, to be sure that we're really ready when * connecting to the session manager */ panel_session_init (); gtk_main (); panel_lockdown_finalize (); panel_cleanup_do (); return 0; }
static Launcher * create_launcher (const char *location) { GKeyFile *key_file; char *scheme; gboolean is_uri; gboolean loaded; Launcher *launcher; GError *error = NULL; char *new_location; if (!location) { g_printerr (_("No URI provided for panel launcher desktop file\n")); return NULL; } new_location = NULL; key_file = g_key_file_new (); scheme = g_uri_parse_scheme (location); is_uri = scheme != NULL; g_free (scheme); if (!is_uri && !g_path_is_absolute (location)) { /* try to first load a file in our config directory, and if it * doesn't exist there, try to find it in the xdg data dirs */ char *path; path = panel_make_full_path (NULL, location); if (!g_file_test (path, G_FILE_TEST_EXISTS)) { g_free (path); path = panel_g_lookup_in_applications_dirs (location); /* it's important to keep the full path if the desktop * file comes from a data dir: when the user will edit * it, we'll want to save it in PANEL_LAUNCHERS_PATH * with a random name (and not evolution.desktop, eg) * and having only a basename as location will make * this impossible */ if (path) new_location = g_strdup (path); } if (path) { loaded = g_key_file_load_from_file (key_file, path, G_KEY_FILE_KEEP_COMMENTS|G_KEY_FILE_KEEP_TRANSLATIONS, &error); g_free (path); } else { loaded = FALSE; } } else loaded = panel_key_file_load_from_uri (key_file, location, G_KEY_FILE_KEEP_COMMENTS|G_KEY_FILE_KEEP_TRANSLATIONS, &error); if (!loaded) { g_printerr (_("Unable to open desktop file %s for panel launcher%s%s\n"), location, error ? ": " : "", error ? error->message : ""); if (error) g_error_free (error); g_key_file_free (key_file); return NULL; /*button is null*/ } if (!new_location) new_location = g_strdup (location); launcher = g_new0 (Launcher, 1); launcher->info = NULL; launcher->button = NULL; launcher->location = new_location; launcher->key_file = key_file; launcher->prop_dialog = NULL; launcher->destroy_handler = 0; /* Icon will be setup later */ launcher->button = button_widget_new (NULL /* icon */, FALSE, PANEL_ORIENTATION_TOP); gtk_widget_show (launcher->button); /*gtk_drag_dest_set (GTK_WIDGET (launcher->button), GTK_DEST_DEFAULT_ALL, dnd_targets, 2, GDK_ACTION_COPY);*/ gtk_drag_dest_set (GTK_WIDGET (launcher->button), 0, NULL, 0, 0); g_signal_connect (launcher->button, "drag_data_get", G_CALLBACK (drag_data_get_cb), launcher); g_signal_connect (launcher->button, "drag_data_received", G_CALLBACK (drag_data_received_cb), launcher); g_signal_connect (launcher->button, "drag_motion", G_CALLBACK (drag_motion_cb), launcher); g_signal_connect (launcher->button, "drag_drop", G_CALLBACK (drag_drop_cb), launcher); g_signal_connect (launcher->button, "drag_leave", G_CALLBACK (drag_leave_cb), launcher); g_signal_connect_swapped (launcher->button, "clicked", G_CALLBACK (launcher_launch), launcher); launcher->destroy_handler = g_signal_connect (launcher->button, "destroy", G_CALLBACK (destroy_launcher), launcher); return launcher; }