Browse Source

Refined the signal/slots editor events in case of modified widgets in the main window

pull/99/head
Eugenio Parodi 3 years ago
parent
commit
696e3f5023
  1. 1
      TermTk/TTkWidgets/combobox.py
  2. 3
      ttkDesigner/app/designer.py
  3. 21
      ttkDesigner/app/signalsloteditor.py
  4. 2
      ttkDesigner/app/superobj/superwidget.py

1
TermTk/TTkWidgets/combobox.py

@ -137,6 +137,7 @@ class TTkComboBox(TTkWidget):
for item in items:
self.addItem(item)
pyTTkSlot()
def clear(self):
'''clear'''
self._lineEdit.setText("")

3
ttkDesigner/app/designer.py

@ -77,11 +77,12 @@ from .signalsloteditor import SignalSlotEditor
class TTkDesigner(TTkGridLayout):
__slots__ = ('_pippo', '_main', '_windowEditor', '_toolBar', '_sigslotEditor', '_treeInspector',
# Signals
'weModified', 'thingSelected'
'weModified', 'thingSelected', 'widgetNameChanged'
)
def __init__(self, *args, **kwargs):
self.weModified = pyTTkSignal()
self.thingSelected = pyTTkSignal(TTkWidget, TTkWidget)
self.widgetNameChanged = pyTTkSignal(str, str)
super().__init__(*args, **kwargs)

21
ttkDesigner/app/signalsloteditor.py

@ -40,6 +40,8 @@ class _SignalSlotItem(ttk.TTkTreeWidgetItem):
self._signal.currentTextChanged.connect( self._signalChanged)
self._receiver.currentTextChanged.connect(self._receiverChanged)
self._slot.currentTextChanged.connect( self._slotChanged)
self._designer.widgetNameChanged.connect( self._widgetNameChanged)
self._designer.weModified.connect(self.updateWidgets)
self.updateWidgets()
super().__init__([self._sender,self._signal,self._receiver,self._slot], *args, **kwargs)
@ -78,10 +80,9 @@ class _SignalSlotItem(ttk.TTkTreeWidgetItem):
'signal': curSignal,
'slot': curSlot }
@ttk.pyTTkSlot()
def updateWidgets(self):
names = [w.name() for w in self._designer.getWidgets()]
self._sender.addItems(names)
self._receiver.addItems(names)
self._widgetNameChanged()
@staticmethod
def typeToString(t):
@ -94,6 +95,20 @@ class _SignalSlotItem(ttk.TTkTreeWidgetItem):
str : 'str',
None : ''}.get(t,f"UNDEFINED {t}")
@ttk.pyTTkSlot(str, str)
def _widgetNameChanged(self, oldName='', newName=''):
names = [w.name() for w in self._designer.getWidgets()]
def _setCB(cb:ttk.TTkComboBox, base):
text = cb.currentText()
text = text if text!=oldName else newName
cb.clear()
cb.addItems([base]+names)
cb.setCurrentText(text)
_setCB(self._sender, '<sender>')
_setCB(self._receiver, '<receiver>')
@ttk.pyTTkSlot(str)
def _senderChanged(self, text):
self._signalData, _ = self.getSignalSlot(text)

2
ttkDesigner/app/superobj/superwidget.py

@ -62,8 +62,10 @@ class SuperWidget(ttk.TTkWidget):
@ttk.pyTTkSlot(str)
def setSuperName(self, name):
if name and name not in [w.name() for w in self._designer.getWidgets()]:
oldName = self._wid._name
self._wid._name = name
self._designer.weModified.emit()
self._designer.widgetNameChanged.emit(oldName, name)
def getSuperProperties(self):
exceptions = {

Loading…
Cancel
Save