6
rcc_ui_internal rccUiCreateInternal(rcc_ui_context ctx) {
10
void rccUiFreeInternal(rcc_ui_context ctx) {
13
rcc_ui_widget rccUiMenuCreateWidget(rcc_ui_menu_context ctx) {
17
void rccUiMenuDestroyWidget(rcc_ui_menu_context ctx) {
20
rcc_ui_id rccUiMenuGet(rcc_ui_menu_context ctx) {
23
if (!ctx) return (rcc_ui_id)-1;
25
if (ctx->type == RCC_UI_MENU_OPTION)
26
return gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ctx->widget));
28
menu = gtk_option_menu_get_menu(ctx->widget);
29
return g_list_index(GTK_MENU_SHELL(menu)->children, gtk_menu_get_active(GTK_MENU(menu)));
32
int rccUiMenuSet(rcc_ui_menu_context ctx, rcc_ui_id id) {
36
case RCC_UI_MENU_OPTION:
37
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ctx->widget),id);
40
gtk_option_menu_set_history(ctx->widget, id);
47
static int rccGtkMenuLanguageCB(GtkWidget * w, gpointer item) {
48
rccUiRestoreLanguage(((rcc_ui_menu_context)item)->uictx);
51
int rccUiMenuConfigureWidget(rcc_ui_menu_context ctx) {
57
rcc_language_config config;
58
rcc_language_ptr *languages;
59
rcc_language_id language_id;
61
rcc_charset *charsets;
62
rcc_engine_ptr *engines;
64
rcc_charset_id charset_id;
65
rcc_engine_id engine_id;
67
GtkWidget *list, *item, *menu;
72
rccctx = uictx->rccctx;
75
case RCC_UI_MENU_LANGUAGE:
76
list = gtk_menu_new();
78
languages=rccGetLanguageList(rccctx);
79
for (i=0; languages[i]; i++) {
80
item = gtk_menu_item_new_with_label(rccUiGetLanguageName(uictx, languages[i]->sn));
81
gtk_signal_connect(GTK_OBJECT(item), "activate", GTK_SIGNAL_FUNC(rccGtkMenuLanguageCB), ctx);
82
gtk_menu_append(GTK_MENU(list), item);
83
gtk_widget_show(item);
86
language_id = rccGetSelectedLanguage(rccctx);
87
if (language_id < 0) language_id = 0;
89
if (ctx->widget) menu = ctx->widget;
91
menu = gtk_option_menu_new();
94
gtk_option_menu_remove_menu(GTK_OPTION_MENU(menu));
95
gtk_option_menu_set_menu(GTK_OPTION_MENU(menu), list);
96
gtk_option_menu_set_history(GTK_OPTION_MENU(menu), language_id);
100
case RCC_UI_MENU_CHARSET:
102
list = gtk_menu_new();
104
language_id = (rcc_language_id)rccUiMenuGet(uictx->language);
105
charsets = rccGetCharsetList(rccctx, language_id);
107
for (i=0;charsets[i];i++) {
108
list = gtk_menu_item_new_with_label(charsets[i]);
109
gtk_widget_show(item);
110
gtk_menu_append(GTK_MENU(list), item);
113
if (ctx->widget) menu = ctx->widget;
115
menu = gtk_option_menu_new();
119
gtk_option_menu_remove_menu(GTK_OPTION_MENU(menu));
120
gtk_option_menu_set_menu(GTK_OPTION_MENU(menu), list);
122
config = rccGetConfig(rccctx, language_id);
123
charset_id = rccConfigGetSelectedCharset(config, (rcc_class_id)ctx->id);
124
if (charset_id < 0) charset_id = 0;
125
gtk_option_menu_set_history(GTK_OPTION_MENU(menu), charset_id);
127
case RCC_UI_MENU_ENGINE:
128
list = gtk_menu_new();
130
language_id = (rcc_language_id)rccUiMenuGet(uictx->language);
131
engines = rccGetEngineList(rccctx, language_id);
132
for (i=0;engines[i];i++) {
133
list = gtk_menu_item_new_with_label(engines[i]->title);
134
gtk_widget_show(item);
135
gtk_menu_append(GTK_MENU(list), item);
138
if (ctx->widget) menu = ctx->widget;
140
menu = gtk_option_menu_new();
144
gtk_option_menu_remove_menu(GTK_OPTION_MENU(menu));
145
gtk_option_menu_set_menu(GTK_OPTION_MENU(menu), list);
147
config = rccGetConfig(rccctx, language_id);
148
engine_id = rccConfigGetSelectedEngine(config);
149
if (engine_id < 0) engine_id = 0;
150
gtk_option_menu_set_history(GTK_OPTION_MENU(menu), engine_id);
153
case RCC_UI_MENU_OPTION:
154
item = gtk_check_button_new_with_label(rccUiGetOptionName(uictx, (rcc_option)ctx->id));
155
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(item), rccGetOption(rccctx, (rcc_option)ctx->id));
163
rcc_ui_box rccUiBoxCreate(rcc_ui_menu_context ctx, const char *title) {
164
GtkWidget *hbox, *label;
165
hbox = gtk_hbox_new(FALSE, 10);
166
gtk_container_border_width(GTK_CONTAINER(hbox), 5);
167
if (ctx->type != RCC_UI_MENU_OPTION) {
168
label = gtk_label_new(title);
169
gtk_widget_set_usize(label, 120, 17);
170
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
172
gtk_box_pack_start(GTK_BOX(hbox), (GtkWidget*)ctx->widget, TRUE, TRUE, 0);
173
return (rcc_ui_box)hbox;
176
rcc_ui_frame rccUiFrameCreate(rcc_ui_context ctx, const char *title) {
177
GtkWidget *frame, *box;
178
frame = gtk_frame_new(title?title:"");
179
gtk_container_border_width(GTK_CONTAINER(frame), 5);
181
box = gtk_vbox_new(FALSE, 3);
182
gtk_container_add(GTK_CONTAINER(frame), box);
184
return (rcc_ui_frame)frame;
187
int rccUiFrameAdd(rcc_ui_frame frame, rcc_ui_box box) {
190
vbox = gtk_container_get_toplevels()->data;
191
gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(box), FALSE, FALSE, 0);
195
rcc_ui_page rccUiPageCreate(rcc_ui_context ctx, const char *title) {
196
return (rcc_ui_page)gtk_vbox_new(FALSE, 0);
199
int rccUiPageAdd(rcc_ui_page page, rcc_ui_frame frame) {
200
if ((!page)||(!frame)) return -1;
201
gtk_box_pack_start(GTK_BOX(page), GTK_WIDGET(frame), FALSE, FALSE, 0);