Beispiel #1
0
    void SpellCheckWorker::processSpellingQuery(const std::shared_ptr<SpellCheckItem> &item) {
        const bool neededSuggestions = item->needsSuggestions();
        auto &queryItems = item->getQueries();
        const auto wordAnalysisFlags = item->getWordAnalysisFlags();
        const bool shouldCheckSpelling = Common::HasFlag(wordAnalysisFlags, Common::WordAnalysisFlags::Spelling);
        const bool shouldStemWord = Common::HasFlag(wordAnalysisFlags, Common::WordAnalysisFlags::Stemming);
        bool anyWrong = false;

        if (!neededSuggestions) {
            const size_t size = queryItems.size();
            Q_ASSERT(size > 0);
            for (size_t i = 0; i < size; ++i) {
                auto &queryItem = queryItems.at(i);
                bool isOk = true;

                if (shouldCheckSpelling) {
                    isOk = checkQuerySpelling(queryItem);
                }

                if (shouldStemWord) {
                    stemWord(queryItem);
                }

                anyWrong = anyWrong || !isOk;
            }

            if (shouldStemWord && !item->getIsOnlyOneKeyword()) {
                findSemanticDuplicates(queryItems);
            }

            item->accountResults();
            item->submitSpellCheckResult();
        } else {
            for (auto &queryItem: queryItems) {
                if (!queryItem->m_IsCorrect) {
                    findSuggestions(queryItem->m_Word);
                }
            }
        }

        if (anyWrong) {
            item->requestSuggestions();
            this->submitItem(item);
        }
    }
Beispiel #2
0
    bool SpellCheckWorker::processOneItem(SpellCheckItemBase *item) {
        Q_ASSERT(item != NULL);

        if (dynamic_cast<SpellCheckSeparatorItem*>(item)) {
            emit queueIsEmpty();
            return true;
        }

        bool neededSuggestions = item->needsSuggestions();
        const QVector<SpellCheckQueryItem*> &queryItems = item->getQueries();
        bool anyWrong = false;

        if (!neededSuggestions) {
            int length = queryItems.length();
            for (int i = 0; i < length; ++i) {
                SpellCheckQueryItem *queryItem = queryItems.at(i);
                bool isOk = isWordSpelledOk(queryItem->m_Word);
                queryItem->m_IsCorrect = isOk;
                item->accountResultAt(i);
                anyWrong = anyWrong || !isOk;
            }

            item->submitSpellCheckResult();
        } else {
            foreach (SpellCheckQueryItem *queryItem, queryItems) {
                if (!queryItem->m_IsCorrect) {
                    findSuggestions(queryItem->m_Word);
                }
            }
        }

        bool canDelete = false;

        if (anyWrong) {
            item->requestSuggestions();
            this->submitItem(item);
        } else {
            canDelete = true;
        }

        return canDelete;
    }
Beispiel #3
0
//--------------------------------------------------------------
void ofApp::draw(){
    for (int i = 0; i < vectorOfButtons.size(); i++) {
        vectorOfButtons[i].redrawObject();
        if (vectorOfButtons[i].eyeOnButton(posX, posY) && !vectorOfButtons[i].getClicked()) {
            cursor.setClicking(true);
            if (cursor.checkClicked()) {
                vectorOfButtons[i].setClicked(true);
                switch (currentGrid) {
                    case 0:
                        currentGrid = menuMain(i);
                        if (currentGrid == 2) {
                            findSuggestions();
                        }
                        if (currentGrid == 5) {
                            vectorOfLabelArrays[0][4] = "";
                            typedSoFar += wordToType + " ";
                            vectorOfLabelArrays[0][7] = typedSoFar;
                            wordToType = "";
                            currentGrid = 0;
                        }
                        break;
                    case 1:
                        menuABC(i);
                        currentGrid = 0;
                        vectorOfLabelArrays[0][4] = wordToType;
                        break;
                    case 2:
                        menuSuggestions(i);
                        currentGrid = 0;
                        vectorOfLabelArrays[0][4] = wordToType;
                        break;
                    case 3:
                        menuHIJ(i);
                        currentGrid = 0;
                        vectorOfLabelArrays[0][4] = wordToType;
                        break;
                    case 4:
                        currentGrid = 0;
                        break;
                    case 5:
                        // Will not be reached
                        break;
                    case 6:
                        currentGrid = 0;
                        break;
                    case 7:
                        menuOPQ(i);
                        currentGrid = 0;
                        vectorOfLabelArrays[0][4] = wordToType;
                        break;
                    case 8:
                        currentGrid = 0;
                        break;
                    case 9:
                        menuUVW(i);
                        currentGrid = 0;
                        vectorOfLabelArrays[0][4] = wordToType;
                        break;
                    default:
                        break;
                }
                for (int i = 0; i < vectorOfButtons.size(); i++) {
                    vectorOfButtons[i].setValue(vectorOfLabelArrays[currentGrid][i]);
                }
            }
        } else if (!vectorOfButtons[i].eyeOnButton(posX, posY) && vectorOfButtons[i].getClicked()) {
            vectorOfButtons[i].setClicked(false);
        }
    }
    //cursor.redrawObject(posX,posY); ***COMMENTED OUT - UNCOMMENT ON MAC AND COMMENT NEXT LINE***
    cursor.redrawObject(posX, posY);
}