int AlexData::init() { int res=readFromIni(burstSearchParamsGlobal,burstSearchParamsCh1, burstSearchParamsCh2,FCSparams,FRETparams,iniFilename.toStdString()); res += readFromIniFCS(FCSparams,iniFilename.toStdString()); res += rangeALEX.readFromIni(iniFilename.toStdString()); return res; }
AlexData::AlexData(const QString &iniFile) { iniFilename=iniFile; readFromIni(burstSearchParamsGlobal,burstSearchParamsCh1,burstSearchParamsCh2,FCSparams,FRETparams,iniFilename.toStdString()); qDebug("AlexData: construct from ini file"); // printParams(); std::numeric_limits<double> l; max_measurementtime=1e-9/l.epsilon(); // approx. nano sec resolution }
void InputMethodManager::load() { FCITX_D(); auto inputMethods = d->addonManager_->addonNames(AddonCategory::InputMethod); auto &path = StandardPath::global(); auto files = path.multiOpenAll(StandardPath::Type::Data, "fcitx5/inputmethod", O_RDONLY, filter::Suffix(".conf")); for (const auto &file : files) { auto &files = file.second; RawConfig config; // reverse the order, so we end up parse user file at last. for (auto iter = files.rbegin(), end = files.rend(); iter != end; iter++) { auto fd = iter->fd(); readFromIni(config, fd); } InputMethodInfo imInfo; imInfo.load(config); InputMethodEntry entry = toInputMethodEntry(imInfo); if (checkEntry(entry, inputMethods) && d->entries_.count(entry.uniqueName()) == 0) { d->entries_.emplace(std::string(entry.uniqueName()), std::move(entry)); } } for (const auto &addonName : inputMethods) { auto addonInfo = d->addonManager_->addonInfo(addonName); // on request input method should always provides entry with config file if (!addonInfo || addonInfo->onRequest()) { continue; } auto engine = static_cast<InputMethodEngine *>(d->addonManager_->addon(addonName)); if (!engine) { continue; } auto newEntries = engine->listInputMethods(); for (auto &newEntry : newEntries) { // ok we can't let you register something werid. if (checkEntry(newEntry, inputMethods) && newEntry.addon() == addonName && d->entries_.count(newEntry.uniqueName()) == 0) { d->entries_.emplace(std::string(newEntry.uniqueName()), std::move(newEntry)); } } } loadConfig(); }
void InputMethodManager::loadConfig() { FCITX_D(); auto &path = StandardPath::global(); auto file = path.open(StandardPath::Type::Config, "fcitx5/profile", O_RDONLY); RawConfig config; if (file.fd() >= 0) { readFromIni(config, file.fd()); } InputMethodConfig imConfig; imConfig.load(config); d->groups_.clear(); std::vector<std::string> tempOrder; if (imConfig.groups.value().size()) { auto &groupsConfig = imConfig.groups.value(); for (auto &groupConfig : groupsConfig) { // group must have a name if (groupConfig.name.value().empty() || groupConfig.defaultLayout.value().empty()) { continue; } auto result = d->groups_.emplace(groupConfig.name.value(), InputMethodGroup(groupConfig.name.value())); tempOrder.push_back(groupConfig.name.value()); auto &group = result.first->second; group.setDefaultLayout(groupConfig.defaultLayout.value()); auto &items = groupConfig.items.value(); for (auto &item : items) { group.inputMethodList().emplace_back( std::move(InputMethodGroupItem(item.name.value()).setLayout(item.layout.value()))); } group.setDefaultInputMethod(groupConfig.defaultInputMethod.value()); } } if (d->groups_.size() == 0) { buildDefaultGroup(); } else { setCurrentGroup(imConfig.currentGroup.value()); if (imConfig.groupOrder.value().size()) { setGroupOrder(imConfig.groupOrder.value()); } else { setGroupOrder(tempOrder); } } }