From aac727f2b522f8707bc30edf0dbaf2a974d1f121 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Mon, 5 Jan 2009 14:29:34 +0900 Subject: [PATCH] added jump menu to cardlist --- ankiqt/ui/cardlist.py | 46 ++++++++++++++++++- ankiqt/ui/facteditor.py | 9 +++- designer/cardlist.ui | 89 +++++++++++++++++++++++++++++++++++- icons.qrc | 4 ++ icons/arrow-down-double.png | Bin 0 -> 1406 bytes icons/arrow-down.png | Bin 0 -> 1006 bytes icons/arrow-up-double.png | Bin 0 -> 1347 bytes icons/arrow-up.png | Bin 0 -> 927 bytes 8 files changed, 144 insertions(+), 4 deletions(-) create mode 100644 icons/arrow-down-double.png create mode 100644 icons/arrow-down.png create mode 100644 icons/arrow-up-double.png create mode 100644 icons/arrow-up.png diff --git a/ankiqt/ui/cardlist.py b/ankiqt/ui/cardlist.py index c37e749e4..25dccfa12 100644 --- a/ankiqt/ui/cardlist.py +++ b/ankiqt/ui/cardlist.py @@ -396,6 +396,7 @@ class EditDeck(QMainWindow): self.dialog.tableView.horizontalHeader().setResizeMode(2, QHeaderView.ResizeToContents) def setupMenus(self): + # actions self.connect(self.dialog.actionDelete, SIGNAL("triggered()"), self.deleteCards) self.connect(self.dialog.actionAddTag, SIGNAL("triggered()"), self.addTags) self.connect(self.dialog.actionDeleteTag, SIGNAL("triggered()"), self.deleteTags) @@ -405,6 +406,13 @@ class EditDeck(QMainWindow): self.connect(self.dialog.actionInvertSelection, SIGNAL("triggered()"), self.invertSelection) self.connect(self.dialog.actionUndo, SIGNAL("triggered()"), self.onUndo) self.connect(self.dialog.actionRedo, SIGNAL("triggered()"), self.onRedo) + # jumps + self.connect(self.dialog.actionFirstCard, SIGNAL("triggered()"), self.onFirstCard) + self.connect(self.dialog.actionLastCard, SIGNAL("triggered()"), self.onLastCard) + self.connect(self.dialog.actionPreviousCard, SIGNAL("triggered()"), self.onPreviousCard) + self.connect(self.dialog.actionNextCard, SIGNAL("triggered()"), self.onNextCard) + self.connect(self.dialog.actionFind, SIGNAL("triggered()"), self.onFind) + self.connect(self.dialog.actionFact, SIGNAL("triggered()"), self.onFact) runHook('editor.setupMenus', self) def onClose(self): @@ -602,6 +610,43 @@ where id in (%s)""" % ",".join([ self.updateSearch() self.updateAfterCardChange() + # Jumping + ###################################################################### + + def onFirstCard(self): + if not self.model.cards: + return + self.dialog.tableView.selectionModel().clear() + self.dialog.tableView.selectRow(0) + + def onLastCard(self): + if not self.model.cards: + return + self.dialog.tableView.selectionModel().clear() + self.dialog.tableView.selectRow(len(self.model.cards) - 1) + + def onPreviousCard(self): + if not self.model.cards: + return + row = self.dialog.tableView.currentIndex().row() + row = max(0, row - 1) + self.dialog.tableView.selectionModel().clear() + self.dialog.tableView.selectRow(row) + + def onNextCard(self): + if not self.model.cards: + return + row = self.dialog.tableView.currentIndex().row() + row = min(len(self.model.cards) - 1, row + 1) + self.dialog.tableView.selectionModel().clear() + self.dialog.tableView.selectRow(row) + + def onFind(self): + self.dialog.filterEdit.setFocus() + + def onFact(self): + self.editor.focusFirst() + class AddCardChooser(QDialog): def __init__(self, parent, cms): @@ -644,4 +689,3 @@ order by ordinal""" % ids2str(self.cms)) def onHelp(self): QDesktopServices.openUrl(QUrl(ankiqt.appWiki + "Editor#AddCards")) - diff --git a/ankiqt/ui/facteditor.py b/ankiqt/ui/facteditor.py index 1f9b64b64..a8ae2b9f5 100644 --- a/ankiqt/ui/facteditor.py +++ b/ankiqt/ui/facteditor.py @@ -56,6 +56,10 @@ class FactEditor(object): self.fontChanged = False self.deck.setUndoBarrier() + def focusFirst(self): + if self.focusTarget: + self.focusTarget.setFocus() + def initMedia(self): os.chdir(self.deck.mediaDir(create=True)) @@ -229,7 +233,7 @@ class FactEditor(object): self.fields = {} self.widgets = {} n = 0 - first = None + first = True for field in fields: # label l = QLabel(field.name) @@ -251,6 +255,9 @@ class FactEditor(object): self.onTextChanged) w.connect(w, SIGNAL("currentCharFormatChanged(QTextCharFormat)"), lambda w=w: self.formatChanged(w)) + if first: + self.focusTarget = w + first = False n += 1 # tags self.fieldsGrid.addWidget(QLabel(_("Tags")), n, 0) diff --git a/designer/cardlist.ui b/designer/cardlist.ui index b5764844f..05cc217f8 100644 --- a/designer/cardlist.ui +++ b/designer/cardlist.ui @@ -6,7 +6,7 @@ 0 0 599 - 602 + 462 @@ -18,7 +18,7 @@ 0 23 599 - 579 + 439 @@ -196,8 +196,21 @@ + + + &Jump + + + + + + + + + + @@ -280,6 +293,78 @@ &Invert Selection + + + + :/icons/document-preview.png:/icons/document-preview.png + + + &Find + + + Ctrl+F + + + + + + :/icons/Anki_Fact.png:/icons/Anki_Fact.png + + + F&act + + + Ctrl+Shift+F + + + + + + :/icons/arrow-down.png:/icons/arrow-down.png + + + &Next Card + + + Ctrl+N + + + + + + :/icons/arrow-up.png:/icons/arrow-up.png + + + &Previous Card + + + Ctrl+P + + + + + + :/icons/arrow-up-double.png:/icons/arrow-up-double.png + + + F&irst Card + + + Ctrl+Home + + + + + + :/icons/arrow-down-double.png:/icons/arrow-down-double.png + + + &Last Card + + + Ctrl+End + + diff --git a/icons.qrc b/icons.qrc index f2915a5f2..ad2a0a269 100644 --- a/icons.qrc +++ b/icons.qrc @@ -1,5 +1,9 @@ + icons/arrow-down-double.png + icons/arrow-up-double.png + icons/arrow-down.png + icons/arrow-up.png icons/view-pim-calendar.png icons/anki-tag.png icons/edit-redo.png diff --git a/icons/arrow-down-double.png b/icons/arrow-down-double.png new file mode 100644 index 0000000000000000000000000000000000000000..7748c0114c75e83a4d08303cd8242b4779217737 GIT binary patch literal 1406 zcmV-^1%djBP)7O#ww@J1P!~**p+?`3 zGufS%1MDUC8W=tVpvea4Ghq!35DZL_s1nZ8VX)*JFM!cFl$xxv)do_Z=Vvu2-%DDkKb02w*bu z7$6yCKqzC7u}E)0`x7hGVP$0L>^bl>KDb=E+;g(`BvefW2}+5T7=dg)_u-HOi!4;B z3WqxgwGg2mBGBdMx{q2z4W917)m^xn3rCg46=_^`K^-d28CUy9O2*Dv4bZzpXvD^z z-+BhGT)6_F2ym6>XcC=6=mMfaQV>7^8I5(CW~Y7CqZp1x#!wBOPju#71@tu;05%=! zJybQzCWI=$mE45TL}DVNz<~x#n#c_lbCUk@rEMq$qb_b^J?*54doDxzjxNSw{QBXZ z!x2T48jwa3rkNmxpcIrT6Zs6};w>$$FnuQuE48=jz2NM9*8%#TzAT&NJtz83KvmSl zM24DE<24i;rIL+<1I(PoK`T}=SqF@})PepR{ilz1ABCo9;G9pvz|ts~ zm=^P-sS`^g!1Fw~ftwXDY2FJwpr+wm>FO^d6L+fv&DePC{IS7H7cXT(Tug~^RtH%W zBr?&cPAKsuuEdgf^?nF+u*Y!o&d?|-_o@R2sSIFKS9e#nI$BK))P*x6kTGeoJdSxL z8q|eqb#Xf%F3uwk7P4GCH;__r3&1S_ z+c3YPUD2lxz9D%A+XjXQPM=$hY!i2f1V4{UFeQOx)E|34l732Mg|pyKx!e*gdg M07*qoM6N<$f+x*^mH+?% literal 0 HcmV?d00001 diff --git a/icons/arrow-down.png b/icons/arrow-down.png new file mode 100644 index 0000000000000000000000000000000000000000..7c9274f30c627b15bd8bb867ffc7a5180000e3a5 GIT binary patch literal 1006 zcmV3n@jf>Vp&zse#g9O-SqQNonv@vQCQY(CnVmB;XU;kE zdNOCRTcf3BNxg9Qs<;gy zeMNSS0k)TMq^JUT`Jp36*Q2ls2P-k(3*R&DC~-glj4^*6%=g^�ubu^2Vz)_ZT;H}(07!B@cxmnkEF}<%P?e+Z%T7 z4Ybv(-ziW=Ayp}o%$e2Btd_;^D%6FEd(--tnfVX@F@!Wq7vm&8H1y37%Bg5y1QAXK| zGEb|x$OV{XUN|f8;&F?C1Sn@^bk}+j%9ShhiT>!xUc=wa`!P`MdW9yfC?A z;sq>ckBTQv1Cc}ee(TBrmTJpW7&C7@@jO6P%Fu;fmw&pvaQC;nUYrVfaPmF399(li z{Y6|pG_Xx>$AkGr7a08pohS9LCL$W484&iLxpXECmqS1J)Wmv7Q!&IyS`B#ml70mD zLQO$_fR5ADI%Yy2O0D(hqnAd>Dhr--hZh${fE0l%zDB$!?SWY$%EI&uI%dwcH5EG( zgSD_Wa`pSGtKvoYgcab1gJsMcXb~^PB~)Y&qk3MW09r5&MswZg>9N zd%c~z$yBq&P(fni*?gIs$!5Rb`R44|EJ-PGKg&@1Zv)U?vhN!JJJi9;IXKWh|qXHH7pGJw_$t+YOceVCvcwrZA1DCk{m|-7PQ4 zAMRZOy7P8;^hIxbZ%}lLfCtQnb@-82M9H{JFH+^+0BCaq5)&({E7z=fU^Rp(KrUqv z;baYg9rU1seMzeBO#%rnR6D9qZhUwHxXHmS4(Uq32c##_n5o0_ysdbJeR9_UXg|H= z7yUEaAK4BvDeGQXc>?f(#7=;i!znq(=v8*+t^v@~YUpgbI65@SEZ2fy0-SLOTL2C; zKog?QR0?*%U~T3HblMvFrvQ5BBt9Q|VyslG6v2sWb0%~Oj#vbsH7%#Wjnu;mIYHx8 zT`qtgx&|)q7}(Lfs&^Fx31zIsO`a)Bz|D+v6#-TvR4dgkxaL>c=PWCMIxehzXzi|{ ztwV@K3}vk$j0{2#p)ECl`{xw6&oNiHg|<@L`6GXR%7H%FF$hA=b)EC9BW(;@{=>jt}yv=F%{ zV}f3zj#dEq(A98x|K|O@{e%6PF&8|CSo|_X1_6c~qSZha^nJ5zpr`!c3UpfEWIinu zXyEmMH3K6D#ttA(V+bL%l(~ddXALBfUqJv^Q)UyyRhPg$2v*jKfB_Q|gBu5T_O0*3Ogw{{s38;~LJCo%TDA*r zvYYuba&_zm83=wZWA@suAMt&<2Pp&=tQlhYwXC;DK$pBC!$seQk5_lE-nnW0Cd?+Y z`f+e2p$F1n1{z5NkN^^;xY;mAHmvhqA%c3askY_T1v#D`z2iMl4$7xTw~ZnZi8fA~ zYMveGAZ&!Wc|&PlX-+8w;<*^IJ%!umAE9@au?G(AI>gAN%#5czlStG#R@Yd75<=QY zfoPF=eE}d>Sg*nN3x-)%d*J*X?196>hf6_w0G@E&b)vuHOPh!J`S+RMkjAl# z3a-$*x7!1%7WTl%hLPTNYuACNxw)1$<`D;PXle7m0EAkLA(&FP)!m6U>nf>goxm90 z=x50|BJYQujKC z1W{U#f!pnYedHs__5k5-R}6^;BKe)1N3;I_b9&za{s2ogTTjBW=&t|(002ovPDHLk FV1mJQW^@1m literal 0 HcmV?d00001 diff --git a/icons/arrow-up.png b/icons/arrow-up.png new file mode 100644 index 0000000000000000000000000000000000000000..758a0d1afda7de0fd57f63f3bc7ff39a554bf377 GIT binary patch literal 927 zcmV;Q17Q4#P)yv`-2FZ7C5E1fK;#s1(GvLKQ6bNl^a^p~VO7gGiBDv%1~cd$02& z><>#Q)igoabNI6Jc0Qarune7Z*vS%U27m$J{|jK9qJFZjb_BpTI6d}Q_1fft+V$#c z_2F#=a5psszuYB9r+>cw)A)_`-@f21^|k@^^o;L`r-{o@l86R^_e z>$l1lfCxpJ4lu5Qin`1f>2DbTGx)6bU~PVGb`DnLgNtYjmI##4K`2k49L0~~ad~M= z0DOsODnpg!`ZM)>xREAH4sf1>^=$^|AlhLYiEJV)mlpZ9{NO(Uc$kY?>$M{Xk5KwD z0~C=qzX1k>4Q$^A5ChGi2^EuiI9TPXTKZQ2zRD>O7nTk#1?7=4Y}U*HoefYEiB5nJ zJ%}QI__r{$EB06s=lLf0+ykI{bcdckG+vvj<%10k(k>9vb`B8%GC)5fE^worT2)LYU5LaLNHbfS?!9AFnD<86Me#1@+Zk0NtaT z9GhG|{_=4oF3E;>k~g~$Cmf*Bi|B43DnLn);Py}haa4YR?|UC^0_YxHDJ-p>di@ls z32QBkHN_T+?%M_=0F}l|qx%p=!UES&4R~cTh{Ct{t~!REQoaA}i1EqU6K8|b-J@9l za~)c0_`*j^wh*N4=s-n?v}M+QnwA7T<_P)(ODuj30RqAZpbeNL!PMwO-VeC;5rB(# z0Pro`%Ev3b`r}ocJAZCNmB#-^vSDgtm=d5AfFPjKNEXjR04xBY1RP*MH2mMQ=UeEh zzV8AqQ=oxiXl#A8P}JAB>3W6^K1>FH0bs`ge*@hA6<0(7Ze#!e002ovPDHLkV1j#5 Bmqq{p literal 0 HcmV?d00001