Commit de623e2209a90e37ba7c6e922008d3829ad8fec4
1 parent
83388820
Exists in
master
and in
5 other branches
Incluindo dropdown específico quando a lista de cores atual é personalizada
Showing
1 changed file
with
28 additions
and
2 deletions
Show diff stats
src/pw3270/colors.c
| @@ -240,6 +240,7 @@ static void load_color_scheme(GKeyFile *conf, const gchar *group, GdkColor *clr) | @@ -240,6 +240,7 @@ static void load_color_scheme(GKeyFile *conf, const gchar *group, GdkColor *clr) | ||
| 240 | GdkColor * table = g_new0(GdkColor,(len*V3270_COLOR_COUNT)); | 240 | GdkColor * table = g_new0(GdkColor,(len*V3270_COLOR_COUNT)); |
| 241 | int pos = 0; | 241 | int pos = 0; |
| 242 | int g; | 242 | int g; |
| 243 | + gboolean found = FALSE; | ||
| 243 | 244 | ||
| 244 | g_signal_connect(G_OBJECT(widget),"changed",G_CALLBACK(color_scheme_changed),0); | 245 | g_signal_connect(G_OBJECT(widget),"changed",G_CALLBACK(color_scheme_changed),0); |
| 245 | 246 | ||
| @@ -265,15 +266,40 @@ static void load_color_scheme(GKeyFile *conf, const gchar *group, GdkColor *clr) | @@ -265,15 +266,40 @@ static void load_color_scheme(GKeyFile *conf, const gchar *group, GdkColor *clr) | ||
| 265 | // It's the same color, select iter | 266 | // It's the same color, select iter |
| 266 | trace("Current color scheme is \"%s\"",group[g]); | 267 | trace("Current color scheme is \"%s\"",group[g]); |
| 267 | gtk_combo_box_set_active_iter(GTK_COMBO_BOX(widget),&iter); | 268 | gtk_combo_box_set_active_iter(GTK_COMBO_BOX(widget),&iter); |
| 269 | + found = TRUE; | ||
| 268 | } | 270 | } |
| 269 | 271 | ||
| 270 | // move to next color list | 272 | // move to next color list |
| 271 | pos += V3270_COLOR_COUNT; | 273 | pos += V3270_COLOR_COUNT; |
| 272 | } | 274 | } |
| 273 | 275 | ||
| 274 | - | ||
| 275 | g_strfreev(group); | 276 | g_strfreev(group); |
| 276 | 277 | ||
| 278 | + if(!found) | ||
| 279 | + { | ||
| 280 | + // Custom color table, save it as a new dropdown entry. | ||
| 281 | + | ||
| 282 | + GdkColor * clr = g_new0(GdkColor,V3270_COLOR_COUNT); | ||
| 283 | + int f; | ||
| 284 | + | ||
| 285 | + for(f=0;f<V3270_COLOR_COUNT;f++) | ||
| 286 | + clr[f] = current[f]; | ||
| 287 | + | ||
| 288 | + trace("Current color scheme is \"%s\"","custom"); | ||
| 289 | + | ||
| 290 | + g_object_set_data_full(G_OBJECT(widget),"customcolortable",clr,g_free); | ||
| 291 | + | ||
| 292 | + gtk_list_store_append((GtkListStore *) model,&iter); | ||
| 293 | + gtk_list_store_set((GtkListStore *) model, &iter, | ||
| 294 | + 0, _( "Custom colors" ), | ||
| 295 | + 1, clr, | ||
| 296 | + -1); | ||
| 297 | + | ||
| 298 | + gtk_combo_box_set_active_iter(GTK_COMBO_BOX(widget),&iter); | ||
| 299 | + | ||
| 300 | + } | ||
| 301 | + | ||
| 302 | + | ||
| 277 | gtk_widget_set_sensitive(widget,TRUE); | 303 | gtk_widget_set_sensitive(widget,TRUE); |
| 278 | } | 304 | } |
| 279 | 305 | ||
| @@ -395,8 +421,8 @@ static void load_color_scheme(GKeyFile *conf, const gchar *group, GdkColor *clr) | @@ -395,8 +421,8 @@ static void load_color_scheme(GKeyFile *conf, const gchar *group, GdkColor *clr) | ||
| 395 | GtkWidget * color; | 421 | GtkWidget * color; |
| 396 | GdkColor saved[V3270_COLOR_COUNT]; | 422 | GdkColor saved[V3270_COLOR_COUNT]; |
| 397 | 423 | ||
| 424 | + // Color dialog setup | ||
| 398 | { | 425 | { |
| 399 | - // Color dialog setup | ||
| 400 | color = gtk_color_selection_new(); | 426 | color = gtk_color_selection_new(); |
| 401 | gtk_widget_set_sensitive(color,0); | 427 | gtk_widget_set_sensitive(color,0); |
| 402 | gtk_color_selection_set_has_opacity_control(GTK_COLOR_SELECTION(color),FALSE); | 428 | gtk_color_selection_set_has_opacity_control(GTK_COLOR_SELECTION(color),FALSE); |