38
39
GtkWidget *fontbutton;
41
G_DEFINE_TYPE_WITH_PRIVATE(XpadPadProperties, xpad_pad_properties, GTK_TYPE_DIALOG)
42
G_DEFINE_TYPE_WITH_PRIVATE (XpadPadProperties, xpad_pad_properties, GTK_TYPE_DIALOG)
43
static void xpad_pad_properties_dispose (GObject *object);
44
static void xpad_pad_properties_finalize (GObject *object);
45
44
static void xpad_pad_properties_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
46
45
static void xpad_pad_properties_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
47
46
static void xpad_pad_properties_response (GtkDialog *dialog, gint response);
48
47
static void change_color_check (GtkToggleButton *button, XpadPadProperties *prop);
49
48
static void change_font_check (GtkToggleButton *button, XpadPadProperties *prop);
50
static void change_text_color (GtkColorButton *button, XpadPadProperties *prop);
51
static void change_back_color (GtkColorButton *button, XpadPadProperties *prop);
52
static void change_font_face (GtkFontButton *button, XpadPadProperties *prop);
49
static void change_text_color (XpadPadProperties *prop);
50
static void change_back_color (XpadPadProperties *prop);
51
static void change_font_face (XpadPadProperties *prop);
74
75
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
76
gobject_class->dispose = xpad_pad_properties_dispose;
77
gobject_class->finalize = xpad_pad_properties_finalize;
78
77
gobject_class->set_property = xpad_pad_properties_set_property;
79
78
gobject_class->get_property = xpad_pad_properties_get_property;
83
g_object_class_install_property (gobject_class,
84
PROP_FOLLOW_FONT_STYLE,
85
g_param_spec_boolean ("follow-font-style",
87
"Whether to use the default xpad font style",
91
g_object_class_install_property (gobject_class,
92
PROP_FOLLOW_COLOR_STYLE,
93
g_param_spec_boolean ("follow-color-style",
95
"Whether to use the default xpad color style",
99
g_object_class_install_property (gobject_class,
101
g_param_spec_boxed ("text-color",
103
"The color of text in the pad",
107
g_object_class_install_property (gobject_class,
109
g_param_spec_boxed ("back-color",
111
"The color of the background in the pad",
115
g_object_class_install_property (gobject_class,
117
g_param_spec_string ("fontname",
119
"The name of the font for the pad",
80
obj_prop[PROP_FOLLOW_FONT_STYLE] = g_param_spec_boolean ("follow-font-style", "Follow font style", "Whether to use the default xpad font style", TRUE, G_PARAM_READWRITE);
81
obj_prop[PROP_FOLLOW_COLOR_STYLE] = g_param_spec_boolean ("follow-color-style", "Follow color style", "Whether to use the default xpad color style", TRUE, G_PARAM_READWRITE);
82
obj_prop[PROP_TEXT_COLOR] = g_param_spec_boxed ("text-color", "Text color", "The color of text in this pad", GDK_TYPE_RGBA, G_PARAM_READWRITE);
83
obj_prop[PROP_BACK_COLOR] = g_param_spec_boxed ("back-color", "Back color", "The color of the background in this pad", GDK_TYPE_RGBA, G_PARAM_READWRITE);
84
obj_prop[PROP_FONTNAME] = g_param_spec_string ("fontname", "Font name", "The name of the font for this pad", NULL, G_PARAM_READWRITE);
86
g_object_class_install_properties (gobject_class, N_PROPERTIES, obj_prop);
125
90
xpad_pad_properties_init (XpadPadProperties *prop)
127
GtkWidget *font_radio, *color_radio, *hbox, *font_hbox, *vbox = NULL;
128
GtkWidget *label, *appearance_frame, *alignment, *appearance_vbox;
93
GtkBox *hbox, *font_hbox, *vbox, *appearance_vbox;
94
GtkWidget *font_radio, *color_radio, *label, *appearance_frame, *alignment;
130
95
GtkSizeGroup *size_group_labels = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
132
prop->priv = xpad_pad_properties_get_instance_private(prop);
97
prop->priv = xpad_pad_properties_get_instance_private (prop);
134
99
text = g_strconcat ("<b>", _("Appearance"), "</b>", NULL);
135
100
label = GTK_WIDGET (g_object_new (GTK_TYPE_LABEL,
155
120
"border-width", 6,
123
prop->priv->fontbutton = gtk_font_button_new ();
158
124
prop->priv->textbutton = gtk_color_button_new ();
159
125
prop->priv->backbutton = gtk_color_button_new ();
160
prop->priv->fontbutton = gtk_font_button_new ();
162
127
font_radio = gtk_radio_button_new_with_mnemonic (NULL, _("Use font from xpad preferences"));
163
128
prop->priv->fontcheck = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON (font_radio), _("Use this font:"));
164
129
color_radio = gtk_radio_button_new_with_mnemonic (NULL, _("Use colors from xpad preferences"));
165
130
prop->priv->colorcheck = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON (color_radio), _("Use these colors:"));
167
font_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
132
font_hbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6));
169
gtk_box_pack_start (GTK_BOX (font_hbox), prop->priv->fontcheck, FALSE, FALSE, 0);
170
gtk_box_pack_start (GTK_BOX (font_hbox), prop->priv->fontbutton, TRUE, TRUE, 0);
134
gtk_box_pack_start (font_hbox, prop->priv->fontcheck, FALSE, FALSE, 0);
135
gtk_box_pack_start (font_hbox, prop->priv->fontbutton, TRUE, TRUE, 0);
172
137
prop->priv->colorbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
173
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
139
hbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12));
140
label = gtk_label_new_with_mnemonic (_("Foreground:"));
141
gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
142
gtk_size_group_add_widget (size_group_labels, label);
143
gtk_box_pack_start (hbox, label, FALSE, FALSE, 0);
144
gtk_box_pack_start (hbox, prop->priv->textbutton, TRUE, TRUE, 0);
145
g_object_set (G_OBJECT (prop->priv->colorbox), "child", hbox, NULL);
147
hbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12));
175
148
label = gtk_label_new_with_mnemonic (_("Background:"));
176
149
gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
177
150
gtk_size_group_add_widget (size_group_labels, label);
178
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
179
gtk_box_pack_start (GTK_BOX (hbox), prop->priv->backbutton, TRUE, TRUE, 0);
180
g_object_set (G_OBJECT (prop->priv->colorbox), "child", hbox, NULL);
182
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
183
label = gtk_label_new_with_mnemonic (_("Foreground:"));
184
gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
185
gtk_size_group_add_widget (size_group_labels, label);
186
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
187
gtk_box_pack_start (GTK_BOX (hbox), prop->priv->textbutton, TRUE, TRUE, 0);
151
gtk_box_pack_start (hbox, label, FALSE, FALSE, 0);
152
gtk_box_pack_start (hbox, prop->priv->backbutton, TRUE, TRUE, 0);
188
153
g_object_set (G_OBJECT (prop->priv->colorbox), "child", hbox, NULL);
190
155
alignment = gtk_alignment_new (1, 1, 1, 1);
202
167
gtk_color_button_set_title (GTK_COLOR_BUTTON (prop->priv->backbutton), _("Set Background Color"));
203
168
gtk_font_button_set_title (GTK_FONT_BUTTON (prop->priv->fontbutton), _("Set Font"));
205
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
206
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
208
gtk_box_pack_start (GTK_BOX (vbox), font_radio, FALSE, FALSE, 0);
209
gtk_box_pack_start (GTK_BOX (vbox), font_hbox, FALSE, FALSE, 0);
210
gtk_box_pack_start (GTK_BOX (appearance_vbox), vbox, FALSE, FALSE, 0);
212
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
214
gtk_box_pack_start (GTK_BOX (vbox), color_radio, FALSE, FALSE, 0);
215
gtk_box_pack_start (GTK_BOX (vbox), prop->priv->colorcheck, FALSE, FALSE, 0);
216
gtk_box_pack_start (GTK_BOX (vbox), alignment, FALSE, FALSE, 0);
217
gtk_box_pack_start (GTK_BOX (appearance_vbox), vbox, FALSE, FALSE, 0);
170
vbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 6));
171
hbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12));
173
gtk_box_pack_start (vbox, font_radio, FALSE, FALSE, 0);
174
gtk_box_pack_start (vbox, GTK_WIDGET (font_hbox), FALSE, FALSE, 0);
175
gtk_box_pack_start (appearance_vbox, GTK_WIDGET (vbox), FALSE, FALSE, 0);
177
vbox = GTK_BOX (gtk_box_new (GTK_ORIENTATION_VERTICAL, 6));
179
gtk_box_pack_start (vbox, color_radio, FALSE, FALSE, 0);
180
gtk_box_pack_start (vbox, prop->priv->colorcheck, FALSE, FALSE, 0);
181
gtk_box_pack_start (vbox, alignment, FALSE, FALSE, 0);
182
gtk_box_pack_start (appearance_vbox, GTK_WIDGET (vbox), FALSE, FALSE, 0);
184
g_signal_connect (prop->priv->fontcheck, "toggled", G_CALLBACK (change_font_check), prop);
219
185
g_signal_connect (prop->priv->colorcheck, "toggled", G_CALLBACK (change_color_check), prop);
220
g_signal_connect (prop->priv->fontcheck, "toggled", G_CALLBACK (change_font_check), prop);
221
g_signal_connect (prop->priv->textbutton, "color-set", G_CALLBACK (change_text_color), prop);
222
g_signal_connect (prop->priv->backbutton, "color-set", G_CALLBACK (change_back_color), prop);
223
g_signal_connect (prop->priv->fontbutton, "font-set", G_CALLBACK (change_font_face), prop);
186
g_signal_connect_swapped (prop->priv->fontbutton, "font-set", G_CALLBACK (change_font_face), prop);
187
g_signal_connect_swapped (prop->priv->textbutton, "color-set", G_CALLBACK (change_text_color), prop);
188
g_signal_connect_swapped (prop->priv->backbutton, "color-set", G_CALLBACK (change_back_color), prop);
225
/* Setup initial state, which should never be seen, but just in case client doesn't set them
226
itself, we'll be consistent. */
190
/* Setup initial state, which should never be seen, but just in case client doesn't set them itself, we'll be consistent. */
227
191
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (font_radio), TRUE);
228
192
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (color_radio), TRUE);
229
193
gtk_widget_set_sensitive (prop->priv->colorbox, FALSE);
267
change_font_check (GtkToggleButton *button, XpadPadProperties *prop)
269
gtk_widget_set_sensitive (prop->priv->fontbutton, gtk_toggle_button_get_active (button));
271
g_object_notify (G_OBJECT (prop), "follow-font-style");
275
change_text_color (GtkColorButton *button, XpadPadProperties *prop)
277
/* A dirty way to silence the compiler for these unused variables. */
227
change_text_color (XpadPadProperties *prop)
280
229
g_object_notify (G_OBJECT (prop), "text-color");
284
change_back_color (GtkColorButton *button, XpadPadProperties *prop)
233
change_back_color (XpadPadProperties *prop)
286
/* A dirty way to silence the compiler for these unused variables. */
289
235
g_object_notify (G_OBJECT (prop), "back-color");
293
change_font_face (GtkFontButton *button, XpadPadProperties *prop)
239
change_font_face (XpadPadProperties *prop)
295
/* A dirty way to silence the compiler for these unused variables. */
298
241
g_object_notify (G_OBJECT (prop), "fontname");