! 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.frames ui.gadgets.worlds 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 -- ) [ find-world ] dip hand-loc get { 0 0 } show-glass ; GENERIC: ( target hook command -- button ) M:: object ( target hook command -- button ) command command-name [ hook call target command command-button-quot call hide-glass ] ; separator-pen M: separator-pen draw-interior color>> gl-color 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: ---- M: ---- 3drop { 0 5 } >>dim COLOR: black >>interior ; : menu-theme ( gadget -- gadget ) COLOR: light-gray >>interior ; : ( gadgets -- menu ) frame "menu-background" [ /-----\ |-----| \-----/ ] make-corners ; : ( target hook commands -- menu ) [ ] with with map ; : show-commands-menu ( target commands -- ) [ dup [ ] ] dip show-menu ; : ( target hook -- menu ) over object-operations [ primary-operation? ] partition [ reverse ] [ [ command-name ] sort-with ] bi* { ---- } glue ; : show-operations-menu ( gadget target hook -- ) show-menu ;