Replace Context menu with smart context menu

This commit is contained in:
Tim Bentley 2010-09-26 09:07:47 +01:00
parent cc42dc34d8
commit e33e4cb7ff
2 changed files with 52 additions and 36 deletions

View File

@ -236,7 +236,7 @@ class ServiceManager(QtGui.QWidget):
self.addToAction = self.dndMenu.addAction(
translate('OpenLP.ServiceManager', '&Add to Selected Item'))
self.addToAction.setIcon(build_icon(u':/general/general_edit.png'))
#build the context menu
# build the context menu
self.menu = QtGui.QMenu()
self.editAction = self.menu.addAction(
translate('OpenLP.ServiceManager', '&Edit Item'))

View File

@ -88,41 +88,32 @@ class ThemeManager(QtGui.QWidget):
self.themeListWidget.setAlternatingRowColors(True)
self.themeListWidget.setIconSize(QtCore.QSize(88, 50))
self.layout.addWidget(self.themeListWidget)
self.themeListWidget.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
self.themeListWidget.addAction(
context_menu_action(self.themeListWidget,
u':/themes/theme_edit.png',
translate('OpenLP.ThemeManager', '&Edit Theme'),
self.onEditTheme))
self.themeListWidget.addAction(
context_menu_action(self.themeListWidget,
u':/themes/theme_edit.png',
translate('OpenLP.ThemeManager', '&Rename Theme'),
self.onRenameTheme))
self.themeListWidget.addAction(
context_menu_action(self.themeListWidget,
u':/themes/theme_edit.png',
translate('OpenLP.ThemeManager', '&Copy Theme'),
self.onCopyTheme))
self.themeListWidget.addAction(
context_menu_separator(self.themeListWidget))
self.themeListWidget.addAction(
context_menu_action(self.themeListWidget,
u':/general/general_delete.png',
translate('OpenLP.ThemeManager', '&Delete Theme'),
self.onDeleteTheme))
self.themeListWidget.addAction(
context_menu_action(self.themeListWidget,
u':/general/general_export.png',
translate('OpenLP.ThemeManager', 'Set As &Global Default'),
self.changeGlobalFromScreen))
self.themeListWidget.addAction(
context_menu_action(self.themeListWidget,
u':/general/general_export.png',
translate('OpenLP.ThemeManager', 'E&xport Theme'),
self.onExportTheme))
self.themeListWidget.addAction(
context_menu_separator(self.themeListWidget))
self.themeListWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
QtCore.QObject.connect(self.themeListWidget,
QtCore.SIGNAL('customContextMenuRequested(QPoint)'),
self.contextMenu)
# build the context menu
self.menu = QtGui.QMenu()
self.editAction = self.menu.addAction(
translate('OpenLP.ThemeManager', '&Edit Theme'))
self.editAction.setIcon(build_icon(u':/themes/theme_edit.png'))
self.copyAction = self.menu.addAction(
translate('OpenLP.ThemeManager', '&Copy Theme'))
self.copyAction.setIcon(build_icon(u':/themes/theme_edit.png'))
self.renameAction = self.menu.addAction(
translate('OpenLP.ThemeManager', '&Rename Theme'))
self.renameAction.setIcon(build_icon(u':/themes/theme_edit.png'))
self.deleteAction = self.menu.addAction(
translate('OpenLP.ThemeManager', '&Delete Theme'))
self.deleteAction.setIcon(build_icon(u':/general/general_delete.png'))
self.sep1 = self.menu.addAction(u'')
self.sep1.setSeparator(True)
self.globalAction = self.menu.addAction(
translate('OpenLP.ThemeManager', 'Set As &Global Default'))
self.globalAction.setIcon(build_icon(u':/general/general_export.png'))
self.exportAction = self.menu.addAction(
translate('OpenLP.ThemeManager', '&Export Theme'))
self.exportAction.setIcon(build_icon(u':/general/general_export.png'))
#Signals
QtCore.QObject.connect(self.themeListWidget,
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'),
@ -143,6 +134,31 @@ class ThemeManager(QtGui.QWidget):
self.settingsSection + u'/global theme',
QtCore.QVariant(u'')).toString())
def contextMenu(self, point):
item = self.themeListWidget.itemAt(point)
if item is None:
return
realThemeName = unicode(item.data(QtCore.Qt.UserRole).toString())
themeName = unicode(item.text())
self.deleteAction.setVisible(False)
self.renameAction.setVisible(False)
if realThemeName == themeName:
self.deleteAction.setVisible(True)
self.renameAction.setVisible(True)
action = self.menu.exec_(self.themeListWidget.mapToGlobal(point))
if action == self.editAction:
self.onEditTheme()
if action == self.copyAction:
self.onCopyTheme()
if action == self.renameAction:
self.onRenameTheme()
if action == self.deleteAction:
self.onDeleteTheme()
if action == self.globalAction:
self. self.changeGlobalFromScreen()
if action == self.exportAction:
self. self.onExportTheme()
def changeGlobalFromTab(self, themeName):
"""
Change the global theme when it is changed through the Themes settings