Browse Source

Added Pickers in the ttkDesigner

pull/137/head
Eugenio Parodi 3 years ago
parent
commit
bcbbf98963
  1. 6
      TermTk/TTkUiTools/properties/__init__.py
  2. 64
      TermTk/TTkUiTools/properties/filepicker.py
  3. 7
      TermTk/TTkUiTools/properties/label.py
  4. 1
      TermTk/TTkUiTools/properties/texedit.py
  5. 4
      TermTk/TTkUiTools/uiproperties.py
  6. 2
      TermTk/TTkWidgets/TTkPickers/__init__.py
  7. 45
      TermTk/TTkWidgets/TTkPickers/filepicker.py
  8. 10
      TermTk/TTkWidgets/texedit.py
  9. 2
      ttkDesigner/app/designer.py
  10. 4
      ttkDesigner/app/widgetbox.py

6
TermTk/TTkUiTools/properties/__init__.py

@ -1,7 +1,6 @@
# from .about import
from .button import TTkButtonProperties
from .checkbox import TTkCheckboxProperties
from .colorpicker import TTkColorButtonPickerProperties
from .combobox import TTkComboBoxProperties
from .frame import TTkFrameProperties
# from .graph import
@ -24,4 +23,9 @@ from .texedit import TTkTextEditProperties
from .widget import TTkWidgetProperties
from .window import TTkWindowProperties
# Pickers
from .colorpicker import TTkColorButtonPickerProperties
from .filepicker import TTkFileButtonPickerProperties
# Layouts
from .layout import TTkLayoutProperties

64
TermTk/TTkUiTools/properties/filepicker.py

@ -0,0 +1,64 @@
# MIT License
#
# Copyright (c) 2023 Eugenio Parodi <ceccopierangiolieugenio AT googlemail DOT com>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# 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.TTkWidgets.TTkPickers.filepicker import TTkFileButtonPicker
TTkFileButtonPickerProperties = {
'properties' : {
'Path' : {
'init': {'name':'path', 'type':str },
'get': {'cb':TTkFileButtonPicker.path, 'type':str } ,
'set': {'cb':TTkFileButtonPicker.setPath, 'type':str } },
'Caption' : {
'init': {'name':'caption', 'type':str },
'get': {'cb':TTkFileButtonPicker.caption, 'type':str } ,
'set': {'cb':TTkFileButtonPicker.setCaption, 'type':str } },
'Filters' : {
'init': {'name':'filter', 'type':str },
'get': {'cb':TTkFileButtonPicker.filter, 'type':str } ,
'set': {'cb':TTkFileButtonPicker.setFilter, 'type':str } },
'File Mode' : {
'init': {'name':'fileMode', 'type':'singleflag',
'flags': {
'Any File' : TTkK.FileMode.AnyFile ,
'Existing File' : TTkK.FileMode.ExistingFile ,
'Directory' : TTkK.FileMode.Directory } },
'get': {'cb':TTkFileButtonPicker.fileMode, 'type':'singleflag',
'flags': {
'Any File' : TTkK.FileMode.AnyFile ,
'Existing File' : TTkK.FileMode.ExistingFile ,
'Directory' : TTkK.FileMode.Directory } },
'set': {'cb':TTkFileButtonPicker.setFileMode, 'type':'singleflag',
'flags': {
'Any File' : TTkK.FileMode.AnyFile ,
'Existing File' : TTkK.FileMode.ExistingFile ,
'Directory' : TTkK.FileMode.Directory } }, }, },
'signals' : {
'pathPicked(str)' : {'name' : 'pathPicked' , 'type' : str},
'filePicked(str)' : {'name' : 'filePicked' , 'type' : str},
'folderPicked(str)' : {'name' : 'folderPicked', 'type' : str},
},
'slots' : {
}
}

7
TermTk/TTkUiTools/properties/label.py

@ -59,6 +59,7 @@ TTkLabelProperties = {
'Justify' : TTkK.JUSTIFY } } },
},'signals' : {
},'slots' : {
'setText()' : {'name': 'setText', 'type':str},
'setAlignment()' : {'name': 'setAlignment', 'type':int},
}}
'setText(str)' : {'name': 'setText', 'type':str},
'setAlignment(Alignment)' : {'name': 'setAlignment', 'type':TTkK.Alignment},
}
}

1
TermTk/TTkUiTools/properties/texedit.py

