From faee3109e528443044bb272115024a749677991f Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 13 Apr 2018 19:54:42 +0100 Subject: [PATCH] more --- openlp/core/ui/advancedtab.py | 5 +++-- openlp/core/ui/exceptiondialog.py | 2 +- openlp/core/widgets/wizard.py | 4 ++-- openlp/plugins/alerts/forms/alertdialog.py | 5 ++--- .../custom/forms/editcustomslidedialog.py | 6 +++--- openlp/plugins/custom/lib/mediaitem.py | 3 ++- openlp/plugins/images/lib/mediaitem.py | 17 ++++++++-------- openlp/plugins/media/lib/mediaitem.py | 3 ++- openlp/plugins/presentations/lib/mediaitem.py | 5 +++-- .../songs/forms/songmaintenancedialog.py | 19 +++++++++--------- .../plugins/songs/forms/songreviewwidget.py | 4 ++-- .../plugins/songs/forms/songselectdialog.py | 7 ++++--- openlp/plugins/songs/lib/mediaitem.py | 2 +- resources/images/author_add.png | Bin 836 -> 0 bytes resources/images/author_delete.png | Bin 858 -> 0 bytes resources/images/author_edit.png | Bin 885 -> 0 bytes resources/images/book_add.png | Bin 670 -> 0 bytes resources/images/book_delete.png | Bin 744 -> 0 bytes resources/images/book_edit.png | Bin 776 -> 0 bytes resources/images/general_add.png | Bin 761 -> 0 bytes resources/images/general_clone.png | Bin 527 -> 0 bytes resources/images/general_edit.png | Bin 726 -> 0 bytes resources/images/general_live.png | Bin 720 -> 0 bytes resources/images/general_open.png | Bin 531 -> 0 bytes resources/images/general_preview.png | Bin 1057 -> 0 bytes resources/images/general_revert.png | Bin 737 -> 0 bytes resources/images/openlp-2.qrc | 19 ------------------ resources/images/song_author_edit.png | Bin 636 -> 0 bytes resources/images/song_search_stop.png | Bin 722 -> 0 bytes resources/images/system_help_contents.png | Bin 684 -> 0 bytes resources/images/topic_add.png | Bin 1007 -> 0 bytes resources/images/topic_delete.png | Bin 1038 -> 0 bytes resources/images/topic_edit.png | Bin 1024 -> 0 bytes 33 files changed, 44 insertions(+), 57 deletions(-) delete mode 100644 resources/images/author_add.png delete mode 100644 resources/images/author_delete.png delete mode 100644 resources/images/author_edit.png delete mode 100644 resources/images/book_add.png delete mode 100644 resources/images/book_delete.png delete mode 100644 resources/images/book_edit.png delete mode 100644 resources/images/general_add.png delete mode 100644 resources/images/general_clone.png delete mode 100644 resources/images/general_edit.png delete mode 100644 resources/images/general_live.png delete mode 100644 resources/images/general_open.png delete mode 100644 resources/images/general_preview.png delete mode 100644 resources/images/general_revert.png delete mode 100644 resources/images/song_author_edit.png delete mode 100644 resources/images/song_search_stop.png delete mode 100644 resources/images/system_help_contents.png delete mode 100644 resources/images/topic_add.png delete mode 100644 resources/images/topic_delete.png delete mode 100644 resources/images/topic_edit.png diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index ffec0e5b8..83404e6d2 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -33,6 +33,7 @@ from openlp.core.common.i18n import UiStrings, format_time, translate from openlp.core.common.settings import Settings from openlp.core.lib import SettingsTab, build_icon from openlp.core.ui.style import HAS_DARK_STYLE +from openlp.core.ui.icons import UiIcons from openlp.core.widgets.edits import PathEdit from openlp.core.widgets.enums import PathEditType @@ -131,7 +132,7 @@ class AdvancedTab(SettingsTab): self.new_data_directory_has_files_label.setWordWrap(True) self.data_directory_cancel_button = QtWidgets.QToolButton(self.data_directory_group_box) self.data_directory_cancel_button.setObjectName('data_directory_cancel_button') - self.data_directory_cancel_button.setIcon(build_icon(':/general/general_delete.png')) + self.data_directory_cancel_button.setIcon(UiIcons().delete) self.data_directory_copy_check_layout = QtWidgets.QHBoxLayout() self.data_directory_copy_check_layout.setObjectName('data_directory_copy_check_layout') self.data_directory_copy_check_box = QtWidgets.QCheckBox(self.data_directory_group_box) @@ -211,7 +212,7 @@ class AdvancedTab(SettingsTab): self.service_name_edit.setValidator(QtGui.QRegExpValidator(QtCore.QRegExp(r'[^/\\?*|<>\[\]":+]+'), self)) self.service_name_revert_button = QtWidgets.QToolButton(self.service_name_group_box) self.service_name_revert_button.setObjectName('service_name_revert_button') - self.service_name_revert_button.setIcon(build_icon(':/general/general_revert.png')) + self.service_name_revert_button.setIcon(UiIcons().undo) self.service_name_button_layout = QtWidgets.QHBoxLayout() self.service_name_button_layout.setObjectName('service_name_button_layout') self.service_name_button_layout.addWidget(self.service_name_edit) diff --git a/openlp/core/ui/exceptiondialog.py b/openlp/core/ui/exceptiondialog.py index 7b581bbc8..6a72093da 100644 --- a/openlp/core/ui/exceptiondialog.py +++ b/openlp/core/ui/exceptiondialog.py @@ -79,7 +79,7 @@ class Ui_ExceptionDialog(object): icon=UiIcons().save, click=self.on_save_report_button_clicked) self.attach_tile_button = create_button(exception_dialog, 'attach_tile_button', - icon=':/general/general_open.png', + icon=UiIcons().open, click=self.on_attach_file_button_clicked) self.button_box = create_button_box(exception_dialog, 'button_box', ['close'], [self.send_report_button, self.save_report_button, self.attach_tile_button]) diff --git a/openlp/core/widgets/wizard.py b/openlp/core/widgets/wizard.py index b3fb92299..a60627e34 100644 --- a/openlp/core/widgets/wizard.py +++ b/openlp/core/widgets/wizard.py @@ -106,8 +106,8 @@ class OpenLPWizard(QtWidgets.QWizard, RegistryProperties): self.with_progress_page = add_progress_page self.setFixedWidth(640) self.setObjectName(name) - self.open_icon = build_icon(':/general/general_open.png') - self.delete_icon = build_icon(':/general/general_delete.png') + self.open_icon = UiIcons().open + self.delete_icon = UiIcons().delete self.finish_button = self.button(QtWidgets.QWizard.FinishButton) self.cancel_button = self.button(QtWidgets.QWizard.CancelButton) self.setupUi(image) diff --git a/openlp/plugins/alerts/forms/alertdialog.py b/openlp/plugins/alerts/forms/alertdialog.py index 81fbd3a80..f2777440f 100644 --- a/openlp/plugins/alerts/forms/alertdialog.py +++ b/openlp/plugins/alerts/forms/alertdialog.py @@ -78,9 +78,8 @@ class Ui_AlertDialog(object): self.manage_button_layout.addWidget(self.delete_button) self.manage_button_layout.addStretch() self.alert_dialog_layout.addLayout(self.manage_button_layout, 1, 1) - display_icon = build_icon(':/general/general_live.png') - self.display_button = create_button(alert_dialog, 'display_button', icon=display_icon, enabled=False) - self.display_close_button = create_button(alert_dialog, 'display_close_button', icon=display_icon, + self.display_button = create_button(alert_dialog, 'display_button', icon=UiIcons().live, enabled=False) + self.display_close_button = create_button(alert_dialog, 'display_close_button', icon=UiIcons().live, enabled=False) self.button_box = create_button_box(alert_dialog, 'button_box', ['close'], [self.display_button, self.display_close_button]) diff --git a/openlp/plugins/custom/forms/editcustomslidedialog.py b/openlp/plugins/custom/forms/editcustomslidedialog.py index 9d7e50411..4256277f3 100644 --- a/openlp/plugins/custom/forms/editcustomslidedialog.py +++ b/openlp/plugins/custom/forms/editcustomslidedialog.py @@ -25,6 +25,7 @@ from PyQt5 import QtWidgets from openlp.core.common.i18n import UiStrings, translate from openlp.core.lib import build_icon from openlp.core.lib.ui import create_button, create_button_box +from openlp.core.ui.icons import UiIcons from openlp.core.widgets.edits import SpellTextEdit @@ -37,9 +38,8 @@ class Ui_CustomSlideEditDialog(object): self.slide_text_edit = SpellTextEdit(self) self.slide_text_edit.setObjectName('slide_text_edit') self.dialog_layout.addWidget(self.slide_text_edit) - self.split_button = create_button(custom_slide_edit_dialog, 'splitButton', icon=':/general/general_add.png') - self.insert_button = create_button(custom_slide_edit_dialog, 'insertButton', - icon=':/general/general_add.png') + self.split_button = create_button(custom_slide_edit_dialog, 'splitButton', icon=UiIcons().add) + self.insert_button = create_button(custom_slide_edit_dialog, 'insertButton', icon=UiIcons().add) self.button_box = create_button_box(custom_slide_edit_dialog, 'button_box', ['cancel', 'save'], [self.split_button, self.insert_button]) self.dialog_layout.addWidget(self.button_box) diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 95076221a..4cd0d97cd 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -31,6 +31,7 @@ from openlp.core.common.settings import Settings from openlp.core.lib import MediaManagerItem, ItemCapabilities, ServiceItemContext, PluginStatus, \ check_item_selected from openlp.core.lib.ui import create_widget_action +from openlp.core.ui.icons import UiIcons from openlp.plugins.custom.forms.editcustomform import EditCustomForm from openlp.plugins.custom.lib import CustomXMLParser, CustomXMLBuilder from openlp.plugins.custom.lib.db import CustomSlide @@ -88,7 +89,7 @@ class CustomMediaItem(MediaManagerItem): 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', + self.list_view, text=translate('OpenLP.MediaManagerItem', '&Clone'), icon=UiIcons().clone, triggers=self.on_clone_click) def config_update(self): diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index fa1dc6b91..0e8740803 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -33,6 +33,7 @@ from openlp.core.common.settings import Settings from openlp.core.lib import ItemCapabilities, MediaManagerItem, ServiceItemContext, StringContent, build_icon, \ check_item_selected, create_thumb, validate_thumb from openlp.core.lib.ui import create_widget_action, critical_error_message_box +from openlp.core.ui.icons import UiIcons from openlp.core.widgets.views import TreeWidgetWithDnD from openlp.plugins.images.forms import AddGroupForm, ChooseGroupForm from openlp.plugins.images.lib.db import ImageFilenames, ImageGroups @@ -127,21 +128,21 @@ class ImageMediaItem(MediaManagerItem): create_widget_action( self.list_view, text=self.plugin.get_string(StringContent.Edit)['title'], - icon=':/general/general_edit.png', + 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=':/general/general_preview.png', + 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=':/general/general_live.png', + icon=UiIcons().live, can_shortcuts=True, triggers=self.on_live_click) create_widget_action( @@ -149,14 +150,14 @@ class ImageMediaItem(MediaManagerItem): '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=':/general/general_add.png', + 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=':/general/general_add.png', + icon=UiIcons().add, triggers=self.on_add_edit_click) create_widget_action(self.list_view, separator=True) if self.has_delete_icon: @@ -164,7 +165,7 @@ class ImageMediaItem(MediaManagerItem): 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=':/general/general_delete.png', + 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. @@ -186,7 +187,7 @@ class ImageMediaItem(MediaManagerItem): create_widget_action( self.list_view, text=translate('ImagePlugin', 'Add new image(s)'), - icon=':/general/general_open.png', triggers=self.on_file_click) + 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=':/slides/slide_theme.png', @@ -371,7 +372,7 @@ class ImageMediaItem(MediaManagerItem): file_name = image.file_path.name thumbnail_path = self.generate_thumbnail_path(image) if not image.file_path.exists(): - icon = build_icon(':/general/general_delete.png') + icon = UiIcons().delete else: if validate_thumb(image.file_path, thumbnail_path): icon = build_icon(thumbnail_path) diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 0ed7643bc..4acbce20a 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -35,6 +35,7 @@ from openlp.core.lib import ItemCapabilities, MediaManagerItem, MediaType, Servi build_icon, check_item_selected from openlp.core.lib.ui import create_widget_action, critical_error_message_box, create_horizontal_adjusting_combo_box from openlp.core.ui import DisplayControllerType +from openlp.core.ui.icons import UiIcons from openlp.core.ui.media import get_media_players, set_media_players, parse_optical_path, format_milliseconds from openlp.core.ui.media.vlcplayer import get_vlc @@ -70,7 +71,7 @@ class MediaMediaItem(MediaManagerItem, RegistryProperties): self.optical_icon = build_icon(':/media/media_optical.png') self.video_icon = build_icon(':/media/media_video.png') self.audio_icon = build_icon(':/media/media_audio.png') - self.error_icon = build_icon(':/general/general_delete.png') + self.error_icon = UiIcons().delete def setup_item(self): """ diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index c0915378f..09cd45537 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -30,6 +30,7 @@ from openlp.core.common.settings import Settings from openlp.core.lib import MediaManagerItem, ItemCapabilities, ServiceItemContext, \ build_icon, check_item_selected, create_thumb, validate_thumb from openlp.core.lib.ui import critical_error_message_box, create_horizontal_adjusting_combo_box +from openlp.core.ui.icons import UiIcons from openlp.plugins.presentations.lib import MessageListener from openlp.plugins.presentations.lib.pdfcontroller import PDF_CONTROLLER_FILETYPES @@ -196,7 +197,7 @@ class PresentationMediaItem(MediaManagerItem): preview_path = doc.get_thumbnail_path(1, True) doc.close_presentation() if not (preview_path and preview_path.exists()): - icon = build_icon(':/general/general_delete.png') + icon = UiIcons().delete else: if validate_thumb(preview_path, thumbnail_path): icon = build_icon(thumbnail_path) @@ -204,7 +205,7 @@ class PresentationMediaItem(MediaManagerItem): icon = create_thumb(preview_path, thumbnail_path) else: if initial_load: - icon = build_icon(':/general/general_delete.png') + icon = UiIcons().delete else: critical_error_message_box(UiStrings().UnsupportedFile, translate('PresentationPlugin.MediaItem', diff --git a/openlp/plugins/songs/forms/songmaintenancedialog.py b/openlp/plugins/songs/forms/songmaintenancedialog.py index a8da63723..1dbebc1d5 100644 --- a/openlp/plugins/songs/forms/songmaintenancedialog.py +++ b/openlp/plugins/songs/forms/songmaintenancedialog.py @@ -25,6 +25,7 @@ from PyQt5 import QtCore, QtWidgets from openlp.core.common.i18n import UiStrings from openlp.core.lib import build_icon from openlp.core.lib.ui import create_button_box +from openlp.core.ui.icons import UiIcons from openlp.plugins.songs.lib.ui import SongStrings @@ -67,15 +68,15 @@ class Ui_SongMaintenanceDialog(object): self.authors_buttons_layout.setObjectName('authors_buttons_layout') self.authors_buttons_layout.addStretch() self.add_author_button = QtWidgets.QPushButton(self.authors_page) - self.add_author_button.setIcon(build_icon(':/songs/author_add.png')) + self.add_author_button.setIcon(UiIcons().add) self.add_author_button.setObjectName('add_author_button') self.authors_buttons_layout.addWidget(self.add_author_button) self.edit_author_button = QtWidgets.QPushButton(self.authors_page) - self.edit_author_button.setIcon(build_icon(':/songs/author_edit.png')) + self.edit_author_button.setIcon(UiIcons().edit) self.edit_author_button.setObjectName('edit_author_button') self.authors_buttons_layout.addWidget(self.edit_author_button) self.delete_author_button = QtWidgets.QPushButton(self.authors_page) - self.delete_author_button.setIcon(build_icon(':/songs/author_delete.png')) + self.delete_author_button.setIcon(UiIcons().delete) self.delete_author_button.setObjectName('delete_author_button') self.authors_buttons_layout.addWidget(self.delete_author_button) self.authors_layout.addLayout(self.authors_buttons_layout) @@ -92,15 +93,15 @@ class Ui_SongMaintenanceDialog(object): self.topics_buttons_layout.setObjectName('topicsButtonLayout') self.topics_buttons_layout.addStretch() self.add_topic_button = QtWidgets.QPushButton(self.topics_page) - self.add_topic_button.setIcon(build_icon(':/songs/topic_add.png')) + self.add_topic_button.setIcon(UiIcons().add) self.add_topic_button.setObjectName('add_topic_button') self.topics_buttons_layout.addWidget(self.add_topic_button) self.edit_topic_button = QtWidgets.QPushButton(self.topics_page) - self.edit_topic_button.setIcon(build_icon(':/songs/topic_edit.png')) + self.edit_topic_button.setIcon(UiIcons().edit) self.edit_topic_button.setObjectName('edit_topic_button') self.topics_buttons_layout.addWidget(self.edit_topic_button) self.delete_topic_button = QtWidgets.QPushButton(self.topics_page) - self.delete_topic_button.setIcon(build_icon(':/songs/topic_delete.png')) + self.delete_topic_button.setIcon(UiIcons().delete) self.delete_topic_button.setObjectName('delete_topic_button') self.topics_buttons_layout.addWidget(self.delete_topic_button) self.topics_layout.addLayout(self.topics_buttons_layout) @@ -117,15 +118,15 @@ class Ui_SongMaintenanceDialog(object): self.books_buttons_layout.setObjectName('booksButtonLayout') self.books_buttons_layout.addStretch() self.add_book_button = QtWidgets.QPushButton(self.books_page) - self.add_book_button.setIcon(build_icon(':/songs/book_add.png')) + self.add_book_button.setIcon(UiIcons().add) self.add_book_button.setObjectName('add_book_button') self.books_buttons_layout.addWidget(self.add_book_button) self.edit_book_button = QtWidgets.QPushButton(self.books_page) - self.edit_book_button.setIcon(build_icon(':/songs/book_edit.png')) + self.edit_book_button.setIcon(UiIcons().edit) self.edit_book_button.setObjectName('edit_book_button') self.books_buttons_layout.addWidget(self.edit_book_button) self.delete_book_button = QtWidgets.QPushButton(self.books_page) - self.delete_book_button.setIcon(build_icon(':/songs/book_delete.png')) + self.delete_book_button.setIcon(UiIcons().delete) self.delete_book_button.setObjectName('delete_book_button') self.books_buttons_layout.addWidget(self.delete_book_button) self.books_layout.addLayout(self.books_buttons_layout) diff --git a/openlp/plugins/songs/forms/songreviewwidget.py b/openlp/plugins/songs/forms/songreviewwidget.py index 9d98af6e9..904ac0307 100644 --- a/openlp/plugins/songs/forms/songreviewwidget.py +++ b/openlp/plugins/songs/forms/songreviewwidget.py @@ -24,7 +24,7 @@ A widget representing a song in the duplicate song removal wizard review page. """ from PyQt5 import QtCore, QtWidgets -from openlp.core.lib import build_icon +from openlp.core.ui.icons import UiIcons from openlp.plugins.songs.lib import VerseType from openlp.plugins.songs.lib.openlyricsxml import SongXML @@ -182,7 +182,7 @@ class SongReviewWidget(QtWidgets.QWidget): self.song_vertical_layout.addWidget(self.song_group_box) self.song_remove_button = QtWidgets.QPushButton(self) self.song_remove_button.setObjectName('song_remove_button') - self.song_remove_button.setIcon(build_icon(':/general/general_delete.png')) + self.song_remove_button.setIcon(UiIcons().delete) self.song_remove_button.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) self.song_vertical_layout.addWidget(self.song_remove_button, alignment=QtCore.Qt.AlignHCenter) diff --git a/openlp/plugins/songs/forms/songselectdialog.py b/openlp/plugins/songs/forms/songselectdialog.py index 66bb9b29f..e3d6ab654 100644 --- a/openlp/plugins/songs/forms/songselectdialog.py +++ b/openlp/plugins/songs/forms/songselectdialog.py @@ -28,6 +28,7 @@ from PyQt5 import QtCore, QtWidgets from openlp.core.common.i18n import translate from openlp.core.lib import build_icon from openlp.core.ui import SingleColumnTableWidget +from openlp.core.ui.icons import UiIcons from openlp.core.widgets.edits import HistoryComboBox @@ -90,7 +91,7 @@ class Ui_SongSelectDialog(object): self.login_progress_bar.setVisible(False) self.login_button_layout.addWidget(self.login_progress_bar) self.login_button = QtWidgets.QPushButton(self.login_page) - self.login_button.setIcon(build_icon(':/songs/song_author_edit.png')) + self.login_button.setIcon(UiIcons().edit) self.login_button.setObjectName('login_button') self.login_button_layout.addWidget(self.login_button) self.login_layout.setLayout(4, QtWidgets.QFormLayout.SpanningRole, self.login_button_layout) @@ -124,7 +125,7 @@ class Ui_SongSelectDialog(object): self.search_progress_bar.setValue(0) self.search_progress_layout.addWidget(self.search_progress_bar) self.stop_button = QtWidgets.QPushButton(self.search_page) - self.stop_button.setIcon(build_icon(':/songs/song_search_stop.png')) + self.stop_button.setIcon(UiIcons().stop) self.stop_button.setObjectName('stop_button') self.search_progress_layout.addWidget(self.stop_button) self.search_layout.addLayout(self.search_progress_layout) @@ -143,7 +144,7 @@ class Ui_SongSelectDialog(object): self.view_layout.setSpacing(8) self.view_layout.setObjectName('view_layout') self.logout_button = QtWidgets.QPushButton(self.search_page) - self.logout_button.setIcon(build_icon(':/songs/song_author_edit.png')) + self.logout_button.setIcon(UiIcons().edit) self.view_layout.addWidget(self.logout_button) self.view_spacer = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.view_layout.addItem(self.view_spacer) diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 9cf86244a..0e5466c18 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -112,7 +112,7 @@ class SongMediaItem(MediaManagerItem): 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', + self.list_view, text=translate('OpenLP.MediaManagerItem', '&Clone'), icon=UiIcons().clone, triggers=self.on_clone_click) def on_focus(self): diff --git a/resources/images/author_add.png b/resources/images/author_add.png deleted file mode 100644 index a12a384672d5a059f4b8bbbf090e185ac87c2bd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 836 zcmV-K1H1f*P)Mc{K~#9!g^^!KQ(+j!pYQB!JMO=3IT>y$h=>?Wy+|kt?Ixl? z!n%>V3G23QL`uqa5fqqGL?juJL8erqSX>+WM`ZEd(PJprv!oi z;Jf+W=Xt;9{a#Q?_dR%mliAMfuT`T}zO44FDLg{uPHlhl9h|qnwF?bX4KyyqX~T2_ zwY%&BZsXimoxvUuLX^;>o@aPwaHR_rA{IBgz_L684Q>*Ny6g(tp8o z1OaFm?2Q0|0N15Jg>zf#_(D+nfdCYK0Nj2JWSGWdQ2}vA+`e#b0wXbqn3b{tJV{2y z{hIPpjWJ^|xEW^5W~2A)wN_j5A9T2a>*jpL#KjVo#$YfoXQ~}gYE0;8dul@xc6V5r_>0Kc90np1u@HQJJTH*MVq&9} z$4}6lf+E6Y{#NBH#aWyRFk7!tuX3=a&%ZuPEtkmQEb?+b?lUMj>9UY&<~ z+`aN&gXUo@GDa&pUiU(!)5beHI~CZ$;b3?lKQ#Ys6rcOLG3S}&kc50DtwT?H2Sx|`P;;+G9DjAUj=bsa zUn{Z~m{Rqs?MMtkA|W6lh}aBND1O}d1*a7_kHqXzD-@M)vD8!oJtXiMucc2!v9|NEx7uB)cytDS%KKql}#4_ O0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L02{9W02{9XUK)`c00007bV*G`2iOcA z5F{5Vl0IGl00P=cL_t(I%Y~6^Xj69>#()2FlIG;r#&)*NB3+tl({;EyFLMa<_Hk=eHA6LkG!?)OYZX|mK;YQ_kl(dcG&bzfED)H;D80(5(NH$WfBA|;I~1m0$TtC@6d5Thy4a@&CLX~%CP=x(B2CG zI0qkQ;11vd)I9j?tCya)PS`x(BsR~Jm7MPYw;3+lz-5E51I!AvcRgsB% ztMqI|Wp$Z``b$OA(LE{zbnr{idTfre*E=fO>=TA(!B8rmud}=c!loRcuyn>xa~Cc3 zrm_;L^jO2A0<+7VRQ&>4&->)>;}&zTeWtCXKfjDb*DZHlf2t8^d=1Aw zxM@5MwHb#Sme)q0J_7QOUlz>Tvvrj*{!fST{9%`|ZN=lqT1$tX1Va2eQe;Hyi4DeUP05`1|UW-HE|SCOh0mtS5N7vE_Py zZnynJ>R;ob>Pm+S<*93bN&bN zzp*|}{r+>NZr6zikFK;dnd;Zo@BCuXye6l^0zyz#Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L02{9W02{9XUK)`c00007bV*G`2iOcA z5F{<{p6BcU00Q+%L_t(I%axI9NK*k6$NzV`d)(`$tLZj%nY#6GrC1tHO=blaMcIRp z!~~@*42ww1EHto;=u06{WxKYPUI8JuXoaGh_Vc^2Ah@pLjKo$a?Jis@WXpJbwv3``IP-F#o}A)BkBm^I+FyU?THB!KyIzlC?20 z;Ce}6GaBF=sZ8SW>B6kD-EcdsNJ!S<=#hMINC66u9|}Wj3jkpDjZ$y=i-(zn$K`;> zX<>D-W2Y|OWyCGtOgNFsV&B&7;POS_kUXUC+hdvGW(6PLzAhdg?quA?0SH}piN+ry z-`h{D*sF6PVj1_#?}3inZuGBqOi8Ub~H3n__C zhsD^JVm4YDCPoG^(9?nD#`mJxBW~M~$vcpdnyCs2JS>w^iuPt2Z4(lRDLsxQn_+Wr z=n6_WSt)UJgbF3Tu-YA1qh6ME>Hec6!|U<_GHrj_Ic;22fmkE}N%FxX$04J7a6Tsp zly3?fB8!e(q+UU|x&{Ha6T{u#G1Sw;7fYne+2EDeIR5^A=>XuK^1yDlBlmO(#vC$) z#Fs*)Eg%RVCBb+&@Q4H9@m9h-O+gm10oHL7gcL33u8ZBw0N~ne4&p;&69K-Q(QZ6w zopf`02L^}g8ycGKj9Z6MZEN0N;Jh;0f**O200000 LNkvXXu0mjf=h2y| diff --git a/resources/images/book_add.png b/resources/images/book_add.png deleted file mode 100644 index a2d5c841335d19c0f64b9b6aafdc275dd09a2bb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 670 zcmV;P0%84$P)Xv3uhk}A4@St@FDuqBY z@z6!Pbq@8?B?>%skB*%Tx^+@hT?sgPKY=)=c>=-o~w@3}lakcL_nQWH%g^d^b{^F3LLZ7_cKfv7w z52+_M2aGKZGIHhyqg|uCX?{g}>&xrnsko!Cetz8gu-wAU!7G%~Jv5xZ#X(6^j1AWA z;nx%|tTUILWu$$8_3T@scm$w8fUV4YA&MC(G z#<6;j^kcPsYU^^SqT?9pIB4UPpAPMZe0*2Ys82BQb%N8+1@G2oxHo%|OEZGa^yXSJ zpi4+8@m!aD>=2aCzUR`pGf3bcBNM`239=!)_W+MaiGckh%5m&dD@U;;=&&o4PtTWW z!reZu&5!czSB7wDXw?jx$BG1ll#X3cbp@INS&ntnyE={K2v}KO_zsW=IDk@;hQOnm zuLPbpXibF>0@w4Y4OHfPG=%}xgfIj`U^Hkz0A9U-a$Qn%_U#~4E2BPsbh7=c@FfmD)we&2q`e+T~F>(&Mk4*5c! zLh*ovx=UmtklEeYBHG(#Be%`x)o=Vyu@ti(MLz(31JF;k9rOM+qW}N^07*qoM6N<$ Ef@xJQ3IG5A diff --git a/resources/images/book_delete.png b/resources/images/book_delete.png deleted file mode 100644 index 293cf966689f34c9266bb2f94fba82593622d570..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 744 zcmVP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00FxI00FxJI_%@(00007bV*G`2iXS} z5*{KTG&(T=00L-9L_t(I%Y~3jNK{c6$A9PCbMBoxT9YrrN1{ETB2g?zqZb%P5w$5o z)Eo;>|C_~BwFBRyfNhq_qNeUre##Y}(x#EYg~#Kyw-p~6O>T^M5!Lfo!g zRl6e=jgT&=CRo|TblPV_?Y022x5KZIkT=NVv7UE~q675W)};0^@@Z46kdz8hCCpPEcAi zFDHjA*Wq`h5P-oq1`ycx%oAq`w54zZ0fJ7Z0KgIk-v|r_t({DPQVMAdu4D5zgfL(P z`cE5J%EI$vC}sU!@H4A31qg|k@JJ-5`5!`9vjlG@C&r0SMTvZk@+v&?&*o%0MJyiw a2=EQH($_h6#%oRh0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00FxI00FxJI_%@(00007bV*G`2iXS} z5*-l3&Ny-a00M|fL_t(I%YD;dXw6|9$MN^``~9BZ`Lp57cEq+unzDvTT9Y^;;(gbtI988e+@|IRr(|9+2)t<`CV@8$D+ zo>!lG`U<5K!oBoLrs+Qr3WfONSOiOU^RLMn?W5ZNoIv`#r)x7*v6ukzpY7VR(sT6q zS^hUxJj{Zh+i0xtlJ&y^Lw`I02+>-wa#cxi*hk#G0%ySD zSZHHwxsgyY7DLxGETs{NLHZ0EW8-n=r+lSu{Qz5Q-Z1$4B`pn`X@0l!^UeDE-x2{U zj;`yNQZgQcnRXqGFy}UPa^XflpL#}Vs&mru!$!L|@CzUTP)cEF8a6p`9Erox!Zvz( zhq!&OlcMY}z1=|`rj#O$9;N}H&~*({O6+4j6fW#zxy#Gux;HFz`N*<4Xw7(mF2IoA zrvn;b7&=b7NuGMo!Td+;I}s!r7-3C`hmP!vH~}F9(zGQ3G!2_HNp;w%%5A3cRw|tz zhB;ZG*x)I~+ik}J1Yjlu3@LG?rEw{*l9z8|TzxRY4o{fu+{K*lFC)dNu#^G>rfE(G zq;7Deup6JRgWAh!`7O zXwt{?dAGl6%2m-=T=7IF@mAc0Ki`$Q0#aP(lUSm0000bWclW8C_=Zb~GH-P80Ef&5mFX!vysop{R z^^U%jo0#tI?95(hZAGzA0EpnaE`DroVs&jTU#XP)J}oVM`3G>LtE;1_srmD*?ru9` zS=ig%!Pw|10AONr5)IibwANTzT{+m^{dMQ#!uv%4U;yap=}BeMnZ;}E?Y8GtuwU9o z+4DkYp68)l+K2CXxO(}Dold2vd!O{mFb6DUe@jbq%CGte0)Uv|`^Ny^_fW1>K*V4s zG&MG6^~S*vfL9g(L}Rf5As9Q`Kf%l(7VzsF6pKY@ZNLnG81XYP#NzRLAs{07;>P+q z-o1GXtu<=38no6S;N|3tuy0^6@^l2Tc+3s2pd48U{2)t25JEr*aiX-245d@~w#z|0WL zD3>eYiHSr4$z%e|d?Ld@7%m8WtegilFP(74yjQR5yu~*prBQPW_00000NkvXXu0mjfdy-ED diff --git a/resources/images/general_clone.png b/resources/images/general_clone.png deleted file mode 100644 index db1d9fbafc2f08e1beef834d7128ada961f53ea5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 527 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 ZWKf+G*6IC7sR9^244$rjF6*2UngHQAxS;?5 diff --git a/resources/images/general_revert.png b/resources/images/general_revert.png deleted file mode 100644 index 47d7415e279876d68e1fa4db643045c572be29fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 737 zcmV<70v`Q|P)xv}~cde{Q?GcXw{PyWh_4=F~7c@Zs=-^ZopOaLy3{5FjgoAdQm# ze}r=hD+N-U%?69r3Y*;y$HD>@oK84hF1XxoxG742@^}PjhJheiAxO7a|0#%tJyDp5 zAbpj<%db&h_8Y_mQKNs^|hhcwz5}xr(U`$s8WTy8PI(;Awd>=Q0+! zAqm=5i7*a!3uAH|2iomGd(8=$TMrUR4lF&V(Oi)d7Nm*pp51O~yu6jylqK;^*Y`kM zDM8bXZO|$+;c?j!3WdP)Jo?%jG2EJmfi4Y - song_search_stop.png song_search_all.png song_search_author.png song_search_ccli.png song_search_lyrics.png song_search_title.png song_search_topic.png - topic_edit.png - author_add.png - author_delete.png - book_add.png - topic_add.png - book_delete.png - book_edit.png - author_edit.png - topic_delete.png book_maintenance.png author_maintenance.png topic_maintenance.png - song_author_edit.png image_group.png @@ -40,20 +29,13 @@ plugin_songusage.png - general_preview.png - general_live.png - general_add.png general_delete.png - general_edit.png general_import.png general_zoom_out.png general_zoom_in.png general_zoom_original.png general_print.png - general_open.png general_email.png - general_revert.png - general_clone.png general_find.png general_back.png @@ -91,7 +73,6 @@ system_close.png clear_shortcut.png system_about.png - system_help_contents.png system_mediamanager.png system_volunteer.png system_servicemanager.png diff --git a/resources/images/song_author_edit.png b/resources/images/song_author_edit.png deleted file mode 100644 index b50ec42a5e86f71478526a925209af02c6dcaa7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 636 zcmV-?0)zdDP)ioX&l9Qg5)@#=1TUz0#I#>Q1{5;Lx$e~Y#YI3)8HD<0{QUDSN(~~VY%#_ka4v$(pV;jV zZemQHIWENnlQeyd@u3fT3ZYmz(SzqVG|c5sBvYC8;yxO zSMFq|3m+?&Il=G#E*49tb+=foJF~O)o2zJAzY&PF{ zcQn;xSqPzlrXf8Sr($<54-e-N;#i|37$JfeySwr|H*TiPjViKU2hYP-r|-JdeIIGH zvULAmHS=RRl4$?nxsLQ$&+S_&y<9>lNLMW?6?D~xf(rKqNMIPx zd#_(jYV!-|zE9h^AzFuq)IAV+w4c8~=fz8y0^G?-dasQn115Tdn&%~|A0}vNX+xMM zI1WZ8gLU}|!H6++cMEgqtE(6)(Z>6UZ6-?KfMBzVR#`_c{$geH4(`G{Mt4TRS=_}1 z)}K5ku0+iP0~os4W}*Zhh?V?Xnv7=Z$s~F<8$KdoN!Mj#`V-#t6m{EXEfF$}36PsM z{9MLeU!(oOL(IN@{(Swi-DdxO(vP0vC*p_z(nBUnAYrSfv!k{YxOn;`zVFlX@->=i zA^`zZ^pJ`6U`mLC?_!J(Hk0VGLEG0J+JjFDxRwQa41O0`O2Ldx?YPU)!&1&fixf!S zn2aCUOCnPtj4HxY0=|T$7Qx3gSv%o`aN{OMl2=M{z*k99Nn-Ihx?xcFJjw_rSIV_h z4e)M3BpHVn>L*IXElUe#_ZOpZD(l(H1DJfC`I=!Gu9V!r)}0rt07# zi-W<$82{6Jl0F5e$N49I?XE4}pO7?(2G18Ra__-o{)ZRE6`oHo zjsd>~>vPr5^W9v#a)GdKl+4Ht8ezn4U}>YJ6W=2M!k~d_)cXM>Ek5RY`>!sScgUJN z>Fz!*59Js=nI#A<*^EnPN-{OQ!d$5iz|ZpPGJwNAq9DL^9C96+ht~&LSoL`Nro^L{ zOMLy|^W@eL8KW>tqLkvWAPR9^m$5U)$Y>`Hx)`m{aro7T3deJrOCvqayHpwg$v&*L z$hg7lnJT?qn%N~kJ`FW5q%fQZ0ZZ#atAR`qfQ=hC1d+?L_hkT#bm-}l+&p(QUT2N9 zT0~0kHBg5I4j`pVCZ*ZW_}M(upSE~6?=_zZAyC>R2%NpWHJ#}cZ90v^z!Agb+bY?3 z9svT-34&&=Ts}`n+R)}iuVl6q#&1pmmdIK_pmoAGP_85$2Q$X}ok@q4iY28ruGkX@ zEEc7b8c2y_Eoq}^(}=(dXqOVgHU}!Hfh%2nzmAMgfDQw93WAMom@L|s;7>N;FCZNJ z9iN@uMk@rADk@$fif7@$sBjMmzHQa2c-xzlH#S-LvPhemc@D7~2Gl+8JHRiy*|}Cj SeHG>a0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L05@C!05@C#%g3a-00007bV*G`2iXS} z5)CEazwQ7400VDHL_t(I%T1C?Oq^95#n1iUJKx8=Dbt~J1`0xp2$+~Lg+e2y;-e%k znwYl6G*J|dw#Jpl#6**Jp)8C|6Be47E^J-+NF^~%p|+t+N&?K3#1_*kT3(fh6gn_7 z4BzA4>!Ky?S)Ikn@0`V9EeBiSm=;)pz&1E$`wKA3-C*m%U585I{^x{A;Zb*7E>vY| z6Xj2DOZ}Nzm|mU!r29;F??+v)gU=>saQ^Bq2>85AS-_SmZ}r~Jn%?-6;iLXCYP^ZR zcHQ0X)E%yVb?d2yQ{Jp68_lrHp|jz$lb3%Qx=!tHy@1;T8T|T9zaBhyotL(IzNHF# zPgdmIj9%Bt{0+87YZ#jEg@(e+yPY4x;ed1_TK(#;_^&JKK~T^RK$d6DXK083V}=k~aL#I`x8Y{^Urea`&3)@Y+J?g4 z_-=GA0pXqBg508`Ze1n#Acosoa^wC8HFDyL5o67wQqzQH8FK}VJ#hdr7`Ntn%=7*e zyT9xQt4A01_Wc2Eagwf9*?*|BYM*gB=nE>XG!;}HD;Z0;Y?wnif)xKQqD z34XtE1rML`K*!#Bmq(*fIhszLZf$PvjKwSE_IONoyu7~=z=YQ`Q~+E6u-y$*RKy=X@{w{5z~G!0Nhx`0X>>;-k@z7T zF5WpcHQhZjGJMiBO<0yy0AK-d0BHUQzyrXiwGI+dB$vx;(=dlhA|(UKWb%@fG9;zk d%*zLh^#4=LdgeE|-46f&002ovPDHLkV1ms(&fWk3 diff --git a/resources/images/topic_delete.png b/resources/images/topic_delete.png deleted file mode 100644 index 38a2ad5b5edee7122e5f290a347d97de721feccd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1038 zcmV+p1o8WcP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L05@C!05@C#%g3a-00007bV*G`2iXS} z5)>DVXcm|N00WLmL_t(I%T113Oq*o@hTre|{`PN6PirYcIggF7j1jGYt&kDj76yhz z6EmYRF=HNKb0&+27*B~8W*2135)+LVx_Ciivc+++Yy&p73JGX!M3J#zI29-d0b6?d z`~Tnfc`-4(SMSA}=Y2@`pRN7eP+%WJ0{!_#@LiG>Q~ zMCl<%t?QLo@1#;XGTY67CoO<@XLI-_`|05@7QzV(-M){x2MJc+S$fq`sT@un$T!rC zLEMpLVjr4EuFj=YeHVFJ-OA;gfu5y?lCF45ks!gd^&qOGT$6$ttl8B-@2ghEDOIRq zrlju5U)a+d#dczQ-O4J#df8x5Vd)Q4{rDBckLUKhHlS33XC?n0m)1jV0O$t;ZGGj^ zb+qWWWii=qCrcYC@FXE?!+M*&5Vr(C4GqHkYYoVYPrZtTFi`XP63iY+IdWnvCXNQ5 zEg!I(oN`TH603^tM^wvpVe|kRYi?*>B5(XbVDD__j#$p6k)_Y82jViBf!p_dE+hS^ZEGC;a|RO zJb19fUtG?Miv7H;y|os=lvTBmjFy$#d%9ix{zAO|+9?QTU?cH2z(g{wr=VCVnOm3< z01N=g8CjH;7XN>^(|`dmGsY~Ob5>B`D+>eyKe$}(J+rfO7e+@%E~%;tP17;}GypmP z$#wut0Bll92c^`TOs1r2R);-a&tNDN8sMBeIp^DZ{-2Tj7rAtgxH|zI+yDRo07*qo IM6N<$g3FNLR{#J2 diff --git a/resources/images/topic_edit.png b/resources/images/topic_edit.png deleted file mode 100644 index 03b8167d0ffadaafea18f3f3547306eea7e03153..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1024 zcmV+b1poVqP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L05@C!05@C#%g3a-00007bV*G`2iXS} z5*Y!_65WIV00V$YL_t(I%UzFcOqFE-hOg&&U(PEB4ip3)KBY#A2#jTjkf3#ze7R{E z;#|2Xe?(<#&8=n5K4vs)jONx>i>d45Pua#6F-^)yYO@i}rbU1sd`K!1aDa2p`=0ka zPe07fb#M1}|G2mNxWsCcY8vI|RW+$vQETxr*qLmim zU@ROObq>5&+S~m8uEqSUNd>0SZJhq=XD0fC^quHs^v|GC){=9~cduFHnlU#bqQcct zTIy;i&tlhTx?M+zZ@ zmRg8)W>8h=LV1-Ymiqk|6K~8+U;3uhbP_^HuSP3i!IQffb6K=Ch9O0qHV_DrAslw* zual3xaE2RGeRLeG(Ko%Xyu80HJZ4&p77~Syg0$l%y&jF3D1^r}wP_f_qcv~lmeO`~ zilNK%eEgc1r0A(bUv299?AOU!L||)xh3ioU`y^gWZ}sO3XA-hyks%Ewq>wwTM4XFx z?B3f=iQneY^2N|UW8vJ>)x|STG^Ru$yLjmM1+;C*n5)(NMcJJ9u;;LM##F0PU0EH; zpr+*_d1B**i?sZ0wTXXT0{l9ri>2R2sVizPAe{WSCR1ISl<>b@%s5qLZ!$c}w3 zBO}*%YI8AX6X)s@{Tx>yT^p79TLEJGhG&`Rhk~~!@uX-O!%_2ptH8n1k)Dq3rF3-8 z@z&E0f%UJG7Z?!3+z`vf6%G4Yv!xXQP+3z&@RFD7W7AC8{mlMYr~7^%;<+}-6IBuF z>*F~(k=c@*CqB|jODCjMdh<`5zw0GTfZ)jzN}nI+nLRtvCs*s~>0|8q@NV)mZMIfB zoDVnh%i%B2M%^g)q@`jSCT{x%&dnXVMR2EjI*;i2xj|anzh>|DYs4jQ(MHab(Yj5w zMZj>pwM2yNh`!x7Z->lGKMnP@#F?|C$B%GecP>j(w=o)Au0s=-72pCmZiJkiEXK#L z{(l<-h%YNn)160J^w8i1U0Yi-+|<;h%gfik3#40?l@9m-58R@^^MVIR0DMx)B&C#G uRalr+u(BYttLxhV+qMA~f%*R&0@S~%CVK9AjxSvR0000