From d4f7bf1e0a5b015913b03803e7843e10cdeddda8 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Fri, 13 May 2011 14:55:04 +0200 Subject: [PATCH 1/2] --- openlp/core/lib/mediamanageritem.py | 34 ++++++++++++++++++++--------- openlp/core/lib/ui.py | 2 ++ 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index e5e8ed3b1..225d4023e 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -238,13 +238,21 @@ class MediaManagerItem(QtGui.QWidget): self.plugin.getString(action[0])[u'tooltip'], action[1], action[2]) + def contextMenu(self, point): + item = self.listView.itemAt(point) + if item is None: + return + if not item.flags() & QtCore.Qt.ItemIsSelectable: + return + self.menu.exec_(self.listView.mapToGlobal(point)) + def addListViewToToolBar(self): """ Creates the main widget for listing items the media item is tracking """ # Add the List widget self.listView = ListWidgetWithDnD(self, self.plugin.name) - self.listView.uniformItemSizes = True + self.listView.setUniformItemSizes(True) self.listView.setSpacing(1) self.listView.setSelectionMode( QtGui.QAbstractItemView.ExtendedSelection) @@ -254,43 +262,46 @@ class MediaManagerItem(QtGui.QWidget): # Add to pageLayout self.pageLayout.addWidget(self.listView) # define and add the context menu - self.listView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu) + self.listView.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) + self.menu = QtGui.QMenu() + # Create the actions. All actions are automatically added to the + # listView. if self.hasEditIcon: - self.listView.addAction( + self.menu.addAction( context_menu_action( self.listView, u':/general/general_edit.png', self.plugin.getString(StringContent.Edit)[u'title'], self.onEditClick, context=QtCore.Qt.WidgetShortcut)) - self.listView.addAction(context_menu_separator(self.listView)) + self.menu.addAction(context_menu_separator(self.listView)) if self.hasDeleteIcon: - self.listView.addAction( + self.menu.addAction( context_menu_action( self.listView, u':/general/general_delete.png', self.plugin.getString(StringContent.Delete)[u'title'], self.onDeleteClick, [QtCore.Qt.Key_Delete], context=QtCore.Qt.WidgetShortcut)) - self.listView.addAction(context_menu_separator(self.listView)) - self.listView.addAction( + self.menu.addAction(context_menu_separator(self.listView)) + self.menu.addAction( context_menu_action( self.listView, u':/general/general_preview.png', self.plugin.getString(StringContent.Preview)[u'title'], self.onPreviewClick, [QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return], context=QtCore.Qt.WidgetShortcut)) - self.listView.addAction( + self.menu.addAction( context_menu_action( self.listView, u':/general/general_live.png', self.plugin.getString(StringContent.Live)[u'title'], self.onLiveClick, [QtCore.Qt.ShiftModifier + \ QtCore.Qt.Key_Enter, QtCore.Qt.ShiftModifier + \ QtCore.Qt.Key_Return], context=QtCore.Qt.WidgetShortcut)) - self.listView.addAction( + self.menu.addAction( context_menu_action( self.listView, u':/general/general_add.png', self.plugin.getString(StringContent.Service)[u'title'], self.onAddClick, [QtCore.Qt.Key_Plus, QtCore.Qt.Key_Equal], context=QtCore.Qt.WidgetShortcut)) if self.addToServiceItem: - self.listView.addAction( + self.menu.addAction( context_menu_action( self.listView, u':/general/general_add.png', translate('OpenLP.MediaManagerItem', @@ -302,6 +313,9 @@ class MediaManagerItem(QtGui.QWidget): QtCore.QObject.connect(self.listView, QtCore.SIGNAL(u'itemSelectionChanged()'), self.onSelectionChange) + QtCore.QObject.connect(self.listView, + QtCore.SIGNAL('customContextMenuRequested(QPoint)'), + self.contextMenu) def initialise(self): """ diff --git a/openlp/core/lib/ui.py b/openlp/core/lib/ui.py index e8be32a92..3fdf9642d 100644 --- a/openlp/core/lib/ui.py +++ b/openlp/core/lib/ui.py @@ -364,6 +364,7 @@ def context_menu_action(base, icon, text, slot, shortcuts=None, category=None, action.setShortcutContext(context) action_list = ActionList.get_instance() action_list.add_action(action) + base.addAction(action) return action def context_menu(base, icon, text): @@ -392,6 +393,7 @@ def context_menu_separator(base): """ action = QtGui.QAction(u'', base) action.setSeparator(True) + base.addAction(action) return action def add_widget_completer(cache, widget): From 07b704677abd00283f7c3941e57a2edede9eccd4 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Fri, 13 May 2011 15:58:17 +0200 Subject: [PATCH 2/2] --- openlp/core/lib/ui.py | 6 +-- openlp/core/ui/servicemanager.py | 76 ++++++++++++++------------------ 2 files changed, 35 insertions(+), 47 deletions(-) diff --git a/openlp/core/lib/ui.py b/openlp/core/lib/ui.py index 3fdf9642d..7350d8b74 100644 --- a/openlp/core/lib/ui.py +++ b/openlp/core/lib/ui.py @@ -331,7 +331,7 @@ def shortcut_action(parent, name, shortcuts, function, icon=None, checked=None, def context_menu_action(base, icon, text, slot, shortcuts=None, category=None, context=QtCore.Qt.WindowShortcut): """ - Utility method to help build context menus for plugins + Utility method to help build context menus. ``base`` The parent menu to add this menu item to @@ -350,7 +350,7 @@ def context_menu_action(base, icon, text, slot, shortcuts=None, category=None, ``category`` The category the shortcut should be listed in the shortcut dialog. If - left to None, then the action will be hidden in the shortcut dialog. + left to ``None``, then the action will be hidden in the shortcut dialog. ``context`` The context the shortcut is valid. @@ -369,7 +369,7 @@ def context_menu_action(base, icon, text, slot, shortcuts=None, category=None, def context_menu(base, icon, text): """ - Utility method to help build context menus for plugins + Utility method to help build context menus. ``base`` The parent object to add this menu to diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 9031a0b1a..358877cc7 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -36,7 +36,7 @@ from openlp.core.lib import OpenLPToolbar, ServiceItem, Receiver, build_icon, \ ItemCapabilities, SettingsManager, translate from openlp.core.lib.theme import ThemeLevel from openlp.core.lib.ui import UiStrings, critical_error_message_box, \ - context_menu_action, find_and_set_in_combo_box + context_menu_action, context_menu_separator, find_and_set_in_combo_box from openlp.core.ui import ServiceNoteForm, ServiceItemEditForm, StartTimeForm from openlp.core.ui.printserviceform import PrintServiceForm from openlp.core.utils import AppLocation, delete_file, file_is_unicode, \ @@ -301,31 +301,34 @@ class ServiceManager(QtGui.QWidget): self.addToAction.setIcon(build_icon(u':/general/general_edit.png')) # build the context menu self.menu = QtGui.QMenu() - self.editAction = self.menu.addAction( - translate('OpenLP.ServiceManager', '&Edit Item')) - self.editAction.setIcon(build_icon(u':/general/general_edit.png')) - self.maintainAction = self.menu.addAction( - translate('OpenLP.ServiceManager', '&Reorder Item')) - self.maintainAction.setIcon(build_icon(u':/general/general_edit.png')) - self.notesAction = self.menu.addAction( - translate('OpenLP.ServiceManager', '&Notes')) - self.notesAction.setIcon(build_icon(u':/services/service_notes.png')) - self.timeAction = self.menu.addAction( - translate('OpenLP.ServiceManager', '&Start Time')) - self.timeAction.setIcon(build_icon(u':/media/media_time.png')) - self.deleteAction = self.menu.addAction( - translate('OpenLP.ServiceManager', '&Delete From Service')) - self.deleteAction.setIcon(build_icon(u':/general/general_delete.png')) - self.sep1 = self.menu.addAction(u'') - self.sep1.setSeparator(True) - self.previewAction = self.menu.addAction( - translate('OpenLP.ServiceManager', 'Show &Preview')) - self.previewAction.setIcon(build_icon(u':/general/general_preview.png')) - self.liveAction = self.menu.addAction( - translate('OpenLP.ServiceManager', 'Show &Live')) - self.liveAction.setIcon(build_icon(u':/general/general_live.png')) - self.sep2 = self.menu.addAction(u'') - self.sep2.setSeparator(True) + self.editAction = context_menu_action( + self.menu, u':/general/general_edit.png', + translate('OpenLP.ServiceManager', '&Edit Item'), self.remoteEdit) + self.maintainAction = context_menu_action( + self.menu, u':/general/general_edit.png', + translate('OpenLP.ServiceManager', '&Reorder Item'), + self.onServiceItemEditForm) + self.notesAction = context_menu_action( + self.menu, u':/services/service_notes.png', + translate('OpenLP.ServiceManager', '&Notes'), + self.onServiceItemNoteForm) + self.timeAction = context_menu_action( + self.menu, u':/media/media_time.png', + translate('OpenLP.ServiceManager', '&Start Time'), + self.onStartTimeForm) + self.deleteAction = context_menu_action( + self.menu, u':/general/general_delete.png', + translate('OpenLP.ServiceManager', '&Delete From Service'), + self.onDeleteFromService) + context_menu_separator(self.menu) + self.previewAction = context_menu_action( + self.menu, u':/general/general_preview.png', + translate('OpenLP.ServiceManager', 'Show &Preview'), + self.makePreview) + self.liveAction = context_menu_action( + self.menu, u':/general/general_live.png', + translate('OpenLP.ServiceManager', 'Show &Live'), self.makeLive) + context_menu_separator(self.menu) self.themeMenu = QtGui.QMenu( translate('OpenLP.ServiceManager', '&Change Item Theme')) self.menu.addMenu(self.themeMenu) @@ -675,20 +678,6 @@ class ServiceManager(QtGui.QWidget): if serviceItem[u'service_item'].is_text(): self.themeMenu.menuAction().setVisible(True) action = self.menu.exec_(self.serviceManagerList.mapToGlobal(point)) - if action == self.editAction: - self.remoteEdit() - elif action == self.maintainAction: - self.onServiceItemEditForm() - elif action == self.deleteAction: - self.onDeleteFromService() - elif action == self.notesAction: - self.onServiceItemNoteForm() - elif action == self.timeAction: - self.onStartTimeForm() - elif action == self.previewAction: - self.makePreview() - elif action == self.liveAction: - self.makeLive() def onServiceItemNoteForm(self): item = self.findServiceItem()[0] @@ -840,7 +829,7 @@ class ServiceManager(QtGui.QWidget): correct state. """ pos = item.data(0, QtCore.Qt.UserRole).toInt()[0] - self.serviceItems[pos -1 ][u'expanded'] = False + self.serviceItems[pos - 1][u'expanded'] = False def onExpandAll(self): """ @@ -1288,9 +1277,8 @@ class ServiceManager(QtGui.QWidget): self.themeComboBox.addItem(u'') for theme in theme_list: self.themeComboBox.addItem(theme) - action = context_menu_action(self.serviceManagerList, None, theme, - self.onThemeChangeAction, context=QtCore.Qt.WidgetShortcut) - self.themeMenu.addAction(action) + context_menu_action(self.themeMenu, None, theme, + self.onThemeChangeAction) find_and_set_in_combo_box(self.themeComboBox, self.service_theme) self.mainwindow.renderer.set_service_theme(self.service_theme) self.regenerateServiceItems()