Browse Source

Added Checkbox and RadioButton Label

pull/19/head
Eugenio Parodi 4 years ago
parent
commit
0067bdc6dc
  1. 1
      .gitignore
  2. 24
      TermTk/TTkGui/theme.py
  3. 19
      TermTk/TTkWidgets/checkbox.py
  4. 19
      TermTk/TTkWidgets/radiobutton.py
  5. 21
      TermTk/libbpytop/__init__.py
  6. 11
      demo/demo.py
  7. 20
      demo/showcase/formwidgets.py

1
.gitignore vendored

@ -10,6 +10,7 @@ tmp
profiler.txt
.vscode
docs/html
experiments
# C extensions
*.so

24
TermTk/TTkGui/theme.py

@ -157,19 +157,27 @@ class TTkTheme():
'''Default to :class:`buttonTextColor`'''
checkboxBorderColor = buttonBorderColor
'''Default to :class:`buttonBorderColor`'''
checkboxTextColor = TTkColor.RST
'''Default to :class:`~TermTk.TTkCore.color.TTkColor.RST`'''
checkboxContentColorFocus = buttonTextColorFocus
'''Default to :class:`buttonTextColorFocus`'''
checkboxBorderColorFocus = buttonBorderColorFocus
'''Default to :class:`buttonBorderColorFocus`'''
checkboxTextColorFocus = TTkColor.fg("#ffff88")+TTkColor.bg("#111111")
'''Default to **TTkColor.fg("#ffff88")+TTkColor.bg("#111111")**'''
radioButtonContentColor = buttonTextColor
'''Default to :class:`buttonTextColor`'''
radioButtonBorderColor = buttonBorderColor
'''Default to :class:`buttonBorderColor`'''
radioButtonContentColorFocus = buttonTextColorFocus
'''Default to :class:`buttonTextColorFocus`'''
radioButtonBorderColorFocus = buttonBorderColorFocus
'''Default to :class:`buttonBorderColorFocus`'''
radioButtonContentColor = checkboxContentColor
'''Default to :class:`checkboxContentColor`'''
radioButtonBorderColor = checkboxBorderColor
'''Default to :class:`checkboxBorderColor`'''
radioButtonTextColor = checkboxTextColor
'''Default to :class:`checkboxTextColor`'''
radioButtonContentColorFocus = checkboxContentColorFocus
'''Default to :class:`checkboxContentColorFocus`'''
radioButtonBorderColorFocus = checkboxBorderColorFocus
'''Default to :class:`checkboxBorderColorFocus`'''
radioButtonTextColorFocus = checkboxTextColorFocus
'''Default to :class:`checkboxTextColorFocus`'''
tabColor = TTkColor.fg("#aaaaaa")
'''Default to **TTkColor.fg("#aaaaaa")**'''

19
TermTk/TTkWidgets/checkbox.py

@ -29,7 +29,7 @@ from TermTk.TTkCore.color import TTkColor
from TermTk.TTkWidgets.widget import *
class TTkCheckbox(TTkWidget):
__slots__ = ('_checked', 'clicked', 'stateChanged')
__slots__ = ('_checked', '_text', 'clicked', 'stateChanged', )
def __init__(self, *args, **kwargs):
TTkWidget.__init__(self, *args, **kwargs)
self._name = kwargs.get('name' , 'TTkCheckbox' )
@ -37,7 +37,8 @@ class TTkCheckbox(TTkWidget):
self.stateChanged = pyTTkSignal(int)
self.clicked = pyTTkSignal(bool)
self._checked = kwargs.get('checked', False )
self.setMinimumSize(3, 1)
self._text = kwargs.get('text', '' )
self.setMinimumSize(3 + len(self._text), 1)
self.setMaximumHeight(1)
self.setFocusPolicy(TTkK.ClickFocus + TTkK.TabFocus)
@ -54,16 +55,18 @@ class TTkCheckbox(TTkWidget):
def paintEvent(self):
if self.hasFocus():
borderColor = TTkCfg.theme.checkboxBorderColorFocus
color = TTkCfg.theme.checkboxContentColorFocus
textColor = TTkCfg.theme.checkboxTextColorFocus
xColor = TTkCfg.theme.checkboxContentColorFocus
else:
borderColor = TTkCfg.theme.checkboxBorderColor
color = TTkCfg.theme.checkboxContentColor
textColor = TTkCfg.theme.checkboxTextColor
xColor = TTkCfg.theme.checkboxContentColor
self._canvas.drawText(pos=(0,0), color=borderColor ,text="[ ]")
self._canvas.drawText(pos=(3,0), color=textColor ,text=self._text)
if self._checked:
self._canvas.drawText(pos=(0,0), color=borderColor ,text="[ ]")
self._canvas.drawText(pos=(1,0), color=color ,text="X")
self._canvas.drawText(pos=(1,0), color=xColor ,text="X")
else:
self._canvas.drawText(pos=(0,0), color=borderColor ,text="[ ]")
self._canvas.drawText(pos=(1,0), color=color ,text=" ")
self._canvas.drawText(pos=(1,0), color=xColor ,text=" ")
def _pressEvent(self):
self._checked = not self._checked

