1
/* Generated by GOB (v2.0.16) (do not edit directly) */
3
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
6
#line 3 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
9
* Copyright © 2009 Red Hat, Inc. All rights reserved.
10
* Copyright © 2009 Ding-Yi Chen <dchen at redhat.com>
12
* This file is part of the ibus-chewing Project.
14
* This program is free software; you can redistribute it and/or
15
* modify it under the terms of the GNU General Public License
16
* as published by the Free Software Foundation; either version 2
17
* of the License, or (at your option) any later version.
19
* This program is distributed in the hope that it will be useful,
20
* but WITHOUT ANY WARRANTY; without even the implied warranty of
21
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
* GNU General Public License for more details.
24
* You should have received a copy of the GNU General Public License
25
* along with this program; if not, write to the Free Software
26
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
31
#include <glib/gi18n.h>
34
#line 35 "maker-dialog.c"
35
#define GOB_VERSION_MAJOR 2
36
#define GOB_VERSION_MINOR 0
37
#define GOB_VERSION_PATCHLEVEL 16
39
#define selfp (self->_priv)
41
#include <string.h> /* memset() */
43
#include "maker-dialog.h"
45
#include "maker-dialog-private.h"
48
#define ___GOB_LIKELY(expr) G_LIKELY(expr)
49
#define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr)
50
#else /* ! G_LIKELY */
51
#define ___GOB_LIKELY(expr) (expr)
52
#define ___GOB_UNLIKELY(expr) (expr)
54
static const GEnumValue _maker_dialog_property_flag_values[] = {
55
{ MAKER_DIALOG_PROPERTY_FLAG_INVISIBLE, (char *)"MAKER_DIALOG_PROPERTY_FLAG_INVISIBLE", (char *)"invisible" },
56
{ MAKER_DIALOG_PROPERTY_FLAG_INSENSITIVE, (char *)"MAKER_DIALOG_PROPERTY_FLAG_INSENSITIVE", (char *)"insensitive" },
57
{ MAKER_DIALOG_PROPERTY_FLAG_INEDITABLE, (char *)"MAKER_DIALOG_PROPERTY_FLAG_INEDITABLE", (char *)"ineditable" },
58
{ MAKER_DIALOG_PROPERTY_FLAG_HAS_TRANSLATION, (char *)"MAKER_DIALOG_PROPERTY_FLAG_HAS_TRANSLATION", (char *)"has-translation" },
59
{ MAKER_DIALOG_PROPERTY_FLAG_TRANSLATION_WITH_CONTEXT, (char *)"MAKER_DIALOG_PROPERTY_FLAG_TRANSLATION_WITH_CONTEXT", (char *)"translation-with-context" },
64
maker_dialog_property_flag_get_type (void)
66
static GType type = 0;
67
if ___GOB_UNLIKELY(type == 0)
68
type = g_enum_register_static ("MakerDialogPropertyFlag", _maker_dialog_property_flag_values);
73
#line 90 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
75
void G_DEBUG_MSG(gint level, const char *format, ...);
76
#include "MakerDialog-def.c"
78
#line 79 "maker-dialog.c"
79
/* self casting macros */
80
#define SELF(x) MAKER_DIALOG(x)
81
#define SELF_CONST(x) MAKER_DIALOG_CONST(x)
82
#define IS_SELF(x) MAKER_IS_DIALOG(x)
83
#define TYPE_SELF MAKER_TYPE_DIALOG
84
#define SELF_CLASS(x) MAKER_DIALOG_CLASS(x)
86
#define SELF_GET_CLASS(x) MAKER_DIALOG_GET_CLASS(x)
89
typedef MakerDialog Self;
90
typedef MakerDialogClass SelfClass;
92
/* here are local prototypes */
93
#line 0 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
94
static void maker_dialog_class_init (MakerDialogClass * c) G_GNUC_UNUSED;
95
#line 96 "maker-dialog.c"
96
#line 117 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
97
static void maker_dialog_init (MakerDialog * self) G_GNUC_UNUSED;
98
#line 99 "maker-dialog.c"
99
#line 619 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
100
static void maker_dialog_widget_register (MakerDialog * self, GtkWidget * widget, const gchar * widget_label, const gchar * widget_type) G_GNUC_UNUSED;
101
#line 102 "maker-dialog.c"
103
/* pointer to the class of our parent */
104
static GtkDialogClass *parent_class = NULL;
106
/* Short form macros */
107
#define self_new maker_dialog_new
108
#define self_new_full maker_dialog_new_full
109
#define self_set_verbose_level maker_dialog_set_verbose_level
110
#define self_add_property_no_gui maker_dialog_add_property_no_gui
111
#define self_add_property maker_dialog_add_property
112
#define self_align_labels maker_dialog_align_labels
113
#define self_reload_property_value maker_dialog_reload_property_value
114
#define self_write_gconf_schemas_file maker_dialog_write_gconf_schemas_file
115
#define self_apply_widget_value maker_dialog_apply_widget_value
116
#define self_get_widget_value maker_dialog_get_widget_value
117
#define self_set_widget_value maker_dialog_set_widget_value
118
#define self_get_widget maker_dialog_get_widget
119
#define self_get_widget_by_key maker_dialog_get_widget_by_key
120
#define self_get_widget_by_id maker_dialog_get_widget_by_id
121
#define self_get_propertyContext_by_key maker_dialog_get_propertyContext_by_key
122
#define self_get_base_vbox maker_dialog_get_base_vbox
123
#define self_widget_register maker_dialog_widget_register
125
maker_dialog_get_type (void)
127
static GType type = 0;
129
if ___GOB_UNLIKELY(type == 0) {
130
static const GTypeInfo info = {
131
sizeof (MakerDialogClass),
132
(GBaseInitFunc) NULL,
133
(GBaseFinalizeFunc) NULL,
134
(GClassInitFunc) maker_dialog_class_init,
135
(GClassFinalizeFunc) NULL,
136
NULL /* class_data */,
137
sizeof (MakerDialog),
139
(GInstanceInitFunc) maker_dialog_init,
143
type = g_type_register_static (GTK_TYPE_DIALOG, "MakerDialog", &info, (GTypeFlags)0);
149
/* a macro for creating a new object of our type */
150
#define GET_NEW ((MakerDialog *)g_object_new(maker_dialog_get_type(), NULL))
152
/* a function for creating a new object of our type */
154
static MakerDialog * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
156
GET_NEW_VARG (const char *first, ...)
160
va_start (ap, first);
161
ret = (MakerDialog *)g_object_new_valist (maker_dialog_get_type (), first, ap);
168
___finalize(GObject *obj_self)
170
#define __GOB_FUNCTION__ "Maker:Dialog::finalize"
171
MakerDialog *self G_GNUC_UNUSED = MAKER_DIALOG (obj_self);
172
gpointer priv G_GNUC_UNUSED = self->_priv;
173
if(G_OBJECT_CLASS(parent_class)->finalize) \
174
(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
175
#line 101 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
176
if(self->dialog_notebook) { gtk_widget_destroy ((gpointer) self->dialog_notebook); self->dialog_notebook = NULL; }
177
#line 178 "maker-dialog.c"
178
#line 104 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
179
if(self->_priv->widgetTable) { g_hash_table_destroy ((gpointer) self->_priv->widgetTable); self->_priv->widgetTable = NULL; }
180
#line 181 "maker-dialog.c"
181
#line 106 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
182
if(self->_priv->notebookContentTable) { g_hash_table_destroy ((gpointer) self->_priv->notebookContentTable); self->_priv->notebookContentTable = NULL; }
183
#line 184 "maker-dialog.c"
184
#line 108 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
185
if(self->_priv->widgetIds) { g_string_chunk_free ((gpointer) self->_priv->widgetIds); self->_priv->widgetIds = NULL; }
186
#line 187 "maker-dialog.c"
187
#define propList (self->_priv->propList)
190
#line 110 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
193
g_ptr_array_foreach(VAR,propList_free_deep_callback,NULL);
194
g_ptr_array_free(VAR,TRUE);
197
#line 198 "maker-dialog.c"
198
memset(&propList, 0, sizeof(propList));
202
#undef __GOB_FUNCTION__
205
maker_dialog_class_init (MakerDialogClass * c G_GNUC_UNUSED)
207
#define __GOB_FUNCTION__ "Maker:Dialog::class_init"
208
GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
210
g_type_class_add_private(c,sizeof(MakerDialogPrivate));
212
parent_class = g_type_class_ref (GTK_TYPE_DIALOG);
214
g_object_class->finalize = ___finalize;
216
#undef __GOB_FUNCTION__
217
#line 117 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
219
maker_dialog_init (MakerDialog * self G_GNUC_UNUSED)
221
#line 222 "maker-dialog.c"
222
#define __GOB_FUNCTION__ "Maker:Dialog::init"
223
self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MAKER_TYPE_DIALOG,MakerDialogPrivate);
224
#line 90 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
225
self->vbox_homogeneous = TRUE;
226
#line 227 "maker-dialog.c"
227
#line 90 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
228
self->hbox_spacing = 2;
229
#line 230 "maker-dialog.c"
230
#line 90 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
231
self->vbox_spacing = 2;
232
#line 233 "maker-dialog.c"
233
#line 90 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
234
self->dialog_notebook = NULL;
235
#line 236 "maker-dialog.c"
236
#line 103 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
237
self->_priv->widgetTable = g_hash_table_new_full(g_str_hash,g_str_equal,NULL,NULL);
238
#line 239 "maker-dialog.c"
239
#line 105 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
240
self->_priv->notebookContentTable = g_hash_table_new_full(g_str_hash,g_str_equal,NULL,NULL);
241
#line 242 "maker-dialog.c"
242
#line 107 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
243
self->_priv->widgetIds = g_string_chunk_new(STRING_BUFFER_SIZE_DEFAULT);
244
#line 245 "maker-dialog.c"
245
#line 109 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
246
self->_priv->propList = g_ptr_array_new();
247
#line 248 "maker-dialog.c"
249
#undef __GOB_FUNCTION__
253
#line 120 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
255
maker_dialog_new (void)
257
#line 258 "maker-dialog.c"
258
#define __GOB_FUNCTION__ "Maker:Dialog::new"
260
#line 120 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
262
Self *self = GET_NEW;
265
#line 266 "maker-dialog.c"
266
#undef __GOB_FUNCTION__
268
#line 125 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
270
maker_dialog_new_full (const gchar * title, int notebook_pages, const gchar ** notebook_page_labels, int button_num, const gchar ** button_labels, GtkResponseType * button_responses)
272
#line 273 "maker-dialog.c"
273
#define __GOB_FUNCTION__ "Maker:Dialog::new_full"
275
#line 127 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
277
Self *self = GET_NEW;
278
GtkDialog *dialog=GTK_DIALOG(self);
279
gtk_window_set_title(GTK_WINDOW(dialog),title);
280
gtk_window_set_destroy_with_parent (GTK_WINDOW(dialog), TRUE);
281
gtk_window_set_type_hint (GTK_WINDOW(dialog), GDK_WINDOW_TYPE_HINT_DIALOG);
284
for(i=0;i<button_num;i++){
285
GtkWidget *button=gtk_dialog_add_button(dialog,button_labels[i],button_responses[i]);
286
self_widget_register(self, button, button_labels[i], "button");
289
GtkWidget *dialog_vbox = GTK_DIALOG(dialog)->vbox;
290
gtk_widget_show (dialog_vbox);
292
if (notebook_pages>0){
293
self->dialog_notebook = gtk_notebook_new();
294
gtk_box_pack_start (GTK_BOX(dialog_vbox), self->dialog_notebook, TRUE, TRUE, 0);
295
for (i=0;i<notebook_pages;i++){
296
GtkWidget *label=gtk_label_new(_(notebook_page_labels[i]));
297
self_widget_register(self, label, notebook_page_labels[i], "label");
298
gtk_widget_show(label);
300
GtkWidget *vbox=gtk_vbox_new(self->vbox_homogeneous,self->vbox_spacing);
301
self_widget_register(self, vbox, notebook_page_labels[i], "vbox");
302
gtk_widget_show(vbox);
303
gtk_notebook_append_page (GTK_NOTEBOOK(self->dialog_notebook), vbox,label);
308
#line 309 "maker-dialog.c"
309
#undef __GOB_FUNCTION__
311
#line 160 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
313
maker_dialog_set_verbose_level (MakerDialog * self, gint level)
315
#line 316 "maker-dialog.c"
316
#define __GOB_FUNCTION__ "Maker:Dialog::set_verbose_level"
317
#line 160 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
318
g_return_if_fail (self != NULL);
319
#line 160 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
320
g_return_if_fail (MAKER_IS_DIALOG (self));
321
#line 322 "maker-dialog.c"
323
#line 160 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
327
#line 328 "maker-dialog.c"
328
#undef __GOB_FUNCTION__
331
* maker_dialog_add_property_no_gui:
332
* @self: A MakerDialog
333
* @pSpec: A property spec to be added.
334
* @user_data: user_data to be passed to callback functions.
335
* @returns: A newly allocated PropertyContext.
337
* Add a property without GUI automation involved.
339
#line 173 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
341
maker_dialog_add_property_no_gui (MakerDialog * self, PropertySpec * pSpec, gpointer user_data)
343
#line 344 "maker-dialog.c"
344
#define __GOB_FUNCTION__ "Maker:Dialog::add_property_no_gui"
345
#line 173 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
346
g_return_val_if_fail (self != NULL, (PropertyContext * )0);
347
#line 173 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
348
g_return_val_if_fail (MAKER_IS_DIALOG (self), (PropertyContext * )0);
349
#line 350 "maker-dialog.c"
351
#line 173 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
353
G_DEBUG_MSG(2,"::add_property_no_gui(%s,-)",pSpec->key);
354
PropertyContext *ctx=propertyContext_new(pSpec,user_data);
355
g_ptr_array_add(self->_priv->propList,ctx);
356
g_hash_table_insert(self->_priv->notebookContentTable, pSpec->key, pSpec->pageName);
359
#line 360 "maker-dialog.c"
360
#undef __GOB_FUNCTION__
363
* maker_dialog_add_property:
364
* @self: A MakerDialog
365
* @pSpec: A property spec to be added.
366
* @initValue: Initial value of the property.
367
* @user_data: user_data to be passed to callback functions.
368
* @returns: TRUE if the property adding succeed; FALSE otherwise.
370
* Add a property to the dialog and corresponding Gtk widget will also be
372
* If @initValue is not NULL, it will be the initial value of the widget.
374
#line 193 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
376
maker_dialog_add_property (MakerDialog * self, PropertySpec * pSpec, const gchar * initValue, gpointer user_data)
378
#line 379 "maker-dialog.c"
379
#define __GOB_FUNCTION__ "Maker:Dialog::add_property"
380
#line 193 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
381
g_return_val_if_fail (self != NULL, (gboolean )0);
382
#line 193 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
383
g_return_val_if_fail (MAKER_IS_DIALOG (self), (gboolean )0);
384
#line 385 "maker-dialog.c"
386
#line 193 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
388
G_DEBUG_MSG(2,"::add_property(%s,%s,-)",pSpec->key,initValue);
390
GtkWidget *vbox=self_get_base_vbox(self, pSpec->pageName);
393
GtkWidget *hbox=gtk_hbox_new(FALSE,self->hbox_spacing);
394
self_widget_register(self, hbox, pSpec->key, "hbox");
395
GtkWidget *label=gtk_label_new(_(pSpec->label));
396
self_widget_register(self, label, pSpec->key, "label");
398
gtk_widget_set_tooltip_text (label,_(pSpec->tooltip));
400
gtk_widget_show(label);
401
gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
403
GtkWidget *widget=NULL;
404
GtkAdjustment *gAdjust=NULL;
405
PropertyContext *ctx=self_add_property_no_gui(self,pSpec,user_data);
410
switch(pSpec->valueType){
412
widget = gtk_check_button_new();
413
self_widget_register(self, widget, pSpec->key, NULL);
414
gboolean bValue=FALSE;
416
bValue=atob(initValue);
417
}else if (pSpec->defaultValue){
418
bValue=atob(pSpec->defaultValue);
420
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),bValue);
422
g_signal_connect(widget, "toggled", G_CALLBACK(on_toggleButton_toggled_wrap),ctx);
427
gAdjust = (GtkAdjustment *)gtk_adjustment_new (atoi(pSpec->defaultValue),
428
pSpec->min, pSpec->max, 1.0, 0.0, 0.0);
429
widget = gtk_spin_button_new (gAdjust, 1.0, 0);
430
self_widget_register(self, widget, pSpec->key, NULL);
433
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget),atoi(initValue));
434
}else if (pSpec->defaultValue){
435
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget),atoi(pSpec->defaultValue));
439
g_signal_connect(widget, "value-changed", G_CALLBACK(on_spinButton_value_changed_wrap),ctx);
443
if (pSpec->validValues){
444
GtkListStore *listStore=NULL;
446
if (pSpec->propertyFlags & MAKER_DIALOG_PROPERTY_FLAG_HAS_TRANSLATION){
447
listStore=gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
449
listStore=gtk_list_store_new (1, G_TYPE_STRING);
453
for(i=0;pSpec->validValues[i]!=NULL;i++){
455
listStore_append(listStore, pSpec->validValues[i],
456
pSpec->translationContext,pSpec->propertyFlags);
461
index=listStore_find_string(listStore,initValue,
462
pSpec->translationContext,pSpec->propertyFlags);
465
if (index<0 && pSpec->defaultValue){
466
index=listStore_find_string(listStore,pSpec->defaultValue,
467
pSpec->translationContext,pSpec->propertyFlags);
470
if (pSpec->propertyFlags & MAKER_DIALOG_PROPERTY_FLAG_INEDITABLE){
471
widget=gtk_combo_box_new_with_model (GTK_TREE_MODEL(listStore));
472
GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
473
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(widget), renderer, FALSE);
474
if (pSpec->propertyFlags & MAKER_DIALOG_PROPERTY_FLAG_HAS_TRANSLATION){
475
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(widget), renderer,
479
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(widget), renderer,
485
widget=gtk_combo_box_entry_new_with_model (GTK_TREE_MODEL(listStore),
486
(pSpec->propertyFlags & MAKER_DIALOG_PROPERTY_FLAG_HAS_TRANSLATION)? 1:0);
489
self_widget_register(self, widget, pSpec->key, NULL);
490
gtk_combo_box_set_active(GTK_COMBO_BOX(widget),index);
494
g_signal_connect(widget, "changed", G_CALLBACK(on_comboBox_changed_wrap),ctx);
498
widget=gtk_entry_new();
499
self_widget_register(self, widget, pSpec->key, NULL);
501
gtk_entry_set_max_length(GTK_ENTRY(widget),pSpec->max);
504
const char *sValue=NULL;
508
}else if (pSpec->defaultValue){
509
sValue=pSpec->defaultValue;
513
gtk_entry_set_text(GTK_ENTRY(widget),sValue);
514
gtk_editable_set_editable (GTK_EDITABLE(widget),
515
!(pSpec->propertyFlags & MAKER_DIALOG_PROPERTY_FLAG_INEDITABLE));
518
g_signal_connect(widget, "activate", G_CALLBACK(on_entry_activate_wrap),ctx);
529
gtk_box_pack_start (GTK_BOX(hbox), widget, FALSE, FALSE, 0);
530
gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
534
#line 535 "maker-dialog.c"
535
#undef __GOB_FUNCTION__
538
* maker_dialog_align_labels:
539
* @self: A MakerDialog.
540
* @pageName: Name of notebook page to be apply, can be NULL.
541
* @xalign: x align of labels. 0.0f for LEFT, 0.5f for CENTER, 1.0f for RIGHT.
542
* @yalign: y align of labels. 0.0f for TOP, 0.5f for CENTER, 1.0f for BOTTOM.
544
* Align labels for better dialog appearance.
546
* Labels that associate with value setting widget are stretched into same width.
547
* If @pageName is not NULL, only the labels in the page are stretched,
548
* otherwise, all labels will be stretched.
550
* Moreover, the horizontal and vertical alignment can set by @xalign and @yalign, respectively.
552
#line 356 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
554
maker_dialog_align_labels (MakerDialog * self, const gchar * pageName, gfloat xalign, gfloat yalign)
556
#line 557 "maker-dialog.c"
557
#define __GOB_FUNCTION__ "Maker:Dialog::align_labels"
558
#line 356 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
559
g_return_if_fail (self != NULL);
560
#line 356 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
561
g_return_if_fail (MAKER_IS_DIALOG (self));
562
#line 563 "maker-dialog.c"
564
#line 356 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
566
WidgetAlignment wAlignment;
567
wAlignment.self=self;
568
wAlignment.currentMaxWidth=0;
569
wAlignment.pageName=pageName;
570
wAlignment.xalign=xalign;
571
wAlignment.yalign=yalign;
572
g_hash_table_foreach(self->_priv->notebookContentTable,
573
caculate_max_label_width_callback, (gpointer) &wAlignment);
574
g_hash_table_foreach(self->_priv->notebookContentTable,
575
set_label_width_callback, (gpointer) &wAlignment);
576
gtk_widget_show_all(GTK_WIDGET(self));
578
#line 579 "maker-dialog.c"
579
#undef __GOB_FUNCTION__
581
#line 370 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
583
maker_dialog_reload_property_value (MakerDialog * self, const gchar * key)
585
#line 586 "maker-dialog.c"
586
#define __GOB_FUNCTION__ "Maker:Dialog::reload_property_value"
587
#line 370 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
588
g_return_if_fail (self != NULL);
589
#line 370 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
590
g_return_if_fail (MAKER_IS_DIALOG (self));
591
#line 592 "maker-dialog.c"
593
#line 370 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
598
const gchar *stringValue;
600
PropertyContext *ctx=self_get_propertyContext_by_key(self,key);
601
PropertySpec *pSpec=ctx->spec;
602
GtkWidget *widget=self_get_widget_by_key(self,pSpec->key);
606
gValue=pSpec->getFunc(ctx);
608
switch(pSpec->valueType){
610
boolValue=g_value_get_boolean(gValue);
611
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget),boolValue);
614
intValue=g_value_get_int(gValue);
615
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget),(gdouble) intValue);
618
uintValue=g_value_get_uint(gValue);
619
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget),(gdouble) uintValue);
622
stringValue=g_value_get_string(gValue);
623
if (pSpec->validValues){
626
index=combo_find_string_index(GTK_COMBO_BOX(widget),stringValue,
627
pSpec->translationContext,
628
ctx->spec->propertyFlags);
630
if (index<0 && pSpec->defaultValue){
631
index=combo_find_string_index(GTK_COMBO_BOX(widget),pSpec->defaultValue,
632
pSpec->translationContext,
633
ctx->spec->propertyFlags);
635
gtk_combo_box_set_active(GTK_COMBO_BOX(widget),index);
638
gtk_entry_set_text(GTK_ENTRY(widget),stringValue);
646
#line 647 "maker-dialog.c"
647
#undef __GOB_FUNCTION__
650
* maker_dialog_write_gconf_schemas_file:
651
* @self: A MakerDialog.
652
* @filename: Filename for output.
653
* @owner: Owner of the schemas.
654
* @schemasHome: The "home direcory" of schemas.
655
* @locales: Supported locales, use ';' as delimiter.
656
* @returns: TRUE if succeed; FALSE otherwise.
658
* Output the parameters as GConf schemes file.
660
#line 434 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
662
maker_dialog_write_gconf_schemas_file (MakerDialog * self, const gchar * filename, const gchar * owner, const gchar * schemasHome, const gchar * locales)
664
#line 665 "maker-dialog.c"
665
#define __GOB_FUNCTION__ "Maker:Dialog::write_gconf_schemas_file"
666
#line 434 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
667
g_return_val_if_fail (self != NULL, (gboolean )0);
668
#line 434 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
669
g_return_val_if_fail (MAKER_IS_DIALOG (self), (gboolean )0);
670
#line 671 "maker-dialog.c"
672
#line 435 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
674
G_DEBUG_MSG(2,"::output_gconf_schemes_file(%s)",filename);
675
FILE *outF=fopen(filename,"w");
677
G_DEBUG_MSG(1,"::output_gconf_schemes_file(%s) file %s cannot be written!",
681
xml_tags_write(outF,"gconfschemafile",XML_TAG_TYPE_BEGIN_ONLY,NULL,NULL);
682
xml_tags_write(outF,"schemalist",XML_TAG_TYPE_BEGIN_ONLY,NULL,NULL);
683
SchemasFileData sData;
684
sData.schemasHome=schemasHome;
686
sData.locales=locales;
688
g_ptr_array_foreach(self->_priv->propList,ctx_write_callback,&sData);
689
xml_tags_write(outF,"schemalist",XML_TAG_TYPE_END_ONLY,NULL,NULL);
690
xml_tags_write(outF,"gconfschemafile",XML_TAG_TYPE_END_ONLY,NULL,NULL);
693
G_DEBUG_MSG(2,"::output_gconf_schemes_file(%s) ... done.",filename);
696
#line 697 "maker-dialog.c"
697
#undef __GOB_FUNCTION__
700
* maker_dialog_apply_widget_value:
701
* @self: A MakerDialog.
702
* @key: The key of a property.
704
* Apply the value shown in widget to the property.
705
* Note that a set callback function is needed in PropertySpec to apply the value to property.
707
* @see_also: set_widget_value()
709
#line 469 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
711
maker_dialog_apply_widget_value (MakerDialog * self, const gchar * key)
713
#line 714 "maker-dialog.c"
714
#define __GOB_FUNCTION__ "Maker:Dialog::apply_widget_value"
715
#line 469 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
716
g_return_if_fail (self != NULL);
717
#line 469 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
718
g_return_if_fail (MAKER_IS_DIALOG (self));
719
#line 720 "maker-dialog.c"
721
#line 469 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
723
G_DEBUG_MSG(2,"::apply_widget_value(%s)",key);
724
PropertyContext *ctx=self_get_propertyContext_by_key(self,key);
727
g_warning("%s: no such PropertyContext",key);
732
self_get_widget_value(self,key,&gValue);
734
if (ctx->spec->setFunc){
735
ctx->spec->setFunc(ctx,&gValue);
737
g_value_unset(&gValue);
739
#line 740 "maker-dialog.c"
740
#undef __GOB_FUNCTION__
742
#line 488 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
744
maker_dialog_get_widget_value (MakerDialog * self, const gchar * key, GValue * gValue)
746
#line 747 "maker-dialog.c"
747
#define __GOB_FUNCTION__ "Maker:Dialog::get_widget_value"
748
#line 488 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
749
g_return_val_if_fail (self != NULL, (GValue * )0);
750
#line 488 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
751
g_return_val_if_fail (MAKER_IS_DIALOG (self), (GValue * )0);
752
#line 753 "maker-dialog.c"
754
#line 488 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
756
G_DEBUG_MSG(2,"::get_widget_value(%s)",key);
757
PropertyContext *ctx=self_get_propertyContext_by_key(self,key);
762
GtkWidget *widget=self_get_widget_by_key(self,key);
763
if (ctx->spec->valueType!=G_TYPE_STRING){
764
g_value_init(gValue,ctx->spec->valueType);
766
switch(ctx->spec->valueType){
768
g_value_set_boolean(gValue, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget)));
771
g_value_set_int(gValue, (gint) gtk_spin_button_get_value (GTK_SPIN_BUTTON(widget)));
774
g_value_set_uint(gValue, (guint) gtk_spin_button_get_value (GTK_SPIN_BUTTON(widget)));
777
if (ctx->spec->validValues){
778
const char *str=combo_get_active_text (GTK_COMBO_BOX(widget),gValue);
779
G_DEBUG_MSG(3,"::get_widget_value(%s) %s",
782
g_value_set_string(gValue, gtk_entry_get_text (GTK_ENTRY(widget)));
791
#line 792 "maker-dialog.c"
792
#undef __GOB_FUNCTION__
795
* maker_dialog_set_widget_value:
796
* @self: A MakerDialog.
797
* @key: The key of a property.
798
* @value: Value to be shown in widget.
800
* Set value for widget display.
801
* However, the property value is not set.
802
* Use apply_widget_value() to do it.
803
* @see_also: apply_widget_value()
805
#line 536 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
807
maker_dialog_set_widget_value (MakerDialog * self, const gchar * key, GValue * value)
809
#line 810 "maker-dialog.c"
810
#define __GOB_FUNCTION__ "Maker:Dialog::set_widget_value"
811
#line 536 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
812
g_return_if_fail (self != NULL);
813
#line 536 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
814
g_return_if_fail (MAKER_IS_DIALOG (self));
815
#line 816 "maker-dialog.c"
817
#line 536 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
820
PropertyContext *ctx=self_get_propertyContext_by_key(self,key);
825
GtkWidget *widget=self_get_widget_by_key(self,key);
826
switch(ctx->spec->valueType){
828
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(widget),g_value_get_boolean(value));
831
gtk_spin_button_set_value (GTK_SPIN_BUTTON(widget),(gdouble) g_value_get_int(value));
834
gtk_spin_button_set_value (GTK_SPIN_BUTTON(widget),(gdouble) g_value_get_uint(value));
837
if (ctx->spec->validValues){
838
const gchar *str=g_value_get_string(value);
839
index=combo_find_string_index(GTK_COMBO_BOX(widget),str,
840
ctx->spec->translationContext,ctx->spec->propertyFlags);
841
gtk_combo_box_set_active (GTK_COMBO_BOX(widget),index);
843
g_value_set_string(value, gtk_entry_get_text (GTK_ENTRY(widget)));
850
#line 851 "maker-dialog.c"
851
#undef __GOB_FUNCTION__
853
#line 570 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
855
maker_dialog_get_widget (MakerDialog * self, const gchar * widget_key, const gchar * widget_type)
857
#line 858 "maker-dialog.c"
858
#define __GOB_FUNCTION__ "Maker:Dialog::get_widget"
859
#line 570 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
860
g_return_val_if_fail (self != NULL, (GtkWidget * )0);
861
#line 570 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
862
g_return_val_if_fail (MAKER_IS_DIALOG (self), (GtkWidget * )0);
863
#line 864 "maker-dialog.c"
865
#line 571 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
867
gchar buf[STRING_BUFFER_SIZE_DEFAULT];
868
widget_get_id(buf, STRING_BUFFER_SIZE_DEFAULT, widget_key, widget_type);
869
return self_get_widget_by_id(self, buf);
871
#line 872 "maker-dialog.c"
872
#undef __GOB_FUNCTION__
874
#line 577 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
876
maker_dialog_get_widget_by_key (MakerDialog * self, const gchar * key)
878
#line 879 "maker-dialog.c"
879
#define __GOB_FUNCTION__ "Maker:Dialog::get_widget_by_key"
880
#line 577 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
881
g_return_val_if_fail (self != NULL, (GtkWidget * )0);
882
#line 577 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
883
g_return_val_if_fail (MAKER_IS_DIALOG (self), (GtkWidget * )0);
884
#line 885 "maker-dialog.c"
886
#line 577 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
888
return self_get_widget(self,key,NULL);
890
#line 891 "maker-dialog.c"
891
#undef __GOB_FUNCTION__
893
#line 581 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
895
maker_dialog_get_widget_by_id (MakerDialog * self, const gchar * id)
897
#line 898 "maker-dialog.c"
898
#define __GOB_FUNCTION__ "Maker:Dialog::get_widget_by_id"
899
#line 581 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
900
g_return_val_if_fail (self != NULL, (GtkWidget * )0);
901
#line 581 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
902
g_return_val_if_fail (MAKER_IS_DIALOG (self), (GtkWidget * )0);
903
#line 904 "maker-dialog.c"
905
#line 581 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
907
G_DEBUG_MSG(3,"*** get_widget_by_id(%s)",id);
908
return (GtkWidget *) g_hash_table_lookup (self->_priv->widgetTable, id);
910
#line 911 "maker-dialog.c"
911
#undef __GOB_FUNCTION__
913
#line 586 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
915
maker_dialog_get_propertyContext_by_key (MakerDialog * self, const gchar * key)
917
#line 918 "maker-dialog.c"
918
#define __GOB_FUNCTION__ "Maker:Dialog::get_propertyContext_by_key"
919
#line 586 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
920
g_return_val_if_fail (self != NULL, (PropertyContext * )0);
921
#line 586 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
922
g_return_val_if_fail (MAKER_IS_DIALOG (self), (PropertyContext * )0);
923
#line 924 "maker-dialog.c"
925
#line 586 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
928
PropertyContext *ctx=NULL;
929
for(i=0; i<self->_priv->propList->len;i++){
930
ctx=g_ptr_array_index(self->_priv->propList,i);
931
if (strcmp(ctx->spec->key,key)==0){
935
if (i>=self->_priv->propList->len){
941
#line 942 "maker-dialog.c"
942
#undef __GOB_FUNCTION__
944
#line 603 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
946
maker_dialog_get_base_vbox (MakerDialog * self, const gchar * notebook_page_label)
948
#line 949 "maker-dialog.c"
949
#define __GOB_FUNCTION__ "Maker:Dialog::get_base_vbox"
950
#line 603 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
951
g_return_val_if_fail (self != NULL, (GtkWidget * )0);
952
#line 603 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
953
g_return_val_if_fail (MAKER_IS_DIALOG (self), (GtkWidget * )0);
954
#line 955 "maker-dialog.c"
956
#line 603 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
958
gchar buf[STRING_BUFFER_SIZE_DEFAULT];
960
if (notebook_page_label){
961
widget_get_id(buf, STRING_BUFFER_SIZE_DEFAULT, notebook_page_label, "vbox");
962
ret=self_get_widget(self, notebook_page_label, "vbox");
964
ret=GTK_DIALOG(self)->vbox;
967
ret=GTK_DIALOG(self)->vbox;
971
#line 972 "maker-dialog.c"
972
#undef __GOB_FUNCTION__
974
#line 619 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
976
maker_dialog_widget_register (MakerDialog * self, GtkWidget * widget, const gchar * widget_label, const gchar * widget_type)
978
#line 979 "maker-dialog.c"
979
#define __GOB_FUNCTION__ "Maker:Dialog::widget_register"
980
#line 619 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
981
g_return_if_fail (self != NULL);
982
#line 619 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
983
g_return_if_fail (MAKER_IS_DIALOG (self));
984
#line 985 "maker-dialog.c"
986
#line 620 "/home/dchen/ibus-chewing/src/MakerDialog.gob"
988
gchar buf[STRING_BUFFER_SIZE_DEFAULT];
989
widget_get_id(buf, STRING_BUFFER_SIZE_DEFAULT, widget_label, widget_type);
990
gchar *chunk_ret=g_string_chunk_insert(self->_priv->widgetIds,buf);
991
g_hash_table_insert(self->_priv->widgetTable, chunk_ret,widget);
992
G_DEBUG_MSG(3,"*** widget_register(-,%s,%s) widget registered as %s",
993
widget_label,(widget_type)? (widget_type) : "", chunk_ret);
995
#line 996 "maker-dialog.c"
996
#undef __GOB_FUNCTION__