ANN: FieldGroup - a simple rich text editor field.
alex at tweedly.net
Wed Jul 22 20:08:08 EDT 2020
I'd like to announce the Beta (i.e. v0.1) release of my simple rich text
field. Currently it's not on Github or anywhere sensible - it's just on
my own download site (see URL at end of this email).
I'd be happy if anyone finds it useful, and / or has feedback that might
make it useful.
FieldGroup - a rich text editor field for Livecode.
Actually, as the old joke goes, it's not really "rich" text, just
comfortably off. :-)
That is, it supports only some fairly basic features compared to a
fully-featured rich text editor.
Supported features include :
- multi-level undo/redo
- 'undo' can be reset (e.g. after 'save', or 'open')
- set text style of a chunk by tool button or (sample) menu
- undo includes text style setting
- simple (enclosed) tool bars with text or icon buttons - optional of
- each kind of button comes in two sizes
- button tool bars in any one of four placements (top,right,bottom,left)
- view scaling
- call-backs to let the app know when undo/redo are available (e.g. to
- no front scripts used.
FieldGroup is a standalone group which can be simply copy/paste'd into
your own stacks, and provides a (moderately) rich set of text field
features. You can have as many of these fieldgroups as you want - each
is entirely self-contained.
Easy to use - handlers/functions are well documented and (I hope)
straightforward to understand and use. The downloadable stack includes
the group, ready to be copy/pasted, as part of a simple sample app which
shows common uses.
The handler definitions are included below - this is also available in
the sample app. The "fill" button ill give you text to play with, but
shift-Fill will restore this document.
You can download the sample app - which includes the group you ned to
copy/paste - from
This popped out from a simple app I'm writing (actually, just starting
to write) so I'm sure I will realize I need more features, and they will
be added. However, I do not intend it to grow to an all-singing,
all-dancing word processor-like field editor - I have no need for one of
those. But it might be a staring point for someone else who wants that.
In general, these handlers are invoked by 'dispatch'ing the message to
the group. The sample app shows an example of how to structure the menu
items (edit and Format menus). It also contains examples of manipulating
the text (the *Exchange* button), showing different configurations of
the buttons (the *Snap* button, and capturing the return messages for
undo/redo being available.
Initialize the field, with an optional set of configuration parameters
(see fg.configChange for details of these).
/dispatch "fg.init" to grp "fldgrp" with "textbuttonsize=large",
Configure the settings for buttons usage, placement, size, etc.
This can be either an array, with the key/value pairs, or any number of
parameters each being in the form “key=value”.
/put "top" into tA["textbuttons"]//
put "small" into tA["textbuttonsize"]
dispatch "fg.configChange" to grp "fldgrp" with tA/
/dispatch "fg.configChange" to grp "fldgrp" with "textbuttons=top",
Parameters that can be set are:
- textbuttons : top | bottom
- svgbuttons : top | bottom | right | left
- textbuttonsize : small | large
- svgbuttonsize : small | large
- resizing : true | false (defaults true - if FALSE then the group will
not adjust for any resizing)
Returns the version of the fieldgroup.
/dispatch function "fg.version" to grp "fldgrp"//
put "Version" && the result &CR into msg
Retrieve the contents of the field.
/dispatch function "fg.getText" to grp "fldgrp" with "styledtext"/
pType is one of
- styledtext (the default) : return the complete styledtext /array
- text : plain text of the field/
- htmlText : htmltext of the field
- rtftext : rtfText of the field
Resets all undo info, for example if the app does a save, and if it
determins that the user should ne bot able to'undo' beyond that point,
then it would call this handler.
/dispatch function "fg.version" to grp "fldgrp"//
put the result into URL ("binfile:savedfile.txt")
dispatch "fg.resetUndoSystem" to grp "fldgrp"/
Set the initial text for the field (i.e. set the text, an reset the undo
/put URL ("binfile:" & sFilename) into tText//
put arraydecode(tText) into tA
dispatch "fg.set.initialText" to grp "fldgrp" with tA/
pText can be either an array (in which case it is the styledText to be
set), or string (of simple text).
*fg.replaceChunk* pChunk, pAText
Replaces the specified chunk of the field with the styledText in the
/dispatch "fg.replaceChunk" to grp "fldgrp" with tChunk, tAText/
*fg.set.textStyle* pStyle, pChunk
Adds / removes the text style to the chunk of the field. If the chunk is
empty, then the change is applied to the current selection.
/dispatch "fg.set.textStyle" to grp "fldgrp" with "bold"/
Note that if the all of the chunk already has the specified style, then
it is removed; oitherwise it is added; therefore, if the chunk is
previously "mixed" then the style is added.
Sets the viewing scale for the field. This simply adjusts the textsize,
since there is no provision for setting the text size of individual
parts of the field.
/dispatch "fg.set.viewScale" to grp "fldgrp" with "+"/
pScale is one of :
- "-" : make text smaller
- "+" : make text larger
- 0 : reset text to default size
- N (< 6) : is a multiplier from default size, e.g. for apps that offer
- N (> 6): an actual text size.
-- end of definitions --
More information about the use-livecode