⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oxim-setup.ui.h

📁 linux 下的 oxim 输入法,简单易用.
💻 H
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************** ui.h extension file, included from the uic-generated form implementation.**** If you want to add, delete, or rename functions or slots, use** Qt Designer to update this file, preserving your code.**** You should not define a constructor or destructor in this file.** Instead, write your code in functions called () and destroy().** These will automatically be called by the form's constructor and** destructor.*****************************************************************************//*  * 某個輸入法被選擇(clicked)  */void OXIM_Setup::IMListView_clicked(QListViewItem *item){        int default_IM = oxim_get_Default_IM();    int idx = getIndexByItem(item);        if (idx >= 0)    {	iminfo_t *imp = oxim_get_IM(idx);	GlobolButton->setEnabled(true);	DefaultButton->setEnabled(idx==default_IM  ? false : true);	DeleteIM->setEnabled(imp->inuserdir ? true : false);	if (strcasecmp(imp->modname, "gen-inp") == 0 ||	    strcasecmp(imp->modname, "gen-inp-v1") == 0 ||	    strcasecmp(imp->modname, "chewing") == 0)	{	    PropertyButton->setEnabled(true);	}	else	{	    PropertyButton->setEnabled(false);	}	QCheckListItem *chk = (QCheckListItem *)item;	oxim_set_IMCircular(idx, chk->isOn());    }    else    {	GlobolButton->setEnabled(false);	DefaultButton->setEnabled(false);	PropertyButton->setEnabled(false);	DeleteIM->setEnabled(false);    }}int OXIM_Setup::getIndexByItem( QListViewItem *item ){    QListViewItemIterator it(IMListView);    int idx = 0;    while ( it.current() )    {	QCheckListItem *chk = (QCheckListItem *)it.current();	if (chk == item)	{	    return idx;	}	++it;	idx++;    }    return -1;}/*  * 預設鈕被 clicked  */void OXIM_Setup::DefaultButton_clicked(){    QListViewItem *item = IMListView->selectedItem();    if (!item)    {	return;    }    int idx = getIndexByItem(item);    if (idx < 0)    {	return;    }    int default_IM = oxim_get_Default_IM();    if (idx == default_IM)    {	return;    }    iminfo_t *newimp = oxim_get_IM(idx);    oxim_set_config(DefauleInputMethod, newimp->objname);    DefaultButton->setEnabled(false);    item->setPixmap(1, QPixmap::fromMimeSource("cd01.png" ));    item = getItemByIndex(default_IM);    if (item)    {	item->setPixmap(1, NULL);    }}QListViewItem * OXIM_Setup::getItemByIndex( int idx ){    QListViewItemIterator it(IMListView);    int ret_idx = 0;    while ( it.current() )    {	QListViewItem *item = (QCheckListItem *)it.current();	if (idx == ret_idx)	{	    return item;	}	++it;	ret_idx++;    }    return 0;}/*  * 按下通用設定按鈕  */void OXIM_Setup::GlobolButton_clicked(){    QListViewItem *item = IMListView->selectedItem();    if (!item)    {	return;    }    int idx = getIndexByItem(item);    if (idx < 0)    {	return;    }    iminfo_t *imp = oxim_get_IM(idx);    if (!imp)    {	return;    }    GlobolSetting gs ;    gs.IMNameLabel->setText(trUtf8(imp->inpname));    gs.AliasNameEdit->setText(trUtf8(imp->aliasname));    if (imp->key > 0)    {	gs.HotKeyBox->setChecked(true);	gs.HotKey->setEnabled(true);	gs.HotKey->setCurrentItem(imp->key - 1);    }    else    {	gs.HotKeyBox->setChecked(false);	gs.HotKey->setEnabled(false);    }    int isOK = gs.exec();    if (!isOK)    {	return;    }    // 設定別名    QString alias = gs.AliasNameEdit->text().stripWhiteSpace();    if (alias.length())    {	item->setText(1, alias);	oxim_set_IMAliasName(idx, alias.utf8().data());    }    else    {	item->setText(1, QString::fromUtf8(imp->inpname));	oxim_set_IMAliasName(idx, NULL);    }        // 是否設定快速鍵    if (!gs.HotKeyBox->isChecked())    {	oxim_set_IMKey(idx, -1);	item->setText(2, trUtf8("無"));    }    else    {	int key = gs.HotKey->currentItem();		if (key == 9)	{	    key = 10;	}	else	{	    key ++;	}		if (oxim_set_IMKey(idx, key))	{	    item->setText(2, QString("Ctrl+Alt+") + gs.HotKey->currentText());	}	else	{	    QMessageBox::information( this, trUtf8("快速鍵重複"),	      trUtf8("您指定的快速鍵,已經被其他輸入法使用了!\n") +              trUtf8("請重新指定另一組快速鍵。") );	}    }}#include <X11/Xlib.h>/* * 重新寫入 config 檔案 */void OXIM_Setup::UpdateConfig(){    int size;        // 變更字型名稱    oxim_set_config(DefaultFontName, FontName->currentText().utf8().data());    // 讀取組字區字型大小    size = PreeditSize->value();    oxim_set_config(PreeditFontSize, QString::number(size).utf8().data());    // 設定選字區字型大小    size = SelectSize->value();    oxim_set_config(SelectFontSize, QString::number(size).utf8().data());    // 設定狀態區字型大小    size = StatusSize->value();    oxim_set_config(StatusFontSize, QString::number(size).utf8().data());    // 設定選單區字型大小    size = MenuSize->value();    oxim_set_config(MenuFontSize, QString::number(size).utf8().data());    // 設定符號表字型大小    size = SymbolSize->value();    oxim_set_config(SymbolFontSize, QString::number(size).utf8().data());    // 設定 XCIN 風格字型大小    size = XCINSize->value();    oxim_set_config(XcinFontSize, QString::number(size).utf8().data());    // 重新寫入 config 檔案    oxim_make_config();        // 寫入片語表    QString qpharse_name(QString::fromUtf8(oxim_user_dir()).append("/tables/default.phr"));    QFile qpharse_file(qpharse_name);    if (qpharse_file.open(IO_WriteOnly))    {	for (int i=0 ; i < PharseTable->numRows() ; i++)	{	    QString label = PharseTable->verticalHeader()->label(i);	    QString pharse = PharseTable->text(i, 0).stripWhiteSpace();	    QTextStream stream(&qpharse_file);	    stream << label << " " << "\"" << pharse << "\"\n";	}	qpharse_file.close();    }    // 取得 OXIM 控制視窗 atom    Display *dpy = x11AppDisplay();    Atom oxim_atom = XInternAtom(dpy, OXIM_ATOM, true);    // 有 oxim_atom 表示 OXIM 執行中,送 ClientMessage 給 OXIM    // 叫他 Reload    if (oxim_atom != None)    {	Window config_win = XGetSelectionOwner(dpy, oxim_atom);	if (config_win != None)	{	    XClientMessageEvent event;	    event.type = ClientMessage;	    event.window = config_win;	    event.message_type = oxim_atom;	    event.format = 32;	    event.data.l[0] = OXIM_CMD_RELOAD;	    XSendEvent(dpy, config_win, False, 0, (XEvent *)&event);	}    }    QDialog::accept();}/*  * 初始化輸入法列表  */void OXIM_Setup::IMListInit( void ){    QCheckListItem *item = NULL;    oxim_init();    VersionLabel->setText(tr("Open X Input Method ") + QString(oxim_version()));    DefaultButton->setIconSet(QIconSet::QIconSet(QPixmap::fromMimeSource("cd01.png")));    AddIM->setIconSet(QIconSet::QIconSet(QPixmap::fromMimeSource("edit_add.png")));    DeleteIM->setIconSet(QIconSet::QIconSet(QPixmap::fromMimeSource("edit_remove.png")));    IMListView->clear();    IMListView->setSorting(-1);    int n_IM = oxim_get_NumberOfIM();    int default_idx = oxim_get_Default_IM();    for (int i=0 ; i < n_IM ; i++)    {	char key[2];	key[1] = '\0';	iminfo_t *imp = oxim_get_IM(i);	item = new QCheckListItem(IMListView, (i ? item : 0), "", QCheckListItem::CheckBox);		// 輸入法名稱	item->setText(1, QString::fromUtf8(imp->aliasname ? imp->aliasname : imp->inpname));	// 快速鍵	if (imp->key > 0 && imp->key <= 10)	{	    if (imp->key == 10)	    {		key[0] = '0';	    }	    else	    {		key[0] = '0' + (char)imp->key;	    }	    item->setText(2, QString("Ctrl+Alt+") + QString(key));	}	else	{	    item->setText(2, QString::fromUtf8("無"));	}		if (i == default_idx)	{	    item->setPixmap(1, QPixmap::fromMimeSource("cd01.png" ));	}	item->setOn(imp->circular);	item->setText(3, (imp->inuserdir ? "" : trUtf8("<內建>")));		settings_t *settings = oxim_get_im_settings(imp->objname);	if (settings)	{	    oxim_set_IMSettings(i, settings);	    oxim_settings_destroy(settings);	}    }    // 讀取系統的字型資料    bool ok;    QString size;    QFontDatabase fdb;    FontName->clear();    FontName->insertStringList(fdb.families());    // 讀取 OXIM 預設的字型名稱    FontName->setEditText(QString::fromUtf8(oxim_get_config(DefaultFontName)));    // 讀取組字區字型大小    size = QString::fromUtf8(oxim_get_config(PreeditFontSize));    PreeditSize->setValue(size.toInt(&ok, 10));    // 讀取選字區字型大小    size = QString::fromUtf8(oxim_get_config(SelectFontSize));    SelectSize->setValue(size.toInt(&ok, 10));    // 讀取狀態區字型大小    size = QString::fromUtf8(oxim_get_config(StatusFontSize));    StatusSize->setValue(size.toInt(&ok, 10));    // 讀取選單區字型大小    size = QString::fromUtf8(oxim_get_config(MenuFontSize));    MenuSize->setValue(size.toInt(&ok, 10));    // 讀取符號表字型大小    size = QString::fromUtf8(oxim_get_config(SymbolFontSize));    SymbolSize->setValue(size.toInt(&ok, 10));    // 讀取 XCIN 風格字型大小    size = QString::fromUtf8(oxim_get_config(XcinFontSize));    XCINSize->setValue(size.toInt(&ok, 10));        //     int numRow = PharseTable->numRows();    for (int i=0 ; i < numRow ; i++)    {	PharseTable->removeRow(0);    }    // 設定片語表    numRow = 0;    for (int i=0 ; i < 50 ; i++)    {	int key = oxim_code2key(i);	char chrkey[2];	chrkey[1] = '\0';	if (key)	{	    PharseTable->insertRows(numRow);	    chrkey[0] = (char)key;	    QString pharse(trUtf8(oxim_qphrase_str(key)));	    PharseTable->verticalHeader()->setLabel(numRow, chrkey);	    PharseTable->setText(numRow, 0, pharse.stripWhiteSpace());	    numRow ++;	}    }}/*  * 按下屬性按鈕  */void OXIM_Setup::PropertyButton_clicked(){    QListViewItem *item = IMListView->selectedItem();    if (!item)    {	return;    }    int idx = getIndexByItem(item);    if (idx < 0)    {	return;    }    iminfo_t *imp = oxim_get_IM(idx);    if (!imp)    {	return;    }    QString modname(imp->modname);    if (modname == "gen-inp" || modname == "gen-inp-v1")    {	RunGenCinForm(idx, imp);    }    else if (modname == "chewing")    {	RunChewing(idx, imp);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -