Source code for neurodatapub.utils.qt

# Copyright © 2021-2022 Connectomics Lab
# University Hospital Center and University of Lausanne (UNIL-CHUV), Switzerland,
# and contributors
#
#  This software is distributed under the open-source license Apache 2.0.

"""`neurodatapub.utils.qt`: utils functions for Qt style sheets."""

import pkg_resources


[docs]def return_global_style_sheet(): """ Return the global Qt style sheet of the GUI. Returns ------- style_sheet : str Qt style sheet """ style_sheet = ''' QLabel { font: 12pt "Verdana"; margin-left: 5px; background-color: transparent; } QPushButton { background-color: #3D3D3D; border-style: outset; border: 2px solid #555555; border-radius: 4px; min-width: 20px; icon-size: 20px; font: bold 12pt "Verdana"; margin: 10px; padding:6px 6px; color: #FFFFFF; } QPushButton:pressed { border-style: inset; color: #3D3D3D; background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #dadbde, stop: 1 #f6f7fa); } QPushButton:disabled { background-color: #878787; border-style: outset; border: 2px solid #989898; border-radius: 4px; min-width: 20px; icon-size: 20px; font: bold 12pt "Verdana"; margin: 10px; padding:5px 5px; color: #a9a9a9; } QMainWindow { background-color: #dadbde; } QMainWindow::separator { background: #dadbde; width: 1px; /* when vertical */ height: 1px; /* when horizontal */ } QMainWindow::separator:hover { background: red; } QTabWidget::pane { /* The tab widget frame */ border-top: 2px solid #dadbde; } QTabWidget::tab-bar { left: 5px; /* move to the right by 5px */ } /* Style the tab using the tab sub-control. Note that it reads QTabBar _not_ QTabWidget */ QTabBar { font: bold 12pt "Verdana"; } /* Style the tab using the tab sub-control. Note that it reads QTabBar _not_ QTabWidget */ QTabBar::tab { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #E1E1E1, stop: 0.4 #DDDDDD, stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3); border: 2px solid #C4C4C3; border-bottom-color: #dadbde; /* same as the pane color */ border-top-left-radius: 4px; border-top-right-radius: 4px; padding: 6px; } QTabBar::tab:selected, QTabBar::tab:hover { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #fafafa, stop: 0.4 #f4f4f4, stop: 0.5 #e7e7e7, stop: 1.0 #fafafa); } QTabBar::tab:selected { border-color: #9B9B9B; border-bottom-color: #dadbde; /* same as pane color */ } QTabBar::tab:!selected { margin-top: 2px; /* make non-selected tabs look smaller */ } /* make use of negative margins for overlapping tabs */ QTabBar::tab:selected { /* expand/overlap to the left and right by 4px */ margin-left: -4px; margin-right: -4px; } QTabBar::tab:first:selected { margin-left: 0; /* the first selected tab has nothing to overlap with on the left */ } QTabBar::tab:last:selected { margin-right: 0; /* the last selected tab has nothing to overlap with on the right */ } QTabBar::tab:only-one { margin: 0; /* if there is only one tab, we don't want overlapping margins */ } ''' return style_sheet
[docs]def return_folder_button_style_sheet(): """ Return the Qt style sheet for the traitsui `FileEditor` and `DirectoryEditor`. Returns ------- style_sheet_folder_button : str Qt style sheet """ style_sheet_folder_button = ''' QLabel { font: 12pt "Verdana"; margin-left: 5px; background-color: transparent; } QPushButton { border: 0px solid lightgray; border-radius: 4px; color: transparent; background-color: transparent; min-width: 20px; icon-size: 20px; font: 12pt "Verdana"; margin: 10px; padding: 6px; } QPushButton:pressed { background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #dadbde, stop: 1 #f6f7fa); } ''' return style_sheet_folder_button
[docs]def return_save_json_button_style_sheet(): """ Return the Qt style sheet for the button that saves JSON configuration files. Returns ------- style_sheet_save_json_button : str Qt style sheet """ save_json_icon = pkg_resources.resource_filename( 'neurodatapub', "resources/save_json_icon_50x50.png" ) save_json_icon_pressed = pkg_resources.resource_filename( 'neurodatapub', "resources/save_json_icon_50x50_pressed.png" ) style_sheet_save_json_button = ''' QPushButton {{ color: transparent; background-color: transparent; border-image: url({image}) 3 3 3 3; border-top: 3px transparent; border-bottom: 3px transparent; border-right: 3px transparent; border-left: 3px transparent; min-width: 20px; width: 50px; height: 50px; }} QPushButton:pressed {{ border-image: url({image_pressed}) 3 3 3 3; }} ''' return style_sheet_save_json_button.format( image=save_json_icon, image_pressed=save_json_icon_pressed )