Commit 93290192c1ee1577bc106f1103c5528ea41ce48c

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

Rewriting color scheme selector.

@@ -31,7 +31,7 @@ label=PW3270 default @@ -31,7 +31,7 @@ label=PW3270 default
31 base=#000000;#7890F0;#FF0000;#FF00FF;#00FF00;#00FFFF;#FFFF00;#FFFFFF;#000000;#000080;#FFA200;#800080;#008000;#008080;#A0A000;#C0C0C0 31 base=#000000;#7890F0;#FF0000;#FF00FF;#00FF00;#00FFFF;#FFFF00;#FFFFFF;#000000;#000080;#FFA200;#800080;#008000;#008080;#A0A000;#C0C0C0
32 field=#00FF00;#FF0000;#00FFFF;#FFFFFF 32 field=#00FF00;#FF0000;#00FFFF;#FFFFFF
33 selection=#404040;#ffffff 33 selection=#404040;#ffffff
34 -OIA=#000000;#00FF00;#7890F0;#FFFFFF;#FF0000 34 +OIA=#000000;#00FF00;#7890F0;#FFFFFF;#FFFF00
35 35
36 cross-hair=#00FF00 36 cross-hair=#00FF00
37 37
src/dialogs/colorscheme.c
@@ -308,3 +308,59 @@ @@ -308,3 +308,59 @@
308 return widget; 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,7 +47,8 @@
47 47
48 /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ 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 G_END_DECLS 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,7 +90,7 @@ static void trace_window_destroy(G_GNUC_UNUSED GtkWidget *widget, H3270 *hSessio
90 lib3270_set_toggle(hSession,LIB3270_TOGGLE_NETWORK_TRACE,0); 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 debug("%s=%p",__FUNCTION__,colors); 95 debug("%s=%p",__FUNCTION__,colors);
96 96
@@ -173,6 +173,7 @@ static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) { @@ -173,6 +173,7 @@ static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) {
173 GtkWidget *grid = gtk_grid_new(); 173 GtkWidget *grid = gtk_grid_new();
174 GtkWidget *color = v3270_color_scheme_new(); 174 GtkWidget *color = v3270_color_scheme_new();
175 175
  176 + v3270_color_scheme_set_rgba(color,v3270_get_color_table(terminal));
176 g_signal_connect(G_OBJECT(color),"update-colors",G_CALLBACK(color_scheme_changed),terminal); 177 g_signal_connect(G_OBJECT(color),"update-colors",G_CALLBACK(color_scheme_changed),terminal);
177 178
178 gtk_grid_attach(GTK_GRID(grid),color,0,0,1,1); 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,7 +70,7 @@ const gchar * v3270_default_colors =
70 "#7890F0," // V3270_COLOR_OIA_SEPARATOR 70 "#7890F0," // V3270_COLOR_OIA_SEPARATOR
71 "#FFFFFF," // V3270_COLOR_OIA_STATUS_OK 71 "#FFFFFF," // V3270_COLOR_OIA_STATUS_OK
72 "#FFFF00," // V3270_COLOR_OIA_STATUS_WARNING 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 /*--[ Implement ]------------------------------------------------------------------------------------*/ 76 /*--[ Implement ]------------------------------------------------------------------------------------*/