Skip to content

Commit 7597980

Browse files
chore: autogen signals and rewrite forwarded as properties (#410)
1 parent e24fdcb commit 7597980

13 files changed

Lines changed: 864 additions & 301 deletions

File tree

.vscode/launch.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@
1919
"request": "launch",
2020
"program": "${file}",
2121
"console": "integratedTerminal",
22-
"justMyCode": true,
22+
"justMyCode": false,
23+
"env": {
24+
"PYTHONPATH": "libs/pyTermTk/"
25+
},
2326
},
2427
{
2528
"name": "Python: Current File with Args",
@@ -28,6 +31,9 @@
2831
"program": "${file}",
2932
"console": "integratedTerminal",
3033
"justMyCode": true,
34+
"env": {
35+
"PYTHONPATH": "libs/pyTermTk/"
36+
},
3137
"args": [
3238
"tools/webExporter/js/ttkproxy.js"
3339
]

libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/filetree.py

Lines changed: 146 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class TTkFileTree(TTkTree):
4848
'setFilter']
4949
)
5050

51-
__slots__ = ('_fileTreeWidget', *_ttk_forward.signals)
51+
__slots__ = ('_fileTreeWidget')
5252

5353
def __init__(self, **kwargs) -> None:
5454
wkwargs = kwargs.copy()
@@ -58,10 +58,152 @@ def __init__(self, **kwargs) -> None:
5858

5959
super().__init__(**kwargs, treeWidget=self._fileTreeWidget)
6060

