Example #1
0
 def setupButtons(self):
     bb = self.form.buttonBox
     ar = QDialogButtonBox.ActionRole
     # add
     self.addButton = bb.addButton(_("Add"), ar)
     self.addButton.clicked.connect(self.addCards)
     self.addButton.setShortcut(QKeySequence("Ctrl+Return"))
     self.addButton.setToolTip(shortcut(_("Add (shortcut: ctrl+enter)")))
     # close
     self.closeButton = QPushButton(_("Close"))
     self.closeButton.setAutoDefault(False)
     bb.addButton(self.closeButton, QDialogButtonBox.RejectRole)
     # help
     self.helpButton = QPushButton(_("Help"), clicked=self.helpRequested)
     self.helpButton.setAutoDefault(False)
     bb.addButton(self.helpButton,
                                     QDialogButtonBox.HelpRole)
     # history
     b = bb.addButton(
         _("History")+ " "+downArrow(), ar)
     if isMac:
         sc = "Ctrl+Shift+H"
     else:
         sc = "Ctrl+H"
     b.setShortcut(QKeySequence(sc))
     b.setToolTip(_("Shortcut: %s") % shortcut(sc))
     b.clicked.connect(self.onHistory)
     b.setEnabled(False)
     self.historyButton = b
Example #2
0
 def setupButtons(self):
     self._buttons = {}
     # button styles for mac
     self.plastiqueStyle = QStyleFactory.create("plastique")
     self.widget.setStyle(self.plastiqueStyle)
     # icons
     self.iconsBox = QHBoxLayout()
     if not isMac:
         self.iconsBox.setMargin(6)
     else:
         self.iconsBox.setMargin(0)
     self.iconsBox.setSpacing(0)
     self.outerLayout.addLayout(self.iconsBox)
     b = self._addButton
     b("fields", self.onFields, "",
       shortcut(_("Customize Fields")), size=False, text=_("Fields..."),
       native=True, canDisable=False)
     b("layout", self.onCardLayout, _("Ctrl+L"),
       shortcut(_("Customize Cards (Ctrl+L)")),
       size=False, text=_("Cards..."), native=True, canDisable=False)
     # align to right
     self.iconsBox.addItem(QSpacerItem(20,1, QSizePolicy.Expanding))
     b("text_bold", self.toggleBold, _("Ctrl+B"), _("Bold text (Ctrl+B)"),
       check=True)
     b("text_italic", self.toggleItalic, _("Ctrl+I"), _("Italic text (Ctrl+I)"),
       check=True)
     b("text_under", self.toggleUnderline, _("Ctrl+U"),
       _("Underline text (Ctrl+U)"), check=True)
     b("text_super", self.toggleSuper, _("Ctrl+="),
       _("Superscript (Ctrl+=)"), check=True)
     b("text_sub", self.toggleSub, _("Ctrl+Shift+="),
       _("Subscript (Ctrl+Shift+=)"), check=True)
     b("text_clear", self.removeFormat, _("Ctrl+R"),
       _("Remove formatting (Ctrl+R)"))
     but = b("foreground", self.onForeground, _("F7"), text=" ")
     but.setToolTip(_("Set foreground colour (F7)"))
     self.setupForegroundButton(but)
     but = b("change_colour", self.onChangeCol, _("F8"),
       _("Change colour (F8)"), text=u"▾")
     but.setFixedWidth(12)
     but = b("cloze", self.onCloze, _("Ctrl+Shift+C"),
             _("Cloze deletion (Ctrl+Shift+C)"), text="[...]")
     but.setFixedWidth(24)
     s = self.clozeShortcut2 = QShortcut(
         QKeySequence(_("Ctrl+Alt+Shift+C")), self.parentWindow)
     s.connect(s, SIGNAL("activated()"), self.onCloze)
     # fixme: better image names
     b("mail-attachment", self.onAddMedia, _("F3"),
       _("Attach pictures/audio/video (F3)"))
     b("media-record", self.onRecSound, _("F5"), _("Record audio (F5)"))
     b("adv", self.onAdvanced, text=u"▾")
     s = QShortcut(QKeySequence("Ctrl+T, T"), self.widget)
     s.connect(s, SIGNAL("activated()"), self.insertLatex)
     s = QShortcut(QKeySequence("Ctrl+T, E"), self.widget)
     s.connect(s, SIGNAL("activated()"), self.insertLatexEqn)
     s = QShortcut(QKeySequence("Ctrl+T, M"), self.widget)
     s.connect(s, SIGNAL("activated()"), self.insertLatexMathEnv)
     s = QShortcut(QKeySequence("Ctrl+Shift+X"), self.widget)
     s.connect(s, SIGNAL("activated()"), self.onHtmlEdit)
     runHook("setupEditorButtons", self)
Example #3
0
 def setupButtons(self):
     self._buttons = {}
     # button styles for mac
     self.plastiqueStyle = QStyleFactory.create("plastique")
     self.widget.setStyle(self.plastiqueStyle)
     # icons
     self.iconsBox = QHBoxLayout()
     if not isMac:
         self.iconsBox.setMargin(6)
     else:
         self.iconsBox.setMargin(0)
     self.iconsBox.setSpacing(0)
     self.outerLayout.addLayout(self.iconsBox)
     b = self._addButton
     b("fields", self.onFields, "",
       shortcut(_("Customize Fields")), size=False, text=_("Fields..."),
       native=True, canDisable=False)
     b("layout", self.onCardLayout, "Ctrl+l",
       shortcut(_("Customize Card Layout (Ctrl+l)")),
       size=False, text=_("Cards..."), native=True, canDisable=False)
     # align to right
     self.iconsBox.addItem(QSpacerItem(20,1, QSizePolicy.Expanding))
     b("text_bold", self.toggleBold, "Ctrl+b", _("Bold text (Ctrl+b)"),
       check=True)
     b("text_italic", self.toggleItalic, "Ctrl+i", _("Italic text (Ctrl+i)"),
       check=True)
     b("text_under", self.toggleUnderline, "Ctrl+u",
       _("Underline text (Ctrl+u)"), check=True)
     b("text_super", self.toggleSuper, "Ctrl+=",
       _("Superscript (Ctrl+=)"), check=True)
     b("text_sub", self.toggleSub, "Ctrl+Shift+=",
       _("Subscript (Ctrl+Shift+=)"), check=True)
     b("text_remove", self.removeFormat, "Ctrl+r",
       _("Remove Formatting (Ctrl+r)"))
     but = b("foreground", self.onForeground, "F7", text=" ")
     self.setupForegroundButton(but)
     but = b("cloze", self.onCloze, "Ctrl+Shift+c",
             _("Cloze (Ctrl+Shift+c)"), text="[...]")
     but.setFixedWidth(24)
     # fixme: better image names
     b("mail-attachment", self.onAddMedia, "F3",
       _("Attach pictures/audio/video (F3)"))
     b("media-record", self.onRecSound, "F5", _("Record audio (F5)"))
     b("adv", self.onAdvanced, text=u"▾")
     s = QShortcut(QKeySequence("Ctrl+t, t"), self.widget)
     s.connect(s, SIGNAL("activated()"), self.insertLatex)
     s = QShortcut(QKeySequence("Ctrl+t, e"), self.widget)
     s.connect(s, SIGNAL("activated()"), self.insertLatexEqn)
     s = QShortcut(QKeySequence("Ctrl+t, m"), self.widget)
     s.connect(s, SIGNAL("activated()"), self.insertLatexMathEnv)
     s = QShortcut(QKeySequence("Ctrl+shift+x"), self.widget)
     s.connect(s, SIGNAL("activated()"), self.onHtmlEdit)
