2009-02-14 20:48:32 -05:00
|
|
|
! Copyright (C) 2006, 2009 Slava Pestov.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2015-07-20 14:13:44 -04:00
|
|
|
USING: accessors colors.constants fonts kernel ui.gadgets
|
|
|
|
ui.gadgets.borders ui.gadgets.corners ui.gadgets.frames
|
|
|
|
ui.gadgets.grids ui.gadgets.labels ui.gadgets.lines
|
|
|
|
ui.gadgets.tracks ui.tools.common ui.pens.gradient ui.pens.image ui.render ;
|
2009-02-14 20:48:32 -05:00
|
|
|
IN: ui.gadgets.labeled
|
|
|
|
|
|
|
|
TUPLE: labeled-gadget < frame content ;
|
|
|
|
|
|
|
|
<PRIVATE
|
|
|
|
|
|
|
|
: <labeled-title> ( gadget -- label )
|
|
|
|
>label
|
2009-03-14 00:49:16 -04:00
|
|
|
[ panel-background-color font-with-background ] change-font
|
2009-02-14 20:48:32 -05:00
|
|
|
{ 0 2 } <border>
|
2009-03-14 00:49:16 -04:00
|
|
|
"title-middle" corner-image
|
2009-02-14 20:48:32 -05:00
|
|
|
<image-pen> t >>fill? >>interior ;
|
|
|
|
|
|
|
|
: /-FOO-\ ( title labeled -- labeled )
|
2009-03-14 00:49:16 -04:00
|
|
|
"title-left" corner-icon @top-left grid-add
|
2009-02-14 20:48:32 -05:00
|
|
|
swap <labeled-title> @top grid-add
|
2009-03-14 00:49:16 -04:00
|
|
|
"title-right" corner-icon @top-right grid-add ;
|
2009-02-14 20:48:32 -05:00
|
|
|
|
|
|
|
M: labeled-gadget focusable-child* content>> ;
|
|
|
|
|
|
|
|
PRIVATE>
|
|
|
|
|
2015-07-20 14:13:44 -04:00
|
|
|
: <labeled-gadget-old> ( gadget title -- newgadget )
|
2009-03-14 00:49:16 -04:00
|
|
|
labeled-gadget "labeled-block" [
|
2009-03-14 01:01:18 -04:00
|
|
|
pick >>content
|
2009-02-14 20:48:32 -05:00
|
|
|
/-FOO-\
|
|
|
|
|-----|
|
2009-03-14 00:49:16 -04:00
|
|
|
\-----/
|
|
|
|
] make-corners ;
|
2015-07-20 14:13:44 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<PRIVATE
|
|
|
|
|
|
|
|
CONSTANT: title-bar-gradient { COLOR: white COLOR: grey90 }
|
|
|
|
|
|
|
|
: add-title-bar ( title track -- track )
|
|
|
|
swap >label
|
|
|
|
[ t >>bold? ] change-font
|
|
|
|
{ 0 5 } <border>
|
|
|
|
title-bar-gradient <gradient> >>interior
|
|
|
|
f track-add ;
|
|
|
|
|
|
|
|
: add-content ( content track -- track )
|
|
|
|
swap white-interior 1 track-add ;
|
|
|
|
|
|
|
|
PRIVATE>
|
|
|
|
|
|
|
|
: <labeled-gadget> ( gadget title -- newgadget )
|
|
|
|
vertical <track> with-lines
|
|
|
|
add-title-bar
|
|
|
|
add-content ;
|