def add_custom_context_actions(self): create_widget_action(self.list_view, separator=True) create_widget_action(self.list_view, text=translate('OpenLP.MediaManagerItem', '&Clone'), icon=UiIcons().clone, triggers=self.on_clone_click)
def add_custom_context_actions(self): """ Add custom actions to the context menu. """ create_widget_action(self.list_view, separator=True) create_widget_action(self.list_view, text=UiStrings().AddGroup, icon=UiIcons().group, triggers=self.on_add_group_click) create_widget_action(self.list_view, text=translate('ImagePlugin', 'Add new image(s)'), icon=UiIcons().open, triggers=self.on_file_click) create_widget_action(self.list_view, separator=True) self.replace_action_context = create_widget_action( self.list_view, text=UiStrings().ReplaceBG, icon=UiIcons().theme, triggers=self.on_replace_click) self.reset_action_context = create_widget_action( self.list_view, text=UiStrings().ReplaceLiveBG, icon=UiIcons().close, visible=False, triggers=self.on_reset_click)
def add_custom_context_actions(self): create_widget_action(self.list_view, separator=True) create_widget_action( self.list_view, text=translate('OpenLP.MediaManagerItem', '&Clone'), icon=':/general/general_clone.png', triggers=self.on_clone_click)
def add_custom_context_actions(self): create_widget_action(self.list_view, separator=True) self.replace_action_context = create_widget_action( self.list_view, text=UiStrings().ReplaceBG, icon=':/slides/slide_blank.png', triggers=self.on_replace_click) self.reset_action_context = create_widget_action( self.list_view, text=UiStrings().ReplaceLiveBG, icon=':/system/system_close.png', visible=False, triggers=self.on_reset_click)
def add_custom_context_actions(self): create_widget_action(self.list_view, separator=True) self.replace_action_context = create_widget_action( self.list_view, text=UiStrings().ReplaceBG, icon=':/slides/slide_theme.png', triggers=self.on_replace_click) self.reset_action_context = create_widget_action( self.list_view, text=UiStrings().ReplaceLiveBG, icon=UiIcons().close, visible=False, triggers=self.on_reset_click)
def set_search_types(self, items): """ A list of tuples to be used in the search type menu. The first item in the list will be preselected as the default. :param items: The list of tuples to use. The tuples should contain an integer identifier, an icon (QIcon instance or string) and a title for the item in the menu. In short, they should look like this:: (<identifier>, <icon>, <title>, <place holder text>) For instance:: (1, <QIcon instance>, "Titles", "Search Song Titles...") Or:: (2, ":/songs/authors.png", "Authors", "Search Authors...") """ menu = QtWidgets.QMenu(self) for identifier, icon, title, placeholder in items: action = create_widget_action( menu, text=title, icon=icon, data=identifier, triggers=self._on_menu_action_triggered) action.placeholder_text = placeholder if not hasattr(self, 'menu_button'): self.menu_button = QtWidgets.QToolButton(self) self.menu_button.setIcon(build_icon(':/system/clear_shortcut.png')) self.menu_button.setCursor(QtCore.Qt.ArrowCursor) self.menu_button.setPopupMode(QtWidgets.QToolButton.InstantPopup) self.menu_button.setStyleSheet('QToolButton { border: none; padding: 0px 10px 0px 0px; }') self.menu_button.resize(QtCore.QSize(28, 18)) self.menu_button.setMenu(menu) self.set_current_search_type( Settings().value('{section}/last search type'.format(section=self.settings_section))) self.menu_button.show() self._update_style_sheet()
def set_search_types(self, items): """ A list of tuples to be used in the search type menu. The first item in the list will be preselected as the default. :param items: The list of tuples to use. The tuples should contain an integer identifier, an icon (QIcon instance or string) and a title for the item in the menu. In short, they should look like this:: (<identifier>, <icon>, <title>, <place holder text>) For instance:: (1, <QIcon instance>, "Titles", "Search Song Titles...") Or:: (2, ":/songs/authors.png", "Authors", "Search Authors...") """ menu = QtWidgets.QMenu(self) for identifier, icon, title, placeholder in items: action = create_widget_action( menu, text=title, icon=icon, data=identifier, triggers=self._on_menu_action_triggered) action.placeholder_text = placeholder if not hasattr(self, 'menu_button'): self.menu_button = QtWidgets.QToolButton(self) self.menu_button.setIcon(UiIcons().shortcuts) self.menu_button.setCursor(QtCore.Qt.ArrowCursor) self.menu_button.setPopupMode(QtWidgets.QToolButton.InstantPopup) self.menu_button.setStyleSheet('QToolButton { border: none; padding: 0px 10px 0px 0px; }') self.menu_button.resize(QtCore.QSize(28, 18)) self.menu_button.setMenu(menu) self.set_current_search_type( Settings().value('{section}/last used search type'.format(section=self.settings_section))) self.menu_button.show() self._update_style_sheet()
def add_toolbar_action(self, name, **kwargs): """ A method to help developers easily add a button to the toolbar. A new QAction is created by calling ``create_action()``. The action is added to the toolbar and the toolbar is set as parent. For more details please look at openlp.core.lib.ui.create_action() """ action = create_widget_action(self, name, **kwargs) self.actions[name] = action return action
def test_create_widget_action(self): """ Test creating an action for a widget """ # GIVEN: A button button = QtWidgets.QPushButton() # WHEN: We call the function action = create_widget_action(button, 'some action') # THEN: The action should be returned self.assertIsInstance(action, QtWidgets.QAction) self.assertEqual(action.objectName(), 'some action')
def test_create_widget_action(self): """ Test creating an action for a widget """ # GIVEN: A button button = QtWidgets.QPushButton() # WHEN: We call the function action = create_widget_action(button, 'some action') # THEN: The action should be returned assert isinstance(action, QtWidgets.QAction) assert action.objectName() == 'some action'
def create_widget_action_test(self): """ Test creating an action for a widget """ # GIVEN: A button button = QtGui.QPushButton() # WHEN: We call the function action = create_widget_action(button, 'some action') # THEN: The action should be returned self.assertIsInstance(action, QtGui.QAction) self.assertEqual(action.objectName(), 'some action')
def add_custom_context_actions(self): """ Add custom actions to the context menu. """ create_widget_action(self.list_view, separator=True) create_widget_action(self.list_view, text=UiStrings().AddGroup, icon=':/images/image_new_group.png', triggers=self.on_add_group_click) create_widget_action(self.list_view, text=self.plugin.get_string(StringContent.Load)['tooltip'], icon=':/general/general_open.png', triggers=self.on_file_click)
def add_custom_context_actions(self): """ Add custom actions to the context menu. """ create_widget_action(self.list_view, separator=True) create_widget_action( self.list_view, text=UiStrings().AddGroup, icon=':/images/image_new_group.png', triggers=self.on_add_group_click) create_widget_action( self.list_view, text=self.plugin.get_string(StringContent.Load)['tooltip'], icon=':/general/general_open.png', triggers=self.on_file_click)
def add_custom_context_actions(self): """ Add custom actions to the context menu. """ create_widget_action(self.list_view, separator=True) create_widget_action(self.list_view, text=UiStrings().AddGroup, icon=':/images/image_new_group.png', triggers=self.on_add_group_click) create_widget_action(self.list_view, text=translate('ImagePlugin', 'Add new image(s)'), icon=':/general/general_open.png', triggers=self.on_file_click)
def setSearchTypes(self, items): """ A list of tuples to be used in the search type menu. The first item in the list will be preselected as the default. ``items`` The list of tuples to use. The tuples should contain an integer identifier, an icon (QIcon instance or string) and a title for the item in the menu. In short, they should look like this:: (<identifier>, <icon>, <title>, <place holder text>) For instance:: (1, <QIcon instance>, "Titles", "Search Song Titles...") Or:: (2, ":/songs/authors.png", "Authors", "Search Authors...") """ menu = QtGui.QMenu(self) first = None for identifier, icon, title, placeholder in items: action = create_widget_action(menu, text=title, icon=icon, data=identifier, triggers=self._onMenuActionTriggered) action.placeholderText = placeholder if first is None: first = action self._currentSearchType = identifier if not hasattr(self, u'menuButton'): self.menuButton = QtGui.QToolButton(self) self.menuButton.setIcon(build_icon(u':/system/clear_shortcut.png')) self.menuButton.setCursor(QtCore.Qt.ArrowCursor) self.menuButton.setPopupMode(QtGui.QToolButton.InstantPopup) self.menuButton.setStyleSheet( u'QToolButton { border: none; padding: 0px 10px 0px 0px; }') self.menuButton.resize(QtCore.QSize(28, 18)) self.menuButton.setMenu(menu) self.menuButton.setDefaultAction(first) self.menuButton.show() self._updateStyleSheet()
def setup_ui(self, widget): """ Define the UI :param widget: The screen object the the dialog is to be attached to. """ # start with the layout self.layout = QtWidgets.QVBoxLayout(widget) self.layout.setSpacing(0) self.layout.setContentsMargins(0, 0, 0, 0) self.layout.setObjectName('layout') self.toolbar = OpenLPToolbar(widget) self.toolbar.setObjectName('toolbar') self.toolbar.add_toolbar_action('newTheme', text=UiStrings().NewTheme, icon=':/themes/theme_new.png', tooltip=translate('OpenLP.ThemeManager', 'Create a new theme.'), triggers=self.on_add_theme) self.toolbar.add_toolbar_action('editTheme', text=translate('OpenLP.ThemeManager', 'Edit Theme'), icon=':/themes/theme_edit.png', tooltip=translate('OpenLP.ThemeManager', 'Edit a theme.'), triggers=self.on_edit_theme) self.delete_toolbar_action = self.toolbar.add_toolbar_action('delete_theme', text=translate('OpenLP.ThemeManager', 'Delete Theme'), icon=':/general/general_delete.png', tooltip=translate('OpenLP.ThemeManager', 'Delete a theme.'), triggers=self.on_delete_theme) self.toolbar.addSeparator() self.toolbar.add_toolbar_action('importTheme', text=translate('OpenLP.ThemeManager', 'Import Theme'), icon=':/general/general_import.png', tooltip=translate('OpenLP.ThemeManager', 'Import a theme.'), triggers=self.on_import_theme) self.toolbar.add_toolbar_action('exportTheme', text=translate('OpenLP.ThemeManager', 'Export Theme'), icon=':/general/general_export.png', tooltip=translate('OpenLP.ThemeManager', 'Export a theme.'), triggers=self.on_export_theme) self.layout.addWidget(self.toolbar) self.theme_widget = QtWidgets.QWidgetAction(self.toolbar) self.theme_widget.setObjectName('theme_widget') # create theme manager list self.theme_list_widget = QtWidgets.QListWidget(widget) self.theme_list_widget.setAlternatingRowColors(True) self.theme_list_widget.setIconSize(QtCore.QSize(88, 50)) self.theme_list_widget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.theme_list_widget.setObjectName('theme_list_widget') self.layout.addWidget(self.theme_list_widget) self.theme_list_widget.customContextMenuRequested.connect(self.context_menu) # build the context menu self.menu = QtWidgets.QMenu() self.edit_action = create_widget_action(self.menu, text=translate('OpenLP.ThemeManager', '&Edit Theme'), icon=':/themes/theme_edit.png', triggers=self.on_edit_theme) self.copy_action = create_widget_action(self.menu, text=translate('OpenLP.ThemeManager', '&Copy Theme'), icon=':/themes/theme_edit.png', triggers=self.on_copy_theme) self.rename_action = create_widget_action(self.menu, text=translate('OpenLP.ThemeManager', '&Rename Theme'), icon=':/themes/theme_edit.png', triggers=self.on_rename_theme) self.delete_action = create_widget_action(self.menu, text=translate('OpenLP.ThemeManager', '&Delete Theme'), icon=':/general/general_delete.png', triggers=self.on_delete_theme) self.menu.addSeparator() self.global_action = create_widget_action(self.menu, text=translate('OpenLP.ThemeManager', 'Set As &Global Default'), icon=':/general/general_export.png', triggers=self.change_global_from_screen) self.export_action = create_widget_action(self.menu, text=translate('OpenLP.ThemeManager', '&Export Theme'), icon=':/general/general_export.png', triggers=self.on_export_theme) # Signals self.theme_list_widget.doubleClicked.connect(self.change_global_from_screen) self.theme_list_widget.currentItemChanged.connect(self.check_list_state)
def setup_ui(self, widget): """ Define the UI :param widget: The screen object the the dialog is to be attached to. """ # start with the layout self.layout = QtGui.QVBoxLayout(widget) self.layout.setSpacing(0) self.layout.setMargin(0) self.layout.setObjectName('layout') self.toolbar = OpenLPToolbar(widget) self.toolbar.setObjectName('toolbar') self.add_toolbar_action = self.toolbar.add_toolbar_action('add_loop', text=translate('OpenLP.LoopManager', 'Add Loop'), icon=':/general/general_add.png', tooltip=translate('OpenLP.LoopManager', 'Add a loop.'), triggers=self.on_add_loop) self.delete_toolbar_action = self.toolbar.add_toolbar_action('delete_loop', text=translate('OpenLP.LoopManager', 'Delete Loop'), icon=':/general/general_delete.png', tooltip=translate('OpenLP.LoopManager', 'Delete a loop.'), triggers=self.on_delete_loop) self.toolbar.addSeparator() self.play_toolbar_action = self.toolbar.add_toolbar_action('play_loop', text=translate('OpenLP.LoopManager', 'Play Loop'), icon=':/slides/media_playback_start.png', tooltip=translate('OpenLP.LoopManager', 'Play a loop.'), triggers=self.on_display_loop) self.stop_toolbar_action = self.toolbar.add_toolbar_action('stop_loop', text=translate('OpenLP.LoopManager', 'Stop Active Loop'), icon=':/slides/media_playback_stop.png', tooltip=translate('OpenLP.LoopManager', 'Stop playback of active loop.'), triggers=self.on_stop_loop) self.layout.addWidget(self.toolbar) self.loop_widget = QtGui.QWidgetAction(self.toolbar) self.loop_widget.setObjectName('loop_widget') # create loop manager list self.loop_list_widget = QtGui.QListWidget(widget) self.loop_list_widget.setAlternatingRowColors(True) self.loop_list_widget.setIconSize(QtCore.QSize(88, 50)) self.loop_list_widget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.loop_list_widget.setObjectName('loop_list_widget') self.layout.addWidget(self.loop_list_widget) self.loop_list_widget.customContextMenuRequested.connect(self.context_menu) # build the context menu self.menu = QtGui.QMenu() self.rename_action = create_widget_action(self.menu, text=translate('OpenLP.LoopManager', '&Rename Loop'), icon=':/general/general_edit.png', triggers=self.on_rename_loop) self.delete_action = create_widget_action(self.menu, text=translate('OpenLP.LoopManager', '&Delete Loop'), icon=':/general/general_delete.png', triggers=self.on_delete_loop) self.menu.addSeparator() self.display_action = create_widget_action(self.menu, text=translate('OpenLP.LoopManager', 'Dis&play Loop'), icon=':/slides/media_playback_start.png', triggers=self.on_display_loop) # Signals self.loop_list_widget.doubleClicked.connect(self.on_display_loop)
def add_list_view_to_toolbar(self): """ Creates the main widget for listing items the media item is tracking. This method overloads MediaManagerItem.add_list_view_to_toolbar. """ # Add the List widget self.list_view = TreeWidgetWithDnD(self, self.plugin.name) self.list_view.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) self.list_view.setAlternatingRowColors(True) self.list_view.setObjectName('%sTreeView' % self.plugin.name) # Add to pageLayout self.page_layout.addWidget(self.list_view) # define and add the context menu self.list_view.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) if self.has_edit_icon: create_widget_action( self.list_view, text=self.plugin.get_string(StringContent.Edit)['title'], icon=':/general/general_edit.png', triggers=self.on_edit_click) create_widget_action(self.list_view, separator=True) if self.has_delete_icon: create_widget_action( self.list_view, 'listView%s%sItem' % (self.plugin.name.title(), StringContent.Delete.title()), text=self.plugin.get_string(StringContent.Delete)['title'], icon=':/general/general_delete.png', can_shortcuts=True, triggers=self.on_delete_click) create_widget_action(self.list_view, separator=True) create_widget_action( self.list_view, 'listView%s%sItem' % (self.plugin.name.title(), StringContent.Preview.title()), text=self.plugin.get_string(StringContent.Preview)['title'], icon=':/general/general_preview.png', can_shortcuts=True, triggers=self.on_preview_click) create_widget_action( self.list_view, 'listView%s%sItem' % (self.plugin.name.title(), StringContent.Live.title()), text=self.plugin.get_string(StringContent.Live)['title'], icon=':/general/general_live.png', can_shortcuts=True, triggers=self.on_live_click) create_widget_action( self.list_view, 'listView%s%sItem' % (self.plugin.name.title(), StringContent.Service.title()), can_shortcuts=True, text=self.plugin.get_string(StringContent.Service)['title'], icon=':/general/general_add.png', triggers=self.on_add_click) if self.add_to_service_item: create_widget_action(self.list_view, separator=True) create_widget_action( self.list_view, text=translate('OpenLP.MediaManagerItem', '&Add to selected Service Item'), icon=':/general/general_add.png', triggers=self.on_add_edit_click) self.add_custom_context_actions() # Create the context menu and add all actions from the list_view. self.menu = QtGui.QMenu() self.menu.addActions(self.list_view.actions()) self.list_view.doubleClicked.connect(self.on_double_clicked) self.list_view.itemSelectionChanged.connect(self.on_selection_change) self.list_view.customContextMenuRequested.connect(self.context_menu) self.list_view.addAction(self.replace_action)
def add_list_view_to_toolbar(self): """ Creates the main widget for listing items the media item is tracking """ # Add the List widget self.list_view = ListWidgetWithDnD(self, self.plugin.name) self.list_view.setSpacing(1) self.list_view.setSelectionMode( QtWidgets.QAbstractItemView.ExtendedSelection) self.list_view.setAlternatingRowColors(True) self.list_view.setObjectName('%sListView' % self.plugin.name) # Add to page_layout self.page_layout.addWidget(self.list_view) # define and add the context menu self.list_view.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) if self.has_edit_icon: create_widget_action(self.list_view, text=self.plugin.get_string( StringContent.Edit)['title'], icon=':/general/general_edit.png', triggers=self.on_edit_click) create_widget_action(self.list_view, separator=True) create_widget_action( self.list_view, 'listView%s%sItem' % (self.plugin.name.title(), StringContent.Preview.title()), text=self.plugin.get_string(StringContent.Preview)['title'], icon=':/general/general_preview.png', can_shortcuts=True, triggers=self.on_preview_click) create_widget_action( self.list_view, 'listView%s%sItem' % (self.plugin.name.title(), StringContent.Live.title()), text=self.plugin.get_string(StringContent.Live)['title'], icon=':/general/general_live.png', can_shortcuts=True, triggers=self.on_live_click) create_widget_action( self.list_view, 'listView%s%sItem' % (self.plugin.name.title(), StringContent.Service.title()), can_shortcuts=True, text=self.plugin.get_string(StringContent.Service)['title'], icon=':/general/general_add.png', triggers=self.on_add_click) if self.has_delete_icon: create_widget_action(self.list_view, separator=True) create_widget_action( self.list_view, 'listView%s%sItem' % (self.plugin.name.title(), StringContent.Delete.title()), text=self.plugin.get_string(StringContent.Delete)['title'], icon=':/general/general_delete.png', can_shortcuts=True, triggers=self.on_delete_click) if self.add_to_service_item: create_widget_action(self.list_view, separator=True) create_widget_action(self.list_view, text=translate( 'OpenLP.MediaManagerItem', '&Add to selected Service Item'), icon=':/general/general_add.png', triggers=self.on_add_edit_click) self.add_custom_context_actions() # Create the context menu and add all actions from the list_view. self.menu = QtWidgets.QMenu() self.menu.addActions(self.list_view.actions()) self.list_view.doubleClicked.connect(self.on_double_clicked) self.list_view.itemSelectionChanged.connect(self.on_selection_change) self.list_view.customContextMenuRequested.connect(self.context_menu)
def setup_ui(self, widget): """ Define the UI :param widget: The screen object the the dialog is to be attached to. """ # start with the layout self.layout = QtWidgets.QVBoxLayout(widget) self.layout.setSpacing(0) self.layout.setContentsMargins(0, 0, 0, 0) self.layout.setObjectName('layout') self.toolbar = OpenLPToolbar(widget) self.toolbar.setObjectName('toolbar') self.toolbar.add_toolbar_action('newTheme', text=UiStrings().NewTheme, icon=UiIcons().new, tooltip=translate( 'OpenLP.ThemeManager', 'Create a new theme.'), triggers=self.on_add_theme) self.toolbar.add_toolbar_action( 'editTheme', text=translate('OpenLP.ThemeManager', 'Edit Theme'), icon=UiIcons().edit, tooltip=translate('OpenLP.ThemeManager', 'Edit a theme.'), triggers=self.on_edit_theme) self.delete_toolbar_action = self.toolbar.add_toolbar_action( 'delete_theme', text=translate('OpenLP.ThemeManager', 'Delete Theme'), icon=UiIcons().delete, tooltip=translate('OpenLP.ThemeManager', 'Delete a theme.'), triggers=self.on_delete_theme) self.toolbar.addSeparator() self.toolbar.add_toolbar_action( 'importTheme', text=translate('OpenLP.ThemeManager', 'Import Theme'), icon=UiIcons().download, tooltip=translate('OpenLP.ThemeManager', 'Import a theme.'), triggers=self.on_import_theme) self.toolbar.add_toolbar_action( 'exportTheme', text=translate('OpenLP.ThemeManager', 'Export Theme'), icon=UiIcons().upload, tooltip=translate('OpenLP.ThemeManager', 'Export a theme.'), triggers=self.on_export_theme) self.layout.addWidget(self.toolbar) self.theme_widget = QtWidgets.QWidgetAction(self.toolbar) self.theme_widget.setObjectName('theme_widget') # create theme manager list self.theme_list_widget = QtWidgets.QListWidget(widget) self.theme_list_widget.setAlternatingRowColors(True) self.theme_list_widget.setIconSize(QtCore.QSize(88, 50)) self.theme_list_widget.setContextMenuPolicy( QtCore.Qt.CustomContextMenu) self.theme_list_widget.setObjectName('theme_list_widget') self.layout.addWidget(self.theme_list_widget) self.theme_list_widget.customContextMenuRequested.connect( self.context_menu) # build the context menu self.menu = QtWidgets.QMenu() self.edit_action = create_widget_action(self.menu, text=translate( 'OpenLP.ThemeManager', '&Edit Theme'), icon=UiIcons().edit, triggers=self.on_edit_theme) self.copy_action = create_widget_action(self.menu, text=translate( 'OpenLP.ThemeManager', '&Copy Theme'), icon=UiIcons().copy, triggers=self.on_copy_theme) self.rename_action = create_widget_action( self.menu, text=translate('OpenLP.ThemeManager', '&Rename Theme'), icon=UiIcons().edit, triggers=self.on_rename_theme) self.delete_action = create_widget_action( self.menu, text=translate('OpenLP.ThemeManager', '&Delete Theme'), icon=UiIcons().delete, triggers=self.on_delete_theme) self.menu.addSeparator() self.global_action = create_widget_action( self.menu, text=translate('OpenLP.ThemeManager', 'Set As &Global Default'), icon=UiIcons().default, triggers=self.change_global_from_screen) self.export_action = create_widget_action( self.menu, text=translate('OpenLP.ThemeManager', '&Export Theme'), icon=UiIcons().upload, triggers=self.on_export_theme) # Signals self.theme_list_widget.doubleClicked.connect( self.change_global_from_screen) self.theme_list_widget.currentItemChanged.connect( self.check_list_state)
def setup_ui(self, widget): """ Define the UI :param widget: The screen object the dialog is to be attached to. """ log.debug('setup_ui()') # Create ProjectorManager box self.layout = QtGui.QVBoxLayout(widget) self.layout.setSpacing(0) self.layout.setMargin(0) self.layout.setObjectName('layout') # Add one selection toolbar self.one_toolbar = OpenLPToolbar(widget) self.one_toolbar.add_toolbar_action( 'new_projector', text=translate('OpenLP.ProjectorManager', 'Add Projector'), icon=':/projector/projector_new.png', tooltip=translate('OpenLP.ProjectorManager', 'Add a new projector'), triggers=self.on_add_projector) # Show edit/delete when projector not connected self.one_toolbar.add_toolbar_action( 'edit_projector', text=translate('OpenLP.ProjectorManager', 'Edit Projector'), icon=':/general/general_edit.png', tooltip=translate('OpenLP.ProjectorManager', 'Edit selected projector'), triggers=self.on_edit_projector) self.one_toolbar.add_toolbar_action( 'delete_projector', text=translate('OpenLP.ProjectorManager', 'Delete Projector'), icon=':/general/general_delete.png', tooltip=translate('OpenLP.ProjectorManager', 'Delete selected projector'), triggers=self.on_delete_projector) # Show source/view when projector connected self.one_toolbar.add_toolbar_action( 'source_view_projector', text=translate('OpenLP.ProjectorManager', 'Select Input Source'), icon=':/projector/projector_hdmi.png', tooltip=translate('OpenLP.ProjectorManager', 'Choose input source on selected projector'), triggers=self.on_select_input) self.one_toolbar.add_toolbar_action( 'view_projector', text=translate('OpenLP.ProjectorManager', 'View Projector'), icon=':/system/system_about.png', tooltip=translate('OpenLP.ProjectorManager', 'View selected projector information'), triggers=self.on_status_projector) self.one_toolbar.addSeparator() self.one_toolbar.add_toolbar_action( 'connect_projector', text=translate('OpenLP.ProjectorManager', 'Connect to selected projector'), icon=':/projector/projector_connect.png', tooltip=translate('OpenLP.ProjectorManager', 'Connect to selected projector'), triggers=self.on_connect_projector) self.one_toolbar.add_toolbar_action( 'connect_projector_multiple', text=translate('OpenLP.ProjectorManager', 'Connect to selected projectors'), icon=':/projector/projector_connect_tiled.png', tooltip=translate('OpenLP.ProjectorManager', 'Connect to selected projector'), triggers=self.on_connect_projector) self.one_toolbar.add_toolbar_action( 'disconnect_projector', text=translate('OpenLP.ProjectorManager', 'Disconnect from selected projectors'), icon=':/projector/projector_disconnect.png', tooltip=translate('OpenLP.ProjectorManager', 'Disconnect from selected projector'), triggers=self.on_disconnect_projector) self.one_toolbar.add_toolbar_action( 'disconnect_projector_multiple', text=translate('OpenLP.ProjectorManager', 'Disconnect from selected projector'), icon=':/projector/projector_disconnect_tiled.png', tooltip=translate('OpenLP.ProjectorManager', 'Disconnect from selected projector'), triggers=self.on_disconnect_projector) self.one_toolbar.addSeparator() self.one_toolbar.add_toolbar_action( 'poweron_projector', text=translate('OpenLP.ProjectorManager', 'Power on selected projector'), icon=':/projector/projector_power_on.png', tooltip=translate('OpenLP.ProjectorManager', 'Power on selected projector'), triggers=self.on_poweron_projector) self.one_toolbar.add_toolbar_action( 'poweron_projector_multiple', text=translate('OpenLP.ProjectorManager', 'Power on selected projector'), icon=':/projector/projector_power_on_tiled.png', tooltip=translate('OpenLP.ProjectorManager', 'Power on selected projector'), triggers=self.on_poweron_projector) self.one_toolbar.add_toolbar_action( 'poweroff_projector', text=translate('OpenLP.ProjectorManager', 'Standby selected projector'), icon=':/projector/projector_power_off.png', tooltip=translate('OpenLP.ProjectorManager', 'Put selected projector in standby'), triggers=self.on_poweroff_projector) self.one_toolbar.add_toolbar_action( 'poweroff_projector_multiple', text=translate('OpenLP.ProjectorManager', 'Standby selected projector'), icon=':/projector/projector_power_off_tiled.png', tooltip=translate('OpenLP.ProjectorManager', 'Put selected projector in standby'), triggers=self.on_poweroff_projector) self.one_toolbar.addSeparator() self.one_toolbar.add_toolbar_action( 'blank_projector', text=translate('OpenLP.ProjectorManager', 'Blank selected projector screen'), icon=':/projector/projector_blank.png', tooltip=translate('OpenLP.ProjectorManager', 'Blank selected projector screen'), triggers=self.on_blank_projector) self.one_toolbar.add_toolbar_action( 'blank_projector_multiple', text=translate('OpenLP.ProjectorManager', 'Blank selected projector screen'), icon=':/projector/projector_blank_tiled.png', tooltip=translate('OpenLP.ProjectorManager', 'Blank selected projector screen'), triggers=self.on_blank_projector) self.one_toolbar.add_toolbar_action( 'show_projector', text=translate('OpenLP.ProjectorManager', 'Show selected projector screen'), icon=':/projector/projector_show.png', tooltip=translate('OpenLP.ProjectorManager', 'Show selected projector screen'), triggers=self.on_show_projector) self.one_toolbar.add_toolbar_action( 'show_projector_multiple', text=translate('OpenLP.ProjectorManager', 'Show selected projector screen'), icon=':/projector/projector_show_tiled.png', tooltip=translate('OpenLP.ProjectorManager', 'Show selected projector screen'), triggers=self.on_show_projector) self.layout.addWidget(self.one_toolbar) self.projector_one_widget = QtGui.QWidgetAction(self.one_toolbar) self.projector_one_widget.setObjectName('projector_one_toolbar_widget') # Create projector manager list self.projector_list_widget = QtGui.QListWidget(widget) self.projector_list_widget.setSelectionMode( QtGui.QAbstractItemView.ExtendedSelection) self.projector_list_widget.setAlternatingRowColors(True) self.projector_list_widget.setIconSize(QtCore.QSize(90, 50)) self.projector_list_widget.setContextMenuPolicy( QtCore.Qt.CustomContextMenu) self.projector_list_widget.setObjectName('projector_list_widget') self.layout.addWidget(self.projector_list_widget) self.projector_list_widget.customContextMenuRequested.connect( self.context_menu) self.projector_list_widget.itemDoubleClicked.connect( self.on_doubleclick_item) # Build the context menu self.menu = QtGui.QMenu() self.status_action = create_widget_action( self.menu, text=translate('OpenLP.ProjectorManager', '&View Projector Information'), icon=':/system/system_about.png', triggers=self.on_status_projector) self.edit_action = create_widget_action( self.menu, text=translate('OpenLP.ProjectorManager', '&Edit Projector'), icon=':/projector/projector_edit.png', triggers=self.on_edit_projector) self.menu.addSeparator() self.connect_action = create_widget_action( self.menu, text=translate('OpenLP.ProjectorManager', '&Connect Projector'), icon=':/projector/projector_connect.png', triggers=self.on_connect_projector) self.disconnect_action = create_widget_action( self.menu, text=translate('OpenLP.ProjectorManager', 'D&isconnect Projector'), icon=':/projector/projector_disconnect.png', triggers=self.on_disconnect_projector) self.menu.addSeparator() self.poweron_action = create_widget_action( self.menu, text=translate('OpenLP.ProjectorManager', 'Power &On Projector'), icon=':/projector/projector_power_on.png', triggers=self.on_poweron_projector) self.poweroff_action = create_widget_action( self.menu, text=translate('OpenLP.ProjectorManager', 'Power O&ff Projector'), icon=':/projector/projector_power_off.png', triggers=self.on_poweroff_projector) self.menu.addSeparator() self.select_input_action = create_widget_action( self.menu, text=translate('OpenLP.ProjectorManager', 'Select &Input'), icon=':/projector/projector_hdmi.png', triggers=self.on_select_input) self.edit_input_action = create_widget_action( self.menu, text=translate('OpenLP.ProjectorManager', 'Edit Input Source'), icon=':/general/general_edit.png', triggers=self.on_edit_input) self.blank_action = create_widget_action( self.menu, text=translate('OpenLP.ProjectorManager', '&Blank Projector Screen'), icon=':/projector/projector_blank.png', triggers=self.on_blank_projector) self.show_action = create_widget_action( self.menu, text=translate('OpenLP.ProjectorManager', '&Show Projector Screen'), icon=':/projector/projector_show.png', triggers=self.on_show_projector) self.menu.addSeparator() self.delete_action = create_widget_action( self.menu, text=translate('OpenLP.ProjectorManager', '&Delete Projector'), icon=':/general/general_delete.png', triggers=self.on_delete_projector) self.update_icons()
def setup_ui(self, widget): """ Define the UI :param widget: The screen object the dialog is to be attached to. """ log.debug('setup_ui()') # Create ProjectorManager box self.layout = QtGui.QVBoxLayout(widget) self.layout.setSpacing(0) self.layout.setMargin(0) self.layout.setObjectName('layout') # Add one selection toolbar self.one_toolbar = OpenLPToolbar(widget) self.one_toolbar.add_toolbar_action('new_projector', text=translate('OpenLP.ProjectorManager', 'Add Projector'), icon=':/projector/projector_new.png', tooltip=translate('OpenLP.ProjectorManager', 'Add a new projector'), triggers=self.on_add_projector) # Show edit/delete when projector not connected self.one_toolbar.add_toolbar_action('edit_projector', text=translate('OpenLP.ProjectorManager', 'Edit Projector'), icon=':/general/general_edit.png', tooltip=translate('OpenLP.ProjectorManager', 'Edit selected projector'), triggers=self.on_edit_projector) self.one_toolbar.add_toolbar_action('delete_projector', text=translate('OpenLP.ProjectorManager', 'Delete Projector'), icon=':/general/general_delete.png', tooltip=translate('OpenLP.ProjectorManager', 'Delete selected projector'), triggers=self.on_delete_projector) # Show source/view when projector connected self.one_toolbar.add_toolbar_action('source_view_projector', text=translate('OpenLP.ProjectorManager', 'Select Input Source'), icon=':/projector/projector_hdmi.png', tooltip=translate('OpenLP.ProjectorManager', 'Choose input source on selected projector'), triggers=self.on_select_input) self.one_toolbar.add_toolbar_action('view_projector', text=translate('OpenLP.ProjectorManager', 'View Projector'), icon=':/system/system_about.png', tooltip=translate('OpenLP.ProjectorManager', 'View selected projector information'), triggers=self.on_status_projector) self.one_toolbar.addSeparator() self.one_toolbar.add_toolbar_action('connect_projector', text=translate('OpenLP.ProjectorManager', 'Connect to selected projector'), icon=':/projector/projector_connect.png', tooltip=translate('OpenLP.ProjectorManager', 'Connect to selected projector'), triggers=self.on_connect_projector) self.one_toolbar.add_toolbar_action('connect_projector_multiple', text=translate('OpenLP.ProjectorManager', 'Connect to selected projectors'), icon=':/projector/projector_connect_tiled.png', tooltip=translate('OpenLP.ProjectorManager', 'Connect to selected projector'), triggers=self.on_connect_projector) self.one_toolbar.add_toolbar_action('disconnect_projector', text=translate('OpenLP.ProjectorManager', 'Disconnect from selected projectors'), icon=':/projector/projector_disconnect.png', tooltip=translate('OpenLP.ProjectorManager', 'Disconnect from selected projector'), triggers=self.on_disconnect_projector) self.one_toolbar.add_toolbar_action('disconnect_projector_multiple', text=translate('OpenLP.ProjectorManager', 'Disconnect from selected projector'), icon=':/projector/projector_disconnect_tiled.png', tooltip=translate('OpenLP.ProjectorManager', 'Disconnect from selected projector'), triggers=self.on_disconnect_projector) self.one_toolbar.addSeparator() self.one_toolbar.add_toolbar_action('poweron_projector', text=translate('OpenLP.ProjectorManager', 'Power on selected projector'), icon=':/projector/projector_power_on.png', tooltip=translate('OpenLP.ProjectorManager', 'Power on selected projector'), triggers=self.on_poweron_projector) self.one_toolbar.add_toolbar_action('poweron_projector_multiple', text=translate('OpenLP.ProjectorManager', 'Power on selected projector'), icon=':/projector/projector_power_on_tiled.png', tooltip=translate('OpenLP.ProjectorManager', 'Power on selected projector'), triggers=self.on_poweron_projector) self.one_toolbar.add_toolbar_action('poweroff_projector', text=translate('OpenLP.ProjectorManager', 'Standby selected projector'), icon=':/projector/projector_power_off.png', tooltip=translate('OpenLP.ProjectorManager', 'Put selected projector in standby'), triggers=self.on_poweroff_projector) self.one_toolbar.add_toolbar_action('poweroff_projector_multiple', text=translate('OpenLP.ProjectorManager', 'Standby selected projector'), icon=':/projector/projector_power_off_tiled.png', tooltip=translate('OpenLP.ProjectorManager', 'Put selected projector in standby'), triggers=self.on_poweroff_projector) self.one_toolbar.addSeparator() self.one_toolbar.add_toolbar_action('blank_projector', text=translate('OpenLP.ProjectorManager', 'Blank selected projector screen'), icon=':/projector/projector_blank.png', tooltip=translate('OpenLP.ProjectorManager', 'Blank selected projector screen'), triggers=self.on_blank_projector) self.one_toolbar.add_toolbar_action('blank_projector_multiple', text=translate('OpenLP.ProjectorManager', 'Blank selected projector screen'), icon=':/projector/projector_blank_tiled.png', tooltip=translate('OpenLP.ProjectorManager', 'Blank selected projector screen'), triggers=self.on_blank_projector) self.one_toolbar.add_toolbar_action('show_projector', text=translate('OpenLP.ProjectorManager', 'Show selected projector screen'), icon=':/projector/projector_show.png', tooltip=translate('OpenLP.ProjectorManager', 'Show selected projector screen'), triggers=self.on_show_projector) self.one_toolbar.add_toolbar_action('show_projector_multiple', text=translate('OpenLP.ProjectorManager', 'Show selected projector screen'), icon=':/projector/projector_show_tiled.png', tooltip=translate('OpenLP.ProjectorManager', 'Show selected projector screen'), triggers=self.on_show_projector) self.layout.addWidget(self.one_toolbar) self.projector_one_widget = QtGui.QWidgetAction(self.one_toolbar) self.projector_one_widget.setObjectName('projector_one_toolbar_widget') # Create projector manager list self.projector_list_widget = QtGui.QListWidget(widget) self.projector_list_widget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) self.projector_list_widget.setAlternatingRowColors(True) self.projector_list_widget.setIconSize(QtCore.QSize(90, 50)) self.projector_list_widget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.projector_list_widget.setObjectName('projector_list_widget') self.layout.addWidget(self.projector_list_widget) self.projector_list_widget.customContextMenuRequested.connect(self.context_menu) self.projector_list_widget.itemDoubleClicked.connect(self.on_doubleclick_item) # Build the context menu self.menu = QtGui.QMenu() self.status_action = create_widget_action(self.menu, text=translate('OpenLP.ProjectorManager', '&View Projector Information'), icon=':/system/system_about.png', triggers=self.on_status_projector) self.edit_action = create_widget_action(self.menu, text=translate('OpenLP.ProjectorManager', '&Edit Projector'), icon=':/projector/projector_edit.png', triggers=self.on_edit_projector) self.menu.addSeparator() self.connect_action = create_widget_action(self.menu, text=translate('OpenLP.ProjectorManager', '&Connect Projector'), icon=':/projector/projector_connect.png', triggers=self.on_connect_projector) self.disconnect_action = create_widget_action(self.menu, text=translate('OpenLP.ProjectorManager', 'D&isconnect Projector'), icon=':/projector/projector_disconnect.png', triggers=self.on_disconnect_projector) self.menu.addSeparator() self.poweron_action = create_widget_action(self.menu, text=translate('OpenLP.ProjectorManager', 'Power &On Projector'), icon=':/projector/projector_power_on.png', triggers=self.on_poweron_projector) self.poweroff_action = create_widget_action(self.menu, text=translate('OpenLP.ProjectorManager', 'Power O&ff Projector'), icon=':/projector/projector_power_off.png', triggers=self.on_poweroff_projector) self.menu.addSeparator() self.select_input_action = create_widget_action(self.menu, text=translate('OpenLP.ProjectorManager', 'Select &Input'), icon=':/projector/projector_hdmi.png', triggers=self.on_select_input) self.edit_input_action = create_widget_action(self.menu, text=translate('OpenLP.ProjectorManager', 'Edit Input Source'), icon=':/general/general_edit.png', triggers=self.on_edit_input) self.blank_action = create_widget_action(self.menu, text=translate('OpenLP.ProjectorManager', '&Blank Projector Screen'), icon=':/projector/projector_blank.png', triggers=self.on_blank_projector) self.show_action = create_widget_action(self.menu, text=translate('OpenLP.ProjectorManager', '&Show Projector Screen'), icon=':/projector/projector_show.png', triggers=self.on_show_projector) self.menu.addSeparator() self.delete_action = create_widget_action(self.menu, text=translate('OpenLP.ProjectorManager', '&Delete Projector'), icon=':/general/general_delete.png', triggers=self.on_delete_projector) self.update_icons()
def addCustomContextActions(self): create_widget_action(self.listView, separator=True) create_widget_action(self.listView, text=translate('OpenLP.MediaManagerItem', '&Clone'), icon=u':/general/general_clone.png', triggers=self.onCloneClick)
def add_list_view_to_toolbar(self): """ Creates the main widget for listing items the media item is tracking """ # Add the List widget self.list_view = ListWidgetWithDnD(self, self.plugin.name) self.list_view.setObjectName('{name}ListView'.format(name=self.plugin.name)) # Add to page_layout self.page_layout.addWidget(self.list_view) if self.has_edit_icon: create_widget_action(self.list_view, text=self.plugin.get_string(StringContent.Edit)['title'], icon=':/general/general_edit.png', triggers=self.on_edit_click) create_widget_action(self.list_view, separator=True) create_widget_action(self.list_view, 'listView{plugin}{preview}Item'.format(plugin=self.plugin.name.title(), preview=StringContent.Preview.title()), text=self.plugin.get_string(StringContent.Preview)['title'], icon=':/general/general_preview.png', can_shortcuts=True, triggers=self.on_preview_click) create_widget_action(self.list_view, 'listView{plugin}{live}Item'.format(plugin=self.plugin.name.title(), live=StringContent.Live.title()), text=self.plugin.get_string(StringContent.Live)['title'], icon=':/general/general_live.png', can_shortcuts=True, triggers=self.on_live_click) create_widget_action(self.list_view, 'listView{plugin}{service}Item'.format(plugin=self.plugin.name.title(), service=StringContent.Service.title()), can_shortcuts=True, text=self.plugin.get_string(StringContent.Service)['title'], icon=':/general/general_add.png', triggers=self.on_add_click) if self.has_delete_icon: create_widget_action(self.list_view, separator=True) create_widget_action(self.list_view, 'listView{plugin}{delete}Item'.format(plugin=self.plugin.name.title(), delete=StringContent.Delete.title()), text=self.plugin.get_string(StringContent.Delete)['title'], icon=':/general/general_delete.png', can_shortcuts=True, triggers=self.on_delete_click) if self.add_to_service_item: create_widget_action(self.list_view, separator=True) create_widget_action(self.list_view, text=translate('OpenLP.MediaManagerItem', '&Add to selected Service Item'), icon=':/general/general_add.png', triggers=self.on_add_edit_click) self.add_custom_context_actions() # Create the context menu and add all actions from the list_view. self.menu = QtWidgets.QMenu() self.menu.addActions(self.list_view.actions()) self.list_view.doubleClicked.connect(self.on_double_clicked) self.list_view.itemSelectionChanged.connect(self.on_selection_change) self.list_view.customContextMenuRequested.connect(self.context_menu)
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.setSpacing(1) self.listView.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) self.listView.setAlternatingRowColors(True) self.listView.setObjectName(u'%sListView' % self.plugin.name) # Add to pageLayout self.pageLayout.addWidget(self.listView) # define and add the context menu self.listView.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) if self.hasEditIcon: create_widget_action(self.listView, text=self.plugin.getString(StringContent.Edit)[u'title'], icon=u':/general/general_edit.png', triggers=self.onEditClick) create_widget_action(self.listView, separator=True) if self.hasDeleteIcon: create_widget_action(self.listView, text=self.plugin.getString(StringContent.Delete)[u'title'], icon=u':/general/general_delete.png', shortcuts=[QtCore.Qt.Key_Delete], triggers=self.onDeleteClick) create_widget_action(self.listView, separator=True) create_widget_action(self.listView, text=self.plugin.getString(StringContent.Preview)[u'title'], icon=u':/general/general_preview.png', shortcuts=[QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return], triggers=self.onPreviewClick) create_widget_action(self.listView, text=self.plugin.getString(StringContent.Live)[u'title'], icon=u':/general/general_live.png', shortcuts=[QtCore.Qt.ShiftModifier | QtCore.Qt.Key_Enter, QtCore.Qt.ShiftModifier | QtCore.Qt.Key_Return], triggers=self.onLiveClick) create_widget_action(self.listView, text=self.plugin.getString(StringContent.Service)[u'title'], icon=u':/general/general_add.png', shortcuts=[QtCore.Qt.Key_Plus, QtCore.Qt.Key_Equal], triggers=self.onAddClick) if self.addToServiceItem: create_widget_action(self.listView, separator=True) create_widget_action(self.listView, text=translate('OpenLP.MediaManagerItem', '&Add to selected Service Item'), icon=u':/general/general_add.png', triggers=self.onAddEditClick) self.addCustomContextActions() # Create the context menu and add all actions from the listView. self.menu = QtGui.QMenu() self.menu.addActions(self.listView.actions()) QtCore.QObject.connect(self.listView, QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onDoubleClicked) QtCore.QObject.connect(self.listView, QtCore.SIGNAL(u'itemSelectionChanged()'), self.onSelectionChange) QtCore.QObject.connect(self.listView, QtCore.SIGNAL(u'customContextMenuRequested(QPoint)'), self.contextMenu)
def add_list_view_to_toolbar(self): """ Creates the main widget for listing items the media item is tracking. This method overloads MediaManagerItem.add_list_view_to_toolbar. """ # Add the List widget self.list_view = TreeWidgetWithDnD(self, self.plugin.name) self.list_view.setSelectionMode( QtWidgets.QAbstractItemView.ExtendedSelection) self.list_view.setAlternatingRowColors(True) self.list_view.setObjectName( '{name}TreeView'.format(name=self.plugin.name)) # Add to pageLayout self.page_layout.addWidget(self.list_view) # define and add the context menu self.list_view.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) if self.has_edit_icon: create_widget_action(self.list_view, text=self.plugin.get_string( StringContent.Edit)['title'], icon=UiIcons().edit, triggers=self.on_edit_click) create_widget_action(self.list_view, separator=True) create_widget_action(self.list_view, 'listView{name}{preview}Item'.format( name=self.plugin.name.title(), preview=StringContent.Preview.title()), text=self.plugin.get_string( StringContent.Preview)['title'], icon=UiIcons().preview, can_shortcuts=True, triggers=self.on_preview_click) create_widget_action( self.list_view, 'listView{name}{live}Item'.format(name=self.plugin.name.title(), live=StringContent.Live.title()), text=self.plugin.get_string(StringContent.Live)['title'], icon=UiIcons().live, can_shortcuts=True, triggers=self.on_live_click) create_widget_action(self.list_view, 'listView{name}{service}Item'.format( name=self.plugin.name.title(), service=StringContent.Service.title()), can_shortcuts=True, text=self.plugin.get_string( StringContent.Service)['title'], icon=UiIcons().add, triggers=self.on_add_click) if self.add_to_service_item: create_widget_action(self.list_view, separator=True) create_widget_action(self.list_view, text=translate( 'OpenLP.MediaManagerItem', '&Add to selected Service Item'), icon=UiIcons().add, triggers=self.on_add_edit_click) create_widget_action(self.list_view, separator=True) if self.has_delete_icon: create_widget_action(self.list_view, 'listView{name}{delete}Item'.format( name=self.plugin.name.title(), delete=StringContent.Delete.title()), text=self.plugin.get_string( StringContent.Delete)['title'], icon=UiIcons().delete, can_shortcuts=True, triggers=self.on_delete_click) self.add_custom_context_actions() # Create the context menu and add all actions from the list_view. self.menu = QtWidgets.QMenu() self.menu.addActions(self.list_view.actions()) self.list_view.doubleClicked.connect(self.on_double_clicked) self.list_view.itemSelectionChanged.connect(self.on_selection_change) self.list_view.customContextMenuRequested.connect(self.context_menu) self.list_view.addAction(self.replace_action)