| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927 |
- // Copyright 2018 visualfc. All rights reserved.
- package tk
- var (
- typeMetaMap = make(map[WidgetType]*MetaType)
- )
- type MetaClass struct {
- Command string
- Class string
- Attributes []string
- }
- func (m *MetaClass) HasAttribute(attr string) bool {
- if attr == "" {
- return false
- }
- for _, v := range m.Attributes {
- if v == attr {
- return true
- }
- }
- return false
- }
- type MetaType struct {
- Type string
- Tk *MetaClass
- Ttk *MetaClass
- }
- func IsTtkClass(class string) bool {
- for _, v := range ttkClassList {
- if v == class {
- return true
- }
- }
- return false
- }
- func IsTkClass(class string) bool {
- for _, v := range tkClassList {
- if v == class {
- return true
- }
- }
- return false
- }
- var (
- tkClassList = []string{
- "Button",
- "Canvas",
- "Checkbutton",
- "Entry",
- "Frame",
- "Label",
- "Labelframe",
- "Listbox",
- "Menu",
- "Menubutton",
- "Panedwindow",
- "Radiobutton",
- "Scale",
- "Scrollbar",
- "Spinbox",
- "Text",
- "Toplevel",
- }
- ttkClassList = []string{
- "TButton",
- "TCheckbutton",
- "TCombobox",
- "TEntry",
- "TFrame",
- "TLabel",
- "TLabelframe",
- "TMenubutton",
- "TNotebook",
- "TPanedwindow",
- "TProgressbar",
- "TRadiobutton",
- "TScale",
- "Scrollbar",
- "TSeparator",
- "TSizegrip",
- "Treeview",
- }
- )
- func init() {
- typeMetaMap[WidgetTypeButton] =
- &MetaType{
- Type: "Button",
- Tk: &MetaClass{"tk::button", "Button",
- []string{"activebackground",
- "activeforeground",
- "anchor",
- "background",
- "bitmap",
- "borderwidth",
- "command",
- "compound",
- "cursor",
- "default",
- "disabledforeground",
- "font",
- "foreground",
- "height",
- "highlightbackground",
- "highlightcolor",
- "highlightthickness",
- "image",
- "justify",
- "overrelief",
- "padx",
- "pady",
- "relief",
- "repeatdelay",
- "repeatinterval",
- "state",
- "takefocus",
- "text",
- "textvariable",
- "underline",
- "width",
- "wraplength"}},
- Ttk: &MetaClass{"ttk::button", "TButton",
- []string{"command",
- "default",
- "takefocus",
- "text",
- "textvariable",
- "underline",
- "width",
- "image",
- "compound",
- "padding",
- "state",
- "cursor",
- "style",
- "class"}},
- }
- typeMetaMap[WidgetTypeCanvas] =
- &MetaType{
- Type: "Canvas",
- Tk: &MetaClass{"tk::canvas", "Canvas",
- []string{"background",
- "borderwidth",
- "closeenough",
- "confine",
- "cursor",
- "height",
- "highlightbackground",
- "highlightcolor",
- "highlightthickness",
- "insertbackground",
- "insertborderwidth",
- "insertofftime",
- "insertontime",
- "insertwidth",
- "offset",
- "relief",
- "scrollregion",
- "selectbackground",
- "selectborderwidth",
- "selectforeground",
- "state",
- "takefocus",
- "width",
- "xscrollcommand",
- "xscrollincrement",
- "yscrollcommand",
- "yscrollincrement"}},
- Ttk: nil,
- }
- typeMetaMap[WidgetTypeCheckButton] =
- &MetaType{
- Type: "CheckButton",
- Tk: &MetaClass{"tk::checkbutton", "Checkbutton",
- []string{"activebackground",
- "activeforeground",
- "anchor",
- "background",
- "bitmap",
- "borderwidth",
- "command",
- "compound",
- "cursor",
- "disabledforeground",
- "font",
- "foreground",
- "height",
- "highlightbackground",
- "highlightcolor",
- "highlightthickness",
- "image",
- "indicatoron",
- "justify",
- "offrelief",
- "offvalue",
- "onvalue",
- "overrelief",
- "padx",
- "pady",
- "relief",
- "selectcolor",
- "selectimage",
- "state",
- "takefocus",
- "text",
- "textvariable",
- "tristateimage",
- "tristatevalue",
- "underline",
- "variable",
- "width",
- "wraplength"}},
- Ttk: &MetaClass{"ttk::checkbutton", "TCheckbutton",
- []string{"variable",
- "onvalue",
- "offvalue",
- "command",
- "takefocus",
- "text",
- "textvariable",
- "underline",
- "width",
- "image",
- "compound",
- "padding",
- "state",
- "cursor",
- "style",
- "class"}},
- }
- typeMetaMap[WidgetTypeComboBox] =
- &MetaType{
- Type: "ComboBox",
- Tk: nil,
- Ttk: &MetaClass{"ttk::combobox", "TCombobox",
- []string{"height",
- "postcommand",
- "values",
- "exportselection",
- "font",
- "invalidcommand",
- "justify",
- "show",
- "state",
- "textvariable",
- "validate",
- "validatecommand",
- "width",
- "xscrollcommand",
- "foreground",
- "background",
- "takefocus",
- "cursor",
- "style",
- "class"}},
- }
- typeMetaMap[WidgetTypeEntry] =
- &MetaType{
- Type: "Entry",
- Tk: &MetaClass{"tk::entry", "Entry",
- []string{"background",
- "borderwidth",
- "cursor",
- "disabledbackground",
- "disabledforeground",
- "exportselection",
- "font",
- "foreground",
- "highlightbackground",
- "highlightcolor",
- "highlightthickness",
- "insertbackground",
- "insertborderwidth",
- "insertofftime",
- "insertontime",
- "insertwidth",
- "invalidcommand",
- "justify",
- "readonlybackground",
- "relief",
- "selectbackground",
- "selectborderwidth",
- "selectforeground",
- "show",
- "state",
- "takefocus",
- "textvariable",
- "validate",
- "validatecommand",
- "width",
- "xscrollcommand"}},
- Ttk: &MetaClass{"ttk::entry", "TEntry",
- []string{"exportselection",
- "font",
- "invalidcommand",
- "justify",
- "show",
- "state",
- "textvariable",
- "validate",
- "validatecommand",
- "width",
- "xscrollcommand",
- "foreground",
- "background",
- "takefocus",
- "cursor",
- "style",
- "class"}},
- }
- typeMetaMap[WidgetTypeFrame] =
- &MetaType{
- Type: "Frame",
- Tk: &MetaClass{"tk::frame", "Frame",
- []string{"borderwidth",
- "class",
- "relief",
- "background",
- "colormap",
- "container",
- "cursor",
- "height",
- "highlightbackground",
- "highlightcolor",
- "highlightthickness",
- "padx",
- "pady",
- "takefocus",
- "visual",
- "width"}},
- Ttk: &MetaClass{"ttk::frame", "TFrame",
- []string{"borderwidth",
- "padding",
- "relief",
- "width",
- "height",
- "takefocus",
- "cursor",
- "style",
- "class"}},
- }
- typeMetaMap[WidgetTypeLabel] =
- &MetaType{
- Type: "Label",
- Tk: &MetaClass{"tk::label", "Label",
- []string{"activebackground",
- "activeforeground",
- "anchor",
- "background",
- "bitmap",
- "borderwidth",
- "compound",
- "cursor",
- "disabledforeground",
- "font",
- "foreground",
- "height",
- "highlightbackground",
- "highlightcolor",
- "highlightthickness",
- "image",
- "justify",
- "padx",
- "pady",
- "relief",
- "state",
- "takefocus",
- "text",
- "textvariable",
- "underline",
- "width",
- "wraplength"}},
- Ttk: &MetaClass{"ttk::label", "TLabel",
- []string{"background",
- "foreground",
- "font",
- "borderwidth",
- "relief",
- "anchor",
- "justify",
- "wraplength",
- "takefocus",
- "text",
- "textvariable",
- "underline",
- "width",
- "image",
- "compound",
- "padding",
- "state",
- "cursor",
- "style",
- "class"}},
- }
- typeMetaMap[WidgetTypeLabelFrame] =
- &MetaType{
- Type: "LabelFrame",
- Tk: &MetaClass{"tk::labelframe", "Labelframe",
- []string{"borderwidth",
- "class",
- "font",
- "foreground",
- "labelanchor",
- "labelwidget",
- "relief",
- "text",
- "background",
- "colormap",
- "container",
- "cursor",
- "height",
- "highlightbackground",
- "highlightcolor",
- "highlightthickness",
- "padx",
- "pady",
- "takefocus",
- "visual",
- "width"}},
- Ttk: &MetaClass{"ttk::labelframe", "TLabelframe",
- []string{"labelanchor",
- "text",
- "underline",
- "labelwidget",
- "borderwidth",
- "padding",
- "relief",
- "width",
- "height",
- "takefocus",
- "cursor",
- "style",
- "class"}},
- }
- typeMetaMap[WidgetTypeListBox] =
- &MetaType{
- Type: "ListBox",
- Tk: &MetaClass{"tk::listbox", "Listbox",
- []string{"activestyle",
- "background",
- "borderwidth",
- "cursor",
- "disabledforeground",
- "exportselection",
- "font",
- "foreground",
- "height",
- "highlightbackground",
- "highlightcolor",
- "highlightthickness",
- "justify",
- "relief",
- "selectbackground",
- "selectborderwidth",
- "selectforeground",
- "selectmode",
- "setgrid",
- "state",
- "takefocus",
- "width",
- "xscrollcommand",
- "yscrollcommand",
- "listvariable"}},
- Ttk: nil,
- }
- typeMetaMap[WidgetTypeMenu] =
- &MetaType{
- Type: "Menu",
- Tk: &MetaClass{"menu", "Menu",
- []string{"activebackground",
- "activeborderwidth",
- "activeforeground",
- "background",
- "borderwidth",
- "cursor",
- "disabledforeground",
- "font",
- "foreground",
- "postcommand",
- "relief",
- "selectcolor",
- "takefocus",
- "tearoff",
- "tearoffcommand",
- "title",
- "type"}},
- Ttk: nil,
- }
- typeMetaMap[WidgetTypeMenuButton] =
- &MetaType{
- Type: "MenuButton",
- Tk: &MetaClass{"tk::menubutton", "Menubutton",
- []string{"activebackground",
- "activeforeground",
- "anchor",
- "background",
- "bitmap",
- "borderwidth",
- "cursor",
- "direction",
- "disabledforeground",
- "font",
- "foreground",
- "height",
- "highlightbackground",
- "highlightcolor",
- "highlightthickness",
- "image",
- "indicatoron",
- "justify",
- "menu",
- "padx",
- "pady",
- "relief",
- "compound",
- "state",
- "takefocus",
- "text",
- "textvariable",
- "underline",
- "width",
- "wraplength"}},
- Ttk: &MetaClass{"ttk::menubutton", "TMenubutton",
- []string{"menu",
- "direction",
- "takefocus",
- "text",
- "textvariable",
- "underline",
- "width",
- "image",
- "compound",
- "padding",
- "state",
- "cursor",
- "style",
- "class"}},
- }
- typeMetaMap[WidgetTypeNotebook] =
- &MetaType{
- Type: "Notebook",
- Tk: nil,
- Ttk: &MetaClass{"ttk::notebook", "TNotebook",
- []string{"width",
- "height",
- "padding",
- "takefocus",
- "cursor",
- "style",
- "class"}},
- }
- typeMetaMap[WidgetTypePaned] =
- &MetaType{
- Type: "Paned",
- Tk: &MetaClass{"tk::panedwindow", "Panedwindow",
- []string{"background",
- "borderwidth",
- "cursor",
- "handlepad",
- "handlesize",
- "height",
- "opaqueresize",
- "orient",
- "proxybackground",
- "proxyborderwidth",
- "proxyrelief",
- "relief",
- "sashcursor",
- "sashpad",
- "sashrelief",
- "sashwidth",
- "showhandle",
- "width"}},
- Ttk: &MetaClass{"ttk::panedwindow", "TPanedwindow",
- []string{"orient",
- "width",
- "height",
- "takefocus",
- "cursor",
- "style",
- "class"}},
- }
- typeMetaMap[WidgetTypeProgressBar] =
- &MetaType{
- Type: "ProgressBar",
- Tk: nil,
- Ttk: &MetaClass{"ttk::progressbar", "TProgressbar",
- []string{"orient",
- "length",
- "mode",
- "maximum",
- "variable",
- "value",
- "phase",
- "takefocus",
- "cursor",
- "style",
- "class"}},
- }
- typeMetaMap[WidgetTypeRadioButton] =
- &MetaType{
- Type: "RadioButton",
- Tk: &MetaClass{"tk::radiobutton", "Radiobutton",
- []string{"activebackground",
- "activeforeground",
- "anchor",
- "background",
- "bitmap",
- "borderwidth",
- "command",
- "compound",
- "cursor",
- "disabledforeground",
- "font",
- "foreground",
- "height",
- "highlightbackground",
- "highlightcolor",
- "highlightthickness",
- "image",
- "indicatoron",
- "justify",
- "offrelief",
- "overrelief",
- "padx",
- "pady",
- "relief",
- "selectcolor",
- "selectimage",
- "state",
- "takefocus",
- "text",
- "textvariable",
- "tristateimage",
- "tristatevalue",
- "underline",
- "value",
- "variable",
- "width",
- "wraplength"}},
- Ttk: &MetaClass{"ttk::radiobutton", "TRadiobutton",
- []string{"variable",
- "value",
- "command",
- "takefocus",
- "text",
- "textvariable",
- "underline",
- "width",
- "image",
- "compound",
- "padding",
- "state",
- "cursor",
- "style",
- "class"}},
- }
- typeMetaMap[WidgetTypeScale] =
- &MetaType{
- Type: "Scale",
- Tk: &MetaClass{"tk::scale", "Scale",
- []string{"activebackground",
- "background",
- "bigincrement",
- "borderwidth",
- "command",
- "cursor",
- "digits",
- "font",
- "foreground",
- "from",
- "highlightbackground",
- "highlightcolor",
- "highlightthickness",
- "label",
- "length",
- "orient",
- "relief",
- "repeatdelay",
- "repeatinterval",
- "resolution",
- "showvalue",
- "sliderlength",
- "sliderrelief",
- "state",
- "takefocus",
- "tickinterval",
- "to",
- "troughcolor",
- "variable",
- "width"}},
- Ttk: &MetaClass{"ttk::scale", "TScale",
- []string{"command",
- "variable",
- "orient",
- "from",
- "to",
- "value",
- "length",
- "takefocus",
- "cursor",
- "style",
- "class"}},
- }
- typeMetaMap[WidgetTypeScrollBar] =
- &MetaType{
- Type: "ScrollBar",
- Tk: &MetaClass{"tk::scrollbar", "Scrollbar",
- []string{"activebackground",
- "activerelief",
- "background",
- "borderwidth",
- "command",
- "cursor",
- "elementborderwidth",
- "highlightbackground",
- "highlightcolor",
- "highlightthickness",
- "jump",
- "orient",
- "relief",
- "repeatdelay",
- "repeatinterval",
- "takefocus",
- "troughcolor",
- "width"}},
- Ttk: &MetaClass{"ttk::scrollbar", "Scrollbar",
- []string{"command",
- "orient",
- "takefocus",
- "cursor",
- "style",
- "class"}},
- }
- typeMetaMap[WidgetTypeSeparator] =
- &MetaType{
- Type: "Separator",
- Tk: nil,
- Ttk: &MetaClass{"ttk::separator", "TSeparator",
- []string{"orient",
- "takefocus",
- "cursor",
- "style",
- "class"}},
- }
- typeMetaMap[WidgetTypeSizeGrip] =
- &MetaType{
- Type: "SizeGrip",
- Tk: nil,
- Ttk: &MetaClass{"ttk::sizegrip", "TSizegrip",
- []string{"takefocus",
- "cursor",
- "style",
- "class"}},
- }
- typeMetaMap[WidgetTypeSpinBox] =
- &MetaType{
- Type: "SpinBox",
- Tk: &MetaClass{"tk::spinbox", "Spinbox",
- []string{"activebackground",
- "background",
- "borderwidth",
- "buttonbackground",
- "buttoncursor",
- "buttondownrelief",
- "buttonuprelief",
- "command",
- "cursor",
- "disabledbackground",
- "disabledforeground",
- "exportselection",
- "font",
- "foreground",
- "format",
- "from",
- "highlightbackground",
- "highlightcolor",
- "highlightthickness",
- "increment",
- "insertbackground",
- "insertborderwidth",
- "insertofftime",
- "insertontime",
- "insertwidth",
- "invalidcommand",
- "justify",
- "relief",
- "readonlybackground",
- "repeatdelay",
- "repeatinterval",
- "selectbackground",
- "selectborderwidth",
- "selectforeground",
- "state",
- "takefocus",
- "textvariable",
- "to",
- "validate",
- "validatecommand",
- "values",
- "width",
- "wrap",
- "xscrollcommand"}},
- Ttk: &MetaClass{"ttk::spinbox", "TSpinbox",
- []string{"values",
- "from",
- "to",
- "increment",
- "format",
- "command",
- "wrap",
- "exportselection",
- "font",
- "invalidcommand",
- "justify",
- "show",
- "state",
- "textvariable",
- "validate",
- "validatecommand",
- "width",
- "xscrollcommand",
- "foreground",
- "background",
- "takefocus",
- "cursor",
- "style",
- "class"}},
- }
- typeMetaMap[WidgetTypeText] =
- &MetaType{
- Type: "Text",
- Tk: &MetaClass{"tk::text", "Text",
- []string{"autoseparators",
- "background",
- "blockcursor",
- "borderwidth",
- "cursor",
- "endline",
- "exportselection",
- "font",
- "foreground",
- "height",
- "highlightbackground",
- "highlightcolor",
- "highlightthickness",
- "inactiveselectbackground",
- "insertbackground",
- "insertborderwidth",
- "insertofftime",
- "insertontime",
- "insertunfocussed",
- "insertwidth",
- "maxundo",
- "padx",
- "pady",
- "relief",
- "selectbackground",
- "selectborderwidth",
- "selectforeground",
- "setgrid",
- "spacing1",
- "spacing2",
- "spacing3",
- "startline",
- "state",
- "tabs",
- "tabstyle",
- "takefocus",
- "undo",
- "width",
- "wrap",
- "xscrollcommand",
- "yscrollcommand"}},
- Ttk: nil,
- }
- typeMetaMap[WidgetTypeWindow] =
- &MetaType{
- Type: "Window",
- Tk: &MetaClass{"toplevel", "Toplevel",
- []string{"borderwidth",
- "class",
- "menu",
- "relief",
- "screen",
- "use",
- "background",
- "colormap",
- "container",
- "cursor",
- "height",
- "highlightbackground",
- "highlightcolor",
- "highlightthickness",
- "padx",
- "pady",
- "takefocus",
- "visual",
- "width"}},
- Ttk: nil,
- }
- typeMetaMap[WidgetTypeTreeView] =
- &MetaType{
- Type: "TreeView",
- Tk: nil,
- Ttk: &MetaClass{"ttk::treeview", "Treeview",
- []string{"columns",
- "displaycolumns",
- "show",
- "selectmode",
- "height",
- "padding",
- "xscrollcommand",
- "yscrollcommand",
- "takefocus",
- "cursor",
- "style",
- "class"}},
- }
- }
|