Example #4
0
 def _addButton(self, name, func, key=None, tip=None, size=True, text="",
                check=False, native=False, canDisable=True):
     b = QPushButton(text)
     if check:
         b.connect(b, SIGNAL("clicked(bool)"), func)
     else:
         b.connect(b, SIGNAL("clicked()"), func)
     if size:
         b.setFixedHeight(20)
         b.setFixedWidth(20)
     if not native:
         b.setStyle(self.plastiqueStyle)
         b.setFocusPolicy(Qt.NoFocus)
     else:
         b.setAutoDefault(False)
     if not text:
         b.setIcon(QIcon(":/icons/%s.png" % name))
     if key:
         b.setShortcut(QKeySequence(key))
     if tip:
         b.setToolTip(shortcut(tip))
     if check:
         b.setCheckable(True)
     self.iconsBox.addWidget(b)
     if canDisable:
         self._buttons[name] = b
     return b
Example #5
0
    def _renderBottom(self):
        links = [
            ["O", "opts", _("Options")],
        ]
        if self.mw.col.decks.current()['dyn']:
            links.append(["R", "refresh", _("Rebuild")])
            links.append(["E", "empty", _("Empty")])
        else:
            links.append(["C", "studymore", _("Custom Study")])
            #links.append(["F", "cram", _("Filter/Cram")])
        if self.mw.col.sched.haveBuried():
            links.append(["U", "unbury", _("Unbury")])
        buf = ""
        for b in links:
            if b[0]:
                b[0] = _("Shortcut key: %s") % shortcut(b[0])
            buf += """
<button title="%s" onclick='py.link(\"%s\");'>%s</button>""" % tuple(b)
        self.bottom.draw(buf)
        if isMac:
            size = 28
        else:
            size = 36 + self.mw.fontHeightDelta*3
        self.bottom.web.setFixedHeight(size)
        self.bottom.web.setLinkHandler(self._linkHandler)
Example #6
0
    def _renderBottom(self):
        links = [
            ["o", "opts", _("Options")],
        ]
        if self.mw.col.decks.current()['dyn']:
            links.append(["R", "refresh", _("Rebuild")])
            links.append(["E", "empty", _("Empty")])
        else:
            if not sum(self.mw.col.sched.counts()):
                if self.mw.col.sched.newDue() or \
                   self.mw.col.sched.revDue():
                    links.append(["L", "limits", _("Study More")])
            links.append(["F", "cram", _("Filter/Cram")])
        buf = ""
        for b in links:
            if b[0]:
                b[0] = _("Shortcut key: %s") % shortcut(b[0])
            buf += """
<button title="%s" onclick='py.link(\"%s\");'>%s</button>""" % tuple(b)
        self.bottom.draw(buf)
        if isMac:
            size = 28
        else:
            size = 36 + self.mw.fontHeightDelta*3
        self.bottom.web.setFixedHeight(size)
        self.bottom.web.setLinkHandler(self._linkHandler)
Example #7
0
 def setupButtons(self):
     self._buttons = {}
     # button styles for mac
     self.plastiqueStyle = QStyleFactory.create("plastique")
     self.widget.setStyle(self.plastiqueStyle)
     # icons
     self.iconsBox = QHBoxLayout()
     self.iconsBox.setMargin(0)
     self.iconsBox.setSpacing(0)
     self.outerLayout.addLayout(self.iconsBox)
     # align to right
     self.iconsBox.addItem(QSpacerItem(20, 1, QSizePolicy.Expanding))
     b = self._addButton
     b("layout", self.onCardLayout, "Ctrl+l", shortcut(_("Layout (Ctrl+l)")), size=False, text=_("Layout..."))
     b("text_bold", self.toggleBold, "Ctrl+b", _("Bold text (Ctrl+b)"), check=True)
     b("text_italic", self.toggleItalic, "Ctrl+i", _("Italic text (Ctrl+i)"), check=True)
     b("text_under", self.toggleUnderline, "Ctrl+u", _("Underline text (Ctrl+u)"), check=True)
     b("text_super", self.toggleSuper, "Ctrl+=", _("Superscript (Ctrl+=)"), check=True)
     b("text_sub", self.toggleSub, "Ctrl+Shift+=", _("Subscript (Ctrl+Shift+=)"), check=True)
     b("text_remove", self.removeFormat, "Ctrl+r", _("Subscript (Ctrl+r)"))
     but = b("foreground", self.onForeground, "F7", text=" ")
     self.setupForegroundButton(but)
     but = b("cloze", self.onCloze, "Ctrl+Shift+c", _("Cloze (Ctrl+Shift+c)"), text="[...]")
     but.setFixedWidth(24)
     # fixme: better image names
     b("text-speak", self.onAddMedia, "F3", _("Add pictures/audio/video (F3)"))
     b("media-record", self.onRecSound, "F5", _("Record audio (F5)"))
     b("tex", self.insertLatex, "Ctrl+t, t", _("LaTeX (Ctrl+t then t)"))
     b("math_sqrt", self.insertLatexEqn, "Ctrl+t, e", _("LaTeX equation (Ctrl+t then e)"))
     b("math_matrix", self.insertLatexMathEnv, "Ctrl+t, m", _("LaTeX math environment (Ctrl+t then m)"))
     but = b("text-xml", self.onHtmlEdit, "Ctrl+Shift+x", _("Source (Ctrl+Shift+x)"))
Example #8
0
    def setupDecks(self):
        if self.label:
            self.deckLabel = QLabel(_("Deck"))
            self.addWidget(self.deckLabel)
        # decks box
        self.deck = QPushButton()
        self.deck.setToolTip(shortcut(_("Target Deck (Ctrl+D)")))
        s = QShortcut(QKeySequence(_("Ctrl+D")), self.widget)
        s.connect(s, SIGNAL("activated()"), self.onDeckChange)
        self.addWidget(self.deck)
        self.connect(self.deck, SIGNAL("clicked()"), self.onDeckChange)
        # starting label

        decks = sendToAnki("decks")
        deck_name = "Default"
        for deck in decks:
            if deck['id'] == 1:
                deck_name = deck["name"]
                break
        self.deck.setText(deck_name)
        # layout
        sizePolicy = QSizePolicy(
            QSizePolicy.Policy(7),
            QSizePolicy.Policy(0))
        self.deck.setSizePolicy(sizePolicy)
Example #9
0
 def _addButton(self, icon, cmd, tip="", label="", id=None, toggleable=False,
                disables=True):
     if icon:
         if os.path.isabs(icon):
             iconstr = self.resourceToData(icon)
         else:
             iconstr = "/_anki/imgs/{}.png".format(icon)
         imgelm = '''<img class=topbut src="{}">'''.format(iconstr)
     else:
         imgelm = ""
     if label or not imgelm:
         labelelm = '''<span class=blabel>{}</span>'''.format(label or cmd)
     else:
         labelelm = ""
     if id:
         idstr = 'id={}'.format(id)
     else:
         idstr = ""
     if toggleable:
         toggleScript = 'toggleEditorButton(this);'
     else:
         toggleScript = ''
     tip = shortcut(tip)
     theclass = "linkb"
     if not disables:
         theclass += " perm"
     return ('''<button tabindex=-1 {id} class="{theclass}" type="button" title="{tip}"'''
             ''' onclick="pycmd('{cmd}');{togglesc}return false;">'''
             '''{imgelm}{labelelm}</button>'''.format(
                     imgelm=imgelm, cmd=cmd, tip=tip, labelelm=labelelm, id=idstr,
                     togglesc=toggleScript, theclass=theclass)
             )
Example #10
0
 def setupDecks(self):
     if self.label:
         self.deckLabel = QLabel(_("Deck"))
         self.addWidget(self.deckLabel)
     # decks box
     self.deck = QPushButton()
     self.deck.setToolTip(shortcut(_("Target Deck (Ctrl+D)")))
     s = QShortcut(QKeySequence(_("Ctrl+D")), self.widget)
     s.connect(s, SIGNAL("activated()"), self.onDeckChange)
     self.addWidget(self.deck)
     self.connect(self.deck, SIGNAL("clicked()"), self.onDeckChange)
     # starting label
     if self.mw.col.conf.get("addToCur", True):
         col = self.mw.col
         did = col.conf['curDeck']
         if col.decks.isDyn(did):
             # if they're reviewing, try default to current card
             c = self.mw.reviewer.card
             if self.mw.state == "review" and c:
                 if not c.odid:
                     did = c.did
                 else:
                     did = c.odid
             else:
                 did = 1
         self.deck.setText(self.mw.col.decks.nameOrNone(
             did) or _("Default"))
     else:
         self.deck.setText(self.mw.col.decks.nameOrNone(
             self.mw.col.models.current()['did']) or _("Default"))
     # layout
     sizePolicy = QSizePolicy(
         QSizePolicy.Policy(7),
         QSizePolicy.Policy(0))
     self.deck.setSizePolicy(sizePolicy)
