def __init__(self, parent, deck): self.parent = parent self.deck = deck self.widgets = [] self.dg = anki.graphs.DeckGraphs(deck) self.diag = IntervalGraph(parent) self.diag.setWindowTitle(_("Deck Graphs")) if parent.config.get('graphsGeom'): restoreGeom(self.diag, "graphs") else: if sys.platform.startswith("darwin"): self.diag.setMinimumSize(740, 680) else: self.diag.setMinimumSize(690, 715) scroll = QScrollArea(self.diag) topBox = QVBoxLayout(self.diag) topBox.addWidget(scroll) self.frame = QWidget(scroll) self.vbox = QVBoxLayout(self.frame) self.vbox.setMargin(0) self.vbox.setSpacing(0) self.frame.setLayout(self.vbox) self.range = [7, 30, 90, 180, 365, 730, 1095, 1460, 1825] scroll.setWidget(self.frame) self.hbox = QHBoxLayout() topBox.addLayout(self.hbox) self.setupGraphs() self.setupButtons() self.showHideAll() self.diag.show()
def __init__(self, parent): if parent.config['standaloneWindows']: windParent = None else: windParent = parent QDialog.__init__(self, windParent, Qt.Window) self.parent = parent ui.utils.applyStyles(self) self.config = parent.config self.dialog = ankiqt.forms.addcards.Ui_AddCards() self.dialog.setupUi(self) self.setWindowTitle(_("Add Items - %s") % parent.deck.name()) self.setupEditor() self.addChooser() self.addButtons() self.setupStatus() self.modelChanged() self.addedItems = 0 self.forceClose = False restoreGeom(self, "add") restoreSplitter(self.dialog.splitter, "add") self.dialog.splitter.setChildrenCollapsible(True) self.show() addHook('guiReset', self.modelChanged) ui.dialogs.open("AddCards", self)
def __init__(self, parent, oldModel, oldTemplate): QDialog.__init__(self, parent, Qt.Window) self.parent = parent self.origModel = self.parent.deck.currentModel self.oldModel = oldModel self.oldTemplate = oldTemplate self.form = ankiqt.forms.changemodel.Ui_Dialog() self.form.setupUi(self) # maps self.fieldMapWidget = None self.fieldMapLayout = QHBoxLayout() self.form.fieldMap.setLayout(self.fieldMapLayout) self.templateMapWidget = None self.templateMapLayout = QHBoxLayout() self.form.templateMap.setLayout(self.templateMapLayout) # model chooser self.parent.deck.currentModel = oldModel self.form.oldModelLabel.setText(self.oldModel.name) self.modelChooser = ui.modelchooser.ModelChooser(self, self.parent, self.parent.deck, self.modelChanged, cards=False, label=False) self.form.modelChooserWidget.setLayout(self.modelChooser) self.modelChooser.models.setFocus() self.connect(self.form.buttonBox, SIGNAL("helpRequested()"), self.onHelp) restoreGeom(self, "changeModel") self.modelChanged(self.oldModel) self.ret = None self.pauseUpdate = False
def __init__(self, parent): if parent.config['standaloneWindows']: windParent = None else: windParent = parent QDialog.__init__(self, windParent, Qt.Window) self.parent = parent ui.utils.applyStyles(self) self.config = parent.config self.dialog = ankiqt.forms.addcards.Ui_AddCards() self.dialog.setupUi(self) self.setWindowTitle(_("Add Items - %s") % parent.deck.name()) self.setupEditor() self.addChooser() self.addButtons() self.setupStatus() self.modelChanged() self.addedItems = 0 self.forceClose = False restoreGeom(self, "add") restoreSplitter(self.dialog.splitter, "add") self.dialog.splitter.setChildrenCollapsible(False) self.show() addHook('guiReset', self.modelChanged) ui.dialogs.open("AddCards", self)
def getAudio(parent, string="", encode=True): "Record and return filename" # record first r = Recorder() mb = QMessageBox(parent) restoreGeom(mb, "audioRecorder") mb.setWindowTitle("Anki") mb.setIconPixmap(QPixmap(":/icons/media-record.png")) but = QPushButton(_(" Stop")) but.setIcon(QIcon(":/icons/media-playback-stop.png")) #but.setIconSize(QSize(32, 32)) mb.addButton(but, QMessageBox.RejectRole) t = time.time() r.start() QApplication.instance().processEvents() while not mb.clickedButton(): txt = _("Recording...<br>Time: %0.1f") mb.setText(txt % (time.time() - t)) mb.show() QApplication.instance().processEvents() # ensure at least a second captured saveGeom(mb, "audioRecorder") while time.time() - t < 1: time.sleep(0.1) r.stop() # process r.postprocess(encode) return r.file()
def getAudio(parent, string=""): "Record and return filename" # record first r = Recorder() mb = QMessageBox(parent) restoreGeom(mb, "audioRecorder") mb.setWindowTitle("Anki") mb.setIconPixmap(QPixmap(":/icons/media-record.png")) but = QPushButton(_(" Stop")) but.setIcon(QIcon(":/icons/media-playback-stop.png")) #but.setIconSize(QSize(32, 32)) mb.addButton(but, QMessageBox.RejectRole) t = time.time() r.start() QApplication.instance().processEvents() while not mb.clickedButton(): txt =_("Recording...<br>Time: %0.1f") mb.setText(txt % (time.time() - t)) mb.show() QApplication.instance().processEvents() # ensure at least a second captured saveGeom(mb, "audioRecorder") while time.time() - t < 1: time.sleep(0.1) r.stop() # process r.postprocess() return r.file()
def __init__(self, parent, cms): QDialog.__init__(self, parent, Qt.Window) self.parent = parent self.cms = cms self.dialog = ankiqt.forms.addcardmodels.Ui_Dialog() self.dialog.setupUi(self) self.connect(self.dialog.buttonBox, SIGNAL("helpRequested()"), self.onHelp) self.displayCards() restoreGeom(self, "addCardModels")
def __init__(self, parent, active, inactive): QDialog.__init__(self, parent, Qt.Window) self.parent = parent self.deck = self.parent.deck self.active = active self.inactive = inactive self.dialog = ankiqt.forms.activetags.Ui_Dialog() self.dialog.setupUi(self) self.connect(self.dialog.buttonBox, SIGNAL("helpRequested()"), self.onHelp) self.rebuildTagList() restoreGeom(self, "activeTags")
def __init__(self, parent, type): QDialog.__init__(self, parent, Qt.Window) self.parent = parent self.form = ankiqt.forms.getshared.Ui_Dialog() self.form.setupUi(self) restoreGeom(self, "getshared") self.setupTable() self.onChangeType(type) if type == 0: self.setWindowTitle(_("Download Shared Deck")) else: self.setWindowTitle(_("Download Shared Plugin")) self.exec_()
def __init__(self, parent): if parent.config['standaloneWindows']: windParent = None else: windParent = parent QMainWindow.__init__(self, windParent) self.parent = parent self.deck = self.parent.deck self.config = parent.config self.forceClose = False self.origModTime = parent.deck.modified self.currentRow = None self.lastFilter = "" self.dialog = ankiqt.forms.cardlist.Ui_MainWindow() self.dialog.setupUi(self) restoreGeom(self, "editor") restoreSplitter(self.dialog.splitter, "editor") # flush all changes before we load self.deck.s.flush() self.model = DeckModel(self.parent, self.parent.deck) self.dialog.tableView.setSortingEnabled(False) self.dialog.tableView.setShowGrid(False) self.dialog.tableView.setModel(self.model) self.dialog.tableView.selectionModel() self.connect(self.dialog.tableView.selectionModel(), SIGNAL("selectionChanged(QItemSelection,QItemSelection)"), self.updateFilterLabel) self.dialog.tableView.setItemDelegate(StatusDelegate(self, self.model)) if self.deck.getInt("reverseOrder"): self.dialog.actionReverseOrder.setChecked(True) self.updateFont() self.setupMenus() self.setupFilter() self.setupSort() self.setupHeaders() self.setupHooks() self.setupEditor() self.setupCardInfo() self.dialog.filterEdit.setFocus() ui.dialogs.open("CardList", self) self.drawTags() self.updateFilterLabel() self.show() if self.parent.currentCard: self.currentCard = self.parent.currentCard self.updateSearch() if sys.platform.startswith("darwin"): self.macCloseShortcut = QShortcut(QKeySequence("Ctrl+w"), self) self.connect(self.macCloseShortcut, SIGNAL("activated()"), self.close)
def __init__(self, parent, deck, fact, *args): QDialog.__init__(self, parent, *args) self.deck = deck self.fact = fact cards = self.deck.previewFact(self.fact) if not cards: ui.utils.showInfo(_("No cards to preview."), parent=parent) return self.cards = cards self.currentCard = 0 self.dialog = ankiqt.forms.previewcards.Ui_Dialog() self.dialog.setupUi(self) self.dialog.comboBox.addItems(QStringList([c.cardModel.name for c in self.cards])) self.connect(self.dialog.comboBox, SIGNAL("activated(int)"), self.onChange) self.updateCard() restoreGeom(self, "preview") self.exec_()
def __init__(self, parent, type): QDialog.__init__(self, parent, Qt.Window) self.parent = parent self.form = ankiqt.forms.getshared.Ui_Dialog() self.form.setupUi(self) self.ok = True self.conErrMsg = _("""\ <b>Unable to connect to the server.<br><br> Please check your network connection or try again in a few minutes.</b><br> <br> Error was:<pre>%s</pre>""") restoreGeom(self, "getshared") self.setupTable() self.onChangeType(type) if type == 0: self.setWindowTitle(_("Download Shared Deck")) else: self.setWindowTitle(_("Download Shared Plugin")) if self.ok: self.exec_()
def __init__(self, parent): QDialog.__init__(self, parent, Qt.Window) self.parent = parent self.deck = self.parent.deck self.dialog = ankiqt.forms.activetags.Ui_Dialog() self.dialog.setupUi(self) self.selectAll = QPushButton(_("Select All")) self.connect(self.selectAll, SIGNAL("clicked()"), self.onSelectAll) self.dialog.buttonBox.addButton(self.selectAll, QDialogButtonBox.ActionRole) self.selectNone = QPushButton(_("Select None")) self.connect(self.selectNone, SIGNAL("clicked()"), self.onSelectNone) self.dialog.buttonBox.addButton(self.selectNone, QDialogButtonBox.ActionRole) self.invert = QPushButton(_("Invert")) self.connect(self.invert, SIGNAL("clicked()"), self.onInvert) self.dialog.buttonBox.addButton(self.invert, QDialogButtonBox.ActionRole) self.connect(self.dialog.buttonBox, SIGNAL("helpRequested()"), self.onHelp) self.rebuildTagList() restoreGeom(self, "activeTags")
def __init__(self, parent, type): QDialog.__init__(self, parent, Qt.Window) self.parent = parent self.deck = self.parent.deck self.dialog = ankiqt.forms.activetags.Ui_Dialog() self.dialog.setupUi(self) if type == "new": self.active = "newActive" self.inactive = "newInactive" else: self.active = "revActive" self.inactive = "revInactive" if (self.deck.getVar("newActive") == self.deck.getVar("revActive") and self.deck.getVar("newInactive") == self.deck.getVar("revInactive")): self.dialog.bothButton.click() elif type == "new": self.dialog.newButton.click() else: self.dialog.revButton.click() self.connect(self.dialog.buttonBox, SIGNAL("helpRequested()"), self.onHelp) self.rebuildTagList() restoreGeom(self, "activeTags")
def __init__(self, parent, factedit, factOrModel, card=None): self.parent = parent QDialog.__init__(self, parent, Qt.Window) self.mw = ankiqt.mw self.deck = self.mw.deck self.factedit = factedit self.card = card if factedit is not None: self.fact = factOrModel self.model = self.fact.model else: self.model = factOrModel # see if there's an available fact id = self.deck.s.scalar("select id from facts where modelId = :id", id=self.model.id) if id: self.fact = self.deck.s.query(Fact).get(id) else: # generate a dummy one self.fact = self.deck.newFact(self.model) for f in self.fact.keys(): self.fact[f] = f self.plastiqueStyle = None if (sys.platform.startswith("darwin") or sys.platform.startswith("win32")): self.plastiqueStyle = QStyleFactory.create("plastique") if self.card: # limited to an existing template self.cards = [ self.deck.s.query(Card).get(id) for id in self.deck.s.column0( "select id from cards where factId = :fid " "order by ordinal", fid=self.fact.id) ] type = 0 else: if factedit: # active & possible self.cards = self.deck.previewFact(self.fact) type = 1 else: # all self.cards = self.deck.previewFact(self.fact, cms=self.model.cardModels) type = 2 if not self.cards: ui.utils.showInfo(_("Please enter some text first."), parent=self.parent) return self.form = ankiqt.forms.clayout.Ui_Dialog() self.form.setupUi(self) restoreSplitter(self.form.splitter, "clayout") if type == 0: self.form.templateType.setText(_("Templates used by fact:")) elif type == 1: self.form.templateType.setText( _("Templates that will be created:")) else: self.form.templateType.setText(_("All templates:")) # FIXME: add this self.form.editTemplates.hide() self.connect(self.form.buttonBox, SIGNAL("helpRequested()"), self.onHelp) self.setupCards() self.setupFields() restoreGeom(self, "CardLayout") # hack to ensure we're focused on the active template in the model # properties if type == 2 and factOrModel.currentCard.ordinal != 0: idx = factOrModel.currentCard.ordinal self.form.cardList.setCurrentIndex(idx) self.cardChanged(idx) self.exec_()
def __init__(self, parent, factedit, factOrModel, card=None): self.parent = parent QDialog.__init__(self, parent, Qt.Window) self.mw = ankiqt.mw self.deck = self.mw.deck self.factedit = factedit self.card = card if factedit is not None: self.fact = factOrModel self.model = self.fact.model else: self.model = factOrModel # see if there's an available fact id = self.deck.s.scalar("select id from facts where modelId = :id", id=self.model.id) if id: self.fact = self.deck.s.query(Fact).get(id) else: # generate a dummy one self.fact = self.deck.newFact(self.model) for f in self.fact.keys(): self.fact[f] = f self.plastiqueStyle = None if sys.platform.startswith("darwin") or sys.platform.startswith("win32"): self.plastiqueStyle = QStyleFactory.create("plastique") if self.card: # limited to an existing template self.cards = [ self.deck.s.query(Card).get(id) for id in self.deck.s.column0( "select id from cards where factId = :fid " "order by ordinal", fid=self.fact.id ) ] type = 0 else: if factedit: # active & possible self.cards = self.deck.previewFact(self.fact) type = 1 else: # all self.cards = self.deck.previewFact(self.fact, cms=self.model.cardModels) type = 2 if not self.cards: ui.utils.showInfo(_("Please enter some text first."), parent=self.parent) return self.form = ankiqt.forms.clayout.Ui_Dialog() self.form.setupUi(self) restoreSplitter(self.form.splitter, "clayout") if type == 0: self.form.templateType.setText(_("Templates used by fact:")) elif type == 1: self.form.templateType.setText(_("Templates that will be created:")) else: self.form.templateType.setText(_("All templates:")) # FIXME: add this self.form.editTemplates.hide() self.connect(self.form.buttonBox, SIGNAL("helpRequested()"), self.onHelp) self.setupCards() self.setupFields() restoreGeom(self, "CardLayout") # hack to ensure we're focused on the active template in the model # properties if type == 2 and factOrModel.currentCard.ordinal != 0: idx = factOrModel.currentCard.ordinal self.form.cardList.setCurrentIndex(idx) self.cardChanged(idx) self.exec_()