Commit 3d803db4a6158aac9c34cab61478ca0929323267
1 parent
92fe45f7
Exists in
master
and in
1 other branch
Implement common settings dialog box.
Showing
2 changed files
with
58 additions
and
3 deletions
Show diff stats
src/dialogs/settings.c
| @@ -35,12 +35,12 @@ | @@ -35,12 +35,12 @@ | ||
| 35 | 35 | ||
| 36 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 36 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
| 37 | 37 | ||
| 38 | -static void apply(GtkWidget *widget, GtkWidget *terminal) | 38 | +static void apply(GtkWidget G_GNUC_UNUSED(*widget), GtkWidget G_GNUC_UNUSED(*terminal)) |
| 39 | { | 39 | { |
| 40 | 40 | ||
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | -static void revert(GtkWidget *widget, GtkWidget *terminal) | 43 | +static void revert(GtkWidget G_GNUC_UNUSED(*widget), GtkWidget G_GNUC_UNUSED(*terminal)) |
| 44 | { | 44 | { |
| 45 | 45 | ||
| 46 | } | 46 | } |
| @@ -76,3 +76,57 @@ LIB3270_EXPORT void v3270_settings_set_terminal_widget(GtkWidget *widget, GtkWid | @@ -76,3 +76,57 @@ LIB3270_EXPORT void v3270_settings_set_terminal_widget(GtkWidget *widget, GtkWid | ||
| 76 | g_return_if_fail(GTK_IS_V3270_SETTINGS(widget)); | 76 | g_return_if_fail(GTK_IS_V3270_SETTINGS(widget)); |
| 77 | GTK_V3270_SETTINGS_GET_CLASS(widget)->revert(widget,GTK_V3270_SETTINGS(widget)->terminal); | 77 | GTK_V3270_SETTINGS_GET_CLASS(widget)->revert(widget,GTK_V3270_SETTINGS(widget)->terminal); |
| 78 | } | 78 | } |
| 79 | + | ||
| 80 | + void on_response(GtkDialog G_GNUC_UNUSED(*dialog), gint response_id, GtkWidget *settings) | ||
| 81 | + { | ||
| 82 | + switch(response_id) | ||
| 83 | + { | ||
| 84 | + case GTK_RESPONSE_APPLY: | ||
| 85 | + v3270_settings_apply(settings); | ||
| 86 | + break; | ||
| 87 | + | ||
| 88 | + case GTK_RESPONSE_CANCEL: | ||
| 89 | + v3270_settings_revert(settings); | ||
| 90 | + break; | ||
| 91 | + | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + } | ||
| 95 | + | ||
| 96 | + LIB3270_EXPORT GtkWidget * v3270_settings_dialog_nwidgetew(GtkWidget *terminal, GtkWidget *settings) | ||
| 97 | + { | ||
| 98 | +#if GTK_CHECK_VERSION(3,12,0) | ||
| 99 | + | ||
| 100 | + gboolean use_header; | ||
| 101 | + g_object_get(gtk_settings_get_default(), "gtk-dialogs-use-header", &use_header, NULL); | ||
| 102 | + | ||
| 103 | + GtkWidget * dialog = | ||
| 104 | + GTK_WIDGET(g_object_new( | ||
| 105 | + GTK_TYPE_DIALOG, | ||
| 106 | + "use-header-bar", (use_header ? 1 : 0), | ||
| 107 | + NULL | ||
| 108 | + )); | ||
| 109 | + | ||
| 110 | +#else | ||
| 111 | + | ||
| 112 | + GtkWidget * dialog = gtk_dialog_new(); | ||
| 113 | + | ||
| 114 | +#endif // GTK 3.12 | ||
| 115 | + | ||
| 116 | + gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),settings,FALSE,FALSE,2); | ||
| 117 | + v3270_settings_set_terminal_widget(settings,terminal); | ||
| 118 | + | ||
| 119 | + g_signal_connect(G_OBJECT(dialog),"response",G_CALLBACK(on_response),settings); | ||
| 120 | + | ||
| 121 | + gtk_window_set_deletable(GTK_WINDOW(dialog),FALSE); | ||
| 122 | + | ||
| 123 | + // https://developer.gnome.org/hig/stable/visual-layout.html.en | ||
| 124 | + gtk_container_set_border_width(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),18); | ||
| 125 | + | ||
| 126 | + gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(gtk_widget_get_toplevel(terminal))); | ||
| 127 | + gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); | ||
| 128 | + gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE); | ||
| 129 | + | ||
| 130 | + | ||
| 131 | + return dialog; | ||
| 132 | + } |
src/include/v3270/settings.h
| @@ -64,7 +64,8 @@ | @@ -64,7 +64,8 @@ | ||
| 64 | LIB3270_EXPORT void v3270_settings_apply(GtkWidget *widget); | 64 | LIB3270_EXPORT void v3270_settings_apply(GtkWidget *widget); |
| 65 | LIB3270_EXPORT void v3270_settings_revert(GtkWidget *widget); | 65 | LIB3270_EXPORT void v3270_settings_revert(GtkWidget *widget); |
| 66 | 66 | ||
| 67 | - LIB3270_EXPORT void v3270_settings_dialog_run(GtkWidget *widget, GtkWidget *terminal); | 67 | + LIB3270_EXPORT GtkWidget * v3270_settings_dialog_new(GtkWidget *terminal, GtkWidget *settings); |
| 68 | + // LIB3270_EXPORT gint v3270_settings_dialog_run(GtkWidget *widget, GtkWidget *terminal); | ||
| 68 | 69 | ||
| 69 | G_END_DECLS | 70 | G_END_DECLS |
| 70 | 71 |