Example #11
0
 def setupButtons(self):
     bb = self.form.buttonBox
     ar = QDialogButtonBox.ActionRole
     # add
     self.addButton = bb.addButton(_("Add"), ar)
     self.addButton.setShortcut(QKeySequence("Ctrl+Return"))
     self.addButton.setToolTip(shortcut(_("Add (shortcut: ctrl+enter)")))
     self.connect(self.addButton, SIGNAL("clicked()"), self.addCards)
     # close
     self.closeButton = QPushButton(_("Close"))
     self.closeButton.setAutoDefault(False)
     bb.addButton(self.closeButton,
                                     QDialogButtonBox.RejectRole)
     # help
     self.helpButton = QPushButton(_("Help"))
     self.helpButton.setAutoDefault(False)
     bb.addButton(self.helpButton,
                                     QDialogButtonBox.HelpRole)
     self.connect(self.helpButton, SIGNAL("clicked()"), self.helpRequested)
     # history
     b = bb.addButton(
         _("History")+ u" ▾", ar)
     self.connect(b, SIGNAL("clicked()"), self.onHistory)
     b.setEnabled(False)
     self.historyButton = b
Example #12
0
    def _drawButtons(self):
        buf = ""
        drawLinks = deepcopy(self.drawLinks)
        for b in drawLinks:
            if b[0]:
                b[0] = _("Shortcut key: %s") % shortcut(b[0])
            buf += """
<button title='%s' onclick='pycmd(\"%s\");'>%s</button>""" % tuple(b)
        self.bottom.draw(buf)
        self.bottom.web.onBridgeCmd = self._linkHandler
Example #13
0
 def __init__(self, mw, names=None, accept=None, title=None,
              help="studydeck", current=None, cancel=True,
              parent=None, dyn=False, buttons=[], geomKey="default"):
     QDialog.__init__(self, parent or mw)
     self.mw = mw
     self.form = aqt.forms.studydeck.Ui_Dialog()
     self.form.setupUi(self)
     self.form.filter.installEventFilter(self)
     self.cancel = cancel
     addHook('reset', self.onReset)
     self.geomKey = "studyDeck-"+geomKey
     restoreGeom(self, self.geomKey)
     if not cancel:
         self.form.buttonBox.removeButton(
             self.form.buttonBox.button(QDialogButtonBox.Cancel))
     if buttons:
         for b in buttons:
             self.form.buttonBox.addButton(b, QDialogButtonBox.ActionRole)
     else:
         b = QPushButton(_("Add"))
         b.setShortcut(QKeySequence("Ctrl+N"))
         b.setToolTip(shortcut(_("Add New Deck (Ctrl+N)")))
         self.form.buttonBox.addButton(b, QDialogButtonBox.ActionRole)
         b.connect(b, SIGNAL("clicked()"), self.onAddDeck)
     if title:
         self.setWindowTitle(title)
     if not names:
         names = sorted(self.mw.col.decks.allNames(dyn=dyn))
         self.nameFunc = None
         self.origNames = names
     else:
         self.nameFunc = names
         self.origNames = names()
     self.name = None
     self.ok = self.form.buttonBox.addButton(
         accept or _("Study"), QDialogButtonBox.AcceptRole)
     self.setWindowModality(Qt.WindowModal)
     self.connect(self.form.buttonBox,
                  SIGNAL("helpRequested()"),
                  lambda: openHelp(help))
     self.connect(self.form.filter,
                  SIGNAL("textEdited(QString)"),
                  self.redraw)
     self.connect(self.form.list,
                  SIGNAL("itemDoubleClicked(QListWidgetItem*)"),
                  self.accept)
     self.show()
     # redraw after show so position at center correct
     self.redraw("", current)
     self.exec_()
Example #14
0
    def _drawButtons(self):
        links = [
            ["", "shared", _("Get Shared")],
            ["", "create", _("Create Deck")],
            ["Ctrl+I", "import", _("Import File")],
        ]
        buf = ""
        for b in links:
            if b[0]:
                b[0] = _("Shortcut key: %s") % shortcut(b[0])
            buf += """
<button title='%s' onclick='pycmd(\"%s\");'>%s</button>""" % tuple(b)
        self.bottom.draw(buf)
        self.bottom.web.onBridgeCmd = self._linkHandler
Example #15
0
    def setupWeb(self):
        self.web = EditorWebView(self.widget, self)
        self.web.title = "editor"
        self.web.allowDrops = True
        self.web.onBridgeCmd = self.onBridgeCmd
        self.outerLayout.addWidget(self.web, 1)

        righttopbtns = list()
        righttopbtns.append(self._addButton('text_bold', 'bold', _("Bold text (Ctrl+B)"), id='bold'))
        righttopbtns.append(self._addButton('text_italic', 'italic', _("Italic text (Ctrl+I)"), id='italic'))
        righttopbtns.append(self._addButton('text_under', 'underline', _("Underline text (Ctrl+U)"), id='underline'))
        righttopbtns.append(self._addButton('text_super', 'super', _("Superscript (Ctrl++)"), id='superscript'))
        righttopbtns.append(self._addButton('text_sub', 'sub', _("Subscript (Ctrl+=)"), id='subscript'))
        righttopbtns.append(self._addButton('text_clear', 'clear', _("Remove formatting (Ctrl+R)")))
        # The color selection buttons do not use an icon so the HTML must be specified manually
        tip = _("Set foreground colour (F7)")
        righttopbtns.append('''<button tabindex=-1 class=linkb title="{}"
            type="button" onclick="pycmd('colour');return false;">
            <div id=forecolor style="display:inline-block; background: #000;border-radius: 5px;"
            class=topbut></div></button>'''.format(tip))
        tip = _("Change colour (F8)")
        righttopbtns.append('''<button tabindex=-1 class=linkb title="{}"
            type="button" onclick="pycmd('changeCol');return false;">
            <div style="display:inline-block; border-radius: 5px;"
            class="topbut rainbow"></div></button>'''.format(tip))
        righttopbtns.append(self._addButton('text_cloze', 'cloze', _("Cloze deletion (Ctrl+Shift+C)")))
        righttopbtns.append(self._addButton('paperclip', 'attach', _("Attach pictures/audio/video (F3)")))
        righttopbtns.append(self._addButton('media-record', 'record', _("Record audio (F5)")))
        righttopbtns.append(self._addButton('more', 'more'))
        righttopbtns = runFilter("setupEditorButtons", righttopbtns, self)
        topbuts = """
            <div id="topbutsleft" style="float:left;">
                <button title='%(fldsTitle)s' onclick="pycmd('fields')">%(flds)s...</button>
                <button title='%(cardsTitle)s' onclick="pycmd('cards')">%(cards)s...</button>
            </div>
            <div id="topbutsright" style="float:right;">
                %(rightbts)s
            </div>
        """ % dict(flds=_("Fields"), cards=_("Cards"), rightbts="".join(righttopbtns),
                   fldsTitle=_("Customize Fields"),
                   cardsTitle=shortcut(_("Customize Card Templates (Ctrl+L)")))
        bgcol = self.mw.app.palette().window().color().name()
        # then load page
        self.web.stdHtml(_html % (
            bgcol, bgcol,
            topbuts,
            _("Show Duplicates")),
                         css=["editor.css"],
                         js=["jquery.js", "editor.js"])
