예제 #1
0
void
show_help_dialog (GtkWindow  *parent,
		  const char *section)
{
	char   *uri;
	GError *error = NULL;

	uri = g_strconcat ("help:engrampa", section ? "/" : NULL, section, NULL);
	if (! gtk_show_uri_on_window (parent, uri, GDK_CURRENT_TIME, &error)) {
		GtkWidget *dialog;

		dialog = _gtk_message_dialog_new (parent,
						  GTK_DIALOG_DESTROY_WITH_PARENT,
						  "dialog-error",
						  _("Could not display help"),
						  error->message,
						  "gtk-ok", GTK_RESPONSE_OK,
						  NULL);
		gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);

		g_signal_connect (G_OBJECT (dialog), "response",
				  G_CALLBACK (gtk_widget_destroy),
				  NULL);

		gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);

		gtk_widget_show (dialog);

		g_clear_error (&error);
	}
	g_free (uri);
}
예제 #2
0
파일: actions.c 프로젝트: GNOME/gthumb
void
gth_browser_activate_folder_context_open_in_file_manager (GSimpleAction *action,
							  GVariant      *parameter,
							  gpointer       user_data)
{
	GthBrowser  *browser = GTH_BROWSER (user_data);
	GthFileData *file_data;
	char        *uri;
	GError      *error = NULL;

	file_data = gth_browser_get_folder_popup_file_data (browser);
	if (file_data == NULL)
		return;

	uri = g_file_get_uri (file_data->file);
	if (! gtk_show_uri_on_window (GTK_WINDOW (browser),
				      uri,
				      GDK_CURRENT_TIME,
				      &error))
	{
		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (browser), _("Could not open the location"), error);
		g_clear_error (&error);
	}

	g_free (uri);
	g_object_unref (file_data);
}
예제 #3
0
static void
help_cb (GtkAction  *action,
	 EyesApplet *eyes_applet)
{
	GError *error = NULL;

#if GTK_CHECK_VERSION (3, 22, 0)
	gtk_show_uri_on_window (NULL,
	                        "help:mate-geyes",
	                        gtk_get_current_event_time (),
	                        &error);
#else
	gtk_show_uri (gtk_widget_get_screen (GTK_WIDGET (eyes_applet->applet)),
	              "help:mate-geyes",
	              gtk_get_current_event_time (),
	              &error);
#endif

	if (error) {
		GtkWidget *dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, 
							    _("There was an error displaying help: %s"), error->message);
		g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (gtk_widget_destroy), NULL);
		gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
		gtk_window_set_screen (GTK_WINDOW (dialog), gtk_widget_get_screen (GTK_WIDGET (eyes_applet->applet)));
		gtk_widget_show (dialog);
		g_error_free (error);
		error = NULL;
	}
}
예제 #4
0
파일: tools.c 프로젝트: Buzztrax/buzztrax
/**
 * gtk_show_uri_simple:
 * @widget: widget that triggered the action
 * @uri: the uri
 *
 * Show the given @uri. Uses same screen as @widget.
 */