19
TermTk/TTkWidgets/radiobutton.py

@ -30,7 +30,7 @@ from TermTk.TTkWidgets.widget import *
class TTkRadioButton(TTkWidget):
_radioLists = {}
__slots__ = ('_checked', 'clicked')
__slots__ = ('_checked', '_text', 'clicked')
def __init__(self, *args, **kwargs):
# Define Signals
self.clicked = pyTTkSignal()
@ -38,7 +38,8 @@ class TTkRadioButton(TTkWidget):
self._name = kwargs.get('name' , 'TTkRadioButton' )
# self.cehcked = pyTTkSignal()
self._checked = kwargs.get('checked', False )
self.setMinimumSize(3, 1)
self._text = kwargs.get('text', '' )
self.setMinimumSize(3 + len(self._text), 1)
self.setMaximumHeight(1)
self.setFocusPolicy(TTkK.ClickFocus + TTkK.TabFocus)
if self._name not in TTkRadioButton._radioLists:
@ -49,16 +50,18 @@ class TTkRadioButton(TTkWidget):
def paintEvent(self):
if self.hasFocus():
borderColor = TTkCfg.theme.radioButtonBorderColorFocus
color = TTkCfg.theme.radioButtonContentColorFocus
textColor = TTkCfg.theme.radioButtonTextColorFocus
xColor = TTkCfg.theme.radioButtonContentColorFocus
else:
borderColor = TTkCfg.theme.radioButtonBorderColor
color = TTkCfg.theme.radioButtonContentColor
textColor = TTkCfg.theme.radioButtonTextColor
xColor = TTkCfg.theme.radioButtonContentColor
self._canvas.drawText(pos=(0,0), color=borderColor ,text="( )")
self._canvas.drawText(pos=(3,0), color=textColor ,text=self._text)
if self._checked:
self._canvas.drawText(pos=(0,0), color=borderColor ,text="( )")
self._canvas.drawText(pos=(1,0), color=color ,text="X")
self._canvas.drawText(pos=(1,0), color=xColor ,text="X")
else:
self._canvas.drawText(pos=(0,0), color=borderColor ,text="( )")
self._canvas.drawText(pos=(1,0), color=color ,text=" ")
self._canvas.drawText(pos=(1,0), color=xColor ,text=" ")
def _pressEvent(self):
# Uncheck the radio already checked;

21
TermTk/libbpytop/__init__.py

@ -1,4 +1,17 @@
from .input import *
from .term import *
from .colors import *
from .inputkey import *
import platform
if platform.system() == 'Linux':
from .input import *
from .term import *
from .colors import *
from .inputkey import *
elif platform.system() == 'Darwin':
from .input import *
from .term import *
from .colors import *
from .inputkey import *
elif platform.system() == 'Windows':
raise NotImplementedError('Windows OS not yet supported')
elif platform.system() == 'Emscripten':
raise NotImplementedError('Pyodide not yet supported')

11
demo/demo.py

@ -57,7 +57,7 @@ def demoShowcase(root=None, border=True):
leftFrame = ttk.TTkFrame(parent=splitter, layout=ttk.TTkGridLayout(), border=False)
themesFrame = ttk.TTkFrame(title="Theme", border=True, layout=ttk.TTkGridLayout(), maxHeight=5, minHeight=5)
themesFrame = ttk.TTkFrame(title="Theme", border=True, layout=ttk.TTkVBoxLayout(), maxHeight=5, minHeight=5)
listMenu = ttk.TTkList(maxWidth=15, minWidth=10)
leftFrame.layout().addWidget(themesFrame, 0, 0)
@ -66,12 +66,9 @@ def demoShowcase(root=None, border=True):
mainFrame = ttk.TTkFrame(parent=splitter, layout=ttk.TTkGridLayout(), border=False)
# Themes
themesFrame.layout().addWidget(r1 := ttk.TTkRadioButton(name="theme",maxWidth=3),0,0)
themesFrame.layout().addWidget(ttk.TTkLabel(text='ASCII') ,0,1)
themesFrame.layout().addWidget(r2 := ttk.TTkRadioButton(name="theme",maxWidth=3, checked=True),1,0)
themesFrame.layout().addWidget(ttk.TTkLabel(text='UTF-8') ,1,1)
themesFrame.layout().addWidget(r3 := ttk.TTkRadioButton(name="theme",maxWidth=3),2,0)
themesFrame.layout().addWidget(ttk.TTkLabel(text='Nerd') ,2,1)
themesFrame.layout().addWidget(r1 := ttk.TTkRadioButton(text="ASCII", name="theme"))
themesFrame.layout().addWidget(r2 := ttk.TTkRadioButton(text="UTF-8",name="theme", checked=True))
themesFrame.layout().addWidget(r3 := ttk.TTkRadioButton(text="Nerd",name="theme"))
r1.clicked.connect( lambda : ttk.TTkTheme.loadTheme(ttk.TTkTheme.ASCII))
r2.clicked.connect( lambda : ttk.TTkTheme.loadTheme(ttk.TTkTheme.UTF8 ))

