Perl Tk Dialogbox

Perl Tk Dialogbox

am 28.06.2007 20:17:25 von Robert Berghaus

Hallo

Ich benötige eine Dialogbox, welche mit "Ja", "Nein", "Alle" und=20
"Abbrechen" zurechtkommt und benutze zur Zeit Dialog.
Das Verhalten ist aber etwas merkwürdig (imho). Wenn ich mit der=20
Tab-Taste (Cursor geht leider nicht) den Tastaturfokus verschiebe=20
und dann Return drücke, kommt leider nicht die Anwahl, sondern die=20
Default Auswahl.
messageBox sieht da schon viel besser aus, kann aber leider nicht=20
diese 4 Buttons. Gibt es Alternativen, oder muß ich mich daran=20
machen, Dialog mit bind meinen Bedürfnissen anzupassen?

Beim Aufbauen einer Dateiliste per FTP würde ich gerne in einem=20
Status Fenster (mit Button zum Abbrechen) dem Benutzer mitteilen,=20
was gerade passiert. Gibt es dafür schon was oder soll ich ein=20
Toplevel Widget nehmen (ich probiere es zunächst aber mal mit=20
einer Status Zeile).

--=20
Schönen Gruß aus dem Bergischen Land
Robert

Re: Perl Tk Dialogbox

am 28.06.2007 22:09:14 von Ch Lamprecht

Robert Berghaus schrieb:
> Hallo
>
> Ich benötige eine Dialogbox, welche mit "Ja", "Nein", "Alle" und
> "Abbrechen" zurechtkommt und benutze zur Zeit Dialog.
> Das Verhalten ist aber etwas merkwürdig (imho). Wenn ich mit der
> Tab-Taste (Cursor geht leider nicht) den Tastaturfokus verschiebe und
> dann Return drücke, kommt leider nicht die Anwahl, sondern die Default
> Auswahl.
> messageBox sieht da schon viel besser aus, kann aber leider nicht diese
> 4 Buttons. Gibt es Alternativen, oder muß ich mich daran machen, Dialog
> mit bind meinen Bedürfnissen anzupassen?

Hallo,

'Space' würde sich wie erwartet verhalten. Mit Return geht es nicht, weil ein
break fehlt und für das Event zwei bindings aufgerufen werden. Das eine für den
Button und (danach) das für das Dialogwidget als ganzes. Letzteres überschreibt
dann den Rückgabewert wieder mit dem Defaultvalue.
Workaround wäre z.B.:


use warnings;
use strict;
use Tk;
use Tk::Dialog;
package Tk::ModDialog;
our @ISA = 'Tk::Dialog';
Tk::Widget->Construct('ModDialog');
sub Populate{
my ($self,$args) = @_;
my $buttons = $args->{-buttons} ;
$self->SUPER::Populate($args);

for my $b(@$buttons){
my $sw = $self->Subwidget("B_$b");
$sw->bind('',sub {$sw->Invoke;
Tk::break});
}
}
package main;
my $mw = tkinit();
print $mw->ModDialog(-default_button => 'Yes',
-buttons => [qw/Yes No Cancel/])->Show;
MainLoop;



Grüße, Christoph



--
use Tk;use Tk::GraphItems;$c=tkinit->Canvas->pack;push@i,Tk::GraphItems ->
TextBox(text=>$_,canvas=>$c,x=>$x+=70,y=>100)for(Just=>anoth er=>Perl=>Hacker);
Tk::GraphItems->Connector(source=>$i[$_],target=>$i[$_+1])fo r(0..2);
$c->repeat(30,sub{$_->move(0,4*cos($d+=3.16))for(@i)});MainL oop

Re: Perl Tk Dialogbox

am 29.06.2007 17:30:20 von Robert Berghaus