61-
for _attr in self._ttk_forward.signals:
62-
setattr(self,_attr,getattr(self._fileTreeWidget,_attr))
63-
6461
#--FORWARD-AUTOGEN-START--#
62+
@property
63+
def itemActivated(self) -> pyTTkSignal:
64+
'''
65+
.. seealso:: this method is forwarded to :py:meth:`TTkFileTreeWidget.itemActivated`
66+
67+
This signal is emitted when the user activates an item by double-clicking
68+
or pressing a special key (e.g., Enter).
69+
70+
:param item: the item that was clicked.
71+
:type item: :py:class:`TTkTreeWidgetItem`
72+
:param col: the item's column that was clicked.
73+
:type col: int
74+
'''
75+
return self._fileTreeWidget.itemActivated
76+
@property
77+
def itemChanged(self) -> pyTTkSignal:
78+
'''
79+
.. seealso:: this method is forwarded to :py:meth:`TTkFileTreeWidget.itemChanged`
80+
81+
This signal is emitted when the contents of the column in the specified item changes.
82+
83+
:param item: the item reported by this signal
84+
:type item: :py:class:`TTkTreeWidgetItem`
85+
:param col: the item's column
86+
:type col: int
87+
'''
88+
return self._fileTreeWidget.itemChanged
89+
@property
90+
def itemClicked(self) -> pyTTkSignal:
91+
'''
92+
.. seealso:: this method is forwarded to :py:meth:`TTkFileTreeWidget.itemClicked`
93+
94+
This signal is emitted when the user clicks inside the widget.
95+
96+
If no item was clicked, no signal will be emitted.
97+
98+
:param item: the item that was clicked.
99+
:type item: :py:class:`TTkTreeWidgetItem`
100+
:param col: the item's column that was clicked.
101+
:type col: int
102+
'''
103+
return self._fileTreeWidget.itemClicked
104+
@property
105+
def itemExpanded(self) -> pyTTkSignal:
106+
'''
107+
.. seealso:: this method is forwarded to :py:meth:`TTkFileTreeWidget.itemExpanded`
108+
109+
This signal is emitted when the specified item is expanded so that all of its children are displayed.
110+
111+
:param item: the item reported by this signal
112+
:type item: :py:class:`TTkTreeWidgetItem`
113+
'''
114+
return self._fileTreeWidget.itemExpanded
115+
@property
116+
def itemCollapsed(self) -> pyTTkSignal:
117+
'''
118+
.. seealso:: this method is forwarded to :py:meth:`TTkFileTreeWidget.itemCollapsed`
119+
120+
This signal is emitted when the specified item is collapsed so that none of its children are displayed.
121+
122+
:param item: the item reported by this signal
123+
:type item: :py:class:`TTkTreeWidgetItem`
124+
'''
125+
return self._fileTreeWidget.itemCollapsed
126+
@property
127+
def itemDoubleClicked(self) -> pyTTkSignal:
128+
'''
129+
.. seealso:: this method is forwarded to :py:meth:`TTkFileTreeWidget.itemDoubleClicked`
130+
131+
This signal is emitted when the user double clicks inside the widget.
132+
133+
If no item was double clicked, no signal will be emitted.
134+
135+
:param item: the item that was clicked.
136+
:type item: :py:class:`TTkTreeWidgetItem`
137+
:param col: the item's column that was clicked.
138+
:type col: int
139+
'''
140+
return self._fileTreeWidget.itemDoubleClicked
141+
@property
142+
def fileClicked(self) -> pyTTkSignal:
143+
'''
144+
.. seealso:: this method is forwarded to :py:meth:`TTkFileTreeWidget.fileClicked`
145+
146+
This signal is emitted when a file is clicked
147+
148+
:param file:
149+
:type file: :py:class:`TTkFileTreeWidgetItem`
150+
'''
151+
return self._fileTreeWidget.fileClicked
152+
@property
153+
def folderClicked(self) -> pyTTkSignal:
154+
'''
155+
.. seealso:: this method is forwarded to :py:meth:`TTkFileTreeWidget.folderClicked`
156+
157+
This signal is emitted when a folder is clicked
158+
159+
:param folder:
160+
:type folder: :py:class:`TTkFileTreeWidgetItem`
161+
'''
162+
return self._fileTreeWidget.folderClicked
163+
@property
164+
def fileDoubleClicked(self) -> pyTTkSignal:
165+
'''
166+
.. seealso:: this method is forwarded to :py:meth:`TTkFileTreeWidget.fileDoubleClicked`
167+
168+
This signal is emitted when a file is doubleclicked
169+
170+
:param file:
171+
:type file: :py:class:`TTkFileTreeWidgetItem`
172+
'''
173+
return self._fileTreeWidget.fileDoubleClicked
174+
@property
175+
def folderDoubleClicked(self) -> pyTTkSignal:
176+
'''
177+
.. seealso:: this method is forwarded to :py:meth:`TTkFileTreeWidget.folderDoubleClicked`
178+
179+
This signal is emitted when a folder is doubleclicked
180+
181+
:param folder:
182+
:type folder: :py:class:`TTkFileTreeWidgetItem`
183+
'''
184+
return self._fileTreeWidget.folderDoubleClicked
185+
@property
186+
def fileActivated(self) -> pyTTkSignal:
187+
'''
188+
.. seealso:: this method is forwarded to :py:meth:`TTkFileTreeWidget.fileActivated`
189+
190+
This signal is emitted when a file is activated
191+
192+
:param file:
193+
:type file: :py:class:`TTkFileTreeWidgetItem`
194+
'''
195+
return self._fileTreeWidget.fileActivated
196+
@property
197+
def folderActivated(self) -> pyTTkSignal:
198+
'''
199+
.. seealso:: this method is forwarded to :py:meth:`TTkFileTreeWidget.folderActivated`
200+
201+
This signal is emitted when a fiilder is activated
202+
203+
:param folder:
204+
:type folder: :py:class:`TTkFileTreeWidgetItem`
205+
'''
206+
return self._fileTreeWidget.folderActivated
65207
def setHeaderLabels(self, labels:TTkString) -> None:
66208
'''
67209
.. seealso:: this method is forwarded to :py:meth:`TTkFileTreeWidget.setHeaderLabels`

libs/pyTermTk/TermTk/TTkWidgets/TTkModelView/filetreewidget.py

Lines changed: 55 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -77,52 +77,64 @@ class TTkFileTreeWidget(TTkTreeWidget):
7777
root.mainloop()
7878
'''
7979

