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

amiga-news.de Forum > Programmierung > MUI Cycle Object: Einträge hinzufügen [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

03.09.2006, 16:05 Uhr

Mazze
Posts: 263
Nutzer
Beim MUI Cycle gadget kann man MUIA_Cycle_Entries nur beim Erzeugen des Gadgets anwenden. Wie kann man zur Laufzeit Einträge hinzufügen? Oder gibt es eine andere MUI-Klasse, die man dafür verwenden sollte?

--
AROS - Because every rose has its dorns.
Meine Homepage

[ - Antworten - Zitieren - Direktlink - ]

03.09.2006, 16:22 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
Zitat:
Original von Mazze:
Beim MUI Cycle gadget kann man MUIA_Cycle_Entries nur beim Erzeugen des Gadgets anwenden. Wie kann man zur Laufzeit Einträge hinzufügen? Oder gibt es eine andere MUI-Klasse, die man dafür verwenden sollte?


Wie in der Doku angegeben gibt's für MUIA_Cycle_Entries nur das Attribut I also das geht nicht, eine entsprechende Alternative kenn ich nicht. Das einzige was Ich vorschlagen könnte wäre das Object mittels OM_REMMEMBER zu entfernen und ein neues mittels OM_ADDMEMBER hinzuzufügen.

Was nicht anzuraten ist, MUI kopiert nicht die Einträge die du mittels Cycle_Entries übergibst (Ich wüßte nicht warum das getan werden müsste), dann könntest du einfach die Liste ändern, ohne MUI darüber in Kentniss zu setzen. Aber empfehlenswert ist das nicht.

Da du Unter AROS programmierst, ich habs ausprobiert das ging, aber Ich würde mich an Georg wenden der kann da sicherlich genaueres drüber sagen.




[ - Antworten - Zitieren - Direktlink - ]

03.09.2006, 18:29 Uhr

Mazze
Posts: 263
Nutzer
Zitat:
Original von DariusBrewka:
Zitat:
Original von Mazze:
Beim MUI Cycle gadget kann man MUIA_Cycle_Entries nur beim Erzeugen des Gadgets anwenden. Wie kann man zur Laufzeit Einträge hinzufügen? Oder gibt es eine andere MUI-Klasse, die man dafür verwenden sollte?


Wie in der Doku angegeben gibt's für MUIA_Cycle_Entries nur das Attribut I also das geht nicht, eine entsprechende Alternative kenn ich nicht. Das einzige was Ich vorschlagen könnte wäre das Object mittels OM_REMMEMBER zu entfernen und ein neues mittels OM_ADDMEMBER hinzuzufügen.


Problem dabei ist, dass man Objekte nur bei geschlossenem Fenster hinzufügen oder entfernen kann.

Zitat:
Was nicht anzuraten ist, MUI kopiert nicht die Einträge die du mittels Cycle_Entries übergibst (Ich wüßte nicht warum das getan werden müsste), dann könntest du einfach die Liste ändern, ohne MUI darüber in Kentniss zu setzen. Aber empfehlenswert ist das nicht.

Zune setzt das Cycle gadget aus Text-Objekten zusammen. Dabei werden die Strings kopiert.

Zitat:
Da du Unter AROS programmierst, ich habs ausprobiert das ging, aber Ich würde mich an Georg wenden der kann da sicherlich genaueres drüber sagen.

Ich suche eine Lösung, die sowohl unter MUI als auch unter Zune funktioniert. Irgendwann möchte ich mein Lua-MUI-Binding nach AmigaOS portieren. Hintergrund für meine Frage ist folgender Thread: Clickme
--
AROS - Because every rose has its dorns.
Meine Homepage

[ - Antworten - Zitieren - Direktlink - ]

03.09.2006, 19:27 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
Zitat:
Original von Mazze:
Problem dabei ist, dass man Objekte nur bei geschlossenem Fenster hinzufügen oder entfernen kann.


Wo steht das denn? also wenn das bei ZUNE nicht geht, dann ist bei Zune was Kaputt, denn ich bin 95% Sicher dass das geht. Im der MUI Doku steht auch nichts davon dass das Fenster geöffnet sein Muß, nur dass das Object an welches du ein Neues Element einfügen willst entweder vom Type ApplicationObject oder Group sein muß, aber das sollte sowieso Klar sein.

Zitat:
Zune setzt das Cycle gadget aus Text-Objekten zusammen. Dabei werden die Strings kopiert.

hab nochmals im ZUNE source nachgeschaut, du hast 90% Recht, nur die Popup-Liste wird direkt aus den Entry Einträgen übernommen, aber das Cycle-Object selber besteht aus einer PageGroup, die TextObject Einträge hat, also wird das so nicht Funktionieren.

Nachtrag:

In der Anleitung steht, soweit Ich das verstanden habe, dass man keine Fenster öffnen sollte wenn Gruppen ohne Inhalt existieren.

[ Dieser Beitrag wurde von DariusBrewka am 03.09.2006 um 19:38 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

03.09.2006, 19:43 Uhr

Mazze
Posts: 263
Nutzer
Zitat:
Original von DariusBrewka:
Zitat:
Original von Mazze:
Problem dabei ist, dass man Objekte nur bei geschlossenem Fenster hinzufügen oder entfernen kann.


Wo steht das denn? also wenn das bei ZUNE nicht geht, dann ist bei Zune was Kaputt, denn ich bin 95% Sicher dass das geht. Im der MUI Doku steht auch nichts davon dass das Fenster geöffnet sein Muß, nur dass das Object an welches du ein Neues Element einfügen willst entweder vom Type ApplicationObject oder Group sein muß, aber das sollte sowieso Klar sein.


Aus dem muidev.guide:

Dynamic Groups
==============

In the same way you can add windows to an application after its
creation, you can add elements to already existing group objects. This
may be useful if a group contains many similar children or if the
number of children is not known in the beginning.

You can add new elements to groups or delete them again, but the
window that contains this group must not be open!



Ich habe es ausprobiert. Wenn ich unter Zune ein Objekt bei offenem Fenster wegnehme, ist das Layout kaputt.

--
AROS - Because every rose has its dorns.
Meine Homepage

[ Dieser Beitrag wurde von Mazze am 03.09.2006 um 19:46 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

03.09.2006, 19:53 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von DariusBrewka:
Zitat:
Original von Mazze:
Problem dabei ist, dass man Objekte nur bei geschlossenem Fenster hinzufügen oder entfernen kann.

Wo steht das denn? also wenn das bei ZUNE nicht geht, dann ist bei Zune was Kaputt, denn ich bin 95% Sicher dass das geht.

Wenn nicht explizit dokumentiert ist, dass ein Objekt solche Manipulationen vor race-conditions durch den Zugriff mehrerer tasks gleichzeitig schützt, sollte man davon ausgehen, dass es ein Problem erzeugen wird.

Das heisst natürlich nicht, dass man unbedingt das Fenster schließen und wieder öffnen muss. Aushängen, manipulieren und wieder einhängen der Gadgets sollte normalerweise reichen. Davon bekommt der Benutzer dann auch nichts mit.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

03.09.2006, 19:55 Uhr

DariusBrewka
Posts: 899
[Benutzer gesperrt]
Zitat:
Original von Mazze:
Ich habe es ausprobiert. Wenn ich unter Zune ein Objekt bei geschlossenem Fenster wegnehme, ist das Layout kaputt.


Hmm, wie unter Nachtrag oben aufgeführt, habe ich das so Verstanden dass ein Fenster geschlossen sein Muß, wenn die Gruppe keine Elemente enthält (so Interpretiere Ich die Kommentare beim Beispiel aus besagter Doku), also mal versuchen ohne Leere Elemente auszukommen. Und Ich würde auch Empfehlen es auch unter MUI also nicht ZUNE auszuprobieren, da ZUNE mit dem Layout (z.B. MUIA_ShowMe BUG) Probleme hat.

Aber eine Alternative könnte man dennoch wählen, wenn du weißt welche Einträge da sein sollen, dann könntest du mehrere CycleObjects in eine Pagegroup packen und dann einfach umschalten.


[ - Antworten - Zitieren - Direktlink - ]

03.09.2006, 20:04 Uhr

Georg
Posts: 107
Nutzer
@Mazze:

Geschützt innerhalb von Group_InitChange/Group_ExitChange (cycle ist von group abgeleitet) müsste OM_ADDMEMBER + co. eigentlich gehen, auch wenn das Fenster offen ist.

Alternativ kann man sich auch ne eigene cycle Klasse basteln. Basierend auf dem Zune cycle class Source. Etwas komplizierter ist ja eigentlich nur der Popup-Menu/Fenster Code, was man aber ohne große Änderung übernehmen können sollte.


[ - Antworten - Zitieren - Direktlink - ]

03.09.2006, 20:19 Uhr

Mazze
Posts: 263
Nutzer
Zitat:
Original von Georg:
@Mazze:

Geschützt innerhalb von Group_InitChange/Group_ExitChange (cycle ist von group abgeleitet) müsste OM_ADDMEMBER + co. eigentlich gehen, auch wenn das Fenster offen ist.


Jaaa, das ist es :itchy: :itchy: :itchy: :itchy:
--
AROS - Because every rose has its dorns.
Meine Homepage

[ - Antworten - Zitieren - Direktlink - ]

03.09.2006, 20:22 Uhr

Mazze
Posts: 263
Nutzer
Zitat:
Original von DariusBrewka:
Zitat:
Original von Mazze:
Ich habe es ausprobiert. Wenn ich unter Zune ein Objekt bei geschlossenem Fenster wegnehme, ist das Layout kaputt.


Hmm, wie unter Nachtrag oben aufgeführt, habe ich das so Verstanden dass ein Fenster geschlossen sein Muß, wenn die Gruppe keine Elemente enthält (so Interpretiere Ich die Kommentare beim Beispiel aus besagter Doku),


Du beziehst Dich wahrscheinlich auf diese Stelle aus dem Guide:

Of course you may (if the window is closed) remove elements from
groups. Please note that window objects containing empty groups must
not be opened.

--
AROS - Because every rose has its dorns.
Meine Homepage

[ - Antworten - Zitieren - Direktlink - ]

15.09.2006, 12:10 Uhr

geit
Posts: 332
[Ex-Mitglied]
Danke auch von meiner Seite.

Ich hatte gerade genau das selbe Problem mit dem Karteneditor von ValiantVision.

Hat mir viel Zeit und Nachdenken erspart. Danke!

Anmerken sollte man vielleicht noch, dass es laut Style Guide nicht gemacht werden sollte, weil man für den Benutzer unsichtbar neue Optionen hinzufügt.

IMHO kann man aber die Ausnahme geltend machen, dass man eine kleine Liste hat und nur bei "Neu" durch den Benutzer einen Eintrag zufügt und auch gleich auf diesen Eintrag wechselt.

Andersherum sollte eine Checkbox z.B. niemals eine zusätzliche Option zu einem Cycle hinzufügen oder entfernen, weil das verwirrt und der Benutzer die neue Option schlicht nicht findet.

Geit

[ Dieser Beitrag wurde von geit am 15.09.2006 um 12:11 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

15.09.2006, 14:03 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von geit:
Andersherum sollte eine Checkbox z.B. niemals eine zusätzliche Option zu einem Cycle hinzufügen oder entfernen, weil das verwirrt und der Benutzer die neue Option schlicht nicht findet.

Ich denke, da kann man die gleiche Ausnahme anbringen, die Du vorher genannt hast. Wenn es nur genau eine neue Option gibt, und diese nicht nur hinzugefügt, sondern auch sofort ausgewählt wird, ist sie auch sichtbar.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

16.09.2006, 13:35 Uhr

geit
Posts: 332
[Ex-Mitglied]
Zitat:
Original von Holger:
Zitat:
Original von geit:
Andersherum sollte eine Checkbox z.B. niemals eine zusätzliche Option zu einem Cycle hinzufügen oder entfernen, weil das verwirrt und der Benutzer die neue Option schlicht nicht findet.

Ich denke, da kann man die gleiche Ausnahme anbringen, die Du vorher genannt hast. Wenn es nur genau eine neue Option gibt, und diese nicht nur hinzugefügt, sondern auch sofort ausgewählt wird, ist sie auch sichtbar.

Das stimmt natürlich.

Kritisch wird es in jedem Fall beim Weglassen.

Bei einer Listenersetzenden Funktion des Cycles hat der Nutzer meistens "entfernen" oder so gedrückt, aber bei dem CheckBox->Cycle Beispiel hat man nicht nur das Problem, das die Option unsichtbar entfernt wird, sondern auch noch, dass das Programm eine Option für den Benutzer wählen muß, wenn die zu entfernende Option gerade angewählt war.

Generell sollte man sehr vorsichtig sein, um nicht "unverständlich" zu werden.

Wenn man z.B. aus dem Cycle "Tiere", den "Elefanten" rausnimmt, dann kann man im Cycle "Besonderheiten" auch den "Rüssel" rausnehmen, wenn in "Tier" nicht noch z.b. "Ameisenbär" drin steht. Den Zusammenhang kennt eben jeder. :)
Sobald man aber exotischere Tiere nimmt, die man nicht unbedingt genau kennt, oder die einen sogenannten Rüssel haben, der aber nicht im Ansatz dem eines Elefanten ähnelt, wird es wieder kompliziert.

Geit

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > MUI Cycle Object: Einträge hinzufügen [ - Suche - Neue Beiträge - Registrieren - Login - ]


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