ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > gui von anderem task updaten | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
18.06.2009, 14:54 Uhr AGSzabo Posts: 1663 Nutzer |
hi, ich habe zwei tasks, jeden mit seinem GUI. der eine tasks ist ein modplayer, der zweite ist der GUI-settings task. wenn ich nun im settings task auf USE ode SAVE clicke, soll da GUI vom player auch neu gezeichnet werden. welche möglichkeiten gibts da? greusse, Andreas -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ - Antworten - Zitieren - Direktlink - ] |
18.06.2009, 15:26 Uhr geit Posts: 332 [Ex-Mitglied] |
Dafür wurden DosNotifies erfunden. Der Player legt einen Notify auf die Prefs Datei an und jedesmal wenn sich die Settings ändern, wird der Task automatisch signalisiert und er kann sich updaten. Man könnte das auch über eine Message handlen, aber das ist aufwändiger. Geit [ Dieser Beitrag wurde von geit am 18.06.2009 um 15:27 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
18.06.2009, 15:43 Uhr AGSzabo Posts: 1663 Nutzer |
RKM: "Not all filesystems will support notify: applications should NOT require it." ich denke darüber nach welche variante ich nehmen soll... -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ - Antworten - Zitieren - Direktlink - ] |
18.06.2009, 15:48 Uhr geit Posts: 332 [Ex-Mitglied] |
@AGSzabo: Wenn die Settings in ENV: liegen klappt es auf jeden Fall und soweit ich weis können alle standard Dateisysteme auch Dos Notify. Muß auch keine Message sein. Kann auch ein Signal sein, allerdings kann dann von außen sehr einfach der update Prozess getriggert werden. Wenn du für die GUI MUI benutzt kannst du auch MUIM_PushMethod() benutzen Geit [ Dieser Beitrag wurde von geit am 18.06.2009 um 15:58 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
18.06.2009, 16:54 Uhr AGSzabo Posts: 1663 Nutzer |
"Muß auch keine Message sein. Kann auch ein Signal sein, allerdings kann dann von außen sehr einfach der update Prozess getriggert werden." Das ohne den weg über die prefs scheint mir fuer mich die nächst beste Lösung zu sein. Ob man das triggern kann ist mir wurscht. Also wie geh ich vor? - ich reservier ein sigbit im Zieltask? - der Zieltask geht in WaitPort() ... der wird von Fenstern für Intuimessages genutzt, ein Port für alle Fenster Oder muss ich es bei WaitPort() mit einer Message machen? wie unterscheide ich die Refresh-Messge von idcmp Messages? Ich seh grad dass man wohl zwei Ports machen muss und mit Wait() auf Sigbits der beiden achten soll, dann entscheiden an welchem Port was anliegt, window-IDCMP-Port oder refresh Port. Blos ist es mir noch nicht klar woran ich den unterschied erkenne. -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ Dieser Beitrag wurde von AGSzabo am 18.06.2009 um 18:12 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
18.06.2009, 18:46 Uhr geit Posts: 332 [Ex-Mitglied] |
@AGSzabo: Egal ob Port oder Signal. Die Funktion ist die gleiche. C code:res = Wait( signal1 | signal2 ); if( res & signal1 ) { While( ( msg = GetMsg( idcmpport ) ) { /* do something */ ReplyMsg( msg ); /* do something */ } } if( res & signal2 ) { /* update prefs */ } Es können immer beide Signale gleichzeitig auftreten, daher niemals ohne Maskieren vergleichen. Geit [ Dieser Beitrag wurde von geit am 18.06.2009 um 18:52 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
18.06.2009, 19:42 Uhr AGSzabo Posts: 1663 Nutzer |
ahja danke jetzt wirds mir klar! Das Signal 2 ist das welches ich im Zieltask allokiert habe? Das Dignal 1 sollte das vom idcmpport sein? wie komme ich da ran? Ich habe mir ueberlegt, eigentlich sollt es nicht viel ausmachen wenn ich vom Settings-task aus dem Zieltask sein gui neu zeichne.. oder welche Probleme könnte es damit geben? -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ Dieser Beitrag wurde von AGSzabo am 18.06.2009 um 19:49 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
18.06.2009, 20:13 Uhr geit Posts: 332 [Ex-Mitglied] |
Zitat: Window->UserPort AFAIR Wenn mehr als ein Fenster benötigt wird, ist ein shared UserPort sinnvoller, da alle Fenster dann den gleichen Port nutzen. Dazu solltest du mal hier recherhieren und ein Beispiel suchen. Die RKRMs sind da auch ne Hilfe. Zitat: Ich weis ja nicht wie du "neuzeichnen" definierst, daber generell gibt das Probleme, weil sich Pointer verändern können. Was passiert wenn der GUI Task vom Nutzer geschlosssen wird und das Fenster, das aktuallisiert werden soll nicht mehr existiert? Da gibt es dann tonnenweise neue Probleme dieser Art. Daher sollte immer nur ein Task die GUI behandeln. Die Sache mit dem DOSNotify ist auf jeden Fall 100% narrensicher und man braucht sich über diese Dinge keine gedanken machen. Geit [ - Antworten - Zitieren - Direktlink - ] |
18.06.2009, 20:20 Uhr AGSzabo Posts: 1663 Nutzer |
ich nutze bereits einen shared port fuer alle fenster eines tasks. also muss ich blos dem port sein sigbit auslesen und in der maske setzen mit der ich anschliessend Wait() mache, nachdem ich in der maske auch das fuer den refresh allokierte bit setze. ok soweit? -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ - Antworten - Zitieren - Direktlink - ] |
18.06.2009, 20:36 Uhr geit Posts: 332 [Ex-Mitglied] |
Zitat: Jau Geit [ - Antworten - Zitieren - Direktlink - ] |
18.06.2009, 20:49 Uhr Der_Wanderer Posts: 1229 Nutzer |
Falls du dein Programm mit AREXX austatten willst, würde ich eine AREXX Message nehmen. -- HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
18.06.2009, 20:56 Uhr AGSzabo Posts: 1663 Nutzer |
geit: danke. @Der_Wanderer: das ist interessant aber im moment möchte ich das noch nicht. ich frage mich aber wozu ein gui-system einen arexx port haben könnte. hat mui einen, wozu? -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ - Antworten - Zitieren - Direktlink - ] |
18.06.2009, 21:46 Uhr Holger Posts: 8116 Nutzer |
Zitat:Um eben jene GUI-Anwendungen von Skripten aus fernsteuern zu können. Genau dazu sind ARexx-Ports ja da. Zitat:Jede MUI-Anwendung bekommt standardmäßig einen ARexx-Port. Der Zweck ist derselbe wie oben. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
18.06.2009, 21:54 Uhr AGSzabo Posts: 1663 Nutzer |
> Um eben jene GUI-Anwendungen von Skripten aus fernsteuern zu können. Da fällt mir ausser dem refresh, der ja eher eine interne angelegenheit ist, blos "quit" als mögliches arexx kommando ein. was kann tyischerweise sonst realisiert werden? -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ - Antworten - Zitieren - Direktlink - ] |
18.06.2009, 22:03 Uhr Holger Posts: 8116 Nutzer |
Zitat:Bei einem ModPlayer? PLAY, PAUSE, STOP, LOAD file und wenn Du so etwas wie eine Playlist unterstützt, NEXT, GOTO n, undsoweiterundsofort. Bei MUI kann man natürlicherweise jeden Button und jeden Menüpunkt als Kommando ausführen und für jedes Eingabefeld oder Slider den Wert setzen, usw. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
18.06.2009, 22:32 Uhr slin Posts: 30 Nutzer |
Die Lautstärke regeln, MUTE Ein- und Ausschalten und falls es keine Playliste geben sollte, kann man mit AREXX einfach eine erstellen Sollte das Programm zusätzlich als Commodity laufen, kann/sollte man auch diese Funktionen via AREXX nutzen können. [ - Antworten - Zitieren - Direktlink - ] |
19.06.2009, 09:55 Uhr AGSzabo Posts: 1663 Nutzer |
> "Bei MUI kann man natürlicherweise jeden Button und jeden Menüpunkt als Kommando ausführen und für jedes Eingabefeld oder Slider den Wert setzen, usw." wird der button dann auch optisch gedrückt oder nur seine funktion ausgeführt? muss ich dem button eine ID vergeben um ihn per arexx zu drücken? -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ - Antworten - Zitieren - Direktlink - ] |
19.06.2009, 17:31 Uhr slin Posts: 30 Nutzer |
@AGSzabo: Man möge mich bitte korrigieren, aber es ist bei mir schon 10 Jahre her das ich etwas mit dem Amiga gemacht habe. ARexx spricht nicht direkt die Button_ID an. Du hast den Message-Port wo Du halt zusätzlich die Befehle abfängst, die von ARexx kommen. Du brauchst dazu natürlich einen ARexx-Port. Im Quellcode von Triton, Term, etc.pp. sind bestimmt Beispiele vorhanden, wie man einen ARexx-Port implementiert. Desweiteren gibst Du die Befehle vor, die Dein Programm versteht z.B.: PLAY STOP PAUSE NEXT PREV VOLUME Wie Du nun damit umgehst, wenn der Befehl an Deinem Message-Port anliegt, bleibt Dir überlassen. Also, ob Du den Button auch optisch als gedrückt darstellen möchtest oder lediglich die angeforderte Funktion ausführst. Soweit ich mich entsinne wurde z.B. bei MUI der Slider auf jeden Fall bewegt. Ob nun die Buttons gedrückt wurden, kann ich Dir nicht mehr sagen. IMO ist es auch irrelevant ob die Buttons optisch als gedrückt dargestellt werden. Die Slider sollte man natürlich refreshen. Sieht doof aus, wenn die Lautstärke auf 90 ist und der Slider auf 40 PS: Und bitte den Rückgabewert nicht vergessen, damit man im ARexx-Skript darauf reagieren kann [ - Antworten - Zitieren - Direktlink - ] |
02.07.2009, 14:34 Uhr AGSzabo Posts: 1663 Nutzer |
ok, das mit dem signal funzt jetzt bestens. danke! -- e-uae 39bb2 - A4000d 39bb2 - Cyberst.MK3 060 50mhz 128mb - Cybervis. - Ariadne_II - ide DVD und 320gb HD (nur 128gb) - HD Floppy -- A500 3.1 adide 50mb -- Duron 1600mhz Ubuntu Linux / WinXP -- BenQ FP93G TFT - 1048 like CRT - HP psc1110 [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > gui von anderem task updaten | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |