Browse Source

Fixed Visibility in the layers

pull/260/head
Eugenio Parodi 2 years ago
parent
commit
ecd78ac567
  1. 5
      tools/dumbPaintTool/app/canvaslayer.py
  2. 29
      tools/dumbPaintTool/app/layersctrl.py
  3. 3
      tools/dumbPaintTool/app/paintarea.py

5
tools/dumbPaintTool/app/canvaslayer.py

@ -44,10 +44,9 @@ from .const import ToolType
class CanvasLayer():
__slot__ = ('_pos','_name','_visible','_size','_data','_colors','_preview','_offset',
#signals
'nameChanged','visibilityToggled','changed')
'nameChanged','changed')
def __init__(self,name:ttk.TTkString=ttk.TTkString('New')) -> None:
self.changed = ttk.pyTTkSignal()
self.visibilityToggled = ttk.pyTTkSignal(bool)
self._name:ttk.TTkString = ttk.TTkString(name) if isinstance(name,str) else name
self.nameChanged = ttk.pyTTkSignal(ttk.TTkString)
self._pos = (0,0)
@ -345,7 +344,7 @@ class CanvasLayer():
colors[i] = (c + [ttk.TTkColor.RST]*w)[:w]
self._size = (w,h)
self._name = "Pasted"
self._name = ttk.TTkString("Pasted")
def placeFill(self,geometry,tool,glyph:str,color:ttk.TTkColor,glyphEnabled=True,preview=False):
ox,oy = self._offset

29
tools/dumbPaintTool/app/layersctrl.py

@ -52,17 +52,13 @@ class _layerButton(ttk.TTkContainer):
'grid':1},
}
__slots__ = ('_CanvasLayer','_first', '_isSelected', '_layerVisible',
'_ledit',
# signals
'visibilityToggled',
__slots__ = ('_canvasLayer','_first', '_isSelected',
'_ledit'
)
def __init__(self, layer:CanvasLayer, **kwargs):
self._CanvasLayer:CanvasLayer = layer
self._canvasLayer:CanvasLayer = layer
self._isSelected = False
self._first = True
self._layerVisible = True
self.visibilityToggled = layer.visibilityToggled
super().__init__(**kwargs|{'layout':ttk.TTkGridLayout()})
self.setPadding(1,1,7,2)
@ -72,10 +68,10 @@ class _layerButton(ttk.TTkContainer):
# self.setFocusPolicy(ttk.TTkK.ClickFocus)
def data(self):
return self._CanvasLayer
return self._canvasLayer
def setData(self, data):
self._CanvasLayer = data
self._canvasLayer = data
self.update()
def setSelected(self, selected:bool=True) -> None:
@ -85,18 +81,17 @@ class _layerButton(ttk.TTkContainer):
@ttk.pyTTkSlot(str)
def _textEdited(self, text):
self._CanvasLayer.setName(text)
self._canvasLayer.setName(text)
def mousePressEvent(self, evt) -> bool:
if evt.x <= 3:
self._layerVisible = not self._layerVisible
self.visibilityToggled.emit(self._layerVisible)
self._canvasLayer.setVisible(not self._canvasLayer.visible())
self.setFocus()
self.update()
return True
def mouseReleaseEvent(self, evt) -> bool:
glbls.layers.selectLayer(self._CanvasLayer)
glbls.layers.selectLayer(self._canvasLayer)
return True
def mouseDoubleClickEvent(self, evt) -> bool:
@ -107,7 +102,7 @@ class _layerButton(ttk.TTkContainer):
def mouseDragEvent(self, evt) -> bool:
drag = ttk.TTkDrag()
drag.setData(self)
name = self._CanvasLayer.name()
name = self._canvasLayer.name()
pm = ttk.TTkCanvas(width=len(name)+4,height=3)
pm.drawBox(pos=(0,0),size=pm.size())
pm.drawText(pos=(2,1), text=name)
@ -123,7 +118,7 @@ class _layerButton(ttk.TTkContainer):
style = self.currentStyle()
borderColor = style['borderColor']
textColor = style['color']
btnVisible = '' if self._layerVisible else ''
btnVisible = '' if self._canvasLayer.visible() else ''
w,h = self.size()
canvas.drawText( pos=(0,0),text=f"{''*(w-7)}",color=borderColor)
canvas.drawText( pos=(0,2),text=f"{''*(w-7)}",color=borderColor)
@ -131,7 +126,7 @@ class _layerButton(ttk.TTkContainer):
canvas.drawText(pos=(0,1),text=f" {btnVisible} - ┃{' '*(w-7)}",color=borderColor)
else:
canvas.drawText(pos=(0,1),text=f" {btnVisible} - ╽{' '*(w-7)}",color=borderColor)
canvas.drawTTkString(pos=(7,1),text=self._CanvasLayer.name(), width=w-9, color=textColor)
canvas.drawTTkString(pos=(7,1),text=self._canvasLayer.name(), width=w-9, color=textColor)
class LayerScrollWidget(ttk.TTkAbstractScrollView):
__slots__ = ('_layers','_layerButtons', '_dropTo')
@ -170,7 +165,7 @@ class LayerScrollWidget(ttk.TTkAbstractScrollView):
# remove unused buttons
for btn in self._layerButtons[len(layers):]:
self.layout().removeWidget(btn)
btn._CanvasLayer.nameChanged.clear()
btn._canvasLayer.nameChanged.clear()
self._layerButtons = self._layerButtons[:len(layers)]
for i,layer in enumerate(layers):

3
tools/dumbPaintTool/app/paintarea.py

@ -420,8 +420,7 @@ class PaintArea(ttk.TTkAbstractScrollView):
self._clipboard.setText(text)
def pasteEvent(self, txt:str):
l = self.newLayer()
l.importTTkString(ttk.TTkString(txt))
glbls.layers.addLayer().importTTkString(ttk.TTkString(txt))
self.update()
return True

Loading…
Cancel
Save