High, high ... * Andreas Pakulat <apaku@gmx.de> schrieb am [19.08.05 21:26]: > On 19.Aug 2005 - 19:57:16, Frank Küster wrote: > > Andreas Pakulat <apaku@gmx.de> wrote: > > > > > On 19.Aug 2005 - 18:46:08, Frank Küster wrote: > > >> Andreas Pakulat <apaku@gmx.de> wrote: > > >> > > >> > MENUOPTS="\"Titel mit Leerzeichen\" 60 15 5" > > >> > environments="item1 \"desc 1\" item2 \"desc 2\"" > > >> > defaultloc="--default-item item2" > > >> > timeout="--timeout 5" > > >> > /usr/bin/dialog $defaultloc $timeout --menu $MENUOPTS $environments > > >> > > >> Wieso nicht > > >> > > >> TITEL="Titel mit Leerzeichen" > > >> OTHEROPTS="60 15 5" > > >> /usr/bin/dialog $defaultloc $timeout --menu "$TITEL" $OTHEROPTS $environments > > > > > > :-) Der Menutitel ist nich das eigentliche Problem, sondern > > > environments. Das wird generiert, damit der Nutzer spaeter einfach > > > Alles Zshell, fuer die Bash geht das folgende bestimmt auch aehnlich. Das mit den Environments habe ich ueber ARRAYs geloest, das ist ziemlich einfach (Bsp.): for VAR in $Werte ; { ARRAY[ANZ]="\"$VAR\" \"\"" (( ANZ++ )) } Durch das Quoting kannst Du auch Leerzeichen benutzen. Ich habe mir (Zshell) Funktionen fuer menue, ..., geschrieben die auch gleich die Spalten und Zeilenlaenge des Terminal berechnen. Das mit den Variablen TITLE MSG kannste auch anders machen, das soll eh demnaechst von gettext (locale) geloest werden. Aber vielleicht ist dies ja fuer dich eine Anregung. Alle Scripts initialisieren sich durch die Funktion script_init, welches vorab die Funktionspfade und einige Variablen generiert. Durch "eval" wird alles in einer Subshell ausgefuehrt, dadurch hast du weniger Probleme mit generierten Variablen, ausser du exportierst diese. # Funktion menue # # benötigt die Funktion return_check # # usage: menue -v TITLE_NAME "$ARRAY" (-v = Variable) # menue -s TITLE_NAME ARRAY_NAME (-s = */msg/$LANGUAGE/share) # menue TITLE_NAME ARRAY_NAME # TITLE_NAME - Der TITLE_NAME wird aus der */msg/$LANGUAGE/title gelesen # ARRAY_NAME - Der ARRAY_NAME wird aus der */msg/$LANGUAGE/$SCRIPTNAME gelesen # ARRAY - Array mit Werten die man auswaehlen kann. # menue () { if [ "$#" -ge 2 ] ; then MSG=${${(s.;.)${(M)${(f)"$(< ${MSG_FILE%/*}/share)"}##(s#)menuepunkt;*}}[2]} if [ "$1" = -v ] ; then TITLE=${${(s.;.)${(M)${(f)"$(< ${MSG_FILE%/*}/title)"}##(s#)${2};*}}[2]} MENUE_ARRAY=(${3[*]}) elif [ "$1" = -s ] ; then TITLE=${${(s.;.)${(M)${(f)"$(< ${MSG_FILE%/*}/title)"}##(s#)${2};*}}[2]} MENUE_ARRAY=(${${(s.;.)${(M)${(f)"$(< ${MSG_FILE%/*}/share)"}##(s#)${3};*}}[2]}) else TITLE=${${(s.;.)${(M)${(f)"$(< ${MSG_FILE%/*}/title)"}##(s#)${1};*}}[2]} MENUE_ARRAY=(${${(s.;.)${(M)${(f)"$(< $MSG_FILE)"}##(s#)${2};*}}[2]}) fi (( Elemente=+${#MENUE_ARRAY[@]} )) (( Elemente = Elemente/2+1 )) Overhead=7 if [ "$[Elemente+Overhead]" -lt "$[LINES-4]" ]; then (( DisplayLines = Elemente+Overhead )) else (( DisplayLines = LINES-6 )) (( Elemente = DisplayLines-8 )) fi DialogTitle="--title \"${SCRIPTNAME}::${TITLE}\" $DialogBackTitle" DialogLabel="--ok-label $OK --help-button --help-label $HILFE --cancel-label $ABBRECHEN" DialogPara="--clear --menu \"$MSG\" $DisplayLines $[COLUMNS-8] $Elemente ${MENUE_ARRAY[*]}" eval $Dialog $DialogLabel $DialogTitle $DialogPara $DialogReDirect return_check else no_para_msg $0 fi } Sorry, wegen der Zeilenueberlaenge (>72), ist halt copy & Paste (vim). Die Sourcen kannst du dir unter ftp://ftp.berlios.de/pub/netzworkk/scripts/kwtools/Sources/0.4/ laden und ansehen. mfg Kiste -- ####################################################################### Netzworkk Kai Wilke kiste@netzworkk.de http://www.netzworkk.de http://netzworkk.berlios.de
Attachment:
signature.asc
Description: Digital signature