ubuntuusers.de

Script dialog zwei Fenster untereinander

Status: Ungelöst | Ubuntu-Version: Ubuntu 10.04 (Lucid Lynx)
Antworten |

Xabot

Anmeldungsdatum:
26. Dezember 2009

Beiträge: Zähle...

Hi,

ich programiere grad ein Script mit dialog. Meine Frage ist, ob und wie ich zwei Fenster untereinander anzeigen lassen kann. Also im oberen bereich ein auswahlmenu (--radiolist) und im unteren zb eine --msgbox oder --tailbox. (So ähnlich wie bei yast, das ich halt oben auswählen kann und unten infos angezeigt bekomme). Ich habe schon versucht beide Parameter an dialog anzuhängen und unterschiedliche Positionen mitzugeben, aber leider zeigt er dann gar nichts mehr an.

 #!code bash 
dialog --backtitle "bla bla" --radiolist "Bitte auswaehlen" 16 60 5 \ --msgbox 

habe es auch in anderen Varianten schon probiert.

Also es geht mir nur darum, wie ich zwei Fenster (wenn man das überhaupt so nennen kann) untereinander bekomme und nicht wie ich diese nacher dann mit Inhalt fülle 😉

Danke

MFG

Dalai

Avatar von Dalai

Anmeldungsdatum:
16. Juni 2008

Beiträge: 2316

Wohnort: Meiningen

Nein, das geht nicht. dialog kann immer nur einen Dialog-Typ anzeigen. Was willst du denn mit der MsgBox anstellen?

Ergänzung: verstehe gerade das Problem. Schau dir mal man dialog an, speziell die Parameter --item-help, --help-button u. dgl.

MfG Dalai

Xabot

(Themenstarter)

Anmeldungsdatum:
26. Dezember 2009

Beiträge: 11

Morgen,

erstmal danke. Ja damit könnte ich einen Button für Hilfe hinzufügen. Ich möchte aber gerne in der unteren Box eine Übersicht des oben in der radiolist box hinzufgefügte anzeigen.(Da es möglich ist mehrere Sachen hinzu zu fügen).

Danke

Xabot

Dalai

Avatar von Dalai

Anmeldungsdatum:
16. Juni 2008

Beiträge: 2316

Wohnort: Meiningen

Nein, du hast mich und/oder die Manpage falsch verstanden: Schau dir das --item-help nochmal genauer an.

Beispiel:

dialog --item-help --menu "a" 15 50 50 eins nix hilfe zwei nix help

MfG Dalai

Xabot

(Themenstarter)

Anmeldungsdatum:
26. Dezember 2009

Beiträge: 11

Hi,

so ich habs mir nochmal angeschaut. Leider weiß ich nicht wie ich das damit realisieren könnte.

Vill sollte ich nochmal genauer erklären was ich meine. Also es handelt sich um ein eigens für die Firma entwickeltes Iptables Script. Man startet in einem Menu welches mit --radiolist erstellt ist. Dort hat man nun die Möglichkeit zu wählen zwischen:

Eine neue Regel erstellen
Zusaetzliche Optionen Hinzufügen
...
Ausführen

So über neue Regel hinzufügen kann man jetzt beliebig viele Regeln hinzufügen. Da dies aber irgendwann unübersichtlich wird, wollte ich unter dem Fenster mit dem Menu (wo zur Auswahl steht "Eine neue Regel erstellen") eine box machen in der die bisher eingegbenen Regeln stehen. So könnte man dem User bei komplexen Regeln eine bessere Übersicht der in dieser Session bisherigen hinzugefügten Regeln geben.

Alle Regeln die in der Session hinzugefügt werden, werden in einer temporären ergebniss Datei gespeichert. Diese könnte man zb mit einer tailbox unten drunter einblenden. Das war zumindest bis jetzt meine Idee 😉

Danke

Xabot

Dalai

Avatar von Dalai

Anmeldungsdatum:
16. Juni 2008

Beiträge: 2316

Wohnort: Meiningen

Tja, für solch komplexe Dialoge musst du entweder mehrere Aufrufe hintereinanderschalten oder ein anderes Programm benutzen. Allerdings kenne ich nichts anderes, schon gar nicht für die Konsole; ich nehme an, dass du absichtlich dialog nutzt und nicht zenity o.ä.