Ch Lamprecht schrieb:
> Robert Berghaus schrieb:
>> Hallo
>>
>> Ich benötige eine Dialogbox, welche mit "Ja", "Nein", "Alle" und=20
>> "Abbrechen" zurechtkommt und benutze zur Zeit Dialog.
>> Das Verhalten ist aber etwas merkwürdig (imho). Wenn ich mit der=20
>> Tab-Taste (Cursor geht leider nicht) den Tastaturfokus verschiebe und =

>> dann Return drücke, kommt leider nicht die Anwahl, sondern die Defau=
lt=20
>> Auswahl.
>> messageBox sieht da schon viel besser aus, kann aber leider nicht=20
>> diese 4 Buttons. Gibt es Alternativen, oder muß ich mich daran mache=
n,=20
>> Dialog mit bind meinen Bedürfnissen anzupassen?
>=20
> Hallo,
>=20
> 'Space' würde sich wie erwartet verhalten. Mit Return geht es nicht, =

> weil ein break fehlt und für das Event zwei bindings aufgerufen werde=
n.=20
> Das eine für den Button und (danach) das für das Dialogwidget als=20
> ganzes. Letzteres überschreibt dann den Rückgabewert wieder mit dem=
=20
> Defaultvalue.
> Workaround wäre z.B.:
>=20
>=20
> use warnings;
> use strict;
> use Tk;
> use Tk::Dialog;
> package Tk::ModDialog;
> our @ISA =3D 'Tk::Dialog';
> Tk::Widget->Construct('ModDialog');
> sub Populate{
> my ($self,$args) =3D @_;
> my $buttons =3D $args->{-buttons} ;
> $self->SUPER::Populate($args);
>=20
> for my $b(@$buttons){
> my $sw =3D $self->Subwidget("B_$b");
> $sw->bind('',sub {$sw->Invoke;
> Tk::break});
> }
> }
> package main;
> my $mw =3D tkinit();
> print $mw->ModDialog(-default_button =3D> 'Yes',
> -buttons =3D> [qw/Yes No Cancel/])->Show;
> MainLoop;
>=20
>=20

Danke, werde ich morgen mal ausprobieren.
Das mit 'space' war mir bekannt, das andere kenne ich auch, finde=20
es aber nicht einleuchtend, vor allem nicht für den Endbenutzer.

--=20
Schönen Gruß aus dem Bergischen Land
Robert

Re: Perl Tk Dialogbox

am 29.06.2007 19:04:17 von Ch Lamprecht

Robert Berghaus schrieb:
> Ch Lamprecht schrieb:
>
>> Robert Berghaus schrieb:
>>

>>> Das Verhalten ist aber etwas merkwürdig (imho). Wenn ich mit der
>>> Tab-Taste (Cursor geht leider nicht) den Tastaturfokus verschiebe und
>>> dann Return drücke, kommt leider nicht die Anwahl, sondern die
>>> Default Auswahl.

>>
>> 'Space' würde sich wie erwartet verhalten. Mit Return geht es nicht,
>> weil ein break fehlt und für das Event zwei bindings aufgerufen
>> werden. Das eine für den Button und (danach) das für das Dialogwidget
>> als ganzes. Letzteres überschreibt dann den Rückgabewert wieder mit
>> dem Defaultvalue.
>> Workaround wäre z.B.:

>
> Danke, werde ich morgen mal ausprobieren.
> Das mit 'space' war mir bekannt, das andere kenne ich auch, finde es
> aber nicht einleuchtend, vor allem nicht für den Endbenutzer.
>

Ich würde das auch eher als Bug sehen,

Christoph

--
use Tk;use Tk::GraphItems;$c=tkinit->Canvas->pack;push@i,Tk::GraphItems ->
TextBox(text=>$_,canvas=>$c,x=>$x+=70,y=>100)for(Just=>anoth er=>Perl=>Hacker);
Tk::GraphItems->Connector(source=>$i[$_],target=>$i[$_+1])fo r(0..2);
$c->repeat(30,sub{$_->move(0,4*cos($d+=3.16))for(@i)});MainL oop

