Beispiel #1
0
gboolean
panel_launch_desktop_file_with_fallback (const char  *desktop_file,
					 const char  *fallback_exec,
					 GdkScreen   *screen,
					 GError     **error)
{
	char     *argv[2] = { (char *) fallback_exec, NULL };
	GError   *local_error;
	gboolean  retval;

	g_return_val_if_fail (desktop_file != NULL, FALSE);
	g_return_val_if_fail (fallback_exec != NULL, FALSE);
	g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE);
	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);

	/* need to pass a non-NULL error to avoid getting a dialog */
	local_error = NULL;
	if (panel_launch_desktop_file (desktop_file, screen, &local_error))
		return TRUE;

	if (local_error) {
		g_error_free (local_error);
		local_error = NULL;
	}

	retval = gdk_spawn_on_screen (screen, NULL, argv, NULL,
				      G_SPAWN_SEARCH_PATH,
				      NULL, NULL, NULL, &local_error);

        if (local_error == NULL && retval == TRUE)
            return TRUE;

	return _panel_launch_handle_error (fallback_exec,
					   screen, local_error, error);
}
void
panel_menu_button_invoke_menu (PanelMenuButton *button,
			       const char   *callback_name)
{
	GdkScreen *screen;

	g_return_if_fail (PANEL_IS_MENU_BUTTON (button));
	g_return_if_fail (callback_name != NULL);

	screen = gtk_widget_get_screen (GTK_WIDGET (button));

	if (!strcmp (callback_name, "help")) {
		panel_show_help (screen, "user-guide.xml", "gospanel-37");

	} else if (!strcmp (callback_name, "edit")) {
                GError *error = NULL;

		panel_launch_desktop_file ("alacarte.desktop",
					   "alacarte-editor",
					   screen,
					   &error);
		if (error) {
			g_error_free (error);
			error = NULL;
			panel_launch_desktop_file ("gmenu-simple-editor.desktop",
						   "gmenu-simple-editor",
						   screen,
						   &error);
		}

                if (error) {
			char *primary;
			primary = g_strdup_printf (_("Could not execute '%s'"),
						   "gmenu-simple-editor");
                        panel_error_dialog (NULL, screen,
                                            "cannot_exec_gmenu-simple-editor",
					    TRUE,
					    primary, error->message);
			g_free (primary);
                        g_error_free (error);
                }
	}
}
Beispiel #3
0
gboolean
panel_launch_desktop_file_with_fallback (const char  *desktop_file,
					 const char  *fallback_exec,
					 GdkScreen   *screen,
					 GError     **error)
{
	char     *argv[2] = { (char *) fallback_exec, NULL };
	GError   *local_error;
	gboolean  retval;
	GPid      pid;
	char     *display;

	g_return_val_if_fail (desktop_file != NULL, FALSE);
	g_return_val_if_fail (fallback_exec != NULL, FALSE);
	g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE);
	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);

	/* need to pass a non-NULL error to avoid getting a dialog */
	local_error = NULL;
	if (panel_launch_desktop_file (desktop_file, screen, &local_error))
		return TRUE;

	if (local_error) {
		g_error_free (local_error);
		local_error = NULL;
	}

	display = gdk_screen_make_display_name (screen);
	retval = g_spawn_async (NULL, /* working directory */
				argv,
				NULL, /* envp */
				G_SPAWN_SEARCH_PATH,
				set_environment,
				&display,
				&pid,
				&local_error);
				g_free (display);

        if (local_error == NULL && retval == TRUE) {
		g_child_watch_add (pid, dummy_child_watch, NULL);
		}
		return TRUE;

	return _panel_launch_handle_error (fallback_exec,
					   screen, local_error, error);
}
void
panel_menu_item_activate_desktop_file (GtkWidget  *menuitem,
				       const char *path)
{
	GError *error;

	error = NULL;
	panel_launch_desktop_file (path, NULL,
				   menuitem_to_screen (menuitem), &error);
	if (error) {
		panel_error_dialog (NULL, menuitem_to_screen (menuitem),
				    "cannot_launch_entry", TRUE,
				    _("Could not launch menu item"),
				    error->message);

		g_error_free (error);
	}
}
static void
panel_action_lock_invoke_menu (PanelActionButton *button,
			       const char *callback_name)
{
	g_return_if_fail (PANEL_IS_ACTION_BUTTON (button));
	g_return_if_fail (callback_name != NULL);

	if (g_strcmp0 (callback_name, "lock") == 0)
		panel_screensaver_lock (panel_screensaver_get ());
	else if (g_strcmp0 (callback_name, "activate") == 0)
		panel_screensaver_activate (panel_screensaver_get ());
	else if (g_strcmp0 (callback_name, "prefs") == 0)
		panel_launch_desktop_file ("gnome-screen-panel.desktop",
					   gtk_widget_get_screen (GTK_WIDGET (button)),
					   NULL);
	else
		g_assert_not_reached ();
}
Beispiel #6
0
void
panel_menu_item_activate_desktop_file (GtkWidget  *menuitem,
				       const char *path)
{
	panel_launch_desktop_file (path, menuitem_to_screen (menuitem), NULL);
}