MfG Dalai

Xabot

(Themenstarter)

Anmeldungsdatum:
26. Dezember 2009

Beiträge: 11

Nein. Die Aufgabe war es unseren Entwicklern die Möglichkeit zu geben bestimmte regeln festzulegen. Da diese aber keine Ahnung von Iptables haben und Linux nur grob können, dachte ich mir man könnte es ja mit einfachen grafischen fenstern so einfach wie möglich gestallten. Also habe ich mich etwas umgehört und da wurde mir dialog empfohlen. Sonst habe ich so etwas immer mit case in der console ausgegeben. Zenti kenne ich gar nicht.

Gruß Xabot

Dalai

Avatar von Dalai

Anmeldungsdatum:
16. Juni 2008

Beiträge: 2316

Wohnort: Meiningen

zenity ist ein Dialogsystem für X, siehe Wiki zenity. Wenn du keinen X hast, sondern nur eine Konsole/SSH, dann bist du auf konsolenbasierte Tools angewiesen. Und dialog ist - soweit ich bisher weiß - das Beste, was es dafür gibt.

MfG Dalai

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

In so einem Fall bastele ich doch lieber selber. Ist zwar etwas mehr Aufwand, aber dafür passt es maßgenau.

Z.B. ein einfaches halbautomatisches Menü, das sowohl mit Pfeiltasten und [Enter] als auch mit Kennbuchstaben funktioniert:

#! /bin/bash

	ok="N"				# Voreinstellung
 
	m[1]=D				# für jeden Menüpunkt das Kürzel festlegen
	m[2]=A
	m[3]=N
					# Hier kommen die Menüpunkte:
	echo -en "\e[0;34m	Und danach:\e[0m	\r"
	echo -e "			\e[36mD\e[0matenbank wieder starten"
	echo -e "			\e[36mA\e[0mutomatisch abschalten"
	echo -en "			\e[36mN\e[0michts"
	echo -en "\r			\e[s"
	while true ; do
		echo -en "\e[u"
		i0=""
		vi=""			# <- ohne diese Zeile kann das Menü reihum durchgeblättert werden

		for i in ${m[*]} ; do	# Cursor einstellen: Vor- und Nach-"ok" suchen
			[ "$i0" == "$ok" ] && echo -en "\e[A" || i0=$i
			[ "$i" == "$ok" ] && vok="${vi:-$i}"
			[ "$vi" == "$ok" ] && nok="$i"
			vi="$i"
			done
		nok="${nok:-$ok}"

		read -sn1 kb
		case "$kb" in					# Pfeiltasten auswerten
			[ )	vkb="$vkb$kb";;
			A )	if [ "$vkb" == $'\e'[ ]; then	## [↑] = [esc]-[-A
					ok="$vok"
					vkb="$kb"
					continue
					fi ;;
			B )	if [ "$vkb" == $'\e'[ ]; then	## [↓] = [esc]-[-B
					ok="$nok"
					vkb="$kb"
					continue
					fi ;;
			* )	if [ "$vkb" == $'\e'[ ]; then	## andere Steuertasten
					vkb="$kb"
					continue
					fi
				vkb="$kb";;
			esac

		vkb="$(echo "$vkb"|tr '[:lower:]' '[:upper:]')"	# kleine Buchstaben umwandeln
		case "$kb" in					# Menü-Direktwahl
			"" )	vkb="$ok"
				break ;;
			* )	for i in ${m[*]} ; do
					[ "$vkb" == "$i" ] && break
					done
				[ "$vkb" == "$i" ] && break ;;
			esac
		done			# der gewählte Buchstabe steht jetzt in Variable $vkb

	echo -e "\e[u\r	_\e[4m$vkb\e[0m_"			# zeigt den gewählten Punkt an

Zum anpassen brauchen nur die gelb markierten Zeilen geändert werden, die Anzahl Menüpunkte passt sich selber an.

LG,

track

Xabot

(Themenstarter)

Anmeldungsdatum:
26. Dezember 2009

Beiträge: 11

Danke

Nein eine Grafische Oberfläche und X steht natürlich nicht zu verfügung. Sonst könnte man ja auch die grafische Oberfläche von Iptables nutzen 😉

Schade das es mit dialog nicht geht

mfg

Xabot

Antworten |