High, high ... * Andreas Pakulat <[EMAIL PROTECTED]> schrieb am [19.08.05 21:26]: > On 19.Aug 2005 - 19:57:16, Frank Küster wrote: > > Andreas Pakulat <[EMAIL PROTECTED]> wrote: > > > > > On 19.Aug 2005 - 18:46:08, Frank Küster wrote: > > >> Andreas Pakulat <[EMAIL PROTECTED]> 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
(( [EMAIL PROTECTED] ))
(( 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
[EMAIL PROTECTED]
http://www.netzworkk.de
http://netzworkk.berlios.de
signature.asc
Description: Digital signature