Re: Perl Tk Dialogbox

am 30.06.2007 21:37:12 von Robert Berghaus

Hallo Chrstoph

Ch Lamprecht schrieb:
> Robert Berghaus schrieb:
>> Hallo
>>
>> Ich benötige eine Dialogbox, welche mit "Ja", "Nein", "Alle" und=20
>> "Abbrechen" zurechtkommt und benutze zur Zeit Dialog.
>> Das Verhalten ist aber etwas merkwürdig (imho). Wenn ich mit der=20
>> Tab-Taste (Cursor geht leider nicht) den Tastaturfokus verschiebe und =

>> dann Return drücke, kommt leider nicht die Anwahl, sondern die Defau=
lt=20
>> Auswahl.
>> messageBox sieht da schon viel besser aus, kann aber leider nicht=20
>> diese 4 Buttons. Gibt es Alternativen, oder muß ich mich daran mache=
n,=20
>> Dialog mit bind meinen Bedürfnissen anzupassen?
>=20
> Hallo,
>=20
> 'Space' würde sich wie erwartet verhalten. Mit Return geht es nicht, =

> weil ein break fehlt und für das Event zwei bindings aufgerufen werde=
n.=20
> Das eine für den Button und (danach) das für das Dialogwidget als=20
> ganzes. Letzteres überschreibt dann den Rückgabewert wieder mit dem=
=20
> Defaultvalue.
> Workaround wäre z.B.:
>=20

Ich habe Dein Beispiel mal etwas aufgebohrt. Das ist jetzt das=20
Verhalten, wie ich es gerne hätte.
Vielen Dank für Deine Anregung.

