Skip to content

Commit 5afecec

Browse files
feat: added hinting and bgcolor to TTkLineEdit
1 parent 228d828 commit 5afecec

2 files changed

Lines changed: 22 additions & 9 deletions

File tree

libs/pyTermTk/TermTk/TTkCore/string.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,8 @@ def __setitem__(self, index:int, value:Any):
163163
def __getitem__(self, index:int):
164164
raise NotImplementedError()
165165

166+
def __bool__(self) -> bool:
167+
return bool(self._text)
166168
def __int__(self) -> int:
167169
return int(self._text)
168170
def __float__(self) -> float:

libs/pyTermTk/TermTk/TTkWidgets/lineedit.py

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222

2323
__all__ = ['TTkLineEdit']
2424

25-
import re
26-
2725
from TermTk.TTkCore.cfg import TTkCfg
2826
from TermTk.TTkCore.log import TTkLog
2927
from TermTk.TTkCore.constant import TTkK
@@ -58,21 +56,26 @@ class EchoMode(int):
5856
'''Display characters as they are entered while editing otherwise display asterisks.'''
5957

6058
classStyle = {
61-
'default': {'color': TTkColor.fg("#dddddd")+TTkColor.bg("#222222"),
62-
'selectedColor': TTkColor.fg("#ffffff")+TTkColor.bg("#008844")},
63-
'disabled': {'color': TTkColor.fg('#888888'),
64-
'selectedColor': TTkColor.fg("#888888")+TTkColor.bg("#444444")},
65-
'focus': {'color': TTkColor.fg("#dddddd")+TTkColor.bg("#000044")},
59+
'default': {'color': TTkColor.fgbg("#dddddd","#222222"),
60+
'bgcolor': TTkColor.fgbg("#666666","#222222")+TTkColor.UNDERLINE,
61+
'selectedColor': TTkColor.fgbg("#ffffff","#008844")},
62+
'disabled': {'color': TTkColor.fg( "#888888"),
63+
'bgcolor': TTkColor.fg( "#444444")+TTkColor.UNDERLINE,
64+
'selectedColor': TTkColor.fgbg("#888888","#444444")},
65+
'focus': {'color': TTkColor.fgbg("#dddddd","#000044"),
66+
'bgcolor': TTkColor.fgbg("#666666","#000044")+TTkColor.UNDERLINE}
6667
}
6768

6869
__slots__ = (
6970
'_text', '_cursorPos', '_offset', '_replace', '_inputType', '_echoMode',
7071
'_selectionFrom', '_selectionTo',
7172
'_clipboard',
73+
'_hint',
7274
# Signals
7375
'returnPressed', 'textChanged', 'textEdited' )
7476
def __init__(self, *,
7577
text:TTkString='',
78+
hint:TTkString='',
7679
inputType:int=TTkK.Input_Text,
7780
echoMode:EchoMode=EchoMode.Normal,
7881
**kwargs) -> None:
@@ -86,6 +89,7 @@ def __init__(self, *,
8689
self._selectionTo = 0
8790
self._replace=False
8891
self._text = TTkString(text)
92+
self._hint = TTkString(hint)
8993
self._inputType = inputType
9094
self._echoMode = echoMode
9195
self._clipboard = TTkClipboard()
@@ -361,7 +365,8 @@ def focusOutEvent(self):
361365
def paintEvent(self, canvas):
362366
style = self.currentStyle()
363367

364-
color = style['color']
368+
color = style['color']
369+
bgcolor = style['bgcolor']
365370
selectColor = style['selectedColor']
366371

367372
w = self.width()
@@ -376,4 +381,10 @@ def paintEvent(self, canvas):
376381
if self._selectionFrom < self._selectionTo:
377382
text = text.setColor(color=selectColor, posFrom=self._selectionFrom, posTo=self._selectionTo)
378383
text = text.substring(self._offset)
379-
canvas.drawText(pos=(0,0), text=text, color=color, width=w)
384+
canvas.fill(color=bgcolor)
385+
if self._text:
386+
canvas.drawTTkString(pos=(0,0), text=text, color=color)
387+
else:
388+
canvas.drawTTkString(pos=(0,0), text=self._hint, color=bgcolor)
389+
390+

0 commit comments

Comments
 (0)