Commit 6fde193e4797b46eb8271ee81258aed9d2108199
1 parent
af1ef82c
Exists in
master
and in
1 other branch
Adding convenience method for comboboxes.
Showing
3 changed files
with
60 additions
and
4 deletions
Show diff stats
src/dialogs/settings/clipboard.c
... | ... | @@ -33,6 +33,7 @@ |
33 | 33 | */ |
34 | 34 | |
35 | 35 | #include "private.h" |
36 | + #include <terminal.h> | |
36 | 37 | #include <v3270/settings.h> |
37 | 38 | #include <lib3270/log.h> |
38 | 39 | |
... | ... | @@ -319,19 +320,20 @@ GtkWidget * v3270_clipboard_settings_new() { |
319 | 320 | |
320 | 321 | V3270Settings * settings = GTK_V3270_SETTINGS(g_object_new(V3270ClipboardSettings_get_type(), NULL)); |
321 | 322 | |
322 | - settings->title = _("Cut & Paste settings"); | |
323 | + settings->title = _("Clipboard properties"); | |
323 | 324 | settings->label = _("Clipboard"); |
324 | 325 | |
325 | 326 | return GTK_WIDGET(settings); |
326 | 327 | } |
327 | 328 | |
328 | -static void load(GtkWidget *w, GtkWidget *terminal) { | |
329 | +static void load(GtkWidget *w, GtkWidget *t) { | |
329 | 330 | |
330 | 331 | size_t ix; |
331 | 332 | |
332 | 333 | V3270ClipboardSettings *widget = (V3270ClipboardSettings *) w; |
334 | + v3270 *terminal = GTK_V3270(t); | |
333 | 335 | |
334 | - v3270_settings_load_toggle_buttons(toggles, G_N_ELEMENTS(toggles), terminal, widget->input.toggles); | |
336 | + v3270_settings_load_toggle_buttons(toggles, G_N_ELEMENTS(toggles), t, widget->input.toggles); | |
335 | 337 | |
336 | 338 | // HTML Font combo |
337 | 339 | { |
... | ... | @@ -358,7 +360,7 @@ static void load(GtkWidget *w, GtkWidget *terminal) { |
358 | 360 | |
359 | 361 | PangoFontFamily **families; |
360 | 362 | gint n_families; |
361 | - pango_context_list_families(gtk_widget_get_pango_context(terminal),&families, &n_families); | |
363 | + pango_context_list_families(gtk_widget_get_pango_context(t),&families, &n_families); | |
362 | 364 | |
363 | 365 | for(ix=0; ((gint) ix) < n_families; ix++) { |
364 | 366 | |
... | ... | @@ -377,6 +379,8 @@ static void load(GtkWidget *w, GtkWidget *terminal) { |
377 | 379 | |
378 | 380 | } |
379 | 381 | |
382 | + gtk_combo_box_select_column_uint(widget->input.combos[2],1,((terminal->selection.options & V3270_SELECTION_PLAIN_TEXT) ? 0 : 1)); | |
383 | + | |
380 | 384 | } |
381 | 385 | |
382 | 386 | static void apply(GtkWidget *w, GtkWidget *terminal) { | ... | ... |
src/dialogs/settings/private.h
... | ... | @@ -34,6 +34,8 @@ |
34 | 34 | #include <lib3270/toggle.h> |
35 | 35 | #include <v3270/settings.h> |
36 | 36 | |
37 | + G_GNUC_INTERNAL void gtk_combo_box_select_column_uint(GtkComboBox * combo_box, gint column, guint value); | |
38 | + | |
37 | 39 | /// @brief Toggle button factory. |
38 | 40 | struct ToggleButtonDefinition { |
39 | 41 | gint left; | ... | ... |
src/dialogs/settings/tools.c
... | ... | @@ -131,4 +131,54 @@ |
131 | 131 | |
132 | 132 | } |
133 | 133 | |
134 | + struct combo_select_uint { | |
135 | + GtkComboBox * combo_box; | |
136 | + gint column; | |
137 | + guint new_value; | |
138 | + }; | |
139 | + | |
140 | + static gboolean test_combo_select_uint(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, struct combo_select_uint *arg) { | |
141 | + | |
142 | + // Get value | |
143 | + GValue value = { 0, }; | |
144 | + gtk_tree_model_get_value(model,iter,arg->column,&value); | |
145 | + guint row_value = g_value_get_uint(&value); | |
146 | + g_value_unset(&value); | |
147 | + | |
148 | + if(row_value == arg->new_value) { | |
149 | + gtk_combo_box_set_active_iter(arg->combo_box,iter); | |
150 | + return TRUE; | |
151 | + } | |
152 | + | |
153 | + return FALSE; | |
154 | + } | |
155 | + | |
156 | + void gtk_combo_box_select_column_uint(GtkComboBox * combo_box, gint column, guint new_value) { | |
157 | + | |
158 | + GtkTreeIter iter; | |
159 | + GtkListStore * list = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combo_box))); | |
160 | + | |
161 | + // Is the value already selected? | |
162 | + if(gtk_combo_box_get_active_iter(GTK_COMBO_BOX(combo_box),&iter)) { | |
163 | + | |
164 | + GValue value = { 0, }; | |
165 | + gtk_tree_model_get_value(GTK_TREE_MODEL(list),&iter,column,&value); | |
166 | + guint active = g_value_get_uint(&value); | |
167 | + g_value_unset(&value); | |
168 | + | |
169 | + if(active == new_value) | |
170 | + return; | |
171 | + | |
172 | + } | |
173 | + | |
174 | + // No, it's not, find one. | |
175 | + struct combo_select_uint arg = { | |
176 | + .combo_box = combo_box, | |
177 | + .column = column, | |
178 | + .new_value = new_value | |
179 | + }; | |
180 | + | |
181 | + gtk_tree_model_foreach(GTK_TREE_MODEL(list),(GtkTreeModelForeachFunc) test_combo_select_uint, &arg); | |
182 | + } | |
183 | + | |
134 | 184 | ... | ... |