use warnings;
use strict;
use Tk;
use Tk::Dialog;
package Tk::ModDialog;
our @ISA =3D 'Tk::Dialog';
Tk::Widget->Construct('ModDialog');
sub Populate{
my ($self,$args) =3D @_;
my ($buttons, $b, $i, $iPos, @aIndizes, @aWidgets);
$buttons =3D $args->{-buttons};
for $b (@$buttons) {
if ( ($iPos =3D index($b, "~")) >=3D 0) {
push(@aIndizes, $iPos);
$b =3D~ s/~//;
} else {
push(@aIndizes, -1);
}
}
$self->SUPER::Populate($args);

for ($i =3D 0; $i < @$buttons; $i++){
$b =3D $$buttons[$i];
my $sw =3D $aWidgets[$i] =3D $self->Subwidget("B_$b");
$iPos =3D shift(@aIndizes);
if ( $iPos >=3D 0 ) {
$sw->configure(-underline =3D> $iPos);
$self->bind("<" . uc(substr($b, $iPos, 1)) . ">", sub=20
{$sw->Invoke; Tk::break;} );
$self->bind("<" . lc(substr($b, $iPos, 1)) . ">", sub=20
{$sw->Invoke; Tk::break;} );
}
$sw->bind('',sub {$sw->Invoke;
Tk::break});
$sw->bind('', [\&SetzeFokus, $aWidgets[$i-1]] ) if=20
($i);
$aWidgets[$i-1]->bind('', [\&SetzeFokus, $sw]) if=20
($i);
}
$aWidgets[0]->bind('', [\&SetzeFokus,=20
$aWidgets[$#aWidgets]]);
$aWidgets[$#aWidgets]->bind('', [\&SetzeFokus,=20
$aWidgets[0]]);
}

sub SetzeFokus {
my ($self, $w) =3D @_;
$w->focus();
}

package main;
my $mw =3D tkinit();
print $mw->ModDialog(-default_button =3D> 'Ja',
-buttons =3D> [qw/~Ja ~Alle ~Nein A~bbruch/])->Show;
MainLoop;


--=20
Schönen Gruß aus dem Bergischen Land
Robert

Re: Perl Tk Dialogbox

am 01.07.2007 22:51:09 von Slaven Rezic

Ch Lamprecht writes:

> Robert Berghaus schrieb:
> > Ch Lamprecht schrieb:
> >
> >> Robert Berghaus schrieb:
> >>
>
> >>> Das Verhalten ist aber etwas merkwürdig (imho). Wenn ich mit der
> >>> Tab-Taste (Cursor geht leider nicht) den Tastaturfokus verschiebe
> >>> und dann Return drücke, kommt leider nicht die Anwahl, sondern die
> >>> Default Auswahl.
>
> >>
> >> 'Space' würde sich wie erwartet verhalten. Mit Return geht es
> >> nicht, weil ein break fehlt und für das Event zwei bindings
> >> aufgerufen werden. Das eine für den Button und (danach) das für das
> >> Dialogwidget als ganzes. Letzteres überschreibt dann den
> >> Rückgabewert wieder mit dem Defaultvalue.
> >> Workaround wäre z.B.:
>
> > Danke, werde ich morgen mal ausprobieren.
> > Das mit 'space' war mir bekannt, das andere kenne ich auch, finde es
> > aber nicht einleuchtend, vor allem nicht für den Endbenutzer.
> >
>
> Ich würde das auch eher als Bug sehen,
>

Aus heutiger Sicht :-) Tk verwendet das Look'n'Feel von Motif. Ich
habe leider nicht viele Motif-Programme auf meinem System zu laufen
und kann es deshalb nicht beweisen, aber es scheint so, dass es bei
Motif die Regeln gab:

- Buttons werden per Space aktiviert (wenn sie den Tastaturfokus
besitzen)
- Der Default-Button in einem Dialog wird mit Return aktiviert
(auch ohne Tastaturfokus)

(Tastaturfokus und Default-Button werden übrigens beide mit besonderen
Rahmen markiert, und zwar mit unterschiedlich gestalteten: schwarzer
Rahmen bzw. Rahmen mit "sunken"-Relief.)

Das Verhalten von Tk::Dialog ist also richtig, entspricht aber nicht
der heutigen Erwartungshaltung an Dialogen. Ich könnte aber folgendes
ändern: sobald der Tastaturfokus auf einem der aktivierenden Buttons
liegt, wird auch der Default-Button automatisch auf diesen Button
gesetzt. Springt der Tastaturfokus wieder auf ein anderes GUI-Element
zurück, wird wieder der ursprüngliche Button zum Default-Button.
Dieser Verhalten scheint es auch bei "modernen" GUI-Toolkits zu geben.

Gruß,
Slaven

--
Slaven Rezic - slaven rezic de
babybike - routeplanner for cyclists in Berlin
handheld (e.g. Compaq iPAQ with Linux) version of bbbike
http://bbbike.sourceforge.net

Re: Perl Tk Dialogbox

am 01.07.2007 23:17:03 von Ch Lamprecht

Slaven Rezic schrieb:
> Ch Lamprecht writes:
>

>>>>Robert Berghaus schrieb:
>>>>
>>
>>>>>Das Verhalten ist aber etwas merkwürdig (imho). Wenn ich mit der
>>>>>Tab-Taste (Cursor geht leider nicht) den Tastaturfokus verschiebe
>>>>>und dann Return drücke, kommt leider nicht die Anwahl, sondern die
>>>>>Default Auswahl.

>>>
>>
>>Ich würde das auch eher als Bug sehen,
>>
>
>
> Aus heutiger Sicht :-) Tk verwendet das Look'n'Feel von Motif. Ich
> habe leider nicht viele Motif-Programme auf meinem System zu laufen
> und kann es deshalb nicht beweisen, aber es scheint so, dass es bei
> Motif die Regeln gab:
>
> - Buttons werden per Space aktiviert (wenn sie den Tastaturfokus
> besitzen)
> - Der Default-Button in einem Dialog wird mit Return aktiviert
> (auch ohne Tastaturfokus)
>
> (Tastaturfokus und Default-Button werden übrigens beide mit besonderen
> Rahmen markiert, und zwar mit unterschiedlich gestalteten: schwarzer
> Rahmen bzw. Rahmen mit "sunken"-Relief.)

