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

Attachment: signature.asc
Description: Digital signature

Antwort per Email an