# -*- coding: utf-8 -*- # vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 ############################################################################### # OpenLP - Open Source Lyrics Projection # # --------------------------------------------------------------------------- # # Copyright (c) 2008-2018 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; version 2 of the License. # # # # 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, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### """ 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 ''