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

amiga-news.de Forum > Programmierung > Direkte Gadgetabfrage unter MUI [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

20.09.2004, 12:30 Uhr

geit
Posts: 332
[Ex-Mitglied]


Direkte Gadgetabfrage unter MUI

Ich benötige unter MUI die Möglichkeit die Gadgets wie bei Reaction und GadTools abzufragen.

Muß ich jetzt wirklich für jeden Button einzeln ein Notify einrichten, damit ich die GadgetID zurück bekomme?

Das erscheint mir mehr als nur umständlich? Gibt es da andere Wege?

Nur für den Fall, dass ich mich undeutlich ausgedrückt habe, hier ein Beispiel, wie das laufen soll:

switch ( gadgetid) {

case ButtonA:
...
break;
case ButtonB:
...
break;
}

Ein weiteres Problem, ist das ich die MUIA_ObjectID z.B. bei Buttons gar nicht bei der Definition setzen kann.
SimpleButton() bietet nicht die Möglichkeit und sobald ich via

Child, TextObject, ButtonFrame,
MUIA_Text_Contents, "Ha_llo"),
MUIA_InputMode , MUIV_InputMode_RelVerify,
MUIA_Background , MUII_ButtonBack,
End,

einen Button definieren will, habe ich das Problem, dass die "_" Tasten nicht mehr geprüft werden.

Klar kann man die gesondert angeben, aber das ist ein gigantischer Aufwand, da ich die Strings erst parsen und umkopieren müßte. Im Catalog liegen die "Ha_llo" vor. Also müßte ich den String kopieren und den Unterstrich entfernen und das Zeichen nach dem "_" gesondert an das Gadget übergeben, um die Tastaturunterstützung zu aktivieren. Das ist nicht akzeptabel.

Der Grund warum ich das so machen will ist, der, dass ich keine Lust habe meine Programme komplett zweimal zu schreiben. Daher muß ich Reaction und MUI auf einen Nenner bringen.

Ich bin für jede Idee offen!

Guido Mersmann


[ - Antworten - Zitieren - Direktlink - ]

20.09.2004, 18:01 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
Also, du kannst ganz einfach eine Funktion definieren, welche ein Object zurückgibt.

bsp:
code:
Object *NewButton(xyz) {
 Object *obj;
 obj=Button(xyz);
 if (obj) {
   DoMethod(...);
 }
 return obj;
}


so kannst du direkt bei der definition eine ID angeben und auch das andere was du brauchst. Jedenfalls geht das bei mir und du kannst einfach statt Button() NewButton() in die Definition angeben.

code:
Object *NewButton(...,ID)
 Object *obj;

 obj = SimpleButton(...);
 if (obj) {
   DoMethod(...., app, 2, MUIM_Application_ReturnID, ID);
 }
 return obj;
}
...



Object app* = ApplicationObject,...
 Child, maingrouo = VGroup,
 End,
End;

 if (app) {
    Object *display = HGroup,
                       Child, NewButton(..., BUTTON_ID_0),
                       Child, NewButton(..., BUTTON_ID_1),
                       ...
                      End;
   }
   if (display) DoMethod(maingroup, OM_ADDMEMBER, display); 
 }


allerdings ist es notwendig zuerst ein ApplicationObject zu erstellen und die ganze definition mit den Gadgets usw. später per OM_ADDMEMBER zuzufügen, weil man das appobject bei DoMethod() angeben muss (denke ich).

da meines wissens nach alle Strings die du MUI übergibst kopiert werden, kannst du in der Funktion auch den string (auf den Stack) parsen und per MUIA_ControlChar die Taste zum aktivieren definieren.

vieleicht hilft's dir ja.

[ Dieser Beitrag wurde von DariusBrewka am 20.09.2004 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

20.09.2004, 19:58 Uhr

geit
Posts: 332
[Ex-Mitglied]
Hallo

> so kannst du direkt bei der definition eine ID angeben und auch das andere was du brauchst. Jedenfalls geht das bei mir und du kannst einfach statt Button() NewButton() in die Definition angeben.

Da hab ich jetzt nur eine Frage! Warum? Warum ist mir das nicht gleich eingefallen! Besten Dank! Einfach und ohne zusätzlichen Aufwand beim Designen der Fenster!

> allerdings ist es notwendig zuerst ein ApplicationObject zu erstellen und die ganze definition mit den Gadgets usw. später per OM_ADDMEMBER zuzufügen, weil man das appobject bei DoMethod() angeben muss (denke ich).

Ja, ist richtig, aber auch das paßt in meine Vorgabe, da die Fenster erst beim Öffnen erzeugt werden sollen und ohnehin schon mit OM_ADDMEMBER drangepappt wurden.

> da meines wissens nach alle Strings die du MUI übergibst kopiert werden, kannst du in der Funktion auch den string (auf den Stack) parsen und per MUIA_ControlChar die Taste zum aktivieren definieren.

Das wiederrum ist jetzt komplett überflüssig, da das SimpleButton() Macro ja ein MUIO_BUTTON erzeugt und somit die "_" ausgewertet werden. Dank der obigen Lösung kann ich das ja weiterhin benutzen.

Ich hatte nur keinen Bock für jedes Gadget unten einen eigenen DoMethod() Aufruf machen zu müssen, weil das wieder unnötiges Fehlerpotential darstellt.

Danke für den Denkanstoss!

Guido Mersmann

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Direkte Gadgetabfrage unter MUI [ - Suche - Neue Beiträge - Registrieren - Login - ]


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