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