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);
    }
}
Example #2
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);
}