X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=gtk%2Fxoptions.c;h=6e029aa8fc2e8e075943905ba721876f38db5ce3;hb=981710835fb91625593928380d26952642118781;hp=c4c4bd73990bf8cd10daedaf744d6f90182ec784;hpb=d57379116670e685638d980aa8432b3371f70f0a;p=xboard.git diff --git a/gtk/xoptions.c b/gtk/xoptions.c index c4c4bd7..6e029aa 100644 --- a/gtk/xoptions.c +++ b/gtk/xoptions.c @@ -279,12 +279,35 @@ ApplyFont (Option *opt, char *font) case ListBox: case Label: w = opt->handle; break; case Button: if(opt->handle) w = gtk_bin_get_child(GTK_BIN(opt->handle)); break; - case TextBox: w = opt->textValue; if(!w) w = opt->handle; break; + case TextBox: w = (GtkWidget *) opt->textValue; if(!w) w = opt->handle; break; default: ; } if(w && font) SetWidgetFont(w, &font); } +GtkWidget *fbutton; + +void +FontCallback (GtkWidget *widget, gpointer gdata) +{ + Option *opt = (Option *) gdata; + gchar *p = (char *) gtk_font_button_get_font_name(GTK_FONT_BUTTON(fbutton)); + SetWidgetText(opt, p, TransientDlg); + ApplyFont(opt, p); +} + +void +ColorCallback (GtkWidget *widget, gpointer gdata) +{ + Option *opt = (Option *) gdata; + GdkColor rgba; + char buf[MSG_SIZ]; + gtk_color_button_get_color(GTK_COLOR_BUTTON(widget), &rgba); + snprintf(buf, MSG_SIZ, "#%02x%02x%02x", rgba.red>>8, rgba.green>>8, rgba.blue>>8); + gtk_widget_modify_bg ( GTK_WIDGET(opt[1].handle), GTK_STATE_NORMAL, &rgba ); + SetWidgetText(opt, buf, TransientDlg); +} + void SetListBoxItem (GtkListStore *store, int n, char *msg) { @@ -615,6 +638,11 @@ AppendColorized (Option *opt, char *s, int count) static GtkTextIter end; static GtkTextTag *fgTags[8], *bgTags[8], *font, *bold, *normal, *attr = NULL; + if(!s) { + font = NULL; + return; + } + if(!font) { font = gtk_text_buffer_create_tag(opt->handle, NULL, "font", appData.icsFont, NULL); gtk_widget_modify_base(GTK_WIDGET(opt->textValue), GTK_STATE_NORMAL, &backgroundColor); @@ -997,6 +1025,7 @@ GraphEventProc(GtkWidget *widget, GdkEvent *event, gpointer gdata) case GDK_SCROLL: if(sevent->direction == GDK_SCROLL_UP) button = 4; if(sevent->direction == GDK_SCROLL_DOWN) button = 5; + w = h = 0; // to keep Clang happy break; case GDK_MOTION_NOTIFY: f = 0; @@ -1383,7 +1412,7 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width); case FileName: case PathName: tBox: - label = gtk_label_new(option[i].name); + label = gtk_label_new(_(option[i].name)); /* Left Justify */ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); @@ -1478,7 +1507,7 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width); } break; case CheckBox: - checkbutton = gtk_check_button_new_with_label(option[i].name); + checkbutton = gtk_check_button_new_with_label(_(option[i].name)); g_signal_connect(checkbutton, "button-press-event", G_CALLBACK (HelpEvent), (gpointer) option[i].name ); if(!currentCps) option[i].value = *(Boolean*)option[i].target; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), option[i].value); @@ -1491,7 +1520,7 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width); Pack(hbox, table, label, left, left+2, top, 0); break; case Label: - option[i].handle = (void *) (label = gtk_label_new(option[i].name)); + option[i].handle = (void *) (label = gtk_label_new(_(option[i].name))); /* Left Justify */ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); SetWidgetFont(label, option[i].font); @@ -1515,7 +1544,22 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width); break; case SaveButton: case Button: - button = gtk_button_new_with_label (option[i].name); + if(!strcmp(option[i].name, "fontsel")) { + option[i].handle = (void *) (fbutton = gtk_font_button_new()); + Pack(hbox, table, fbutton, left, left+r, top, 0); + break; + } + if(!strcmp(option[i].name, "R") || !strcmp(option[i].name, "G") || !strcmp(option[i].name, "B")) { + break; + } else + if(!strcmp(option[i].name, "D")) { + GdkColor color; + char *name; + GetWidgetText(&option[i-5], &name); + gdk_color_parse(name, &color); + option[i].handle = (void *) (button = gtk_color_button_new_with_color(&color)); + } else + button = gtk_button_new_with_label (_(option[i].name)); SetWidgetFont(gtk_bin_get_child(GTK_BIN(button)), option[i].font); /* set button color on view board dialog */ @@ -1539,12 +1583,18 @@ if(appData.debugMode) printf("n=%d, h=%d, w=%d\n",n,height,width); } Pack(hbox, table, button, left, left+1, top, 0); + if(!strcmp(option[i].name, "D")) // color button + g_signal_connect (button, "color-set", G_CALLBACK (ColorCallback), (gpointer) &option[i-5]); + else + if(option[i].value == 666 && !strcmp(option[i].name, "*")) // font-assignment buttons + g_signal_connect (button, "clicked", G_CALLBACK (FontCallback), (gpointer) &option[i-5]); + else g_signal_connect (button, "clicked", G_CALLBACK (GenericCallback), (gpointer)(intptr_t) i + (dlgNr<<16)); g_signal_connect(button, "button-press-event", G_CALLBACK (HelpEvent), (gpointer) option[i].name ); option[i].handle = (void*)button; break; case ComboBox: - label = gtk_label_new(option[i].name); + label = gtk_label_new(_(option[i].name)); /* Left Justify */ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); button = gtk_event_box_new();