📄 oxim-setup.ui.h
字号:
void OXIM_Setup::RunGenCinForm( int idx, iminfo_t *imp ){ GenCin form; settings_t *settings = NULL; form.IMName->setText(imp->aliasname ? trUtf8(imp->aliasname) : trUtf8(imp->inpname)); form.imname = imp->objname; if (imp->settings) { settings = imp->settings; int yesno; // AutoCompose if (oxim_setting_GetBoolean(settings, "AutoCompose", &yesno)) { form.AutoCompose->setChecked(yesno); } // AutoUpChar if (oxim_setting_GetBoolean(settings, "AutoUpChar", &yesno)) { form.AutoUpChar->setChecked(yesno); } // AutoFullUp if (oxim_setting_GetBoolean(settings, "AutoFullUp", &yesno)) { form.AutoFullUp->setChecked(yesno); } // SpaceAutoUp if (oxim_setting_GetBoolean(settings, "SpaceAutoUp", &yesno)) { form.SpaceAutoUp->setChecked(yesno); } // SelectKeyShift if (oxim_setting_GetBoolean(settings, "SelectKeyShift", &yesno)) { form.SelectKeyShift->setChecked(yesno); } // SpaceIgnore if (oxim_setting_GetBoolean(settings, "SpaceIgnore", &yesno)) { if (yesno) form.SpaceIgnoreYes->setChecked(true); else form.SpaceIgnoreNo->setChecked(true); } // SpaceReset if (oxim_setting_GetBoolean(settings, "SpaceReset", &yesno)) { form.SpaceReset->setChecked(yesno); } // WildEnable if (oxim_setting_GetBoolean(settings, "WildEnable", &yesno)) { form.WildEnable->setChecked(yesno); } // 設定 EndKey if (oxim_setting_GetBoolean(settings, "EndKey", &yesno)) { form.EndKey->setChecked(yesno); } // 設定特殊字根 char *spstroke; if (oxim_setting_GetString(settings, "DisableSelectList", &spstroke)) { if (strcasecmp(spstroke, "None") != 0) form.DisableSelectList->setText(spstroke); } } int isOK = form.exec(); if (!isOK) // 按下取消或直接關掉視窗 { return; } settings = oxim_settings_create(); // AutoCompose oxim_settings_add_key_value(settings, "AutoCompose", form.AutoCompose->isChecked() ? "Yes" : "No"); // AutoUpChar oxim_settings_add_key_value(settings, "AutoUpChar", form.AutoUpChar->isChecked() ? "Yes" : "No"); // AutoFullUp oxim_settings_add_key_value(settings, "AutoFullUp", form.AutoFullUp->isChecked() ? "Yes" : "No"); // SpaceAutoUp oxim_settings_add_key_value(settings, "SpaceAutoUp", form.SpaceAutoUp->isChecked() ? "Yes" : "No"); // SelectKeyShift oxim_settings_add_key_value(settings, "SelectKeyShift", form.SelectKeyShift->isChecked() ? "Yes" : "No"); // SpaceIgnore oxim_settings_add_key_value(settings, "SpaceIgnore", form.SpaceIgnoreYes->isChecked() ? "Yes" : "No"); // SpaceReset oxim_settings_add_key_value(settings, "SpaceReset", form.SpaceReset->isChecked() ? "Yes" : "No"); // WildEnable oxim_settings_add_key_value(settings, "WildEnable", form.WildEnable->isChecked() ? "Yes" : "No"); // EndKey oxim_settings_add_key_value(settings, "EndKey", form.EndKey->isChecked() ? "Yes" : "No"); // DisableSelectList QString dstroke = form.DisableSelectList->text().stripWhiteSpace(); oxim_settings_add_key_value(settings, "DisableSelectList", dstroke.length() ? dstroke.utf8().data() : "None"); oxim_set_IMSettings(idx, settings); oxim_settings_destroy(settings);}/* * 新酷音輸入法屬性 */void OXIM_Setup::RunChewing( int idx, iminfo_t *imp ){ Chewing form; settings_t *settings = NULL; if (imp->settings) { settings = imp->settings; int number; if (oxim_setting_GetInteger(settings, "KeyMap", &number)) { switch (number) { case 1: form.KeyMap1->setChecked(true); break; case 2: form.KeyMap2->setChecked(true); break; case 3: form.KeyMap3->setChecked(true); break; case 4: form.KeyMap4->setChecked(true); break; case 5: form.KeyMap5->setChecked(true); break; case 6: form.KeyMap6->setChecked(true); break; case 7: form.KeyMap7->setChecked(true); break; case 8: form.KeyMap8->setChecked(true); break; default: form.KeyMap0->setChecked(true); } } // if (oxim_setting_GetInteger(settings, "SelectionKeys", &number)) { switch (number) { case 1: form.SelectionKeys1->setChecked(true); break; case 2: form.SelectionKeys2->setChecked(true); break; case 3: form.SelectionKeys3->setChecked(true); break; default: form.SelectionKeys0->setChecked(true); } } // if (oxim_setting_GetInteger(settings, "CapsLockMode", &number)) { if (number != 0) form.CapsLockMode1->setChecked(true); } } int isOk = form.exec(); if (!isOk) return; settings = oxim_settings_create(); if (form.KeyMap0->isChecked()) oxim_settings_add_key_value(settings, "KeyMap", "0"); else if (form.KeyMap1->isChecked()) oxim_settings_add_key_value(settings, "KeyMap", "1"); else if (form.KeyMap2->isChecked()) oxim_settings_add_key_value(settings, "KeyMap", "2"); else if (form.KeyMap3->isChecked()) oxim_settings_add_key_value(settings, "KeyMap", "3"); else if (form.KeyMap4->isChecked()) oxim_settings_add_key_value(settings, "KeyMap", "4"); else if (form.KeyMap5->isChecked()) oxim_settings_add_key_value(settings, "KeyMap", "5"); else if (form.KeyMap6->isChecked()) oxim_settings_add_key_value(settings, "KeyMap", "6"); else if (form.KeyMap7->isChecked()) oxim_settings_add_key_value(settings, "KeyMap", "7"); else if (form.KeyMap8->isChecked()) oxim_settings_add_key_value(settings, "KeyMap", "8"); if (form.SelectionKeys0->isChecked()) oxim_settings_add_key_value(settings, "SelectionKeys", "0"); else if (form.SelectionKeys1->isChecked()) oxim_settings_add_key_value(settings, "SelectionKeys", "1"); else if (form.SelectionKeys2->isChecked()) oxim_settings_add_key_value(settings, "SelectionKeys", "2"); else if (form.SelectionKeys3->isChecked()) oxim_settings_add_key_value(settings, "SelectionKeys", "3"); if (form.CapsLockMode0->isChecked()) oxim_settings_add_key_value(settings, "CapsLockMode", "0"); else oxim_settings_add_key_value(settings, "CapsLockMode", "1"); oxim_set_IMSettings(idx, settings); oxim_settings_destroy(settings);}/* * 安裝輸入法 */void OXIM_Setup::AddIM_clicked(){ QString tables_dir(QString::fromUtf8(oxim_user_dir()).append("/tables")); QString modules_dir(QString::fromUtf8(oxim_user_dir()).append("/modules")); bool isReload = false; InstallIM form; int isOk = form.exec(); if (!isOk) return; QMap<QCheckListItem *, QString>::Iterator it; for (it = form.CheckMap.begin(); it != form.CheckMap.end(); ++it) { QCheckListItem *item = it.key(); QString cinfile = QString::fromUtf8(oxim_user_dir()) + "/" + it.data(); if (item->isOn()) { convert2table(cinfile); QFile file(cinfile); file.remove(); isReload = true; } } // 是否有選擇檔案 if (form.FileName->text().stripWhiteSpace().length()) { // 檢查檔案是否存在 QFileInfo file(form.FileName->text().stripWhiteSpace()); if (file.exists()) { QString path(file.dirPath()); // 原始檔路徑 QString name(file.fileName()); // 原始檔檔名 QString basename = file.baseName(FALSE); // 不含副檔名的檔名 QString extname = file.extension(FALSE); // 副檔名 printf("%s\n", extname.utf8().data()); // 檢查檔案的擴充名稱(*.cin、*.tab、*.so) if (extname == "cin" || extname == "gz" || extname == "in") { QString tabname(basename.append(".tab")); QString cmd( "oxim2tab" ); cmd.append( " -o " ); cmd.append(tables_dir + "/" + tabname); cmd.append( " " ); cmd.append(form.FileName->text()); if (system(cmd.utf8().data()) == 0) { if(oxim_CheckTable(tables_dir.utf8().data(), tabname.utf8().data(), NULL, NULL)) { isReload = true; printf("轉檔成功\n"); } else { printf("1.輸入法轉檔失敗\n"); } } else { printf("2.輸入法轉檔失敗\n"); } } else if (extname == "tab") { // 檢查 tab 檔是否合法 if (oxim_CheckTable(path.utf8().data(), name.utf8().data(), NULL, NULL)) { QString source(form.FileName->text().stripWhiteSpace()); QString target(tables_dir + "/" + basename+".tab"); if (CopyBinaryFile(target.utf8().data(), source.utf8().data())) { isReload = true; printf("安裝成功\n"); } else { printf("安裝失敗\n"); } } else { printf("不支援此種格式的 tab 檔案!\n"); } } else printf("不是 OXIM 支援的輸入法檔案\n"); } } if (isReload) { // 重新寫入 config 檔案 oxim_make_config(); // 清除 oxim config oxim_destroy(); // 重新讀取 IMListInit(); }}bool OXIM_Setup::CopyBinaryFile( QString target, QString source ){ QFile sourceFile(source); QFile targetFile(target); Q_LONG readBytes; char data[10240]; // 資料存取區 if (!sourceFile.open(IO_ReadOnly)) // 唯讀開啟 { return false; } if (!targetFile.open(IO_WriteOnly|IO_Truncate)) // 寫入 { return false; } while ((readBytes = sourceFile.readBlock(data, sizeof(data))) > 0) { targetFile.writeBlock(data, readBytes); } sourceFile.close(); targetFile.close(); return true;}void OXIM_Setup::DeleteIM_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; } // 不在使用者目錄下的不能殺 if (!imp->inuserdir) return; // 不是 tab 檔,不能殺 if (strcasecmp(imp->modname, "gen-inp") != 0 && strcasecmp(imp->modname, "gen-inp-v1") != 0) { return; } bool yesno = QMessageBox::warning( this, trUtf8("移除輸入法"), trUtf8("這樣會將您選定的輸入法從您的電腦中移除,\n") + trUtf8("無法再繼續使用,真的要這樣做嗎?"), trUtf8("確定移除(&Y)"), trUtf8("取消(&N)"), 0, 1, 0 ); if (yesno != 0) return; QString tables_dir(QString::fromUtf8(oxim_user_dir()).append("/tables")); QString tab_name(QString::fromUtf8(imp->objname).append(".tab")); QFile::remove(tables_dir.append("/").append(tab_name)); // 重新寫入 config 檔案 oxim_make_config(); // 清除 oxim config oxim_destroy(); // 重新讀取 IMListInit();}/* * 將參考檔轉檔到使用者目錄下 */void OXIM_Setup::convert2table( QString sourceFile ){ QFileInfo fileInfo(sourceFile); QString tables_dir(QString::fromUtf8(oxim_user_dir()).append("/tables")); QString targetFile = tables_dir.append("/") + fileInfo.baseName().append(".tab"); printf("source name = %s \n", sourceFile.utf8().data()); printf("target name = %s \n", targetFile.utf8().data()); QString cmd = QString( "oxim2tab" ) + " -o " + targetFile + " " + sourceFile; system(cmd.utf8().data());}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -