From c46b400d4095f53ee5c2c0a7a7ed724b649d59ad Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Fri, 13 Mar 2009 23:49:16 -0500 Subject: [PATCH] New look for menus --- basis/ui/gadgets/corners/authors.txt | 1 + basis/ui/gadgets/corners/corners.factor | 43 +++++++++++++++ basis/ui/gadgets/labeled/labeled.factor | 52 +++--------------- basis/ui/gadgets/menus/menus.factor | 27 ++++++--- .../theme/menu-background-bottom-left.tiff | Bin 0 -> 494 bytes .../theme/menu-background-bottom-middle.tiff | Bin 0 -> 474 bytes .../theme/menu-background-bottom-right.tiff | Bin 0 -> 490 bytes .../theme/menu-background-left-edge.tiff | Bin 0 -> 470 bytes .../theme/menu-background-right-edge.tiff | Bin 0 -> 470 bytes .../theme/menu-background-top-left.tiff | Bin 0 -> 490 bytes .../theme/menu-background-top-middle.tiff | Bin 0 -> 470 bytes .../theme/menu-background-top-right.tiff | Bin 0 -> 488 bytes ...cted-menu-item-background-bottom-left.tiff | Bin 0 -> 508 bytes ...ed-menu-item-background-bottom-middle.tiff | Bin 0 -> 488 bytes ...ted-menu-item-background-bottom-right.tiff | Bin 0 -> 504 bytes ...lected-menu-item-background-left-edge.tiff | Bin 0 -> 484 bytes ...ected-menu-item-background-right-edge.tiff | Bin 0 -> 484 bytes ...elected-menu-item-background-top-left.tiff | Bin 0 -> 504 bytes ...ected-menu-item-background-top-middle.tiff | Bin 0 -> 484 bytes ...lected-menu-item-background-top-right.tiff | Bin 0 -> 502 bytes basis/ui/render/render.factor | 8 +++ 21 files changed, 80 insertions(+), 51 deletions(-) create mode 100644 basis/ui/gadgets/corners/authors.txt create mode 100644 basis/ui/gadgets/corners/corners.factor create mode 100644 basis/ui/gadgets/theme/menu-background-bottom-left.tiff create mode 100644 basis/ui/gadgets/theme/menu-background-bottom-middle.tiff create mode 100644 basis/ui/gadgets/theme/menu-background-bottom-right.tiff create mode 100644 basis/ui/gadgets/theme/menu-background-left-edge.tiff create mode 100644 basis/ui/gadgets/theme/menu-background-right-edge.tiff create mode 100644 basis/ui/gadgets/theme/menu-background-top-left.tiff create mode 100644 basis/ui/gadgets/theme/menu-background-top-middle.tiff create mode 100644 basis/ui/gadgets/theme/menu-background-top-right.tiff create mode 100644 basis/ui/gadgets/theme/selected-menu-item-background-bottom-left.tiff create mode 100644 basis/ui/gadgets/theme/selected-menu-item-background-bottom-middle.tiff create mode 100644 basis/ui/gadgets/theme/selected-menu-item-background-bottom-right.tiff create mode 100644 basis/ui/gadgets/theme/selected-menu-item-background-left-edge.tiff create mode 100644 basis/ui/gadgets/theme/selected-menu-item-background-right-edge.tiff create mode 100644 basis/ui/gadgets/theme/selected-menu-item-background-top-left.tiff create mode 100644 basis/ui/gadgets/theme/selected-menu-item-background-top-middle.tiff create mode 100644 basis/ui/gadgets/theme/selected-menu-item-background-top-right.tiff diff --git a/basis/ui/gadgets/corners/authors.txt b/basis/ui/gadgets/corners/authors.txt new file mode 100644 index 0000000000..d4f5d6b3ae --- /dev/null +++ b/basis/ui/gadgets/corners/authors.txt @@ -0,0 +1 @@ +Slava Pestov \ No newline at end of file diff --git a/basis/ui/gadgets/corners/corners.factor b/basis/ui/gadgets/corners/corners.factor new file mode 100644 index 0000000000..7f558fca19 --- /dev/null +++ b/basis/ui/gadgets/corners/corners.factor @@ -0,0 +1,43 @@ +! Copyright (C) 2009 Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. +USING: accessors kernel sequences namespaces ui.gadgets.frames +ui.pens.image ui.gadgets.icons ui.gadgets.grids ; +IN: ui.gadgets.corners + +CONSTANT: @center { 1 1 } +CONSTANT: @left { 0 1 } +CONSTANT: @right { 2 1 } +CONSTANT: @top { 1 0 } +CONSTANT: @bottom { 1 2 } + +CONSTANT: @top-left { 0 0 } +CONSTANT: @top-right { 2 0 } +CONSTANT: @bottom-left { 0 2 } +CONSTANT: @bottom-right { 2 2 } + +SYMBOL: name + +: corner-image ( name -- image ) + [ name get "-" ] dip 3append theme-image ; + +: corner-icon ( name -- icon ) + corner-image ; + +: /-----\ ( corner -- corner ) + "top-left" corner-icon @top-left grid-add + "top-middle" corner-icon @top grid-add + "top-right" corner-icon @top-right grid-add ; + +: |-----| ( gadget corner -- corner ) + "left-edge" corner-icon @left grid-add + swap @center grid-add + "right-edge" corner-icon @right grid-add ; + +: \-----/ ( corner -- corner ) + "bottom-left" corner-icon @bottom-left grid-add + "bottom-middle" corner-icon @bottom grid-add + "bottom-right" corner-icon @bottom-right grid-add ; + +: make-corners ( class name quot -- corners ) + [ [ [ 3 3 ] dip new-frame { 1 1 } >>filled-cell ] dip name ] dip + with-variable ; inline \ No newline at end of file diff --git a/basis/ui/gadgets/labeled/labeled.factor b/basis/ui/gadgets/labeled/labeled.factor index 319fd8cf70..7f98e1170b 100644 --- a/basis/ui/gadgets/labeled/labeled.factor +++ b/basis/ui/gadgets/labeled/labeled.factor @@ -2,67 +2,33 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors kernel sequences colors fonts ui.gadgets ui.gadgets.frames ui.gadgets.grids ui.gadgets.icons ui.gadgets.labels -ui.gadgets.borders ui.pens.image ; +ui.gadgets.borders ui.pens.image ui.gadgets.corners ui.render ; IN: ui.gadgets.labeled TUPLE: labeled-gadget < frame content ; ; - -CONSTANT: labeled-title-background - T{ rgba f - 0.7843137254901961 - 0.7686274509803922 - 0.7176470588235294 - 1.0 - } - : ( gadget -- label ) >label - [ labeled-title-background font-with-background ] change-font + [ panel-background-color font-with-background ] change-font { 0 2 } - "title-middle" labeled-image + "title-middle" corner-image t >>fill? >>interior ; : /-FOO-\ ( title labeled -- labeled ) - "title-left" labeled-icon @top-left grid-add + "title-left" corner-icon @top-left grid-add swap @top grid-add - "title-right" labeled-icon @top-right grid-add ; - -: |-----| ( gadget labeled -- labeled ) - "left-edge" labeled-icon @left grid-add - swap [ >>content ] [ @center grid-add ] bi - "right-edge" labeled-icon @right grid-add ; - -: \-----/ ( labeled -- labeled ) - "bottom-left" labeled-icon @bottom-left grid-add - "bottom-middle" labeled-icon @bottom grid-add - "bottom-right" labeled-icon @bottom-right grid-add ; + "title-right" corner-icon @top-right grid-add ; M: labeled-gadget focusable-child* content>> ; PRIVATE> : ( gadget title -- newgadget ) - 3 3 labeled-gadget new-frame - { 1 1 } >>filled-cell + labeled-gadget "labeled-block" [ + over >>content /-FOO-\ |-----| - \-----/ ; + \-----/ + ] make-corners ; diff --git a/basis/ui/gadgets/menus/menus.factor b/basis/ui/gadgets/menus/menus.factor index a0038b55e5..734190e7e7 100644 --- a/basis/ui/gadgets/menus/menus.factor +++ b/basis/ui/gadgets/menus/menus.factor @@ -1,10 +1,11 @@ ! Copyright (C) 2005, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: colors.constants kernel locals math.rectangles -namespaces sequences ui.commands ui.gadgets ui.gadgets.borders -ui.gadgets.buttons ui.gadgets.glass ui.gadgets.packs -ui.gadgets.worlds ui.gestures ui.operations ui.pens ui.pens.solid -opengl math.vectors words accessors math math.order sorting ; +USING: colors.constants kernel locals math.rectangles namespaces +sequences ui.commands ui.gadgets ui.gadgets.borders ui.gadgets.buttons +ui.gadgets.glass ui.gadgets.packs ui.gadgets.frames ui.gadgets.worlds +ui.gadgets.frames ui.gadgets.corners ui.gestures ui.operations +ui.render ui.pens ui.pens.solid opengl math.vectors words accessors +math math.order sorting ; IN: ui.gadgets.menus : show-menu ( owner menu -- ) @@ -30,6 +31,10 @@ M: separator-pen draw-interior dim>> [ { 0 0.5 } v* ] [ { 1 0.5 } v* ] bi [ [ >integer ] map ] bi@ gl-line ; +: ( items -- gadget ) + [ ] dip add-gadgets + panel-background-color >>interior ; + PRIVATE> SINGLETON: ---- @@ -43,10 +48,16 @@ M: ---- : menu-theme ( gadget -- gadget ) COLOR: light-gray >>interior ; +: ( gadgets -- menu ) + + frame "menu-background" [ + /-----\ + |-----| + \-----/ + ] make-corners ; + : ( target hook commands -- menu ) - [ ] 3dip - [ add-gadget ] with with each - { 5 5 } menu-theme ; + [ ] with with map ; : show-commands-menu ( target commands -- ) [ dup [ ] ] dip show-menu ; diff --git a/basis/ui/gadgets/theme/menu-background-bottom-left.tiff b/basis/ui/gadgets/theme/menu-background-bottom-left.tiff new file mode 100644 index 0000000000000000000000000000000000000000..7052039059aee12489d970147a175fcccf9c390a GIT binary patch literal 494 zcmebD)MC(KU|?u4lISk~!Nkkn;<&)O?2e2lXY-+R6G~#7M41^K&s`|ik#S`dV_;xp zW?%%WW&vVGBsLR}4HB~gN-{&mS%G{uD4Pk$=7O?8`gs|d7!-lD6Obdw$O1N#1IQOb zQX>jwgUl6!vKfE|i9^+^0L7&kS;2Z!faXX;**QSA43aq-P&PAAy&=$EDtBYgu4g+N0y zg^ZGt0xNy}^73-MOpr<-2CCG{FG^>4;KnQhG|7P>j87CqHyrw^0iqLj$btC|#>T>6 W@w7BG5WQgLOimDO!*w0xeFp&l*g_}( literal 0 HcmV?d00001 diff --git a/basis/ui/gadgets/theme/menu-background-bottom-middle.tiff b/basis/ui/gadgets/theme/menu-background-bottom-middle.tiff new file mode 100644 index 0000000000000000000000000000000000000000..a004654a63b25249abad1e1ffeea846e24bb80ea GIT binary patch literal 474 zcmebD)M5~0U|?u4lISk~!^O$gbm0C60iXyYGXo<~9E_oC79gJq$Oh3WKnZ53I4h9P z24yn=*<4UING~rV6N564)&X(^8Ck&QaRB*3NNPl(Y>>HPP&NZlkvLR6A5dJ1krk{r z0BDXhlpO(N%OIJf0cA4-)f)oswF1%!KsB~dagf{WfOG zvH&q75}OIg28o#gC7Ge(tUx{+l+6TWb3xf4{k)7!3`#)S4#*K?WC5GW0ptrIsS$;; zLFS4<*$hB~#G&dHfZ|e&tYEzfKy##_>xnjugFBaHUUO-xVqO-#>B&Q>tfGto0pFfi9QG}1S)PzW?MQ^+VO zDX`MlFE20G%LJ(eVxUUB{GxP*2X4$FK$9F8!uUi%bi<*qponuw*dYhzI~W@agT>R* T)IjutnKL;-v<=sFkoO$`xJE%m literal 0 HcmV?d00001 diff --git a/basis/ui/gadgets/theme/menu-background-left-edge.tiff b/basis/ui/gadgets/theme/menu-background-left-edge.tiff new file mode 100644 index 0000000000000000000000000000000000000000..81d582090d4f10aa8206524e8861b76b326f5c8b GIT binary patch literal 470 zcmebD)M5~0U|?u4lISk~!Nkkn;Xn=9IBodC@#gw3fAib zG)EfB4gs=dkj&A5vYCPE4T1Jr0qGc^8e6D1$Zd8&y&!rTP~0BKW&^U90oh(qyMSDV zASCr5J_i)$rskFECM70krx)dy=B4Q7q^6bVrlzE)>Xl@sr2)e*P0bLfoDoKQ<|d}6 z`X;7lCTA;{>6z#mC>WUQ8ye{wSSSPz9|8>t%ve0x?jfUVc$J!vi;F w5uiy93}JktAiCkuR}B!IutN^acQ7^<28*Yqse$MPGiP#wXdABUAkRAh05tD6xc~qF literal 0 HcmV?d00001 diff --git a/basis/ui/gadgets/theme/menu-background-right-edge.tiff b/basis/ui/gadgets/theme/menu-background-right-edge.tiff new file mode 100644 index 0000000000000000000000000000000000000000..61a70be7899e734526b69bf205cdefae729bec0f GIT binary patch literal 470 zcmebD)M5~0U|?u4lISk~!Nkkn;Xn=9IBodC@#gw3fAib zG)EfB4gs=dkj&A5vYCPE4T1Jr0qGc^8e6D1$Zd8&y&!rTP~0BKW&^U90oh(qyMSDV zASCr5J_i)$rskFECM70krx)dy=B4NsWu|A8=%%Kmr|Oktrlm17q^TJKl{3O<&)mfH zRNut(%;anZGd&YM0|f(feM2LC0}F*fLo1`lGvj8z85}OIg28me#C7Ge(tUx{+l+6TWb3xf4{k)7!401r)3CIy-WC5GW0ptrI zsS$;;LFS4<*$hB~#G&d{fZ|e&tYEzfKy##_>xnjugzBaHUUO-xVqO-#>B&Q>tfGto0pFfi9QG}1S)PzW?MQ^+VO zDX`MlFE20G%LJ(eVxUUB{GxP*2X4$FK$9F8!uUi%bi<*q8X!7hha8yiU~DW57Eeo4 T1JMg+&g2BqHeA<1UUvWhT6sT@ literal 0 HcmV?d00001 diff --git a/basis/ui/gadgets/theme/menu-background-top-middle.tiff b/basis/ui/gadgets/theme/menu-background-top-middle.tiff new file mode 100644 index 0000000000000000000000000000000000000000..ba5fffe42f784621e418e6c9313f9bc84b9e0142 GIT binary patch literal 470 zcmebD)M5~0U|?u4lISk~!^O$gbm0C60iXyYGXo<~9E_oC79gJq$Oh3WKnZ53I4h9P z24yn=*<4UING~rV6N3Vf)&X(^8Ck&QaRB*3NNPl(Y>>HPP&NZlkvLR6A5dJ1krk}h z2WXBolpO+O%OIJf0cA4-)f)oswF1&HKsB~dagf{WfO5t1S)5Q(Vn@9 z>8ZYn>6yvd3TApHdIkyx=K6+4`UVyXfre%Z86_nJR{Hwo<>h*rAeBH2RH>I=l+N(L xjadX}k^@5+pD2iKIP_HmL?`T!1M?k>jfKJDX=!R8dcn+@oFLkU>pIBu4ghI8IpzQW literal 0 HcmV?d00001 diff --git a/basis/ui/gadgets/theme/menu-background-top-right.tiff b/basis/ui/gadgets/theme/menu-background-top-right.tiff new file mode 100644 index 0000000000000000000000000000000000000000..1831a3214567d70c12fcce4d9ff6490616747ac1 GIT binary patch literal 488 zcmebD)MC(JU|?u4lISk~!NhZ~nL)Tlh8H?+N_Vjw zgUl6!vKfE|i9^*Z0L7&kS;2bafaXX;*=azw43aq-P&PAAy&=$ED1`U;9RhlCw+V7`N~u`pOXElmwX RFPJ%#6GYo^T?cvI0Ra9DKpp@9 literal 0 HcmV?d00001 diff --git a/basis/ui/gadgets/theme/selected-menu-item-background-bottom-left.tiff b/basis/ui/gadgets/theme/selected-menu-item-background-bottom-left.tiff new file mode 100644 index 0000000000000000000000000000000000000000..eca211b0381a7ae9a206354f4f80d4f52bca0be4 GIT binary patch literal 508 zcmebD)MC(KU|?wAJ$|J92NN%Qi{k>9wmUMOoXv;MO(=JX9e=vpll`}n+wVY>E~r+V$cWDPC$+zBMaC}4j^9$ zNsTC!4Kh~@%4Pr>Bo0-t0u+~GWCiOj0-7TYWmf^&GDzlVK-tVd^@c!ut$=hBP>n5A z9OO1Tpk5HY2Pke2WU~R;XMk)ks9iuVLlBaB5T64Ii&Jw_lS@)lbaPYlN_8_!Qgd~a z5|gvji}FkJQgoB@OG@%{b#qeFO7u!H)6#$;ou+08)XoT_J#!P&Q+*TDGn2Cw%=Aq3 z3=|B^^$m^m4J;G_4b2oXN=gc>^!3Zj%k?rrDuEcNQZK(Ko#BBSvk1^62Zk^{Q4rm5 l=&J^ZPS_y_<~tZ03xmbe($qlof|)ZpL9`9mbx>e9008UMNU8t; literal 0 HcmV?d00001 diff --git a/basis/ui/gadgets/theme/selected-menu-item-background-bottom-middle.tiff b/basis/ui/gadgets/theme/selected-menu-item-background-bottom-middle.tiff new file mode 100644 index 0000000000000000000000000000000000000000..b666be1be03ed39a849e3cabdc31edeada0acb7d GIT binary patch literal 488 zcmebD)M5~0U|?wAJ$|J94;Lp}(}DXR1b`xp%nXb`aWICmS%7>dAR9!h0412A;;cYE z8vIMdDEPd_Zw2Mpm%i zIG{PwP<9%SErVo^29(VVRBs5h*9u7I0oB+-#X)Yf1L_6QD}dtmKsFnYy#vVhg4zY- zG6W&12k|+eusAg*HMt};MK?D!uT(d)BsEtzDKR-ay(qslFGV*gzoaBTS2s5^B_$_S zuOu@q4H&9vY9P-u!f4Oj#Pn3(#PrPMYy~qt6Fmb319N>tBYgu4g+N0yg^ZGt0xNy} z^73-MOpr<-2CCG{FG^>4;KnQhG|7P>j87CqHyrw^0iqLj$btC|#>T>6@w7BG5WQgL OOimDO!*v}L91Z{kkU_Wr literal 0 HcmV?d00001 diff --git a/basis/ui/gadgets/theme/selected-menu-item-background-bottom-right.tiff b/basis/ui/gadgets/theme/selected-menu-item-background-bottom-right.tiff new file mode 100644 index 0000000000000000000000000000000000000000..788781bb9ec3e5f3ec93ce91558892a3f03e08aa GIT binary patch literal 504 zcmebD)MC(JU|?wAJ$|J92NN%Qi{pX-4`wH^z$+@F&F@8J0M4pkp*lf2aqp>q(&6V z2AL}cWitQ`5{If+0E$a7vV!&I0nL$yvde&M86GAqYu5h|d9q#i==|$t9^Ny1A)&rMj6VskypIiOJdN zMfs(9DY{AdB_;W}x<#4k86|opnQ3VZ4QXnIK<$h$+A}vXJ=HfcJu^95!A#FY&p^Sz zT;I@0-@rm4(9ldFqokz3N?*Ucyj(96q!NgMD)sV<(itAOF^d3Aa$pGK69v%?hrWWM i(IH`n9GLH5Y%B~GPfJq+(FU$fI|;~^K{7`J%4PcqMMVNR-&7llAfwpl9`qU z4AC?-L!f3x810#xn4apJn4X!Otzf2SqGzCBV6Jayq;FuM5NK$okWo@nV5P5LUS6)3 z2~r8fK$Uv=Md=I=+?YjxCOI&K@ri=yhC^R9Ky<U$fI|;~^K{7`J%4PcqFa=io>8Kknv$NXSCW~Q z#?X+aW(d^G2%|l76Vp?D6Vo%3vlYzrO!N#C49xWnjr0vH6ao#+6f#Om3as??%gf94 zGC?YV7^qS&zbKvIfg7_3&?EJX9e=vpll`}n+wVY>E~r+0^8~Y1knIJv3&>>%LQ)Unb3kEnYEEi$NotC2ZfahsZe~epu5MCd za&~%AeraBcZb^QDZcb`iiC#%&S{g$`nwlX{DHsIQv=ZpX3pdU(KcMyK>^_a07jNZDF6Tf literal 0 HcmV?d00001 diff --git a/basis/ui/gadgets/theme/selected-menu-item-background-top-middle.tiff b/basis/ui/gadgets/theme/selected-menu-item-background-top-middle.tiff new file mode 100644 index 0000000000000000000000000000000000000000..8beab3c8a28e369b697d4611c456cbeba509cf19 GIT binary patch literal 484 zcmebD)M5~0U|?wAJ$|J94;Lp}(}DXR1b`xp%nXb`aWICmS%7>dAR9!h0412A;;cYE z8vIMdDEPd_Zw2Mpm%i zD4;pgP<9fKErVo^29(VVRBs5h*9u5y0oB+-#X)Yf1L_6QOMv3`KsFnYy#>hjg4zY- zG6W&12k|+eusAg*HMt};MK?D!uT(d)BsEtzDKR-ay(qslFGaT`zd$!PGbJS_Rj(v7 zEsdceP0bLfnGr^N<|d}6`X;7lCTA;{>6z#mC>WUQ8ye{wSSSPz9|8 z>t%ve0x?jfUVc$J!vi;F5uiy93}JktAiCkuR}B!IutN^acQ7^<28*Yqse$MPGiP#w MXdABUprCL70JuazUjP6A literal 0 HcmV?d00001 diff --git a/basis/ui/gadgets/theme/selected-menu-item-background-top-right.tiff b/basis/ui/gadgets/theme/selected-menu-item-background-top-right.tiff new file mode 100644 index 0000000000000000000000000000000000000000..dacb50d12147d5d321666eade15d08d869fad2b7 GIT binary patch literal 502 zcmebD)MC(JU|?wAJ$|J92NTb|W(MJcDIr{(oEJX9e=vpll`}n+wVY>E~r+V$cQBc0i6GBMaC}4j^9$NsTC! z4Kh~@%4Pr>Bo0-t02G&EWCiQZ0h%KXWtRZiGDzlVK-tVd^@c!ut$=h5P>n5A9OO1T zpk5HY4Jd98WU~R;$AD}vs9iuVLlBaB5T64Ii&Jw_lS@)lbaPYlN_8_!Qgd~a5|gvj zi}FkJQglo53v`Pz(=$r+N;1>ZfMJ}bW(d^G2%|l76Vp?D6Vo%3vlYzrO!N#C49xWn zjr0vH6ao#+6f#Om3as??%gf94GC?YV7^qS&zbKvIfg7_3&?E