def zoomOut(self):
        if viewingIrText():
            cid = str(mw.reviewer.card.id)

            if cid not in self.settings['zoom']:
                self.settings['zoom'][cid] = 1

            self.settings['zoom'][cid] -= self.settings['zoomStep']
            mw.web.setZoomFactor(self.settings['zoom'][cid])
        elif mw.reviewer.card:
            newFactor = mw.web.zoomFactor() - self.settings['zoomStep']
            mw.web.setZoomFactor(newFactor)
    def restoreView(self):
        if viewingIrText():
            cid = str(mw.reviewer.card.id)
            if cid not in self.settings['zoom']:
                self.settings['zoom'][cid] = 1

            if cid not in self.settings['scroll']:
                self.settings['scroll'][cid] = 0

            mw.viewManager.setZoom()
            mw.viewManager.setScroll()
            self.restoreHighlighting()
def keyHandler(self, evt, _old):
    key = unicode(evt.text())
    handled = False

    if viewingIrText():
        if key == mw.settingsManager.settings['extractKey'].lower():
            mw.readingManager.extract()
            handled = True
        elif key == mw.settingsManager.settings['highlightKey'].lower():
            mw.readingManager.highlightText()
            handled = True
        elif key == mw.settingsManager.settings['removeKey'].lower():
            mw.readingManager.removeText()
            handled = True

    if handled:
        return True
    else:
        _old(self, evt)
 def saveScroll(self, event=None):
     if viewingIrText():
         pos = mw.web.page().mainFrame().scrollPosition().y()
         self.settings['scroll'][str(mw.reviewer.card.id)] = pos
    def quickAdd(self, quickKey):
        if not viewingIrText():
            return

        hasSelection = False
        selectedText = ''

        if len(mw.web.selectedText()) > 0:
            hasSelection = True
            mw.web.triggerPageAction(QWebPage.Copy)
            clipboard = QApplication.clipboard()
            mimeData = clipboard.mimeData()
            if quickKey['plainText']:
                selectedText = mimeData.text()
            else:
                selectedText = mimeData.html()
            self.highlightText(quickKey['bgColor'], quickKey['textColor'])

        # Create new note with selected model and deck
        newModel = mw.col.models.byName(quickKey['modelName'])
        newNote = notes.Note(mw.col, newModel)
        setField(newNote, quickKey['fieldName'], selectedText)

        card = mw.reviewer.card
        currentNote = card.note()
        tags = currentNote.stringTags()
        # Sets tags for the note, but still have to set them in the editor
        #   if show dialog (see below)
        newNote.setTagsFromStr(tags)

        for f in newModel['flds']:
            if SOURCE_FIELD_NAME == f['name']:
                setField(newNote, SOURCE_FIELD_NAME,
                         getField(currentNote, SOURCE_FIELD_NAME))

        if quickKey['editExtract']:
            self.acsCount += 1
            addCards = addcards.AddCards(mw)
            addCards.editor.setNote(newNote)
            if newNote.stringTags():
                addCards.editor.tags.setText(newNote.stringTags().strip())
            addCards.modelChooser.models.setText(quickKey['modelName'])
            addCards.deckChooser.deck.setText(quickKey['deckName'])
        elif hasSelection:
            deckId = mw.col.decks.byName(quickKey['deckName'])['id']
            newNote.model()['did'] = deckId
            ret = newNote.dupeOrEmpty()
            if ret == 1:
                showWarning(_('The first field is empty.'),
                            help='AddItems#AddError')
                return
            cards = mw.col.addNote(newNote)
            if not cards:
                showWarning(_('''\
                    The input you have provided would make an empty \
                    question on all cards.'''),
                            help='AddItems')
                return

            clearAudioQueue()
            mw.col.autosave()
            tooltip(_('Added'))

        if quickKey['editSource']:
            self.editCurrent = editcurrent.EditCurrent(mw)