use a popup menu for deck operations

This commit is contained in:
Damien Elmes 2010-01-22 04:59:20 +09:00
parent 441e459af5
commit d4491869c1

View file

@ -1107,6 +1107,7 @@ your deck."""))
import sip import sip
focusButton = None focusButton = None
# remove all widgets from layout & layout itself # remove all widgets from layout & layout itself
self.moreMenus = []
if self.decksFrame.layout(): if self.decksFrame.layout():
while 1: while 1:
obj = self.decksFrame.layout().takeAt(0) obj = self.decksFrame.layout().takeAt(0)
@ -1190,20 +1191,23 @@ your deck."""))
if c == 0: if c == 0:
focusButton = openButton focusButton = openButton
# more # more
moreButton = QComboBox() moreButton = QPushButton(_("More"))
if sys.platform.startswith("darwin"): if sys.platform.startswith("darwin"):
moreButton.setFixedWidth(80) moreButton.setFixedWidth(80)
if sys.platform.startswith("win32") and \ if sys.platform.startswith("win32") and \
self.config['alternativeTheme']: self.config['alternativeTheme']:
moreButton.setFixedHeight(24) moreButton.setFixedHeight(24)
moreButton.addItems(QStringList([ moreMenu = QMenu()
_("More"), a = moreMenu.addAction(QIcon(":/icons/edit-undo.png"),
_("Forget"), _("Hide from list"))
_("Delete")])) a.connect(a, SIGNAL("activated()"),
moreButton.setToolTip( lambda c=c: self.onDeckBrowserForget(c))
_("Forget removes the deck from the list without deleting.")) a = moreMenu.addAction(QIcon(":/icons/editdelete.png"),
self.connect(moreButton, SIGNAL("currentIndexChanged(int)"), _("Delete"))
lambda idx, c=c: self.onDeckBrowserMore(idx, c)) a.connect(a, SIGNAL("activated()"),
lambda c=c: self.onDeckBrowserDelete(c))
moreButton.setMenu(moreMenu)
self.moreMenus.append(moreMenu)
layout.addWidget(moreButton, c+1, 6) layout.addWidget(moreButton, c+1, 6)
refresh = QPushButton(_("Refresh")) refresh = QPushButton(_("Refresh"))
refresh.setToolTip(_("Check due counts again (F5)")) refresh.setToolTip(_("Check due counts again (F5)"))
@ -1246,17 +1250,14 @@ later by using File>Close.
# do this last # do this last
self.switchToDecksScreen() self.switchToDecksScreen()
def onDeckBrowserMore(self, idx, c): def onDeckBrowserForget(self, c):
if idx == 0: if ui.utils.askUser(_("Hide %s from the list?") % self.browserDecks[c]['name'],
return help="DeckBrowser"):
elif idx == 1:
# forget
if ui.utils.askUser(_("Forget %s?") % self.browserDecks[c]['name']):
self.config['recentDeckPaths'].remove(self.browserDecks[c]['path']) self.config['recentDeckPaths'].remove(self.browserDecks[c]['path'])
del self.browserDecks[c] del self.browserDecks[c]
self.showDeckBrowser() self.showDeckBrowser()
elif idx == 2:
# delete def onDeckBrowserDelete(self, c):
deck = self.browserDecks[c]['path'] deck = self.browserDecks[c]['path']
if ui.utils.askUser(_("Delete %s?") % self.browserDecks[c]['name']): if ui.utils.askUser(_("Delete %s?") % self.browserDecks[c]['name']):
del self.browserDecks[c] del self.browserDecks[c]