Example #16
0
 def setupTags(self):
     import aqt.tagedit
     g = QGroupBox(self.widget)
     g.setFlat(True)
     tb = QGridLayout()
     tb.setSpacing(12)
     tb.setContentsMargins(6,6,6,6)
     # tags
     l = QLabel(_("Tags"))
     tb.addWidget(l, 1, 0)
     self.tags = aqt.tagedit.TagEdit(self.widget)
     self.tags.lostFocus.connect(self.saveTags)
     self.tags.setToolTip(shortcut(_("Jump to tags with Ctrl+Shift+T")))
     tb.addWidget(self.tags, 1, 1)
     g.setLayout(tb)
     self.outerLayout.addWidget(g)
Example #17
0
 def setupModels(self):
     if self.label:
         self.modelLabel = QLabel(_("Type"))
         self.addWidget(self.modelLabel)
     # models box
     self.models = QPushButton()
     #self.models.setStyleSheet("* { text-align: left; }")
     self.models.setToolTip(shortcut(_("Change Note Type (Ctrl+N)")))
     s = QShortcut(QKeySequence(_("Ctrl+N")), self.widget)
     s.connect(s, SIGNAL("activated()"), self.onModelChange)
     self.addWidget(self.models)
     self.connect(self.models, SIGNAL("clicked()"), self.onModelChange)
     # layout
     sizePolicy = QSizePolicy(QSizePolicy.Policy(7), QSizePolicy.Policy(0))
     self.models.setSizePolicy(sizePolicy)
     self.updateModels()
Example #18
0
 def setupModels(self):
     if self.label:
         self.modelLabel = QLabel(_("Type"))
         self.addWidget(self.modelLabel)
     # models box
     self.models = QPushButton()
     # self.models.setStyleSheet("* { text-align: left; }")
     self.models.setToolTip(shortcut(_("Change Note Type (Ctrl+N)")))
     s = QShortcut(QKeySequence(_("Ctrl+N")), self.widget)
     s.connect(s, SIGNAL("activated()"), self.onModelChange)
     self.addWidget(self.models)
     self.connect(self.models, SIGNAL("clicked()"), self.onModelChange)
     # layout
     sizePolicy = QSizePolicy(QSizePolicy.Policy(7), QSizePolicy.Policy(0))
     self.models.setSizePolicy(sizePolicy)
     self.updateModels()
Example #19
0
    def _drawButtons(self):
        links = [
            ["", "shared", _("Get Shared")],
            ["", "create", _("Create")],
            ["Ctrl+I", "import", _("Import File")],
            ["C", "cram", _("Cram")],
        ]
        buf = ""
        for b in links:
            if b[0]:
                b[0] = _("Shortcut key: %s") % shortcut(b[0])
            buf += """
<button title='%s' onclick='py.link(\"%s\");'>%s</button>""" % tuple(b)
        self.bottom.draw(buf)
        self.bottom.web.setFixedHeight(isMac and 28 or 36)
        self.bottom.web.setLinkHandler(self._linkHandler)
    def setupRadioBtns(self):
        for imodel, modelName in enumerate(CONFIG["displayedCardTypes"]):
            button = QRadioButton("({}) {}".format(imodel + 1, modelName))

            self.radioLayout.addWidget(button, alignment=Qt.AlignLeft)
            self.radioButtons.append(button)
            self.radioButtonForName[modelName] = button

            qconnect(button.clicked, self.onDeckRadioClicked)

            shortcut_text = "Ctrl+{}".format(imodel + 1)
            button.setShortcut(QKeySequence(shortcut_text))
            button.setToolTip(
                shortcut("Select Note Type ({})".format(shortcut_text)))

        self.updateSelectedRadioBtn()
Example #21
0
File: editor.py Project: hans/anki
 def setupTags(self):
     import aqt.tagedit
     g = QGroupBox(self.widget)
     g.setFlat(True)
     tb = QGridLayout()
     tb.setSpacing(12)
     tb.setContentsMargins(6,6,6,6)
     # tags
     l = QLabel(_("Tags"))
     tb.addWidget(l, 1, 0)
     self.tags = aqt.tagedit.TagEdit(self.widget)
     self.tags.lostFocus.connect(self.saveTags)
     self.tags.setToolTip(shortcut(_("Jump to tags with Ctrl+Shift+T")))
     tb.addWidget(self.tags, 1, 1)
     g.setLayout(tb)
     self.outerLayout.addWidget(g)
Example #22
0
 def setupModels(self) -> None:
     if self.label:
         self.modelLabel = QLabel(_("Type"))
         self.addWidget(self.modelLabel)
     # models box
     self.models = QPushButton()
     self.models.setToolTip(shortcut(_("Change Note Type (Ctrl+N)")))
     QShortcut(QKeySequence("Ctrl+N"),
               self.widget,
               activated=self.on_activated)  # type: ignore
     self.models.setAutoDefault(False)
     self.addWidget(self.models)
     qconnect(self.models.clicked, self.onModelChange)
     # layout
     sizePolicy = QSizePolicy(QSizePolicy.Policy(7), QSizePolicy.Policy(0))
     self.models.setSizePolicy(sizePolicy)
     self.updateModels()
Example #23
0
    def _renderBottom(self):
        links = [
            ["o", "opts", _("Options")],
        ]
        if self.mw.col.decks.current()['dyn']:
            links.append(["r", "refresh", _("Rebuild")])
        else:
            links.append(["c", "cram", _("Cram")])
        buf = ""
        for b in links:
            if b[0]:
                b[0] = _("Shortcut key: %s") % shortcut(b[0])
            buf += """
<button title="%s" onclick='py.link(\"%s\");'>%s</button>""" % tuple(b)
        self.bottom.draw(buf)
        self.bottom.web.setFixedHeight(isMac and 28 or 36)
        self.bottom.web.setLinkHandler(self._linkHandler)
Example #24
0
 def _addButton(self, icon, cmd, tip="", id=None, toggleable=False):
     if os.path.isabs(icon):
         iconstr = self.resourceToData(icon)
     else:
         iconstr = "/_anki/imgs/{}.png".format(icon)
     if id:
         idstr = 'id={}'.format(id)
     else:
         idstr = ""
     if toggleable:
         toggleScript = 'toggleEditorButton(this);'
     else:
         toggleScript = ''
     tip = shortcut(tip)
     return '''<button tabindex=-1 {id} class=linkb type="button" title="{tip}" onclick="pycmd('{cmd}');{togglesc}return false;">
         <img class=topbut src="{icon}"></button>'''.format(
         icon=iconstr, cmd=cmd, tip=tip, id=idstr, togglesc=toggleScript)
Example #25
0
    def _addButton(self, icon, cmd, tip="", label="", id=None, toggleable=False,
                   disables=True):
        """Create a button, with the image icon, or the text of the label, or
        of the cmd. It send the python command cmd.

        icon -- url to the icon. Potentially falsy
        cmd -- python command to call when the button is pressed
        tip -- text to show when the mouse is on the button
        id -- an identifier for the html button
        toggleable -- whether pressing the button should call the js function toggleEditorButton
        disables -- if true, add class "perm" to the btuton

        """
        if icon:
            if icon.startswith("qrc:/"):
                iconstr = icon
            elif os.path.isabs(icon):
                iconstr = self.resourceToData(icon)
            else:
                iconstr = "/_anki/imgs/{}.png".format(icon)
            imgelm = '''<img class=topbut src="{}">'''.format(iconstr)
        else:
            imgelm = ""
        if label or not imgelm:
            labelelm = '''<span class=blabel>{}</span>'''.format(label or cmd)
        else:
            labelelm = ""
        if id:
            idstr = 'id={}'.format(id)
        else:
            idstr = ""
        if toggleable:
            toggleScript = 'toggleEditorButton(this);'
        else:
            toggleScript = ''
        tip = shortcut(tip)
        theclass = "linkb"
        if not disables:
            theclass += " perm"
        return ('''<button tabindex=-1 {id} class="{theclass}" type="button" title="{tip}"'''
                ''' onclick="pycmd('{cmd}');{togglesc}return false;">'''
                '''{imgelm}{labelelm}</button>'''.format(
                        imgelm=imgelm, cmd=cmd, tip=tip, labelelm=labelelm, id=idstr,
                        togglesc=toggleScript, theclass=theclass)
                )
