Commit 93290192c1ee1577bc106f1103c5528ea41ce48c

Authored by Perry Werneck
1 parent 0054c1c3
Exists in master and in 1 other branch develop

Rewriting color scheme selector.

colors.conf
... ... @@ -31,7 +31,7 @@ label=PW3270 default
31 31 base=#000000;#7890F0;#FF0000;#FF00FF;#00FF00;#00FFFF;#FFFF00;#FFFFFF;#000000;#000080;#FFA200;#800080;#008000;#008080;#A0A000;#C0C0C0
32 32 field=#00FF00;#FF0000;#00FFFF;#FFFFFF
33 33 selection=#404040;#ffffff
34   -OIA=#000000;#00FF00;#7890F0;#FFFFFF;#FF0000
  34 +OIA=#000000;#00FF00;#7890F0;#FFFFFF;#FFFF00
35 35  
36 36 cross-hair=#00FF00
37 37  
... ...
src/dialogs/colorscheme.c
... ... @@ -308,3 +308,59 @@
308 308 return widget;
309 309 }
310 310  
  311 + static gboolean compare_colors(const GdkRGBA *colora, const GdkRGBA *colorb)
  312 + {
  313 + int f;
  314 +
  315 + for(f=0;f<V3270_COLOR_COUNT;f++)
  316 + {
  317 + if(!gdk_rgba_equal(colora+f,colorb+f))
  318 + {
  319 +#ifdef DEBUG
  320 + g_autofree gchar * cla = gdk_rgba_to_string(colora+f);
  321 + g_autofree gchar * clb = gdk_rgba_to_string(colorb+f);
  322 +
  323 + debug(
  324 + "diff on %d of %d %s - %s",
  325 + f,
  326 + V3270_COLOR_COUNT,
  327 + cla,
  328 + clb
  329 + );
  330 +#endif // DEBUG
  331 +
  332 + return FALSE;
  333 + }
  334 + }
  335 +
  336 + return TRUE;
  337 + }
  338 +
  339 + void v3270_color_scheme_set_rgba(GtkWidget *widget, const GdkRGBA *colors)
  340 + {
  341 + GtkTreeModel * model = gtk_combo_box_get_model(GTK_COMBO_BOX(widget));
  342 + GtkTreeIter iter;
  343 +
  344 + if(gtk_tree_model_get_iter_first(model,&iter))
  345 + {
  346 + do
  347 + {
  348 + GdkRGBA * clr = NULL;
  349 + GValue value = { 0, };
  350 +
  351 + gtk_tree_model_get_value(model,&iter,1,&value);
  352 + clr = g_value_get_pointer(&value);
  353 +
  354 + debug("%p",clr);
  355 +
  356 + if(clr && compare_colors(clr,colors))
  357 + {
  358 + gtk_combo_box_set_active_iter(GTK_COMBO_BOX(widget),&iter);
  359 + break;
  360 + }
  361 +
  362 + } while(gtk_tree_model_iter_next(model,&iter));
  363 + }
  364 +
  365 +
  366 + }
... ...
src/include/v3270/colorscheme.h
... ... @@ -47,7 +47,8 @@
47 47  
48 48 /*--[ Prototipes ]-----------------------------------------------------------------------------------*/
49 49  
50   - LIB3270_EXPORT GtkWidget * v3270_color_scheme_new();
  50 + LIB3270_EXPORT GtkWidget * v3270_color_scheme_new();
  51 + LIB3270_EXPORT void v3270_color_scheme_set_rgba(GtkWidget *widget, const GdkRGBA *colors);
51 52  
52 53 G_END_DECLS
53 54  
... ...
src/testprogram/testprogram.c
... ... @@ -90,7 +90,7 @@ static void trace_window_destroy(G_GNUC_UNUSED GtkWidget *widget, H3270 *hSessio
90 90 lib3270_set_toggle(hSession,LIB3270_TOGGLE_NETWORK_TRACE,0);
91 91 }
92 92  
93   -static void color_scheme_changed(GtkWidget *widget, const GdkRGBA *colors, GtkWidget *terminal) {
  93 +static void color_scheme_changed(GtkWidget G_GNUC_UNUSED(*widget), const GdkRGBA *colors, GtkWidget *terminal) {
94 94  
95 95 debug("%s=%p",__FUNCTION__,colors);
96 96  
... ... @@ -173,6 +173,7 @@ static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) {
173 173 GtkWidget *grid = gtk_grid_new();
174 174 GtkWidget *color = v3270_color_scheme_new();
175 175  
  176 + v3270_color_scheme_set_rgba(color,v3270_get_color_table(terminal));
176 177 g_signal_connect(G_OBJECT(color),"update-colors",G_CALLBACK(color_scheme_changed),terminal);
177 178  
178 179 gtk_grid_attach(GTK_GRID(grid),color,0,0,1,1);
... ...
src/v3270/colors.c
... ... @@ -70,7 +70,7 @@ const gchar * v3270_default_colors =
70 70 "#7890F0," // V3270_COLOR_OIA_SEPARATOR
71 71 "#FFFFFF," // V3270_COLOR_OIA_STATUS_OK
72 72 "#FFFF00," // V3270_COLOR_OIA_STATUS_WARNING
73   - "#FF0000"; // V3270_COLOR_OIA_STATUS_INVALID
  73 + "#FFFF00"; // V3270_COLOR_OIA_STATUS_INVALID
74 74  
75 75  
76 76 /*--[ Implement ]------------------------------------------------------------------------------------*/
... ...