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 | 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 ]------------------------------------------------------------------------------------*/ | ... | ... |