Das ist wahrscheinlich das Verwirrende: Unter Windows ist dies nicht der Fall.
Tk::DialogBox spart die gesonderte Formatierung des Default Buttons hier aus
(line 56 in Tk::DialogBox). Daher ist nur der Button markiert, der den Focus
trägt, aber der Default Button setzt sich trotzdem durch.

>
> Das Verhalten von Tk::Dialog ist also richtig, entspricht aber nicht
> der heutigen Erwartungshaltung an Dialogen. Ich könnte aber folgendes
> ändern: sobald der Tastaturfokus auf einem der aktivierenden Buttons
> liegt, wird auch der Default-Button automatisch auf diesen Button
> gesetzt. Springt der Tastaturfokus wieder auf ein anderes GUI-Element
> zurück, wird wieder der ursprüngliche Button zum Default-Button.
> Dieser Verhalten scheint es auch bei "modernen" GUI-Toolkits zu geben.

Bei GNOME und Win ist es so und ich glaube es wäre für die allermeisten Benutzer
eine Erleichterung.

Grüße, Christoph


--
use Tk;use Tk::GraphItems;$c=tkinit->Canvas->pack;push@i,Tk::GraphItems ->
TextBox(text=>$_,canvas=>$c,x=>$x+=70,y=>100)for(Just=>anoth er=>Perl=>Hacker);
Tk::GraphItems->Connector(source=>$i[$_],target=>$i[$_+1])fo r(0..2);
$c->repeat(30,sub{$_->move(0,4*cos($d+=3.16))for(@i)});MainL oop

Re: Perl Tk Dialogbox

am 02.07.2007 14:42:28 von KWittrock

"Slaven Rezic" schrieb im Newsbeitrag
news:874pknsv9e.fsf@biokovo-amd64.herceg.de...
> Ch Lamprecht writes:
>
>> Robert Berghaus schrieb:
>> > Ch Lamprecht schrieb:
>> >
>> >> Robert Berghaus schrieb:
>> >>
>>
>> >>> Das Verhalten ist aber etwas merkwürdig (imho). Wenn ich mit der
>> >>> Tab-Taste (Cursor geht leider nicht) den Tastaturfokus verschiebe
>> >>> und dann Return drücke, kommt leider nicht die Anwahl, sondern die
>> >>> Default Auswahl.
>>
>> >>
>> >> 'Space' würde sich wie erwartet verhalten. Mit Return geht es
>> >> nicht, weil ein break fehlt und für das Event zwei bindings
>> >> aufgerufen werden. Das eine für den Button und (danach) das für das
>> >> Dialogwidget als ganzes. Letzteres überschreibt dann den
>> >> Rückgabewert wieder mit dem Defaultvalue.
>> >> Workaround wäre z.B.:
>>
>> > Danke, werde ich morgen mal ausprobieren.
>> > Das mit 'space' war mir bekannt, das andere kenne ich auch, finde es
>> > aber nicht einleuchtend, vor allem nicht für den Endbenutzer.
>> >
>>
>> Ich würde das auch eher als Bug sehen,
>>
>
> Aus heutiger Sicht :-) Tk verwendet das Look'n'Feel von Motif. Ich
> habe leider nicht viele Motif-Programme auf meinem System zu laufen
> und kann es deshalb nicht beweisen, aber es scheint so, dass es bei
> Motif die Regeln gab:
>
> - Buttons werden per Space aktiviert (wenn sie den Tastaturfokus
> besitzen)
> - Der Default-Button in einem Dialog wird mit Return aktiviert
> (auch ohne Tastaturfokus)

