Exemplo n.º 1
0
 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()
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
 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()
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
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()
Exemplo n.º 7
0
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()
Exemplo n.º 8
0
 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")
Exemplo n.º 9
0
 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")
Exemplo n.º 10
0
 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")
Exemplo n.º 11
0
 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_()
Exemplo n.º 12
0
 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)
Exemplo n.º 13
0
 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_()
Exemplo n.º 14
0
    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_()
Exemplo n.º 15
0
    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_()
Exemplo n.º 16
0
 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")
Exemplo n.º 17
0
 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")
Exemplo n.º 18
0
 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_()
Exemplo n.º 19
0
 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_()