git clone https://git.lucas.co/hou-control.git
python3.11libs/hc/hctab.py (3.9K)
1 import hou
2 import types
3
4 class HCTab():
5 def __init__(self, hou_tab):
6 self.hou_tab = hou_tab
7
8 def initialize(self):
9 """Per-pane setup hook. Override in subclasses to apply pane-type
10 defaults, register hooks, set viewport prefs, etc. Called by factory
11 callers (e.g. HCLayout.launchFloating) after a pane tab is created."""
12 return
13
14 """ Status """
15
16 def close(self):
17 self.hou_tab.close()
18
19 def closeOtherTabs(self):
20 from .hcpane import HCPane
21 for tab in self.pane().tabs():
22 if tab != self.tab:
23 tab.close()
24
25 def name(self):
26 return self.hou_tab.name()
27
28 def pane(self):
29 from .hcpane import HCPane
30 return HCPane(self.hou_tab.pane())
31
32 def setCurrent(self):
33 self.hou_tab.setIsCurrentTab()
34
35 """ Type """
36
37 def tab_type(self):
38 return 'HCTab'
39
40 def setTypeDetailsView(self):
41 self.setType(hou.paneTabType.DetailsView)
42
43 def setTypeNetworkEditor(self):
44 self.setType(hou.paneTabType.NetworkEditor)
45
46 def setTypeParm(self):
47 self.setType(hou.paneTabType.Parm)
48
49 def setTypePythonShell(self):
50 self.setType(hou.paneTabType.PythonShell)
51
52 def setTypeSceneViewer(self):
53 self.setType(hou.paneTabType.SceneViewer)
54
55 def setType(self, tab_type):
56 tab_type_map = {
57 'AssetBrowser': hou.paneTabType.AssetBrowser,
58 'ApexEditor': hou.paneTabType.ApexEditor,
59 'BundleList': hou.paneTabType.BundleList,
60 'ChannelEditor': hou.paneTabType.ChannelEditor,
61 'ChannelList': hou.paneTabType.ChannelList,
62 'ChannelViewer': hou.paneTabType.ChannelViewer,
63 'CompositorViewer': hou.paneTabType.CompositorViewer,
64 'ContextViewer': hou.paneTabType.ContextViewer,
65 'DataTree': hou.paneTabType.DataTree,
66 'DetailsView': hou.paneTabType.DetailsView,
67 'EngineSessionSync': hou.paneTabType.EngineSessionSync,
68 'HandleList': hou.paneTabType.HandleList,
69 'HelpBrowser': hou.paneTabType.HelpBrowser,
70 'IPRViewer': hou.paneTabType.IPRViewer,
71 'LightLinker': hou.paneTabType.LightLinker,
72 'MaterialPalette': hou.paneTabType.MaterialPalette,
73 'NetworkEditor': hou.paneTabType.NetworkEditor,
74 'OutputViewer': hou.paneTabType.OutputViewer,
75 'Parm': hou.paneTabType.Parm,
76 'ParmSpreadsheet': hou.paneTabType.ParmSpreadsheet,
77 'PerformanceMonitor': hou.paneTabType.PerformanceMonitor,
78 'PythonPanel': hou.paneTabType.PythonPanel,
79 'PythonShell': hou.paneTabType.PythonShell,
80 'RenderGallery': hou.paneTabType.RenderGallery,
81 'SceneViewer': hou.paneTabType.SceneViewer,
82 'ShaderViewer': hou.paneTabType.ShaderViewer,
83 'TakeList': hou.paneTabType.TakeList,
84 'Textport': hou.paneTabType.Textport,
85 'TreeView': hou.paneTabType.TreeView
86 }
87 tab = self.hou_tab.setType(type)
88 return tab
89
90
91 """ UI """
92
93 def hasNetworkControls(self):
94 return self.hou_tab.hasNetworkControls()
95
96 def hcPanel(self, list_items):
97 HCSession.hcPanel(list_items)
98
99 def isPin(self):
100 return self.hou_tab.isPin()
101
102 def isShowingNetworkControls(self):
103 value = self.hou_tab.isShowingNetworkControls()
104 return value
105
106 def setPin(self, value):
107 self.hou_tab.setPin(value)
108
109 def showNetworkControls(self, value):
110 self.hou_tab.showNetworkControls(value)
111
112 def toggleNetworkControls(self):
113 if self.hasNetworkControls():
114 self.showNetworkControls(not self.isShowingNetworkControls())
115
116 def togglePin(self):
117 self.setPin(not self.isPin())
118