amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Anfängerfrage: Intuition-Window "leeren" (OS 3.1) [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

08.08.2023, 09:38 Uhr

Solar
Posts: 3680
Nutzer
Ich habe ein Fenster mit diversen (GadTools) Gadgets, das ich gerne leeren und mit neuen Gadgets bestücken würde.

Nach ein bisschen herumsuchen in den Autodocs habe ich es mit

RemoveGList( mywin, mywin->FirstGadget, -1 )

versucht und habe dann ein Fenster, in dem ich die Gadgets zwar nicht mehr anklicken kann, aber noch sehe... also ist das nicht der richtige Weg...

(Ja ich weiß, OS 3.1 und GadTools ist fürchterlich veraltet... aber ich hatte damals keine Gelegenheit etwas für den Amiga zu programmieren, und möchte das jetzt in einer ruhigen Stunde nachholen, aus Nostalgiegründen.)

[ - Antworten - Zitieren - Direktlink - ]

08.08.2023, 10:09 Uhr

thomas
Posts: 7717
Nutzer
GadTools ist das einzige, was gesichert verfügbar ist. Alles andere muss extra installiert werden.

Das Fenster musst du selber löschen:

code:
SetAPen (window->RPort, 0);
RectFill (window->RPort,
	window->BorderLeft,
	window->BorderTop,
	window->Width - window->BorderRight,
	window->Height - window->BorderBottom);



--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

08.08.2023, 12:42 Uhr

Solar
Posts: 3680
Nutzer
Zitat:
Original von thomas:
GadTools ist das einzige, was gesichert verfügbar ist. Alles andere muss extra installiert werden.


Eben, drum. Ich hab' mir als Projekt einen kleinen "Package Manager" vorgenommen, der "die üblichen Verdächtigen" aus dem Aminet u.ä. für einen installiert und konfiguriert. Das soll out-of-the-Box funktionieren, bevor irgendwas anderes (wie MUI) verfügbar ist.

Beruflich bin ich inzwischen bei C# / WPF auf Windows angekommen. Da sehnt man sich nach Feierabend wieder "zurück nach Hause". :D

[ - Antworten - Zitieren - Direktlink - ]

08.08.2023, 15:41 Uhr

Solar
Posts: 3680
Nutzer
Funktioniert super, danke!

[ - Antworten - Zitieren - Direktlink - ]

08.08.2023, 18:37 Uhr

thomas
Posts: 7717
Nutzer
Zitat:
Original von Solar:

RemoveGList( mywin, mywin->FirstGadget, -1 )



Mir ist da nochwas aufgefallen: mit window->FirstGadget musst du aufpassen, da sind nämlich u.U. auch die System-Gadgets dabei. Besser ist es, die glist zu nehmen, die du bei CreateContext angegeben hast und für FreeGadgets benutzt.


--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

08.08.2023, 23:10 Uhr

cgutjahr
Posts: 2782
[Administrator]
Zitat:
Beruflich bin ich inzwischen bei C# / WPF auf Windows angekommen. Da sehnt man sich nach Feierabend wieder "zurück nach Hause". :D
Im dem Fall: Willkommen "daheim" ;)

[ - Antworten - Zitieren - Direktlink - ]

09.08.2023, 16:21 Uhr

Solar
Posts: 3680
Nutzer
Zitat:
Original von thomas:

Besser ist es, die glist zu nehmen, die du bei CreateContext angegeben hast und für FreeGadgets benutzt.


Kann man eigentlich mehrere glist's haben / mit CreateContext initialisieren und dann im Window gegeneinander austauschen (mit AddGList / RemoveGList), oder legt CreateContext die "eine, wahre" glist fest und man muss Gadget-Listen in diese glist hinzufügen / entfernen?

[ - Antworten - Zitieren - Direktlink - ]

09.08.2023, 18:46 Uhr

thomas
Posts: 7717
Nutzer
@Solar:

Klar. Das was bei CreateContext / CreateGadget rauskommt ist vollkommen unabhängig vom Fenster. Erst wenn du es mit WA_Gadgets oder AddGlist dranhängst, ist es "die" glist des Fensters und wenn du sie mit RemoveGList abhängst, ist sie wieder unabhängig.

GadTools ist im Prinzip nur ein hübscher Überbau über die herkömmlichen struct Gadget, struct Image, struct Border usw., die du selber allokieren und ausfüllen musst.



--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

10.08.2023, 11:22 Uhr

Solar
Posts: 3680
Nutzer
Irgendwas mache ich noch verkehrt. Wenn ich die mainMenuGList durch z.B. die helpGList ausgetauscht habe, funktioniert im Fenster selbst alles wie es soll -- aber ich kann das Fenster nicht mehr umherziehen. Erst wenn ich die helpGList wieder durch die mainMenuGList ausgetauscht habe, geht es wieder... clearGadgets / setGadgets sind Funktionen, d.h. der Code zum austauschen der GLists ist jeweils identisch... ich vermute dass ich irgendwo noch einen Verständnisfehler habe und die Dragbar-Funktionalität aus irgendwelchen Gründen an der mainMenuGList "klebt".

Aber das kann ich verschmerzen, der Rest funktioniert 1-A. 8)

[ - Antworten - Zitieren - Direktlink - ]

10.08.2023, 17:49 Uhr

thomas
Posts: 7717
Nutzer
@Solar:

Ja, ich sagte ja schon, dass man mit FirstGadget aufpassen muss, hatte nur nicht mehr alle Details im Kopf.

Nach deiner Beschreibung und meiner wieder aufflammenden Erinnerung ist es wohl so, dass die Gadgets, die du bei OpenWindow angibst in window->FirstGadget landen und Intuition hängt seine System-Gadgets hinten dran.

Wenn du dann den Anfang deiner Liste an RemoveGList übergibst mit Anzahl -1 (also alle), dann hängst du deine Liste ab und die Systemgadgets gleich mit.

Jetzt könntest du anfangen, Gadgets zu zählen, um die richtige Anzahl anzugeben, aber das ist auch mit Hindernissen behaftet. Z.B. entspricht die Anzahl Aufrufe von CreateGadget nicht der späteren Anzahl Gadgets, weil z.B. ein ListView aus mehreren Gadgets zusammengesetzt ist, die alle mitgezählt werden müssen.

Da du ja ohnehin deine "Pages" mit AddGList / RemoveGList verwalten möchtest, wäre mein Vorschlag, das auch bei der ersten Page zu tun. D.h. du öffnest dein Fenster ohne Gadgets und fügst sie dann mit AddGList hinzu und zwar mit der Position -1, also ans Ende der Liste. Dann sind deine Gadgets hinter den System-Gadgets und du kannst deine Liste später gefahrlos wieder abhängen.


--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

11.08.2023, 14:42 Uhr

Solar
Posts: 3680
Nutzer
Ah... dass die Systemgadgets HINTEN angehängt werden war die Information die mir noch fehlte. Nach deinem ersten Kommentar dass FirstGadget nicht gut wäre, dachte ich, die kämen als erstes...

Ich probier' dann mal 'rum. ;-)

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Anfängerfrage: Intuition-Window "leeren" (OS 3.1) [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.