git clone https://git.lucas.co/hou-control.git
python3.11libs/hc/hcradial.py (6K)
1 import hou
2
3 #
4 # PaneTab object is retrieved by calling kwargs["pane"]
5 #
6
7 class HCRadial:
8 def __init__(self):
9 return
10
11 def createItem(label="label", pos=0, submenu=False, script="script"):
12 item = hou.ui.createRadialItem(submenu=submenu)
13 item.setLabel(label)
14 item.setScript(script)
15 hou.ui.injectRadialItem(pos, item)
16
17 #
18 # Scene Viewer
19 #
20
21 def sceneViewerMain(**kwargs):
22 menu = hou.ui.createRadialMenu("hc_radial_sceneviewer_main", "HC Radial Scene Viewer Main")
23 createItem(
24 pos=0,
25 label="UI",
26 submenu=True, script="from hc import HCRadial; HCRadial.sceneViewerUI()"
27 )
28 createItem(
29 pos=7,
30 label="Operation bar",
31 script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).toggleOperationBar()"
32 )
33 createItem(
34 pos=6,
35 label="Display bar",
36 script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).toggleDisplayOptionsToolbar()"
37 )
38 createItem(
39 pos=5,
40 label="Selection bar",
41 script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).toggleSelectionBar()"
42 )
43 createItem(
44 pos=4,
45 label="Keycam",
46 script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).keycam()"
47 )
48 return menu
49
50 def sceneViewerLayout(**kwargs):
51 menu = hou.ui.createRadialMenu("hc_radial_sceneviewer_layout", "HC Radial - Scene Viewer Layout")
52 createItem(
53 pos=0,
54 label="DoubleSide",
55 script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).setLayout('DoubleSide')"
56 )
57 createItem(
58 pos=1,
59 label="DoubleStack",
60 script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).setLayout('DoubleStack')"
61 )
62 createItem(
63 pos=2,
64 label="Quad",
65 script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).setLayout('Quad')"
66 )
67 createItem(
68 pos=3,
69 label="QuadBottomSplit",
70 script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).setLayout('QuadBottomSplit')"
71 )
72 createItem(
73 pos=4,
74 label="QuadLeftSplit",
75 script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).setLayout('QuadLeftSplit')"
76 )
77 createItem(
78 pos=5,
79 label="Single",
80 script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).setLayout('Single')"
81 )
82 createItem(
83 pos=6,
84 label="TripleBottomSplit",
85 script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).setLayout('TripleBottomSplit')"
86 )
87 createItem(
88 pos=7,
89 label="TripleLeftSplit",
90 script="from hc import HCSceneViewer; HCSceneViewer(kwargs['pane']).setLayout('TripleLeftSplit')"
91 )
92 return menu
93
94 def sceneViewerUI(**kwargs):
95 menu = hou.ui.createRadialMenu("hc_radial_sceneviewer_ui", "HC Radial - Scene Viewer UI")
96 createItem(
97 pos=0,
98 label="Tabs",
99 script="from hc import HCTab; HCTab(kwargs['pane']).pane().toggleTabs()"
100 )
101 createItem(
102 pos=7,
103 label="Path",
104 script="from hc import HCTab; HCTab(kwargs['pane']).toggleNetworkControls()"
105 )
106 createItem(
107 pos=6,
108 label="Maximize",
109 script="from hc import HCTab; HCTab(kwargs['pane']).pane().toggleMaximize()"
110 )
111 createItem(
112 pos=5,
113 label="Stowbars",
114 script="from hc import HCSession; HCSession().toggleStowbars()"
115 )
116 createItem(
117 pos=4,
118 label="All tabs",
119 script="from hc import HCSession; HCSession().toggleTabs()"
120 )
121 createItem(
122 pos=3,
123 label="All paths",
124 script="from hc import HCSession; HCSession().toggleNetworkControls()"
125 )
126 createItem(
127 pos=2,
128 label="Layout",
129 submenu=True, script="from hc import HCRadial; HCRadial.viewerRadialLayout()"
130 )
131 return menu
132
133
134 def networkEditorMain(**kwargs):
135 menu = hou.ui.createRadialMenu("hc_radial_networkeditor", "HC Radial - Network Editor")
136 createItem(
137 pos=0,
138 submenu=True,
139 label="UI",
140 script="from hc import HCRadial; HCRadial.networkEditorUI()"
141 )
142 createItem(
143 pos=7,
144 label="Menu",
145 script="from hc import HCNetworkEditor; HCNetworkEditor(kwargs['pane']).toggleMenu()"
146 )
147 createItem(
148 pos=6,
149 label="Frame all",
150 script="from hc import HCNetworkEditor; HCNetworkEditor(kwargs['pane']).frameAll()"
151 )
152 return menu
153
154 def networkEditorUI(**kwargs):
155 menu = hou.ui.createRadialMenu("hc_radial_networkeditor", "HC Radial - Network Editor")
156 createItem(
157 pos=0,
158 label="Tabs",
159 script="from hc import HCTab; HCTab(kwargs['pane']).pane().toggleTabs()"
160 )
161 createItem(
162 pos=7,
163 label="Path",
164 script="from hc import HCTab; HCTab(kwargs['pane']).toggleNetworkControls()"
165 )
166 createItem(
167 pos=6,
168 label="All tabs",
169 script="from hc import HCSession; HCSession().toggleTabs()"
170 )
171 createItem(
172 pos=5,
173 label="All paths",
174 script="from hc import HCSession; HCSession().toggleNetworkControls()"
175 )
176 createItem(
177 pos=4,
178 label="Stowbars",
179 script="from hc import HCSession; HCSession().toggleStowbars()"
180 )
181 createItem(
182 pos=3,
183 label="Maximize",
184 script="from hc import HCTab; HCTab(kwargs['pane']).pane().toggleMaximize()"
185 )
186 return menu