static void gail_window_real_initialize (AtkObject *obj, gpointer data) { GtkWidget *widget = GTK_WIDGET (data); GailWindow *window; /* * A GailWindow can be created for a GtkHandleBox or a GtkWindow */ if (!GTK_IS_WINDOW (widget) && !GTK_IS_HANDLE_BOX (widget)) gail_return_if_fail (FALSE); ATK_OBJECT_CLASS (gail_window_parent_class)->initialize (obj, data); window = GAIL_WINDOW (obj); window->name_change_handler = 0; window->previous_name = g_strdup (gtk_window_get_title (GTK_WINDOW (data))); g_signal_connect (data, "window_state_event", G_CALLBACK (gail_window_state_event_gtk), NULL); g_object_set_data (G_OBJECT (obj), "atk-component-layer", GINT_TO_POINTER (ATK_LAYER_WINDOW)); if (GTK_IS_FILE_SELECTION (widget)) obj->role = ATK_ROLE_FILE_CHOOSER; else if (GTK_IS_COLOR_SELECTION_DIALOG (widget)) obj->role = ATK_ROLE_COLOR_CHOOSER; else if (GTK_IS_FONT_SELECTION_DIALOG (widget)) obj->role = ATK_ROLE_FONT_CHOOSER; else if (GTK_IS_MESSAGE_DIALOG (widget)) obj->role = ATK_ROLE_ALERT; else if (GTK_IS_DIALOG (widget)) obj->role = ATK_ROLE_DIALOG; else { const gchar *name; name = gtk_widget_get_name (widget); if (name && (!strcmp (name, "gtk-tooltip") || !strcmp (name, "gtk-tooltips"))) obj->role = ATK_ROLE_TOOL_TIP; else if (GTK_IS_PLUG (widget)) obj->role = ATK_ROLE_PANEL; else if (GTK_WINDOW (widget)->type == GTK_WINDOW_POPUP) obj->role = ATK_ROLE_WINDOW; else obj->role = ATK_ROLE_FRAME; } /* * Notify that tooltip is showing */ if (obj->role == ATK_ROLE_TOOL_TIP && gtk_widget_get_mapped (widget)) atk_object_notify_state_change (obj, ATK_STATE_SHOWING, 1); }
void gmp_util_show_error_dialog (GtkWindow *transient_parent, GtkWidget **weak_ptr, const char *message_format, ...) { char *message; va_list args; if (message_format) { va_start (args, message_format); message = g_strdup_vprintf (message_format, args); va_end (args); } else message = NULL; if (weak_ptr == NULL || *weak_ptr == NULL) { GtkWidget *dialog; dialog = gtk_message_dialog_new (transient_parent, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s", message); g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (gtk_widget_destroy), NULL); if (weak_ptr != NULL) { *weak_ptr = dialog; g_object_add_weak_pointer (G_OBJECT (dialog), (void**)weak_ptr); } gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE); gtk_widget_show_all (dialog); } else { g_return_if_fail (GTK_IS_MESSAGE_DIALOG (*weak_ptr)); g_object_set (*weak_ptr, "text", message, NULL); gtk_window_present (GTK_WINDOW (*weak_ptr)); } }
gint gnc_dialog_run (GtkDialog *dialog, const gchar *pref_name) { GtkWidget *perm, *temp; gboolean ask = TRUE; gint response; /* Does the user want to see this question? If not, return the * previous answer. */ response = gnc_prefs_get_int(GNC_PREFS_GROUP_WARNINGS_PERM, pref_name); if (response != 0) return response; response = gnc_prefs_get_int(GNC_PREFS_GROUP_WARNINGS_TEMP, pref_name); if (response != 0) return response; /* Add in the checkboxes to find out if the answer should be remembered. */ #if 0 if (GTK_IS_MESSAGE_DIALOG(dialog)) { GtkMessageType type; g_object_get(dialog, "message-type", &type, (gchar*)NULL); ask = (type == GTK_MESSAGE_QUESTION); } else { ask = FALSE; } #endif perm = gtk_check_button_new_with_mnemonic (ask ? _("Remember and don't _ask me again.") : _("Don't _tell me again.")); temp = gtk_check_button_new_with_mnemonic (ask ? _("Remember and don't ask me again this _session.") : _("Don't tell me again this _session.")); gtk_widget_show(perm); gtk_widget_show(temp); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (dialog)), perm, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (dialog)), temp, TRUE, TRUE, 0); g_signal_connect(perm, "clicked", G_CALLBACK(gnc_perm_button_cb), temp); /* OK. Present the dialog. */ response = gtk_dialog_run(dialog); if ((response == GTK_RESPONSE_NONE) || (response == GTK_RESPONSE_DELETE_EVENT)) { return GTK_RESPONSE_CANCEL; } if (response != GTK_RESPONSE_CANCEL) { /* Save the answer? */ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(perm))) { gnc_prefs_set_int(GNC_PREFS_GROUP_WARNINGS_PERM, pref_name, response); } else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp))) { gnc_prefs_set_int(GNC_PREFS_GROUP_WARNINGS_TEMP, pref_name, response); } } return response; }