def create_button(self, name, func, key=None, tip=None, size=True, text="",
                  check=False, native=False, canDisable=True):

    button = QPushButton(text)

    if check:
        button.clicked[bool].connect(func)
    else:
        button.clicked.connect(func)

    if size:
        button.setFixedHeight(20)
        button.setFixedWidth(20)

    if not native:
        if self.plastiqueStyle:
            button.setStyle(self.plastiqueStyle)
        button.setFocusPolicy(Qt.NoFocus)
    else:
        button.setAutoDefault(False)

    if key:
        button.setShortcut(QKeySequence(key))

    if tip:
        button.setToolTip(shortcut(tip))

    if check:
        button.setCheckable(True)

    if canDisable:
        self._buttons[name] = button

    PrefHelper.set_icon(button, name)

    const.BUTTONS.append(button)

    button_placement_pref = preferences.PREFS.get(const.BUTTON_PLACEMENT)

    if button_placement_pref == "adjacent":
        self.iconsBox.addWidget(button)
    else:
        self.supp_buttons_hbox.addWidget(button)

    return button
Example #27
0
 def __init__(self, mw, names=None, accept=None, title=None,
              help="studydeck", current=None, cancel=True,
              parent=None, dyn=False, buttons=None, geomKey="default"):
     QDialog.__init__(self, parent or mw)
     if buttons is None:
         buttons = []
     self.mw = mw
     self.form = aqt.forms.studydeck.Ui_Dialog()
     self.form.setupUi(self)
     self.form.filter.installEventFilter(self)
     self.cancel = cancel
     addHook('reset', self.onReset)
     self.geomKey = "studyDeck-"+geomKey
     restoreGeom(self, self.geomKey)
     if not cancel:
         self.form.buttonBox.removeButton(
             self.form.buttonBox.button(QDialogButtonBox.Cancel))
     if buttons:
         for b in buttons:
             self.form.buttonBox.addButton(b, QDialogButtonBox.ActionRole)
     else:
         b = QPushButton(_("Add"))
         b.setShortcut(QKeySequence("Ctrl+N"))
         b.setToolTip(shortcut(_("Add New Deck (Ctrl+N)")))
         self.form.buttonBox.addButton(b, QDialogButtonBox.ActionRole)
         b.clicked.connect(self.onAddDeck)
     if title:
         self.setWindowTitle(title)
     if not names:
         names = sorted(self.mw.col.decks.allNames(dyn=dyn))
         self.nameFunc = None
         self.origNames = names
     else:
         self.nameFunc = names
         self.origNames = names()
     self.name = None
     self.ok = self.form.buttonBox.addButton(
         accept or _("Study"), QDialogButtonBox.AcceptRole)
     self.setWindowModality(Qt.WindowModal)
     self.form.filter.textEdited.connect(self.redraw)
     self.form.list.itemDoubleClicked.connect(self.accept)
     self.show()
     # redraw after show so position at center correct
     self.redraw("", current)
     self.exec_()
Example #28
0
 def setupModels(self) -> None:
     if self.label:
         self.modelLabel = QLabel(tr(TR.NOTETYPES_TYPE))
         self.addWidget(self.modelLabel)
     # models box
     self.models = QPushButton()
     self.models.setToolTip(
         shortcut(tr(TR.QT_MISC_CHANGE_NOTE_TYPE_CTRLANDN)))
     QShortcut(QKeySequence("Ctrl+N"),
               self.widget,
               activated=self.on_activated)  # type: ignore
     self.models.setAutoDefault(False)
     self.addWidget(self.models)
     qconnect(self.models.clicked, self.onModelChange)
     # layout
     sizePolicy = QSizePolicy(QSizePolicy.Policy(7), QSizePolicy.Policy(0))
     self.models.setSizePolicy(sizePolicy)
     self.updateModels()
Example #29
0
    def _drawButtons(self):
        links = [
            ["", "create", _("Create Deck")],
            ["Ctrl+I", "import", _("Import File")],
        ]
        buf = ""
        for b in links:
            if b[0]:
                b[0] = _("Shortcut key: %s") % shortcut(b[0])
            buf += """
<button title='%s' onclick='py.link(\"%s\");'>%s</button>""" % tuple(b)
        self.bottom.draw(buf)
        if isMac:
            size = 28
        else:
            size = 36 + self.mw.fontHeightDelta * 3
        self.bottom.web.setFixedHeight(size)
        self.bottom.web.setLinkHandler(self._linkHandler)
Example #30
0
 def add_preview_button(leftbuttons: List[str], editor: Editor) -> None:
     preview_shortcut = "Ctrl+Shift+P"
     leftbuttons.insert(
         0,
         editor.addButton(
             None,
             "preview",
             lambda _editor: self.onTogglePreview(),
             tr.browsing_preview_selected_card(
                 val=shortcut(preview_shortcut), ),
             tr.actions_preview(),
             id="previewButton",
             keys=preview_shortcut,
             disables=False,
             rightside=False,
             toggleable=True,
         ),
     )
Example #31
0
def add_occlusion_button(buttons, editor):
    file_path = dirname(realpath(__file__))
    icon_path = Path(file_path, "..", "..", "icons", "occlude.png")

    shortcut_as_text = shortcut(
        QKeySequence(occlude_shortcut.value).toString())

    occlusion_button = editor._addButton(
        str(icon_path.absolute()),
        "occlude",
        f"Put all fields into occlusion mode ({shortcut_as_text})",
        id="closetOcclude",
        disables=False,
        toggleable=True,
    )

    editor._links["occlude"] = toggle_occlusion_mode
    buttons.insert(-1, occlusion_button)
Example #32
0
 def _addButton(self,
                icon,
                cmd,
                tip="",
                label="",
                id=None,
                toggleable=False,
                disables=True):
     if icon:
         if icon.startswith("qrc:/"):
             iconstr = icon
         elif os.path.isabs(icon):
             iconstr = self.resourceToData(icon)
         else:
             iconstr = "/_anki/imgs/{}.png".format(icon)
         imgelm = '''<img class=topbut src="{}">'''.format(iconstr)
     else:
         imgelm = ""
     if label or not imgelm:
         labelelm = '''<span class=blabel>{}</span>'''.format(label or cmd)
     else:
         labelelm = ""
     if id:
         idstr = 'id={}'.format(id)
     else:
         idstr = ""
     if toggleable:
         toggleScript = 'toggleEditorButton(this);'
     else:
         toggleScript = ''
     tip = shortcut(tip)
     theclass = "linkb"
     if not disables:
         theclass += " perm"
     return (
         '''<button tabindex=-1 {id} class="{theclass}" type="button" title="{tip}"'''
         ''' onclick="pycmd('{cmd}');{togglesc}return false;">'''
         '''{imgelm}{labelelm}</button>'''.format(imgelm=imgelm,
                                                  cmd=cmd,
                                                  tip=tip,
                                                  labelelm=labelelm,
                                                  id=idstr,
                                                  togglesc=toggleScript,
                                                  theclass=theclass))
Example #33
0
    def setupTags(self):
        import aqt.tagedit

        g = QGroupBox(self.widget)
        g.setStyleSheet("border: 0")
        tb = QGridLayout()
        tb.setSpacing(12)
        tb.setContentsMargins(2, 6, 2, 6)
        # tags
        l = QLabel(_("Tags"))
        tb.addWidget(l, 1, 0)
        self.tags = aqt.tagedit.TagEdit(self.widget)
        qconnect(self.tags.lostFocus, self.saveTags)
        self.tags.setToolTip(shortcut(_("Jump to tags with Ctrl+Shift+T")))
        border = theme_manager.str_color("border")
        self.tags.setStyleSheet(f"border: 1px solid {border}")
        tb.addWidget(self.tags, 1, 1)
        g.setLayout(tb)
        self.outerLayout.addWidget(g)
