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 | 240 | GdkColor * table = g_new0(GdkColor,(len*V3270_COLOR_COUNT)); |
| 241 | 241 | int pos = 0; |
| 242 | 242 | int g; |
| 243 | + gboolean found = FALSE; | |
| 243 | 244 | |
| 244 | 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 | 266 | // It's the same color, select iter |
| 266 | 267 | trace("Current color scheme is \"%s\"",group[g]); |
| 267 | 268 | gtk_combo_box_set_active_iter(GTK_COMBO_BOX(widget),&iter); |
| 269 | + found = TRUE; | |
| 268 | 270 | } |
| 269 | 271 | |
| 270 | 272 | // move to next color list |
| 271 | 273 | pos += V3270_COLOR_COUNT; |
| 272 | 274 | } |
| 273 | 275 | |
| 274 | - | |
| 275 | 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 | 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 | 421 | GtkWidget * color; |
| 396 | 422 | GdkColor saved[V3270_COLOR_COUNT]; |
| 397 | 423 | |
| 424 | + // Color dialog setup | |
| 398 | 425 | { |
| 399 | - // Color dialog setup | |
| 400 | 426 | color = gtk_color_selection_new(); |
| 401 | 427 | gtk_widget_set_sensitive(color,0); |
| 402 | 428 | gtk_color_selection_set_has_opacity_control(GTK_COLOR_SELECTION(color),FALSE); | ... | ... |