Commit 93290192c1ee1577bc106f1103c5528ea41ce48c
1 parent
0054c1c3
Exists in
master
and in
1 other branch
Rewriting color scheme selector.
Showing
5 changed files
with
62 additions
and
4 deletions
Show diff stats
colors.conf
@@ -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 ]------------------------------------------------------------------------------------*/ |