openlp/openlp/plugins/songs/forms/songselectdialog.py

164 lines
9.1 KiB
Python

# -*- coding: utf-8 -*-
##########################################################################
# OpenLP - Open Source Lyrics Projection #
# ---------------------------------------------------------------------- #
# Copyright (c) 2008-2021 OpenLP Developers #
# ---------------------------------------------------------------------- #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 3 of the License, or #
# (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
##########################################################################
"""
The :mod:`~openlp.plugins.songs.forms.songselectdialog` module contains the user interface code for the dialog
"""
from PyQt5 import QtCore, QtWidgets
from openlp.core.common.i18n import translate
from openlp.core.ui import SingleColumnTableWidget
from openlp.core.ui.icons import UiIcons
from openlp.plugins.songs.forms.webengine import WebEngineView
class Ui_SongSelectDialog(object):
"""
The actual Qt components that make up the dialog.
"""
def setup_ui(self, songselect_dialog):
songselect_dialog.setObjectName('songselect_dialog')
songselect_dialog.resize(800, 600)
self.songselect_layout = QtWidgets.QVBoxLayout(songselect_dialog)
self.songselect_layout.setSpacing(8)
self.songselect_layout.setContentsMargins(8, 8, 8, 8)
self.songselect_layout.setObjectName('songselect_layout')
self.stacked_widget = QtWidgets.QStackedWidget(songselect_dialog)
self.stacked_widget.setObjectName('stacked_widget')
# Webview page
self.webview_page = QtWidgets.QWidget()
self.webview_page.setObjectName('webview_page')
self.webview_layout = QtWidgets.QGridLayout(self.webview_page)
self.webview_layout.setObjectName('webview_layout')
self.webview_layout.setContentsMargins(0, 0, 0, 0)
self.webview = WebEngineView(self)
self.webview_layout.addWidget(self.webview, 1, 0, 3, 1)
self.stacked_widget.addWidget(self.webview_page)
# Song page
self.song_page = QtWidgets.QWidget()
self.song_page.setObjectName('song_page')
self.song_layout = QtWidgets.QGridLayout(self.song_page)
self.song_layout.setContentsMargins(8, 8, 8, 8)
self.song_layout.setSpacing(8)
self.song_layout.setObjectName('song_layout')
self.title_label = QtWidgets.QLabel(self.song_page)
self.title_label.setObjectName('title_label')
self.song_layout.addWidget(self.title_label, 0, 0, 1, 1)
self.title_edit = QtWidgets.QLineEdit(self.song_page)
self.title_edit.setReadOnly(True)
self.title_edit.setObjectName('title_edit')
self.song_layout.addWidget(self.title_edit, 0, 1, 1, 1)
self.authors_label = QtWidgets.QLabel(self.song_page)
self.authors_label.setObjectName('authors_label')
self.song_layout.addWidget(self.authors_label, 0, 2, 1, 1)
self.author_list_widget = QtWidgets.QListWidget(self.song_page)
self.author_list_widget.setObjectName('author_list_widget')
self.song_layout.addWidget(self.author_list_widget, 0, 3, 3, 1)
self.copyright_label = QtWidgets.QLabel(self.song_page)
self.copyright_label.setObjectName('copyright_label')
self.song_layout.addWidget(self.copyright_label, 1, 0, 1, 1)
self.copyright_edit = QtWidgets.QLineEdit(self.song_page)
self.copyright_edit.setReadOnly(True)
self.copyright_edit.setObjectName('copyright_edit')
self.song_layout.addWidget(self.copyright_edit, 1, 1, 1, 1)
self.ccli_label = QtWidgets.QLabel(self.song_page)
self.ccli_label.setObjectName('ccli_label')
self.song_layout.addWidget(self.ccli_label, 2, 0, 1, 1)
self.ccli_edit = QtWidgets.QLineEdit(self.song_page)
self.ccli_edit.setReadOnly(True)
self.ccli_edit.setObjectName('ccli_edit')
self.song_layout.addWidget(self.ccli_edit, 2, 1, 1, 1)
self.lyrics_label = QtWidgets.QLabel(self.song_page)
self.lyrics_label.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
self.lyrics_label.setObjectName('lyrics_label')
self.song_layout.addWidget(self.lyrics_label, 3, 0, 1, 1)
self.lyrics_table_widget = SingleColumnTableWidget(self.song_page)
self.lyrics_table_widget.setObjectName('lyrics_table_widget')
self.lyrics_table_widget.setRowCount(0)
self.song_layout.addWidget(self.lyrics_table_widget, 3, 1, 1, 3)
self.title_label.setBuddy(self.title_edit)
self.authors_label.setBuddy(self.author_list_widget)
self.copyright_label.setBuddy(self.copyright_edit)
self.ccli_label.setBuddy(self.ccli_edit)
self.lyrics_label.setBuddy(self.lyrics_table_widget)
self.stacked_widget.addWidget(self.song_page)
# The top panel
self.top_button_layout = QtWidgets.QGridLayout()
self.top_button_layout.setContentsMargins(0, 0, 0, 0)
self.top_button_layout.setSpacing(8)
self.top_button_layout.setObjectName('top_button_layout')
self.back_button = QtWidgets.QPushButton(songselect_dialog)
self.back_button.setIcon(UiIcons().back)
self.back_button.setObjectName('back_button')
self.top_button_layout.addWidget(self.back_button, 0, 0, 1, 1)
self.url_bar = QtWidgets.QLineEdit(songselect_dialog)
self.url_bar.setObjectName('ccli_edit')
self.top_button_layout.addWidget(self.url_bar, 0, 1, 1, 8)
self.song_progress_bar = QtWidgets.QProgressBar(songselect_dialog)
self.song_progress_bar.setMinimum(0)
self.song_progress_bar.setMaximum(3)
self.song_progress_bar.setValue(0)
self.song_progress_bar.setVisible(False)
self.top_button_layout.addWidget(self.song_progress_bar, 0, 1, 1, 8)
# The bottom panel
self.bottom_button_layout = QtWidgets.QGridLayout()
self.bottom_button_layout.setContentsMargins(0, 0, 0, 0)
self.bottom_button_layout.setSpacing(8)
self.bottom_button_layout.setObjectName('bottom_button_layout')
self.close_button = QtWidgets.QPushButton(songselect_dialog)
self.close_button.setIcon(UiIcons().close)
self.close_button.setObjectName('close_button')
self.bottom_button_layout.addWidget(self.close_button, 0, 0, 1, 1)
self.message_area = QtWidgets.QLabel()
self.message_area.setWordWrap(True)
self.message_area.setObjectName('message_area')
self.bottom_button_layout.addWidget(self.message_area, 0, 1, 1, 7)
self.view_button = QtWidgets.QPushButton(songselect_dialog)
self.view_button.setIcon(UiIcons().search)
self.view_button.setObjectName('view_button')
self.bottom_button_layout.addWidget(self.view_button, 0, 8, 1, 1)
self.import_button = QtWidgets.QPushButton(songselect_dialog)
self.import_button.setIcon(UiIcons().download)
self.import_button.setObjectName('import_button')
self.bottom_button_layout.addWidget(self.import_button, 0, 9, 1, 1)
# Add everything to the interface layout
self.songselect_layout.addLayout(self.top_button_layout)
self.songselect_layout.addWidget(self.stacked_widget)
self.songselect_layout.addLayout(self.bottom_button_layout)
self.retranslate_ui(songselect_dialog)
self.stacked_widget.setCurrentIndex(0)
def retranslate_ui(self, songselect_dialog):
"""
Translate the GUI.
"""
songselect_dialog.setWindowTitle(translate('SongsPlugin.SongSelectForm', 'CCLI SongSelect Importer'))
self.view_button.setText(translate('SongsPlugin.SongSelectForm', 'Preview'))
self.title_label.setText(translate('SongsPlugin.SongSelectForm', 'Title:'))
self.authors_label.setText(translate('SongsPlugin.SongSelectForm', 'Author(s):'))
self.copyright_label.setText(translate('SongsPlugin.SongSelectForm', 'Copyright:'))
self.ccli_label.setText(translate('SongsPlugin.SongSelectForm', 'CCLI Number:'))
self.lyrics_label.setText(translate('SongsPlugin.SongSelectForm', 'Lyrics:'))
self.back_button.setText(translate('SongsPlugin.SongSelectForm', 'Back',
'When pressed takes user to the CCLI home page'))
self.import_button.setText(translate('SongsPlugin.SongSelectForm', 'Import'))
self.close_button.setText(translate('SongsPlugin.SongSelectForm', 'Close'))