@ -47,6 +47,7 @@ TTkTextEditProperties = {
'textChanged()' : {'name': 'textChanged', 'type': None},
},'slots' : {
'setText(str)' : {'name':'setText', 'type':None},
'setColor(TTkColor)' : {'name':'setColor', 'type':TTkColor},
'append(str)' : {'name':'append', 'type':None},
'undo()' : {'name':'undo', 'type':None},
'redo()' : {'name':'redo', 'type':None},

4
TermTk/TTkUiTools/uiproperties.py

@ -28,7 +28,6 @@ TTkUiProperties = {
# Widgets
TTkButton.__name__: TTkButtonProperties,
TTkCheckbox.__name__: TTkCheckboxProperties,
TTkColorButtonPicker.__name__ : TTkColorButtonPickerProperties,
TTkComboBox.__name__: TTkComboBoxProperties,
TTkFrame.__name__: TTkFrameProperties,
TTkLabel.__name__: TTkLabelProperties,
@ -42,6 +41,9 @@ TTkUiProperties = {
TTkTextEdit.__name__: TTkTextEditProperties,
TTkWidget.__name__: TTkWidgetProperties,
TTkWindow.__name__: TTkWindowProperties,
# Pickers
TTkColorButtonPicker.__name__ : TTkColorButtonPickerProperties,
TTkFileButtonPicker.__name__ : TTkFileButtonPickerProperties,
# Layouts
TTkLayout.__name__: TTkLayoutProperties,
}

2
TermTk/TTkWidgets/TTkPickers/__init__.py

@ -1,4 +1,4 @@
from .colorpicker import TTkColorButtonPicker, TTkColorDialogPicker
from .filepicker import TTkFileDialog, TTkFileDialogPicker
from .filepicker import TTkFileDialog, TTkFileDialogPicker, TTkFileButtonPicker
from .textpicker import TTkTextPicker, TTkTextDialogPicker
from .messagebox import TTkMessageBox

45
TermTk/TTkWidgets/TTkPickers/filepicker.py

@ -29,6 +29,7 @@ from TermTk.TTkCore.color import TTkColor
from TermTk.TTkCore.constant import TTkK
from TermTk.TTkCore.cfg import TTkCfg
from TermTk.TTkCore.helper import TTkHelper
from TermTk.TTkCore.signal import pyTTkSlot, pyTTkSignal
from TermTk.TTkCore.string import TTkString
from TermTk.TTkWidgets.lineedit import TTkLineEdit
@ -275,4 +276,46 @@ class TTkFileDialogPicker(TTkWindow):
class TTkFileDialog:
@staticmethod
def getOpenFileName(caption, dir=".", filter="All Files (*)", options=None):
pass
pass
class TTkFileButtonPicker(TTkButton):
__slots__ = ('_filter', '_caption', '_fileMode', '_path'
# Signals
'pathPicked', 'filePicked', 'filesPicked', 'folderPicked')
def __init__(self, *args, **kwargs):
# Signals
self.pathPicked = pyTTkSignal(str)
self.filePicked = pyTTkSignal(str)
self.filesPicked = pyTTkSignal(list)
self.folderPicked = pyTTkSignal(str)
super().__init__(*args, **kwargs)
self._path = kwargs.get('path','.')
self._filter = kwargs.get('filter','All Files (*)')
self._caption = kwargs.get('caption','File Dialog')
self._fileMode = kwargs.get('fileMode',TTkK.FileMode.ExistingFile)
self.clicked.connect(self._fileButtonClicked)
def filter(self): return self._filter
def setFilter(self, filter): self._filter = filter
def caption(self): return self._caption
def setCaption(self, caption): self._caption = caption
def fileMode(self): return self._fileMode
def setFileMode(self, fm): self._fileMode = fm
def path(self): return self._path
def setPath(self, path): self._path = path
@pyTTkSlot()
def _fileButtonClicked(self):
filePicker = TTkFileDialogPicker(pos = (3,3), size=(80,30),
caption=self._caption,
path=self._path,
filter=self._filter,
fileMode=self._fileMode)
filePicker.pathPicked.connect(self.pathPicked.emit)
filePicker.filePicked.connect(self.filePicked.emit)
filePicker.filesPicked.connect(self.filesPicked.emit)
filePicker.folderPicked.connect(self.folderPicked.emit)
TTkHelper.overlay(None, filePicker, 5, 5, True)

10
TermTk/TTkWidgets/texedit.py

@ -293,6 +293,10 @@ class TTkTextEditView(TTkAbstractScrollView):
self.viewChanged.emit()
self.update()
@pyTTkSlot(TTkColor)
def setColor(self, color):
self.textCursor().setColor(color)
@pyTTkSlot(TTkTextCursor)
def _cursorPositionChanged(self, cursor):
if cursor == self._textCursor:
@ -579,8 +583,8 @@ class TTkTextEdit(TTkAbstractScrollArea):
'multiLine',
'lineWrapMode', 'setLineWrapMode',
'wordWrapMode', 'setWordWrapMode',
'textCursor', 'setFocus',
'copy', 'paste',
'textCursor', 'setFocus', 'setColor',
'cut', 'copy', 'paste',
'undo', 'redo', 'isUndoAvailable', 'isRedoAvailable',
# Export Methods,
'toAnsi', 'toRawText', 'toPlainText', # 'toHtml', 'toMarkdown',
@ -613,6 +617,8 @@ class TTkTextEdit(TTkAbstractScrollArea):
self.textCursor = self._textEditView.textCursor
self.setFocus = self._textEditView.setFocus
self.multiLine = self._textEditView.multiLine
self.setColor = self._textEditView.setColor
self.cut = self._textEditView.cut
self.copy = self._textEditView.copy
self.paste = self._textEditView.paste
self.undo = self._textEditView.undo

2
ttkDesigner/app/designer.py

@ -250,7 +250,7 @@ class TTkDesigner(TTkGridLayout):
@pyTTkSlot()
def save(self):
return self.saveAs()
return self._saveToFile(os.path.join(self._currentPath,self._fileName))
def _saveToFile(self, fileName):
TTkLog.info(f"Saving to: {fileName}")

4
ttkDesigner/app/widgetbox.py

@ -60,8 +60,8 @@ dWidgets = {
"Resizable Frame" : { "class":ttk.TTkResizableFrame, "params":{'size':(20,5)}},
},
'Pickers':{
"Color Picker" : { "class":ttk.TTkColorButtonPicker, "params":{'size':(6,3), 'border':True}},
"File Picker" : { "class":ttk.TTkButton, "params":{'size':(20,3)}, "disabled": True},
"Color Picker" : { "class":ttk.TTkColorButtonPicker, "params":{'size':( 6,3), 'border':True}},
"File Picker" : { "class":ttk.TTkFileButtonPicker, "params":{'size':(20,3), 'border':True}},
"Date Picker" : { "class":ttk.TTkButton, "params":{'size':(20,3)}, "disabled": True},
"TtkString Picker" : { "class":ttk.TTkButton, "params":{'size':(20,3)}, "disabled": True},
},

Loading…
Cancel
Save