ui.gadgets.*: updated docs and new tests

As mentioned on the mailing list, the editor class doesn't have a color
slot.
char-rename
Björn Lindqvist 2016-08-22 05:25:06 +02:00
parent cb39da4b31
commit 351838fcff
4 changed files with 78 additions and 16 deletions

View File

@ -1,21 +1,23 @@
USING: documents help.markup help.syntax ui.gadgets
ui.gadgets.scrollers models strings ui.commands sequences
ui.text colors fonts help.tips ;
USING: colors documents fonts help.markup help.syntax help.tips models
sequences strings ui.commands ui.gadgets ui.gadgets.line-support
ui.gadgets.scrollers ;
IN: ui.gadgets.editors
HELP: <multiline-editor>
{ $values { "editor" multiline-editor } }
{ $description "Creates a new multi-line editor gadget." } ;
HELP: editor
{ $class-description "An editor is a control for editing a multi-line passage of text stored in a " { $link document } " model. Editors are crated by calling " { $link <editor> } "."
$nl
"Editors have the following slots:"
{ $list
{ { $snippet "font" } " - a " { $link font } "." }
{ { $snippet "color" } " - a " { $link color } "." }
{ { $snippet "caret-color" } " - a " { $link color } "." }
{ { $snippet "selection-color" } " - a " { $link color } "." }
{ { $snippet "caret" } " - a " { $link model } " storing a line/column pair." }
{ { $snippet "mark" } " - a " { $link model } " storing a line/column pair. If there is no selection, the mark is equal to the caret, otherwise the mark is located at the opposite end of the selection from the caret." }
{ { $snippet "focused?" } " - a boolean." }
} } ;
} }
{ $see-also line-gadget } ;
HELP: <editor>
{ $values { "editor" "a new " { $link editor } } }

View File

@ -1,5 +1,43 @@
USING: arrays colors fonts help.markup help.syntax
ui.gadgets.scrollers ;
IN: ui.gadgets.line-support
USING: help.markup help.syntax ;
HELP: line-gadget
{ $class-description "Base class for gadgets that implements display of sequences of text."
$nl
"Line gadgets have the following slots:"
{ $table
{
{ $slot "font" }
{ "a " { $link font } "." }
}
{
{ $slot "selection-color" }
{ "a " { $link color } "." }
}
{
{ $slot "min-rows" }
{ "The preferred minimum number of visible rows when the gadget is contained in a viewport." }
}
{
{ $slot "max-rows" }
{ "The preferred maximum number of visible rows when the gadget is cotnained in a viewport." }
}
{
{ $slot "min-cols" }
{ "The preferred minimum number of visible columns when the gadget is contained in a viewport." }
}
{
{ $slot "max-cols" }
{ "The preferred maximum number of visible columns when the gadget is contained in a viewport." }
}
}
} ;
HELP: pref-viewport-dim*
{ $values { "gadget" line-gadget } { "dim" array } }
{ $description "Calculates the preferred viewport dimenstions of the line gadget." }
{ $see-also pref-viewport-dim } ;
ARTICLE: "ui.gadgets.line-support" "Gadget line support"
"The " { $vocab-link "ui.gadgets.line-support" } " vocabulary provides common code shared by gadgets which display a sequence of lines of text. Currently, the two gadgets that use it are " { $link "ui.gadgets.editors" } " and " { $link "ui.gadgets.tables" } "."

View File

@ -1,4 +1,27 @@
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: tools.test ui.gadgets.line-support ;
USING: accessors arrays kernel tools.test ui.gadgets.editors
ui.gadgets.line-support ui.gadgets.line-support.private ui.text ;
IN: ui.gadgets.line-support.tests
! line-gadget-height
{ t } [
{ 0 0 } <multiline-editor>
[ 1 >>min-rows line-gadget-height ]
[ line-height ] bi =
] unit-test
! line-gadget-width
{ t } [
{ 0 0 } <multiline-editor>
[ 1 >>min-cols line-gadget-width ]
[ font>> em ] bi =
] unit-test
! pref-viewport-dim*
{ t } [
<multiline-editor>
[ 1 >>min-rows 1 >>min-cols pref-viewport-dim* ] [
[ font>> "m" text-width ] [ line-height ] bi 2array
] bi =
] unit-test

View File

@ -8,15 +8,14 @@ IN: ui.gadgets.line-support
! Some code shared by table and editor gadgets
TUPLE: line-gadget < gadget
font selection-color
min-rows max-rows
min-cols max-cols
line-leading line-height
pref-viewport-dim ;
font selection-color
min-rows max-rows
min-cols max-cols
line-leading line-height
pref-viewport-dim ;
: new-line-gadget ( class -- gadget )
new
selection-color >>selection-color ;
new selection-color >>selection-color ;
GENERIC: line-leading* ( gadget -- n )