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); }