示例#1
0
int
main(int argc, char *argv[])
{
  if (uim_init() < 0) {
    fprintf(stderr, "uim_init() failed.\n");
    return -1;
  }

  if (uim_custom_enable()) {
    char **primary_groups, **grp;

    primary_groups = uim_custom_primary_groups();
    for (grp = primary_groups; *grp; grp++) {
      dump_group(*grp);
    }
    uim_custom_symbol_list_free(primary_groups);
  } else {
    fprintf(stderr, "uim_custom_enable() failed.\n");
    uim_quit();
    return -1;
  }

  uim_quit();

  return 0;
}
示例#2
0
static uim_bool
dump_group(const char *group_sym)
{
  struct uim_custom_group *group;
  char **custom_syms, **custom_sym;

  group = uim_custom_group_get(group_sym);
  if (!group)
    return UIM_FALSE;

  /* print group header */
  printf(";;;\n;;; %s\n;;;\n", group->label);

  custom_syms = uim_custom_collect_by_group(group_sym);
  if (custom_syms) {
    for (custom_sym = custom_syms; *custom_sym; custom_sym++) {
      dump_custom(*custom_sym);
    }
    uim_custom_symbol_list_free(custom_syms);
  }

  printf("\n\n");

  return UIM_TRUE;
}
示例#3
0
文件: qt4.cpp 项目: m8a/uim
void UimPrefDialog::createGroupWidgets()
{
    char **primary_groups = uim_custom_primary_groups();
    char **grp = 0;
    for( grp = primary_groups; *grp; grp++ )
    {
        struct uim_custom_group *group = uim_custom_group_get( *grp );
        if( group == 0 )
            continue;

        /* insert item in uim's order */
        m_groupListView->addTopLevelItem(
            new QTreeWidgetItem( QStringList() << _FU8(group->label) ) );

        GroupPageWidget *w = new GroupPageWidget( m_groupWidgetStack, *grp );
        if ( grp == primary_groups )
            w->setupWidgets();

        connect( w, SIGNAL(customValueChanged()),
                          this, SLOT(slotCustomValueChanged()) );

        m_groupWidgetsDict.insert( _FU8(group->label), w );
        m_groupWidgetStack->addWidget( w );

        uim_custom_group_free( group );
    }
    uim_custom_symbol_list_free( primary_groups );

    m_rightSideWidget->setWidget( m_groupWidgetStack );
}
示例#4
0
文件: gtk.c 项目: NgoHuy/uim
static void create_sub_group_widgets(GtkWidget *parent_widget, const char *parent_group)
{
    char **sgrp_syms = uim_custom_group_subgroups(parent_group);
    char **sgrp_sym;

    for (sgrp_sym = sgrp_syms; *sgrp_sym; sgrp_sym++)
    {
        struct uim_custom_group *sgrp =  uim_custom_group_get(*sgrp_sym);
	char **custom_syms, **custom_sym;
	GString *sgrp_str;
	GtkWidget *frame;
	GtkWidget *vbox;

	if (!sgrp)
	  continue;

	/* XXX quick hack to use AND expression of groups */
	sgrp_str = g_string_new("");
	g_string_printf(sgrp_str, "%s '%s", parent_group, *sgrp_sym);
	custom_syms = uim_custom_collect_by_group(sgrp_str->str);
	g_string_free(sgrp_str, TRUE);

	if (!custom_syms)
	  continue;
	if (!*custom_syms) {
	  uim_custom_symbol_list_free(custom_syms);
	  continue;
	}

#if GTK_CHECK_VERSION(3, 2, 0)
	vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 8);
#else
	vbox = gtk_vbox_new(FALSE, 8);
#endif
	if (strcmp(*sgrp_sym, "main")) {
	  frame = gtk_frame_new(sgrp->label);
	  gtk_frame_set_label_align(GTK_FRAME(frame), 0.02, 0.5);
	  gtk_box_pack_start(GTK_BOX(parent_widget), frame, FALSE, FALSE, 0);

	  gtk_container_add(GTK_CONTAINER(frame), vbox);
	} else {

	  /*
	   * Removing frame for 'main' subgroup. If you feel it
	   * strange, Replace it as you favor.  -- YamaKen 2005-02-06
	   */
	  gtk_box_pack_start(GTK_BOX(parent_widget), vbox, FALSE, FALSE, 0);
	}

	gtk_container_set_border_width(GTK_CONTAINER(vbox), 6);

	for (custom_sym = custom_syms; *custom_sym; custom_sym++) {
	  uim_pref_gtk_add_custom(vbox, *custom_sym);
	}
	uim_custom_symbol_list_free(custom_syms);

	uim_custom_group_free(sgrp);
    }

    uim_custom_symbol_list_free(sgrp_syms);
}
示例#5
0
文件: gtk.c 项目: NgoHuy/uim
static GtkWidget *
create_pref_treeview(void)
{
  GtkTreeStore *tree_store;
  GtkCellRenderer *renderer;
  GtkTreeViewColumn *column;
  GtkTreeIter iter;
  char **primary_groups, **grp;
  GtkTreeSelection *selection;
  GtkTreePath *first_path;
  tree_store = gtk_tree_store_new (NUM_COLUMNS,
				   G_TYPE_STRING,
				   GTK_TYPE_WIDGET,
				   G_TYPE_STRING);

  pref_tree_view = gtk_tree_view_new();

  renderer = gtk_cell_renderer_text_new();
  column = gtk_tree_view_column_new_with_attributes(_("Group"),
						    renderer,
						    "text", GROUP_COLUMN,
						    (const gchar *)NULL);
  gtk_tree_view_column_set_sort_column_id(column, 0);
  gtk_tree_view_append_column(GTK_TREE_VIEW(pref_tree_view), column);

  primary_groups = uim_custom_primary_groups();
  for (grp = primary_groups; *grp; grp++) {
    struct uim_custom_group *group = uim_custom_group_get(*grp);
    gtk_tree_store_append (tree_store, &iter, NULL/* parent iter */);
    /* only set the widget of the first row for now */
    if (grp == primary_groups) {
      gtk_tree_store_set (tree_store, &iter,
			  GROUP_COLUMN, group->label,
			  GROUP_WIDGET, create_group_widget(*grp),
			  GROUP_SYM, *grp,
			  -1);
    } else {
      gtk_tree_store_set (tree_store, &iter,
			  GROUP_COLUMN, group->label,
			  GROUP_WIDGET, NULL,
			  GROUP_SYM, *grp,
			  -1);
    }
    uim_custom_group_free(group);
  }
  uim_custom_symbol_list_free( primary_groups );

  gtk_tree_view_set_model (GTK_TREE_VIEW(pref_tree_view),
			   GTK_TREE_MODEL(tree_store));
  g_object_unref (tree_store);
  gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(pref_tree_view), TRUE);
  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (pref_tree_view));
  gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
  g_signal_connect (G_OBJECT(selection), "changed",
		    G_CALLBACK(pref_tree_selection_changed), NULL);

  first_path = gtk_tree_path_new_from_indices (0, -1);

  gtk_tree_view_set_cursor(GTK_TREE_VIEW(pref_tree_view),
			   first_path, NULL, FALSE);

  return pref_tree_view;
}
示例#6
0
文件: qt4.cpp 项目: m8a/uim
void GroupPageWidget::setupWidgets()
{
    if ( m_widget_created )
        return;

    QVBoxLayout *vLayout = new QVBoxLayout( this );
    vLayout->setMargin( 6 );
    vLayout->setSpacing( 3 );
    
    struct uim_custom_group *group
        = uim_custom_group_get( m_group_sym.toLatin1().constData() );
    if( group == 0 )
        return;

    QLabel *groupLabel = new QLabel( _FU8(group->label), this );
    groupLabel->setAlignment( Qt::AlignLeft );
    vLayout->addWidget( groupLabel );
    
    QFrame *separator = new QFrame( this );
    separator->setFrameShape( QFrame::HLine );
    separator->setFrameShadow( QFrame::Sunken );
    vLayout->addWidget( separator );

    /* default QVGroupBox */
    QGroupBox *defaultGroupVBox = new QGroupBox( this );
    vLayout->addWidget( defaultGroupVBox );    
    defaultGroupVBox->hide();
#if 0
    SubgroupData *sd = new SubgroupData( this, group_name );

    /* add various widgets to the vbox */
    char **custom_syms = uim_custom_collect_by_group( group_name );
    if( custom_syms )
    {
        for( char **custom_sym = custom_syms; *custom_sym; custom_sym++ )
        {
            QGroupBox *vbox = sd->searchGroupVBoxByCustomSym( *custom_sym );
            if( vbox == 0 )
            {
                vbox = defaultGroupVBox;
                vbox->show();
            }
            
            UimCustomItemIface *iface = addCustom( vbox, *custom_sym );
            if( iface )
                m_customIfaceList.append( iface );
        }

        uim_custom_symbol_list_free( custom_syms );
    }
#else
    char **sub_groups
        = uim_custom_group_subgroups( m_group_sym.toLatin1().constData() );
    char **sgrp;
    for( sgrp = sub_groups; *sgrp; sgrp++ )
    {
        struct uim_custom_group *sgroup_custom =  uim_custom_group_get( *sgrp );
        QGroupBox *vbox;
        if( QString::compare( *sgrp, "main" ) == 0 )
        {
            vbox = defaultGroupVBox;
            vbox->show();
        }
        else
        {
            vbox = new QGroupBox( _FU8(sgroup_custom->label), this );
            vLayout->addWidget( vbox );
        }
        QVBoxLayout *layout = new QVBoxLayout;
        vbox->setLayout( layout );

        /* XXX quick hack to use AND expression of groups */
        QString groups( m_group_sym );
        groups += " '";
        groups += *sgrp;
        char **custom_syms
            = uim_custom_collect_by_group( groups.toLatin1().constData() );
        if( !custom_syms )
            continue;

        for( char **custom_sym = custom_syms; *custom_sym; custom_sym++ )
        {
            UimCustomItemIface *iface = addCustom( vbox, *custom_sym );
            if( iface )
                m_customIfaceList.append( iface );
        }
        uim_custom_symbol_list_free( custom_syms );


        uim_custom_group_free( sgroup_custom );
    }
    uim_custom_symbol_list_free( sub_groups );
#endif

    /* free */
    //delete sd;
    uim_custom_group_free( group );

    /* bottom up */
    vLayout->addStretch();    

    setLayout( vLayout );

    m_widget_created = true;
}