# -*- coding: utf-8 -*- ########################################################################## # OpenLP - Open Source Lyrics Projection # # ---------------------------------------------------------------------- # # Copyright (c) 2008-2019 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 . # ########################################################################## """ The :mod:`~openlp.core.ui.dark` module looks for and loads a dark theme """ from PyQt5 import QtGui from openlp.core.common import is_win from openlp.core.common.registry import Registry from openlp.core.common.settings import Settings try: import qdarkstyle HAS_DARK_STYLE = True except ImportError: HAS_DARK_STYLE = False WIN_REPAIR_STYLESHEET = """ QMainWindow::separator { border: none; } QDockWidget::title { border: 1px solid palette(dark); padding-left: 5px; padding-top: 2px; margin: 1px 0; } QToolBar { border: none; margin: 0; padding: 0; } """ MEDIA_MANAGER_STYLE = """ ::tab#media_tool_box { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 palette(button), stop: 1.0 palette(mid)); border: 0; border-radius: 2px; margin-top: 0; margin-bottom: 0; text-align: left; } /* This is here to make the tabs on KDE with the Breeze theme work */ ::tab:selected {} """ PROGRESSBAR_STYLE = """ QProgressBar{ height: 10px; } """ def get_application_stylesheet(): """ Return the correct application stylesheet based on the current style and operating system :return str: The correct stylesheet as a string """ stylesheet = '' if HAS_DARK_STYLE and Settings().value('advanced/use_dark_style'): stylesheet = qdarkstyle.load_stylesheet_pyqt5() else: if not Settings().value('advanced/alternate rows'): base_color = Registry().get('application').palette().color(QtGui.QPalette.Active, QtGui.QPalette.Base) alternate_rows_repair_stylesheet = \ 'QTableWidget, QListWidget, QTreeWidget {alternate-background-color: ' + base_color.name() + ';}\n' stylesheet += alternate_rows_repair_stylesheet if is_win(): stylesheet += WIN_REPAIR_STYLESHEET return stylesheet def get_library_stylesheet(): """ Return the correct stylesheet for the main window :return str: The correct stylesheet as a string """ if not HAS_DARK_STYLE or not Settings().value('advanced/use_dark_style'): return MEDIA_MANAGER_STYLE else: return ''