Example #34
0
 def setupModels(self):
     if self.label:
         self.modelLabel = QLabel(_("Type"))
         self.addWidget(self.modelLabel)
     # models box
     self.models = QPushButton()
     self.models.setCursor(QtCore.Qt.PointingHandCursor)
     #self.models.setStyleSheet("* { text-align: left; }")
     self.models.setToolTip(shortcut(_("Change Note Type (Ctrl+N)")))
     s = QShortcut(QKeySequence(_("Ctrl+N")),
                   self.widget,
                   activated=self.onModelChange)
     self.models.setAutoDefault(False)
     self.addWidget(self.models)
     self.models.clicked.connect(self.onModelChange)
     # layout
     sizePolicy = QSizePolicy(QSizePolicy.Policy(7), QSizePolicy.Policy(0))
     self.models.setSizePolicy(sizePolicy)
     self.updateModels()
Example #35
0
    def setupTags(self) -> None:
        import aqt.tagedit

        g = QGroupBox(self.widget)
        g.setStyleSheet("border: 0")
        tb = QGridLayout()
        tb.setSpacing(12)
        tb.setContentsMargins(2, 6, 2, 6)
        # tags
        l = QLabel(tr.editing_tags())
        tb.addWidget(l, 1, 0)
        self.tags = aqt.tagedit.TagEdit(self.widget)
        qconnect(self.tags.lostFocus, self.on_tag_focus_lost)
        self.tags.setToolTip(shortcut(tr.editing_jump_to_tags_with_ctrlandshiftandt()))
        border = theme_manager.color(colors.BORDER)
        self.tags.setStyleSheet(f"border: 1px solid {border}")
        tb.addWidget(self.tags, 1, 1)
        g.setLayout(tb)
        self.outerLayout.addWidget(g)
Example #36
0
    def _drawButtons(self):
        links = [
            ["", "shared", _("Get Shared")],
            ["", "create", _("Create Deck")],
            ["Ctrl+I", "import", _("Import File")],
        ]
        buf = ""
        for b in links:
            if b[0]:
                b[0] = _("Shortcut key: %s") % shortcut(b[0])
            buf += """
<button title='%s' onclick='py.link(\"%s\");'>%s</button>""" % tuple(b)
        self.bottom.draw(buf)
        if isMac:
            size = 28
        else:
            size = 36 + self.mw.fontHeightDelta*3
        self.bottom.web.setFixedHeight(size)
        self.bottom.web.setLinkHandler(self._linkHandler)
Example #37
0
    def _renderBottom(self):
        links = [
            ["O", "opts", _("Options")],
        ]
        if self.mw.col.decks.current()['dyn']:
            links.append(["R", "refresh", _("Rebuild")])
            links.append(["E", "empty", _("Empty")])
        else:
            links.append(["C", "studymore", _("Custom Study")])
            #links.append(["F", "cram", _("Filter/Cram")])
        if self.mw.col.sched.haveBuried():
            links.append(["U", "unbury", _("Unbury")])
        buf = ""
        for b in links:
            if b[0]:
                b[0] = _("Shortcut key: %s") % shortcut(b[0])
            buf += """
<button title="%s" onclick='pycmd("%s")'>%s</button>""" % tuple(b)
        self.bottom.draw(buf)
        self.bottom.web.onBridgeCmd = self._linkHandler
Example #38
0
    def _renderBottom(self):
        links = [
            ["O", "opts", _("Options")],
        ]
        if self.mw.col.decks.current()['dyn']:
            links.append(["R", "refresh", _("Rebuild")])
            links.append(["E", "empty", _("Empty")])
        else:
            links.append(["C", "studymore", _("Custom Study")])
            #links.append(["F", "cram", _("Filter/Cram")])
        if self.mw.col.sched.haveBuried():
            links.append(["U", "unbury", _("Unbury")])
        buf = ""
        for b in links:
            if b[0]:
                b[0] = _("Shortcut key: %s") % shortcut(b[0])
            buf += """
<button title="%s" onclick='pycmd("%s")'>%s</button>""" % tuple(b)
        self.bottom.draw(buf)
        self.bottom.web.onBridgeCmd = self._linkHandler
Example #39
0
    def setupTags(self):
        import aqt.tagedit

        g = QGroupBox(self.widget)
        g.setStyleSheet("border: 0")
        tb = QGridLayout()
        tb.setSpacing(12)
        tb.setContentsMargins(2, 6, 2, 6)
        # tags
        l = QLabel(tr(TR.EDITING_TAGS))
        tb.addWidget(l, 1, 0)
        self.tags = aqt.tagedit.TagEdit(self.widget)
        qconnect(self.tags.lostFocus, self.saveTags)
        self.tags.setToolTip(
            shortcut(tr(TR.EDITING_JUMP_TO_TAGS_WITH_CTRLANDSHIFTANDT)))
        border = theme_manager.str_color("border")
        self.tags.setStyleSheet(f"border: 1px solid {border}")
        tb.addWidget(self.tags, 1, 1)
        g.setLayout(tb)
        self.outerLayout.addWidget(g)
Example #40
0
    def setupButtons(self):
        bb = self.form.buttonBox
        ar = QDialogButtonBox.ActionRole

        # add
        self.addButton = bb.addButton("Add", ar)
        self.addButton.setShortcut(QKeySequence("Ctrl+Return"))
        self.addButton.setToolTip(shortcut("Add (shortcut: ctrl+enter)"))
        self.connect(self.addButton, SIGNAL("clicked()"), self.addCards)

        # close
        self.closeButton = QPushButton("Close")
        self.closeButton.setAutoDefault(False)
        bb.addButton(self.closeButton, QDialogButtonBox.RejectRole)

        # shortcuts
        # switch to tag / fields
        s = QShortcut(QKeySequence(_("Ctrl+t")), self)
        s.connect(s, SIGNAL("activated()"), self.onTagFocus)
        s = QShortcut(QKeySequence(_("Ctrl+f")), self)
        s.connect(s, SIGNAL("activated()"), self.onFieldFocus)
Example #41
0
def ankiPubSubOptionsButton(self):
    links = [
        ["", "ankipubsubDeckManager", _("AnkiPubSub")],
        ["", "shared", _("Get Shared")],
        ["", "create", _("Create Deck")],
        ["Ctrl+I", "import", _("Import File")],
    ]
    buf = ""
    for b in links:
        if b[0]:
            b[0] = _("Shortcut key: %s") % shortcut(b[0])
        buf += """
<button title='%s' onclick='py.link(\"%s\");'>%s</button>""" % tuple(b)
    self.bottom.draw(buf)
    # todo find out what ismac was for
    #if isMac:
    #    size = 28
    #else:
    size = 36 + self.mw.fontHeightDelta*3
    self.bottom.web.setFixedHeight(size)
    self.bottom.web.setLinkHandler(self._linkHandler)
Example #42
0
    def _setup_ui(self, show_label: bool) -> None:
        self.setContentsMargins(0, 0, 0, 0)
        self.setSpacing(8)

        if show_label:
            self.label = QLabel(tr(TR.NOTETYPES_TYPE))
            self.addWidget(self.label)

        # button
        self.button = QPushButton()
        self.button.setToolTip(shortcut(tr(TR.QT_MISC_CHANGE_NOTE_TYPE_CTRLANDN)))
        qconnect(
            QShortcut(QKeySequence("Ctrl+N"), self._widget).activated,
            self.on_button_activated,
        )
        self.button.setAutoDefault(False)
        self.addWidget(self.button)
        qconnect(self.button.clicked, self.on_button_activated)
        sizePolicy = QSizePolicy(QSizePolicy.Policy(7), QSizePolicy.Policy(0))
        self.button.setSizePolicy(sizePolicy)
        self._widget.setLayout(self)
