Browse Source

Add Key Press to buttons/checkbox/combobox/radiobutton

pull/11/head
Eugenio Parodi 5 years ago
parent
commit
e2d9c0ab17
  1. 4
      TermTk/TTkCore/helper.py
  2. 2
      TermTk/TTkGui/theme.py
  3. 19
      TermTk/TTkWidgets/button.py
  4. 13
      TermTk/TTkWidgets/checkbox.py
  5. 22
      TermTk/TTkWidgets/combobox.py
  6. 12
      TermTk/TTkWidgets/radiobutton.py

4
TermTk/TTkCore/helper.py

@ -223,7 +223,7 @@ class TTkHelper:
def nextFocus(widget):
rootWidget = TTkHelper.rootOverlay(widget)
if not rootWidget:
TTkHelper._rootWidget
rootWidget = TTkHelper._rootWidget
if widget == rootWidget:
widget = None
first = None
@ -246,7 +246,7 @@ class TTkHelper:
def prevFocus(widget):
rootWidget = TTkHelper.rootOverlay(widget)
if not rootWidget:
TTkHelper._rootWidget
rootWidget = TTkHelper._rootWidget
if widget == rootWidget:
widget = None
prev = None

2
TermTk/TTkGui/theme.py

@ -222,6 +222,8 @@ class TTkTheme():
comboboxContentColor = TTkColor.fg("#dddd88")+TTkColor.bg("#111111")
comboboxBorderColor = buttonBorderColor
comboboxContentColorFocus = TTkColor.fg("#dddd88")+TTkColor.bg("#111111")
comboboxBorderColorFocus = buttonBorderColorFocus
checkboxContentColor = buttonTextColor
checkboxBorderColor = buttonBorderColor

19
TermTk/TTkWidgets/button.py

@ -30,7 +30,7 @@ from TermTk.TTkWidgets.widget import *
class TTkButton(TTkWidget):
__slots__ = (
'_text', '_border', '_pressed', 'clicked',
'_text', '_border', '_pressed', 'clicked', '_keyPressed',
'_borderColor', '_textColor',
'_borderColorClicked', '_textColorClicked',
'_borderColorFocus', '_textColorFocus'
@ -51,6 +51,7 @@ class TTkButton(TTkWidget):
self._textColorFocus = TTkCfg.theme.buttonTextColorFocus
self._pressed = False
self._keyPressed = False
if self._border:
self.setMinimumSize(2+len(self._text), 3)
else:
@ -89,6 +90,10 @@ class TTkButton(TTkWidget):
self._canvas.drawText(pos=(0,y), color=borderColor ,text='[')
self._canvas.drawText(pos=(1+len(text),y), color=borderColor ,text=']')
self._canvas.drawText(pos=(1,y), color=textColor ,text=text)
if self._keyPressed:
self._keyPressed = False
self._pressed = False
self.update()
def mousePressEvent(self, evt):
# TTkLog.debug(f"{self._text} Test Mouse {evt}")
@ -103,6 +108,18 @@ class TTkButton(TTkWidget):
self.clicked.emit()
return True
def keyEvent(self, evt):
if ( evt.type == TTkK.Character and evt.key==" " ) or \
( evt.type == TTkK.SpecialKey and evt.key == TTkK.Key_Enter ):
self._keyPressed = True
self._pressed = True
self.update()
self.clicked.emit()
return True
return False
@property
def text(self):
return self._text

13
TermTk/TTkWidgets/checkbox.py

@ -61,9 +61,20 @@ class TTkCheckbox(TTkWidget):
self._canvas.drawText(pos=(0,0), color=borderColor ,text="[ ]")
self._canvas.drawText(pos=(1,0), color=color ,text=" ")
def mousePressEvent(self, evt):
def _pressEvent(self):
self._checked = not self._checked
self.clicked.emit(self._checked)
self.stateChanged.emit(self.checkState())
self.update()
return True
def mousePressEvent(self, evt):
self._pressEvent()
return True
def keyEvent(self, evt):
if ( evt.type == TTkK.Character and evt.key==" " ) or \
( evt.type == TTkK.SpecialKey and evt.key == TTkK.Key_Enter ):
self._pressEvent()
return True
return False

22
TermTk/TTkWidgets/combobox.py

@ -48,8 +48,13 @@ class TTkComboBox(TTkWidget):
self.setFocusPolicy(TTkK.ClickFocus + TTkK.TabFocus)
def paintEvent(self):
color = TTkCfg.theme.comboboxContentColor
borderColor = TTkCfg.theme.comboboxBorderColor
if self.hasFocus():
borderColor = TTkCfg.theme.comboboxBorderColorFocus
color = TTkCfg.theme.comboboxContentColorFocus
else:
borderColor = TTkCfg.theme.comboboxBorderColor
color = TTkCfg.theme.comboboxContentColor
if self._id == -1:
text = "- select -"
else:
@ -66,7 +71,7 @@ class TTkComboBox(TTkWidget):
self.setFocus()
self.update()
def mousePressEvent(self, evt):
def _pressEvent(self):
frameHeight = len(self._list) + 2
frameWidth = self.width()
if frameHeight > 20: frameHeight = 20
@ -81,3 +86,14 @@ class TTkComboBox(TTkWidget):
TTkHelper.overlay(self, frame, 0, 0)
self.update()
return True
def mousePressEvent(self, evt):
self._pressEvent()
return True
def keyEvent(self, evt):
if ( evt.type == TTkK.Character and evt.key==" " ) or \
( evt.type == TTkK.SpecialKey and evt.key == TTkK.Key_Enter ):
self._pressEvent()
return True
return False

12
TermTk/TTkWidgets/radiobutton.py

@ -59,7 +59,7 @@ class TTkRadioButton(TTkWidget):
self._canvas.drawText(pos=(0,0), color=borderColor ,text="( )")
self._canvas.drawText(pos=(1,0), color=color ,text=" ")
def mousePressEvent(self, evt):
def _pressEvent(self):
# Uncheck the radio already checked;
for radio in TTkRadioButton._radioLists[self._name]:
if self != radio != None:
@ -68,4 +68,14 @@ class TTkRadioButton(TTkWidget):
radio.update()
self._checked = True
self.update()
def mousePressEvent(self, evt):
self._pressEvent()
return True
def keyEvent(self, evt):
if ( evt.type == TTkK.Character and evt.key==" " ) or \
( evt.type == TTkK.SpecialKey and evt.key == TTkK.Key_Enter ):
self._pressEvent()
return True
return False

Loading…
Cancel
Save