From 54ab1bfbfabb5e5fd8a8fe758a57da87b7bdb994 Mon Sep 17 00:00:00 2001 From: "Diogo F. S. Ramos" Date: Tue, 28 Aug 2012 23:02:44 -0300 Subject: [PATCH] Add a Widget Gallery to Racket GUI documentation It's very helpful to have a visual aid when dealing with a graphical interface toolkit. This patch adds an overview of the widgets available in the library consisting of screen shots of the main ones and the snippets used to produce them. Each widget image link back to the full documentation. --- collects/scribblings/gui/button-class.scrbl | 2 + .../scribblings/gui/check-box-class.scrbl | 2 + collects/scribblings/gui/choice-class.scrbl | 2 + .../scribblings/gui/combo-field-class.scrbl | 2 + .../scribblings/gui/editor-canvas-class.scrbl | 2 + collects/scribblings/gui/gauge-class.scrbl | 2 + .../gui/group-box-panel-class.scrbl | 2 + collects/scribblings/gui/gui.scrbl | 1 + collects/scribblings/gui/image/button.png | Bin 0 -> 3228 bytes collects/scribblings/gui/image/check-box.png | Bin 0 -> 3547 bytes collects/scribblings/gui/image/choice.png | Bin 0 -> 4240 bytes .../scribblings/gui/image/combo-field.png | Bin 0 -> 3809 bytes .../scribblings/gui/image/editor-canvas.png | Bin 0 -> 3707 bytes collects/scribblings/gui/image/gauge.png | Bin 0 -> 2952 bytes .../scribblings/gui/image/group-box-panel.png | Bin 0 -> 3863 bytes collects/scribblings/gui/image/list-box.png | Bin 0 -> 6395 bytes collects/scribblings/gui/image/menu-bar.png | Bin 0 -> 3058 bytes collects/scribblings/gui/image/message.png | Bin 0 -> 2584 bytes collects/scribblings/gui/image/panel.png | Bin 0 -> 2316 bytes collects/scribblings/gui/image/radio-box.png | Bin 0 -> 5237 bytes collects/scribblings/gui/image/slider.png | Bin 0 -> 3548 bytes collects/scribblings/gui/image/tab-panel.png | Bin 0 -> 4204 bytes collects/scribblings/gui/image/text-field.png | Bin 0 -> 2617 bytes collects/scribblings/gui/list-box-class.scrbl | 2 + collects/scribblings/gui/menu-bar-class.scrbl | 2 + collects/scribblings/gui/message-class.scrbl | 2 + collects/scribblings/gui/panel-class.scrbl | 2 + .../scribblings/gui/radio-box-class.scrbl | 2 + collects/scribblings/gui/slider-class.scrbl | 2 + .../scribblings/gui/tab-panel-class.scrbl | 2 + .../scribblings/gui/text-field-class.scrbl | 2 + collects/scribblings/gui/widget-gallery.rkt | 18 +++ collects/scribblings/gui/widget-gallery.scrbl | 136 ++++++++++++++++++ 33 files changed, 185 insertions(+) create mode 100644 collects/scribblings/gui/image/button.png create mode 100644 collects/scribblings/gui/image/check-box.png create mode 100644 collects/scribblings/gui/image/choice.png create mode 100644 collects/scribblings/gui/image/combo-field.png create mode 100644 collects/scribblings/gui/image/editor-canvas.png create mode 100644 collects/scribblings/gui/image/gauge.png create mode 100644 collects/scribblings/gui/image/group-box-panel.png create mode 100644 collects/scribblings/gui/image/list-box.png create mode 100644 collects/scribblings/gui/image/menu-bar.png create mode 100644 collects/scribblings/gui/image/message.png create mode 100644 collects/scribblings/gui/image/panel.png create mode 100644 collects/scribblings/gui/image/radio-box.png create mode 100644 collects/scribblings/gui/image/slider.png create mode 100644 collects/scribblings/gui/image/tab-panel.png create mode 100644 collects/scribblings/gui/image/text-field.png create mode 100644 collects/scribblings/gui/widget-gallery.rkt create mode 100644 collects/scribblings/gui/widget-gallery.scrbl diff --git a/collects/scribblings/gui/button-class.scrbl b/collects/scribblings/gui/button-class.scrbl index 7c7b4c0a39..4521325c75 100644 --- a/collects/scribblings/gui/button-class.scrbl +++ b/collects/scribblings/gui/button-class.scrbl @@ -1,6 +1,8 @@ #lang scribble/doc @(require "common.rkt") +@centered{@image[#:suffixes @list[".png"]]{image/button}} + @defclass/title[button% object% (control<%>)]{ Whenever a button is clicked by the user, the button's callback diff --git a/collects/scribblings/gui/check-box-class.scrbl b/collects/scribblings/gui/check-box-class.scrbl index 620d8f92a7..d4cb8ecfe4 100644 --- a/collects/scribblings/gui/check-box-class.scrbl +++ b/collects/scribblings/gui/check-box-class.scrbl @@ -1,6 +1,8 @@ #lang scribble/doc @(require "common.rkt") +@centered{@image[#:suffixes @list[".png"]]{image/check-box}} + @defclass/title[check-box% object% (control<%>)]{ A check box is a labeled box which is either checked or unchecked. diff --git a/collects/scribblings/gui/choice-class.scrbl b/collects/scribblings/gui/choice-class.scrbl index 5042809f7c..a09d1c4975 100644 --- a/collects/scribblings/gui/choice-class.scrbl +++ b/collects/scribblings/gui/choice-class.scrbl @@ -1,6 +1,8 @@ #lang scribble/doc @(require "common.rkt") +@centered{@image[#:suffixes @list[".png"]]{image/choice}} + @defclass/title[choice% object% (list-control<%>)]{ A choice item allows the user to select one string item from a pop-up diff --git a/collects/scribblings/gui/combo-field-class.scrbl b/collects/scribblings/gui/combo-field-class.scrbl index db087ce8da..31a8dd7b6d 100644 --- a/collects/scribblings/gui/combo-field-class.scrbl +++ b/collects/scribblings/gui/combo-field-class.scrbl @@ -1,6 +1,8 @@ #lang scribble/doc @(require "common.rkt") +@centered{@image[#:suffixes @list[".png"]]{image/combo-field}} + @defclass/title[combo-field% text-field% ()]{ A @racket[combo-field%] object is a @racket[text-field%] diff --git a/collects/scribblings/gui/editor-canvas-class.scrbl b/collects/scribblings/gui/editor-canvas-class.scrbl index 807d478d46..c3631babdc 100644 --- a/collects/scribblings/gui/editor-canvas-class.scrbl +++ b/collects/scribblings/gui/editor-canvas-class.scrbl @@ -1,6 +1,8 @@ #lang scribble/doc @(require "common.rkt") +@centered{@image[#:suffixes @list[".png"]]{image/editor-canvas}} + @defclass/title[editor-canvas% object% (canvas<%>)]{ An @racket[editor-canvas%] object manages and displays a diff --git a/collects/scribblings/gui/gauge-class.scrbl b/collects/scribblings/gui/gauge-class.scrbl index da5c6bb74e..823442087c 100644 --- a/collects/scribblings/gui/gauge-class.scrbl +++ b/collects/scribblings/gui/gauge-class.scrbl @@ -1,6 +1,8 @@ #lang scribble/doc @(require "common.rkt") +@centered{@image[#:suffixes @list[".png"]]{image/gauge}} + @defclass/title[gauge% object% (control<%>)]{ A gauge is a horizontal or vertical bar for displaying the output diff --git a/collects/scribblings/gui/group-box-panel-class.scrbl b/collects/scribblings/gui/group-box-panel-class.scrbl index 3d5104c206..f1640fcc43 100644 --- a/collects/scribblings/gui/group-box-panel-class.scrbl +++ b/collects/scribblings/gui/group-box-panel-class.scrbl @@ -1,6 +1,8 @@ #lang scribble/doc @(require "common.rkt") +@centered{@image[#:suffixes @list[".png"]]{image/group-box-panel}} + @defclass/title[group-box-panel% vertical-panel% ()]{ A group-box panel arranges its subwindows in a single column, but also diff --git a/collects/scribblings/gui/gui.scrbl b/collects/scribblings/gui/gui.scrbl index b4403274eb..43ec381ebc 100644 --- a/collects/scribblings/gui/gui.scrbl +++ b/collects/scribblings/gui/gui.scrbl @@ -41,6 +41,7 @@ Both parts of the toolbox rely extensively on the @;------------------------------------------------------------------------ @include-section["win-overview.scrbl"] +@include-section["widget-gallery.scrbl"] @include-section["win-classes.scrbl"] @include-section["win-funcs.scrbl"] @include-section["editor-overview.scrbl"] diff --git a/collects/scribblings/gui/image/button.png b/collects/scribblings/gui/image/button.png new file mode 100644 index 0000000000000000000000000000000000000000..23536d9e143862c15c58b7ce8b5945ffd7673989 GIT binary patch literal 3228 zcmb7Hc{tSF7at4;qedwP)qFKx%D&VqOJ>G8*(KSMJt1b0HQUT2YMN~EdKp=wR18U$ zF{zMbr|gq0TZyq{vW(yK`}gPcpcO5YEgglq;U{r}Nlk z66Cm`U>MfYSa4j3S5RFpNgf`@h2UYvj$wwuH*WX@g@Fu1d_2N@yb%%C!~77YSWBDB zi3cP=AdxMs5!ya-^e5FNQ06kcEnc%ax28J9OZTj|w7jJu)Ad5Su<+^JO3M2H|0_Vx= zGH*9FwB*~Y7F>>a-tMohXsS}jEmQ; zzRf0(5Jp=zfdJ7SB-D$0keIEkU5AbbSP?>OrgT(?%Z>@D`p8&*V*feijQW`D)kow*L53%8u3LXXOPL;{dLeQ4w! zaai%NXZER$x~h+sB99S&P;mydaJjvptpi#VK9a~)Kf-o0(6BGs3DeynEGth$$q`{p zOG>pRW+s1L!wLOXRvvwO`@ro5DPD;IkH1*Nqdm6m+((N5iU|c7ohUc~hQYuvW)KWS z2n_)M2!I3wE&EB~x^5QIf;?!+a2$T=2nO^)^2L`+dvf5usBth48m7kS)Fj`hK6ZG1 zvvvOa;$q<|4?bztQ)!aLC!8@bs)oAyyRwTjWC}$?O|3T*oKTa6fc)z+8n)}1R$)z7 z4^SR-{?OKT4nGZk?l22?HXv1{bA6$sa0Ej+rrTZO^13p5)BpRX&Y<&qHCF_m0c#g@ zt58$YfTervgp5p!Wb^8bwYrwpXZ?~?62fgV*{i|TcW-+Wi6!6{YxajP2+zruPI0!q zOD07Env+Cj&V`T=jyUz>0Fd0;&r-OXJQL|w@cYn5Ul9rVO4>tII5TTtTUf}$I4yi8 zmWNIA(Im|xUk0-7cxbEMQ}b820GZz9>*x`9={5gs_3Fo)0hcw{vVOH3uI;F$6FE>o z*N6D*QuaQkL(xSRj7Fs+yKerPbteP8JxW0G`k3&}sc>C&?+EkP*_PCl_&wr4KtxC@ zZh?xJh;Gb)B9%Q}<`7g9k=W!SGdR~0S^2WyE~v*>hqF&v*(>q+!FwJ>QR@u9O|{$z z*RCJ5_>(b7??Z#4MDixHC)fgQ6+6O@>Pm+jFIm%9OD=SB6@7ofAVXb%cNTJppiP4U zqD5+fYI{rI)sLd%tILX~IvpZ8-^Ai#CVAfMlwgDQ$GgaL()Uz`z*#NK8dYq1C?#UK z(%o%9EqCfwIw=)qbcc;T(_{o14D=kB>)LSc@F~_E(PxX-e*F!$wz|C}rPF=z{F)Di z@mulM#zTE0RN<}Up137Mt^w!FS51wfV(t3<13?o8TW({)I|m{H1N1rX6s1xv)*jqh zp30xt&8dPb1l@wum=Pywbk7>P&OGwL&wW6UvnxJxu^NTKd#eW5E&k<3FF}1XN{bWt z>5~d;iSmV9Z+9oZ17AltN#QM&D{OVwgO5ioU^^Qafmcs>l5@uTLtjT-BU9-QX=g%< zc#_=qfgrl?KfM@_z0(%OUF;>T9zC3V1V_q^^XnjPrZnMj)6S`#mF?5jC-%jIPdgPA zd>EeKwCCL4soUIhIrZ5J&*nU0tp}TAo{tdGjh@>&m(%U{dneM$_-^AekE!Z(c|H1l?7?}FF_X^5(kB{VA+%D- z@jF>`sey9c>^DT~H}MksuhBQw#7*O4PHcVMbV@%MM~HZX#6N+sF}Nq9k2e`H`jnZu zcg?oF(Rz`bM`XDlkt5xkpFjD4rf;QP85;`O_cHzG)!3qS2fVTub@XS+<8QJabOSlX8KP217!6?iF)_TYE`Tt>$C$82-n@16N`VGGC|m4iZjX4Bw+ z&%!%3S*xxPwZAXTR|h z@L2vVm6;uX_KQ_INt;q;e>(HYUpXm2=N(d?|Dc4&8oRo4wEo3=En=U0dtb(#=z5d% zEZNe%NbSgTB?|_6_-|3ZOvhBco*C08?Kj3v3`Emgd?W?~NSM$-&NZ{ohBiqE&d~Aq z;|^o|cE7LZ>*Sw&)?-7JnORtgZ*G1VR}t0aGyDM>vvpwoEzw~5t7Y))_cXU6O?d^c z!~~N{N}pXzq2bmV>%--$zI+dVX3(#oApN+_tQ)TT|9ZTMoS=?NyY_sMYi6G~h}+j} zZk&pZN&Y@CjEhT3l?)BPBIF$RC;!O#LPik6#i`T1hZWS&POnR3 zYe|-Kt4;JwdE@illW};Kpo~?5-x*?VM5T`{CWlf>>*5VUC&R<@gp|8x12GB~J%RR}3eSR=wvDnyH5i1~{O66j9 zw4o~^vIShnV+woov9bT@x_Gi`(9~&W$YDR!^}2<&2CBBU>YJUbolI_8`jSFc zx3IE$eI>lyAs~wS0f`-TYr^~c-z_UEn~PzuxRlvHb$Gr$=;7;IdhTe_RAcdxhrm;B zm^rqikpaCYRLnebSB3PV-*i89)=Y(btNh!*1?M+V5Vsb>B^NGdA%J8`H4*92v#c)@w_!^_6xg3m z>zNhqxZ*zd`EF|CMhU&4^rS(AxEE$R`XslEnG5A3 z&(WSs2(4lYGjd5VE}QvZVn8AxxV7N_I;<*c=gI7t-3af;B=1K6brt}wM+7A%2}(*d zPq@E~AHFZaymf9XzTpcECUIiy-RCsesB+#>5%c}CL3SfR%bFNQD*Km=dLt6>F853T z`$b;-r(J~v>oA1e@67Z@Rv`iQe&$0Iw3By{ioMU}T3J`xQ|q+vGczv$)X}>@ty$UR zHU4Up=+kJ8bWON4BmG@4qEtjF zX1#Se>Rme`6Gn0j$Cz~_HDoiNf7B8Cv z%E$Umy#56#!3dj#(W{O+S#|t78p%jrAgf$5ohfiQOd54FaX^ ac%Dxc`agX8r8l_$1Q6EP%BTY4PWTVCUHX>* literal 0 HcmV?d00001 diff --git a/collects/scribblings/gui/image/check-box.png b/collects/scribblings/gui/image/check-box.png new file mode 100644 index 0000000000000000000000000000000000000000..3c562d9ce72cd227dbc4778bde46b339108b1476 GIT binary patch literal 3547 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 IxMTGH0CCZig8%>k literal 0 HcmV?d00001 diff --git a/collects/scribblings/gui/image/choice.png b/collects/scribblings/gui/image/choice.png new file mode 100644 index 0000000000000000000000000000000000000000..5adaf95bbb54044742740178c26426b44e1d038e GIT binary patch literal 4240 zcma)=XH*kRvw$fHL=6y%NQVFdp+k@kLR291mm&h9p@ScoP^3sr2u&qOCp4opMT!C< z9RUHQS1G~J38-|DE;sM@=l;6q+_Puf%+45Yi^@9rGv?j{oK9q1)uh%~db z!?IqXqhtGtys2*!GP98%5oohQ{1kOSA&RHr@z4v)xon&w7nu|n?cPthOvFB#u#&5d ztR@S6d`oWh9eTep(l{aX;pfQrG47#n);~lSnb$<`OWVr)l5do9v0Rb_Nk9^LL^zex zh+$iQQ^F*-W@quwt<)N{+X5(XqE-M}S#9r>LJi%_*AfBY=1KJF85z^nG63i0>ZtQb zx-%XNEswl-I!#T@smW2Dek7}u00BVN-NG20 z1T(Fz?hFp+t>j1p*>NI(cx_?cdIm*odca%QG|ml#gIK=ORaV3n4e6!aZ~%(}^g*mw zjWM}Tz#MwByg8Cj--+LV;89j3fUsU(KhmW&061CE2I>_phk)ScEf;1T2;fF+p&l3{ zj+rYmKpE6}b$2)aMzZ9-N>k~B4;3u{X$O?AaS}Z!VCG- zZ=-iYpqGXOwaSB@Ym$j2ME12vcf1{k*ay??i+cHI-+LZ8^;FA(J3m#I*K P}f}^ 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 literal 0 HcmV?d00001 diff --git a/collects/scribblings/gui/image/combo-field.png b/collects/scribblings/gui/image/combo-field.png new file mode 100644 index 0000000000000000000000000000000000000000..df02e1a17f1fe05a23d691a432db17823a8f308a GIT binary patch literal 3809 zcmb7HbyU;s+aEnjz6eOmM(B`IIwUq)8j(gChm?eX5@RqB5Rgd?khDM~6eJ{vO7oBp z9Rku4qjS9DyzhVSAHVZE_qppjSKXiM+~<6*IAcR?MmjD!5D3JmtD|8G0+CUY&URpG z(yC76K$A8ye^YG)sO%q}RnmppNl#k?ba6TI8$YIyB(zU-to%vlahH?KI5kp;B%}$@ zHPED)q9v!1lG84tt0IXw12ioI)P20XT)hK8>VB?{0j@5PAolKt{hG2<{qoqz<5za(CDkkB?>Dhj9!Biu%zd}m;K!nf2le*$ z@)WCzT08(wgpaABzi@|23@FpV0ZbJnASR}q?5XUXSb!25)^QKHg4fMVMPznLc9-U} zYJek?RsINK(Gno`*enYXKuiY%0lVKbxyo6qCfKQ=cID3h8p3F$z2zWLSMsOz%@M2x zf(QV!_fE8b?5*2lnu&;^h!jXdJ|L?0@-j%#?eeaUd=?~?bwq+%7Qi^na)x;Ojv+ER z2C=<$!py?^hFY@sq)3-fF+tQ*my;6O=mAzVRzgZ)(XzXx!FDN}TGZ3jl5v;5V06Pw z{Ag*Y6MuAt)e^2a`~Om=0Vo*p9IM%oUqoSofB|gsTGZ*6@n$fw z?6hf_OhOt|*B%`KsbZtXz#w&ZmAg{GoQ>`hHWdyG+JocBE1t7(UcNgLOv0Es5(4I@ zgaagKASBG-BVgB^y=ntjb^w)mw-#(d+MC*3c0U^UZC-`*hd!p5c zZ*AnZ?~9bS$wChP3O46Q?8HNB2Z~7fm@>B?+(Vj-?l<|3Nr!f0PKXV%iOPf&xZU*- zR@S(Y8O3g=v2A9{^j|Z|TT(7aA@6v57U5fT_Ew$(7|SRoX`*+INmU}I? zbQ(hR2^|F6hxHM4Db(|O9t57H;$n5HhHs~zURn(AF7+NWaNqxdbBz8{j%PE4A^N%A zlkbyv8&L(+r1Iy|28_4T>-3(CDO!Xq_kW+&0Ncj`0o{hVsBOm)K807bv$*cUf%h)j zhJMIHajv%q(K(@#)#q?de?R**9q!~E=T_l|St8@e`?)4HXv1U6 zQ`=fafX6H+G|>)J9yIBUKkw5`el?y+nqlXP2hK!B+cw!z_!9y3%-!GTJtbX9b|b|Z zD1j##%AM7-s=Yq4XPGDF9mTjF``L!%i8#%Nd%trXx`$rv=Gm;vj|{KMR1aAAO$%i< z)c8s%sd(~d$;8q>n#RALpzol!y=V){TSTMos!a=L^t|ROJE?D8{@@}hhGq;foLPnmQzN}h1d_<)J6OuR9(&YAHp5EursgVkPQ19jI zCExE)<@#nTai`{I5-%pCV9iLnOulx$PJvKaC{lmGSR|F(XR>Smdcxa2B(U7FRKsqgV@9^q~D z&U_0=0|cz&C#hF)-}Gv~SQ6&eOM(dm*MKF}t_^1zhyA6g#`HWrX)YnIQ#YmT& z`P}1s(;~RjspGRo6{N(YbT!wKYN=T}brP|_VuxlsV)QK&boCFG;-Tr82 z?t?v{MTsBNcaxGvT8r+6P(_1MXhr*63qI=Zc~5zq2LE&t7K_EtYrcd@h)^iuBrPq& zLkoKAG{AuJgZ2SK7`Ghe2~!=~d!}tomFJ`9jNi4s&kzdS?GFh_6c?>}9@SFoxq2OP zlUIs3`hNNfbiB)&clN2+I9#+1+?T$AL4RThY^Z)?w9BKu|1tx?!$oRL?$-S7*oQeAVLQZ$NhmRt?-Y+Pf6h@Kf7{fj|Oi9y%TeD@tvOB zFy8hgz6E1DUUdRqb?4dI@TLsLJ7yTUlezmh&r((a z$2a!JjG^_$oVr}P>!yRXHK8ulXClzk1?%^~v#O8}dQ={s<6!6|)*OCdrE>I}!q4Bo zI46u3mM9smEfTmegzT0TqV&;-5?BCwLKHq`dE9Uv+G)E*43Iy*o!tX>=9riMy4y(Y zWM%zFUMWz9g-bH)wf{4lzw$jJIbtqmNdjD!Pst4hj5IGExYjrHN+FbMNEW7!PNOM?;8j;cGG|^9gymW*P z3zZJOK`-7M`)u^e{EHG|;z!BmUwZ{v-wi~pc1?t(GV}$v{AW6C)@Pk3lLEggz4~&V z#%>i<_-6gWou}?v@@UPn;fWScDDUCyL;SbyM|b*;nO~OO&3m#750p)Co#V|gWxbVO z2wb^v6ygqi;D3(G6g@R$%TSh%QrP?vdb&1;G4gUVs+3+M{ou)$H`3%j^|zLAf{=Q@ zV))lB3yh_n55wYpY&u#B(db-C7OXYVf4D*XUa5gZl<8o1zmT-jmPhC^7TxguxmY=o zpio^^`;aleA**vXz{DK4c6{g?bRcyWxM4ItMMrV#hVKvM8WS5f;$LiIj{0J)32W27 z()AEQIt+~K8SU;?eRMOY<8$cA+SH>|7v|BkP$`Kt@x>;4BE>f*ZKzq#QTFwPm`REE zFlS2o>vbtIHOl`C=Jh$Zu?*p=&t!;}e(Z_a@$rOTTp!+drNe)r zWiZup&#?T;>G3zew@4F(+-WI9^gpb5cVOTkn7-$&&st!>p_ zUt1k#rVnIOKIjV#j*s6&>4n3gEt73(CJpWQJZeL7#un!M8GS~#WB1COiz=iTAL?4u zpbRFsw)}jmg^6Li{<j%YAQP?vALpmQTF6`UtKdD@iki8dNk(|XGr=qWmX)Tuo zdS)!i8LRWi0R}R1@>tXe+{R9+A}gDVGg%5$b;*>h!N?A}N9{hlcFl{B&d^b@`bWPB z;yR@=rCz0>JDs%m^tw&D*hpOQ)4cqZ(}T^mA%7BYGqp8Egu}@Obj(NuulU~n3jGsA z*c7ESY%y!gbeJC#@V2hlL>$3Ya8k53>oWwaqx}E8@IMmA|4v~r6;RXDdwC)64hNdn z5Vx_Bu1l2>Jo#W4Sr?ja*V-w48MlFOQ`HlH4+&jed8prb6=6hkvlD-omzF8G0bqui zBWK0;ttPfVUPTl>VEs)#(Bg7agFO=RE(R#1P05DD83|#28^&FY1?8y4jGOCrLBPTp zlC>Xlw0i#N;q#ues;@8v?bq{~9fv z%6sV}T5BjK3LCj*&;^J>PG~%7J=yQ4Oe5dH5u)kw$^Ji_&ZXuGi51#Hsez6C0x-N#6=}e$)>0`L?B->P!`PU zLgg_n?@y6h(sP1)8Rh)m0sR@}bRZ w-%kk+oMiBPk85eidI*B;buYVzH<=eS+7N}lU+(}KQnLxt)il&7LpVhK4`?s`kpKVy literal 0 HcmV?d00001 diff --git a/collects/scribblings/gui/image/editor-canvas.png b/collects/scribblings/gui/image/editor-canvas.png new file mode 100644 index 0000000000000000000000000000000000000000..470a489fd0c34e14107197c319b6088460f939f0 GIT binary patch literal 3707 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 by@1Xcv6iRB!H7Vdd;Pe#Dm289 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 literal 0 HcmV?d00001 diff --git a/collects/scribblings/gui/image/list-box.png b/collects/scribblings/gui/image/list-box.png new file mode 100644 index 0000000000000000000000000000000000000000..21f5ade09d73b686170182bc6251a84a08282003 GIT binary patch literal 6395 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 QHw2!Bs;){k)HeLT0R7zU#Q*>R literal 0 HcmV?d00001 diff --git a/collects/scribblings/gui/image/menu-bar.png b/collects/scribblings/gui/image/menu-bar.png new file mode 100644 index 0000000000000000000000000000000000000000..46d89ef256b8d825f3ee7e47b449b5d086c885bd GIT binary patch literal 3058 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 literal 0 HcmV?d00001 diff --git a/collects/scribblings/gui/image/radio-box.png b/collects/scribblings/gui/image/radio-box.png new file mode 100644 index 0000000000000000000000000000000000000000..06e5bedf20e6fd348443aa05057ed066463b04a9 GIT binary patch literal 5237 zcmbVQWmHsAv>sr90f|AnXAlYL?iw1TQ&NT&0YL_&YaCKaS{eii36bs;K@c1S1cvSu zP&(fD{=D_xTkHLJ>#lq5xqIz%_CEW>KHnFkud7Z<%s>nP07x}8R15(C93ZwH4I;pn zIHYOJ|2{7b)nS0@F{W+o4*^_TT?KIW?A_MJ$wMl-i~%Yjt&q%S05LMx~7i4SvVOj06;me zsiI{3YIZ-@|CRB2OLwUAslz9oA-L&%TqrLN1*pJk*22I;sXx8KWEW+5HNUc6Vcenh z6K?sj;AuyrjVGo;17CuF0KWR=Uw1&$QAP{w)eUIYY0K&+^yhT^w|f`T)KhqVCOhyffc32{`h*#ZCRdq>$ zf?z%=cEqPib)NyFVdS;G_fbzk#07C!n*l?@x6e={xQdiZ_aq$T*WdfyW z81(c0-$*szB|N6V8>s#Hl7xd@GBgsRa>f+lkuBpQE{un1#;EKTYPLZmjdUIEW6k_o z5*lR%>hvKClDV7X#VhM_*zhSLAS&b@MyMr;uicKrBvlwk!hc@!=lDG4+9~DjaT+GB zLXl9>3uC>sFSbw77x9>rcEl&P3jsPN%TpmgC<(!5e{la!fNnuRJE(iteG2vD>h=_ z*#NvjOPz=f`5_~`l!62WdVZHVK884Ns!?`3YFIpEk|w*#y!S#kCw!Cxj_url4==Qy z{4k$|t=Wx|=+{MwZdUjM4zh6(iQum;ldnQ6Yb=KSXz1U>VmLwrNWyY~U>i&67 zYuTYw_dMr|!G0vs27$Po7ptB}m3z&p-5VXprQb1+yMkyaMRMf`KixriX!th9zo~PN z#khBgziQfF1nv-tcU_7KwAa7g35$ytLbu#*XwzjqrGSDa)CK9f+t%@dqWpw>u3O9* z-Jtvwazc13l$Q2$f%iMgaoU;^!Uyaxj?v_GHMTlG*5c}9axfq$vZ*5d>FM*0ML`m? z+L+d1>!9n)M|rOb$j(+Q>DCYSuTCNA3qeTL%Iqwk_3zD7FH;)?s@9eVJXksoVLv{y z0inYnd|XivD`jsrvPLIXNqZ1`-az(W%b8DZ0>s3WYBWL@ITZaDmbI4*8ejPeJo*^s zAJQTOkm4)#+)UD`=3&Y9T&GMMQ(t_IEEwUb2v)t@Jt)~|Q0k&p5RIv#TxWLM-Kx&< zf%UN7iKT?W(J=G%dD_%noW~X3Jv9W{W`&?3!QE4KMBCG|u!v~>iG7yuPsBHdeb-U; zNsB3kD;XP1P^LX8jv|ylkcswtR$qK?bBz-pU*MA)Unxym-lfv**UjVH@!YG8>Sjk{ z%bqVsAyFWuXkjQYa`JFa>2|B$;6}&X@a6ePS$-YjEPRStPMXm-eZ|dnqz)+$U?x@b5BcXH@^L;g$hjbIsk9vZlzeXHlRv?bnTITlg&sf9 zm?ey3V&c_Gb=?DbR;K*c+VE0R!p6}J0F)E^BEa8a;ra|K#OEIMQ=FBAzj3g+J%e53NQ9H>)Pv;jPT7T5mL3(dAB7hAm-F<{pR_j-Gu5D`^*)cu%uq8u4vk4icR_0thNefKP>QnHnUym-f57(~wQKC`ibdFvZ|X54(H>j?%6h7%K?8;<>@|l)L{W3x~-~CjT-9M)=^7bJMZI4g; z@+0f^?L>e6fr0KcxKwY%2{T-FZa-*}vne$^yD724dTh_nu!TK!C!%;b(%0%ajT)A% z#nTQq_u^IVGq@S-y3LXIY-{ZzS}b72J@j}5E(-;;GWZi}&4yNI^P zI*@1eoA}*?#i@PHv&#(JW}aUO&R*xqb0{V@$CRwSanO&TPF2zJXb#`kwp~ekXxWqg z?ZZga3lBTfrv2Au3nRHg-;a)Wwa+an`<-(8$Tw`iSM^lac&QcV&TAj6`QD*ryY_^p z@N;v-Hm$ArDwE^q*Hy4E;5VRh1YU>eGARsqI%>PjoZ#b8S~)yyiSe5? zpnARWG&-`uW;hrp1(hM_a>~bE<_xc&dw+6CM--z8$VVIO{nT>{pO!9QkR&#y({7kJ z5Seo0xhd5~fd?dWbW_kG^u9M3M-!{J_%x&8h9!vf6s6tFHj+DF6(=fL?eXT?~b z=y5*p8H4}Iq5m_N4)UU;x<=rl~6{7#B|Q8GSLejPVAeS@RX<2ENd`x!9-t+4BHQ*>OM`m~tt zXf{!qu5GcTuz)2znKe^R>3g_e<3if4G}EHJdtITy=HKd1~*_ zF!crMbYF{v8|z4E(5N(yb5TOiG&|kz`en4<1R^&p<2LCW2}F0$7@~h@>S&kMy3nz< zpOL*2uiCsWM}uBREbd)xlOpIX7D+~<7M#BJI*Q(I358r>aBe~jKa$^5dVf(uF6``e zl>>(>kLFa(^aS$QEcGy(%-`)+a{1(j>(@IA-6TY1-Zt27DwHLJm%65=r7fQXWL@0+ zYF=&a5;afZ%yJdsw_E2C@WPJI`{Z~6@zJa!UnCC{Kwf9}GylnH*PIm2nzlFip)%^6 z2}Q=Nm4h44G`bZ}upxgfbjXsav;2ZF%~N2baD7gS0>D%rpBW&g&=SP^b?`u)oN4`S z#@$dQ>wXc3%fMR+kY#bXeT2Gs$fn#i;#;Jw?>>ZSP*!<{0mr&?Ob|gbf6CHW?&ZBo zIbZh&@b>UVY?>@il_>pWBB$IjzP12!bAD@OR?w_ewfd>1anXMo&&TvKhj#38s4PbtFkNzBY}+6Vq4b zz2Eh{e|4%H(;4e*D*sg^l67+|1xSS%IaT0aE7yZd9ma;PqL>&teS?Q$mF=WCQW$XT zL{R)YbSkx@B}dcVtIZd@H#b@wHygw&3wL-tiHR%ebDVi>cmN%f@*0`1Yuuaa^MU>s z_(3f%31ht(VqUUVjR3@jOBK3}M0mOQWXyTrQcrLInZ=fht5>wAI)76j5-6;)Hi1;| zmtO?sn-Cv+@K&Xczgh>?*2gMp;wD^vY(LV(lQQF7nxa=@4zr74I^Vjd)fQMf2zmze z`HO$g=nJH%6)&A#tGX?(?j(QBugjC&cTOnQGw(~kgIg12Y-=?oCFO;vOHfeI?t1nE zq9l2%j6%esU9#rL2ddr!&gP4qgm+W%M^^sROdS5aieamaX2-pZ`JXC_5@_6bPXROc zlmWnsGq1;bB_&)^D@0Y%Sj&jqe-l{krQWC$=ZrgTdt$b6b8Dna(h@Gii3-J-R#M0P z6+J!G+O=oX<}Bfl1Qkl81k#_)%f`;62e&t#OZk>k85x43@Ifs8aq8)}_#=MR&IdWT zDU!p1+Suci8$e~@7rQ8Fw?k)jdZR%J6^Qa>;)up2R9HUQ;eISrxtpkOK*dBRv!Lc# zR(ubGo}5JXZL=4_iG!Q@Bf+I3m)A1Unw$axiAsH)BYGP;5AD9ZG<2Ya&6m>1mhY;GNsu_1JNuA;!*zT z=QU3rKprzkX1>x+oSW>B@xRC-?biuSqK`bOo0op~SHX4+&6=>jQ0`hr!u(vEho1fk z(@a}b&b%xfb5PqcJwM;y6C6lyBg>%kMiCU;!XG)#iUe@+6FXu0@k1?#Vx8{>Tl~Jm z7sL>g{272Ygr;5F}z|46wZT#bgz!W&Xj(g$O*85)Bc z!woj$A3&jX?+POl-Sb0HoKjhnpG9GX`kC?xs8$kKrYn2-2)JVl838>#oQtffOa7K) z_2c_6gkK&<)xgEoqx5G4i^=?JB-TE2wi8+yT3{QIX!&ZB9wvI zBNL1FkX($iThbK_ur%dk7~NW|=Klc#?;zeRFa;&-RAcetf0l)#_=Xw(5F>$MMq%3- zcA1DQC%V7VKs&X}st{-CTvm`4 z+IwtfyF&5l$uSxZr>2MiJ8D>?4t9mP4&WX(pXuT-v$OIZTy=qspIi(a$K%1yH-)y)zpo@ZRn{V&}$U zC#~dG61hpo@tf3+rc~R`S2;v451pN=ix)$kRX_%@la7!eYXUjNi?&3syEv1_&HJ?9 z=ns{2M^lV4iq9g`T1l2|_;lV29Q}@4kIxNceL2V(N5ZZgeN1k;BkYrCG1{7;u(Y-` zl9l3}@_ zMUjRW`7Wk&BblXVS~Fz?6O}CDyT7=&i93w@H)DAc=)x%dSx2<-A)pMT zB!S=HZ}0A2QD;|AQpJX=wABFDm(eU7_?#&MeCaf?Za^?9YNlBBr*C0EU#SG^%*&al z3oU*&pT~aTSOe>&hWG~I@9l9X*o47Ic~1NjZs4P`ywMMSoIq*()+Ye#7{z}huqAHQ z1Xz?6;wFO%Pl9QZ!ytd22z8fJMqA%jL#l Z@OtiHon^^W8Y}?_&{Wk`sfIm`_zz);f<^!U literal 0 HcmV?d00001 diff --git a/collects/scribblings/gui/image/slider.png b/collects/scribblings/gui/image/slider.png new file mode 100644 index 0000000000000000000000000000000000000000..ff431e14d9ccddeb13e7b94163549b002666e42a GIT binary patch literal 3548 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 literal 0 HcmV?d00001 diff --git a/collects/scribblings/gui/image/tab-panel.png b/collects/scribblings/gui/image/tab-panel.png new file mode 100644 index 0000000000000000000000000000000000000000..679316cb94f0dba8439bfec1ec0ac086baf669a4 GIT binary patch literal 4204 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 literal 0 HcmV?d00001 diff --git a/collects/scribblings/gui/image/text-field.png b/collects/scribblings/gui/image/text-field.png new file mode 100644 index 0000000000000000000000000000000000000000..28a49cd80a5aa50609289b43826d11433ec852a9 GIT binary patch literal 2617 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 literal 0 HcmV?d00001 diff --git a/collects/scribblings/gui/list-box-class.scrbl b/collects/scribblings/gui/list-box-class.scrbl index c9b430cc8d..7506d8598e 100644 --- a/collects/scribblings/gui/list-box-class.scrbl +++ b/collects/scribblings/gui/list-box-class.scrbl @@ -1,6 +1,8 @@ #lang scribble/doc @(require "common.rkt") +@centered{@image[#:suffixes @list[".png"]]{image/list-box}} + @(define lbnumnote @elem{List box rows are indexed from @racket[0].}) @(define lbcnumnote @elem{List box rows and columns are indexed from @racket[0].}) diff --git a/collects/scribblings/gui/menu-bar-class.scrbl b/collects/scribblings/gui/menu-bar-class.scrbl index a0aea5185c..66a420ee04 100644 --- a/collects/scribblings/gui/menu-bar-class.scrbl +++ b/collects/scribblings/gui/menu-bar-class.scrbl @@ -1,6 +1,8 @@ #lang scribble/doc @(require "common.rkt") +@centered{@image[#:suffixes @list[".png"]]{image/menu-bar}} + @defclass/title[menu-bar% object% (menu-item-container<%>)]{ A @racket[menu-bar%] object is created for a particular diff --git a/collects/scribblings/gui/message-class.scrbl b/collects/scribblings/gui/message-class.scrbl index db33c2513a..38263fa797 100644 --- a/collects/scribblings/gui/message-class.scrbl +++ b/collects/scribblings/gui/message-class.scrbl @@ -1,6 +1,8 @@ #lang scribble/doc @(require "common.rkt") +@centered{@image[#:suffixes @list[".png"]]{image/message}} + @defclass/title[message% object% (control<%>)]{ A message control is a static line of text or a static bitmap. The diff --git a/collects/scribblings/gui/panel-class.scrbl b/collects/scribblings/gui/panel-class.scrbl index 015f51224d..069a020733 100644 --- a/collects/scribblings/gui/panel-class.scrbl +++ b/collects/scribblings/gui/panel-class.scrbl @@ -1,6 +1,8 @@ #lang scribble/doc @(require "common.rkt") +@centered{@image[#:suffixes @list[".png"]]{image/panel}} + @defclass/title[panel% object% (area-container-window<%> subwindow<%>)]{ A panel is a both a container and a containee window. It serves mainly diff --git a/collects/scribblings/gui/radio-box-class.scrbl b/collects/scribblings/gui/radio-box-class.scrbl index 8557e22b24..3ab6167a1c 100644 --- a/collects/scribblings/gui/radio-box-class.scrbl +++ b/collects/scribblings/gui/radio-box-class.scrbl @@ -1,6 +1,8 @@ #lang scribble/doc @(require "common.rkt") +@centered{@image[#:suffixes @list[".png"]]{image/radio-box}} + @defclass/title[radio-box% object% (control<%>)]{ diff --git a/collects/scribblings/gui/slider-class.scrbl b/collects/scribblings/gui/slider-class.scrbl index 3c48cef6ba..7e9c5368c5 100644 --- a/collects/scribblings/gui/slider-class.scrbl +++ b/collects/scribblings/gui/slider-class.scrbl @@ -1,6 +1,8 @@ #lang scribble/doc @(require "common.rkt") +@centered{@image[#:suffixes @list[".png"]]{image/slider}} + @defclass/title[slider% object% (control<%>)]{ A @racket[slider] object is a panel item with a handle that the user can diff --git a/collects/scribblings/gui/tab-panel-class.scrbl b/collects/scribblings/gui/tab-panel-class.scrbl index 40d486e03b..4b6106783a 100644 --- a/collects/scribblings/gui/tab-panel-class.scrbl +++ b/collects/scribblings/gui/tab-panel-class.scrbl @@ -1,6 +1,8 @@ #lang scribble/doc @(require "common.rkt") +@centered{@image[#:suffixes @list[".png"]]{image/tab-panel}} + @defclass/title[tab-panel% vertical-panel% ()]{ A tab panel arranges its subwindows in a single column, but also diff --git a/collects/scribblings/gui/text-field-class.scrbl b/collects/scribblings/gui/text-field-class.scrbl index e9e7d1d2a9..00bd859049 100644 --- a/collects/scribblings/gui/text-field-class.scrbl +++ b/collects/scribblings/gui/text-field-class.scrbl @@ -1,6 +1,8 @@ #lang scribble/doc @(require "common.rkt") +@centered{@image[#:suffixes @list[".png"]]{image/text-field}} + @defclass/title[text-field% object% (control<%>)]{ A @racket[text-field%] object is an editable text field with an diff --git a/collects/scribblings/gui/widget-gallery.rkt b/collects/scribblings/gui/widget-gallery.rkt new file mode 100644 index 0000000000..8c38419664 --- /dev/null +++ b/collects/scribblings/gui/widget-gallery.rkt @@ -0,0 +1,18 @@ +(module widget scheme/base + (require racket/string + "common.rkt") + + (provide showcase-widget) + + (define-syntax showcase-widget + (syntax-rules () + ((_ widget code ...) + (begin + (racketlink widget + (image #:suffixes + (list ".png") + (string-append "image/" + (string-trim (symbol->string 'widget) + "%" + #:left? #f)))) + (racketblock code ...)))))) diff --git a/collects/scribblings/gui/widget-gallery.scrbl b/collects/scribblings/gui/widget-gallery.scrbl new file mode 100644 index 0000000000..37c35ae496 --- /dev/null +++ b/collects/scribblings/gui/widget-gallery.scrbl @@ -0,0 +1,136 @@ +#lang scribble/doc +@(require "common.rkt" + "widget-gallery.rkt") + +@title[#:style '(toc quiet)]{Widget Gallery} + +This section gives an overview of the main widgets available in the Racket Graphical Interface Toolkit and each image points to its full documentation. + +@(showcase-widget button% +(define button (new button% + (parent panel) + (label "Button"))) +) + +@(showcase-widget check-box% +(define check-box (new check-box% + (parent panel) + (label "Check Box") + (value #t))) +) + +@(showcase-widget choice% +(define choice (new choice% + (label "Choice") + (parent panel) + (choices (list "Item 0")))) +) + +@(showcase-widget combo-field% +(define combo-field (new combo-field% + (label "Combo") + (parent panel) + (choices (list "Field")) + (init-value "Field"))) +) + +@(showcase-widget editor-canvas% +(define editor-canvas (new editor-canvas% + (parent panel) + (label "Editor Canvas"))) +(define text (new text%)) +(send text insert "Editor Canvas") +(send editor-canvas set-editor text) +) + + +@(showcase-widget gauge% +(define gauge (new gauge% + (label "Gauge") + (parent panel) + (range 100))) +(send gauge set-value 42) +) + +@(showcase-widget group-box-panel% +(define group-box-panel (new group-box-panel% + (parent panel) + (label "Group Box Panel"))) +) + +@(showcase-widget list-box% +(define list-box (new list-box% + (label "List Box") + (parent (new horizontal-panel% + (parent panel) + (style (list 'border)))) + (choices (list "Item 0" + "Item 1" + "Item 2")) + (style (list 'single + 'column-headers)) + (columns (list "First Column")))) +) + +@(showcase-widget menu-bar% +(define menu-bar (new menu-bar% + (parent frame))) +(new menu% + (label "&File") + (parent menu-bar)) +(new menu% + (label "&Edit") + (parent menu-bar)) +(new menu% + (label "&Help") + (parent menu-bar)) +) + +@(showcase-widget message% +(define message (new message% + (parent panel) + (label "Message"))) +) + +@(showcase-widget panel% +(define a-panel (new panel% + (parent panel) + (style (list 'border)))) +(new message% + (parent a-panel) + (label "Panel")) +) + + +@(showcase-widget radio-box% +(define radio-box (new radio-box% + (label "Radio Box") + (parent panel) + (choices (list "Button 0" + "Button 1" + "Button 2")))) +) + +@(showcase-widget slider% +(define slider (new slider% + (label "Slider") + (parent panel) + (min-value 0) + (max-value 100) + (init-value 42))) +) + +@(showcase-widget tab-panel% +(define tab-panel (new tab-panel% + (parent panel) + (choices (list "Tab 0" + "Tab 1" + "Tab 2")))) +) + +@(showcase-widget text-field% +(define text-field (new text-field% + (label "Text") + (parent panel) + (init-value "Field"))) +)