From 934fc17623b4e07f55384df8e0c80c7ad42152bb Mon Sep 17 00:00:00 2001 From: Alex Huszagh Date: Fri, 18 Nov 2022 16:50:07 -0600 Subject: [PATCH] Add example of branchless indicators. --- assets/breeze_dark_branchless.png | Bin 0 -> 27028 bytes assets/breeze_light_branchless.png | Bin 0 -> 25108 bytes example/branchless/README.md | 29 ++++++++ example/branchless/application.py | 101 +++++++++++++++++++++++++++ example/branchless/stylesheet.qss.in | 43 ++++++++++++ example/shared.py | 11 +-- 6 files changed, 180 insertions(+), 4 deletions(-) create mode 100644 assets/breeze_dark_branchless.png create mode 100644 assets/breeze_light_branchless.png create mode 100644 example/branchless/README.md create mode 100644 example/branchless/application.py create mode 100644 example/branchless/stylesheet.qss.in diff --git a/assets/breeze_dark_branchless.png b/assets/breeze_dark_branchless.png new file mode 100644 index 0000000000000000000000000000000000000000..c52b2e18e31a5e08a89b913c34264033bf6b9b85 GIT binary patch literal 27028 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 Gp$Pyw7&u4( literal 0 HcmV?d00001 diff --git a/assets/breeze_light_branchless.png b/assets/breeze_light_branchless.png new file mode 100644 index 0000000000000000000000000000000000000000..89b113980b75691cd276eb70360a2b936a2e7c3f GIT binary patch literal 25108 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 Wq!RZ^7dY(3z~JfX=d#Wzp$PzJm5f^e literal 0 HcmV?d00001 diff --git a/example/branchless/README.md b/example/branchless/README.md new file mode 100644 index 0000000..56d2f01 --- /dev/null +++ b/example/branchless/README.md @@ -0,0 +1,29 @@ +branchless +========== + +This contains an example widget for a `QTreeView` where the branch indicators are hidden. In order to add these branchless indicators to your project, copy this directory into the [extension](/extension) folder, and then configure with (adding any additional resources or styles as you see fit): + +```bash +python configure.py --extensions=branchless --resource custom.qrc +``` + +## Example + +

Dark

+
+ Breeze Dark theme using branchless indicators for Windows +
+ + +

Light

+
+ Breeze Light theme using branchless indicators for Windows +
diff --git a/example/branchless/application.py b/example/branchless/application.py new file mode 100644 index 0000000..deccd06 --- /dev/null +++ b/example/branchless/application.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python +# +# The MIT License (MIT) +# +# Copyright (c) <2022-Present> +# +# 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. + +import os +import sys + +HOME = os.path.dirname(os.path.realpath(__file__)) +sys.path.insert(0, os.path.dirname(HOME)) + +import widgets +import shared + +parser = shared.create_parser() +args, unknown = shared.parse_args(parser) +QtCore, QtGui, QtWidgets = shared.import_qt(args) +compat = shared.get_compat_definitions(args) +ICON_MAP = shared.get_icon_map(args, compat) + + +def set_stylesheet(args, app, compat): + '''Set the application stylesheet.''' + + if args.stylesheet != 'native': + resource_format = shared.get_resources(args) + qt_path = shared.get_stylesheet(resource_format) + ext_path = os.path.join(HOME, 'stylesheet.qss.in') + stylesheet = shared.read_qtext_file(qt_path, compat) + stylesheet += '\n' + open(ext_path, 'r').read() + app.setStyleSheet(stylesheet) + + +def get_treeviews(parent, depth=1000): + for child in parent.children(): + if isinstance(child, QtWidgets.QTreeView): + yield child + elif depth > 0: + yield from get_treeviews(child, depth - 1) + + +def main(): + 'Application entry point' + + # this is mostly a hack to get simplify using the same UI but with + # minimal additions to modify the stylesheet + app, window = shared.setup_app(args, unknown, compat) + + # setup ui + ui = widgets.Ui() + ui.setup(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('Sample BreezeStyleSheets application.') + + # Add event triggers + ui.actionAction.triggered.connect(ui.about) + ui.actionAction_C.triggered.connect(ui.critical) + + # tabify dock widgets to show bug #6 + window.tabifyDockWidget(ui.dockWidget1, ui.dockWidget2) + + # add object names to all the widgets so we don't have to recreate a UI + for tree in get_treeviews(window): + tree.setObjectName("branchless") + + set_stylesheet(args, app, compat) + return shared.exec_app(args, app, window, compat) + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/example/branchless/stylesheet.qss.in b/example/branchless/stylesheet.qss.in new file mode 100644 index 0000000..0c7185c --- /dev/null +++ b/example/branchless/stylesheet.qss.in @@ -0,0 +1,43 @@ +/** + * BRANCHLESS QTREEVIEW STYLESHEET + * ------------------------------- + */ + +/** + * We disable all the border images for the branch indicators, while + * keeping the images for the branch closed/open and hover variants + * the default. + */ +QTreeView[objectName="branchless"]::branch:has-siblings +{ + border-image: none; + image: none; +} + +QTreeView[objectName="branchless"]::branch:!has-siblings +{ + border-image: none; + image: none; +} + +QTreeView[objectName="branchless"]::branch:has-siblings:adjoins-item +{ + border-image: none; +} + +QTreeView[objectName="branchless"]::branch:!has-children:!has-siblings:adjoins-item +{ + border-image: none; +} + +QTreeView[objectName="branchless"]::branch:has-children:!has-siblings:closed, +QTreeView[objectName="branchless"]::branch:open:has-children:!has-siblings +{ + border-image: none; +} + +QTreeView[objectName="branchless"]::branch:closed:has-children:has-siblings, +QTreeView[objectName="branchless"]::branch:open:has-children:has-siblings +{ + border-image: none; +} diff --git a/example/shared.py b/example/shared.py index af7c7d4..b17d55a 100644 --- a/example/shared.py +++ b/example/shared.py @@ -912,16 +912,19 @@ def setup_app(args, unknown, compat, style_class=None, window_class=None): return app, window +def read_qtext_file(path, compat): + file = compat.QtCore.QFile(path) + file.open(compat.ReadOnly | compat.Text) + stream = compat.QtCore.QTextStream(file) + return stream.readAll() + def set_stylesheet(args, app, compat): '''Set the application stylesheet.''' if args.stylesheet != 'native': resource_format = get_resources(args) stylesheet = get_stylesheet(resource_format) - file = compat.QtCore.QFile(stylesheet) - file.open(compat.ReadOnly | compat.Text) - stream = compat.QtCore.QTextStream(file) - app.setStyleSheet(stream.readAll()) + app.setStyleSheet(read_qtext_file(stylesheet, compat)) def exec_app(args, app, window, compat): '''Show and execute the Qt application.'''