80-
fileClicked:pyTTkSignal
81-
'''
82-
This signal is emitted when a file is clicked
80+
@property
81+
def fileClicked(self) -> pyTTkSignal:
82+
'''
83+
This signal is emitted when a file is clicked
8384
84-
:param file:
85-
:type file: :py:class:`TTkFileTreeWidgetItem`
86-
'''
87-
folderClicked:pyTTkSignal
88-
'''
89-
This signal is emitted when a folder is clicked
85+
:param file:
86+
:type file: :py:class:`TTkFileTreeWidgetItem`
87+
'''
88+
return self._fileClicked
89+
@property
90+
def folderClicked(self) -> pyTTkSignal:
91+
'''
92+
This signal is emitted when a folder is clicked
9093
91-
:param folder:
92-
:type folder: :py:class:`TTkFileTreeWidgetItem`
93-
'''
94-
fileDoubleClicked:pyTTkSignal
95-
'''
96-
This signal is emitted when a file is doubleclicked
94+
:param folder:
95+
:type folder: :py:class:`TTkFileTreeWidgetItem`
96+
'''
97+
return self._folderClicked
98+
@property
99+
def fileDoubleClicked(self) -> pyTTkSignal:
100+
'''
101+
This signal is emitted when a file is doubleclicked
97102
98-
:param file:
99-
:type file: :py:class:`TTkFileTreeWidgetItem`
100-
'''
101-
folderDoubleClicked:pyTTkSignal
102-
'''
103-
This signal is emitted when a folder is doubleclicked
103+
:param file:
104+
:type file: :py:class:`TTkFileTreeWidgetItem`
105+
'''
106+
return self._fileDoubleClicked
107+
@property
108+
def folderDoubleClicked(self) -> pyTTkSignal:
109+
'''
110+
This signal is emitted when a folder is doubleclicked
104111
105-
:param folder:
106-
:type folder: :py:class:`TTkFileTreeWidgetItem`
107-
'''
108-
fileActivated:pyTTkSignal
109-
'''
110-
This signal is emitted when a file is activated
112+
:param folder:
113+
:type folder: :py:class:`TTkFileTreeWidgetItem`
114+
'''
115+
return self._folderDoubleClicked
116+
@property
117+
def fileActivated(self) -> pyTTkSignal:
118+
'''
119+
This signal is emitted when a file is activated
111120
112-
:param file:
113-
:type file: :py:class:`TTkFileTreeWidgetItem`
114-
'''
115-
folderActivated:pyTTkSignal
116-
'''
117-
This signal is emitted when a fiilder is activated
121+
:param file:
122+
:type file: :py:class:`TTkFileTreeWidgetItem`
123+
'''
124+
return self._fileActivated
125+
@property
126+
def folderActivated(self) -> pyTTkSignal:
127+
'''
128+
This signal is emitted when a fiilder is activated
118129
119-
:param folder:
120-
:type folder: :py:class:`TTkFileTreeWidgetItem`
121-
'''
130+
:param folder:
131+
:type folder: :py:class:`TTkFileTreeWidgetItem`
132+
'''
133+
return self._folderActivated
122134

123135
__slots__ = ('_path', '_filter',
124136
# Signals
125-
'fileClicked', 'folderClicked', 'fileDoubleClicked', 'folderDoubleClicked', 'fileActivated', 'folderActivated')
137+
'_fileClicked', '_folderClicked', '_fileDoubleClicked', '_folderDoubleClicked', '_fileActivated', '_folderActivated')
126138
def __init__(self,
127139
path:str='.',
128140
**kwargs) -> None:
@@ -131,12 +143,12 @@ def __init__(self,
131143
:type path: str, optional
132144
'''
133145
# Signals
134-
self.fileClicked = pyTTkSignal(TTkFileTreeWidgetItem)
135-
self.folderClicked = pyTTkSignal(TTkFileTreeWidgetItem)
136-
self.fileDoubleClicked = pyTTkSignal(TTkFileTreeWidgetItem)
137-
self.folderDoubleClicked = pyTTkSignal(TTkFileTreeWidgetItem)
138-
self.fileActivated = pyTTkSignal(TTkFileTreeWidgetItem)
139-
self.folderActivated = pyTTkSignal(TTkFileTreeWidgetItem)
146+
self._fileClicked = pyTTkSignal(TTkFileTreeWidgetItem)
147+
self._folderClicked = pyTTkSignal(TTkFileTreeWidgetItem)
148+
self._fileDoubleClicked = pyTTkSignal(TTkFileTreeWidgetItem)
149+
self._folderDoubleClicked = pyTTkSignal(TTkFileTreeWidgetItem)
150+
self._fileActivated = pyTTkSignal(TTkFileTreeWidgetItem)
151+
self._folderActivated = pyTTkSignal(TTkFileTreeWidgetItem)
140152
self._path = path
141153
self._filter = '*'
142154
super().__init__(**kwargs)

0 commit comments

Comments
 (0)