git.lucas.co / hou-control
git clone https://git.lucas.co/hou-control.git

python3.11libs/hc/hclistener.py (2.9K)

  1 import hou
  2 from .session import Session
  3 from .pane import Pane
  4 from .tab import Tab
  5 
  6 
  7 class Listener():
  8     def __init__(self):
  9         self.report_tab = 1
 10         self.tab = None
 11         self.pane = None
 12         self.session = None
 13         self.pane = None
 14         self.tab = None
 15         self.sceneviewer = None
 16         self.networkeditor = None
 17         self.project_path = hou.hipFile.path()
 18         self.network_path = None
 19         self.tab_type = None
 20         self.update_objects()
 21         return
 22 
 23     def start(self):
 24         hou.ui.addEventLoopCallback(self.listener)
 25 
 26     def stop(self):
 27         hou.ui.removeEventLoopCallback(self.listener)
 28 
 29     def update_objects(self):
 30         self.tab = hou.ui.paneTabUnderCursor()
 31         self.pane = hou.ui.paneUnderCursor()
 32 
 33         self.session = Session()
 34         self.pane = Pane(hou.ui.paneUnderCursor())
 35         self.tab = Tab(self.tab)
 36 
 37         if self.tab != None:
 38 
 39             if self.tab.hasNetworkControls():
 40                 self.network_path = self.tab.path()
 41             self.tab_type = self.tab.type()
 42 
 43             if self.tab.type() == "SceneViewer:"
 44                 self.sceneviewer = SceneViewer(self.tab)
 45             else:
 46                 self.sceneviewer = None
 47 
 48             if self.tab.type() == "NetworkEditor":
 49                 self.networkeditor = NetworkEditor(self.tab)
 50             else:
 51                 self.networkeditor = None
 52 
 53     def listener(self):
 54         tab = hou.ui.paneTabUnderCursor()
 55         if tab == None:
 56             hou.session.tab = None
 57         elif tab != hou.session.tab:
 58             print(tab)
 59             self.update_objects()
 60 
 61     def lists(self):
 62         # Arrays for navigating pane tabs
 63         self.tab_types = (
 64             hou.paneTabType.ApexEditor,
 65             hou.paneTabType.CompositorViewer,
 66             hou.paneTabType.DetailsView,
 67             hou.paneTabType.NetworkEditor,
 68             hou.paneTabType.Parm,
 69             hou.paneTabType.PythonPanel,
 70             hou.paneTabType.PythonShell,
 71             hou.paneTabType.SceneViewer,
 72             hou.paneTabType.Textport
 73         )
 74         self.tab_type_names = (
 75             "ApexEditor",
 76             "CompositorViewer",
 77             "DetailsView",
 78             "NetworkEditor",
 79             "Parm",
 80             "PythonPanel",
 81             "PythonShell",
 82             "SceneViewer",
 83             "Textport"
 84         )
 85         self.tab_names = [tab.name() for tab in hou.session.session.tabs()]
 86 
 87         # Populate pane tab labels array
 88         self.tab_labels = []
 89         for tab in self.session.tabs():
 90             index = self.tab_types.index(tab.type())
 91             label = self.tab_type_names[index]
 92             self.tab_labels.append(label)
 93 
 94     def networkPath(self):
 95         return str(hou.session.tab.pwd())
 96 
 97     def projectPath(self):
 98         return hou.hipFile.name()
 99         # ct = self.project_path.count("/")
100         # self.project_path = self.project_path.split("/", ct - 2)[-1]