Example #43
0
    def _renderBottom(self) -> None:
        links = [
            ["O", "opts", tr(TR.ACTIONS_OPTIONS)],
        ]
        if self.mw.col.decks.current()["dyn"]:
            links.append(["R", "refresh", tr(TR.ACTIONS_REBUILD)])
            links.append(["E", "empty", tr(TR.STUDYING_EMPTY)])
        else:
            links.append(["C", "studymore", tr(TR.ACTIONS_CUSTOM_STUDY)])
            # links.append(["F", "cram", _("Filter/Cram")])
        if self.mw.col.sched.haveBuried():
            links.append(["U", "unbury", tr(TR.STUDYING_UNBURY)])
        buf = ""
        for b in links:
            if b[0]:
                b[0] = tr(TR.ACTIONS_SHORTCUT_KEY, val=shortcut(b[0]))
            buf += """
<button title="%s" onclick='pycmd("%s")'>%s</button>""" % tuple(b)
        self.bottom.draw(buf=buf,
                         link_handler=self._linkHandler,
                         web_context=OverviewBottomBar(self))
Example #44
0
    def _setup_ui(self, show_label: bool) -> None:
        self.setContentsMargins(0, 0, 0, 0)
        self.setSpacing(8)

        # text label before button?
        if show_label:
            self.deckLabel = QLabel(tr(TR.DECKS_DECK))
            self.addWidget(self.deckLabel)

        # decks box
        self.deck = QPushButton()
        qconnect(self.deck.clicked, self.choose_deck)
        self.deck.setAutoDefault(False)
        self.deck.setToolTip(shortcut(tr(TR.QT_MISC_TARGET_DECK_CTRLANDD)))
        qconnect(
            QShortcut(QKeySequence("Ctrl+D"), self._widget).activated,
            self.choose_deck)
        sizePolicy = QSizePolicy(QSizePolicy.Policy(7), QSizePolicy.Policy(0))
        self.deck.setSizePolicy(sizePolicy)
        self.addWidget(self.deck)

        self._widget.setLayout(self)
Example #45
0
def create_button(self, layout, name, func, key=None, tip=None, size=True, text="",
                  check=False, native=False, canDisable=True, height=None, width=None):
    """
    Create custom editor button and add it to our own button hbox
    Based on neftas/supplementary-buttons
    """
    button = QPushButton(text)

    if check:
        button.clicked[bool].connect(func)
    else:
        button.clicked.connect(func)

    if size:
        button.setFixedHeight(height or 20)
        button.setFixedWidth(width or 20)

    if not native:
        if self.plastiqueStyle:
            button.setStyle(self.plastiqueStyle)
        button.setFocusPolicy(Qt.NoFocus)
    else:
        button.setAutoDefault(False)

    if key:
        button.setShortcut(QKeySequence(key))

    if tip:
        button.setToolTip(shortcut(tip))

    if check:
        button.setCheckable(True)

    if canDisable:
        self._buttons[name] = button

    layout.addWidget(button)

    return button
Example #46
0
 def setupButtons(self):
     bb = self.form.buttonBox
     ar = QDialogButtonBox.ActionRole
     # add
     self.addButton = bb.addButton(_("Add"), ar)
     self.addButton.setShortcut(QKeySequence("Ctrl+Return"))
     self.addButton.setToolTip(shortcut(_("Add (shortcut: ctrl+enter)")))
     self.connect(self.addButton, SIGNAL("clicked()"), self.addCards)
     # close
     self.closeButton = QPushButton(_("Close"))
     self.closeButton.setAutoDefault(False)
     bb.addButton(self.closeButton, QDialogButtonBox.RejectRole)
     # help
     self.helpButton = QPushButton(_("Help"))
     self.helpButton.setAutoDefault(False)
     bb.addButton(self.helpButton, QDialogButtonBox.HelpRole)
     self.connect(self.helpButton, SIGNAL("clicked()"), self.helpRequested)
     # history
     b = bb.addButton(_("History") + u" ▾", ar)
     self.connect(b, SIGNAL("clicked()"), self.onHistory)
     b.setEnabled(False)
     self.historyButton = b
Example #47
0
    def _renderBottom(self) -> None:
        links = [
            ["O", "opts", tr.actions_options()],
        ]
        if self.mw.col.decks.current()["dyn"]:
            links.append(["R", "refresh", tr.actions_rebuild()])
            links.append(["E", "empty", tr.studying_empty()])
        else:
            links.append(["C", "studymore", tr.actions_custom_study()])
            # links.append(["F", "cram", _("Filter/Cram")])
        if self.mw.col.sched.haveBuried():
            links.append(["U", "unbury", tr.studying_unbury()])
        links.append(["", "description", tr.scheduling_description()])
        buf = ""
        for b in links:
            if b[0]:
                b[0] = tr.actions_shortcut_key(val=shortcut(b[0]))
            buf += """
<button title="%s" onclick='pycmd("%s")'>%s</button>""" % tuple(b)
        self.bottom.draw(buf=buf,
                         link_handler=self._linkHandler,
                         web_context=OverviewBottomBar(self))
Example #48
0
def renderDeckBottom(self, _old):
    links = [
        [
            "O", "opts",
            _("<i class=\" material-icons left\">settings_applications</i> Options"
              )
        ],
    ]
    if self.mw.col.decks.current()["dyn"]:
        links.append([
            "R", "refresh",
            _("<i class=\" material-icons left\">build</i> Rebuild")
        ])
        links.append([
            "E", "empty",
            _("<i class=\" material-icons left\">delete</i> Empty")
        ])
    else:
        links.append([
            "C", "studymore",
            _("<i class=\" material-icons left\">event</i>Custom Study")
        ])
        # links.append(["F", "cram", _("Filter/Cram")])
    if self.mw.col.sched.haveBuried():
        links.append([
            "U", "unbury",
            _("<i class=\" material-icons left\">do_not_disturb_off</i>Unbury")
        ])
    buf = ""
    for b in links:
        if b[0]:
            b[0] = _("Shortcut key: %s") % shortcut(b[0])
        buf += """
<button class='{MAIN[bg-color]} btn-small' title="%s" onclick='pycmd("%s")'>%s</button>""".format(
            MAIN=MAIN) % tuple(b)

    self.bottom.draw(buf=buf,
                     link_handler=self._linkHandler,
                     web_context=OverviewBottomBar(self))
Example #49
0
    def _renderBottom(self):
        links = [
            ["O", "opts", _("Options")],
        ]
        if self.mw.col.decks.current()['dyn']:
            links.append(["R", "refresh", _("Rebuild")])
            links.append(["E", "empty", _("Empty")])
        else:
            links.append(["C", "studymore", _("Custom Study")])
            #links.append(["F", "cram", _("Filter/Cram")])
        buf = ""
        for b in links:
            if b[0]:
                b[0] = _("Shortcut key: %s") % shortcut(b[0])
            buf += """
<button title="%s" onclick='py.link(\"%s\");'>%s</button>""" % tuple(b)
        self.bottom.draw(buf)
        if isMac:
            size = 28
        else:
            size = 36 + self.mw.fontHeightDelta * 3
        self.bottom.web.setFixedHeight(size)
        self.bottom.web.setLinkHandler(self._linkHandler)
Example #50
0
 def _addButton(self,
                name,
                func,
                key=None,
                tip=None,
                size=True,
                text="",
                check=False,
                native=False,
                canDisable=True):
     b = QPushButton(text)
     if check:
         b.connect(b, SIGNAL("clicked(bool)"), func)
     else:
         b.connect(b, SIGNAL("clicked()"), func)
     if size:
         b.setFixedHeight(20)
         b.setFixedWidth(20)
     if not native:
         if self.plastiqueStyle:
             b.setStyle(self.plastiqueStyle)
         b.setFocusPolicy(Qt.NoFocus)
     else:
         b.setAutoDefault(False)
     if not text:
         b.setIcon(QIcon(":/icons/%s.png" % name))
     if key:
         b.setShortcut(QKeySequence(key))
     if tip:
         b.setToolTip(shortcut(tip))
     if check:
         b.setCheckable(True)
     self.iconsBox.addWidget(b)
     if canDisable:
         self._buttons[name] = b
     return b
