missing files

This commit is contained in:
Damien Elmes 2008-11-23 07:49:43 +09:00
parent 38c1f71d5d
commit e6db07b74a
5 changed files with 80 additions and 36 deletions

View file

@ -8,6 +8,8 @@ import re, os, sys
from anki.utils import parseTags, stripHTML, tidyHTML from anki.utils import parseTags, stripHTML, tidyHTML
import anki.sound import anki.sound
from ankiqt import ui from ankiqt import ui
import ankiqt
from ankiqt.ui.utils import mungeQA, saveGeom, restoreGeom
class FactEditor(object): class FactEditor(object):
"""An editor for new/existing facts. """An editor for new/existing facts.
@ -120,26 +122,37 @@ class FactEditor(object):
self.foreground.setLayout(hbox) self.foreground.setLayout(hbox)
self.iconsBox.addWidget(self.foreground) self.iconsBox.addWidget(self.foreground)
self.foreground.setStyle(self.plastiqueStyle) self.foreground.setStyle(self.plastiqueStyle)
# preview
self.preview = QPushButton(self.widget)
self.preview.connect(self.preview, SIGNAL("clicked()"),
self.onPreview)
self.preview.setToolTip(_("Preview (F2)"))
self.preview.setShortcut(_("F2"))
self.preview.setIcon(QIcon(":/icons/document-preview.png"))
self.preview.setFocusPolicy(Qt.NoFocus)
self.preview.setEnabled(False)
self.iconsBox.addWidget(self.preview)
self.preview.setStyle(self.plastiqueStyle)
# pictures # pictures
spc = QSpacerItem(10,10) spc = QSpacerItem(10,10)
self.iconsBox.addItem(spc) self.iconsBox.addItem(spc)
self.addPicture = QPushButton(self.widget) self.addPicture = QPushButton(self.widget)
self.addPicture.connect(self.addPicture, SIGNAL("clicked()"), self.onAddPicture) self.addPicture.connect(self.addPicture, SIGNAL("clicked()"), self.onAddPicture)
self.addPicture.setFocusPolicy(Qt.NoFocus) self.addPicture.setFocusPolicy(Qt.NoFocus)
self.addPicture.setShortcut(_("F2")) self.addPicture.setShortcut(_("F3"))
self.addPicture.setIcon(QIcon(":/icons/colors.png")) self.addPicture.setIcon(QIcon(":/icons/colors.png"))
self.addPicture.setEnabled(False) self.addPicture.setEnabled(False)
self.addPicture.setToolTip(_("Add a picture (F2)")) self.addPicture.setToolTip(_("Add a picture (F3)"))
self.iconsBox.addWidget(self.addPicture) self.iconsBox.addWidget(self.addPicture)
self.addPicture.setStyle(self.plastiqueStyle) self.addPicture.setStyle(self.plastiqueStyle)
# sounds # sounds
self.addSound = QPushButton(self.widget) self.addSound = QPushButton(self.widget)
self.addSound.connect(self.addSound, SIGNAL("clicked()"), self.onAddSound) self.addSound.connect(self.addSound, SIGNAL("clicked()"), self.onAddSound)
self.addSound.setFocusPolicy(Qt.NoFocus) self.addSound.setFocusPolicy(Qt.NoFocus)
self.addSound.setShortcut(_("F3")) self.addSound.setShortcut(_("F4"))
self.addSound.setEnabled(False) self.addSound.setEnabled(False)
self.addSound.setIcon(QIcon(":/icons/text-speak.png")) self.addSound.setIcon(QIcon(":/icons/text-speak.png"))
self.addSound.setToolTip(_("Add audio (F3)")) self.addSound.setToolTip(_("Add audio (F4)"))
self.iconsBox.addWidget(self.addSound) self.iconsBox.addWidget(self.addSound)
self.addSound.setStyle(self.plastiqueStyle) self.addSound.setStyle(self.plastiqueStyle)
# latex # latex
@ -175,17 +188,6 @@ class FactEditor(object):
self.latexMathEnv.setEnabled(False) self.latexMathEnv.setEnabled(False)
self.iconsBox.addWidget(self.latexMathEnv) self.iconsBox.addWidget(self.latexMathEnv)
self.latexMathEnv.setStyle(self.plastiqueStyle) self.latexMathEnv.setStyle(self.plastiqueStyle)
# preview
self.preview = QPushButton(self.widget)
self.preview.connect(self.preview, SIGNAL("clicked()"),
self.onPreview)
self.preview.setToolTip(_("Preview (F5)"))
self.preview.setShortcut(_("F5"))
#self.preview.setIcon(QIcon(":/icons/math_matrix.png"))
self.preview.setFocusPolicy(Qt.NoFocus)
self.preview.setEnabled(False)
self.iconsBox.addWidget(self.preview)
self.preview.setStyle(self.plastiqueStyle)
self.fieldsFrame = None self.fieldsFrame = None
self.widget.setLayout(self.fieldsBox) self.widget.setLayout(self.fieldsBox)
@ -454,8 +456,7 @@ class FactEditor(object):
w.moveCursor(QTextCursor.PreviousCharacter) w.moveCursor(QTextCursor.PreviousCharacter)
def onPreview(self): def onPreview(self):
print self.deck.previewFact(self.fact) PreviewDialog(self.parent, self.deck, self.fact).exec_()
print "preview"
def fieldsAreBlank(self): def fieldsAreBlank(self):
for (field, widget) in self.fields.values(): for (field, widget) in self.fields.values():
@ -568,3 +569,40 @@ class FactEdit(QTextEdit):
QTextEdit.focusInEvent(self, evt) QTextEdit.focusInEvent(self, evt)
self.parent.formatChanged(None) self.parent.formatChanged(None)
self.parent.enableButtons() self.parent.enableButtons()
class PreviewDialog(QDialog):
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=self.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")
def updateCard(self):
c = self.cards[self.currentCard]
self.dialog.webView.setHtml(
"<style>" + self.deck.css + "</style>" +
mungeQA(self.deck, c.htmlQuestion()) +
mungeQA(self.deck, c.htmlAnswer()))
def onChange(self, idx):
self.currentCard = idx
self.updateCard()
def reject(self):
saveGeom(self, "preview")
QDialog.reject(self)

