From d1c6f4bec99cb5fdef93fa56a50d01ea0a7164ed Mon Sep 17 00:00:00 2001 From: Alexhuszagh Date: Wed, 26 Oct 2016 14:44:37 -0400 Subject: [PATCH] Added QCheckBox and QRadioButtons --- dark.py | 95 ++++++ dark.qss | 23 +- dark/checkbox_checked.svg | 5 +- dark/checkbox_checked_disabled.svg | 5 +- dark/checkbox_indeterminate.svg | 8 +- dark/checkbox_indeterminate_disabled.svg | 8 +- dark/checkbox_unchecked.svg | 3 +- dark/checkbox_unchecked_disabled.svg | 3 +- example.py | 357 ++++++++++++++++++++++ light.py | 95 ++++++ light.qss | 20 +- light/checkbox_checked-hover.svg | 7 +- light/checkbox_checked.svg | 7 +- light/checkbox_checked_disabled.svg | 7 +- light/checkbox_indeterminate-hover.svg | 10 +- light/checkbox_indeterminate.svg | 10 +- light/checkbox_indeterminate_disabled.svg | 10 +- light/checkbox_unchecked-hover.svg | 5 +- light/checkbox_unchecked_disabled.svg | 5 +- native.py | 87 ++++++ 20 files changed, 713 insertions(+), 57 deletions(-) create mode 100644 dark.py create mode 100644 example.py create mode 100644 light.py create mode 100644 native.py diff --git a/dark.py b/dark.py new file mode 100644 index 0000000..d9466da --- /dev/null +++ b/dark.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python +# +# The MIT License (MIT) +# +# Copyright (c) <2013-2014> +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +""" +A simple example of use. + +Load an ui made in QtDesigner and apply the DarkStyleSheet. + + +Requirements: + - Python 2 or Python 3 + - PyQt4 + +.. note.. :: qdarkstyle does not have to be installed to run + the example + +""" +import logging +import sys +from PyQt5 import QtWidgets, QtCore +from PyQt5.QtCore import QFile, QTextStream +# make the example runnable without the need to install + +import breeze +import example + + +def main(): + """ + Application entry point + """ + logging.basicConfig(level=logging.DEBUG) + # create the application and the main window + app = QtWidgets.QApplication(sys.argv) + app.setStyle(QtWidgets.QStyleFactory.create("fusion")) + window = QtWidgets.QMainWindow() + + # setup ui + ui = example.Ui_MainWindow() + ui.setupUi(window) + ui.bt_delay_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + ui.bt_instant_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + ui.bt_menu_button_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + window.setWindowTitle("BreezeDark example") + + # tabify dock widgets to show bug #6 + window.tabifyDockWidget(ui.dockWidget1, ui.dockWidget2) + + # setup stylesheet + file = QFile(":/dark.qss") + file.open(QFile.ReadOnly | QFile.Text) + stream = QTextStream(file) + app.setStyleSheet(stream.readAll()) + + # auto quit after 2s when testing on travis-ci + if "--travis" in sys.argv: + QtCore.QTimer.singleShot(2000, app.exit) + + # run + window.show() + app.exec_() + + +if __name__ == "__main__": + main() diff --git a/dark.qss b/dark.qss index 9b532cc..469d23b 100644 --- a/dark.qss +++ b/dark.qss @@ -91,7 +91,7 @@ QGroupBox::indicator QCheckBox::indicator:unchecked, QCheckBox::indicator:unchecked:focus { - image: url(:/dark/checkbox_unchecked_disabled.svg); + border-image: url(:/dark/checkbox_unchecked_disabled.svg); } QCheckBox::indicator:unchecked:hover, @@ -101,12 +101,12 @@ QGroupBox::indicator:unchecked:focus, QGroupBox::indicator:unchecked:pressed { border: none; - image: url(:/dark/checkbox_unchecked.svg); + border-image: url(:/dark/checkbox_unchecked.svg); } QCheckBox::indicator:checked { - image: url(:/dark/checkbox_checked.svg); + border-image: url(:/dark/checkbox_checked.svg); } QCheckBox::indicator:checked:hover, @@ -117,36 +117,36 @@ QGroupBox::indicator:checked:focus, QGroupBox::indicator:checked:pressed { border: none; - image: url(:/dark/checkbox_checked.svg); + border-image: url(:/dark/checkbox_checked.svg); } QCheckBox::indicator:indeterminate { - image: url(:/dark/checkbox_indeterminate.svg); + border-image: url(:/dark/checkbox_indeterminate.svg); } QCheckBox::indicator:indeterminate:focus, QCheckBox::indicator:indeterminate:hover, QCheckBox::indicator:indeterminate:pressed { - image: url(:/dark/checkbox_indeterminate.svg); + border-image: url(:/dark/checkbox_indeterminate.svg); } QCheckBox::indicator:indeterminate:disabled { - image: url(:/dark/checkbox_indeterminate_disabled.svg); + border-image: url(:/dark/checkbox_indeterminate_disabled.svg); } QCheckBox::indicator:checked:disabled, QGroupBox::indicator:checked:disabled { - image: url(:/dark/checkbox_checked_disabled.svg); + border-image: url(:/dark/checkbox_checked_disabled.svg); } QCheckBox::indicator:unchecked:disabled, QGroupBox::indicator:unchecked:disabled { - image: url(:/dark/checkbox_unchecked_disabled.svg); + border-image: url(:/dark/checkbox_unchecked_disabled.svg); } QRadioButton @@ -338,7 +338,10 @@ QWidget:focus, QMenuBar:focus border: 1px solid #3daee9; } -QTabWidget:focus, QCheckBox:focus, QRadioButton:focus, QSlider:focus +QTabWidget:focus, +QCheckBox:focus, +QRadioButton:focus, +QSlider:focus { border: none; } diff --git a/dark/checkbox_checked.svg b/dark/checkbox_checked.svg index 71a8e3f..6753d8b 100755 --- a/dark/checkbox_checked.svg +++ b/dark/checkbox_checked.svg @@ -1,4 +1,5 @@ - - + + + diff --git a/dark/checkbox_checked_disabled.svg b/dark/checkbox_checked_disabled.svg index 546495f..ff7e63a 100755 --- a/dark/checkbox_checked_disabled.svg +++ b/dark/checkbox_checked_disabled.svg @@ -1,4 +1,5 @@ - - + + + diff --git a/dark/checkbox_indeterminate.svg b/dark/checkbox_indeterminate.svg index 413f30a..0f17124 100755 --- a/dark/checkbox_indeterminate.svg +++ b/dark/checkbox_indeterminate.svg @@ -1,5 +1,7 @@ - - - + + + + + diff --git a/dark/checkbox_indeterminate_disabled.svg b/dark/checkbox_indeterminate_disabled.svg index bc038cc..bc0f285 100755 --- a/dark/checkbox_indeterminate_disabled.svg +++ b/dark/checkbox_indeterminate_disabled.svg @@ -1,5 +1,7 @@ - - - + + + + + diff --git a/dark/checkbox_unchecked.svg b/dark/checkbox_unchecked.svg index 84f17da..6f3e569 100755 --- a/dark/checkbox_unchecked.svg +++ b/dark/checkbox_unchecked.svg @@ -1,3 +1,4 @@ - + + diff --git a/dark/checkbox_unchecked_disabled.svg b/dark/checkbox_unchecked_disabled.svg index b3e2d76..dd73f75 100755 --- a/dark/checkbox_unchecked_disabled.svg +++ b/dark/checkbox_unchecked_disabled.svg @@ -1,3 +1,4 @@ - + + diff --git a/example.py b/example.py new file mode 100644 index 0000000..ebdf325 --- /dev/null +++ b/example.py @@ -0,0 +1,357 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'example.ui' +# +# Created by: PyQt5 UI code generator 5.4.2 +# +# WARNING! All changes made in this file will be lost! + +from PyQt5 import QtCore, QtGui, QtWidgets + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.resize(1068, 824) + self.centralwidget = QtWidgets.QWidget(MainWindow) + self.centralwidget.setObjectName("centralwidget") + self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.centralwidget) + self.verticalLayout_5.setObjectName("verticalLayout_5") + self.tabWidget = QtWidgets.QTabWidget(self.centralwidget) + self.tabWidget.setTabPosition(QtWidgets.QTabWidget.East) + self.tabWidget.setTabsClosable(True) + self.tabWidget.setObjectName("tabWidget") + self.tab = QtWidgets.QWidget() + self.tab.setObjectName("tab") + self.gridLayout = QtWidgets.QGridLayout(self.tab) + self.gridLayout.setObjectName("gridLayout") + self.groupBox = QtWidgets.QGroupBox(self.tab) + self.groupBox.setObjectName("groupBox") + self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.groupBox) + self.verticalLayout_3.setObjectName("verticalLayout_3") + self.toolBox = QtWidgets.QToolBox(self.groupBox) + self.toolBox.setObjectName("toolBox") + self.page = QtWidgets.QWidget() + self.page.setGeometry(QtCore.QRect(0, 0, 718, 227)) + self.page.setObjectName("page") + self.gridLayout_4 = QtWidgets.QGridLayout(self.page) + self.gridLayout_4.setObjectName("gridLayout_4") + self.lineEdit = QtWidgets.QLineEdit(self.page) + self.lineEdit.setObjectName("lineEdit") + self.gridLayout_4.addWidget(self.lineEdit, 0, 0, 1, 1) + self.toolBox.addItem(self.page, "") + self.page_2 = QtWidgets.QWidget() + self.page_2.setGeometry(QtCore.QRect(0, 0, 718, 227)) + self.page_2.setObjectName("page_2") + self.gridLayout_5 = QtWidgets.QGridLayout(self.page_2) + self.gridLayout_5.setObjectName("gridLayout_5") + self.listWidget = QtWidgets.QListWidget(self.page_2) + self.listWidget.setObjectName("listWidget") + item = QtWidgets.QListWidgetItem() + self.listWidget.addItem(item) + item = QtWidgets.QListWidgetItem() + self.listWidget.addItem(item) + item = QtWidgets.QListWidgetItem() + self.listWidget.addItem(item) + item = QtWidgets.QListWidgetItem() + self.listWidget.addItem(item) + item = QtWidgets.QListWidgetItem() + self.listWidget.addItem(item) + item = QtWidgets.QListWidgetItem() + self.listWidget.addItem(item) + item = QtWidgets.QListWidgetItem() + self.listWidget.addItem(item) + item = QtWidgets.QListWidgetItem() + self.listWidget.addItem(item) + self.gridLayout_5.addWidget(self.listWidget, 0, 0, 1, 1) + self.toolBox.addItem(self.page_2, "") + self.verticalLayout_3.addWidget(self.toolBox) + self.gridLayout.addWidget(self.groupBox, 1, 0, 1, 1) + self.tabWidget_2 = QtWidgets.QTabWidget(self.tab) + self.tabWidget_2.setObjectName("tabWidget_2") + self.tab_3 = QtWidgets.QWidget() + self.tab_3.setObjectName("tab_3") + self.gridLayout_6 = QtWidgets.QGridLayout(self.tab_3) + self.gridLayout_6.setObjectName("gridLayout_6") + self.checkableButton = QtWidgets.QPushButton(self.tab_3) + self.checkableButton.setCheckable(True) + self.checkableButton.setChecked(True) + self.checkableButton.setObjectName("checkableButton") + self.gridLayout_6.addWidget(self.checkableButton, 1, 0, 1, 1) + self.pushButton = QtWidgets.QPushButton(self.tab_3) + self.pushButton.setObjectName("pushButton") + self.gridLayout_6.addWidget(self.pushButton, 0, 0, 1, 1) + self.pushButton_5 = QtWidgets.QPushButton(self.tab_3) + self.pushButton_5.setObjectName("pushButton_5") + self.gridLayout_6.addWidget(self.pushButton_5, 2, 0, 1, 1) + self.tabWidget_2.addTab(self.tab_3, "") + self.tab_5 = QtWidgets.QWidget() + self.tab_5.setObjectName("tab_5") + self.gridLayout_7 = QtWidgets.QGridLayout(self.tab_5) + self.gridLayout_7.setObjectName("gridLayout_7") + self.tableWidget = QtWidgets.QTableWidget(self.tab_5) + self.tableWidget.setObjectName("tableWidget") + self.tableWidget.setColumnCount(2) + self.tableWidget.setRowCount(4) + item = QtWidgets.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(1, item) + item = QtWidgets.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(2, item) + item = QtWidgets.QTableWidgetItem() + self.tableWidget.setVerticalHeaderItem(3, item) + item = QtWidgets.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.tableWidget.setHorizontalHeaderItem(1, item) + self.gridLayout_7.addWidget(self.tableWidget, 0, 0, 1, 1) + self.tabWidget_2.addTab(self.tab_5, "") + self.tab_4 = QtWidgets.QWidget() + self.tab_4.setObjectName("tab_4") + self.tabWidget_2.addTab(self.tab_4, "") + self.gridLayout.addWidget(self.tabWidget_2, 0, 0, 1, 1) + self.tabWidget.addTab(self.tab, "") + self.tab_2 = QtWidgets.QWidget() + self.tab_2.setObjectName("tab_2") + self.gridLayout_2 = QtWidgets.QGridLayout(self.tab_2) + self.gridLayout_2.setObjectName("gridLayout_2") + self.groupBox_2 = QtWidgets.QGroupBox(self.tab_2) + self.groupBox_2.setObjectName("groupBox_2") + self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.groupBox_2) + self.verticalLayout_4.setObjectName("verticalLayout_4") + self.label = QtWidgets.QLabel(self.groupBox_2) + self.label.setObjectName("label") + self.verticalLayout_4.addWidget(self.label) + self.radioButton = QtWidgets.QRadioButton(self.groupBox_2) + self.radioButton.setObjectName("radioButton") + self.verticalLayout_4.addWidget(self.radioButton) + self.checkBox = QtWidgets.QCheckBox(self.groupBox_2) + self.checkBox.setObjectName("checkBox") + self.verticalLayout_4.addWidget(self.checkBox) + self.checkBox_2 = QtWidgets.QCheckBox(self.groupBox_2) + self.checkBox_2.setTristate(True) + self.checkBox_2.setObjectName("checkBox_2") + self.verticalLayout_4.addWidget(self.checkBox_2) + self.treeWidget = QtWidgets.QTreeWidget(self.groupBox_2) + self.treeWidget.setObjectName("treeWidget") + item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget) + item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget) + self.verticalLayout_4.addWidget(self.treeWidget) + self.gridLayout_2.addWidget(self.groupBox_2, 0, 0, 1, 1) + self.tabWidget.addTab(self.tab_2, "") + self.verticalLayout_5.addWidget(self.tabWidget) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget) + self.pushButton_2.setObjectName("pushButton_2") + self.horizontalLayout.addWidget(self.pushButton_2) + self.bt_delay_popup = QtWidgets.QToolButton(self.centralwidget) + self.bt_delay_popup.setObjectName("bt_delay_popup") + self.horizontalLayout.addWidget(self.bt_delay_popup) + self.bt_instant_popup = QtWidgets.QToolButton(self.centralwidget) + self.bt_instant_popup.setPopupMode(QtWidgets.QToolButton.InstantPopup) + self.bt_instant_popup.setObjectName("bt_instant_popup") + self.horizontalLayout.addWidget(self.bt_instant_popup) + self.bt_menu_button_popup = QtWidgets.QToolButton(self.centralwidget) + self.bt_menu_button_popup.setPopupMode(QtWidgets.QToolButton.MenuButtonPopup) + self.bt_menu_button_popup.setObjectName("bt_menu_button_popup") + self.horizontalLayout.addWidget(self.bt_menu_button_popup) + self.line_2 = QtWidgets.QFrame(self.centralwidget) + self.line_2.setFrameShape(QtWidgets.QFrame.VLine) + self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line_2.setObjectName("line_2") + self.horizontalLayout.addWidget(self.line_2) + self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget) + self.pushButton_3.setEnabled(False) + self.pushButton_3.setObjectName("pushButton_3") + self.horizontalLayout.addWidget(self.pushButton_3) + self.doubleSpinBox = QtWidgets.QDoubleSpinBox(self.centralwidget) + self.doubleSpinBox.setObjectName("doubleSpinBox") + self.horizontalLayout.addWidget(self.doubleSpinBox) + self.toolButton = QtWidgets.QToolButton(self.centralwidget) + self.toolButton.setPopupMode(QtWidgets.QToolButton.InstantPopup) + self.toolButton.setObjectName("toolButton") + self.horizontalLayout.addWidget(self.toolButton) + self.verticalLayout_5.addLayout(self.horizontalLayout) + MainWindow.setCentralWidget(self.centralwidget) + self.menubar = QtWidgets.QMenuBar(MainWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 1068, 29)) + self.menubar.setObjectName("menubar") + self.menuMenu = QtWidgets.QMenu(self.menubar) + self.menuMenu.setObjectName("menuMenu") + self.menuSubmenu_2 = QtWidgets.QMenu(self.menuMenu) + self.menuSubmenu_2.setObjectName("menuSubmenu_2") + MainWindow.setMenuBar(self.menubar) + self.statusbar = QtWidgets.QStatusBar(MainWindow) + self.statusbar.setObjectName("statusbar") + MainWindow.setStatusBar(self.statusbar) + self.dockWidget1 = QtWidgets.QDockWidget(MainWindow) + self.dockWidget1.setObjectName("dockWidget1") + self.dockWidgetContents = QtWidgets.QWidget() + self.dockWidgetContents.setObjectName("dockWidgetContents") + self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.dockWidgetContents) + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.verticalLayout = QtWidgets.QVBoxLayout() + self.verticalLayout.setObjectName("verticalLayout") + self.comboBox = QtWidgets.QComboBox(self.dockWidgetContents) + self.comboBox.setObjectName("comboBox") + self.comboBox.addItem("") + self.comboBox.addItem("") + self.verticalLayout.addWidget(self.comboBox) + self.horizontalSlider = QtWidgets.QSlider(self.dockWidgetContents) + self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal) + self.horizontalSlider.setObjectName("horizontalSlider") + self.verticalLayout.addWidget(self.horizontalSlider) + self.textEdit = QtWidgets.QTextEdit(self.dockWidgetContents) + self.textEdit.setObjectName("textEdit") + self.verticalLayout.addWidget(self.textEdit) + self.line = QtWidgets.QFrame(self.dockWidgetContents) + self.line.setFrameShape(QtWidgets.QFrame.HLine) + self.line.setFrameShadow(QtWidgets.QFrame.Sunken) + self.line.setObjectName("line") + self.verticalLayout.addWidget(self.line) + self.progressBar = QtWidgets.QProgressBar(self.dockWidgetContents) + self.progressBar.setProperty("value", 24) + self.progressBar.setObjectName("progressBar") + self.verticalLayout.addWidget(self.progressBar) + self.verticalLayout_2.addLayout(self.verticalLayout) + self.frame = QtWidgets.QFrame(self.dockWidgetContents) + self.frame.setMinimumSize(QtCore.QSize(0, 100)) + self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel) + self.frame.setFrameShadow(QtWidgets.QFrame.Raised) + self.frame.setLineWidth(3) + self.frame.setObjectName("frame") + self.verticalLayout_2.addWidget(self.frame) + self.dockWidget1.setWidget(self.dockWidgetContents) + MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockWidget1) + self.toolBar = QtWidgets.QToolBar(MainWindow) + self.toolBar.setObjectName("toolBar") + MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar) + self.dockWidget2 = QtWidgets.QDockWidget(MainWindow) + self.dockWidget2.setObjectName("dockWidget2") + self.dockWidgetContents_2 = QtWidgets.QWidget() + self.dockWidgetContents_2.setObjectName("dockWidgetContents_2") + self.gridLayout_3 = QtWidgets.QGridLayout(self.dockWidgetContents_2) + self.gridLayout_3.setObjectName("gridLayout_3") + self.verticalSlider = QtWidgets.QSlider(self.dockWidgetContents_2) + self.verticalSlider.setOrientation(QtCore.Qt.Vertical) + self.verticalSlider.setObjectName("verticalSlider") + self.gridLayout_3.addWidget(self.verticalSlider, 0, 0, 1, 1) + self.dockWidget2.setWidget(self.dockWidgetContents_2) + MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.dockWidget2) + self.actionAction = QtWidgets.QAction(MainWindow) + self.actionAction.setObjectName("actionAction") + self.actionSub_menu = QtWidgets.QAction(MainWindow) + self.actionSub_menu.setObjectName("actionSub_menu") + self.actionAction_C = QtWidgets.QAction(MainWindow) + self.actionAction_C.setObjectName("actionAction_C") + self.menuSubmenu_2.addAction(self.actionSub_menu) + self.menuSubmenu_2.addAction(self.actionAction_C) + self.menuMenu.addAction(self.actionAction) + self.menuMenu.addAction(self.menuSubmenu_2.menuAction()) + self.menubar.addAction(self.menuMenu.menuAction()) + self.toolBar.addAction(self.actionAction) + self.toolBar.addAction(self.actionSub_menu) + + self.retranslateUi(MainWindow) + self.tabWidget.setCurrentIndex(0) + self.toolBox.setCurrentIndex(1) + self.tabWidget_2.setCurrentIndex(0) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + MainWindow.setTabOrder(self.pushButton, self.checkableButton) + MainWindow.setTabOrder(self.checkableButton, self.pushButton_5) + MainWindow.setTabOrder(self.pushButton_5, self.tabWidget_2) + MainWindow.setTabOrder(self.tabWidget_2, self.tableWidget) + MainWindow.setTabOrder(self.tableWidget, self.radioButton) + MainWindow.setTabOrder(self.radioButton, self.checkBox) + MainWindow.setTabOrder(self.checkBox, self.checkBox_2) + MainWindow.setTabOrder(self.checkBox_2, self.treeWidget) + MainWindow.setTabOrder(self.treeWidget, self.pushButton_2) + MainWindow.setTabOrder(self.pushButton_2, self.bt_delay_popup) + MainWindow.setTabOrder(self.bt_delay_popup, self.bt_instant_popup) + MainWindow.setTabOrder(self.bt_instant_popup, self.bt_menu_button_popup) + MainWindow.setTabOrder(self.bt_menu_button_popup, self.pushButton_3) + MainWindow.setTabOrder(self.pushButton_3, self.doubleSpinBox) + MainWindow.setTabOrder(self.doubleSpinBox, self.toolButton) + MainWindow.setTabOrder(self.toolButton, self.comboBox) + MainWindow.setTabOrder(self.comboBox, self.horizontalSlider) + MainWindow.setTabOrder(self.horizontalSlider, self.textEdit) + MainWindow.setTabOrder(self.textEdit, self.verticalSlider) + MainWindow.setTabOrder(self.verticalSlider, self.tabWidget) + MainWindow.setTabOrder(self.tabWidget, self.lineEdit) + MainWindow.setTabOrder(self.lineEdit, self.listWidget) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) + self.groupBox.setTitle(_translate("MainWindow", "ToolBox")) + self.toolBox.setItemText(self.toolBox.indexOf(self.page), _translate("MainWindow", "Page 1")) + __sortingEnabled = self.listWidget.isSortingEnabled() + self.listWidget.setSortingEnabled(False) + item = self.listWidget.item(0) + item.setText(_translate("MainWindow", "New Item")) + item = self.listWidget.item(1) + item.setText(_translate("MainWindow", "New Item")) + item = self.listWidget.item(2) + item.setText(_translate("MainWindow", "New Item")) + item = self.listWidget.item(3) + item.setText(_translate("MainWindow", "New Item")) + item = self.listWidget.item(4) + item.setText(_translate("MainWindow", "New Item")) + item = self.listWidget.item(5) + item.setText(_translate("MainWindow", "New Item")) + item = self.listWidget.item(6) + item.setText(_translate("MainWindow", "New Item")) + item = self.listWidget.item(7) + item.setText(_translate("MainWindow", "New Item")) + self.listWidget.setSortingEnabled(__sortingEnabled) + self.toolBox.setItemText(self.toolBox.indexOf(self.page_2), _translate("MainWindow", "Page 2")) + self.checkableButton.setText(_translate("MainWindow", "Checkable button")) + self.pushButton.setText(_translate("MainWindow", "PushButton")) + self.pushButton_5.setText(_translate("MainWindow", "PushButton")) + self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_3), _translate("MainWindow", "Tab 1")) + item = self.tableWidget.verticalHeaderItem(0) + item.setText(_translate("MainWindow", "New Row")) + item = self.tableWidget.verticalHeaderItem(1) + item.setText(_translate("MainWindow", "New Row")) + item = self.tableWidget.verticalHeaderItem(2) + item.setText(_translate("MainWindow", "New Row")) + item = self.tableWidget.verticalHeaderItem(3) + item.setText(_translate("MainWindow", "New Row")) + item = self.tableWidget.horizontalHeaderItem(0) + item.setText(_translate("MainWindow", "New Column")) + item = self.tableWidget.horizontalHeaderItem(1) + item.setText(_translate("MainWindow", "New Column 2")) + self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_5), _translate("MainWindow", "Page")) + self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_4), _translate("MainWindow", "Tab 2")) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Tab 1")) + self.groupBox_2.setTitle(_translate("MainWindow", "GroupBox")) + self.label.setText(_translate("MainWindow", "TextLabel")) + self.radioButton.setText(_translate("MainWindow", "RadioB&utton")) + self.checkBox.setText(_translate("MainWindow", "CheckBox")) + self.checkBox_2.setText(_translate("MainWindow", "CheckBox Tristate")) + self.treeWidget.headerItem().setText(0, _translate("MainWindow", "qdz")) + __sortingEnabled = self.treeWidget.isSortingEnabled() + self.treeWidget.setSortingEnabled(False) + self.treeWidget.topLevelItem(0).setText(0, _translate("MainWindow", "qzd")) + self.treeWidget.topLevelItem(1).setText(0, _translate("MainWindow", "effefe")) + self.treeWidget.setSortingEnabled(__sortingEnabled) + self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Tab 2")) + self.pushButton_2.setText(_translate("MainWindow", "PushButton")) + self.bt_delay_popup.setText(_translate("MainWindow", "Delayed popup ")) + self.bt_instant_popup.setText(_translate("MainWindow", "Instant popup")) + self.bt_menu_button_popup.setText(_translate("MainWindow", "MenuButtonPopup")) + self.pushButton_3.setText(_translate("MainWindow", "Disabled")) + self.toolButton.setText(_translate("MainWindow", "...")) + self.menuMenu.setTitle(_translate("MainWindow", "&Menu")) + self.menuSubmenu_2.setTitle(_translate("MainWindow", "&Submenu 2")) + self.dockWidget1.setWindowTitle(_translate("MainWindow", "&Dock widget 1")) + self.comboBox.setItemText(0, _translate("MainWindow", "Item 0")) + self.comboBox.setItemText(1, _translate("MainWindow", "Item 2")) + self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar")) + self.dockWidget2.setWindowTitle(_translate("MainWindow", "Dock widget &2")) + self.actionAction.setText(_translate("MainWindow", "&Action")) + self.actionSub_menu.setText(_translate("MainWindow", "&Action B")) + self.actionSub_menu.setToolTip(_translate("MainWindow", "submenu")) + self.actionAction_C.setText(_translate("MainWindow", "Action &C")) + diff --git a/light.py b/light.py new file mode 100644 index 0000000..b654ff0 --- /dev/null +++ b/light.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python +# +# The MIT License (MIT) +# +# Copyright (c) <2013-2014> +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +""" +A simple example of use. + +Load an ui made in QtDesigner and apply the DarkStyleSheet. + + +Requirements: + - Python 2 or Python 3 + - PyQt4 + +.. note.. :: qdarkstyle does not have to be installed to run + the example + +""" +import logging +import sys +from PyQt5 import QtWidgets, QtCore +from PyQt5.QtCore import QFile, QTextStream +# make the example runnable without the need to install + +import breeze +import example + + +def main(): + """ + Application entry point + """ + logging.basicConfig(level=logging.DEBUG) + # create the application and the main window + app = QtWidgets.QApplication(sys.argv) + app.setStyle(QtWidgets.QStyleFactory.create("fusion")) + window = QtWidgets.QMainWindow() + + # setup ui + ui = example.Ui_MainWindow() + ui.setupUi(window) + ui.bt_delay_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + ui.bt_instant_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + ui.bt_menu_button_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + window.setWindowTitle("Breeze example") + + # tabify dock widgets to show bug #6 + window.tabifyDockWidget(ui.dockWidget1, ui.dockWidget2) + + # setup stylesheet + file = QFile(":/light.qss") + file.open(QFile.ReadOnly | QFile.Text) + stream = QTextStream(file) + app.setStyleSheet(stream.readAll()) + + # auto quit after 2s when testing on travis-ci + if "--travis" in sys.argv: + QtCore.QTimer.singleShot(2000, app.exit) + + # run + window.show() + app.exec_() + + +if __name__ == "__main__": + main() diff --git a/light.qss b/light.qss index dc2fbcb..fd201ed 100644 --- a/light.qss +++ b/light.qss @@ -95,7 +95,7 @@ QGroupBox::indicator QCheckBox::indicator:unchecked, QCheckBox::indicator:unchecked:focus { - image: url(:/light/checkbox_unchecked_disabled.svg); + border-image: url(:/light/checkbox_unchecked_disabled.svg); } QCheckBox::indicator:unchecked:hover, @@ -105,12 +105,12 @@ QGroupBox::indicator:unchecked:focus, QGroupBox::indicator:unchecked:pressed { border: none; - image: url(:/light/checkbox_unchecked-hover.svg); + border-image: url(:/light/checkbox_unchecked-hover.svg); } QCheckBox::indicator:checked { - image: url(:/light/checkbox_checked.svg); + border-image: url(:/light/checkbox_checked.svg); } QCheckBox::indicator:checked:focus, @@ -119,23 +119,23 @@ QGroupBox::indicator:checked:focus, QGroupBox::indicator:checked:pressed { border: none; - image: url(:/light/checkbox_checked.svg); + border-image: url(:/light/checkbox_checked.svg); } QCheckBox::indicator:checked:hover, QGroupBox::indicator:checked:hover { - image: url(:/light/checkbox_checked-hover.svg); + border-image: url(:/light/checkbox_checked-hover.svg); } QCheckBox::indicator:indeterminate { - image: url(:/light/checkbox_indeterminate.svg); + border-image: url(:/light/checkbox_indeterminate.svg); } QCheckBox::indicator:indeterminate:hover { - image: url(:/light/checkbox_indeterminate-hover.svg); + border-image: url(:/light/checkbox_indeterminate-hover.svg); } QCheckBox::indicator:indeterminate:focus, @@ -145,19 +145,19 @@ QCheckBox::indicator:indeterminate:pressed QCheckBox::indicator:indeterminate:disabled { - image: url(:/light/checkbox_indeterminate_disabled.svg); + border-image: url(:/light/checkbox_indeterminate_disabled.svg); } QCheckBox::indicator:checked:disabled, QGroupBox::indicator:checked:disabled { - image: url(:/light/checkbox_checked_disabled.svg); + border-image: url(:/light/checkbox_checked_disabled.svg); } QCheckBox::indicator:unchecked:disabled, QGroupBox::indicator:unchecked:disabled { - image: url(:/light/checkbox_unchecked_disabled.svg); + border-image: url(:/light/checkbox_unchecked_disabled.svg); } QRadioButton diff --git a/light/checkbox_checked-hover.svg b/light/checkbox_checked-hover.svg index 412e476..64d6667 100755 --- a/light/checkbox_checked-hover.svg +++ b/light/checkbox_checked-hover.svg @@ -1,4 +1,5 @@ - - - + + + + diff --git a/light/checkbox_checked.svg b/light/checkbox_checked.svg index b83fa40..f3acb63 100755 --- a/light/checkbox_checked.svg +++ b/light/checkbox_checked.svg @@ -1,4 +1,5 @@ - - - + + + + diff --git a/light/checkbox_checked_disabled.svg b/light/checkbox_checked_disabled.svg index 1fd4b39..b7be04b 100755 --- a/light/checkbox_checked_disabled.svg +++ b/light/checkbox_checked_disabled.svg @@ -1,4 +1,5 @@ - - - + + + + diff --git a/light/checkbox_indeterminate-hover.svg b/light/checkbox_indeterminate-hover.svg index e56e4d9..def9596 100755 --- a/light/checkbox_indeterminate-hover.svg +++ b/light/checkbox_indeterminate-hover.svg @@ -1,5 +1,7 @@ - - - - + + + + + + diff --git a/light/checkbox_indeterminate.svg b/light/checkbox_indeterminate.svg index b737066..a619ab0 100755 --- a/light/checkbox_indeterminate.svg +++ b/light/checkbox_indeterminate.svg @@ -1,5 +1,7 @@ - - - - + + + + + + diff --git a/light/checkbox_indeterminate_disabled.svg b/light/checkbox_indeterminate_disabled.svg index f32c940..74d7168 100755 --- a/light/checkbox_indeterminate_disabled.svg +++ b/light/checkbox_indeterminate_disabled.svg @@ -1,5 +1,7 @@ - - - - + + + + + + diff --git a/light/checkbox_unchecked-hover.svg b/light/checkbox_unchecked-hover.svg index bad9b6f..8f0bb01 100755 --- a/light/checkbox_unchecked-hover.svg +++ b/light/checkbox_unchecked-hover.svg @@ -1,3 +1,4 @@ - - + + + diff --git a/light/checkbox_unchecked_disabled.svg b/light/checkbox_unchecked_disabled.svg index 4a33e25..0ef4300 100755 --- a/light/checkbox_unchecked_disabled.svg +++ b/light/checkbox_unchecked_disabled.svg @@ -1,3 +1,4 @@ - - + + + diff --git a/native.py b/native.py new file mode 100644 index 0000000..edcfc03 --- /dev/null +++ b/native.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python +# +# The MIT License (MIT) +# +# Copyright (c) <2013-2014> +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +""" +A simple example of use. + +Load an ui made in QtDesigner and apply the DarkStyleSheet. + + +Requirements: + - Python 2 or Python 3 + - PyQt4 + +.. note.. :: qdarkstyle does not have to be installed to run + the example + +""" +import logging +import sys +from PyQt5 import QtWidgets, QtCore +# make the example runnable without the need to install + +import example + + +def main(): + """ + Application entry point + """ + logging.basicConfig(level=logging.DEBUG) + # create the application and the main window + app = QtWidgets.QApplication(sys.argv) + app.setStyle(QtWidgets.QStyleFactory.create("fusion")) + window = QtWidgets.QMainWindow() + + # setup ui + ui = example.Ui_MainWindow() + ui.setupUi(window) + ui.bt_delay_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + ui.bt_instant_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + ui.bt_menu_button_popup.addActions([ + ui.actionAction, + ui.actionAction_C + ]) + window.setWindowTitle("Native example") + + # tabify dock widgets to show bug #6 + window.tabifyDockWidget(ui.dockWidget1, ui.dockWidget2) + + # auto quit after 2s when testing on travis-ci + if "--travis" in sys.argv: + QtCore.QTimer.singleShot(2000, app.exit) + + # run + window.show() + app.exec_() + + +if __name__ == "__main__": + main()