void
gtk_show_uri_simple (GtkWidget * widget, const gchar * uri)
{
  GError *error = NULL;

  g_return_if_fail (widget);
  g_return_if_fail (uri);

#if GTK_CHECK_VERSION (3, 22, 0)
    GtkWidget *toplevel = gtk_widget_get_toplevel (widget);
    if (!gtk_widget_is_toplevel (toplevel)) {
      GST_WARNING ("Failed lookup widgets window\n");
    }
    GtkWindow *window = GTK_WINDOW(toplevel);

  if (!gtk_show_uri_on_window (window, uri,gtk_get_current_event_time (), &error)) {
    GST_WARNING ("Failed to display help: %s\n", error->message);
    g_error_free (error);
  }
#else
  GdkScreen *screen = gtk_widget_get_screen (widget);

  if (!gtk_show_uri (screen, uri, gtk_get_current_event_time (), &error)) {
    GST_WARNING ("Failed to display help: %s\n", error->message);
    g_error_free (error);
  }
#endif
}
예제 #5
0
void
gtk_print_operation_portal_launch_preview (GtkPrintOperation *op,
                                           cairo_surface_t   *surface,
                                           GtkWindow         *parent,
                                           const char        *filename)
{
  char *uri;

  uri = g_filename_to_uri (filename, NULL, NULL);
  gtk_show_uri_on_window (parent, uri, GDK_CURRENT_TIME, NULL);
  g_free (uri);
}
예제 #6
0
static void
response_cb (GtkWidget *dialog, gint id, gpointer data)
{
        if (id == GTK_RESPONSE_HELP)
#if GTK_CHECK_VERSION (3, 22, 0)
		gtk_show_uri_on_window (GTK_WINDOW (dialog),
		                        "help:mate-stickynotes-applet/stickynotes-settings-individual",
		                        gtk_get_current_event_time (),
		                        NULL);
#else
		gtk_show_uri (gtk_widget_get_screen (GTK_WIDGET (dialog)),
		              "help:mate-stickynotes-applet/stickynotes-settings-individual",
		              gtk_get_current_event_time (),
		              NULL);
#endif
        else if (id == GTK_RESPONSE_CLOSE)
예제 #7
0
gboolean
panel_show_uri (GdkScreen    *screen,
		const gchar  *uri,
		guint32       timestamp,
		GError      **error)
{
	GError *local_error = NULL;

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

	gtk_show_uri_on_window (NULL, uri, timestamp, &local_error);

	return _panel_show_handle_error (uri, screen, local_error, error);
}
예제 #8
0
static gboolean
utils_mouse_clicked_link_cb(GtkWidget* widget,
                            GdkEventButton* evt,
                            gpointer udata)
{
    if (evt->button == 1 && evt->type == GDK_BUTTON_PRESS)
    {
        GtWin* parent = GT_WIN_TOPLEVEL(widget);

#if GTK_CHECK_VERSION(3, 22, 0)
        gtk_show_uri_on_window(GTK_WINDOW(parent), (gchar*) udata, GDK_CURRENT_TIME, NULL);
#else
        gtk_show_uri(NULL, (gchar*) udata, GDK_CURRENT_TIME, NULL);
#endif

    }

    return FALSE;
}
예제 #9
0
static gboolean
ide_terminal_button_press_event (GtkWidget      *widget,
                                 GdkEventButton *button)
{
  IdeTerminal *self = (IdeTerminal *)widget;

  g_assert (IDE_IS_TERMINAL (self));
  g_assert (button != NULL);

  if ((button->type == GDK_BUTTON_PRESS) && (button->button == GDK_BUTTON_SECONDARY))
    {
      if (!gtk_widget_has_focus (GTK_WIDGET (self)))
        gtk_widget_grab_focus (GTK_WIDGET (self));

      ide_terminal_do_popup (self, (GdkEvent *)button);

      return GDK_EVENT_STOP;
    }
  else if ((button->type == GDK_BUTTON_PRESS) && (button->button == GDK_BUTTON_PRIMARY)
            && ((button->state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK))
    {
      g_autofree gchar *pattern = NULL;

      pattern = vte_terminal_match_check_event (VTE_TERMINAL (self), (GdkEvent *)button, NULL);

      if (pattern != NULL)
        {
          GtkApplication *app;
          GtkWindow *focused_window;

          if (NULL != (app = GTK_APPLICATION (g_application_get_default ())) &&
              NULL != (focused_window = gtk_application_get_active_window (app)))
            gtk_show_uri_on_window (focused_window,
                                    pattern,
                                    gtk_get_current_event_time (),
                                    NULL);
        }

      return GDK_EVENT_STOP;
    }

  return GTK_WIDGET_CLASS (ide_terminal_parent_class)->button_press_event (widget, button);
}
예제 #10
0
static void
caja_bookmarks_window_response_callback (GtkDialog *dialog,
        int response_id,
        gpointer callback_data)
{
    if (response_id == GTK_RESPONSE_HELP)
    {
        GError *error = NULL;

#if GTK_CHECK_VERSION (3, 22, 0)
        gtk_show_uri_on_window (GTK_WINDOW (dialog),
                                "help:mate-user-guide/goscaja-36",
                                gtk_get_current_event_time (), &error);
#else
        gtk_show_uri (gtk_window_get_screen (GTK_WINDOW (dialog)),
                      "help:mate-user-guide/goscaja-36",
                      gtk_get_current_event_time (), &error);
#endif

        if (error)
        {
            GtkWidget *err_dialog;
            err_dialog = gtk_message_dialog_new (GTK_WINDOW (dialog),
                                                 GTK_DIALOG_DESTROY_WITH_PARENT,
                                                 GTK_MESSAGE_ERROR,
                                                 GTK_BUTTONS_OK,
                                                 _("There was an error displaying help: \n%s"),
                                                 error->message);

            g_signal_connect (G_OBJECT (err_dialog),
                              "response", G_CALLBACK (gtk_widget_destroy),
                              NULL);
            gtk_window_set_resizable (GTK_WINDOW (err_dialog), FALSE);
            gtk_widget_show (err_dialog);
            g_error_free (error);
        }
    }
    else if (response_id == GTK_RESPONSE_CLOSE)
    {
        gtk_widget_hide (GTK_WIDGET (dialog));
    }
}
예제 #11
0
static void
help_cb (GtkAction       *action,
	 MultiloadApplet *ma)
{

 	GError *error = NULL;

	gtk_show_uri_on_window (NULL,
	                        "help:mate-multiload",
	                        gtk_get_current_event_time (),
	                        &error);

    	if (error) { /* FIXME: the user needs to see this */
        	g_warning ("help error: %s\n", error->message);
        	g_error_free (error);
        	error = NULL;
    	}


}
예제 #12
0
static gboolean
ide_terminal_open_link (IdeTerminal *self)
{
  IdeTerminalPrivate *priv = ide_terminal_get_instance_private (self);
  GtkApplication *app;
  GtkWindow *focused_window;

  g_assert (IDE_IS_TERMINAL (self));
  g_assert (priv->url != NULL);

  if (dzl_str_empty0 (priv->url))
    return FALSE;

  if (NULL != (app = GTK_APPLICATION (g_application_get_default ())) &&
      NULL != (focused_window = gtk_application_get_active_window (app)))
    return gtk_show_uri_on_window (focused_window,
                                   priv->url,
                                   gtk_get_current_event_time (),
                                   NULL);

  return FALSE;
}
예제 #13
0
static void
help_cb (GtkAction     *action,
	 charpick_data *curr_data)
{
  GError *error = NULL;

#if GTK_CHECK_VERSION (3, 22, 0)
  gtk_show_uri_on_window (NULL,
                          "help:mate-char-palette",
                          gtk_get_current_event_time (),
                          &error);
#else
  gtk_show_uri (gtk_widget_get_screen (GTK_WIDGET (curr_data->applet)),
                "help:mate-char-palette",
                gtk_get_current_event_time (),
                &error);
#endif

  if (error) { /* FIXME: the user needs to see this */
    g_warning ("help error: %s\n", error->message);
    g_error_free (error);
    error = NULL;
  }
}
예제 #14
0
static void
gs_page_app_purchased_cb (GObject *source,
                          GAsyncResult *res,
                          gpointer user_data)
{
	g_autoptr(GsPageHelper) helper = (GsPageHelper *) user_data;
	GsPluginLoader *plugin_loader = GS_PLUGIN_LOADER (source);
	GsPage *page = helper->page;
	GsPagePrivate *priv = gs_page_get_instance_private (page);
	gboolean ret;
	g_autoptr(GsPluginJob) plugin_job = NULL;
	g_autoptr(GError) error = NULL;

	ret = gs_plugin_loader_job_action_finish (plugin_loader,
						  res,
						  &error);
	if (g_error_matches (error,
			     GS_PLUGIN_ERROR,
			     GS_PLUGIN_ERROR_CANCELLED)) {
		g_debug ("%s", error->message);
		return;
	}
	if (!ret) {
		/* try to authenticate then retry */
		if (g_error_matches (error,
				     GS_PLUGIN_ERROR,
				     GS_PLUGIN_ERROR_AUTH_REQUIRED)) {
			gs_page_authenticate (page,
					      helper->app,
					      gs_utils_get_error_value (error),
					      helper->cancellable,
					      gs_page_purchase_authenticate_cb,
					      helper);
			g_steal_pointer (&helper);
			return;
		} else if (g_error_matches (error,
		                            GS_PLUGIN_ERROR,
		                            GS_PLUGIN_ERROR_PURCHASE_NOT_SETUP)) {
			const gchar *url;

			/* have we been given a link */
			url = gs_utils_get_error_value (error);
			if (url != NULL) {
				g_autoptr(GError) error_local = NULL;
				g_debug ("showing link in: %s", error->message);
				if (!gtk_show_uri_on_window (GTK_WINDOW (gs_shell_get_window (priv->shell)),
				                             url,
				                             GDK_CURRENT_TIME,
				                             &error_local)) {
					g_warning ("failed to show URI %s: %s",
					           url, error_local->message);
				}
				return;
			}
		}

		g_warning ("failed to purchase %s: %s",
		           gs_app_get_id (helper->app),
		           error->message);
		return;
	}

	if (gs_app_get_state (helper->app) != AS_APP_STATE_AVAILABLE) {
		g_warning ("no plugin purchased %s",
		           gs_app_get_id (helper->app));
		return;
	}

	/* now install */
	plugin_job = gs_plugin_job_newv (GS_PLUGIN_ACTION_INSTALL,
					 "interactive", TRUE,
					 "app", helper->app,
					 NULL);
	gs_plugin_loader_job_process_async (priv->plugin_loader,
					    plugin_job,
					    helper->cancellable,
					    gs_page_app_installed_cb,
					    helper);
	g_steal_pointer (&helper);
}