20
demo/showcase/formwidgets.py

@ -84,27 +84,27 @@ def demoFormWidgets(root=None):
win_form1_grid_layout.addWidget(ttk.TTkSpinBox(value=-20, maximum=50, minimum=-50),row,2)
row += 1; win_form1_grid_layout.addWidget(ttk.TTkLabel(text='Checkbox'),row,0)
win_form1_grid_layout.addWidget(ttk.TTkCheckbox(),row,2)
win_form1_grid_layout.addWidget(ttk.TTkCheckbox(text='CheckBox 1'),row,2)
row += 1; win_form1_grid_layout.addWidget(ttk.TTkLabel(text='Checkbox Checked'),row,0)
win_form1_grid_layout.addWidget(ttk.TTkCheckbox(checked=True),row,2)
win_form1_grid_layout.addWidget(ttk.TTkCheckbox(text='CheckBox 2', checked=True),row,2)
row += 1; win_form1_grid_layout.addWidget(ttk.TTkLabel(text='Radio Button (Default)'),row,0)
win_form1_grid_layout.addWidget(ttk.TTkRadioButton(),row,2)
win_form1_grid_layout.addWidget(ttk.TTkRadioButton(text='RadioButton 1'),row,2)
row += 1; win_form1_grid_layout.addWidget(ttk.TTkLabel(text='Radio Button (Default)'),row,0)
win_form1_grid_layout.addWidget(ttk.TTkRadioButton(),row,2)
win_form1_grid_layout.addWidget(ttk.TTkRadioButton(text='RadioButton 2'),row,2)
row += 1; win_form1_grid_layout.addWidget(ttk.TTkLabel(text='Radio Button (Default)'),row,0)
win_form1_grid_layout.addWidget(ttk.TTkRadioButton(),row,2)
win_form1_grid_layout.addWidget(ttk.TTkRadioButton(text='RadioButton 3'),row,2)
row += 1; win_form1_grid_layout.addWidget(ttk.TTkLabel(text='Radio Button (Name One) 1'),row,0)
win_form1_grid_layout.addWidget(ttk.TTkRadioButton(name="Name One"),row,2)
win_form1_grid_layout.addWidget(ttk.TTkRadioButton(text='RadioButton A', name="Name One"),row,2)
row += 1; win_form1_grid_layout.addWidget(ttk.TTkLabel(text='Radio Button (Name One) 1'),row,0)
win_form1_grid_layout.addWidget(ttk.TTkRadioButton(name="Name One"),row,2)
win_form1_grid_layout.addWidget(ttk.TTkRadioButton(text='RadioButton B', name="Name One"),row,2)
row += 1; win_form1_grid_layout.addWidget(ttk.TTkLabel(text='Radio Button (Name Two) 2'),row,0)
win_form1_grid_layout.addWidget(ttk.TTkRadioButton(name="Name Two"),row,2)
win_form1_grid_layout.addWidget(ttk.TTkRadioButton(text='RadioButton x',name="Name Two"),row,2)
row += 1; win_form1_grid_layout.addWidget(ttk.TTkLabel(text='Radio Button (Name One) 1'),row,0)
win_form1_grid_layout.addWidget(ttk.TTkRadioButton(name="Name One"),row,2)
win_form1_grid_layout.addWidget(ttk.TTkRadioButton(text='RadioButton C', name="Name One"),row,2)
row += 1; win_form1_grid_layout.addWidget(ttk.TTkLabel(text='Radio Button (Name Two) 2'),row,0)
win_form1_grid_layout.addWidget(ttk.TTkRadioButton(name="Name Two"),row,2)
win_form1_grid_layout.addWidget(ttk.TTkRadioButton(text='RadioButton y',name="Name Two"),row,2)
row += 1; win_form1_grid_layout.addWidget(ttk.TTkSpacer(),row,0)
return frame

Loading…
Cancel
Save