Browse Source

Added Alignment feature to the Label

pull/99/head
Eugenio Parodi 3 years ago
parent
commit
fa7396f79c
  1. 42
      TermTk/TTkUiTools/properties/label.py
  2. 19
      TermTk/TTkWidgets/label.py
  3. 13
      ttkDesigner/app/propertyeditor.py

42
TermTk/TTkUiTools/properties/label.py

@ -20,6 +20,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
from TermTk.TTkCore.constant import TTkK
from TermTk.TTkCore.color import TTkColor
from TermTk.TTkCore.string import TTkString
from TermTk.TTkWidgets.label import TTkLabel
@ -27,12 +28,37 @@ from TermTk.TTkWidgets.label import TTkLabel
TTkLabelProperties = {
'properties' : {
'Text' : {
'init': {'name':'text', 'type':'singleLineTTkString' },
'get': {'cb':TTkLabel.text, 'type':'singleLineTTkString' } ,
'set': {'cb':TTkLabel.setText, 'type':'singleLineTTkString' } },
'init': {'name':'text', 'type':TTkString },
'get': {'cb':TTkLabel.text, 'type':TTkString } ,
'set': {'cb':TTkLabel.setText, 'type':TTkString } },
'Color' : {
'init': {'name':'color', 'type':TTkColor },
'get': {'cb':TTkLabel.color, 'type':TTkColor } ,
'set': {'cb':TTkLabel.setColor, 'type':TTkColor } },
},'signals' : {},'slots' : {}
}
'init': {'name':'color', 'type':TTkColor },
'get': {'cb':TTkLabel.color, 'type':TTkColor } ,
'set': {'cb':TTkLabel.setColor, 'type':TTkColor } },
'Alignment': {
'init': {'name':'alignment', 'type':'singleflag',
'flags': {
'None' : TTkK.NONE ,
'Left' : TTkK.LEFT_ALIGN ,
'Right' : TTkK.RIGHT_ALIGN ,
'Center' : TTkK.CENTER_ALIGN ,
'Justify' : TTkK.JUSTIFY } } ,
'get': {'cb':TTkLabel.alignment, 'type':'singleflag',
'flags': {
'None' : TTkK.NONE ,
'Left' : TTkK.LEFT_ALIGN ,
'Right' : TTkK.RIGHT_ALIGN ,
'Center' : TTkK.CENTER_ALIGN ,
'Justify' : TTkK.JUSTIFY } },
'set': {'cb':TTkLabel.setAlignment,'type':'singleflag',
'flags': {
'None' : TTkK.NONE ,
'Left' : TTkK.LEFT_ALIGN ,
'Right' : TTkK.RIGHT_ALIGN ,
'Center' : TTkK.CENTER_ALIGN ,
'Justify' : TTkK.JUSTIFY } } },
},'signals' : {
},'slots' : {
'setText()' : {'name': 'setText', 'type':str},
'setAlignment()' : {'name': 'setAlignment', 'type':int},
}}

19
TermTk/TTkWidgets/label.py

@ -22,6 +22,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
from TermTk.TTkCore.constant import TTkK
from TermTk.TTkCore.color import TTkColor
from TermTk.TTkCore.string import TTkString
from TermTk.TTkCore.signal import pyTTkSlot
@ -29,7 +30,7 @@ from TermTk.TTkWidgets.widget import TTkWidget
class TTkLabel(TTkWidget):
'''TTkLabel'''
__slots__ = ('_text','_color')
__slots__ = ('_text','_color','_alignment')
def __init__(self, *args, **kwargs):
self._color = kwargs.get('color', TTkColor.RST )
text = kwargs.get('text', TTkString() )
@ -37,11 +38,22 @@ class TTkLabel(TTkWidget):
self._text = text.split('\n')
else:
self._text = TTkString(text).split('\n')
self._alignment = kwargs.get('alignment', TTkK.Alignment.NONE)
self.setDefaultSize(kwargs, max(t.termWidth() for t in self._text), len(self._text))
super().__init__(*args, **kwargs)
self._textUpdated()
def alignment(self):
return self._alignment
@pyTTkSlot(TTkK.Alignment)
def setAlignment(self, alignment: TTkK.Alignment):
if self._alignment == alignment:
return
self._alignment = alignment
self.update()
def color(self):
'''color'''
return self._color
@ -68,9 +80,10 @@ class TTkLabel(TTkWidget):
def paintEvent(self):
forceColor = self.color()!=TTkColor.RST
w = self.width()
for y,text in enumerate(self._text):
self._canvas.drawText(pos=(0,y), text=' '*self.width(), color=self.color(), forceColor=forceColor)
self._canvas.drawText(pos=(0,y), text=text, color=self.color(), forceColor=forceColor)
self._canvas.drawText(pos=(0,y), text=' '*w, color=self.color(), forceColor=forceColor)
self._canvas.drawText(pos=(0,y), text=text, width=w, alignment=self._alignment, color=self.color(), forceColor=forceColor)
def _textUpdated(self):
w, h = self.size()

13
ttkDesigner/app/propertyeditor.py

@ -42,6 +42,11 @@ class PropertyEditor(ttk.TTkGridLayout):
self._makeDetail(widget, *superWidget.getSuperProperties())
def _makeDetail(self, domw, exceptions, exclude):
def _boundValue(_f,_w,_v):
def _ret():
_f(_w,_v)
self._superWidget.updateAll()
return _ret
def _bound(_f,_w,_l):
def _ret(_v):
_f(_w,_l(_v))
@ -178,8 +183,12 @@ class PropertyEditor(ttk.TTkGridLayout):
# Color Fields
def _processTTkColor(name, prop):
getval = prop['get']['cb'](domw)
value = ttk.TTkColorButtonPicker(color=getval, height=1)
value.colorSelected.connect(_bound(prop['set']['cb'],domw,lambda v:v))
value = ttk.TTkWidget(layout=ttk.TTkHBoxLayout(), height=1)
value.layout().addWidget(_cb := ttk.TTkColorButtonPicker(color=getval, height=1))
value.layout().addWidget(_rc := ttk.TTkButton(text=ttk.TTkString('x',ttk.TTkColor.fg('#FFAA00')),maxWidth=3))
_cb.colorSelected.connect(_bound(prop['set']['cb'],domw,lambda v:v))
_rc.clicked.connect(_boundValue(prop['set']['cb'],domw,ttk.TTkColor.RST))
_rc.clicked.connect(lambda :_cb.setColor(ttk.TTkColor.RST))
return ttk.TTkTreeWidgetItem([name,value])
# Layout field
def _processTTkLayout(name, prop):

Loading…
Cancel
Save