Skip to content

Commit c7b3943

Browse files
authored
Merge pull request #6 from tbirdso/add-blog-v2-resources
ENH: Add example button for updating styling at runtime
2 parents a3d83ad + 86d5751 commit c7b3943

File tree

6 files changed

+57
-2
lines changed

6 files changed

+57
-2
lines changed

Modules/Scripted/Example/CMakeLists.txt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,21 @@ set(MODULE_NAME Example)
44
#-----------------------------------------------------------------------------
55
set(MODULE_PYTHON_SCRIPTS
66
${MODULE_NAME}.py
7+
${MODULE_NAME}Lib/__init__.py
78
)
89

910
set(MODULE_PYTHON_RESOURCES
10-
Resources/Icons/${MODULE_NAME}.png
11+
Resources/Icons/Example.png
12+
Resources/slicerorg.qss
1113
)
1214

15+
slicerFunctionAddPythonQtResources(MODULE_PYTHON_QRC_RESOURCES
16+
${MODULE_NAME}Lib/${MODULE_NAME}.qrc)
17+
1318
#-----------------------------------------------------------------------------
1419
slicerMacroBuildScriptedModule(
1520
NAME ${MODULE_NAME}
16-
SCRIPTS ${MODULE_PYTHON_SCRIPTS}
21+
SCRIPTS ${MODULE_PYTHON_SCRIPTS} ${MODULE_PYTHON_QRC_RESOURCES}
1722
RESOURCES ${MODULE_PYTHON_RESOURCES}
1823
WITH_GENERIC_TESTS
1924
)

Modules/Scripted/Example/Example.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
from slicer.ScriptedLoadableModule import *
55
import logging
66

7+
from ExampleLib import ExampleResources as Resources
8+
79
#
810
# Example
911
#
@@ -38,11 +40,16 @@ class ExampleWidget(ScriptedLoadableModuleWidget):
3840
https://github.com/Slicer/Slicer/blob/master/Base/Python/slicer/ScriptedLoadableModule.py
3941
"""
4042

43+
customQssEnabled = False
44+
4145
def setup(self):
4246
ScriptedLoadableModuleWidget.setup(self)
4347

4448
# Instantiate and connect widgets ...
4549

50+
# Custom toolbar for applying style
51+
self.modifyWindowUI()
52+
4653
#
4754
# Parameters Area
4855
#
@@ -133,6 +140,27 @@ def onApplyButton(self):
133140
imageThreshold = self.imageThresholdSliderWidget.value
134141
logic.run(self.inputSelector.currentNode(), self.outputSelector.currentNode(), imageThreshold, enableScreenshotsFlag)
135142

143+
def modifyWindowUI(self):
144+
mainToolBar = slicer.util.findChild(slicer.util.mainWindow(), 'MainToolBar')
145+
146+
self.CustomToolBar = qt.QToolBar("CustomToolBar")
147+
self.CustomToolBar.name = "CustomToolBar"
148+
slicer.util.mainWindow().insertToolBar(mainToolBar, self.CustomToolBar)
149+
150+
moduleIcon = qt.QIcon(":/Icons/Restyle.png")
151+
self.StyleAction = self.CustomToolBar.addAction(moduleIcon, "")
152+
self.StyleAction.triggered.connect(self.toggleStyle)
153+
154+
def toggleStyle(self):
155+
if self.customQssEnabled:
156+
with open(self.resourcePath("slicerorg.qss"),"r") as fh:
157+
style = fh.read()
158+
for widget in [slicer.app]:
159+
widget.styleSheet = style
160+
else:
161+
slicer.app.styleSheet = ''
162+
self.customQssEnabled = not self.customQssEnabled
163+
136164
#
137165
# ExampleLogic
138166
#
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!DOCTYPE RCC>
2+
<!--
3+
See http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Developers/Build_system/Qt_resource_files for more information.
4+
-->
5+
6+
<RCC version="1.0">
7+
8+
<qresource prefix="/">
9+
<file>Icons/Restyle.png</file>
10+
</qresource>
11+
12+
</RCC>
20.5 KB
Loading

Modules/Scripted/Example/ExampleLib/__init__.py

Whitespace-only changes.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
QWidget{color:#576071;
2+
background-color: #dbdbdb;
3+
font-family: "Helvetica","Arial"}
4+
QPushButton { background-color: #129A68;
5+
color: #FFFFFF;
6+
border: 2px solid #dbdbdb;
7+
border-radius:4px}
8+
QPushButton:hover { background-color: #dbdbdb;
9+
color: #129A68;
10+
border-radius:4px}

0 commit comments

Comments
 (0)