Stamps are a method for manually applying action code to the currently selected item(s) in the view pane of the front document. If multiple items are selected, every item in the selection discretely has the same action code run upon it.
From v9.1.0, if the built-in Hints container is present, existing stamps are added as stamp notes and may be managed/edited either there or in the Stamps Inspector.
Stamps are action code 'expressions', i.e. one or more complete action(s) to be effected by the code. The concept of a stamp allows easy (manual) application and re-use of such code. They enable the user to:
- set many attributes at once. For example, a stamp with two discrete expressions to set a colour ($Color) and, separately, a badge ($Badge):
$Color="blue"; $Badge="ok";
. - use conditions, shell scripts and macros for more complex tasks. For example, conditionally (an if() operation) set or clear a warning badge ($Badge) based on evaluating if a task's due date has passed ($DueDate):
if($DueDate<date("today")){$Badge="warning";}else{$Badge=;}
.
Stamps are defined/edited via the Stamps tab of the Document Inspector. Stamps can be called by:
- The Stamps menu.
- The Stamps tab of the Document Inspector (use the 'Apply' button).
Stamps are essentially an entirely manual way to apply actions that might otherwise as easily be effected automatically via rules, edicts, OnAdd events, or agent actions. Stamps are thus useful for when a known change needs to be made to some attributes but the scope or timing of such a change cannot easily be predicted or automated and so manual application is the best method.
Stamps requiring long/complex code can store the action in a code note and call it via the action() operator.
If stamps are just being used to easily apply a consistent look and layout to notes, consider using prototypes instead for the greater flexibility they offer when you subsequently need to make changes.
A document's stamps can be used in any action (AgentAction, Rule, Edict, DisplayExpression, OnAdd, HoverExpression, TableExpression and ^action()^).
The stamp is called as an expression containing only the name of the stamp. The name is case-sensitive. Do not enclose it in quotes or Tinderbox will read it as a literal string (i.e. actual text). It must be terminated with a semicolon is followed by another expression. However, it is a good idea in this particular case of always using s semi-colon to help indicate your intent to the app.
Defined stamps with no code (a rare edge case when setting up a large document) will show in the Stamps Inspector but not in the Stamps menu.
The stamp name may be enclosed in quotes; unquoted and quoted forms both work. For a stamp called 'A test', the action would be be:
A test;
or
"A test";
The same stamp called, but here as one of 3 discrete expressions within an action:
$Color="blue";A test;$Width=4;
Unlike editing attributes via a note's Displayed Attributes table or Get Info's attributes tab, altering an attribute via a stamp (or Quickstamp) does not alter $Modified.
If a stamp changes the text, Tinderbox will immediately expand any ziplinks mark-up found in the revised text.
When applying a stamp to a note that is on exactly one adornment, the designator 'adornment' implies that adornment. If the note is on several adornments, the designator 'adornment' reflects only one of those adornments (the front-most?).
Stamp Groups
The Stamps menu supports hierarchical organisation of stamps. To group stamps, include a colon in the stamps title:
Colour:red border
This will cause the Stamps menu to add a group named 'Colour' and with submenu for the groups members, e.g. 'red border'. This method allows organising groupings of related stamps without creating unwieldy menus. Stamps cannot be nested more deeply than in groups, i.e. 1 level of nesting. Use of more than one colon in the name causes the stamp to not list as part of a Group. names are case-sensitive, so 'Colour Map:blue' and 'Colour map:green' would list in separate groups.
Note that pre-existing stamp names containing colons will form their own group, with the second part of the original name as a sub-menu, but they otherwise work the same way.
Stamps menu order
The Stamps menu lists stamps in the order shown in the Stamps Inspector. Where a group occurs, it it is listed where the first group member occurs in the Inspector List and within the sub-menu, the items are listed as in Inspector listing order. Grouped items do no need to be contiguous in the Inspector listing.
Currently, although Inspector-created stamps are replicated in the /Hints/Stamps container, the ordering of both is independent; re-ordering in one location does not update it in the other. If differing, the order in the Stamps menu is that of the Inspector and not the Stamps container.