Nach meiner Erinnerung habe ich Buttons auch unter Motif immer mit Return
aktiviert. Ist aber zu lange her, ich kann mich täuschen.

>
> (Tastaturfokus und Default-Button werden übrigens beide mit besonderen
> Rahmen markiert, und zwar mit unterschiedlich gestalteten: schwarzer
> Rahmen bzw. Rahmen mit "sunken"-Relief.)
>
> Das Verhalten von Tk::Dialog ist also richtig, entspricht aber nicht
> der heutigen Erwartungshaltung an Dialogen. Ich könnte aber folgendes
> ändern: sobald der Tastaturfokus auf einem der aktivierenden Buttons
> liegt, wird auch der Default-Button automatisch auf diesen Button
> gesetzt. Springt der Tastaturfokus wieder auf ein anderes GUI-Element
> zurück, wird wieder der ursprüngliche Button zum Default-Button.
> Dieser Verhalten scheint es auch bei "modernen" GUI-Toolkits zu geben.

..... auf einem der aktivierenden Buttons .... : Imho sollten sich auch
Buttons, die der User in den oberen Teil des Fensters gesetzt hat,
vernünftig verhalten.

Vielleicht ist es etwas einfacher, den Default-Button nicht umzusetzen,
sondern temporär undefiniert zu machen.

Wenn du Tk::DialogBox eh schon in der Mangel hast, kannst vielleicht auch
mal nachsehen, ob folgende alte Notiz von mir noch zutrifft:
Wenn es einen Default-Button gibt, so wird dieser durch Return dreimal
aktiviert. Das $b->bind('' für die Buttons ist überflüssig und
bewirkt eine zusätzliche Aktivierung des Buttons.

Gruß

Klaus

Re: Perl Tk Dialogbox

am 02.07.2007 14:44:00 von Robert Berghaus

Slaven Rezic schrieb:
> Ch Lamprecht writes:
>=20
>> Robert Berghaus schrieb:
>>> Ch Lamprecht schrieb:
>>>
>>>> Robert Berghaus schrieb:
>>>>
>>>>> Das Verhalten ist aber etwas merkwürdig (imho). Wenn ich mit der
>>>>> Tab-Taste (Cursor geht leider nicht) den Tastaturfokus verschiebe
>>>>> und dann Return drücke, kommt leider nicht die Anwahl, sondern di=
e
>>>>> Default Auswahl.
>>>> 'Space' würde sich wie erwartet verhalten. Mit Return geht es
>>>> nicht, weil ein break fehlt und für das Event zwei bindings
>>>> aufgerufen werden. Das eine für den Button und (danach) das für =
das
>>>> Dialogwidget als ganzes. Letzteres überschreibt dann den
>>>> Rückgabewert wieder mit dem Defaultvalue.
>>>> Workaround wäre z.B.:
>>> Danke, werde ich morgen mal ausprobieren.
>>> Das mit 'space' war mir bekannt, das andere kenne ich auch, finde es
>>> aber nicht einleuchtend, vor allem nicht für den Endbenutzer.
>>>
>> Ich würde das auch eher als Bug sehen,
>>
>=20
> Aus heutiger Sicht :-) Tk verwendet das Look'n'Feel von Motif. Ich
> habe leider nicht viele Motif-Programme auf meinem System zu laufen
> und kann es deshalb nicht beweisen, aber es scheint so, dass es bei
> Motif die Regeln gab:
>=20
> - Buttons werden per Space aktiviert (wenn sie den Tastaturfokus
> besitzen)=20
> - Der Default-Button in einem Dialog wird mit Return aktiviert
> (auch ohne Tastaturfokus)
>=20

Ich kenne das von der GUI Beschreibung der IBM für den OS2=20
Presentation Manager für OS2 1.1.

