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_finalize(GObject* object) { FcitxMainWindow* self = FCITX_MAIN_WINDOW(object); utarray_free(self->addons); G_OBJECT_CLASS (fcitx_main_window_parent_class)->finalize (object); }
void _fcitx_im_widget_configure_button_clicked(GtkButton* button, gpointer user_data) { FcitxImWidget* self = user_data; GtkWidget *treeView = self->imview; GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeView)); GtkTreeSelection* selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self->imview)); GtkTreeIter iter; if (gtk_tree_selection_get_selected(selection, &model, &iter)) { FcitxIMItem* item = NULL; gtk_tree_model_get(model, &iter, IM_LIST_IM, &item, -1); gchar* addon_name = fcitx_input_method_get_im_addon(self->improxy, item->unique_name); FcitxMainWindow* mainwindow = FCITX_MAIN_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET(self))); do { if (!mainwindow) break; FcitxAddon* addon = find_addon_by_name(mainwindow->addons, addon_name); if (!addon) break; GtkWidget* dialog = fcitx_im_config_dialog_new(GTK_WINDOW(mainwindow), addon, item->unique_name); if (dialog) gtk_widget_show_all(GTK_WIDGET(dialog)); } while(0); g_free(addon_name); } }
void _fcitx_im_widget_default_layout_button_clicked(GtkButton* button, gpointer user_data) { FcitxImWidget* self = user_data; FcitxMainWindow* mainwindow = FCITX_MAIN_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET(self))); do { if (!mainwindow) break; GtkWidget* dialog = fcitx_im_config_dialog_new(GTK_WINDOW(mainwindow), NULL, "default"); if (dialog) gtk_widget_show_all(GTK_WIDGET(dialog)); } while(0); }
static void _fcitx_im_widget_configure_im(FcitxImWidget* self, FcitxIMItem* item) { gchar* addon_name = fcitx_input_method_get_im_addon(self->improxy, item->unique_name); FcitxMainWindow* mainwindow = FCITX_MAIN_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET(self))); do { if (!mainwindow) break; FcitxAddon* addon = find_addon_by_name(mainwindow->addons, addon_name); if (!addon) break; GtkWidget* dialog = fcitx_im_config_dialog_new(GTK_WINDOW(mainwindow), addon, item->unique_name); if (dialog) gtk_widget_show_all(GTK_WIDGET(dialog)); } while(0); g_free(addon_name); }
int fcitx_config_app_handle_command_line (GApplication *application, GApplicationCommandLine *command_line, gpointer user_data ) { int argc; gchar** argv = g_application_command_line_get_arguments(command_line, &argc); g_application_activate(G_APPLICATION (application)); GList* list = gtk_application_get_windows (GTK_APPLICATION(application)); if (list) { FcitxMainWindow* mainWindow = FCITX_MAIN_WINDOW (list->data); FcitxAddon* addon = NULL; if (argc >= 2 && argv[1]) addon = find_addon_by_name(mainWindow->addons, argv[1]); if (addon) { GtkWidget* dialog = fcitx_config_dialog_new(addon, GTK_WINDOW(mainWindow)); if (dialog) gtk_widget_show_all(GTK_WIDGET(dialog)); } } g_strfreev(argv); return 0; }
void fcitx_main_window_finalize(GObject* object) { FcitxMainWindow* self = FCITX_MAIN_WINDOW(object); utarray_free(self->addons); }