def _drawButtons(self):
    buf = "{}".format(bottomHTML_style)
    if style_mainScreenButtons:
        #// style='height: px' -> to prevent changing main screen buttons heights
        # based on height defined in #main {}
        mainScreen_style = """id=main style='height: px' """
    else:
        mainScreen_style = ""
    drawLinks = deepcopy(self.drawLinks)
    for b in drawLinks:
        b.insert(0, "{}".format(mainScreen_style))
        if b[0]:
            b[0] = _("Shortcut key: %s") % shortcut(b[0])
        buf += """
<button %s title='%s' onclick='pycmd(\"%s\");'>%s</button>""" % (tuple(b))
    if anki_version > 2121:
        self.bottom.draw(
            buf=buf,
            link_handler=self._linkHandler,
            web_context=DeckBrowserBottomBar(self),
        )
    else:
        self.bottom.draw(buf)
        self.bottom.web.onBridgeCmd = self._linkHandler
Example #52
0
 def setupDecks(self) -> None:
     if self.label:
         self.deckLabel = QLabel(tr(TR.DECKS_DECK))
         self.addWidget(self.deckLabel)
     # decks box
     self.deck = QPushButton(clicked=self.onDeckChange)  # type: ignore
     self.deck.setAutoDefault(False)
     self.deck.setToolTip(shortcut(tr(TR.QT_MISC_TARGET_DECK_CTRLANDD)))
     QShortcut(QKeySequence("Ctrl+D"),
               self._widget,
               activated=self.onDeckChange)  # type: ignore
     self.addWidget(self.deck)
     # starting label
     if self.mw.col.conf.get("addToCur", True):
         col = self.mw.col
         did = col.conf["curDeck"]
         if col.decks.isDyn(did):
             # if they're reviewing, try default to current card
             c = self.mw.reviewer.card
             if self.mw.state == "review" and c:
                 if not c.odid:
                     did = c.did
                 else:
                     did = c.odid
             else:
                 did = 1
         self.setDeckName(
             self.mw.col.decks.nameOrNone(did) or tr(TR.QT_MISC_DEFAULT))
     else:
         self.setDeckName(
             self.mw.col.decks.nameOrNone(
                 self.mw.col.models.current()["did"])
             or tr(TR.QT_MISC_DEFAULT))
     # layout
     sizePolicy = QSizePolicy(QSizePolicy.Policy(7), QSizePolicy.Policy(0))
     self.deck.setSizePolicy(sizePolicy)
Example #53
0
    def setupWeb(self):
        self.web = EditorWebView(self.widget, self)
        self.web.title = "editor"
        self.web.allowDrops = True
        self.web.onBridgeCmd = self.onBridgeCmd
        self.outerLayout.addWidget(self.web, 1)

        righttopbtns: List[str] = [
            self._addButton("text_bold",
                            "bold",
                            _("Bold text (Ctrl+B)"),
                            id="bold"),
            self._addButton("text_italic",
                            "italic",
                            _("Italic text (Ctrl+I)"),
                            id="italic"),
            self._addButton("text_under",
                            "underline",
                            _("Underline text (Ctrl+U)"),
                            id="underline"),
            self._addButton("text_super",
                            "super",
                            _("Superscript (Ctrl++)"),
                            id="superscript"),
            self._addButton("text_sub",
                            "sub",
                            _("Subscript (Ctrl+=)"),
                            id="subscript"),
            self._addButton("text_clear", "clear",
                            _("Remove formatting (Ctrl+R)")),
        ]
        # The color selection buttons do not use an icon so the HTML must be specified manually
        tip = _("Set foreground colour (F7)")
        righttopbtns.append("""<button tabindex=-1 class=linkb title="{}"
            type="button" onclick="pycmd('colour');return false;">
            <div id=forecolor style="display:inline-block; background: #000;border-radius: 5px;"
            class=topbut></div></button>""".format(tip))
        tip = _("Change colour (F8)")
        righttopbtns.extend([
            """<button tabindex=-1 class=linkb title="{}"
                type="button" onclick="pycmd('changeCol');return false;">
                <div style="display:inline-block; border-radius: 5px;"
                class="topbut rainbow"></div></button>""".format(tip),
            self._addButton("text_cloze", "cloze",
                            _("Cloze deletion (Ctrl+Shift+C)")),
            self._addButton("paperclip", "attach",
                            _("Attach pictures/audio/video (F3)")),
            self._addButton("media-record", "record", _("Record audio (F5)")),
            self._addButton("more", "more"),
        ])
        righttopbtns = runFilter("setupEditorButtons", righttopbtns, self)
        topbuts = """
            <div id="topbutsleft" style="float:left;">
                <button title='%(fldsTitle)s' onclick="pycmd('fields')">%(flds)s...</button>
                <button title='%(cardsTitle)s' onclick="pycmd('cards')">%(cards)s...</button>
            </div>
            <div id="topbutsright" style="float:right;">
                %(rightbts)s
            </div>
        """ % dict(
            flds=_("Fields"),
            cards=_("Cards"),
            rightbts="".join(righttopbtns),
            fldsTitle=_("Customize Fields"),
            cardsTitle=shortcut(_("Customize Card Templates (Ctrl+L)")),
        )
        bgcol = self.mw.app.palette().window().color().name()
        # then load page
        self.web.stdHtml(
            _html % (bgcol, bgcol, topbuts, _("Show Duplicates")),
            css=["editor.css"],
            js=["jquery.js", "editor.js"],
        )
Example #54
0
 def __init__(
     self,
     mw,
     names=None,
     accept=None,
     title=None,
     help: HelpPageArgument = HelpPage.KEYBOARD_SHORTCUTS,
     current=None,
     cancel=True,
     parent=None,
     dyn=False,
     buttons=None,
     geomKey="default",
 ) -> None:
     QDialog.__init__(self, parent or mw)
     if buttons is None:
         buttons = []
     self.mw = mw
     self.form = aqt.forms.studydeck.Ui_Dialog()
     self.form.setupUi(self)
     self.form.filter.installEventFilter(self)
     self.cancel = cancel
     gui_hooks.state_did_reset.append(self.onReset)
     self.geomKey = "studyDeck-" + geomKey
     restoreGeom(self, self.geomKey)
     disable_help_button(self)
     if not cancel:
         self.form.buttonBox.removeButton(
             self.form.buttonBox.button(QDialogButtonBox.Cancel))
     if buttons:
         for b in buttons:
             self.form.buttonBox.addButton(b, QDialogButtonBox.ActionRole)
     else:
         b = QPushButton(tr(TR.ACTIONS_ADD))
         b.setShortcut(QKeySequence("Ctrl+N"))
         b.setToolTip(shortcut(tr(TR.DECKS_ADD_NEW_DECK_CTRLANDN)))
         self.form.buttonBox.addButton(b, QDialogButtonBox.ActionRole)
         qconnect(b.clicked, self.onAddDeck)
     if title:
         self.setWindowTitle(title)
     if not names:
         names = [
             d.name for d in self.mw.col.decks.all_names_and_ids(
                 include_filtered=dyn, skip_empty_default=True)
         ]
         self.nameFunc = None
         self.origNames = names
     else:
         self.nameFunc = names
         self.origNames = names()
     self.name = None
     self.ok = self.form.buttonBox.addButton(accept or tr(TR.DECKS_STUDY),
                                             QDialogButtonBox.AcceptRole)
     self.setWindowModality(Qt.WindowModal)
     qconnect(self.form.buttonBox.helpRequested, lambda: openHelp(help))
     qconnect(self.form.filter.textEdited, self.redraw)
     qconnect(self.form.list.itemDoubleClicked, self.accept)
     self.show()
     # redraw after show so position at center correct
     self.redraw("", current)
     self.exec_()
Example #55
0
def addLoadImageBtn(self):
    self.imgLoaderBtn = self.form.buttonBox.addButton(_("Load Image"), QDialogButtonBox.ActionRole)
    self.imgLoaderBtn.setShortcut(QKeySequence("Ctrl+O"))
    self.imgLoaderBtn.clicked.connect(openImageLoaderDialog)
    self.imgLoaderBtn.setToolTip(shortcut(_("Find an suitable image using Google and insert it (shortcut: Control+O)")))