> (Tastaturfokus und Default-Button werden übrigens beide mit besondere=
n
> Rahmen markiert, und zwar mit unterschiedlich gestalteten: schwarzer
> Rahmen bzw. Rahmen mit "sunken"-Relief.)
>=20
> Das Verhalten von Tk::Dialog ist also richtig, entspricht aber nicht
> der heutigen Erwartungshaltung an Dialogen. Ich könnte aber folgendes=

> ändern: sobald der Tastaturfokus auf einem der aktivierenden Buttons
> liegt, wird auch der Default-Button automatisch auf diesen Button
> gesetzt. Springt der Tastaturfokus wieder auf ein anderes GUI-Element
> zurück, wird wieder der ursprüngliche Button zum Default-Button.
> Dieser Verhalten scheint es auch bei "modernen" GUI-Toolkits zu geben.

Das wäre gut. Es muß aber auch erkennbar sein, welches der Default=20
Button ist.

--=20
Schönen Gruß aus dem Bergischen Land
Robert

Re: Perl Tk Dialogbox

am 02.07.2007 19:50:54 von Robert Berghaus

Hallo Klaus

K. Wittrock schrieb:
>=20
> "Robert Berghaus" schrieb im Newsbeitrag=20
> news:c1.2bm.35nrBt$LTL@TPA31p-os2.robe-edv.lokal...
>> Hallo
>>
>> Ich benötige eine Dialogbox, welche mit "Ja", "Nein", "Alle" und=20
>> "Abbrechen" zurechtkommt und benutze zur Zeit Dialog.
>> Das Verhalten ist aber etwas merkwürdig (imho). Wenn ich mit der=20
>> Tab-Taste (Cursor geht leider nicht) den Tastaturfokus verschiebe und =

>> dann Return drücke, kommt leider nicht die Anwahl, sondern die Defau=
lt=20
>> Auswahl.
>> messageBox sieht da schon viel besser aus, kann aber leider nicht=20
>> diese 4 Buttons. Gibt es Alternativen, oder muß ich mich daran mache=
n,=20
>> Dialog mit bind meinen Bedürfnissen anzupassen?
>=20
> Wenn du eh keinen Wert auf den komischen Default-Button legst, füge d=
ie=20
> Option "-default_button =3D> 'none'" ein. Dann bist du den Ärger los.=

>=20

Und mit dem Gerüst vom Christoph habe ich mir schon ein schönes=20
Dialogfenster gezimmert.

>>
>> Beim Aufbauen einer Dateiliste per FTP würde ich gerne in einem Stat=
us=20
>> Fenster (mit Button zum Abbrechen) dem Benutzer mitteilen, was gerade =

>> passiert. Gibt es dafür schon was oder soll ich ein Toplevel Widget =

>> nehmen (ich probiere es zunächst aber mal mit einer Status Zeile).
>=20
> Vielleicht hilft dir das beiliegnde Progrämmchen weiter. Den=20
> Abbrechen-Button müsstest du noch hinzufügen. Mit dem Schließen-B=
utton=20
> der Titelleiste kannst du das Dialogfenster entfernen, ohne dass das=20
> aufrufende Skript beeinträchtigt wird.

Danke, das sieht sehr vielversprechend aus.

--=20
Schönen Gruß aus dem Bergischen Land
Robert

Re: Perl Tk Dialogbox

am 03.07.2007 18:14:04 von Robert Berghaus

Hallo Klaus

K. Wittrock schrieb:
>=20
> "Robert Berghaus" schrieb im Newsbeitrag=20
> news:c1.2bm.35nrBt$LTL@TPA31p-os2.robe-edv.lokal...
>> Hallo
>>
[...]
>> Beim Aufbauen einer Dateiliste per FTP würde ich gerne in einem Stat=
us=20
>> Fenster (mit Button zum Abbrechen) dem Benutzer mitteilen, was gerade =

>> passiert. Gibt es dafür schon was oder soll ich ein Toplevel Widget =

