diff --git a/tools/dumb_paint_lib/layers.py b/tools/dumb_paint_lib/layers.py index bd037ee7..423fa04c 100644 --- a/tools/dumb_paint_lib/layers.py +++ b/tools/dumb_paint_lib/layers.py @@ -28,20 +28,24 @@ sys.path.append(os.path.join(sys.path[0],'../..')) import TermTk as ttk class LayerData(): - __slots__ = ('_name','_data') + __slots__ = ('_name','_data', + #signals + 'nameChanged') def __init__(self,name:ttk.TTkString=ttk.TTkString('New'),data=None) -> None: self._name:ttk.TTkString = ttk.TTkString(name) if type(name)==str else name self._data = data + self.nameChanged = ttk.pyTTkSignal(str) def name(self): return self._name def setName(self,name): + self.nameChanged.emit(name) self._name = name def data(self): return self._data def setData(self,data): self._data = data -class _layerButton(ttk.TTkWidget): +class _layerButton(ttk.TTkContainer): classStyle = { 'default': {'color': ttk.TTkColor.fg("#dddd88")+ttk.TTkColor.bg("#000044"), 'borderColor': ttk.TTkColor.fg('#CCDDDD'), @@ -67,6 +71,7 @@ class _layerButton(ttk.TTkWidget): } __slots__ = ('_layer','_first', '_isSelected', + '_ledit', # signals 'clicked' ) @@ -75,12 +80,25 @@ class _layerButton(ttk.TTkWidget): self._layer:LayerData = layer self._isSelected = False self._first = True - super().__init__(**kwargs) + super().__init__(**kwargs|{'layout':ttk.TTkGridLayout()}) + self.setPadding(1,1,7,2) + self._ledit = ttk.TTkLineEdit(parent=self, text=layer.name(),visible=False) + self._ledit.focusChanged.connect(self._ledit.setVisible) + self._ledit.textEdited.connect(self._textEdited) + + @ttk.pyTTkSlot(str) + def _textEdited(self, text): + self._layer.setName(text) def mouseReleaseEvent(self, evt) -> bool: self.clicked.emit(self) return True + def mouseDoubleClickEvent(self, evt) -> bool: + self._ledit.setVisible(True) + self._ledit.setFocus() + return True + def paintEvent(self, canvas: ttk.TTkCanvas): # if self.isEnabled() and self._checkable: # if self._checked: diff --git a/tools/dumb_paint_lib/maintemplate.py b/tools/dumb_paint_lib/maintemplate.py index de5c97e0..802ace98 100644 --- a/tools/dumb_paint_lib/maintemplate.py +++ b/tools/dumb_paint_lib/maintemplate.py @@ -223,7 +223,7 @@ class PaintTemplate(ttk.TTkAppTemplate): self.setItem(leftPanel , self.LEFT, size=16*2) self.setWidget(self._parea , self.MAIN) self.setItem(ptoolkit , self.TOP, fixed=True) - self.setItem(rightPanel , self.RIGHT, size=50) + self.setItem(rightPanel , self.RIGHT, size=40) self.setMenuBar(appMenuBar:=ttk.TTkMenuBarLayout(), self.TOP) fileMenu = appMenuBar.addMenu("&File") @@ -272,6 +272,7 @@ class PaintTemplate(ttk.TTkAppTemplate): nl = self._parea.newLayer() nl.setName(l.name()) l.setData(nl) + l.nameChanged.connect(nl.setName) def importDocument(self, dd): self._parea.importDocument(dd) @@ -279,7 +280,8 @@ class PaintTemplate(ttk.TTkAppTemplate): # Little Hack that I don't know how to overcome self._layers.layerAdded.disconnect(self._layerAdded) for l in self._parea.canvasLayers(): - self._layers.addLayer(name=l.name(),data=l) + ld = self._layers.addLayer(name=l.name(),data=l) + ld.nameChanged.connect(l.setName) self._layers.layerAdded.connect(self._layerAdded) @ttk.pyTTkSlot() diff --git a/tools/dumb_paint_lib/paintarea.py b/tools/dumb_paint_lib/paintarea.py index 7c174b85..b6f1e0b4 100644 --- a/tools/dumb_paint_lib/paintarea.py +++ b/tools/dumb_paint_lib/paintarea.py @@ -134,6 +134,7 @@ class CanvasLayer(): def name(self): return self._name + @ttk.pyTTkSlot(str) def setName(self, name): self._name = name