Element-Inhalt markieren

Im Forum [frameusers-de](http://groups.google.com/group/frameusers-de/msg/c731bf789b3cd1f7?hl=de) kam die Frage auf nach einem Tastaturkürzel, mit dessen Hilfe man nur den Inhalt eines Elements markieren könnte.

Markus Wiedenmaier präsentierte daraufhin eine [Lösung mit ExtendScript](http://www.practice-innovation.de/wiki/tiki-view_blog.php?blogId=4) für FrameMaker 10, seinen Code habe ich nach FrameScript übertragen, die wichtigsten Zeilen folgen. Die aktuelle Version kann hier geladen werden:

* SWATSelectElementContent.fsl

Das Skript muss installiert werden und erstellt zur Zeit zwei Menüpunkte am Ende des Menüs „Element“, die Tastenkürzel sind `Esc h e t` (**h**ighlight **e**lement **t**ext) bzw. `Esc h e c` (**h**ighlight **e**lement **c**ontent).

~~~~
Event Initialize
If (Session.ProductIsStructured)
Local lvMenu lvCmd;

Get Object Type(Menu) Name(‚ElementMenu‘) NewVar(lvMenu);
New Command Name(‚SWAT_CMD_SELECTELEMENTTEXT‘)
Label(‚Select text node‘) Shortcut(‚\!het‘)
NewVar(lvCmd) EventProc(SelectText)
AddTo(lvMenu) EnabledWhen(EnableNeedsDocpOnly);
Set lvCmd.KeyboardShortcutLabel = ‚Esc h e t‘;
New Command Name(‚SWAT_CMD_SELECTELEMENTCONTENT‘)
Label(‚Select element content‘) Shortcut(‚\!hec‘)
NewVar(lvCmd) EventProc(SelectContent)
AddTo(lvMenu) EnabledWhen(EnableNeedsDocpOnly);
Set lvCmd.KeyboardShortcutLabel = ‚Esc h e c‘;

EndIf
EndEvent

Event SelectText
Local lvDoc(Session.ActiveDoc);
Local lvSel(lvDoc.ElementSelection);
Set lvSel.Begin.Offset = 0;
Set lvSel.End.Offset = ObjEndOffset;
Local lvTextRange;
// EUtl.Convert{} requires version 5
Set lvTextRange = EUtl.Convert{lvSel, ‚TextRange‘};
Set lvDoc.TextSelection = lvTextRange;
EndEvent

Event SelectContent
Local lvDoc(Session.ActiveDoc);
Local lvSel(lvDoc.ElementSelection);
Local lvCurrentElement;
If (lvSel.Begin.Child
and lvSel.Begin.Child.ElementDef
and lvSel.Begin.Offset = 0)
Set lvCurrentElement = lvSel.Begin.Child;
Else
Set lvCurrentElement = lvSel.Begin.Parent;
EndIf
Local lvTextRange;
Set lvTextRange = lvCurrentElement.TextRange;
Set lvTextRange.Begin.Offset = lvTextRange.Begin.Offset + 1;
Set lvDoc.TextSelection = lvTextRange;
EndEvent
~~~~

Dieser Beitrag wurde unter Lernen veröffentlicht. Setze ein Lesezeichen auf den Permalink.