From 38c1f71d5d974e1baab80e4ee75f41dce5f887cf Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sun, 23 Nov 2008 07:49:03 +0900 Subject: [PATCH] preview support, shortcuts, hide refresh, toggle edit --- ankiqt/ui/facteditor.py | 25 +++++++++-- ankiqt/ui/main.py | 5 ++- designer/previewcards.ui | 82 +++++++++++++++++++++++++++++++++++++ icons/document-preview.png | Bin 0 -> 1983 bytes icons/media-record.png | Bin 0 -> 1843 bytes 5 files changed, 107 insertions(+), 5 deletions(-) create mode 100644 designer/previewcards.ui create mode 100644 icons/document-preview.png create mode 100644 icons/media-record.png diff --git a/ankiqt/ui/facteditor.py b/ankiqt/ui/facteditor.py index 3f5585e12..d28473416 100644 --- a/ankiqt/ui/facteditor.py +++ b/ankiqt/ui/facteditor.py @@ -126,20 +126,20 @@ class FactEditor(object): self.addPicture = QPushButton(self.widget) self.addPicture.connect(self.addPicture, SIGNAL("clicked()"), self.onAddPicture) self.addPicture.setFocusPolicy(Qt.NoFocus) - self.addPicture.setShortcut(_("Ctrl+p")) + self.addPicture.setShortcut(_("F2")) self.addPicture.setIcon(QIcon(":/icons/colors.png")) self.addPicture.setEnabled(False) - self.addPicture.setToolTip(_("Add a picture (Ctrl+p)")) + self.addPicture.setToolTip(_("Add a picture (F2)")) self.iconsBox.addWidget(self.addPicture) self.addPicture.setStyle(self.plastiqueStyle) # sounds self.addSound = QPushButton(self.widget) self.addSound.connect(self.addSound, SIGNAL("clicked()"), self.onAddSound) self.addSound.setFocusPolicy(Qt.NoFocus) - self.addSound.setShortcut(_("Ctrl+s")) + self.addSound.setShortcut(_("F3")) self.addSound.setEnabled(False) self.addSound.setIcon(QIcon(":/icons/text-speak.png")) - self.addSound.setToolTip(_("Add audio (Ctrl+s)")) + self.addSound.setToolTip(_("Add audio (F3)")) self.iconsBox.addWidget(self.addSound) self.addSound.setStyle(self.plastiqueStyle) # latex @@ -175,6 +175,18 @@ class FactEditor(object): self.latexMathEnv.setEnabled(False) self.iconsBox.addWidget(self.latexMathEnv) 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.widget.setLayout(self.fieldsBox) @@ -369,6 +381,7 @@ class FactEditor(object): self.latex.setEnabled(val) self.latexEqn.setEnabled(val) self.latexMathEnv.setEnabled(val) + self.preview.setEnabled(val) def disableButtons(self): self.enableButtons(False) @@ -440,6 +453,10 @@ class FactEditor(object): w.moveCursor(QTextCursor.PreviousCharacter) w.moveCursor(QTextCursor.PreviousCharacter) + def onPreview(self): + print self.deck.previewFact(self.fact) + print "preview" + def fieldsAreBlank(self): for (field, widget) in self.fields.values(): value = tidyHTML(unicode(widget.toHtml())) diff --git a/ankiqt/ui/main.py b/ankiqt/ui/main.py index 6d87fb77b..78b9bcf3a 100644 --- a/ankiqt/ui/main.py +++ b/ankiqt/ui/main.py @@ -192,6 +192,8 @@ class AnkiQt(QMainWindow): self.showEaseButtons() self.enableCardMenuItems() elif state == "editCurrentFact": + if self.lastState == "editCurrentFact": + return self.moveToState("saveEdit") self.resetButtons() self.showSaveEditorButton() self.mainWin.mainText.hide() @@ -810,7 +812,8 @@ To upgrade an old deck, download Anki 0.9.8.7.""")) def showSaveEditorButton(self): if self.lastState == self.state: return - self.editFactButton = QPushButton(_("Return (Esc)")) + self.editFactButton = QPushButton(_("Return")) + self.editFactButton.setToolTip("Hit Esc to return to review.") self.editFactButton.setFixedHeight(self.easeButtonHeight) self.editFactButton.setShortcut(_("Esc")) self.editFactButton.setDefault(False) diff --git a/designer/previewcards.ui b/designer/previewcards.ui new file mode 100644 index 000000000..e4f667240 --- /dev/null +++ b/designer/previewcards.ui @@ -0,0 +1,82 @@ + + Dialog + + + + 0 + 0 + 400 + 300 + + + + Preview Cards + + + + + + + + + + about:blank + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Close + + + + + + + + QWebView + QWidget +
QtWebKit/QWebView
+
+
+ + + + buttonBox + accepted() + Dialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + Dialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + +
diff --git a/icons/document-preview.png b/icons/document-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..1611740022be767b5704347c1e2893ef03869de2 GIT binary patch literal 1983 zcmV;w2SE6VP)We)+FHW%g z|4Y5`g|2r=z9}iGWsObEw&zOahA30KmM$)I+~Osyl~>5u+uK#^66yUH$BrHQ9gX!n zpnRE!M}SX1{Y!|v>M<%Rst_LiC4TbT+wl6sUHtrSY4|9Rj~}0mgI~Zs@ZtriZ)imS zfEre-^|fp^muzmdzP=6y;TC|$i#slp6>i*37326x9*+Gc4xe0*;PX5sE@ZbN=0PXI z1qz%zmj|yuCE;I}vLKTcp`o!6%PT8bVOm|~w8~^K?2^rH_Y9Dpo}o_>CF1OyjrV>TYkvRt$+#r#Mq<+pN?xv@cGiRx^)f1FOsJbPBfWnCIjT8C zQdGPHzCdiE82J*(YcrFHlgW)74u^Yy#Ke1!vllb;Z~r2CBUGqFQqwd9DlHyPtRjEH zh?KEah$ak>Oc{|mx{BOBJ+f391W}ZHgGCT$XJdGH1SYc?=Iydr-jHK$Z8yO26DPix zkdOfHKPJw;`$@9qdi5CMpUpt{LWld)MUGhSK1pRpio)`I+L6NHqG)J`pK){Mb7 zOahTuijvY&SjfaBR+Kxm<__Te`3n&Ofnf8UkN#tR|Lm9DyoPDYxd!5qB@|Kk3+Jtn zYRGurhDTZ}iYN_|Ndtrf3%E-)^7q6##0!fc%FJ>Z**x!p-2fLaT`G}Cq>k_Ve7@;@ zrL^I$at;{-Z1n~d&l>SqYr+$q1yA%ARLz@Ft}&yKAo3_B{2m>m3VIQfT8^|dJ~Ls3 zwp}dmE^TaV><0KOC^$wW%G~^+U#!79rlKyHa-TiAgu+(_RBDW<(V0=NCoNc@AP5Fi zuC<`xl^GedL!#xwNS9V4jW2+Gn;C_Br`!V^I&|m=tAP*w)8>DArK};PbDj!s1*LN) z&b*O~pD$UVB(*GBQBQiTr&MUH5K%2$DO01Mr~*>yeRrn&1JL!I`1pkND+#4@$3q`< z-|NsKe|&{PZGwVUu3WZ4wPHipstq0V`E1#S8U~=XQXMQI=215a9?8(r(Xri(<$ISl zH#gmHLn_3E;^LBxU!TsIi=!eG4==F@aG~#5wxG{wLqDmn-X9#xi+>DMH+VWR-?;Y(g#NyPYC1NaiDE2f7UoG!a0B&W`Mn z6;yUlps2V6N~LnU5ev0Dc?Mwe_51j*dHIsfXKe!z)sG{sN5@tBQwn$MGKGKD&Y8>g zc1XsJP>yQp9B4)^bwRCGi=m+*)(JftllBH+`oPC0IVU#{%C>eq?V3XA;39HqrH`lq z$*AbcC@N1USJ0(?Nhf9{C~Bywt;NgnaZF53qOPtE3kwU($gP}C=iUJ9Av;)7)6!5{ zR*qHzQ4fxwu5|!S?Y-#f?IlA6($j^mu*>CgT)%!DeQGrpmX@GUD4@}3T!uTeKLG7z zuBZ2sSy53DGK3-|r=)^U`~1PfhiGeSV+V^X*O{4_@b~vecz8Hk+uNaETtqv4PE1UE zGXQELtfIMoZr$o^+Z&79LK6yw2nq^9aBwi5)YL$$(_?gW6l%5l%`|KQ`0fwD%(bW49FdWc2nYy3 zmRO9j$tm_bRu|k(nS3>8A`hSa0bHx!3EwgfIyjDX-n{|H$aDBT1JFG-o_jYeq!dI)MIVw+^z`8N?c0crjpaa^nx8qB366TjP-tlA;r##(6n?tL zfVraU>gq;wa|`{(ftHpQ76B`t&v!;dM6ey=)ai6ksZ=^j)6YBu95Da%jP(X?^$iV; z7#SJG^z<|?L`4>Rd3pWl#*G^Q=RG?0oOy;C!=NudyG{wZk{OW4~kiotH6n@TF zK>*a2ooCO7XVZM&X7e67a^!6ukJm>v;H0kU%+Jr?B!G2-3fT$Z%M5J?006+oaDPT< zQuGatte*}IOZm$DD;+(0^sTtKxb~8g66c*ecQ($QJNIvQDez?zuX!*ex$W`mG-lOk zM&Iz5>9aE-H(cgBbolV$?_Rxnwf5AhQ#begb4v32hWfx|?m;`Aa{&KW{TIJ7Rp;J5 Ro)Z87002ovPDHLkV1f#&wQv9c literal 0 HcmV?d00001 diff --git a/icons/media-record.png b/icons/media-record.png new file mode 100644 index 0000000000000000000000000000000000000000..f926a8f27f85ef68165ae570e0237c53aabe19a9 GIT binary patch literal 1843 zcmV-32h8}1P)lUEc!{aPp#3JQ)<`D13Lv)N_>h<(9s;-2Q_ zc+qG;l5J#}ye#g?=tMywWZBd$S+)lRkr9X?WFwinEWq?ZW{{XD22Dsb+oUx%LH?B% zXuI>f>G^W0aS(5Ma_@J0@A>`Cx#!+{t|b ztgp{7jQ%4>j)YgEcSQnCO-(KyQ^(CpCg8+)t|@UI6C(zedWO3?x!rK|=uzKG5ol~| zOyU2&;^tunbSy0`(c7p-5vo}5l6rKP12%G}%>&CJZu#KZ*od_Lu!^z?K^ z#%i@<-c6Q@IXM~L_?Jn%f8xZ6yDubg^5jWaJ`8Xunx39kfL^bc3JVKq&6+i2 zx7%TnDJakZ5)dp6Nc;VMx_b30O-)TvMn(q62#He0@jpkPuC5Mi{wITb01lUL-MW>w zZQDkmIJziJpXmxX+9$!M0EhiU_|`RojWN% zKOf)-Af14aNEGyoU_2~^!0pQY6%`dqH!y$&Oki8N)6T3rxYG`%rKP3H{cG2*1-Q7> z1cu#Hm#FT_xGQ%ac4P; z6F~!zEnBuwR#uj7k*O>?`HXyDe?viDPYb)(2rp2K=Y=PHH23=-^sJ|s3V-;Xl5$@K zfOrEQR!idXcvMg_7XEj#lp75G5f4Bo0#3G?oMg)^_n-ZaLcGUqOeP6pSSZwa_`wPS*uUZd z5K$uiL^Ho#NhDx;bKSaiz!Cy38-uvyhC{T9>&1F0f%Xov!815aQaOm2Xp)T;$D*{v z@et+cw#u$Y z6{9g8#DX?ND~bAaOoKsv0xWAUu175;t)v(#2wgnd#0#?$)cEF~`aiX}NXOUp;gr=+ zPak5yCjo~)<(`M=WHLYefFf8b7FfK*vcRZe7S#AgKmK>}SREW9Is<_Ku%u5B7{fpW z$fHM(^Z-F^DtM*l6LP%cr6q1JGN;8ja5$of;9K?Ey*nuT(~ouVW%};lzpt=RfNgO7 zD+_`T1Z0cA6FLDbAief;JEeHN3>G!P!y1X?9c5I|(XPho1ay559y~Df2w+=_i;Mr^ zL0=G)M-1S=z&(KNn7AXX8BWTst|EgoBDD;B{KnEa^I@yAzC28M=e|{AP{i#3#-)UN z;M%ooG&(wp`$6)?T6G)N)YSaQ_2+U~)YjJ0#*G_sD`K#mj3$v4iVhBsLMKu+q3ym-<7!nFM0!GkI-XUT^$SOLYmckiaMvNEwmPtWwV zhp6T2?d`>X2sjW%Tczb49UXU9e3(>LR_1ag4-Bt=iG-&4fjeP hxBD+$y0oh2`F|miFh-s2`rH5j002ovPDHLkV1mqrSN#A0 literal 0 HcmV?d00001