USING: ui.gadgets help.markup help.syntax strings models
-ui.gadgets.panes ;
+ui.gadgets.panes ui.theme ;
IN: ui.gadgets.labeled
HELP: labeled-gadget
{ $class-description "A labeled gadget can be created by calling " { $link <labeled-gadget> } "." } ;
HELP: <labeled-gadget>
-{ $values { "gadget" gadget } { "title" string } { "color" "a color" } { "labeled" "a new " { $link <labeled-gadget> } } }
-{ $description "Creates a new " { $link labeled-gadget } " display " { $snippet "gadget" } " with " { $snippet "title" } " on top." } ;
+{ $values { "content" gadget } { "title" string } { "labeled" labeled-gadget } }
+{ $description "Creates a new " { $link labeled-gadget } " displaying " { $snippet "content" } " with " { $snippet "title" } " on top." } ;
+
+HELP: <colored-labeled-gadget>
+{ $values { "content" gadget } { "title" string } { "color" "a color" } { "labeled" labeled-gadget } }
+{ $description "Creates a new " { $link labeled-gadget } " displaying " { $snippet "content" } " with " { $snippet "title" } " on top, adding a " { $snippet "color" } " colored divider between title bar and content." } ;
+
+HELP: <framed-labeled-gadget>
+{ $values { "content" gadget } { "title" string } { "color" "a color" } { "labeled" labeled-gadget } }
+{ $description "Creates a new " { $link labeled-gadget } " displaying " { $snippet "content" } " with " { $snippet "title" } " on top, adding a " { $snippet "color" } " colored divider between title bar and content and a " { $link labeled-border-color } " frame." } ;
ARTICLE: "ui.gadgets.labeled" "Labeled gadgets"
"The " { $vocab-link "ui.gadgets.labeled" } " vocabulary implements labeled borders around child gadgets."
{ $subsections
labeled-gadget
<labeled-gadget>
+ <colored-labeled-gadget>
<framed-labeled-gadget>
} ;
IN: ui.gadgets.labeled.tests
{ t } [
- <gadget> "Hey" COLOR: blue <labeled-gadget>
- content>> gadget?
+ <gadget> "Hey" <labeled-gadget> content>> gadget?
] unit-test
ui.pens.gradient ui.pens.solid ui.theme ;
IN: ui.gadgets.labeled
-TUPLE: labeled-gadget < track content color ;
+TUPLE: labeled-gadget < track content ;
<PRIVATE
[ title-bar-gradient <gradient> ]
if ;
-: add-title-bar ( title track -- track )
- swap >label
- [ t >>bold? ] change-font
- { 0 4 } <border>
- title-bar-interior >>interior
- f track-add ;
-
-: add-content ( content track -- track )
- swap 1 track-add ;
-
-: add-color-line ( color track -- track )
- <shelf> { 0 1.5 } <border>
- rot <solid> >>interior
- f track-add ;
-
-: add-content-area ( labeled -- labeled )
- [ ] [ content>> ] [ color>> ] tri
- vertical <track>
- add-color-line
- add-content
- 1 track-add ;
+: <title-bar> ( title -- title-bar )
+ >label [ t >>bold? ] change-font
+ { 0 4 } <border> title-bar-interior >>interior ;
PRIVATE>
-: <labeled-gadget> ( gadget title color -- labeled )
+: <labeled-gadget> ( content title -- labeled )
vertical labeled-gadget new-track
- swap >>color
- add-title-bar
- swap >>content
- add-content-area ;
+ swap <title-bar> f track-add
+ swap [ >>content ] [ 1 track-add ] bi ;
+
+: <colored-labeled-gadget> ( content title color -- labeled )
+ [ <labeled-gadget> ] dip <solid> >>interior { 0 3 } >>gap ;
-: <framed-labeled-gadget> ( gadget title color -- labeled )
- <labeled-gadget> labeled-border-color <solid> >>boundary ;
+: <framed-labeled-gadget> ( content title color -- labeled )
+ <colored-labeled-gadget> labeled-border-color <solid> >>boundary ;
error-list vertical <track> with-lines
error-list <error-list-toolbar> f track-add
error-list source-file-table>> margins <scroller> white-interior
- "Source files" source-files-color <labeled-gadget> 1/4 track-add
+ "Source files" source-files-color <colored-labeled-gadget> 1/4 track-add
error-list error-table>> margins <scroller> white-interior
- "Errors" errors-color <labeled-gadget> 1/4 track-add
+ "Errors" errors-color <colored-labeled-gadget> 1/4 track-add
error-list error-display>>
- "Details" details-color <labeled-gadget> 1/2 track-add
+ "Details" details-color <colored-labeled-gadget> 1/2 track-add
1 track-add ;
M: error-list-gadget focusable-child*
swap >>model
dup model>> <inspector-table> >>table
dup model>> <summary-gadget> margins white-interior
- "Object" object-color <labeled-gadget> f track-add
+ "Object" object-color <colored-labeled-gadget> f track-add
dup table>> <scroller> margins white-interior
- "Contents" contents-color <labeled-gadget> 1 track-add ;
+ "Contents" contents-color <colored-labeled-gadget> 1 track-add ;
M: inspector-gadget focusable-child*
table>> ;
: <stack-display> ( model quot title color -- gadget )
[ '[ dup _ when ] <arrow> <stack-table> margins <scroller> white-interior ] 2dip
- <labeled-gadget> ;
+ <colored-labeled-gadget> ;
: <callstack-display> ( model -- gadget )
[ [ call>> callstack. ] when* ]
<pane-control> t >>scrolls? margins <scroller> white-interior
- "Call stack" call-stack-color <labeled-gadget> ;
+ "Call stack" call-stack-color <colored-labeled-gadget> ;
: <datastack-display> ( model -- gadget )
[ data>> ] "Data stack" data-stack-color <stack-display> ;
: <stack-display> ( model -- gadget )
<stack-table> <scroller> "Operand stack"
- COLOR: dark-gray <labeled-gadget> ;
+ COLOR: dark-gray <colored-labeled-gadget> ;
TUPLE: gml-editor < frame editor gml stack-model b-rep b-rep-model ;
30 >>max-rows
40 >>min-cols
40 >>max-cols
- <scroller> "Editor" COLOR: dark-gray <labeled-gadget> ;
+ <scroller> "Editor" COLOR: dark-gray <colored-labeled-gadget> ;
: <gml-editor> ( -- gadget )
2 3 gml-editor new-frame
[ swap set-control-value ] 2bi
] [ drop ] if*
] <border-button> swap >>model swap
- COLOR: black <labeled-gadget>
- 1 track-add
+ <labeled-gadget> 1 track-add
] 2each
] keep
dup first2