Commit 97a58c8f4ccf02f9ddba64f41f8861562b810a75

Authored by Perry Werneck
1 parent 6fde193e
Exists in master and in 1 other branch develop

Implementing clipboard settings dialog.

src/dialogs/settings/clipboard.c
@@ -88,7 +88,7 @@ @@ -88,7 +88,7 @@
88 .n_columns = 2, 88 .n_columns = 2,
89 .types = (const GType []) { 89 .types = (const GType []) {
90 G_TYPE_STRING, 90 G_TYPE_STRING,
91 - G_TYPE_UINT 91 + G_TYPE_STRING
92 } 92 }
93 93
94 }, 94 },
@@ -105,7 +105,7 @@ @@ -105,7 +105,7 @@
105 .n_columns = 2, 105 .n_columns = 2,
106 .types = (const GType []) { 106 .types = (const GType []) {
107 G_TYPE_STRING, 107 G_TYPE_STRING,
108 - G_TYPE_UINT 108 + G_TYPE_STRING
109 } 109 }
110 110
111 }, 111 },
@@ -122,7 +122,7 @@ @@ -122,7 +122,7 @@
122 .n_columns = 2, 122 .n_columns = 2,
123 .types = (const GType []) { 123 .types = (const GType []) {
124 G_TYPE_STRING, 124 G_TYPE_STRING,
125 - G_TYPE_UINT 125 + G_TYPE_STRING
126 } 126 }
127 127
128 }, 128 },
@@ -168,17 +168,8 @@ static void V3270ClipboardSettings_class_init(V3270ClipboardSettingsClass *klass @@ -168,17 +168,8 @@ static void V3270ClipboardSettings_class_init(V3270ClipboardSettingsClass *klass
168 168
169 static void copy_format_changed(GtkComboBox *widget, GtkWidget *grid) { 169 static void copy_format_changed(GtkComboBox *widget, GtkWidget *grid) {
170 170
171 - GtkTreeIter iter;  
172 -  
173 - if(gtk_combo_box_get_active_iter(widget,&iter)) {  
174 -  
175 - GValue value = { 0, };  
176 - gtk_tree_model_get_value(gtk_combo_box_get_model(widget),&iter,1,&value);  
177 - guint flag = g_value_get_uint(&value);  
178 - gtk_widget_set_sensitive(grid,flag == 1);  
179 - g_value_unset(&value);  
180 -  
181 - } 171 + const gchar * active = gtk_combo_box_get_active_id(widget);
  172 + gtk_widget_set_sensitive(grid,active && *active == '1');
182 173
183 } 174 }
184 175
@@ -235,12 +226,14 @@ static void V3270ClipboardSettings_init(V3270ClipboardSettings *widget) { @@ -235,12 +226,14 @@ static void V3270ClipboardSettings_init(V3270ClipboardSettings *widget) {
235 model = GTK_LIST_STORE(gtk_combo_box_get_model(widget->input.combos[1])); 226 model = GTK_LIST_STORE(gtk_combo_box_get_model(widget->input.combos[1]));
236 for(ix = 0;ix < G_N_ELEMENTS(html_color_options); ix++) { 227 for(ix = 0;ix < G_N_ELEMENTS(html_color_options); ix++) {
237 228
  229 + gchar id[] = { '0' + ix, 0 };
  230 +
238 gtk_list_store_append(model, &iter); 231 gtk_list_store_append(model, &iter);
239 gtk_list_store_set( 232 gtk_list_store_set(
240 model, 233 model,
241 &iter, 234 &iter,
242 0, g_dgettext(PACKAGE_NAME, html_color_options[ix]), 235 0, g_dgettext(PACKAGE_NAME, html_color_options[ix]),
243 - 1, (guint) ix, 236 + 1, id,
244 -1 237 -1
245 ); 238 );
246 239
@@ -276,7 +269,7 @@ static void V3270ClipboardSettings_init(V3270ClipboardSettings *widget) { @@ -276,7 +269,7 @@ static void V3270ClipboardSettings_init(V3270ClipboardSettings *widget) {
276 (GtkListStore *) model, 269 (GtkListStore *) model,
277 &iter, 270 &iter,
278 0, label ? label : group[ix], 271 0, label ? label : group[ix],
279 - 1, (guint) 99, 272 + 1, "S",
280 -1 273 -1
281 ); 274 );
282 275
@@ -296,15 +289,21 @@ static void V3270ClipboardSettings_init(V3270ClipboardSettings *widget) { @@ -296,15 +289,21 @@ static void V3270ClipboardSettings_init(V3270ClipboardSettings *widget) {
296 N_("Complete with terminal attributes") 289 N_("Complete with terminal attributes")
297 }; 290 };
298 291
  292 + gtk_combo_box_set_id_column(widget->input.combos[0],1);
  293 + gtk_combo_box_set_id_column(widget->input.combos[1],1);
  294 + gtk_combo_box_set_id_column(widget->input.combos[2],1);
  295 +
299 model = GTK_LIST_STORE(gtk_combo_box_get_model(widget->input.combos[2])); 296 model = GTK_LIST_STORE(gtk_combo_box_get_model(widget->input.combos[2]));
300 for(ix = 0;ix < G_N_ELEMENTS(copy_formats); ix++) { 297 for(ix = 0;ix < G_N_ELEMENTS(copy_formats); ix++) {
301 298
  299 + gchar id[] = { '0' + ix, 0 };
  300 +
302 gtk_list_store_append(model, &iter); 301 gtk_list_store_append(model, &iter);
303 gtk_list_store_set( 302 gtk_list_store_set(
304 model, 303 model,
305 &iter, 304 &iter,
306 0, g_dgettext(PACKAGE_NAME, copy_formats[ix]), 305 0, g_dgettext(PACKAGE_NAME, copy_formats[ix]),
307 - 1, (guint) ix, 306 + 1, id,
308 -1 307 -1
309 ); 308 );
310 309
@@ -347,12 +346,14 @@ static void load(GtkWidget *w, GtkWidget *t) { @@ -347,12 +346,14 @@ static void load(GtkWidget *w, GtkWidget *t) {
347 gtk_list_store_clear(model); 346 gtk_list_store_clear(model);
348 for(ix = 0;ix < G_N_ELEMENTS(html_font_options); ix++) { 347 for(ix = 0;ix < G_N_ELEMENTS(html_font_options); ix++) {
349 348
  349 + gchar id[] = { '0' + ix, 0 };
  350 +
350 gtk_list_store_append(model, &iter); 351 gtk_list_store_append(model, &iter);
351 gtk_list_store_set( 352 gtk_list_store_set(
352 model, 353 model,
353 &iter, 354 &iter,
354 0, g_dgettext(PACKAGE_NAME, html_font_options[ix]), 355 0, g_dgettext(PACKAGE_NAME, html_font_options[ix]),
355 - 1, (guint) ix, 356 + 1, id,
356 -1 357 -1
357 ); 358 );
358 359
@@ -371,7 +372,7 @@ static void load(GtkWidget *w, GtkWidget *t) { @@ -371,7 +372,7 @@ static void load(GtkWidget *w, GtkWidget *t) {
371 GtkTreeIter iter; 372 GtkTreeIter iter;
372 373
373 gtk_list_store_append((GtkListStore *) model,&iter); 374 gtk_list_store_append((GtkListStore *) model,&iter);
374 - gtk_list_store_set((GtkListStore *) model, &iter,0, name, 1, (guint) 99, -1); 375 + gtk_list_store_set((GtkListStore *) model, &iter,0, name, 1, "S", -1);
375 376
376 } 377 }
377 378
@@ -379,15 +380,82 @@ static void load(GtkWidget *w, GtkWidget *t) { @@ -379,15 +380,82 @@ static void load(GtkWidget *w, GtkWidget *t) {
379 380
380 } 381 }
381 382
382 - gtk_combo_box_select_column_uint(widget->input.combos[2],1,((terminal->selection.options & V3270_SELECTION_PLAIN_TEXT) ? 0 : 1)); 383 + debug("Plain text: %s",((terminal->selection.options & V3270_SELECTION_PLAIN_TEXT) ? "0" : "1"));
  384 + gtk_combo_box_set_active_id(widget->input.combos[2],(terminal->selection.options & (V3270_SELECTION_ENABLE_HTML|V3270_SELECTION_DIALOG_STATE)) == 0 ? "0" : "1");
383 385
384 } 386 }
385 387
386 -static void apply(GtkWidget *w, GtkWidget *terminal) { 388 +static gchar get_active_id(V3270ClipboardSettings *widget, size_t combo) {
  389 +
  390 + const gchar * id = gtk_combo_box_get_active_id(widget->input.combos[combo]);
  391 +
  392 + if(id)
  393 + return id[0];
  394 +
  395 + return '?';
  396 +}
  397 +
  398 +static void apply(GtkWidget *w, GtkWidget *t) {
387 399
388 V3270ClipboardSettings *widget = (V3270ClipboardSettings *) w; 400 V3270ClipboardSettings *widget = (V3270ClipboardSettings *) w;
  401 + v3270 *terminal = GTK_V3270(t);
  402 +
  403 + v3270_settings_apply_toggle_buttons(toggles,G_N_ELEMENTS(toggles),t,widget->input.toggles);
  404 +
  405 + if(gtk_combo_box_get_active_id(widget->input.combos[2])[0] == '0') {
389 406
390 - v3270_settings_apply_toggle_buttons(toggles,G_N_ELEMENTS(toggles),terminal,widget->input.toggles); 407 + terminal->selection.options &= ~(V3270_SELECTION_ENABLE_HTML|V3270_SELECTION_DIALOG_STATE);
  408 +
  409 + } else {
  410 +
  411 + terminal->selection.options |= V3270_SELECTION_DIALOG_STATE;
  412 + terminal->selection.options |= V3270_SELECTION_NON_BREAKABLE_SPACE; // TODO: Use a checkbox to enable-it
  413 +
  414 + // Get font settings
  415 + switch(get_active_id(widget,0)) {
  416 + case '0':
  417 + // Disable font information
  418 + debug("%s","Disable font information");
  419 + terminal->selection.options &= ~V3270_SELECTION_FONT_FAMILY;
  420 + break;
  421 +
  422 + case '1':
  423 + // Use same font of the screen
  424 + debug("%s","Use same font of the screen");
  425 + terminal->selection.options |= V3270_SELECTION_FONT_FAMILY;
  426 + break;
  427 +
  428 + case 'S':
  429 + // Use selected font
  430 + debug("%s","Use selected font");
  431 + terminal->selection.options |= V3270_SELECTION_FONT_FAMILY;
  432 + break;
  433 +
  434 + }
  435 +
  436 + switch(get_active_id(widget,1)) {
  437 + case '0':
  438 +
  439 + // Disable color information
  440 + debug("%s","Disable color information");
  441 + terminal->selection.options &= ~V3270_SELECTION_COLORS;
  442 + break;
  443 +
  444 + case '1':
  445 +
  446 + // Use same colors of the screen
  447 + debug("%s","Use same colors of the screen");
  448 + terminal->selection.options |= V3270_SELECTION_COLORS;
  449 + break;
  450 +
  451 + case 'S':
  452 + // Use selected color scheme
  453 + debug("%s","Use selected color scheme");
  454 + terminal->selection.options |= V3270_SELECTION_COLORS;
  455 +
  456 + }
  457 +
  458 + }
391 459
392 } 460 }
393 461
src/dialogs/settings/private.h
@@ -34,8 +34,6 @@ @@ -34,8 +34,6 @@
34 #include <lib3270/toggle.h> 34 #include <lib3270/toggle.h>
35 #include <v3270/settings.h> 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 -  
39 /// @brief Toggle button factory. 37 /// @brief Toggle button factory.
40 struct ToggleButtonDefinition { 38 struct ToggleButtonDefinition {
41 gint left; 39 gint left;
src/dialogs/settings/tools.c
@@ -131,54 +131,4 @@ @@ -131,54 +131,4 @@
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 -  
184 134
src/include/terminal.h
@@ -124,10 +124,12 @@ G_BEGIN_DECLS @@ -124,10 +124,12 @@ G_BEGIN_DECLS
124 V3270_SELECTION_FONT_FAMILY = 0x0001, ///< @brief Inform font-family. 124 V3270_SELECTION_FONT_FAMILY = 0x0001, ///< @brief Inform font-family.
125 V3270_SELECTION_COLORS = 0x0002, ///< @brief Inform terminal colors. 125 V3270_SELECTION_COLORS = 0x0002, ///< @brief Inform terminal colors.
126 V3270_SELECTION_NON_BREAKABLE_SPACE = 0x0004, ///< @brief Use non breakable spaces. 126 V3270_SELECTION_NON_BREAKABLE_SPACE = 0x0004, ///< @brief Use non breakable spaces.
  127 + V3270_SELECTION_DIALOG_STATE = 0x0010, ///< @brief Used for settings dialog.
127 128
128 } V3270SelectionOption; 129 } V3270SelectionOption;
129 130
130 - #define V3270_SELECTION_DEFAULT (V3270_SELECTION_FONT_FAMILY|V3270_SELECTION_COLORS|V3270_SELECTION_NON_BREAKABLE_SPACE) 131 + #define V3270_SELECTION_DEFAULT (V3270_SELECTION_FONT_FAMILY|V3270_SELECTION_COLORS|V3270_SELECTION_NON_BREAKABLE_SPACE)
  132 + #define V3270_SELECTION_ENABLE_HTML (V3270_SELECTION_FONT_FAMILY|V3270_SELECTION_COLORS|V3270_SELECTION_NON_BREAKABLE_SPACE)
131 133
132 /*--[ Globals ]--------------------------------------------------------------------------------------*/ 134 /*--[ Globals ]--------------------------------------------------------------------------------------*/
133 135