TODO
====
- Add tukkan support ?
- Tooltips:
  We need to save a "manager" or something similar in the xml
  to later know howto process the property in pygubu.
  There is a "type" that is used already, see that way.
- Add a mechanism to test code generation.
- ADD designer plugin with sun valley ttk theme!!!!!
- Issue: redraw previews on theme change.
- Treeview with scrollHelper. Srollbars are not shown depending on the
  treeview configuration or if columns are set stretch=true
  Investigate the behaviour.
- FIX: Create a frame frame1, create a frame2 inside, then add a button.
  Create another frame frame3 sibling of frame1, copy frame2 and paste in
  frame3, the content of frame 2 is duplicated in frame3.
- ttkstyles branch: add optiondb_initializer=None to builder and codebuilder.
  or name it on_first_widget_cb. Function that will execute only once after
  the first widget is created, generally the root widget.
- Add widgets from https://code.activestate.com/recipes/users/4189907/ ?
- Add a tk.Spinbox, set from_:8  to:5  This show error on build, but
  howto validate this combination of properties?
- Allow to define custom font.
  This font can be defined selecting an specific font or can be defined
  based on a default TK font. For example I want TkTextFont but with size 60.
- Add PDFviewer widget based on tkPDFView
- Add widget for CanvasPlus
- Add support to tkinterpp?
- Add support to ttkbootstrap:
  In config panel:
    Create combobox selector for default theme engine (in this case ttkbootstrap)
    If ttkbootstrap is active show the diferent styles provided by ttkbootstrap
    in the style property for each widget. (Eg: primary.TButton)
- Tcl 8.7 alpha adds new properties to widgets. Investigate that.
  For example, for tk.Toplevel: backgroundimage, tile
- ttk image property (label), allows to use more than one image? test in python first.
  Add proper editor for this.
- Do not rebuild entire preview for simple property changes
- On code generation, allow to select which tk_variables import in the class.
  See example in userinputapp.py.

Commands
========

python3 -m build

twine upload -r test_pygubu dist/*
pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pygubu[all]==0.23.1

twine upload -r test_pygubu_designer dist/*
pip install --no-cache-dir -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pygubu-designer[all]
pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pygubu-designer

alejandroautalan/pygubu
alejandroautalan/pygubu-designer#99

pip install git+https://github.com/alejandroautalan/pygubu git+https://github.com/alejandroautalan/pygubu-designer


Theming notes:
=============

resources
  - image (name, filename, format, data)
  - named font
  - OptionDatabaseGroup
    OptionDatabase (pattern, value, priority, type?(string, image, color, dimension))
  Theme:
    properties: name, parent
    children: list of styles
  Styles:
    ElementImage:
      properties: name, border, height, padding, sticky, width
    ElementVsapi: not supported
    DotStyle: the '.'
        properties: dynamic properties?
    WidgetStyle:
        parent: one of TButton, TEntry?


Style Editor
  configure
  map

Element Editor:
  configure
  imagespect

LayoutElement Editor (layoutspect)
  properties: elementname, side, sticky


The standard Tk <<Cut>>, <<Copy>>, <<Paste>>, and <<Clear>>

Increase version to sync with pypi.

tk 8.7
======

WIDGET STANDARD OPTIONS  http://www.tcl.tk/man/tcl8.7/TkCmd/options.htm

    -activebackground, activeBackground, Foreground
    -activeborderwidth, activeBorderWidth, BorderWidth
    -activeforeground, activeForeground, Background
    -activerelief, activeRelief, Relief
    -anchor, anchor, Anchor
    -background or -bg, background, Background
    -bitmap, bitmap, Bitmap
    -borderwidth or -bd, borderWidth, BorderWidth
    -cursor, cursor, Cursor
    -compound, compound, Compound
    -disabledforeground, disabledForeground, DisabledForeground
    -exportselection, exportSelection, ExportSelection
    -font, font, Font
    -foreground or -fg, foreground, Foreground
    -highlightbackground, highlightBackground, HighlightBackground
    -highlightcolor, highlightColor, HighlightColor
    -highlightthickness, highlightThickness, HighlightThickness
    -image, image, Image
    -insertbackground, insertBackground, Foreground
    -insertborderwidth, insertBorderWidth, BorderWidth
    -insertofftime, insertOffTime, OffTime
    -insertontime, insertOnTime, OnTime
    -insertwidth, insertWidth, InsertWidth
    -jump, jump, Jump
    -justify, justify, Justify
    -orient, orient, Orient
    -padx, padX, Pad
    -pady, padY, Pad
    -placeholder, placeHolder, PlaceHolder
    -placeholderforeground, placeholderForeground, PlaceholderForeground
    -relief, relief, Relief
    -repeatdelay, repeatDelay, RepeatDelay
    -repeatinterval, repeatInterval, RepeatInterval
    -selectbackground, selectBackground, Foreground
    -selectborderwidth, selectBorderWidth, BorderWidth
    -selectforeground, selectForeground, Background
    -setgrid, setGrid, SetGrid
    -takefocus, takeFocus, TakeFocus
    -text, text, Text
    -textvariable, textVariable, Variable
    -troughcolor, troughColor, Background
    -underline, underline, Underline
    -wraplength, wrapLength, WrapLength
    -xscrollcommand, xScrollCommand, ScrollCommand
    -yscrollcommand, yScrollCommand, ScrollCommand
