git.lucas.co / hou-control
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