doc.go 76 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535
  1. // Copyright 2024 The tk9.0-go Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. // Package tk9.0 is a CGo-free, cross platform GUI toolkit for Go. It is
  5. // similar to [Tkinter] for Python.
  6. //
  7. // # Hello world
  8. //
  9. // Also available in _examples/hello.go
  10. //
  11. // package main
  12. //
  13. // import . "modernc.org/tk9.0"
  14. //
  15. // func main() {
  16. // Pack(Button(Txt("Hello"), Command(func() { Destroy(App) })))
  17. // App.Wait()
  18. // }
  19. //
  20. // To execute the above program on any supported target issue something like
  21. //
  22. // $ CGO_ENABLED=0 go run hello.go
  23. //
  24. // The CGO_ENABLED=0 is optional and here it only demonstrates the program can
  25. // be built - or cross-compiled - without CGo.
  26. //
  27. // # In action
  28. //
  29. // - [equ] A Plain TeX math editor.
  30. // - [secure-files-go-gui] A GUI for [secure-files-go].
  31. // - [visualmd] A WYSIWYG markdown editor.
  32. //
  33. // # Frequently Asked Questions
  34. //
  35. // - Do I need to install the Tcl/Tk libraries on my system to use this
  36. // package or programs that import it?
  37. //
  38. // No. You still have to have a desktop environment installed on systems
  39. // where that is not necessarily the case by default. That means some of
  40. // the unix-like systems. Usually installing any desktop environment, like
  41. // Gnome, Xfce etc. provides all the required library (.so) files. The
  42. // minimum is the [X Window System] and this package was tested to work
  43. // there, although with all the limitations one can expect in this case.
  44. //
  45. // - Windows: How to build an executable that doesn't open a console window when run?
  46. //
  47. // From the [documentation for cmd/link]: On Windows, -H windowsgui writes
  48. // a "GUI binary" instead of a "console binary.". To pass the flag to the
  49. // Go build system use 'go build -ldflags -H=windowsgui somefile.go', for
  50. // example.
  51. //
  52. // - How to set/get the text of a Entry/TEntry widget?
  53. //
  54. // Using [Textvariable]. See the _examples/entry.go example.
  55. //
  56. // - What does CGo-free really mean?
  57. //
  58. // [cgo] is a tool used by the Go build system when Go code uses the
  59. // pseudo-import "C". For technical details please see the link. For us it
  60. // is important that using CGo ends up invoking a C compiler during
  61. // building of a Go program/package. The C compiler is used to determine
  62. // exact, possibly locally dependent, values of C preprocessor constants
  63. // and other defines, as well as the exact layout of C structs. This
  64. // enables the Go compiler to correctly handle things like, schematically
  65. // `C.someStruct.someField` appearing in Go code.
  66. //
  67. // At runtime a Go program using CGo must switch stacks when calling into
  68. // C. Additionally the runtime scheduler is made aware of such calls into
  69. // C. The former is necessary, the later is not, but it is good to have as
  70. // it improves performance and provides better resource management.
  71. //
  72. // There is an evironment variable defined, `CGO_ENABLED`. When the Go
  73. // build system compiles Go code, it checks for the value of this env var.
  74. // If it is not set or its value is "1", then CGo is enabled and used when
  75. // 'import "C"' is encountered. If the env var contains "0", CGo is
  76. // disabled and programs using 'import "C"' will not compile.
  77. //
  78. // After this longish intro we can finally get to the short answer:
  79. // CGo-free means this package can be compiled with CGO_ENABLED=0. In other
  80. // words, there's no 'import "C"' clause anywhere.
  81. //
  82. // The consequences of being CGo-free follows from the above. The Go build system
  83. // does not need to invoke a C compiler when compiling this package. Hence users
  84. // don't have to have a C compiler installed in their machines.
  85. //
  86. // There are advantages when a C compiler is not invoked during
  87. // compilation/build of Go code. Programs can be installed on all targets
  88. // supported by this package the easy way: '$ go install
  89. // example.com/foo@latest' and programs for all supported targets can be
  90. // cross-compiled on all Go-supported targets just by setting the
  91. // respective env vars, like performing '$ GOOS=darwin GOARCH=arm64 go
  92. // build' on a Windows/AMD64 machine, for example.
  93. //
  94. // - How does this package achieve being CGo-free?
  95. //
  96. // The answer depends on the particular target in question. Targets
  97. // supported by [purego] call into the Tcl/Tk C libraries without using
  98. // CGo. See the source code at the link for how it is done.
  99. //
  100. // On other targets CGo is avoided by transpiling all the C libraries and
  101. // their transitive dependencies to Go.
  102. //
  103. // In both cases the advantages are the same: CGo-free programs are
  104. // go-installable and CGo-free programs can be cross-compiled without
  105. // having a C compiler or a cross-C compiler tool chain installed.
  106. //
  107. // - Does being CGo-free remove the overhead of crossing the Go-C boundary?
  108. //
  109. // For the [purego] targets, no. Only the C compiler is not involved anymore.
  110. //
  111. // For other supported targets the boundary for calling Tcl/Tk C API from
  112. // Go is gone. No free lunches though, the transpilled code has to care about
  113. // additional things the C code does not need to - with the respective
  114. // performance penalties, now just in different places.
  115. //
  116. // # Change log
  117. //
  118. // Only selected releases appear here:
  119. //
  120. // - 2025-03-16: v0.65.0 introduces support for many new image formats. See
  121. // the list at [NewPhoto] but see also [issue 66].
  122. //
  123. // # Widget catalogue
  124. //
  125. // - [ButtonWidget]
  126. // - [CanvasWidget]
  127. // - [EntryWidget]
  128. // - [FrameWidget]
  129. // - [CheckbuttonWidget]
  130. // - [LabelframeWidget]
  131. // - [LabelWidget]
  132. // - [ListboxWidget]
  133. // - [MenubuttonWidget]
  134. // - [MenuWidget]
  135. // - [MessageWidget]
  136. // - [OptionMenuWidget]
  137. // - [PanedwindowWidget]
  138. // - [RadiobuttonWidget]
  139. // - [ScaleWidget]
  140. // - [ScrollbarWidget]
  141. // - [SpinboxWidget]
  142. // - [TButtonWidget]
  143. // - [TComboboxWidget]
  144. // - [TEntryWidget]
  145. // - [TextWidget]
  146. // - [TFrameWidget]
  147. // - [TCheckbuttonWidget]
  148. // - [TLabelframeWidget]
  149. // - [TLabelWidget]
  150. // - [TMenubuttonWidget]
  151. // - [TNotebookWidget]
  152. // - [ToplevelWidget]
  153. // - [TPanedwindowWidget]
  154. // - [TProgressbarWidget]
  155. // - [TRadiobuttonWidget]
  156. // - [TScaleWidget]
  157. // - [TScrollbarWidget]
  158. // - [TSeparatorWidget]
  159. // - [TSizegripWidget]
  160. // - [TSpinboxWidget]
  161. // - [TTreeviewWidget]
  162. //
  163. // # Debugging
  164. //
  165. // Consider this program in _examples/debugging.go:
  166. //
  167. // // Build this program using -tags=tk.dmesg
  168. // package main
  169. //
  170. // import . "modernc.org/tk9.0"
  171. //
  172. // func main() {
  173. // Pack(
  174. // TButton(Txt("Hello"), Command(func() { Destroy(App) })),
  175. // Ipadx(10), Ipady(5), Padx(20), Pady(10),
  176. // )
  177. // App.Wait()
  178. // }
  179. //
  180. // Execute the program using the tags as indicated, then close the window or
  181. // click the Hello button. With the tk.dmesg tag the package initialization
  182. // prints the debug messages path. So we can view it, for example, like this:
  183. //
  184. // $ go run -tags=tk.dmesg _examples/debugging.go | tee log
  185. // ...
  186. // /tmp/debugging-18876-20240928-163046
  187. // $ cat /tmp/debugging-18876-20240928-163046
  188. // [18876 debugging] enter [dmesgon.go:32:0 proc.go:7278:doInit1 proc.go:7245:doInit]
  189. // ...
  190. // [18876 debugging] code=wm iconphoto . img2 -> r= err=<nil> [tk_purego.go:225:eval tk_purego.go:225:eval tk.go:354:evalErr]
  191. // [18876 debugging] code=wm title . debugging -> r= err=<nil> [tk_purego.go:225:eval tk_purego.go:225:eval tk.go:354:evalErr]
  192. // [18876 debugging] code=. configure -padx 4m -pady 3m -> r= err=<nil> [tk_purego.go:225:eval tk_purego.go:225:eval tk.go:354:evalErr]
  193. // [18876 debugging] code=tk::PlaceWindow . center -> r= err=<nil> [tk_purego.go:225:eval tk_purego.go:225:eval tk.go:354:evalErr]
  194. // [18876 debugging] code=ttk::button ..tbutton4 -text Hello -command {eventDispatcher 3} -> r=.tbutton4 err=<nil> [tk_purego.go:225:eval tk_purego.go:225:eval tk.go:342:newChild]
  195. // [18876 debugging] code=pack .tbutton4 -ipadx 10 -ipady 5 -padx 20 -pady 10 -> r= err=<nil> [tk_purego.go:225:eval tk_purego.go:225:eval tk.go:354:evalErr]
  196. // [18876 debugging] code=destroy . -> r= err=<nil> [tk_purego.go:225:eval tk_purego.go:225:eval tk.go:354:evalErr]
  197. // [18876 debugging] code=tkwait window . -> r= err=<nil> [tk_purego.go:225:eval tk_purego.go:225:eval tk.go:354:evalErr]
  198. // $
  199. //
  200. // 18876 was the process PID in this particular run. Using the tags allows to
  201. // inspect the Tcl/Tk code executed during the lifetime of the process.
  202. //
  203. // # Supported targets
  204. //
  205. // These combinations of GOOS and GOARCH are currently supported
  206. //
  207. // OS Arch
  208. // -------------
  209. // darwin amd64
  210. // darwin arm64
  211. // freebsd amd64
  212. // freebsd arm64
  213. // linux 386
  214. // linux amd64
  215. // linux arm
  216. // linux arm64
  217. // linux loong64
  218. // linux ppc64le
  219. // linux riscv64
  220. // linux s390x
  221. // windows 386
  222. // windows amd64
  223. // windows arm64
  224. //
  225. // Specific to [FreeBSD]:
  226. //
  227. // When building with cross-compiling or CGO_ENABLED=0, add the following
  228. // argument to `go` so that these symbols are defined by making fakecgo the
  229. // Cgo.
  230. //
  231. // -gcflags="github.com/ebitengine/purego/internal/fakecgo=-std"
  232. //
  233. // Specific to windows/386:
  234. //
  235. // There's an open [Go issue 54187] that affects [issue 54]. This target is no
  236. // more a first-class supported one. Moreover, Windows 11 do not support the
  237. // 386 architecture at all, meaning Go will eventually stop supporting
  238. // windows/386 as well.
  239. //
  240. // # Builders
  241. //
  242. // Builder results available at [modern-c.appspot.com].
  243. //
  244. // # Runtime dependencies
  245. //
  246. // - [Img.Graph] and [CanvasWidget.Graph] require the gnuplot executable
  247. // available in $PATH.
  248. //
  249. // # Completeness
  250. //
  251. // At the moment the package is a [MVP] allowing to build at least some simple,
  252. // yet useful programs. The full Tk API is not yet usable. Please report
  253. // needed, but non-exposed Tk features at the [issue tracker], thanks.
  254. //
  255. // Providing feedback about the missing building blocks, bugs and your user
  256. // experience is invaluable in helping this package to eventually reach version
  257. // 1. See also [RERO].
  258. //
  259. // # Error handling
  260. //
  261. // The [ErrorMode] variable selects the behaviour on errors for certain
  262. // functions that do not return error.
  263. //
  264. // When ErrorMode is PanicOnError, the default, errors will panic, providing a stack trace.
  265. //
  266. // When ErrorMode is CollectErrors, errors will be recorded using [errors.Join] in
  267. // the [Error] variable. Even if a function does not return error, it is still
  268. // possible to handle errors in the usual way when needed, except that Error is
  269. // now a static variable. That's a problem in the general case, but less so in
  270. // this package that must be used from a single goroutine only, as
  271. // documented elsewhere.
  272. //
  273. // // Explicit error handling.
  274. // ErrorMode = CollectErrors
  275. // if SomeFunnction(someArgument); Error != nil {
  276. // ... error handling goes here
  277. // }
  278. //
  279. // This is obviously a compromise enabling to have a way to check for errors
  280. // and, at the same time, the ability to write concise code like:
  281. //
  282. // // Deferred error handling.
  283. // if b = Button(Txt("Foo"), Padx(5), Pady(10)); Error != nil {
  284. // ...
  285. // }
  286. //
  287. // There are altogether four different places where the call to the Button
  288. // function can produce errors as additionally to the call itself, every of its
  289. // three arguments can independently fail as well. Checking each and one of
  290. // them separately is not always necessary in GUI code. But the explicit option
  291. // in the first example is still available when needed.
  292. //
  293. // # Themes
  294. //
  295. // There is a centralized theme register in [Themes]. Theme providers can opt
  296. // in to call [RegisterTheme] at package initialization to make themes
  297. // discoverable at run-time. Clients can use [ActivateTheme] to apply a theme
  298. // by name. Example in _examples/azure.go.
  299. //
  300. // # VNC server
  301. //
  302. // There is a VNC over wbesockets functionality available for X11 backed hosts.
  303. // See the [tk9.0/vnc package] for details.
  304. //
  305. // # Package initialization
  306. //
  307. // Package initialization is done lazily. This saves noticeable additional
  308. // startup time and avoids screen flicker in hybrid programs that use the GUI
  309. // only on demand. (For a hybrid example see _examples/ring.go.)
  310. //
  311. // Early package initialization can be enforced by [Initialize].
  312. //
  313. // Initialization will fail if a Unix process starts on a machine with no
  314. // X server or the process is started in a way that it has no access to the X
  315. // server. On the other hand, this package may work on Unix machines with no X
  316. // server if the process is started remotely using '$ ssh -X foo@bar' and the X
  317. // forwarding is enabled/supported.
  318. //
  319. // Darwin port uses the macOS GUI API and does not use X11.
  320. //
  321. // # The options pattern
  322. //
  323. // Zero or more options can be specified when creating a widget. For example
  324. //
  325. // b := Button(Txt("Hello"), OverRelief("flat"))
  326. //
  327. // or
  328. //
  329. // lbl := myFrame.Label(State("disabled"), Width(200))
  330. //
  331. // # Widget path names, image and font names
  332. //
  333. // Tcl/Tk uses widget pathnames, image and font names explicitly set by user
  334. // code. This package generates those names automatically and they are not
  335. // directly needed in code that uses this package.
  336. //
  337. // # Renamed options
  338. //
  339. // There is, for a example, a Tcl/tk 'text' widget and a '-text' option. This
  340. // package exports the widget as type 'TextWidget', its constructor as function
  341. // 'Text' and the option as function 'Txt'. The complete list is:
  342. //
  343. // - [Button] option is renamed to [Btn]
  344. // - [Label] option is renamed to [Lbl]
  345. // - [Menu] option is renamed to [Mnu]
  346. // - [Message] option is renamed to [Msg]
  347. // - [Text] option is renamed to [Txt]
  348. //
  349. // # OS thread
  350. //
  351. // This package should be used only from the same goroutine that initialized
  352. // the Tcl/Tk system and performed os.LockOSThread before doing so. The
  353. // initialization happens lazily on the first call to an Tcl/Tk API function or
  354. // it can be forced by calling [Initialize].
  355. //
  356. // Note that when running Go tests, the goroutine that executes TestMain is not
  357. // the same goroutine that executes the Test* functions.
  358. //
  359. // # Event handlers
  360. //
  361. // The Command() and similar options expect an argument that must be one of:
  362. //
  363. // - An EventHandler or a function literal of the same signature.
  364. //
  365. // - A func(). This can be used when the handler does not need the associated
  366. // Event instance.
  367. //
  368. // # Specially handled types
  369. //
  370. // - [time.Duration]
  371. //
  372. // When passing an argument of type [time.Durarion] to a function accepting
  373. // 'any', the duration is converted to an integer number of milliseconds.
  374. //
  375. // - [image.Image]
  376. //
  377. // When passing an argument of type image.Image to a function accepting 'any',
  378. // the image is converted to a [encoding/base64] encoded string of the PNG
  379. // representation of the image.
  380. //
  381. // - []byte
  382. //
  383. // When passing an argument of type []byte to a function accepting 'any', the
  384. // byte slice is converted to a [encoding/base64] encoded string.
  385. //
  386. // - []FileType
  387. //
  388. // When passing an argument of type []FileType to a function accepting 'any',
  389. // the slice is converted to the representation the Tcl/Tk -filetypes option
  390. // expects.
  391. //
  392. // # Tcl/Tk code
  393. //
  394. // At least some minimal knowledge of reading Tcl/Tk code is probably required
  395. // for using this package and/or using the related documentation. However you
  396. // will not need to write any Tcl code and you do not need to care about the
  397. // grammar of Tcl words/string literals and how it differs from Go.
  398. //
  399. // There are several Tcl/Tk tutorials available, for example at
  400. // [tutorialspoint].
  401. //
  402. // # Hacking
  403. //
  404. // Merge requests for known issues are always welcome.
  405. //
  406. // Please send merge requests for new features/APIs after filling and
  407. // discussing the additions/changes at the [issue tracker] first.
  408. //
  409. // # Notes
  410. //
  411. // Most of the documentation is generated directly from the Tcl/Tk
  412. // documentation and may not be entirely correct for the Go package. Those
  413. // parts hopefully still serve as a quick/offline Tcl/Tk reference.
  414. //
  415. // # Additional copyrights
  416. //
  417. // Parts of the documentation are copied and/or modified from the [tcl.tk
  418. // site], see the LICENSE-TCLTK file for details.
  419. //
  420. // Parts of the documentation are copied and/or modified from the [tkinter.ttk site]
  421. // which is
  422. //
  423. // ----------------------------------------------------------------------------
  424. // © Copyright 2001-2024, Python Software Foundation, licensed under the Python
  425. // Software Foundation License Version 2.
  426. // ----------------------------------------------------------------------------
  427. //
  428. // # Sponsorship
  429. //
  430. // You can support the maintenance and further development of this package at
  431. // [jnml's LiberaPay] (using PayPal).
  432. //
  433. // # "alt" theme style guide
  434. //
  435. // "Checkbutton.indicator" style element options:
  436. //
  437. // - [Background]
  438. // - [Bordercolor]
  439. // - [Foreground]
  440. // - [Indicatorcolor]
  441. // - [Indicatormargin]
  442. // - [Lightcolor]
  443. // - [Shadecolor]
  444. //
  445. // "Combobox.downarrow" style element options:
  446. //
  447. // - [Arrowcolor]
  448. // - [Arrowsize]
  449. // - [Background]
  450. // - [Bordercolor]
  451. // - [Relief]
  452. //
  453. // "Menubutton.indicator" style element options:
  454. //
  455. // - [Arrowcolor]
  456. // - [Arrowsize]
  457. // - [Direction]
  458. //
  459. // "Radiobutton.indicator" style element options:
  460. //
  461. // - [Background]
  462. // - [Bordercolor]
  463. // - [Foreground]
  464. // - [Indicatorcolor]
  465. // - [Indicatormargin]
  466. // - [Lightcolor]
  467. // - [Shadecolor]
  468. //
  469. // "Spinbox.downarrow" style element options:
  470. //
  471. // - [Arrowcolor]
  472. // - [Arrowsize]
  473. // - [Background]
  474. // - [Bordercolor]
  475. // - [Relief]
  476. //
  477. // "Spinbox.uparrow" style element options:
  478. //
  479. // - [Arrowcolor]
  480. // - [Arrowsize]
  481. // - [Background]
  482. // - [Bordercolor]
  483. // - [Relief]
  484. //
  485. // "Treeitem.indicator" style element options:
  486. //
  487. // - [Foreground]
  488. // - [Indicatormargins]
  489. // - [Size]
  490. //
  491. // "arrow" style element options:
  492. //
  493. // - [Arrowcolor]
  494. // - [Arrowsize]
  495. // - [Background]
  496. // - [Bordercolor]
  497. // - [Relief]
  498. //
  499. // "border" style element options:
  500. //
  501. // - [Background]
  502. // - [Bordercolor]
  503. // - [Borderwidth]
  504. // - [Default]
  505. // - [Relief]
  506. //
  507. // "downarrow" style element options:
  508. //
  509. // - [Arrowcolor]
  510. // - [Arrowsize]
  511. // - [Background]
  512. // - [Bordercolor]
  513. // - [Relief]
  514. //
  515. // "field" style element options:
  516. //
  517. // - [Bordercolor]
  518. // - [Fieldbackground]
  519. // - [Focuscolor]
  520. // - [Focuswidth]
  521. //
  522. // "leftarrow" style element options:
  523. //
  524. // - [Arrowcolor]
  525. // - [Arrowsize]
  526. // - [Background]
  527. // - [Bordercolor]
  528. // - [Relief]
  529. //
  530. // "rightarrow" style element options:
  531. //
  532. // - [Arrowcolor]
  533. // - [Arrowsize]
  534. // - [Background]
  535. // - [Bordercolor]
  536. // - [Relief]
  537. //
  538. // "slider" style element options:
  539. //
  540. // - [Background]
  541. // - [Bordercolor]
  542. // - [Borderwidth]
  543. // - [Orient]
  544. // - [Sliderrelief]
  545. // - [Sliderthickness]
  546. //
  547. // "thumb" style element options:
  548. //
  549. // - [Background]
  550. // - [Bordercolor]
  551. // - [Orient]
  552. // - [Relief]
  553. // - [Width]
  554. //
  555. // "uparrow" style element options:
  556. //
  557. // - [Arrowcolor]
  558. // - [Arrowsize]
  559. // - [Background]
  560. // - [Bordercolor]
  561. // - [Relief]
  562. //
  563. // "alt" theme style list
  564. //
  565. // .
  566. //
  567. // Style map: -foreground {disabled #a3a3a3} -background {disabled #d9d9d9 active #ececec} -embossed {disabled 1}
  568. //
  569. // ComboboxPopdownFrame
  570. //
  571. // Layout: ComboboxPopdownFrame.border -sticky nswe
  572. //
  573. // Heading
  574. //
  575. // Layout: Treeheading.cell -sticky nswe Treeheading.border -sticky nswe -children {Treeheading.padding -sticky nswe -children {Treeheading.image -side right -sticky {} Treeheading.text -sticky we}}
  576. //
  577. // Item
  578. //
  579. // Layout: Treeitem.padding -sticky nswe -children {Treeitem.indicator -side left -sticky {} Treeitem.image -side left -sticky {} Treeitem.text -sticky nswe}
  580. //
  581. // Separator
  582. //
  583. // Layout: Treeitem.separator -sticky nswe
  584. //
  585. // TButton
  586. //
  587. // Layout: Button.border -sticky nswe -border 1 -children {Button.focus -sticky nswe -children {Button.padding -sticky nswe -children {Button.label -sticky nswe}}}
  588. //
  589. // Style map: -highlightcolor {alternate black} -relief { {pressed !disabled} sunken {active !disabled} raised }
  590. //
  591. // TCheckbutton
  592. //
  593. // Layout: Checkbutton.padding -sticky nswe -children {Checkbutton.indicator -side left -sticky {} Checkbutton.focus -side left -sticky w -children {Checkbutton.label -sticky nswe}}
  594. //
  595. // Style map: -indicatorcolor {pressed #d9d9d9 alternate #aaaaaa disabled #d9d9d9}
  596. //
  597. // TCombobox
  598. //
  599. // Layout: Combobox.field -sticky nswe -children {Combobox.downarrow -side right -sticky ns Combobox.padding -sticky nswe -children {Combobox.textarea -sticky nswe}}
  600. //
  601. // Style map: -fieldbackground {readonly #d9d9d9 disabled #d9d9d9} -arrowcolor {disabled #a3a3a3}
  602. //
  603. // TEntry
  604. //
  605. // Layout: Entry.field -sticky nswe -border 1 -children {Entry.padding -sticky nswe -children {Entry.textarea -sticky nswe}}
  606. //
  607. // Style map: -fieldbackground {readonly #d9d9d9 disabled #d9d9d9}
  608. //
  609. // TLabelframe
  610. //
  611. // Layout: Labelframe.border -sticky nswe
  612. //
  613. // TMenubutton
  614. //
  615. // Layout: Menubutton.border -sticky nswe -children {Menubutton.focus -sticky nswe -children {Menubutton.indicator -side right -sticky {} Menubutton.padding -sticky we -children {Menubutton.label -side left -sticky {}}}}
  616. //
  617. // TNotebook
  618. //
  619. // Layout: Notebook.client -sticky nswe
  620. //
  621. // TNotebook.Tab
  622. //
  623. // Layout: Notebook.tab -sticky nswe -children {Notebook.padding -side top -sticky nswe -children {Notebook.focus -side top -sticky nswe -children {Notebook.label -side top -sticky {}}}}
  624. //
  625. // Style map: -expand {selected {1.5p 1.5p 0.75p 0}} -background {selected #d9d9d9}
  626. //
  627. // TProgressbar
  628. //
  629. // -
  630. //
  631. // TRadiobutton
  632. //
  633. // Layout: Radiobutton.padding -sticky nswe -children {Radiobutton.indicator -side left -sticky {} Radiobutton.focus -side left -sticky {} -children {Radiobutton.label -sticky nswe}}
  634. //
  635. // Style map: -indicatorcolor {pressed #d9d9d9 alternate #aaaaaa disabled #d9d9d9}
  636. //
  637. // TScale
  638. //
  639. // -
  640. //
  641. // TScrollbar
  642. //
  643. // -
  644. //
  645. // TSpinbox
  646. //
  647. // Layout: Spinbox.field -side top -sticky we -children {null -side right -sticky {} -children {Spinbox.uparrow -side top -sticky e Spinbox.downarrow -side bottom -sticky e} Spinbox.padding -sticky nswe -children {Spinbox.textarea -sticky nswe}}
  648. //
  649. // Style map: -fieldbackground {readonly #d9d9d9 disabled #d9d9d9} -arrowcolor {disabled #a3a3a3}
  650. //
  651. // Tab
  652. //
  653. // Layout: Notebook.tab -sticky nswe -children {Notebook.padding -side top -sticky nswe -children {Notebook.focus -side top -sticky nswe -children {Notebook.label -side top -sticky {}}}}
  654. //
  655. // Toolbutton
  656. //
  657. // Layout: Toolbutton.border -sticky nswe -children {Toolbutton.focus -sticky nswe -children {Toolbutton.padding -sticky nswe -children {Toolbutton.label -sticky nswe}}}
  658. //
  659. // Style map: -relief {disabled flat selected sunken pressed sunken active raised} -background {pressed #c3c3c3 active #ececec}
  660. //
  661. // Treeview
  662. //
  663. // Layout: Treeview.field -sticky nswe -border 1 -children {Treeview.padding -sticky nswe -children {Treeview.treearea -sticky nswe}}
  664. //
  665. // Style map: -foreground {disabled #a3a3a3 selected #ffffff} -background {disabled #d9d9d9 selected #4a6984}
  666. //
  667. // Treeview.Separator
  668. //
  669. // Layout: Treeitem.separator -sticky nswe
  670. //
  671. // # "aqua" theme style guide
  672. //
  673. // "Button.button" style element options:
  674. //
  675. // "Checkbutton.button" style element options:
  676. //
  677. // "Combobox.button" style element options:
  678. //
  679. // "DisclosureButton.button" style element options:
  680. //
  681. // "Entry.field" style element options:
  682. //
  683. // - [Background]
  684. // - [Fieldbackground]
  685. //
  686. // "GradientButton.button" style element options:
  687. //
  688. // "HelpButton.button" style element options:
  689. //
  690. // "Horizontal.Scrollbar.leftarrow" style element options:
  691. //
  692. // - [Orient]
  693. //
  694. // "Horizontal.Scrollbar.rightarrow" style element options:
  695. //
  696. // - [Orient]
  697. //
  698. // "Horizontal.Scrollbar.thumb" style element options:
  699. //
  700. // - [Orient]
  701. //
  702. // "Horizontal.Scrollbar.trough" style element options:
  703. //
  704. // - [Orient]
  705. //
  706. // "InlineButton.button" style element options:
  707. //
  708. // "Labelframe.border" style element options:
  709. //
  710. // "Menubutton.button" style element options:
  711. //
  712. // "Notebook.client" style element options:
  713. //
  714. // "Notebook.tab" style element options:
  715. //
  716. // "Progressbar.track" style element options:
  717. //
  718. // - [Maximum]
  719. // - [Mode]
  720. // - [Orient]
  721. // - [Phase]
  722. // - [Value]
  723. //
  724. // "Radiobutton.button" style element options:
  725. //
  726. // "RecessedButton.button" style element options:
  727. //
  728. // "RoundedRectButton.button" style element options:
  729. //
  730. // "Scale.slider" style element options:
  731. //
  732. // "Scale.trough" style element options:
  733. //
  734. // - [From]
  735. // - [Orient]
  736. // - [To]
  737. // - [Value]
  738. //
  739. // "Searchbox.field" style element options:
  740. //
  741. // - [Background]
  742. // - [Fieldbackground]
  743. //
  744. // "SidebarButton.button" style element options:
  745. //
  746. // "Spinbox.downarrow" style element options:
  747. //
  748. // "Spinbox.field" style element options:
  749. //
  750. // - [Background]
  751. // - [Fieldbackground]
  752. //
  753. // "Spinbox.uparrow" style element options:
  754. //
  755. // "Toolbar.background" style element options:
  756. //
  757. // "Toolbutton.border" style element options:
  758. //
  759. // "Treeheading.cell" style element options:
  760. //
  761. // "Treeitem.indicator" style element options:
  762. //
  763. // "Treeview.treearea" style element options:
  764. //
  765. // "Vertical.Scrollbar.downarrow" style element options:
  766. //
  767. // - [Orient]
  768. //
  769. // "Vertical.Scrollbar.thumb" style element options:
  770. //
  771. // - [Orient]
  772. //
  773. // "Vertical.Scrollbar.trough" style element options:
  774. //
  775. // - [Orient]
  776. //
  777. // "Vertical.Scrollbar.uparrow" style element options:
  778. //
  779. // - [Orient]
  780. //
  781. // "background" style element options:
  782. //
  783. // "field" style element options:
  784. //
  785. // - [Fieldbackground]
  786. //
  787. // "fill" style element options:
  788. //
  789. // "hseparator" style element options:
  790. //
  791. // "separator" style element options:
  792. //
  793. // "sizegrip" style element options:
  794. //
  795. // "vseparator" style element options:
  796. //
  797. // "aqua" theme style list
  798. //
  799. // .
  800. //
  801. // Style map: -selectforeground { background systemSelectedTextColor !focus systemSelectedTextColor} -foreground { disabled systemDisabledControlTextColor background systemLabelColor} -selectbackground { background systemSelectedTextBackgroundColor !focus systemSelectedTextBackgroundColor}
  802. //
  803. // DisclosureButton
  804. //
  805. // Layout: DisclosureButton.button -sticky nswe
  806. //
  807. // GradientButton
  808. //
  809. // Layout: GradientButton.button -sticky nswe -children {Button.padding -sticky nswe -children {Button.label -sticky nswe}}
  810. //
  811. // Heading
  812. //
  813. // Layout: Treeheading.cell -sticky nswe Treeheading.image -side right -sticky {} Treeheading.text -side top -sticky {}
  814. //
  815. // HelpButton
  816. //
  817. // Layout: HelpButton.button -sticky nswe
  818. //
  819. // Horizontal.TScrollbar
  820. //
  821. // Layout: Horizontal.Scrollbar.trough -sticky we -children {Horizontal.Scrollbar.thumb -sticky nswe Horizontal.Scrollbar.rightarrow -side right -sticky {} Horizontal.Scrollbar.leftarrow -side right -sticky {}}
  822. //
  823. // ImageButton
  824. //
  825. // Layout: Button.padding -sticky nswe -children {Button.label -sticky nswe}
  826. //
  827. // Style map: -foreground { pressed systemLabelColor !pressed systemSecondaryLabelColor }
  828. //
  829. // InlineButton
  830. //
  831. // Layout: InlineButton.button -sticky nswe -children {Button.padding -sticky nswe -children {Button.label -sticky nswe}}
  832. //
  833. // Style map: -foreground { disabled systemWindowBackgroundColor }
  834. //
  835. // Item
  836. //
  837. // Layout: Treeitem.padding -sticky nswe -children {Treeitem.indicator -side left -sticky {} Treeitem.image -side left -sticky {} Treeitem.text -side left -sticky {}}
  838. //
  839. // Label
  840. //
  841. // Layout: Label.fill -sticky nswe -children {Label.text -sticky nswe}
  842. //
  843. // RecessedButton
  844. //
  845. // Layout: RecessedButton.button -sticky nswe -children {Button.padding -sticky nswe -children {Button.label -sticky nswe}}
  846. //
  847. // Style map: -font { selected RecessedFont active RecessedFont pressed RecessedFont } -foreground { {disabled selected} systemWindowBackgroundColor3 {disabled !selected} systemDisabledControlTextColor selected systemTextBackgroundColor active white pressed white }
  848. //
  849. // RoundedRectButton
  850. //
  851. // Layout: RoundedRectButton.button -sticky nswe -children {Button.padding -sticky nswe -children {Button.label -sticky nswe}}
  852. //
  853. // Searchbox
  854. //
  855. // Layout: Searchbox.field -sticky nswe -border 1 -children {Entry.padding -sticky nswe -children {Entry.textarea -sticky nswe}}
  856. //
  857. // SidebarButton
  858. //
  859. // Layout: SidebarButton.button -sticky nswe -children {Button.padding -sticky nswe -children {Button.label -sticky nswe}}
  860. //
  861. // Style map: -foreground { {disabled selected} systemWindowBackgroundColor3 {disabled !selected} systemDisabledControlTextColor selected systemTextColor active systemTextColor pressed systemTextColor }
  862. //
  863. // TButton
  864. //
  865. // Layout: Button.button -sticky nswe -children {Button.padding -sticky nswe -children {Button.label -sticky nswe}}
  866. //
  867. // Style map: -foreground { pressed white {alternate !pressed !background} white disabled systemDisabledControlTextColor}
  868. //
  869. // TCheckbutton
  870. //
  871. // Layout: Checkbutton.button -sticky nswe -children {Checkbutton.padding -sticky nswe -children {Checkbutton.label -side left -sticky {}}}
  872. //
  873. // TCombobox
  874. //
  875. // Layout: Combobox.button -sticky nswe -children {Combobox.padding -sticky nswe -children {Combobox.textarea -sticky nswe}}
  876. //
  877. // Style map: -foreground { disabled systemDisabledControlTextColor } -selectbackground { !focus systemUnemphasizedSelectedTextBackgroundColor }
  878. //
  879. // TEntry
  880. //
  881. // Layout: Entry.field -sticky nswe -border 1 -children {Entry.padding -sticky nswe -children {Entry.textarea -sticky nswe}}
  882. //
  883. // Style map: -foreground { disabled systemDisabledControlTextColor } -selectbackground { !focus systemUnemphasizedSelectedTextBackgroundColor }
  884. //
  885. // TLabelframe
  886. //
  887. // Layout: Labelframe.border -sticky nswe
  888. //
  889. // TLabelframe.Label
  890. //
  891. // Layout: Label.fill -sticky nswe -children {Label.text -sticky nswe}
  892. //
  893. // TMenubutton
  894. //
  895. // Layout: Menubutton.button -sticky nswe -children {Menubutton.padding -sticky nswe -children {Menubutton.label -side left -sticky {}}}
  896. //
  897. // TNotebook
  898. //
  899. // Layout: Notebook.client -sticky nswe
  900. //
  901. // TNotebook.Tab
  902. //
  903. // Layout: Notebook.tab -sticky nswe -children {Notebook.padding -sticky nswe -children {Notebook.label -sticky nswe}}
  904. //
  905. // Style map: -foreground { {background !selected} systemControlTextColor {background selected} black {!background selected} systemSelectedTabTextColor disabled systemDisabledControlTextColor}
  906. //
  907. // TProgressbar
  908. //
  909. // Layout: Progressbar.track -sticky nswe
  910. //
  911. // TRadiobutton
  912. //
  913. // Layout: Radiobutton.button -sticky nswe -children {Radiobutton.padding -sticky nswe -children {Radiobutton.label -side left -sticky {}}}
  914. //
  915. // TScrollbar
  916. //
  917. // -
  918. //
  919. // TSpinbox
  920. //
  921. // Layout: Spinbox.buttons -side right -sticky {} -children {Spinbox.uparrow -side top -sticky e Spinbox.downarrow -side bottom -sticky e} Spinbox.field -sticky we -children {Spinbox.textarea -sticky we}
  922. //
  923. // Style map: -foreground { disabled systemDisabledControlTextColor } -selectbackground { !focus systemUnemphasizedSelectedTextBackgroundColor }
  924. //
  925. // Tab
  926. //
  927. // Layout: Notebook.tab -sticky nswe -children {Notebook.padding -sticky nswe -children {Notebook.label -sticky nswe}}
  928. //
  929. // Toolbar
  930. //
  931. // Layout: Toolbar.background -sticky nswe
  932. //
  933. // Toolbutton
  934. //
  935. // Layout: Toolbutton.border -sticky nswe -children {Toolbutton.focus -sticky nswe -children {Toolbutton.padding -sticky nswe -children {Toolbutton.label -sticky nswe}}}
  936. //
  937. // Treeview
  938. //
  939. // Layout: Treeview.field -sticky nswe -children {Treeview.padding -sticky nswe -children {Treeview.treearea -sticky nswe}}
  940. //
  941. // Style map: -background { selected systemSelectedTextBackgroundColor }
  942. //
  943. // Vertical.TScrollbar
  944. //
  945. // Layout: Vertical.Scrollbar.trough -sticky ns -children {Vertical.Scrollbar.thumb -sticky nswe Vertical.Scrollbar.downarrow -side bottom -sticky {} Vertical.Scrollbar.uparrow -side bottom -sticky {}}
  946. //
  947. // # "clam" theme style guide
  948. //
  949. // "Checkbutton.indicator" style element options:
  950. //
  951. // - [Indicatorbackground]
  952. // - [Indicatorforeground]
  953. // - [Indicatormargin]
  954. // - [Lowerbordercolor]
  955. // - [Upperbordercolor]
  956. //
  957. // "Combobox.field" style element options:
  958. //
  959. // - [Bordercolor]
  960. // - [Fieldbackground]
  961. // - [Lightcolor]
  962. //
  963. // "Radiobutton.indicator" style element options:
  964. //
  965. // - [Indicatorbackground]
  966. // - [Indicatorforeground]
  967. // - [Indicatormargin]
  968. // - [Lowerbordercolor]
  969. // - [Upperbordercolor]
  970. //
  971. // "Spinbox.downarrow" style element options:
  972. //
  973. // - [Arrowcolor]
  974. // - [Arrowsize]
  975. // - [Background]
  976. // - [Bordercolor]
  977. // - [Darkcolor]
  978. // - [Gripsize]
  979. // - [Lightcolor]
  980. // - [Orient]
  981. // - [Sliderlength]
  982. // - [Troughcolor]
  983. //
  984. // "Spinbox.uparrow" style element options:
  985. //
  986. // - [Arrowcolor]
  987. // - [Arrowsize]
  988. // - [Background]
  989. // - [Bordercolor]
  990. // - [Darkcolor]
  991. // - [Gripsize]
  992. // - [Lightcolor]
  993. // - [Orient]
  994. // - [Sliderlength]
  995. // - [Troughcolor]
  996. //
  997. // "arrow" style element options:
  998. //
  999. // - [Arrowcolor]
  1000. // - [Arrowsize]
  1001. // - [Background]
  1002. // - [Bordercolor]
  1003. // - [Darkcolor]
  1004. // - [Gripsize]
  1005. // - [Lightcolor]
  1006. // - [Orient]
  1007. // - [Sliderlength]
  1008. // - [Troughcolor]
  1009. //
  1010. // "bar" style element options:
  1011. //
  1012. // - [Arrowcolor]
  1013. // - [Arrowsize]
  1014. // - [Background]
  1015. // - [Bordercolor]
  1016. // - [Darkcolor]
  1017. // - [Gripsize]
  1018. // - [Lightcolor]
  1019. // - [Orient]
  1020. // - [Sliderlength]
  1021. // - [Troughcolor]
  1022. //
  1023. // "border" style element options:
  1024. //
  1025. // - [Bordercolor]
  1026. // - [Borderwidth]
  1027. // - [Darkcolor]
  1028. // - [Lightcolor]
  1029. // - [Relief]
  1030. //
  1031. // "client" style element options:
  1032. //
  1033. // - [Background]
  1034. // - [Bordercolor]
  1035. // - [Darkcolor]
  1036. // - [Lightcolor]
  1037. //
  1038. // "downarrow" style element options:
  1039. //
  1040. // - [Arrowcolor]
  1041. // - [Arrowsize]
  1042. // - [Background]
  1043. // - [Bordercolor]
  1044. // - [Darkcolor]
  1045. // - [Gripsize]
  1046. // - [Lightcolor]
  1047. // - [Orient]
  1048. // - [Sliderlength]
  1049. // - [Troughcolor]
  1050. //
  1051. // "field" style element options:
  1052. //
  1053. // - [Bordercolor]
  1054. // - [Fieldbackground]
  1055. // - [Lightcolor]
  1056. //
  1057. // "hgrip" style element options:
  1058. //
  1059. // - [Bordercolor]
  1060. // - [Gripsize]
  1061. // - [Lightcolor]
  1062. //
  1063. // "leftarrow" style element options:
  1064. //
  1065. // - [Arrowcolor]
  1066. // - [Arrowsize]
  1067. // - [Background]
  1068. // - [Bordercolor]
  1069. // - [Darkcolor]
  1070. // - [Gripsize]
  1071. // - [Lightcolor]
  1072. // - [Orient]
  1073. // - [Sliderlength]
  1074. // - [Troughcolor]
  1075. //
  1076. // "pbar" style element options:
  1077. //
  1078. // - [Arrowcolor]
  1079. // - [Arrowsize]
  1080. // - [Background]
  1081. // - [Bordercolor]
  1082. // - [Darkcolor]
  1083. // - [Gripsize]
  1084. // - [Lightcolor]
  1085. // - [Orient]
  1086. // - [Sliderlength]
  1087. // - [Troughcolor]
  1088. //
  1089. // "rightarrow" style element options:
  1090. //
  1091. // - [Arrowcolor]
  1092. // - [Arrowsize]
  1093. // - [Background]
  1094. // - [Bordercolor]
  1095. // - [Darkcolor]
  1096. // - [Gripsize]
  1097. // - [Lightcolor]
  1098. // - [Orient]
  1099. // - [Sliderlength]
  1100. // - [Troughcolor]
  1101. //
  1102. // "slider" style element options:
  1103. //
  1104. // - [Arrowcolor]
  1105. // - [Arrowsize]
  1106. // - [Background]
  1107. // - [Bordercolor]
  1108. // - [Darkcolor]
  1109. // - [Gripsize]
  1110. // - [Lightcolor]
  1111. // - [Orient]
  1112. // - [Sliderlength]
  1113. // - [Troughcolor]
  1114. //
  1115. // "tab" style element options:
  1116. //
  1117. // - [Background]
  1118. // - [Bordercolor]
  1119. // - [Darkcolor]
  1120. // - [Lightcolor]
  1121. //
  1122. // "thumb" style element options:
  1123. //
  1124. // - [Arrowcolor]
  1125. // - [Arrowsize]
  1126. // - [Background]
  1127. // - [Bordercolor]
  1128. // - [Darkcolor]
  1129. // - [Gripsize]
  1130. // - [Lightcolor]
  1131. // - [Orient]
  1132. // - [Sliderlength]
  1133. // - [Troughcolor]
  1134. //
  1135. // "trough" style element options:
  1136. //
  1137. // - [Arrowcolor]
  1138. // - [Arrowsize]
  1139. // - [Background]
  1140. // - [Bordercolor]
  1141. // - [Darkcolor]
  1142. // - [Gripsize]
  1143. // - [Lightcolor]
  1144. // - [Orient]
  1145. // - [Sliderlength]
  1146. // - [Troughcolor]
  1147. //
  1148. // "uparrow" style element options:
  1149. //
  1150. // - [Arrowcolor]
  1151. // - [Arrowsize]
  1152. // - [Background]
  1153. // - [Bordercolor]
  1154. // - [Darkcolor]
  1155. // - [Gripsize]
  1156. // - [Lightcolor]
  1157. // - [Orient]
  1158. // - [Sliderlength]
  1159. // - [Troughcolor]
  1160. //
  1161. // "vgrip" style element options:
  1162. //
  1163. // - [Bordercolor]
  1164. // - [Gripsize]
  1165. // - [Lightcolor]
  1166. //
  1167. // "clam" theme style list
  1168. //
  1169. // .
  1170. //
  1171. // Style map: -selectforeground {!focus white} -foreground {disabled #999999} -selectbackground {!focus #9e9a91} -background {disabled #dcdad5 active #eeebe7}
  1172. //
  1173. // ComboboxPopdownFrame
  1174. //
  1175. // Layout: ComboboxPopdownFrame.border -sticky nswe
  1176. //
  1177. // Heading
  1178. //
  1179. // Layout: Treeheading.cell -sticky nswe Treeheading.border -sticky nswe -children {Treeheading.padding -sticky nswe -children {Treeheading.image -side right -sticky {} Treeheading.text -sticky we}}
  1180. //
  1181. // Horizontal.Sash
  1182. //
  1183. // Layout: Sash.hsash -sticky nswe -children {Sash.hgrip -sticky nswe}
  1184. //
  1185. // Item
  1186. //
  1187. // Layout: Treeitem.padding -sticky nswe -children {Treeitem.indicator -side left -sticky {} Treeitem.image -side left -sticky {} Treeitem.text -sticky nswe}
  1188. //
  1189. // Sash
  1190. //
  1191. // -
  1192. //
  1193. // Separator
  1194. //
  1195. // Layout: Treeitem.separator -sticky nswe
  1196. //
  1197. // TButton
  1198. //
  1199. // Layout: Button.border -sticky nswe -border 1 -children {Button.focus -sticky nswe -children {Button.padding -sticky nswe -children {Button.label -sticky nswe}}}
  1200. //
  1201. // Style map: -lightcolor {pressed #bab5ab} -background {disabled #dcdad5 pressed #bab5ab active #eeebe7} -bordercolor {alternate #000000} -darkcolor {pressed #bab5ab}
  1202. //
  1203. // TCheckbutton
  1204. //
  1205. // Layout: Checkbutton.padding -sticky nswe -children {Checkbutton.indicator -side left -sticky {} Checkbutton.focus -side left -sticky w -children {Checkbutton.label -sticky nswe}}
  1206. //
  1207. // Style map: -indicatorbackground {pressed #dcdad5 {!disabled alternate} #5895bc {disabled alternate} #a0a0a0 disabled #dcdad5}
  1208. //
  1209. // TCombobox
  1210. //
  1211. // Layout: Combobox.downarrow -side right -sticky ns Combobox.field -sticky nswe -children {Combobox.padding -sticky nswe -children {Combobox.textarea -sticky nswe}}
  1212. //
  1213. // Style map: -foreground {{readonly focus} #ffffff} -fieldbackground {{readonly focus} #4a6984 readonly #dcdad5} -background {active #eeebe7 pressed #eeebe7} -bordercolor {focus #4a6984} -arrowcolor {disabled #999999}
  1214. //
  1215. // TEntry
  1216. //
  1217. // Layout: Entry.field -sticky nswe -border 1 -children {Entry.padding -sticky nswe -children {Entry.textarea -sticky nswe}}
  1218. //
  1219. // Style map: -lightcolor {focus #6f9dc6} -background {readonly #dcdad5} -bordercolor {focus #4a6984}
  1220. //
  1221. // TLabelframe
  1222. //
  1223. // Layout: Labelframe.border -sticky nswe
  1224. //
  1225. // TMenubutton
  1226. //
  1227. // Layout: Menubutton.border -sticky nswe -children {Menubutton.focus -sticky nswe -children {Menubutton.indicator -side right -sticky {} Menubutton.padding -sticky we -children {Menubutton.label -side left -sticky {}}}}
  1228. //
  1229. // TNotebook.Tab
  1230. //
  1231. // Layout: Notebook.tab -sticky nswe -children {Notebook.padding -side top -sticky nswe -children {Notebook.focus -side top -sticky nswe -children {Notebook.label -side top -sticky {}}}}
  1232. //
  1233. // Style map: -lightcolor {selected #eeebe7 {} #cfcdc8} -padding {selected {4.5p 3p 4.5p 1.5p}} -background {selected #dcdad5 {} #bab5ab}
  1234. //
  1235. // TProgressbar
  1236. //
  1237. // -
  1238. //
  1239. // TRadiobutton
  1240. //
  1241. // Layout: Radiobutton.padding -sticky nswe -children {Radiobutton.indicator -side left -sticky {} Radiobutton.focus -side left -sticky {} -children {Radiobutton.label -sticky nswe}}
  1242. //
  1243. // Style map: -indicatorbackground {pressed #dcdad5 {!disabled alternate} #5895bc {disabled alternate} #a0a0a0 disabled #dcdad5}
  1244. //
  1245. // TScale
  1246. //
  1247. // -
  1248. //
  1249. // TScrollbar
  1250. //
  1251. // -
  1252. //
  1253. // TSpinbox
  1254. //
  1255. // Layout: Spinbox.field -side top -sticky we -children {null -side right -sticky {} -children {Spinbox.uparrow -side top -sticky e Spinbox.downarrow -side bottom -sticky e} Spinbox.padding -sticky nswe -children {Spinbox.textarea -sticky nswe}}
  1256. //
  1257. // Style map: -background {readonly #dcdad5} -bordercolor {focus #4a6984} -arrowcolor {disabled #999999}
  1258. //
  1259. // Tab
  1260. //
  1261. // Layout: Notebook.tab -sticky nswe -children {Notebook.padding -side top -sticky nswe -children {Notebook.focus -side top -sticky nswe -children {Notebook.label -side top -sticky {}}}}
  1262. //
  1263. // Toolbutton
  1264. //
  1265. // Layout: Toolbutton.border -sticky nswe -children {Toolbutton.focus -sticky nswe -children {Toolbutton.padding -sticky nswe -children {Toolbutton.label -sticky nswe}}}
  1266. //
  1267. // Style map: -lightcolor {pressed #bab5ab} -relief {disabled flat selected sunken pressed sunken active raised} -background {disabled #dcdad5 pressed #bab5ab active #eeebe7} -darkcolor {pressed #bab5ab}
  1268. //
  1269. // Treeview
  1270. //
  1271. // Layout: Treeview.field -sticky nswe -border 1 -children {Treeview.padding -sticky nswe -children {Treeview.treearea -sticky nswe}}
  1272. //
  1273. // Style map: -foreground {disabled #999999 selected #ffffff} -background {disabled #dcdad5 selected #4a6984} -bordercolor {focus #4a6984}
  1274. //
  1275. // Treeview.Separator
  1276. //
  1277. // Layout: Treeitem.separator -sticky nswe
  1278. //
  1279. // Vertical.Sash
  1280. //
  1281. // Layout: Sash.vsash -sticky nswe -children {Sash.vgrip -sticky nswe}
  1282. //
  1283. // # "classic" theme style guide
  1284. //
  1285. // "Button.border" style element options:
  1286. //
  1287. // - [Background]
  1288. // - [Borderwidth]
  1289. // - [Default]
  1290. // - [Relief]
  1291. //
  1292. // "Checkbutton.indicator" style element options:
  1293. //
  1294. // - [Background]
  1295. // - [Borderwidth]
  1296. // - [Indicatorcolor]
  1297. // - [Indicatormargin]
  1298. // - [Indicatorrelief]
  1299. // - [Indicatorsize]
  1300. //
  1301. // "Combobox.downarrow" style element options:
  1302. //
  1303. // - [Arrowcolor]
  1304. // - [Arrowsize]
  1305. // - [Background]
  1306. // - [Borderwidth]
  1307. // - [Relief]
  1308. //
  1309. // "Menubutton.indicator" style element options:
  1310. //
  1311. // - [Background]
  1312. // - [Indicatorborderwidth]
  1313. // - [Indicatorheight]
  1314. // - [Indicatormargin]
  1315. // - [Indicatorrelief]
  1316. // - [Indicatorwidth]
  1317. //
  1318. // "Radiobutton.indicator" style element options:
  1319. //
  1320. // - [Background]
  1321. // - [Borderwidth]
  1322. // - [Indicatorcolor]
  1323. // - [Indicatormargin]
  1324. // - [Indicatorrelief]
  1325. // - [Indicatorsize]
  1326. //
  1327. // "Spinbox.downarrow" style element options:
  1328. //
  1329. // - [Arrowcolor]
  1330. // - [Arrowsize]
  1331. // - [Background]
  1332. // - [Borderwidth]
  1333. // - [Relief]
  1334. //
  1335. // "Spinbox.uparrow" style element options:
  1336. //
  1337. // - [Arrowcolor]
  1338. // - [Arrowsize]
  1339. // - [Background]
  1340. // - [Borderwidth]
  1341. // - [Relief]
  1342. //
  1343. // "arrow" style element options:
  1344. //
  1345. // - [Arrowsize]
  1346. // - [Background]
  1347. // - [Borderwidth]
  1348. // - [Relief]
  1349. //
  1350. // "downarrow" style element options:
  1351. //
  1352. // - [Arrowsize]
  1353. // - [Background]
  1354. // - [Borderwidth]
  1355. // - [Relief]
  1356. //
  1357. // "highlight" style element options:
  1358. //
  1359. // - [Default]
  1360. // - [Highlightcolor]
  1361. // - [Highlightthickness]
  1362. //
  1363. // "hsash" style element options:
  1364. //
  1365. // - [Background]
  1366. // - [Handlepad]
  1367. // - [Handlesize]
  1368. // - [Sashpad]
  1369. // - [Sashrelief]
  1370. // - [Sashthickness]
  1371. //
  1372. // "leftarrow" style element options:
  1373. //
  1374. // - [Arrowsize]
  1375. // - [Background]
  1376. // - [Borderwidth]
  1377. // - [Relief]
  1378. //
  1379. // "rightarrow" style element options:
  1380. //
  1381. // - [Arrowsize]
  1382. // - [Background]
  1383. // - [Borderwidth]
  1384. // - [Relief]
  1385. //
  1386. // "slider" style element options:
  1387. //
  1388. // - [Background]
  1389. // - [Orient]
  1390. // - [Sliderborderwidth]
  1391. // - [Sliderlength]
  1392. // - [Sliderrelief]
  1393. // - [Sliderthickness]
  1394. //
  1395. // "uparrow" style element options:
  1396. //
  1397. // - [Arrowsize]
  1398. // - [Background]
  1399. // - [Borderwidth]
  1400. // - [Relief]
  1401. //
  1402. // "vsash" style element options:
  1403. //
  1404. // - [Background]
  1405. // - [Handlepad]
  1406. // - [Handlesize]
  1407. // - [Sashpad]
  1408. // - [Sashrelief]
  1409. // - [Sashthickness]
  1410. //
  1411. // "classic" theme style list
  1412. //
  1413. // .
  1414. //
  1415. // Style map: -highlightcolor {focus black} -foreground {disabled #a3a3a3} -background {disabled #d9d9d9 active #ececec}
  1416. //
  1417. // ComboboxPopdownFrame
  1418. //
  1419. // Layout: ComboboxPopdownFrame.border -sticky nswe
  1420. //
  1421. // Heading
  1422. //
  1423. // Layout: Treeheading.cell -sticky nswe Treeheading.border -sticky nswe -children {Treeheading.padding -sticky nswe -children {Treeheading.image -side right -sticky {} Treeheading.text -sticky we}}
  1424. //
  1425. // Horizontal.TScale
  1426. //
  1427. // Layout: Horizontal.Scale.highlight -sticky nswe -children {Horizontal.Scale.trough -sticky nswe -children {Horizontal.Scale.slider -side left -sticky {}}}
  1428. //
  1429. // Item
  1430. //
  1431. // Layout: Treeitem.padding -sticky nswe -children {Treeitem.indicator -side left -sticky {} Treeitem.image -side left -sticky {} Treeitem.text -sticky nswe}
  1432. //
  1433. // Sash
  1434. //
  1435. // -
  1436. //
  1437. // Separator
  1438. //
  1439. // Layout: Treeitem.separator -sticky nswe
  1440. //
  1441. // TButton
  1442. //
  1443. // Layout: Button.highlight -sticky nswe -children {Button.border -sticky nswe -border 1 -children {Button.padding -sticky nswe -children {Button.label -sticky nswe}}}
  1444. //
  1445. // Style map: -relief {{!disabled pressed} sunken}
  1446. //
  1447. // TCheckbutton
  1448. //
  1449. // Layout: Checkbutton.highlight -sticky nswe -children {Checkbutton.border -sticky nswe -children {Checkbutton.padding -sticky nswe -children {Checkbutton.indicator -side left -sticky {} Checkbutton.label -side left -sticky nswe}}}
  1450. //
  1451. // Style map: -indicatorrelief {alternate raised selected sunken pressed sunken} -indicatorcolor {pressed #d9d9d9 alternate #b05e5e selected #b03060}
  1452. //
  1453. // TCombobox
  1454. //
  1455. // Layout: Combobox.highlight -sticky nswe -children {Combobox.field -sticky nswe -children {Combobox.downarrow -side right -sticky ns Combobox.padding -sticky nswe -children {Combobox.textarea -sticky nswe}}}
  1456. //
  1457. // Style map: -fieldbackground {readonly #d9d9d9 disabled #d9d9d9}
  1458. //
  1459. // TEntry
  1460. //
  1461. // Layout: Entry.highlight -sticky nswe -children {Entry.field -sticky nswe -border 1 -children {Entry.padding -sticky nswe -children {Entry.textarea -sticky nswe}}}
  1462. //
  1463. // Style map: -fieldbackground {readonly #d9d9d9 disabled #d9d9d9}
  1464. //
  1465. // TLabelframe
  1466. //
  1467. // Layout: Labelframe.border -sticky nswe
  1468. //
  1469. // TMenubutton
  1470. //
  1471. // Layout: Menubutton.highlight -sticky nswe -children {Menubutton.border -sticky nswe -children {Menubutton.indicator -side right -sticky {} Menubutton.padding -sticky we -children {Menubutton.label -sticky {}}}}
  1472. //
  1473. // TNotebook.Tab
  1474. //
  1475. // Layout: Notebook.tab -sticky nswe -children {Notebook.padding -side top -sticky nswe -children {Notebook.focus -side top -sticky nswe -children {Notebook.label -side top -sticky {}}}}
  1476. //
  1477. // Style map: -background {selected #d9d9d9}
  1478. //
  1479. // TProgressbar
  1480. //
  1481. // -
  1482. //
  1483. // TRadiobutton
  1484. //
  1485. // Layout: Radiobutton.highlight -sticky nswe -children {Radiobutton.border -sticky nswe -children {Radiobutton.padding -sticky nswe -children {Radiobutton.indicator -side left -sticky {} Radiobutton.label -side left -sticky nswe}}}
  1486. //
  1487. // Style map: -indicatorrelief {alternate raised selected sunken pressed sunken} -indicatorcolor {pressed #d9d9d9 alternate #b05e5e selected #b03060}
  1488. //
  1489. // TScale
  1490. //
  1491. // Style map: -sliderrelief {{pressed !disabled} sunken}
  1492. //
  1493. // TScrollbar
  1494. //
  1495. // Style map: -relief {{pressed !disabled} sunken}
  1496. //
  1497. // TSpinbox
  1498. //
  1499. // Layout: Spinbox.highlight -sticky nswe -children {Spinbox.field -sticky nswe -children {null -side right -sticky {} -children {Spinbox.uparrow -side top -sticky e Spinbox.downarrow -side bottom -sticky e} Spinbox.padding -sticky nswe -children {Spinbox.textarea -sticky nswe}}}
  1500. //
  1501. // Style map: -fieldbackground {readonly #d9d9d9 disabled #d9d9d9}
  1502. //
  1503. // Tab
  1504. //
  1505. // Layout: Notebook.tab -sticky nswe -children {Notebook.padding -side top -sticky nswe -children {Notebook.focus -side top -sticky nswe -children {Notebook.label -side top -sticky {}}}}
  1506. //
  1507. // Toolbutton
  1508. //
  1509. // Layout: Toolbutton.focus -sticky nswe -children {Toolbutton.border -sticky nswe -children {Toolbutton.padding -sticky nswe -children {Toolbutton.label -sticky nswe}}}
  1510. //
  1511. // Style map: -relief {disabled flat selected sunken pressed sunken active raised} -background {pressed #b3b3b3 active #ececec}
  1512. //
  1513. // Treeview
  1514. //
  1515. // Layout: Treeview.highlight -sticky nswe -children {Treeview.field -sticky nswe -border 1 -children {Treeview.padding -sticky nswe -children {Treeview.treearea -sticky nswe}}}
  1516. //
  1517. // Style map: -foreground {disabled #a3a3a3 selected #000000} -background {disabled #d9d9d9 selected #c3c3c3}
  1518. //
  1519. // Treeview.Separator
  1520. //
  1521. // Layout: Treeitem.separator -sticky nswe
  1522. //
  1523. // Vertical.TScale
  1524. //
  1525. // Layout: Vertical.Scale.highlight -sticky nswe -children {Vertical.Scale.trough -sticky nswe -children {Vertical.Scale.slider -side top -sticky {}}}
  1526. //
  1527. // # "default" theme style guide
  1528. //
  1529. // "" style element options:
  1530. //
  1531. // "Checkbutton.indicator" style element options:
  1532. //
  1533. // - [Bordercolor]
  1534. // - [Indicatorbackground]
  1535. // - [Indicatorforeground]
  1536. // - [Indicatormargin]
  1537. //
  1538. // "Combobox.downarrow" style element options:
  1539. //
  1540. // - [Arrowcolor]
  1541. // - [Arrowsize]
  1542. // - [Background]
  1543. // - [Borderwidth]
  1544. // - [Relief]
  1545. //
  1546. // "Menubutton.indicator" style element options:
  1547. //
  1548. // - [Arrowcolor]
  1549. // - [Arrowpadding]
  1550. // - [Arrowsize]
  1551. //
  1552. // "Radiobutton.indicator" style element options:
  1553. //
  1554. // - [Bordercolor]
  1555. // - [Indicatorbackground]
  1556. // - [Indicatorforeground]
  1557. // - [Indicatormargin]
  1558. //
  1559. // "Spinbox.downarrow" style element options:
  1560. //
  1561. // - [Arrowcolor]
  1562. // - [Arrowsize]
  1563. // - [Background]
  1564. // - [Borderwidth]
  1565. // - [Relief]
  1566. //
  1567. // "Spinbox.uparrow" style element options:
  1568. //
  1569. // - [Arrowcolor]
  1570. // - [Arrowsize]
  1571. // - [Background]
  1572. // - [Borderwidth]
  1573. // - [Relief]
  1574. //
  1575. // "Treeheading.cell" style element options:
  1576. //
  1577. // - [Background]
  1578. // - [Rownumber]
  1579. //
  1580. // "Treeitem.indicator" style element options:
  1581. //
  1582. // - [Foreground]
  1583. // - [Indicatormargins]
  1584. // - [Indicatorsize]
  1585. //
  1586. // "Treeitem.row" style element options:
  1587. //
  1588. // - [Background]
  1589. // - [Rownumber]
  1590. //
  1591. // "Treeitem.separator" style element options:
  1592. //
  1593. // - [Background]
  1594. // - [Rownumber]
  1595. //
  1596. // "arrow" style element options:
  1597. //
  1598. // - [Arrowcolor]
  1599. // - [Arrowsize]
  1600. // - [Background]
  1601. // - [Borderwidth]
  1602. // - [Relief]
  1603. //
  1604. // "background" style element options:
  1605. //
  1606. // - [Background]
  1607. //
  1608. // "border" style element options:
  1609. //
  1610. // - [Background]
  1611. // - [Borderwidth]
  1612. // - [Relief]
  1613. //
  1614. // "client" style element options:
  1615. //
  1616. // - [Background]
  1617. // - [Borderwidth]
  1618. // - [Highlight]
  1619. // - [Highlightcolor]
  1620. //
  1621. // "ctext" style element options:
  1622. //
  1623. // - [Anchor]
  1624. // - [Embossed]
  1625. // - [Font]
  1626. // - [Foreground]
  1627. // - [Justify]
  1628. // - [Text]
  1629. // - [Underline]
  1630. // - [Width]
  1631. // - [Wraplength]
  1632. //
  1633. // "downarrow" style element options:
  1634. //
  1635. // - [Arrowcolor]
  1636. // - [Arrowsize]
  1637. // - [Background]
  1638. // - [Borderwidth]
  1639. // - [Relief]
  1640. //
  1641. // "field" style element options:
  1642. //
  1643. // - [Borderwidth]
  1644. // - [Fieldbackground]
  1645. // - [Focuscolor]
  1646. // - [Focuswidth]
  1647. //
  1648. // "fill" style element options:
  1649. //
  1650. // - [Background]
  1651. //
  1652. // "focus" style element options:
  1653. //
  1654. // - [Focuscolor]
  1655. // - [Focussolid]
  1656. // - [Focusthickness]
  1657. //
  1658. // "hsash" style element options:
  1659. //
  1660. // - [Sashthickness]
  1661. //
  1662. // "hseparator" style element options:
  1663. //
  1664. // - [Background]
  1665. // - [Orient]
  1666. //
  1667. // "image" style element options:
  1668. //
  1669. // - [Background]
  1670. // - [Image]
  1671. // - [Stipple]
  1672. //
  1673. // "indicator" style element options:
  1674. //
  1675. // "label" style element options:
  1676. //
  1677. // - [Anchor]
  1678. // - [Background]
  1679. // - [Compound]
  1680. // - [Embossed]
  1681. // - [Font]
  1682. // - [Foreground]
  1683. // - [Image]
  1684. // - [Justify]
  1685. // - [Space]
  1686. // - [Stipple]
  1687. // - [Text]
  1688. // - [Underline]
  1689. // - [Width]
  1690. // - [Wraplength]
  1691. //
  1692. // "leftarrow" style element options:
  1693. //
  1694. // - [Arrowcolor]
  1695. // - [Arrowsize]
  1696. // - [Background]
  1697. // - [Borderwidth]
  1698. // - [Relief]
  1699. //
  1700. // "padding" style element options:
  1701. //
  1702. // - [Padding]
  1703. // - [Relief]
  1704. // - [Shiftrelief]
  1705. //
  1706. // "pbar" style element options:
  1707. //
  1708. // - [Background]
  1709. // - [Barsize]
  1710. // - [Borderwidth]
  1711. // - [Orient]
  1712. // - [Pbarrelief]
  1713. // - [Thickness]
  1714. //
  1715. // "rightarrow" style element options:
  1716. //
  1717. // - [Arrowcolor]
  1718. // - [Arrowsize]
  1719. // - [Background]
  1720. // - [Borderwidth]
  1721. // - [Relief]
  1722. //
  1723. // "separator" style element options:
  1724. //
  1725. // - [Background]
  1726. // - [Orient]
  1727. //
  1728. // "sizegrip" style element options:
  1729. //
  1730. // - [Background]
  1731. // - [Gripsize]
  1732. //
  1733. // "slider" style element options:
  1734. //
  1735. // - [Bordercolor]
  1736. // - [Innercolor]
  1737. // - [Orient]
  1738. // - [Outercolor]
  1739. //
  1740. // "tab" style element options:
  1741. //
  1742. // - [Background]
  1743. // - [Borderwidth]
  1744. // - [Highlight]
  1745. // - [Highlightcolor]
  1746. //
  1747. // "text" style element options:
  1748. //
  1749. // - [Anchor]
  1750. // - [Embossed]
  1751. // - [Font]
  1752. // - [Foreground]
  1753. // - [Justify]
  1754. // - [Text]
  1755. // - [Underline]
  1756. // - [Width]
  1757. // - [Wraplength]
  1758. //
  1759. // "textarea" style element options:
  1760. //
  1761. // - [Font]
  1762. // - [Width]
  1763. //
  1764. // "thumb" style element options:
  1765. //
  1766. // - [Background]
  1767. // - [Borderwidth]
  1768. // - [Orient]
  1769. // - [Relief]
  1770. // - [Width]
  1771. //
  1772. // "treearea" style element options:
  1773. //
  1774. // "trough" style element options:
  1775. //
  1776. // - [Groovewidth]
  1777. // - [Orient]
  1778. // - [Troughborderwidth]
  1779. // - [Troughcolor]
  1780. // - [Troughrelief]
  1781. //
  1782. // "uparrow" style element options:
  1783. //
  1784. // - [Arrowcolor]
  1785. // - [Arrowsize]
  1786. // - [Background]
  1787. // - [Borderwidth]
  1788. // - [Relief]
  1789. //
  1790. // "vsash" style element options:
  1791. //
  1792. // - [Sashthickness]
  1793. //
  1794. // "vseparator" style element options:
  1795. //
  1796. // - [Background]
  1797. // - [Orient]
  1798. //
  1799. // "default" theme style list
  1800. //
  1801. // .
  1802. //
  1803. // Style map: -foreground {disabled #a3a3a3} -background {disabled #edeceb active #ececec}
  1804. //
  1805. // Cell
  1806. //
  1807. // Layout: Treedata.padding -sticky nswe -children {Treeitem.image -side left -sticky {} Treeitem.text -sticky nswe}
  1808. //
  1809. // ComboboxPopdownFrame
  1810. //
  1811. // Layout: ComboboxPopdownFrame.border -sticky nswe
  1812. //
  1813. // Heading
  1814. //
  1815. // Layout: Treeheading.cell -sticky nswe Treeheading.border -sticky nswe -children {Treeheading.padding -sticky nswe -children {Treeheading.image -side right -sticky {} Treeheading.text -sticky we}}
  1816. //
  1817. // Horizontal.Sash
  1818. //
  1819. // Layout: Sash.hsash -sticky we
  1820. //
  1821. // Horizontal.TProgressbar
  1822. //
  1823. // Layout: Horizontal.Progressbar.trough -sticky nswe -children {Horizontal.Progressbar.pbar -side left -sticky ns Horizontal.Progressbar.ctext -side left -sticky {}}
  1824. //
  1825. // Horizontal.TScale
  1826. //
  1827. // Layout: Horizontal.Scale.focus -sticky nswe -children {Horizontal.Scale.padding -sticky nswe -children {Horizontal.Scale.trough -sticky nswe -children {Horizontal.Scale.slider -side left -sticky {}}}}
  1828. //
  1829. // Horizontal.TScrollbar
  1830. //
  1831. // Layout: Horizontal.Scrollbar.trough -sticky we -children {Horizontal.Scrollbar.leftarrow -side left -sticky {} Horizontal.Scrollbar.rightarrow -side right -sticky {} Horizontal.Scrollbar.thumb -sticky nswe}
  1832. //
  1833. // Item
  1834. //
  1835. // Layout: Treeitem.padding -sticky nswe -children {Treeitem.indicator -side left -sticky {} Treeitem.image -side left -sticky {} Treeitem.text -sticky nswe}
  1836. //
  1837. // Label
  1838. //
  1839. // Layout: Label.fill -sticky nswe -children {Label.text -sticky nswe}
  1840. //
  1841. // Row
  1842. //
  1843. // Layout: Treeitem.row -sticky nswe
  1844. //
  1845. // Sash
  1846. //
  1847. // -
  1848. //
  1849. // Separator
  1850. //
  1851. // Layout: Treeitem.separator -sticky nswe
  1852. //
  1853. // TButton
  1854. //
  1855. // Layout: Button.border -sticky nswe -border 1 -children {Button.focus -sticky nswe -children {Button.padding -sticky nswe -children {Button.label -sticky nswe}}}
  1856. //
  1857. // Style map: -relief {{!disabled pressed} sunken}
  1858. //
  1859. // TCheckbutton
  1860. //
  1861. // Layout: Checkbutton.padding -sticky nswe -children {Checkbutton.indicator -side left -sticky {} Checkbutton.focus -side left -sticky w -children {Checkbutton.label -sticky nswe}}
  1862. //
  1863. // Style map: -indicatorbackground {{alternate disabled} #a3a3a3 {alternate pressed} #5895bc alternate #4a6984 {selected disabled} #a3a3a3 {selected pressed} #5895bc selected #4a6984 disabled #edeceb pressed #c3c3c3}
  1864. //
  1865. // TCombobox
  1866. //
  1867. // Layout: Combobox.field -sticky nswe -children {Combobox.downarrow -side right -sticky ns Combobox.padding -sticky nswe -children {Combobox.textarea -sticky nswe}}
  1868. //
  1869. // Style map: -fieldbackground {readonly #edeceb disabled #edeceb} -arrowcolor {disabled #a3a3a3}
  1870. //
  1871. // TEntry
  1872. //
  1873. // Layout: Entry.field -sticky nswe -border 1 -children {Entry.padding -sticky nswe -children {Entry.textarea -sticky nswe}}
  1874. //
  1875. // Style map: -fieldbackground {readonly #edeceb disabled #edeceb}
  1876. //
  1877. // TFrame
  1878. //
  1879. // Layout: Frame.border -sticky nswe
  1880. //
  1881. // TLabel
  1882. //
  1883. // Layout: Label.border -sticky nswe -border 1 -children {Label.padding -sticky nswe -border 1 -children {Label.label -sticky nswe}}
  1884. //
  1885. // TLabelframe
  1886. //
  1887. // Layout: Labelframe.border -sticky nswe
  1888. //
  1889. // TMenubutton
  1890. //
  1891. // Layout: Menubutton.border -sticky nswe -children {Menubutton.focus -sticky nswe -children {Menubutton.indicator -side right -sticky {} Menubutton.padding -sticky we -children {Menubutton.label -side left -sticky {}}}}
  1892. //
  1893. // Style map: -arrowcolor {disabled #a3a3a3}
  1894. //
  1895. // TNotebook
  1896. //
  1897. // Layout: Notebook.client -sticky nswe
  1898. //
  1899. // TNotebook.Tab
  1900. //
  1901. // Layout: Notebook.tab -sticky nswe -children {Notebook.padding -side top -sticky nswe -children {Notebook.focus -side top -sticky nswe -children {Notebook.label -side top -sticky {}}}}
  1902. //
  1903. // Style map: -highlightcolor {selected #4a6984} -highlight {selected 1} -background {selected #edeceb}
  1904. //
  1905. // TPanedwindow
  1906. //
  1907. // Layout: Panedwindow.background -sticky {}
  1908. //
  1909. // TProgressbar
  1910. //
  1911. // -
  1912. //
  1913. // TRadiobutton
  1914. //
  1915. // Layout: Radiobutton.padding -sticky nswe -children {Radiobutton.indicator -side left -sticky {} Radiobutton.focus -side left -sticky {} -children {Radiobutton.label -sticky nswe}}
  1916. //
  1917. // Style map: -indicatorbackground {{alternate disabled} #a3a3a3 {alternate pressed} #5895bc alternate #4a6984 {selected disabled} #a3a3a3 {selected pressed} #5895bc selected #4a6984 disabled #edeceb pressed #c3c3c3}
  1918. //
  1919. // TScale
  1920. //
  1921. // Style map: -outercolor {active #ececec}
  1922. //
  1923. // TScrollbar
  1924. //
  1925. // Style map: -arrowcolor {disabled #a3a3a3}
  1926. //
  1927. // TSeparator
  1928. //
  1929. // Layout: Separator.separator -sticky nswe
  1930. //
  1931. // TSizegrip
  1932. //
  1933. // Layout: Sizegrip.sizegrip -side bottom -sticky se
  1934. //
  1935. // TSpinbox
  1936. //
  1937. // Layout: Spinbox.field -side top -sticky we -children {null -side right -sticky {} -children {Spinbox.uparrow -side top -sticky e Spinbox.downarrow -side bottom -sticky e} Spinbox.padding -sticky nswe -children {Spinbox.textarea -sticky nswe}}
  1938. //
  1939. // Style map: -fieldbackground {readonly #edeceb disabled #edeceb} -arrowcolor {disabled #a3a3a3}
  1940. //
  1941. // Tab
  1942. //
  1943. // Layout: Notebook.tab -sticky nswe -children {Notebook.padding -side top -sticky nswe -children {Notebook.focus -side top -sticky nswe -children {Notebook.label -side top -sticky {}}}}
  1944. //
  1945. // Toolbutton
  1946. //
  1947. // Layout: Toolbutton.border -sticky nswe -children {Toolbutton.focus -sticky nswe -children {Toolbutton.padding -sticky nswe -children {Toolbutton.label -sticky nswe}}}
  1948. //
  1949. // Style map: -relief {disabled flat selected sunken pressed sunken active raised} -background {pressed #c3c3c3 active #ececec}
  1950. //
  1951. // Treeview
  1952. //
  1953. // Layout: Treeview.field -sticky nswe -border 1 -children {Treeview.padding -sticky nswe -children {Treeview.treearea -sticky nswe}}
  1954. //
  1955. // Style map: -foreground {disabled #a3a3a3 selected #ffffff} -background {disabled #edeceb selected #4a6984}
  1956. //
  1957. // Treeview.Separator
  1958. //
  1959. // Layout: Treeitem.separator -sticky nswe
  1960. //
  1961. // Vertical.Sash
  1962. //
  1963. // Layout: Sash.vsash -sticky ns
  1964. //
  1965. // Vertical.TProgressbar
  1966. //
  1967. // Layout: Vertical.Progressbar.trough -sticky nswe -children {Vertical.Progressbar.pbar -side bottom -sticky we}
  1968. //
  1969. // Vertical.TScale
  1970. //
  1971. // Layout: Vertical.Scale.focus -sticky nswe -children {Vertical.Scale.padding -sticky nswe -children {Vertical.Scale.trough -sticky nswe -children {Vertical.Scale.slider -side top -sticky {}}}}
  1972. //
  1973. // Vertical.TScrollbar
  1974. //
  1975. // Layout: Vertical.Scrollbar.trough -sticky ns -children {Vertical.Scrollbar.uparrow -side top -sticky {} Vertical.Scrollbar.downarrow -side bottom -sticky {} Vertical.Scrollbar.thumb -sticky nswe}PASS
  1976. //
  1977. // # "vista" theme style guide
  1978. //
  1979. // "Combobox.background" style element options:
  1980. //
  1981. // "Combobox.border" style element options:
  1982. //
  1983. // "Combobox.rightdownarrow" style element options:
  1984. //
  1985. // "ComboboxPopdownFrame.background" style element options:
  1986. //
  1987. // "Entry.background" style element options:
  1988. //
  1989. // "Entry.field" style element options:
  1990. //
  1991. // "Horizontal.Progressbar.pbar" style element options:
  1992. //
  1993. // "Horizontal.Scale.slider" style element options:
  1994. //
  1995. // "Horizontal.Scrollbar.grip" style element options:
  1996. //
  1997. // "Horizontal.Scrollbar.leftarrow" style element options:
  1998. //
  1999. // "Horizontal.Scrollbar.rightarrow" style element options:
  2000. //
  2001. // "Horizontal.Scrollbar.thumb" style element options:
  2002. //
  2003. // "Horizontal.Scrollbar.trough" style element options:
  2004. //
  2005. // "Menubutton.dropdown" style element options:
  2006. //
  2007. // "Spinbox.background" style element options:
  2008. //
  2009. // "Spinbox.downarrow" style element options:
  2010. //
  2011. // "Spinbox.field" style element options:
  2012. //
  2013. // "Spinbox.innerbg" style element options:
  2014. //
  2015. // "Spinbox.uparrow" style element options:
  2016. //
  2017. // "Vertical.Progressbar.pbar" style element options:
  2018. //
  2019. // "Vertical.Scale.slider" style element options:
  2020. //
  2021. // "Vertical.Scrollbar.downarrow" style element options:
  2022. //
  2023. // "Vertical.Scrollbar.grip" style element options:
  2024. //
  2025. // "Vertical.Scrollbar.thumb" style element options:
  2026. //
  2027. // "Vertical.Scrollbar.trough" style element options:
  2028. //
  2029. // "Vertical.Scrollbar.uparrow" style element options:
  2030. //
  2031. // "vista" theme style list
  2032. //
  2033. // .
  2034. //
  2035. // Style map: -foreground {disabled SystemGrayText}
  2036. //
  2037. // ComboboxPopdownFrame
  2038. //
  2039. // Layout: ComboboxPopdownFrame.background -sticky nswe -border 1 -children {ComboboxPopdownFrame.padding -sticky nswe}
  2040. //
  2041. // Heading
  2042. //
  2043. // Layout: Treeheading.cell -sticky nswe Treeheading.border -sticky nswe -children {Treeheading.padding -sticky nswe -children {Treeheading.image -side right -sticky {} Treeheading.text -sticky we}}
  2044. //
  2045. // Horizontal.TProgressbar
  2046. //
  2047. // Layout: Horizontal.Progressbar.trough -sticky nswe -children {Horizontal.Progressbar.pbar -side left -sticky ns Horizontal.Progressbar.ctext -sticky nswe}
  2048. //
  2049. // Horizontal.TScale
  2050. //
  2051. // Layout: Scale.focus -sticky nswe -children {Horizontal.Scale.trough -sticky nswe -children {Horizontal.Scale.track -sticky we Horizontal.Scale.slider -side left -sticky {}}}
  2052. //
  2053. // Item
  2054. //
  2055. // Layout: Treeitem.padding -sticky nswe -children {Treeitem.indicator -side left -sticky {} Treeitem.image -side left -sticky {} Treeitem.text -sticky nswe}
  2056. //
  2057. // Label
  2058. //
  2059. // Layout: Label.fill -sticky nswe -children {Label.text -sticky nswe}
  2060. //
  2061. // Separator
  2062. //
  2063. // Layout: Treeitem.separator -sticky nswe
  2064. //
  2065. // TButton
  2066. //
  2067. // Layout: Button.button -sticky nswe -children {Button.focus -sticky nswe -children {Button.padding -sticky nswe -children {Button.label -sticky nswe}}}
  2068. //
  2069. // TCheckbutton
  2070. //
  2071. // Layout: Checkbutton.padding -sticky nswe -children {Checkbutton.indicator -side left -sticky {} Checkbutton.focus -side left -sticky w -children {Checkbutton.label -sticky nswe}}
  2072. //
  2073. // TCombobox
  2074. //
  2075. // Layout: Combobox.border -sticky nswe -children {Combobox.rightdownarrow -side right -sticky ns Combobox.padding -sticky nswe -children {Combobox.background -sticky nswe -children {Combobox.focus -sticky nswe -children {Combobox.textarea -sticky nswe}}}}
  2076. //
  2077. // Style map: -focusfill {{readonly focus} SystemHighlight} -foreground {disabled SystemGrayText {readonly focus} SystemHighlightText} -selectforeground {!focus SystemWindowText} -selectbackground {!focus SystemWindow}
  2078. //
  2079. // TEntry
  2080. //
  2081. // Layout: Entry.field -sticky nswe -children {Entry.background -sticky nswe -children {Entry.padding -sticky nswe -children {Entry.textarea -sticky nswe}}}
  2082. //
  2083. // Style map: -selectforeground {!focus SystemWindowText} -selectbackground {!focus SystemWindow}
  2084. //
  2085. // TLabelframe.Label
  2086. //
  2087. // Layout: Label.fill -sticky nswe -children {Label.text -sticky nswe}
  2088. //
  2089. // TMenubutton
  2090. //
  2091. // Layout: Menubutton.dropdown -side right -sticky ns Menubutton.button -sticky nswe -children {Menubutton.padding -sticky we -children {Menubutton.label -sticky {}}}
  2092. //
  2093. // TNotebook
  2094. //
  2095. // Layout: Notebook.client -sticky nswe
  2096. //
  2097. // TNotebook.Tab
  2098. //
  2099. // Layout: Notebook.tab -sticky nswe -children {Notebook.padding -side top -sticky nswe -children {Notebook.focus -side top -sticky nswe -children {Notebook.label -side top -sticky {}}}}
  2100. //
  2101. // Style map: -expand {selected {2 2 2 2}}
  2102. //
  2103. // TProgressbar
  2104. //
  2105. // -
  2106. //
  2107. // TRadiobutton
  2108. //
  2109. // Layout: Radiobutton.padding -sticky nswe -children {Radiobutton.indicator -side left -sticky {} Radiobutton.focus -side left -sticky {} -children {Radiobutton.label -sticky nswe}}
  2110. //
  2111. // TScale
  2112. //
  2113. // -
  2114. //
  2115. // TSpinbox
  2116. //
  2117. // Layout: Spinbox.field -sticky nswe -children {Spinbox.background -sticky nswe -children {Spinbox.padding -sticky nswe -children {Spinbox.innerbg -sticky nswe -children {Spinbox.textarea -sticky nswe}} Spinbox.uparrow -side top -sticky nse Spinbox.downarrow -side bottom -sticky nse}}
  2118. //
  2119. // Style map: -selectforeground {!focus SystemWindowText} -selectbackground {!focus SystemWindow}
  2120. //
  2121. // Tab
  2122. //
  2123. // Layout: Notebook.tab -sticky nswe -children {Notebook.padding -side top -sticky nswe -children {Notebook.focus -side top -sticky nswe -children {Notebook.label -side top -sticky {}}}}
  2124. //
  2125. // Toolbutton
  2126. //
  2127. // Layout: Toolbutton.border -sticky nswe -children {Toolbutton.focus -sticky nswe -children {Toolbutton.padding -sticky nswe -children {Toolbutton.label -sticky nswe}}}
  2128. //
  2129. // Treeview
  2130. //
  2131. // Layout: Treeview.field -sticky nswe -border 1 -children {Treeview.padding -sticky nswe -children {Treeview.treearea -sticky nswe}}
  2132. //
  2133. // Style map: -foreground {disabled SystemGrayText selected SystemHighlightText} -background {disabled SystemButtonFace selected SystemHighlight}
  2134. //
  2135. // Treeview.Separator
  2136. //
  2137. // Layout: Treeitem.separator -sticky nswe
  2138. //
  2139. // Vertical.TProgressbar
  2140. //
  2141. // Layout: Vertical.Progressbar.trough -sticky nswe -children {Vertical.Progressbar.pbar -side bottom -sticky we}
  2142. //
  2143. // Vertical.TScale
  2144. //
  2145. // Layout: Scale.focus -sticky nswe -children {Vertical.Scale.trough -sticky nswe -children {Vertical.Scale.track -sticky ns Vertical.Scale.slider -side top -sticky {}}}
  2146. //
  2147. // # "winnative" theme style guide
  2148. //
  2149. // "Button.border" style element options:
  2150. //
  2151. // - [Default]
  2152. // - [Highlightcolor]
  2153. // - [Relief]
  2154. //
  2155. // "Checkbutton.indicator" style element options:
  2156. //
  2157. // "Combobox.focus" style element options:
  2158. //
  2159. // - [Focusfill]
  2160. //
  2161. // "ComboboxPopdownFrame.border" style element options:
  2162. //
  2163. // - [Background]
  2164. // - [Borderwidth]
  2165. // - [Relief]
  2166. //
  2167. // "Radiobutton.indicator" style element options:
  2168. //
  2169. // "Scrollbar.trough" style element options:
  2170. //
  2171. // "Spinbox.downarrow" style element options:
  2172. //
  2173. // "Spinbox.uparrow" style element options:
  2174. //
  2175. // "border" style element options:
  2176. //
  2177. // - [Relief]
  2178. //
  2179. // "client" style element options:
  2180. //
  2181. // "downarrow" style element options:
  2182. //
  2183. // "field" style element options:
  2184. //
  2185. // - [Fieldbackground]
  2186. //
  2187. // "focus" style element options:
  2188. //
  2189. // "leftarrow" style element options:
  2190. //
  2191. // "rightarrow" style element options:
  2192. //
  2193. // "sizegrip" style element options:
  2194. //
  2195. // "slider" style element options:
  2196. //
  2197. // - [Orient]
  2198. //
  2199. // "tab" style element options:
  2200. //
  2201. // - [Background]
  2202. // - [Borderwidth]
  2203. //
  2204. // "thumb" style element options:
  2205. //
  2206. // - [Orient]
  2207. //
  2208. // "uparrow" style element options:
  2209. //
  2210. // "winnative" theme style list
  2211. //
  2212. // .
  2213. //
  2214. // Style map: -foreground {disabled SystemGrayText} -embossed {disabled 1}
  2215. //
  2216. // ComboboxPopdownFrame
  2217. //
  2218. // Layout: ComboboxPopdownFrame.border -sticky nswe
  2219. //
  2220. // Heading
  2221. //
  2222. // Layout: Treeheading.cell -sticky nswe Treeheading.border -sticky nswe -children {Treeheading.padding -sticky nswe -children {Treeheading.image -side right -sticky {} Treeheading.text -sticky we}}
  2223. //
  2224. // Item
  2225. //
  2226. // Layout: Treeitem.padding -sticky nswe -children {Treeitem.indicator -side left -sticky {} Treeitem.image -side left -sticky {} Treeitem.text -sticky nswe}
  2227. //
  2228. // Label
  2229. //
  2230. // Layout: Label.fill -sticky nswe -children {Label.text -sticky nswe}
  2231. //
  2232. // Separator
  2233. //
  2234. // Layout: Treeitem.separator -sticky nswe
  2235. //
  2236. // TButton
  2237. //
  2238. // Layout: Button.border -sticky nswe -children {Button.padding -sticky nswe -children {Button.label -sticky nswe}}
  2239. //
  2240. // Style map: -relief {{!disabled pressed} sunken}
  2241. //
  2242. // TCheckbutton
  2243. //
  2244. // Layout: Checkbutton.padding -sticky nswe -children {Checkbutton.indicator -side left -sticky {} Checkbutton.focus -side left -sticky w -children {Checkbutton.label -sticky nswe}}
  2245. //
  2246. // TCombobox
  2247. //
  2248. // Layout: Combobox.field -sticky nswe -children {Combobox.downarrow -side right -sticky ns Combobox.padding -sticky nswe -children {Combobox.focus -sticky nswe -children {Combobox.textarea -sticky nswe}}}
  2249. //
  2250. // Style map: -focusfill {{readonly focus} SystemHighlight} -foreground {disabled SystemGrayText {readonly focus} SystemHighlightText} -selectforeground {!focus SystemWindowText} -fieldbackground {readonly SystemButtonFace disabled SystemButtonFace} -selectbackground {!focus SystemWindow}
  2251. //
  2252. // TEntry
  2253. //
  2254. // Layout: Entry.field -sticky nswe -border 1 -children {Entry.padding -sticky nswe -children {Entry.textarea -sticky nswe}}
  2255. //
  2256. // Style map: -selectforeground {!focus SystemWindowText} -selectbackground {!focus SystemWindow} -fieldbackground {readonly SystemButtonFace disabled SystemButtonFace}
  2257. //
  2258. // TLabelframe
  2259. //
  2260. // Layout: Labelframe.border -sticky nswe
  2261. //
  2262. // TLabelframe.Label
  2263. //
  2264. // Layout: Label.fill -sticky nswe -children {Label.text -sticky nswe}
  2265. //
  2266. // TMenubutton
  2267. //
  2268. // Layout: Menubutton.border -sticky nswe -children {Menubutton.focus -sticky nswe -children {Menubutton.indicator -side right -sticky {} Menubutton.padding -sticky we -children {Menubutton.label -side left -sticky {}}}}
  2269. //
  2270. // TNotebook
  2271. //
  2272. // Layout: Notebook.client -sticky nswe
  2273. //
  2274. // TNotebook.Tab
  2275. //
  2276. // Layout: Notebook.tab -sticky nswe -children {Notebook.padding -side top -sticky nswe -children {Notebook.focus -side top -sticky nswe -children {Notebook.label -side top -sticky {}}}}
  2277. //
  2278. // Style map: -expand {selected {2 2 2 0}}
  2279. //
  2280. // TProgressbar
  2281. //
  2282. // -
  2283. //
  2284. // TRadiobutton
  2285. //
  2286. // Layout: Radiobutton.padding -sticky nswe -children {Radiobutton.indicator -side left -sticky {} Radiobutton.focus -side left -sticky {} -children {Radiobutton.label -sticky nswe}}
  2287. //
  2288. // TScale
  2289. //
  2290. // -
  2291. //
  2292. // TSpinbox
  2293. //
  2294. // Layout: Spinbox.field -side top -sticky we -children {null -side right -sticky {} -children {Spinbox.uparrow -side top -sticky e Spinbox.downarrow -side bottom -sticky e} Spinbox.padding -sticky nswe -children {Spinbox.textarea -sticky nswe}}
  2295. //
  2296. // Tab
  2297. //
  2298. // Layout: Notebook.tab -sticky nswe -children {Notebook.padding -side top -sticky nswe -children {Notebook.focus -side top -sticky nswe -children {Notebook.label -side top -sticky {}}}}
  2299. //
  2300. // Toolbutton
  2301. //
  2302. // Layout: Toolbutton.border -sticky nswe -children {Toolbutton.focus -sticky nswe -children {Toolbutton.padding -sticky nswe -children {Toolbutton.label -sticky nswe}}}
  2303. //
  2304. // Style map: -relief {disabled flat selected sunken pressed sunken active raised}
  2305. //
  2306. // Treeview
  2307. //
  2308. // Layout: Treeview.field -sticky nswe -border 1 -children {Treeview.padding -sticky nswe -children {Treeview.treearea -sticky nswe}}
  2309. //
  2310. // Style map: -foreground {disabled SystemGrayText selected SystemHighlightText} -background {disabled SystemButtonFace selected SystemHighlight}
  2311. //
  2312. // Treeview.Separator
  2313. //
  2314. // Layout: Treeitem.separator -sticky nswe
  2315. //
  2316. // # "xpnative" theme style guide
  2317. //
  2318. // "Button.button" style element options:
  2319. //
  2320. // "Checkbutton.indicator" style element options:
  2321. //
  2322. // "Combobox.downarrow" style element options:
  2323. //
  2324. // "Combobox.field" style element options:
  2325. //
  2326. // "Entry.field" style element options:
  2327. //
  2328. // "Horizontal.Progressbar.pbar" style element options:
  2329. //
  2330. // "Horizontal.Progressbar.trough" style element options:
  2331. //
  2332. // "Horizontal.Scale.slider" style element options:
  2333. //
  2334. // "Horizontal.Scale.track" style element options:
  2335. //
  2336. // "Horizontal.Scrollbar.grip" style element options:
  2337. //
  2338. // "Horizontal.Scrollbar.thumb" style element options:
  2339. //
  2340. // "Horizontal.Scrollbar.trough" style element options:
  2341. //
  2342. // "Labelframe.border" style element options:
  2343. //
  2344. // "Menubutton.button" style element options:
  2345. //
  2346. // "Menubutton.dropdown" style element options:
  2347. //
  2348. // "NotebookPane.background" style element options:
  2349. //
  2350. // "Radiobutton.indicator" style element options:
  2351. //
  2352. // "Scale.trough" style element options:
  2353. //
  2354. // "Scrollbar.downarrow" style element options:
  2355. //
  2356. // "Scrollbar.leftarrow" style element options:
  2357. //
  2358. // "Scrollbar.rightarrow" style element options:
  2359. //
  2360. // "Scrollbar.uparrow" style element options:
  2361. //
  2362. // "Spinbox.downarrow" style element options:
  2363. //
  2364. // "Spinbox.field" style element options:
  2365. //
  2366. // "Spinbox.uparrow" style element options:
  2367. //
  2368. // "Toolbutton.border" style element options:
  2369. //
  2370. // "Treeheading.border" style element options:
  2371. //
  2372. // "Treeitem.indicator" style element options:
  2373. //
  2374. // "Treeview.field" style element options:
  2375. //
  2376. // "Vertical.Progressbar.pbar" style element options:
  2377. //
  2378. // "Vertical.Progressbar.trough" style element options:
  2379. //
  2380. // "Vertical.Scale.slider" style element options:
  2381. //
  2382. // "Vertical.Scale.track" style element options:
  2383. //
  2384. // "Vertical.Scrollbar.grip" style element options:
  2385. //
  2386. // "Vertical.Scrollbar.thumb" style element options:
  2387. //
  2388. // "Vertical.Scrollbar.trough" style element options:
  2389. //
  2390. // "client" style element options:
  2391. //
  2392. // "sizegrip" style element options:
  2393. //
  2394. // "tab" style element options:
  2395. //
  2396. // "xpnative" theme style list
  2397. //
  2398. // .
  2399. //
  2400. // Style map: -foreground {disabled SystemGrayText}
  2401. //
  2402. // Heading
  2403. //
  2404. // Layout: Treeheading.cell -sticky nswe Treeheading.border -sticky nswe -children {Treeheading.padding -sticky nswe -children {Treeheading.image -side right -sticky {} Treeheading.text -sticky we}}
  2405. //
  2406. // Horizontal.TScale
  2407. //
  2408. // Layout: Scale.focus -sticky nswe -children {Horizontal.Scale.trough -sticky nswe -children {Horizontal.Scale.track -sticky we Horizontal.Scale.slider -side left -sticky {}}}
  2409. //
  2410. // Horizontal.TScrollbar
  2411. //
  2412. // Layout: Horizontal.Scrollbar.trough -sticky we -children {Horizontal.Scrollbar.leftarrow -side left -sticky {} Horizontal.Scrollbar.rightarrow -side right -sticky {} Horizontal.Scrollbar.thumb -sticky nswe -unit 1 -children {Horizontal.Scrollbar.grip -sticky {}}}
  2413. //
  2414. // Item
  2415. //
  2416. // Layout: Treeitem.padding -sticky nswe -children {Treeitem.indicator -side left -sticky {} Treeitem.image -side left -sticky {} Treeitem.text -sticky nswe}
  2417. //
  2418. // Label
  2419. //
  2420. // Layout: Label.fill -sticky nswe -children {Label.text -sticky nswe}
  2421. //
  2422. // Separator
  2423. //
  2424. // Layout: Treeitem.separator -sticky nswe
  2425. //
  2426. // TButton
  2427. //
  2428. // Layout: Button.button -sticky nswe -children {Button.focus -sticky nswe -children {Button.padding -sticky nswe -children {Button.label -sticky nswe}}}
  2429. //
  2430. // TCheckbutton
  2431. //
  2432. // Layout: Checkbutton.padding -sticky nswe -children {Checkbutton.indicator -side left -sticky {} Checkbutton.focus -side left -sticky w -children {Checkbutton.label -sticky nswe}}
  2433. //
  2434. // TCombobox
  2435. //
  2436. // Layout: Combobox.field -sticky nswe -children {Combobox.downarrow -side right -sticky ns Combobox.padding -sticky nswe -children {Combobox.focus -sticky nswe -children {Combobox.textarea -sticky nswe}}}
  2437. //
  2438. // Style map: -focusfill {{readonly focus} SystemHighlight} -foreground {disabled SystemGrayText {readonly focus} SystemHighlightText} -selectforeground {!focus SystemWindowText} -selectbackground {!focus SystemWindow}
  2439. //
  2440. // TEntry
  2441. //
  2442. // Layout: Entry.field -sticky nswe -border 1 -children {Entry.padding -sticky nswe -children {Entry.textarea -sticky nswe}}
  2443. //
  2444. // Style map: -selectforeground {!focus SystemWindowText} -selectbackground {!focus SystemWindow}
  2445. //
  2446. // TLabelframe.Label
  2447. //
  2448. // Layout: Label.fill -sticky nswe -children {Label.text -sticky nswe}
  2449. //
  2450. // TMenubutton
  2451. //
  2452. // Layout: Menubutton.dropdown -side right -sticky ns Menubutton.button -sticky nswe -children {Menubutton.padding -sticky we -children {Menubutton.label -sticky {}}}
  2453. //
  2454. // TNotebook
  2455. //
  2456. // Layout: Notebook.client -sticky nswe
  2457. //
  2458. // TNotebook.Tab
  2459. //
  2460. // Layout: Notebook.tab -sticky nswe -children {Notebook.padding -side top -sticky nswe -children {Notebook.focus -side top -sticky nswe -children {Notebook.label -side top -sticky {}}}}
  2461. //
  2462. // Style map: -expand {selected {2 2 2 2}}
  2463. //
  2464. // TProgressbar
  2465. //
  2466. // -
  2467. //
  2468. // TRadiobutton
  2469. //
  2470. // Layout: Radiobutton.padding -sticky nswe -children {Radiobutton.indicator -side left -sticky {} Radiobutton.focus -side left -sticky {} -children {Radiobutton.label -sticky nswe}}
  2471. //
  2472. // TScale
  2473. //
  2474. // -
  2475. //
  2476. // TScrollbar
  2477. //
  2478. // -
  2479. //
  2480. // TSpinbox
  2481. //
  2482. // Layout: Spinbox.field -side top -sticky we -children {null -side right -sticky {} -children {Spinbox.uparrow -side top -sticky e Spinbox.downarrow -side bottom -sticky e} Spinbox.padding -sticky nswe -children {Spinbox.textarea -sticky nswe}}
  2483. //
  2484. // Style map: -selectforeground {!focus SystemWindowText} -selectbackground {!focus SystemWindow}
  2485. //
  2486. // Tab
  2487. //
  2488. // Layout: Notebook.tab -sticky nswe -children {Notebook.padding -side top -sticky nswe -children {Notebook.focus -side top -sticky nswe -children {Notebook.label -side top -sticky {}}}}
  2489. //
  2490. // Toolbutton
  2491. //
  2492. // Layout: Toolbutton.border -sticky nswe -children {Toolbutton.focus -sticky nswe -children {Toolbutton.padding -sticky nswe -children {Toolbutton.label -sticky nswe}}}
  2493. //
  2494. // Treeview
  2495. //
  2496. // Layout: Treeview.field -sticky nswe -border 1 -children {Treeview.padding -sticky nswe -children {Treeview.treearea -sticky nswe}}
  2497. //
  2498. // Style map: -foreground {disabled SystemGrayText selected SystemHighlightText} -background {disabled SystemButtonFace selected SystemHighlight}
  2499. //
  2500. // Treeview.Separator
  2501. //
  2502. // Layout: Treeitem.separator -sticky nswe
  2503. //
  2504. // Vertical.TScale
  2505. //
  2506. // Layout: Scale.focus -sticky nswe -children {Vertical.Scale.trough -sticky nswe -children {Vertical.Scale.track -sticky ns Vertical.Scale.slider -side top -sticky {}}}
  2507. //
  2508. // Vertical.TScrollbar
  2509. //
  2510. // Layout: Vertical.Scrollbar.trough -sticky ns -children {Vertical.Scrollbar.uparrow -side top -sticky {} Vertical.Scrollbar.downarrow -side bottom -sticky {} Vertical.Scrollbar.thumb -sticky nswe -unit 1 -children {Vertical.Scrollbar.grip -sticky {}}}PASS
  2511. //
  2512. // [FreeBSD]: https://github.com/ebitengine/purego/blob/7402fed73989eaf478f4f7905862d0f04537ac8c/internal/fakecgo/freebsd.go#L15
  2513. // [Go issue 54187]: https://github.com/golang/go/issues/54187
  2514. // [MVP]: https://en.wikipedia.org/wiki/Minimum_viable_product
  2515. // [RERO]: https://en.wikipedia.org/wiki/Release_early,_release_often
  2516. // [Tkinter]: https://en.wikipedia.org/wiki/Tkinter
  2517. // [X Window System]: https://en.wikipedia.org/wiki/X_Window_System
  2518. // [cgo]: https://pkg.go.dev/cmd/cgo
  2519. // [documentation for cmd/link]: https://pkg.go.dev/cmd/link
  2520. // [equ]: https://pkg.go.dev/modernc.org/equ
  2521. // [issue 54]: https://gitlab.com/cznic/tk9.0/-/issues/54
  2522. // [issue 66]: https://gitlab.com/cznic/tk9.0/-/issues/66
  2523. // [issue tracker]: https://gitlab.com/cznic/tk9.0/-/issues
  2524. // [jnml's LiberaPay]: https://liberapay.com/jnml/donate
  2525. // [modern-c.appspot.com]: https://modern-c.appspot.com/-/builder/?importpath=modernc.org%2ftk9.0
  2526. // [purego]: https://github.com/ebitengine/purego
  2527. // [secure-files-go-gui]: https://github.com/darshanags/secure-files-go-gui
  2528. // [secure-files-go]: https://github.com/darshanags/secure-files-go
  2529. // [tcl.tk site]: https://www.tcl-lang.org/man/tcl9.0/TkCmd/index.html
  2530. // [tk9.0/vnc package]: https://pkg.go.dev/modernc.org/tk9.0/vnc
  2531. // [tkinter.ttk site]: https://docs.python.org/3/library/tkinter.ttk.html
  2532. // [tutorialspoint]: https://www.tutorialspoint.com/tcl-tk/tk_overview.htm
  2533. // [visualmd]: https://pkg.go.dev/modernc.org/visualmd
  2534. package tk9_0 // import "modernc.org/tk9.0"