>> nehmen (ich probiere es zunächst aber mal mit einer Status Zeile).
>=20
> Vielleicht hilft dir das beiliegnde Progrämmchen weiter. Den=20
> Abbrechen-Button müsstest du noch hinzufügen. Mit dem Schließen-B=
utton=20
> der Titelleiste kannst du das Dialogfenster entfernen, ohne dass das=20
> aufrufende Skript beeinträchtigt wird.

Das Skript sah ja gut aus, aber wo finde ich das package=20
infoWindow? Auf CPAN habe ich noch nichts gefunden.
Im Buch "Mastering Perl/Tk" wird auch ein ProgressBar vorgestellt.=20
Das ist vielleicht auch noch was.
Das große Problem ist, daß die SPS (Speicher - Programmierbare -=20
Steuerung) bzw. der FTP Server in der SPS nach jeweils etwa 45=20
Dateien Pause macht. Hier muß ich beim Hersteller mal nachfragen,=20
ob ich nach jeder Datei eine Wartezeit einbauen soll.

--=20
Schönen Gruß aus dem Bergischen Land
Robert

Re: Perl Tk Dialogbox

am 07.07.2007 15:52:58 von Robert Berghaus

Hallo Klaus

K. Wittrock schrieb:
>=20
> "Robert Berghaus" schrieb im Newsbeitrag=20
> news:c1.2bm.35rsDD$LTt@TPA31p-os2.robe-edv.lokal...
>> Hallo Klaus
>>
>> K. Wittrock schrieb:
>>>
>>> "Robert Berghaus" schrieb im Newsbeitrag=20
>>> news:c1.2bm.35nrBt$LTL@TPA31p-os2.robe-edv.lokal...
>>>> Hallo
>>>>
>> [...]
>>>> Beim Aufbauen einer Dateiliste per FTP würde ich gerne in einem=20
>>>> Status Fenster (mit Button zum Abbrechen) dem Benutzer mitteilen,=20
>>>> was gerade passiert. Gibt es dafür schon was oder soll ich ein=20
>>>> Toplevel Widget nehmen (ich probiere es zunächst aber mal mit eine=
r=20
>>>> Status Zeile).
>>>
>>> Vielleicht hilft dir das beiliegnde Progrämmchen weiter. Den=20
>>> Abbrechen-Button müsstest du noch hinzufügen. Mit dem=20
>>> Schließen-Button der Titelleiste kannst du das Dialogfenster=20
>>> entfernen, ohne dass das aufrufende Skript beeinträchtigt wird.
>>
>> Das Skript sah ja gut aus, aber wo finde ich das package infoWindow?=20
>> Auf CPAN habe ich noch nichts gefunden.
>=20
> Hoppla. Ich habe mir erst mal verwundert die Augen gerieben, dann=20
> getestet, schließlich in mein Posting geguckt. Da habe ich dir das=20
> Testskript statt der Zip-Datei geschickt. Tut mir leid. Deine Antwort=20
> habe ich leider erst heute entdeckt.
>=20

Ich habe mir erstmal mit der Statuszeile geholfen (für irgendwas=20
muß die ja gut sein ;-) ).
Das Programm ist jetzt in Begutachtung und wenn ich da weiter=20
machen soll (hoffe ich doch), so werde ich das ganze neu designen.=20
Nach allem, was ich in den letzten Monaten während der Arbeit und=20
hier im Forum gelernt habe, sollte die nächste Version wesentlich=20
schneller fertig und vor allem intern viel besser aufgebaut sein.

>> Im Buch "Mastering Perl/Tk" wird auch ein ProgressBar vorgestellt. Das=
=20
>> ist vielleicht auch noch was.
>=20
> Ja, solange du keine Texte anzeigen willst.

Bei FTP Kommunikation ist mir Text lieber, insbesondere wenn der=20
Anwender falsche Daten eingegeben hat (nicht vorhandene IP-Adresse=20
..).

--=20
Schönen Gruß aus dem Bergischen Land und vielen Dank an alle, die=20
mir hier geholfen haben
Robert