|
|
|
|
|
# TODO
|
|
|
|
|
|
- [ ] Follow [PEP 8](https://www.python.org/dev/peps/pep-0008/) coding style
|
|
|
|
|
|
- [x] Move the Global Constants outside TTk object
|
|
|
|
|
|
- [ ] Add Typing (good luck) https://docs.python.org/3/library/typing.html
|
|
|
|
|
|
- [ ] Remove Duplicate functionalities (i.e. Widget)
|
|
|
|
|
|
- [ ] Use @property/@setter when possible
|
|
|
|
|
|
- [ ] Uniform the setter/getter/signal/slots
|
|
|
|
|
|
- [x] [UTF-8] Handle "Fullwidth" forms characters
|
|
|
|
|
|
https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms
|
|
|
|
|
|
https://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms_(Unicode_block)
|
|
|
|
|
|
https://stackoverflow.com/questions/68412744/count-length-of-value-within-a-cell-with-full-width-characters
|
|
|
|
|
|
- [ ] Handle Zero Width Joiner (i.e.👩🔧 -> 👩🔧👩🏻🔧👩🏻🔧👩🏼🔧👩🏽🔧👩🏾🔧👩🏿🔧):
|
|
|
|
|
|
https://github.com/luchr/WidthInTerminals
|
|
|
|
|
|
- [/] Support Hyperlink: (gnome-terminal)
|
|
|
|
|
|
https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda
|
|
|
|
|
|
- [x] Process child events before parent
|
|
|
|
|
|
- [ ] Rewrite the way focus is handled
|
|
|
|
|
|
https://doc.qt.io/qt-5/focus.html
|
|
|
|
|
|
Ref: https://github.com/ceccopierangiolieugenio/scripts/blob/master/Programming/python/pyqt5/textedit.001.py
|
|
|
|
|
|
|
|
|
|
|
|
## ttkDesigner
|
|
|
|
|
|
- [x] Support widgets in the TTkTree (required in the properties widget)
|
|
|
|
|
|
|
|
|
|
|
|
## Terminal Helper
|
|
|
|
|
|
- [ ] Events
|
|
|
|
|
|
- [x] Window : SIGWINCH triggered when the terminal is resized
|
|
|
|
|
|
|
|
|
|
|
|
## Input Class
|
|
|
|
|
|
- [ ] Return Error if Mouse RE does not match
|
|
|
|
|
|
- [x] Handle the Paste Buffer
|
|
|
|
|
|
- [ ] Investigate the middle mouse button paste
|
|
|
|
|
|
*note: It works only in "INSERT" mode on Vim*
|
|
|
|
|
|
- [x] Handle Special Keys (UP, Down, . . .)
|
|
|
|
|
|
- [x] Handle CTRL-Mouse
|
|
|
|
|
|
- [/] Handle CTRL,ALT,SHIFT + Key (Tab, UP, Down, . . .)
|
|
|
|
|
|
- [x] Handle SHIFT + Tab
|
|
|
|
|
|
- [x] Handle Tab Focus
|
|
|
|
|
|
- [x] Handle CTRL,ALT,SHIFT + (F1 -> F12)
|
|
|
|
|
|
- [/] Handle CTRL,ALT,SHIFT + (Up, Down, Left Right)
|
|
|
|
|
|
- [ ] Events
|
|
|
|
|
|
https://tkinterexamples.com/events/events.html
|
|
|
|
|
|
https://www.pythontutorial.net/tkinter/tkinter-event-binding/
|
|
|
|
|
|
- [x] Keyboard
|
|
|
|
|
|
- [x] Mouse
|
|
|
|
|
|
- [ ] Implement the different Escape codes
|
|
|
|
|
|
(Check https://github.com/vercel/hyper)
|
|
|
|
|
|
https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking
|
|
|
|
|
|
|
|
|
|
|
|
## Colors
|
|
|
|
|
|
- [ ] Allow dynamic depth change
|
|
|
|
|
|
- [x] Define a gradient feature
|
|
|
|
|
|
## Canvas Class
|
|
|
|
|
|
- [x] Have a look to the Unicode chartable: https://www.utf8-chartable.de/unicode-utf8-table.pl
|
|
|
|
|
|
|
|
|
|
|
|
## Signal/Slots
|
|
|
|
|
|
- [x] Implement Signal/Slots
|
|
|
|
|
|
|
|
|
|
|
|
## WeakRef
|
|
|
|
|
|
- [ ] TTkTimer._timers
|
|
|
|
|
|
- [ ] Signals/Slots
|
|
|
|
|
|
|
|
|
|
|
|
## Logs
|
|
|
|
|
|
- [x] Log Class
|
|
|
|
|
|
- [ ] Run Logger on a separate thread (push string to a queue)
|
|
|
|
|
|
- [ ] Include option to force print
|
|
|
|
|
|
- [ ] Log helpers
|
|
|
|
|
|
- [x] File and Stdout logger
|
|
|
|
|
|
- [ ] logger auto integration
|
|
|
|
|
|
- [ ] stdout until mainLoop
|
|
|
|
|
|
|
|
|
|
|
|
### Layout
|
|
|
|
|
|
- [ ] Add Weight in V and H Layout
|
|
|
|
|
|
- [x] Add addLayout (adDItem) method - Nested layouts
|
|
|
|
|
|
- [x] Add Grid Layout
|
|
|
|
|
|
- [x] Add ColSpan / RowSpan
|
|
|
|
|
|
- [x] Get rid of groupMoveTo
|
|
|
|
|
|
- [x] Get rid of addWidget
|
|
|
|
|
|
|
|
|
|
|
|
### AbstractScrollArea
|
|
|
|
|
|
- [x] Implement something that mimic the QAbstactScrollArea
|
|
|
|
|
|
https://doc.qt.io/qt-5/qabstractscrollarea.html
|
|
|
|
|
|
https://doc.qt.io/qt-5/qscrollarea.html
|
|
|
|
|
|
- [ ] Implement the focus policy
|
|
|
|
|
|
|
|
|
|
|
|
### Overlay widget
|
|
|
|
|
|
- [x] Use the nested layout for the overlay
|
|
|
|
|
|
- [x] Rewrite the Handling (ttk.py)
|
|
|
|
|
|
It would be nice to have it as child outside the layout
|
|
|
|
|
|
- [ ] Enable mouse move on overlay
|
|
|
|
|
|
|
|
|
|
|
|
## Widgets
|
|
|
|
|
|
- [ ] Add Size Policy (fixed minimum maximum expanding)
|
|
|
|
|
|
- [x] Add Show/Hide
|
|
|
|
|
|
- [ ] Clean the way the parent is assigned, propagated
|
|
|
|
|
|
*Widget \[setParent, addWidget, . . ], GridLayout \[addWidget]*
|
|
|
|
|
|
#### Button Widget
|
|
|
|
|
|
- [x] Basic Implementation
|
|
|
|
|
|
- [x] Events (Signal/Slots)
|
|
|
|
|
|
- [x] Themes
|
|
|
|
|
|
#### Line Edit Widget
|
|
|
|
|
|
- [x] Basic Implementation
|
|
|
|
|
|
- [ ] Events (Signal/Slots)
|
|
|
|
|
|
- [x] Themes
|
|
|
|
|
|
- [x] Input Type Numbers/Password
|
|
|
|
|
|
#### Text Edit Widget
|
|
|
|
|
|
- [ ] Basic Implementation
|
|
|
|
|
|
- [ ] Events (Signal/Slots)
|
|
|
|
|
|
- [x] Themes
|
|
|
|
|
|
#### Fancy Table Widget
|
|
|
|
|
|
- [x] Basic Implementation
|
|
|
|
|
|
- [ ] Events (Signal/Slots)
|
|
|
|
|
|
- [ ] Themes
|
|
|
|
|
|
|
|
|
|
|
|
#### Tree Widget
|
|
|
|
|
|
- [x] Basic Implementation
|
|
|
|
|
|
- [ ] Implement cache/pagination for big data
|
|
|
|
|
|
- [ ] Events (Signal/Slots)
|
|
|
|
|
|
- [ ] Themes
|
|
|
|
|
|
#### Window Widget
|
|
|
|
|
|
- [x] Basic Implementation
|
|
|
|
|
|
- [ ] Events (Signal/Slots)
|
|
|
|
|
|
- [x] Themes
|
|
|
|
|
|
#### CheckBox Widget
|
|
|
|
|
|
- [x] Basic Implementation
|
|
|
|
|
|
- [ ] Events (Signal/Slots)
|
|
|
|
|
|
- [x] Themes
|
|
|
|
|
|
#### Radio button Widget
|
|
|
|
|
|
- [x] Basic Implementation
|
|
|
|
|
|
- [ ] Events (Signal/Slots)
|
|
|
|
|
|
- [x] Themes
|
|
|
|
|
|
#### ComboBox (dropdown) Widget
|
|
|
|
|
|
- [x] Basic Implementation
|
|
|
|
|
|
- [ ] Events (Signal/Slots)
|
|
|
|
|
|
- [x] Themes
|
|
|
|
|
|
#### Splitter widget
|
|
|
|
|
|
- [x] Basic Implementation
|
|
|
|
|
|
- [x] Snap on min/max sizes
|
|
|
|
|
|
- [ ] Events (Signal/Slots)
|
|
|
|
|
|
- [x] Themes
|
|
|
|
|
|
- [ ] Support addItem
|
|
|
|
|
|
#### Tab Widget
|
|
|
|
|
|
- [x] Basic Implementation
|
|
|
|
|
|
- [ ] Events (Signal/Slots)
|
|
|
|
|
|
- [x] Themes
|
|
|
|
|
|
- [ ] Align Selected to center
|
|
|
|
|
|
- [x] Add Menu
|
|
|
|
|
|
- [ ] Keyboard events
|
|
|
|
|
|
#### Spin Box
|
|
|
|
|
|
- [x] Basic Implementation
|
|
|
|
|
|
- [x] Events (Signal/Slots)
|
|
|
|
|
|
- [ ] Themes
|
|
|
|
|
|
#### Progress Bar
|
|
|
|
|
|
- [ ] Basic Implementation
|
|
|
|
|
|
- [ ] Events (Signal/Slots)
|
|
|
|
|
|
- [ ] Themes
|
|
|
|
|
|
#### Graph Widget
|
|
|
|
|
|
- [x] Basic Implementation
|
|
|
|
|
|
- [ ] Events (Signal/Slots)
|
|
|
|
|
|
- [x] Themes
|
|
|
|
|
|
#### Header Menu
|
|
|
|
|
|
- [x] Basic Implementation
|
|
|
|
|
|
- [x] Events (Signal/Slots)
|
|
|
|
|
|
- [x] Themes
|
|
|
|
|
|
|
|
|
|
|
|
### Pickers
|
|
|
|
|
|
#### Color Picker~/github/Varie/pyTermTk~/github/Varie/pyTermTk
|
|
|
|
|
|
- [x] Basic Implementation
|
|
|
|
|
|
- [x] Events (Signal/Slots)
|
|
|
|
|
|
- [x] Themes
|
|
|
|
|
|
- [x] Use Spinbox for R G B
|
|
|
|
|
|
#### Date Picker
|
|
|
|
|
|
- [ ] Basic Implementation
|
|
|
|
|
|
- [ ] Events (Signal/Slots)
|
|
|
|
|
|
- [ ] Themes
|
|
|
|
|
|
#### File Picker
|
|
|
|
|
|
- [x] Basic Implementation
|
|
|
|
|
|
- [x] Events (Signal/Slots)
|
|
|
|
|
|
- [x] Themes
|
|
|
|
|
|
#### Yes/No Ok/Cancel Picker
|
|
|
|
|
|
- [x] Basic Implementation
|
|
|
|
|
|
- [x] Events (Signal/Slots)
|
|
|
|
|
|
- [x] Themes
|