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
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)
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)
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
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)
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)
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)"))
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)
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) )
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)
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
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
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_()
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
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"])
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)
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()
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()
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()
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()
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)
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)
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
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_()
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()
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)
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, ), )
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)
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))
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)
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()
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)
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)
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
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)
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)
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)
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)
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))
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)
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
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
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))
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))
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)
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
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)
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"], )
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_()
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)")))