void Options::check(const Dict& opts) const { // Make sure all options exist and have the correct type for (auto&& op : opts) { const Options::Entry* entry = find(op.first); // Informative error message if option does not exist if (entry==nullptr) { stringstream ss; ss << "Unknown option: " << op.first << endl; ss << endl; ss << "Did you mean one of the following?" << endl; for (auto&& s : suggestions(op.first)) { print_one(s, ss); } ss << "Use print_options() to get a full list of options." << endl; casadi_error(ss.str()); } // Check type casadi_assert(op.second.can_cast_to(entry->type), "Illegal type for " + op.first + ": " + op.second.get_description() + " cannot be cast to " + GenericType::get_type_description(entry->type) + "."); } }
void OpenSearchEngine::suggestionsObtained() { const QByteArray response = m_suggestionsReply->readAll(); m_suggestionsReply->close(); m_suggestionsReply->deleteLater(); m_suggestionsReply = 0; QJsonParseError err; QJsonDocument json = QJsonDocument::fromJson(response, &err); const QVariant res = json.toVariant(); if (err.error != QJsonParseError::NoError || res.type() != QVariant::List) return; const QVariantList list = res.toList(); if (list.size() < 2) return; QStringList out; foreach (const QVariant &v, list.at(1).toList()) out.append(v.toString()); emit suggestions(out); }
WebSearchBar::WebSearchBar(BrowserWindow* window) : LineEdit(window) , m_window(window) , m_reloadingEngines(false) { setObjectName("websearchbar"); setDragEnabled(true); m_buttonSearch = new WebSearchBar_Button(this); m_boxSearchType = new ButtonWithMenu(this); m_boxSearchType->setObjectName("websearchbar-searchprovider-comobobox"); // RTL Support // If we don't add 'm_boxSearchType' by following code, then we should use suitable padding-left value // but then, when typing RTL text the layout dynamically changed and within RTL layout direction // padding-left is equivalent to padding-right and vice versa, and because style sheet is // not changed dynamically this create padding problems. addWidget(m_boxSearchType, LineEdit::LeftSide); addWidget(m_buttonSearch, LineEdit::RightSide); connect(m_buttonSearch, SIGNAL(clicked(QPoint)), this, SLOT(search())); connect(m_buttonSearch, SIGNAL(middleClicked(QPoint)), this, SLOT(searchInNewTab())); connect(m_boxSearchType, SIGNAL(activeItemChanged(ButtonWithMenu::Item)), this, SLOT(searchChanged(ButtonWithMenu::Item))); setWidgetSpacing(0); m_searchManager = mApp->searchEnginesManager(); connect(m_boxSearchType->menu(), SIGNAL(aboutToShow()), this, SLOT(aboutToShowMenu())); m_completer = new QCompleter(this); m_completer->setCompletionMode(QCompleter::UnfilteredPopupCompletion); m_completerModel = new QStringListModel(this); m_completer->setModel(m_completerModel); m_completer->popup()->setMinimumHeight(90); setCompleter(m_completer); m_openSearchEngine = new OpenSearchEngine(this); m_openSearchEngine->setNetworkAccessManager(mApp->networkManager()); connect(m_openSearchEngine, SIGNAL(suggestions(QStringList)), this, SLOT(addSuggestions(QStringList))); connect(this, SIGNAL(textEdited(QString)), m_openSearchEngine, SLOT(requestSuggestions(QString))); editAction(PasteAndGo)->setText(tr("Paste And &Search")); editAction(PasteAndGo)->setIcon(QIcon::fromTheme(QSL("edit-paste"))); connect(editAction(PasteAndGo), SIGNAL(triggered()), this, SLOT(pasteAndGo())); QTimer::singleShot(0, this, SLOT(setupEngines())); }
/*! * Инициализация. */ void SpellChecker::start() { m_textEdit = SendWidget::i()->input(); connect(m_textEdit, SIGNAL(contextMenu(QMenu*,QPoint)), this, SLOT(contextMenu(QMenu*,QPoint))); reload(); m_highlighter = new SpellHighlighter(m_textEdit->document()); connect(SpellBackend::instance(), SIGNAL(suggestionsReady(QString,QStringList)), SLOT(suggestions(QString,QStringList))); connect(SettingsTabHook::i(), SIGNAL(added(QString,SettingsPage*)), SLOT(added(QString,SettingsPage*))); }