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]