void _fcitx_ui_widget_load(FcitxUIWidget* self, const gchar* uiname) { FcitxMainWindow* mainwindow = FCITX_MAIN_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET(self))); FcitxAddon* addon = find_addon_by_name(mainwindow->addons, uiname); if (!addon) return; gchar* config_desc_name = g_strdup_printf("%s.desc", addon->name); FcitxConfigFileDesc* cfdesc = get_config_desc(config_desc_name); g_free(config_desc_name); gboolean configurable = (gboolean)(cfdesc != NULL || strlen(addon->subconfig) != 0); if (!configurable) { gchar* text = g_strdup_printf(_("No configuration option for %s."), addon->generalname); gtk_label_set_text(GTK_LABEL(self->label), text); g_free(text); } else { gtk_container_remove(GTK_CONTAINER(self), self->label); self->label = NULL; gchar* config_file_name = g_strdup_printf("%s.config", addon->name); FcitxConfigWidget* config_widget = fcitx_config_widget_new(cfdesc, "conf", config_file_name, addon->subconfig); g_free(config_file_name); gtk_box_pack_start(GTK_BOX(self), GTK_WIDGET(config_widget), TRUE, TRUE, 0); g_object_set(G_OBJECT(config_widget), "margin", 5, NULL); GtkWidget* hbuttonbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_box_pack_start(GTK_BOX(self), hbuttonbox, FALSE, TRUE, 0); g_object_set(G_OBJECT(hbuttonbox), "margin", 5, NULL); GtkWidget* applybutton = gtk_button_new_from_stock(GTK_STOCK_APPLY); gtk_box_pack_start(GTK_BOX(hbuttonbox), applybutton, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(applybutton), "clicked", G_CALLBACK(_fcitx_ui_widget_apply_button_clicked), config_widget); gtk_widget_show_all(GTK_WIDGET(self)); } }
void _fcitx_main_window_add_config_file_page(FcitxMainWindow* self) { GtkWidget* vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); FcitxConfigWidget* config_widget = fcitx_config_widget_new( get_config_desc("config.desc"), "", "config", NULL ); g_object_set(G_OBJECT(config_widget), "margin", 5, NULL); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(config_widget), TRUE, TRUE, 0); GtkWidget* hbuttonbox = gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL); gtk_box_pack_start(GTK_BOX(vbox), hbuttonbox, FALSE, TRUE, 0); g_object_set(G_OBJECT(hbuttonbox), "margin", 5, NULL); g_signal_connect(config_widget, "changed", (GCallback) _fcitx_main_window_config_widget_changed, NULL); _fcitx_main_window_add_page(self, _("Global Config"), vbox, GTK_STOCK_PREFERENCES); }
void _fcitx_main_window_add_config_file_page(FcitxMainWindow* self) { GtkWidget* vbox = gtk_vbox_new(0, 0); FcitxConfigWidget* config_widget = fcitx_config_widget_new( get_config_desc("config.desc"), "", "config", NULL ); gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(config_widget), TRUE, TRUE, 0); GtkWidget* hbuttonbox = gtk_hbutton_box_new(); gtk_box_pack_start(GTK_BOX(vbox), hbuttonbox, FALSE, TRUE, 0); GtkWidget* applybutton = gtk_button_new_from_stock(GTK_STOCK_APPLY); gtk_box_pack_start(GTK_BOX(hbuttonbox), applybutton, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(applybutton), "clicked", G_CALLBACK(_fcitx_main_window_apply_button_clicked), config_widget); self->configpage = _fcitx_main_window_add_page(self, _("Global Config"), vbox, GTK_STOCK_PREFERENCES); }
void open_subconfig_file(GtkButton *button, gpointer user_data) { FcitxSubConfigWidget* widget = (FcitxSubConfigWidget*) user_data; GtkTreeView* view = GTK_TREE_VIEW(widget->view); GtkTreeSelection *selection = gtk_tree_view_get_selection(view); GtkTreeModel *model = gtk_tree_view_get_model(view); GtkTreeIter iter; gchar* configfile; if (gtk_tree_selection_get_selected(selection, &model, &iter)) { gtk_tree_model_get(model, &iter, 0, &configfile, -1); FcitxConfigFileDesc* cfdesc = get_config_desc(widget->subconfig->configdesc); if (cfdesc) { GtkWidget* dialog = gtk_dialog_new_with_buttons(configfile, GTK_WINDOW(gtk_widget_get_ancestor(GTK_WIDGET(widget), GTK_TYPE_WINDOW)), GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_OK, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL ); FcitxConfigWidget* config_widget = fcitx_config_widget_new(cfdesc, "", configfile, NULL); GtkWidget* content_area = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); gtk_box_pack_start(GTK_BOX(content_area), GTK_WIDGET(config_widget), TRUE, TRUE, 0); gtk_widget_set_size_request(GTK_WIDGET(config_widget), -1, 400); g_signal_connect(dialog, "response", G_CALLBACK(fcitx_config_widget_response_cb), config_widget); gtk_widget_show_all(GTK_WIDGET(dialog)); } } }