forked from jexp/TinyMacros
-
Notifications
You must be signed in to change notification settings - Fork 0
/
util.echo.tf
341 lines (295 loc) · 10.6 KB
/
util.echo.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
; $Log: util.echo.tf,v $
; Revision 1.21 2002/10/09 22:38:12 mh14
; simplelists kann jetzt einen Delimeter -d, Alternativ erlaubte Tasten -a und einen Titeltext -t verarbeiten
;
; Revision 1.20 2002/06/13 08:22:08 mh14
; simple_menu unterstuetzt jetz eine hervorhebende Anzeige von Parent-Menues, Farben fuer Parent/Blattknoten, col_echo kann jetzt auch mit Farben umgehen, Farben fuer simple_menu konfigurierbar
;
; Revision 1.19 2002/06/06 10:42:56 mh14
; info farbe neu
;
; Revision 1.18 2002/04/26 14:07:38 nieten
; args, daemlicher Fehler in /col_echo
;
; Revision 1.17 2002/04/24 13:03:09 nieten
; - Korrekturen in der Doku
; - Aenderungen in /col_echo und /simple_menu, so dass Menuenummern jetzt
; formatiert werden
; - /col_echo etwas umgestrickt
;
; Revision 1.16 2002/04/18 19:34:04 mh14
; simple_menu verarbeitet jetzt q zum abbruch
;
; Revision 1.15 2002/04/16 12:20:01 mh14
; config-system, ein paar aenderungen an simple_menu
;
; Revision 1.14 2002/04/04 13:09:44 mh14
; /info, Config Vars geaendert
;
; Revision 1.13 2002/03/07 15:49:55 nieten
; /remove_attributes eingebaut
; /ext_read piepst nicht mehr so viel
;
; Revision 1.12 2001/12/08 22:38:48 mh14
; fileinfo req
;
; Revision 1.11 2001/12/03 22:01:51 mh14
; config reingeschoben
;
; Revision 1.10 2001/11/05 15:24:24 nieten
; Hilfe zu /echo2 korrigiert
;
; Revision 1.9 2001/09/30 00:58:42 mh14
; Hilfetext geaendert
;
; Revision 1.8 2001/09/25 21:25:47 mh14
; format_sucess_text fuer erfolgsabhaengige textfaerbung/formatierung, gesteuert durch Benutzervariablen
;
; Revision 1.7 2001/09/12 22:25:57 mh14
; /line aus keys.tf verschoben
;
; Revision 1.6 2001/09/11 20:52:21 mh14
; Erweiteres Read (ext_read) mit Eingabeprompt und Defaultwert in Eingabezeile
; simple_menu ein Menue mit Kommandodarstellung und Auswahl per Zahl
;
; Revision 1.5 2001/09/09 19:09:42 mh14
; help_de.list
;
; Revision 1.4 2001/09/06 21:11:44 mh14
; Log eingefuegt
;
/set util_echo_tf_version $Id$
/set [email protected]
/set util_echo_tf_requires=util.vfunc.tf
/set util_echo_tf_desc Echo-Erweiterungen (Spalten, bedingt, Zeilenumbruch)
; ********************* BEGIN CONFIG ********************
/cfg_set GUI FORMAT_ATTR_SUCCESS Cgreen
/cfg_set GUI FORMAT_ATTR_WARNING Cyellow
/cfg_set GUI FORMAT_ATTR_INFO Cyellow
/cfg_set GUI FORMAT_ATTR_ERROR Cred
/cfg_set GUI FORMAT_ATTR_FATAL Cbgred
/cfg_info gui FORMAT_ATTR Fehlerfarben
/cfg_info gui menu Menues
/cfg_set GUI MENU PARENT_COLOR Cblue
/cfg_info gui MENU PARENT_COLOR Farbe_SubMenue
/cfg_set GUI MENU CHILD_COLOR x
/cfg_info gui MENU CHILD_COLOR Farbe_Menuepunkt
/cfg_set GUI MENU SHOW_SUB_SIGN 1
/cfg_info gui MENU SHOW_SUB_SIGN Anzeige_+Submenue
/set_var col_echo_len 54
/set_var col_echo_size 18
; ********************* END CONFIG **********************
/deprecated format_attr_success v
/deprecated format_attr_warning v
/deprecated format_attr_error v
/deprecated format_attr_fatal v
/addh info \
Erweitert die Funktionalitaet des '-p'-Parameters von /echo um das Attribut \
'@@@{}{N}', welches einen Zeilenumbruch hervorruft.
/addh see echo, attributes
/addh echo2 comm
/defh echo2 = \
/let param=%*%;\
/let reg=$[strcat("(^ *(-((p|e)|((a|w)[^ -]+)) )+)")] %;\
/if ((regmatch(reg,param)==1) & (strstr({P0},"-p")!=-1)) \
/let part1=%P0%;\
/let part2=$[substr(param,strlen(part1))]%;\
/let off=$[strstr(part2,"@{N}")] %;\
/while (off!=-1) \
/let temp=$[strcat(substr(part2,0,off))]%;\
/echo $[strcat(part1," -- ",temp)]%;\
/let part2=$[substr(part2,off+4)]%;\
/let off=$[strstr(part2,"@{N}")]%;\
/done %;\
/endif %;\
/if (part2!~"") /echo $[strcat(part1," -- ",part2)]%; /endif
; /let reg=$[strcat("(@{(N|n|g|G|u|r|f|d|B|b|h)?(C[A-Za-z1-9]+)?})")] %;\
/addh info \
Sammelt eine Anzahl von Ausgaben und gibt sie beim Aufruf ohne Parameter durch Kommata getrennt wieder aus.
/addh var %echolist
/addh echolist mak
/set echolist=
/def echolist =\
/if ({*}=~"") \
/_echo $[substr(echolist,2)]%;\
/set echolist=%;\
/else \
/set echolist=$[strcat(echolist,", ",{*})]%;\
/endif
/addh info \
Initialisiert die Ausgabebreite und die Spaltenbreite fuer die naechsten /col_echo.
/addh ex /init_col_echo 80 15
/addh syn /init_col_echo width col_width
/addh init_col_echo mak
/set col_echo=
/set col_line_len=0
/def init_col_echo = \
/set col_echo_size=%2%;\
/set col_echo_len=$[trunc({1} / col_echo_size) * col_echo_size]%;\
/set col_echo=%;\
/set col_line_len=0
/addh info \
Gibt solange Text in laut /init_col_echo gestalteten Zeilen aus, bis es ohne Parameter aufgerufen wird. Der Text wird spaltenweise formatiert. Wenn Text zu lang ist, ragt er bis auf die naechsten Spalten ueber.
/addh syn /col_echo Text oder kein Parameter zum Beenden
/addh col_echo mak
/def col_echo = \
/if (!{#}) \
/col_do_echo%;\
/return%;\
/endif%;\
/let param=%; /test param:={*}%;\
/if (param=/"@[{]*[}]*") \
/let off=$[strchr(param,"}")+1]%;\
/let col_echo_color=$[substr(param,0,off)]%;\
/let param=$[substr(param,off)]%;\
/endif%;\
/let paramlen=$[strlen(param) + 1]%;\
;/echo %col_echo_color, %param, %paramlen%;\
/let repcount=$[col_echo_size - paramlen]%;\
/if (repcount < 0) \
/let repcount=$[col_echo_size + mod(repcount,col_echo_size)]%;\
/endif%;\
; /if (strlen(col_echo)+paramlen+repcount > col_echo_len) \
/if (col_line_len+paramlen+repcount > col_echo_len) \
/col_do_echo%;\
/endif%;\
/test col_echo:=strcat(col_echo, col_echo_color,param,"@{x}", strrep(" ",repcount+1))%;\
/test col_line_len:=col_line_len+paramlen+repcount+1%;\
; /if (strlen(col_echo) >= col_echo_len) \
/if (strlen(col_line_len) >= col_echo_len) \
/col_do_echo%;\
/endif
/def col_do_echo = \
/echo -p @{x} %col_echo%;\
/set col_echo=%;\
/set col_line_len=0%;\
/addh info \
Macht nur die Ausgabe, wenn der als erste Parameter uebergebene Ausdruck wahr ist.
/addh ex /ifecho debuglevel==10 Internal Warning
/addh syn /ifecho expression Text
/addh ifecho mak
/def ifecho = \
/if /test (%1)%; /then /echo %-1%; /endif%;
/addh info \
Ein erweitertes Read, das einen Praefix als Prompt setzt und einen Standardwert in die Eingabezeile schreibt.
/addh syn /ext_read praefix [defaultwert]
/addh ex /ext_read Auswahl 10
/addh see prompt
/addh ext_read func
/def ext_read = \
/echo -p Eingabe %1%;\
/if ({#}) \
/test prompt({1})%;\
/endif%;\
/if (kblen()) \
/dokey DLINE%;\
/endif%;\
/test input({2})%;\
/let input_text=%;\
/test tfread(input_text)%;\
/if ({#}) \
/test prompt("> ")%;\
/endif%;\
/return input_text
/addh info \
Ein einfaches Menue, das seine Parameter nummeriert darstellt und als Ergebnis eine darauf normierte Zahl zurueckgibt (oder 0 im Fehlerfall). Die Eingabe von 'q' fuehrt zum Rueckgabewert -1.
/addh ex /simple_menu Laden Speichern Schliessen
/addh return Auswahl oder 0 bei Fehler
/addh simple_menu mak
/def simple_menu = \
/if (!{#}) \
/return 0%;\
/endif%;\
/let opt_d=_%;\
/test getopts("a:d:t:")%;\
/echo %opt_t%;\
/let sm_width=$[strlen({*})/{#} + 6]%;\
/test init_col_echo(columns(), sm_width)%;\
/let count=1%;\
/let count_size=$[trunc(log10({#})) + 1]%;\
/let menu_parent=0%; /let menu_text=%;\
/while ({#}) \
/test menu_parent:=({1}=/"+*")%;\
/test menu_text:={1}%;\
/if (menu_parent & !CFG_GUI_MENU_SHOW_SUB_SIGN) \
/test menu_text:=substr(menu_text,1)%;\
/endif%;\
/test col_echo(strcat("@{", menu_parent ? CFG_GUI_MENU_PARENT_COLOR : CFG_GUI_MENU_CHILD_COLOR, "}", \
pad(count,count_size), ") ", \
replace(opt_d," ",menu_text)))%;\
/shift%;\
/test ++count%;\
/done%;\
/col_echo%;\
/let menu_input=$[ext_read("Menu: ")]%;\
/if (menu_input =/ "q") \
/return -1%;\
/elseif (menu_input =/ strcat("[",opt_a,"]*")) \
/return menu_input%;\
/elseif (menu_input !/ "{[0-9]*}") \
/return 0%;\
/elseif (menu_input>=count | menu_input<1) \
/return 0%;\
/else \
/return menu_input%;\
/endif
/addh info \
Zeichnet eine Linie ueber den gesamten Bildschirm. Wenn ein Parameter angegeben wurde, wird dieser in der Zeile zentriert.
/addh line mak
/def line = \
/if (!{#}) \
/echo - $[strrep("-",columns()-1)]%;\
/else \
/let plen=$[strlen({*})]%;\
/let columns=$[(columns()-1-plen)/2]%;\
/echo - $[strcat(strrep("-",columns),{*},strrep("-",columns))]%;\
/endif
/addh info \
Formats the given Text according to the Variables CFG_GUI_FORMAT_ATTR_*.
/addh cfg CFG_GUI_FORMAT_ATTR_*
/addh ex /format_success_text success Done -> formatted text done (for /echo -p) according to the CFG_GUI_FORMAT_ATTR_SUCCESS
/addh format_success_text mak
/def format_success_text = \
/let param=%1%;\
/if (param=~"1") /let param=success%;\
/elseif (param=~"0") /let param=success%;\
/elseif (param=/"ok") /let param=success%;\
/elseif (param=/"error") /let param=failure%;\
/elseif (param=~error) /let param=failure%;\
/endif%;\
/test param:=toupper(param)%;\
/if (!isVar(strcat("CFG_GUI_FORMAT_ATTR_",param))) \
/echo -e Wrong format parameter: %param Text: %-1%; \
/endif%;\
/return strcat("@{",CFG_GUI_FORMAT_ATTR_%param,"}",{-1},"@{n}")
/addh info \
Gibt den uebergebenen Text entsprechend des angegebenen Errorlevels formatiert aus.
/addh syn /info (error|success|warning|failure|fatal) Text
/addh ex /info error Das ist ein Fehler
/addh info mak
/def info = \
/let param=%;\
/test param:=CFG_GUI_FORMAT_ATTR_$[toupper({1-ERROR})]%;\
/echo -a%param -p %-1
/addh info \
Loescht im uebergebenen String alle Attributsdefinitionen. Nuetzlich fuer Ausgabe in Logfiles oder in den Prompt.
/addh ex Die Zeile@{N}\
/echo -p @@{Ccyan}$[remove_attributes("nicht @@{Cred}rot")]@{N}\
erzeugt als Ausgabe@{N}\
@{Ccyan}nicht rot@{n}
/addh return String ohne Attributsanweisungen
/addh remove_attributes func
/def remove_attributes = \
/let res=$(/echo -p - %*)%;\
/result res
/addh info Faerbt die als Parameter angegebenen Worte mit den als ersten Parameter vorgegebenen Attributen ein.\
Gross-/Kleinschreibung beachten! Es werden Trigger mit -mregexp dafuer erzeugt, der Name ist t_highlight_%2
/addh ex /highlight BCred Mekare Maharet
/addh highlight mak
/def highlight = \
/def -t"($[replace(' ','|',{-1})])" -P0%1 -p1000000 -F t_highlight_%2 = /test 0
/addh info Faerbt die ganze Zeile entsprechend des glob Triggers und der als ersten Parameter uebergebenen Attribute ein
/addh ex /color_line BCwhite \* MPA
/addh color_line mak
/def color_line = /def -p100000 -F -a%1 -mglob -t"*%-1*" t_color_line_$[hash({*})] = /test 0
/addh_fileinfo