View file

@ -52,6 +52,7 @@ class AnkiQt(QMainWindow):
self.restoreGeometry(self.config['mainWindowGeom']) self.restoreGeometry(self.config['mainWindowGeom'])
self.bodyView = ui.view.View(self, self.mainWin.mainText, self.bodyView = ui.view.View(self, self.mainWin.mainText,
self.mainWin.mainTextFrame) self.mainWin.mainTextFrame)
self.mainWin.mainText.pageAction(QWebPage.Reload).setVisible(False)
self.addView(self.bodyView) self.addView(self.bodyView)
self.statusView = ui.status.StatusView(self) self.statusView = ui.status.StatusView(self)
self.addView(self.statusView) self.addView(self.statusView)
@ -812,7 +813,7 @@ To upgrade an old deck, download Anki 0.9.8.7."""))
def showSaveEditorButton(self): def showSaveEditorButton(self):
if self.lastState == self.state: if self.lastState == self.state:
return return
self.editFactButton = QPushButton(_("Return")) self.editFactButton = QPushButton(_("Close"))
self.editFactButton.setToolTip("Hit Esc to return to review.") self.editFactButton.setToolTip("Hit Esc to return to review.")
self.editFactButton.setFixedHeight(self.easeButtonHeight) self.editFactButton.setFixedHeight(self.easeButtonHeight)
self.editFactButton.setShortcut(_("Esc")) self.editFactButton.setShortcut(_("Esc"))

View file

@ -4,7 +4,10 @@
from PyQt4.QtGui import * from PyQt4.QtGui import *
from PyQt4.QtCore import * from PyQt4.QtCore import *
import re, os from anki.sound import playFromText, stripSounds
from anki.latex import renderLatex, stripLatex
import re, os, sys
import ankiqt import ankiqt
def openLink(link): def openLink(link):
@ -88,3 +91,17 @@ def restoreGeom(widget, key):
key += "Geom" key += "Geom"
if ankiqt.mw.config.get(key): if ankiqt.mw.config.get(key):
widget.restoreGeometry(ankiqt.mw.config[key]) widget.restoreGeometry(ankiqt.mw.config[key])
def mungeQA(deck, txt):
txt = renderLatex(deck, txt)
txt = stripSounds(txt)
def quote(match):
if sys.platform.startswith("win32"):
prefix = "file:///"
else:
prefix = "file://"
return 'img src="%s%s"' % (
prefix, os.path.join(deck.mediaDir(),
unicode(match.group(1))))
txt = re.sub('img src="(.*?)"', quote, txt)
return txt

View file

@ -10,6 +10,7 @@ from anki.latex import renderLatex, stripLatex
from anki.utils import stripHTML from anki.utils import stripHTML
import types, time, re, os, urllib, sys import types, time, re, os, urllib, sys
from ankiqt import ui from ankiqt import ui
from ankiqt.ui.utils import mungeQA
# Views - define the way a user is prompted for questions, etc # Views - define the way a user is prompted for questions, etc
########################################################################## ##########################################################################
@ -68,7 +69,6 @@ class View(object):
def addStyles(self): def addStyles(self):
# card styles # card styles
s = "<style>\n" s = "<style>\n"
t = time.time()
if self.main.deck: if self.main.deck:
s += self.main.deck.css s += self.main.deck.css
# last card # last card
@ -109,31 +109,17 @@ class View(object):
# Question and answer # Question and answer
########################################################################## ##########################################################################
def munge(self, txt):
txt = renderLatex(self.main.deck, txt)
txt = stripSounds(txt)
def quote(match):
if sys.platform.startswith("win32"):
prefix = "file:///"
else:
prefix = "file://"
return 'img src="%s%s"' % (
prefix, os.path.join(self.main.deck.mediaDir(),
unicode(match.group(1))))
txt = re.sub('img src="(.*?)"', quote, txt)
return txt
def drawQuestion(self, nosound=False): def drawQuestion(self, nosound=False):
"Show the question." "Show the question."
q = self.main.currentCard.htmlQuestion() q = self.main.currentCard.htmlQuestion()
self.write(self.munge(q)) self.write(mungeQA(self.main.deck, q))
if self.state != self.oldState and not nosound: if self.state != self.oldState and not nosound:
playFromText(q) playFromText(q)
def drawAnswer(self): def drawAnswer(self):
"Show the answer." "Show the answer."
a = self.main.currentCard.htmlAnswer() a = self.main.currentCard.htmlAnswer()
self.write('<span id=answer />' + self.munge(a)) self.write('<span id=answer />' + mungeQA(self.main.deck, a))
if self.state != self.oldState: if self.state != self.oldState:
playFromText(a) playFromText(a)

View file

@ -1,5 +1,7 @@
<RCC> <RCC>
<qresource prefix="/" > <qresource prefix="/" >
<file>icons/document-preview.png</file>
<file>icons/media-record.png</file>
<file>icons/edit-rename.png</file> <file>icons/edit-rename.png</file>
<file>icons/kblogger.png</file> <file>icons/kblogger.png</file>
<file>icons/chronometer.png</file> <file>icons/chronometer.png</file>