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

amiga-news.de Forum > Programmierung > Jetzt nochmal das Notify [ - Suche - Neue Beiträge - Registrieren - Login - ]

1 -2- [ - Beitrag schreiben - ]

24.07.2011, 15:16 Uhr

AGSzabo
Posts: 1663
Nutzer
@Thore:

Ich weiss nicht ob ich mein System noch nachträglich so umstellen kann dass das gui einen eigenen task oder thread hat. Und was die Notifys von Gadget a zu Gadget b betrifft, kann man das auch irgendwie automatisch machen? Ich meine, ohne da ein Gadget selbst bei einer Benutzereingabe die Notify() Funktion aufruft, sondern so dass dies irgendwie das Systme übernimmt, so wie bei NTUI das automatische Refreshen mit dem dity-bit, falls du das mitbekommen hast.
--
Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux

[ - Antworten - Zitieren - Direktlink - ]

24.07.2011, 16:15 Uhr

AGSzabo
Posts: 1663
Nutzer
@Der_Wanderer

Wie geht das Prinzip eines Sliders? Kann der intern mit min/max/value arbeiten oder braucht er eine brücke mit proportionalen werten? Wie macht man den?
--
Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux

[ - Antworten - Zitieren - Direktlink - ]

24.07.2011, 21:00 Uhr

Der_Wanderer
Posts: 1229
Nutzer
@Thread
Also ich denke, bevor wir weiterdiskutieren müssen wir die Begrifflichkeiten erstmal klären, denn wir reden in vielen Punkten gründlich aneinander vorbei. Ich denke jeder hat gute Gründe für seine Ideen/Argumente, aber es wird jeweils vom anderen nicht ganz verstanden.

Ich versuche das mal, bitte korrigiert mich wenn ihr anderer Meinung seid. Und in weiteren Posts dann bitte darauf achten, diese Begriffe konsistent zu verwenden.

OOP
Object orientiertes Programmieren. Es ist ein Programmier Paradigma und nicht an eine bestimmte Sprache geknüpft. Man kann OOP auch in 68K Assembler programmieren, in Amiblitz, C oder C++ und Java.
Wenn die Sprache das unterstützt hat man allerdings eine "Fahrbahnmarkierung" und ist besser geschützt gegen "Querfeldeinfahren"

Funktion
Das ist eine Subroutine, die ihre lokalen Variablen auf dem Stack anlegt und daher prinzipiell Multithreading fähig ist, was eine "normale" Subroutine nicht automatisch ist. Besonders in Assembler ist das etwas schwer, weil man geneigt ist Variablen global anzulegen mit "DC.l ...", was bei OOP, wo man oft Rekursion benutzt, schrecklich schief geht. (oder bei einer Callback Hook)

Methode
OOP Jargon für eine Funktion, die direkt an ein Objekt oder Klasse geknüpft ist. D.h. bei OOP Sprachen wird sie über ein Object (Objektmethode) oder Klasse (Klassenmethode) referenziert, bei nicht-OOP Sprache wäre das eine Funktion, die als ersten Parameter das Objekt hat, "auf" dem es arbeitet (Objektmethoden). Bei nicht OOP Sprachen sollte man den Funktionen den Klassennamen als Prefix geben, damit es keine Konflikte bei gleichnamigen Methoden verschiedener Klassen gibt.

Event
Jetzt wird's schwamming.
Ich würde ein Event als eine kurze "Message" bezeichnen, die von A nach B geschickt wird. In der Regel von A=Betriebssystem und B=unser GUI Toolkit Dispatcher. Darunter fallen die IDCMP Events auf dem Amiga.

Message
Überbegriff wenn man Daten von A nach B schickt. In der Regel durch Übergabe eines Pointers. Bei ganz kurzen Messages wird manchmal auch kopiert.

Binding
Zwei oder mehr Objekte werden miteinander "verbunden", kennen sich also und tauschen selbständig Informationen aus, ohne dass der App Programmierer eingreifen muss.

GUI Toolkit
Das ist im o.B.d.A eine Funkitonsbibliothek, mit deren Hilfe ein App Programmierer eine GUI realisieren kann. Wir sind und denke ich alle einige, dass ein OOP Ansatz am vielversprechendsten ist, da ein GUI Toolkit eigentlich ein Paradebeispiel für OOP ist.

App/Applikation
Das ist die eigentlich Anwendung, die der USer/App Programmierer erstellen will. Das GUI Toolkit dient dazu, der Anwendung ein Graphisches Unter Interface zu verpassen, und das möglicht einfach, mächtig und ohne Einschränkungen.

GUI Toolkit Programmierer
Z.B. ASGzabo und der Wanderer ;-)

GUI Programmierer/Designer
Derjenige, der für eine App die GUI bastelt, sei es programmatisch, per XML oder mit einem GUI Builder.

App Programmierer
Derjendige, der die eigentlich App Logik schreibt, und die GUI anspricht. Bei kleineren Projekten meistens der gleiche wie der GUI Programmierer.

Skin Designer
Ein Grafikkünstler, der schöne Bildchen erstellt, die als Elemente in einem GUI Toolkit funktionieren, ohne eine spezielle App im Hinterkopf zu haben. Das ist NICHT der GUI Programmierer/Designer, der die GUI und evtl. weitere Bildchen für eine konkrete App macht.

Attribut
Eine Eigenschaft eines Objekts, dass man lesen und/oder schreiben kann, meistens mittels sog. Getters und Setters, also GetAttr() und SetAttr(). Durch Getters und Setters vermeidet man eine Inflation von Funktionen, und kann die API einfach erweitern.
Typsiches Attribut wäre der aktuelle Integer/String Wert eines Widgets, aber auch Pixelkoordination, Enabled/Disabled Zustand etc.

Object
Im Prinzip eine Datenstruktur, mit einer Anhäufung von dazugehörigen Funktionen. Bei uns meinen wir damit meistens ein Widgets (fast gleichbedeutend mit Gadget, aber etwas allgemeiner, z.B. gehören auch Gruppen oder ein Space dazu), evtl. auch einfach GUI Element.

Notify
Dafür gibts keine wirkliche Standard Interpetation. Das heist eigentlich nur, dass ein Objekt beim Eintreten eines bestimmten Zustandes ein anderes Objekt benachrichtigt.
AGSzabo (und MUI glaube ich) nennt bei sich die Message bei einem Binding so (?), der Wanderer nennt die Messages vom Toolkit an die Applikation so.

CallBack Hook/Function
Das ist ein Codefragment, was vom App Programmierer kommt und im GUI Toolkit Kontext an bestimmten Stellen ausgeführt wird, z.b. beim drücken eines Buttons.

Aktion
Wenn die Applikation etwas bestimmtes tun soll. Das wäre ein mögliches Ergebnis des Dispatchers, der die Events verarbeitet. Also nicht mehr Maus wird an Koordiate 134/23 gedrückt (=Event), sondern, nachdem wir wissen dass es der Button "Foo" ist und er aktiv ist etc., umgewandelt in die Aktion "Save As..." o.Ä.
Dabei können mehrere Objekte gleiche Aktionen auslösen, z.B. Button, Hotkey und Menu.

Dispatcher
Das ist eine Funktion, die Betriebssystem Events bekommt und dann damit was tut (oder auch nicht). Meistens hat jedes Objekt einen eigenen Dispatcher.
Der "Master" Dispatcher der GUI Engine schaut sich normalerweise zuerst ein Event an, indem er nach einer bestimmten Strategie die einzelnen Dispatcher Funktionen ausgewählter Unterobjekte mit diesem Event aufruft. Diese können wiederum weiter-delegieren.
Wenn der Dispatcher eines Objektes mit einem Event was anfangen kann, dann konsumiert er in der Regel das Event und es ist weg, andere Objekte sollten dann nicht mehr drauf reagieren. Oft wird das mit dem Rückgabeparameter der Dispatcher Funktion geregelt, wobei "True = konsumiert", "False = nicht interessant für mich" bedeutet.

Z.b. sollte eine TextBox, die ein "a" annimmt, das Event konsumieren damit es nicht weiter an einen möglichen Hotkey geht, der auf "a" hört.

Fokus
Die meisten GUI Toolkits haben das Konzept eines Fokus, das heißt ein Objekt ist "activ", meistens das zuletzt betätigte. Eingaben, die nicht eindeutig auf ein bestimmtes Objekt abzielen, gehen normalerweise erstmal an das Object das den Fokus hat, z.B. ein Tastendruck oder ein Mouse-Wheel Event. Der Fokus wird in der Regel durch "TAB" weitergegeben, damit man eine GUI auch per Tastatur steuern kann. Return ersetzt dann in der Regel den Mausklick auf das Fokus Objekt.


--
--
Author of
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



[ Dieser Beitrag wurde von Der_Wanderer am 24.07.2011 um 21:18 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

24.07.2011, 21:37 Uhr

AGSzabo
Posts: 1663
Nutzer
@Der_Wanderer:

Ok. Bei mir:

Message ist der Parameter einer Methode (eine struktur). Es gibt Methoden ohne Message, um einfach blos mal was kleines oder großes zu bewirken. Methoden die an alle Objekte im Baum gehen, nenne ich Broadcast, zB ein Mausklick. Methoden, die nur an querverbindungen von a nach b gehen nenne ich Notify (und mui auch). Der Unterschied zwischen BIND und NOTIFY bei mir ist, dass BIND eine Kette bildet, in der jeder dran kommt, während NOTIFY nur von einem an viele gehen kann, aber dann nicht weitergeleitet wird. Den Begriff EVENT hab ich bisher garnicht benutzt. Das ist imo das, was eine Methode oder einer Message vorraus geht, das Tun des Benutzers oder der Tick einer Uhr. Ein Event hat keine struktur, es ist ein nicht-ding. Es manifestiert sich in einer Methode und in deren Message, falls vorhanden.

An sonstens sind wir gleich, denk ich.


--
Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux

[ Dieser Beitrag wurde von AGSzabo am 24.07.2011 um 21:37 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

24.07.2011, 21:47 Uhr

AGSzabo
Posts: 1663
Nutzer
Nochmal BIND und NOTIFY:

BIND bildet eine Kette mit First -> Next -> Next -> Next -> First.

NOTIFY hingegen verzweigt von A nach B, C und D, also gabelt sich auf.

Beides, NOTIFY und BIND wird bei mir mit der Funktion Notify() bewirkt, die ein dispatcher aufrufen muss wenn es etwas anzupassen gibt. Es gibt noch ein NotifyAttr(), bei dem die attribut ID gegen eine andere getausch werden kann, damit sender und empfänger sich verstehen, wobei der value gleich bleibt.

Bei mui ist Notify ein zwischending zwischen Methode und Attribut. Es wird auf Grund der Änderung eines Attributes eine Methode ausgelöst.
--
Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux

[ - Antworten - Zitieren - Direktlink - ]

24.07.2011, 22:14 Uhr

Thore
Posts: 2266
Nutzer
> Bei mui ist Notify ein zwischending zwischen Methode und Attribut.
Ein Notify ist ein Event. Dieses löst entweder eine Methode aus, oder setzt/holt ein Attribut.

[ - Antworten - Zitieren - Direktlink - ]

25.07.2011, 15:27 Uhr

Der_Wanderer
Posts: 1229
Nutzer
Zitat:
Original von AGSzabo:
@Der_Wanderer:

Ok. Bei mir:

Nein, nicht "bei dir". Das oben ist auch nicht "bei mir", sondern so werde die Ausdrücke in der Fachsprache verwendet, und darauf sollten wir uns einigen. Sonst schreibst was von Methoden und ich denke es sind Funktionen, während du Events meinst o.Ä. Ohne gemeinsame Sprache können wir schlecht kommunizieren.

Zitat:
Message ist der Parameter einer Methode (eine struktur).
Nein. Eine Message ist etwas, was von A nach B geschickt wird. Das hat überhaupt nichts mit dem Parameter eine Methode zu tun.
Wobei ich jetzt wieder unsicher bin ob du tatsächlich eine Methode meinst, oder das was du "Methode" nennst.

Zitat:
An sonstens sind wir gleich, denk ich.
Können wir uns auf die Terminologie von oben einigen, oder was sollte ich ändern?


--
--
Author of
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 - ]

25.07.2011, 23:08 Uhr

AGSzabo
Posts: 1663
Nutzer
@Der_Wanderer:

> Können wir uns auf die Terminologie von oben einigen, oder was sollte ich ändern?

Kannst du so lassen. Ich habe dir meinen Standpunkt eklärt und der ist anders als deiner. Ich kann jetzt nicht einfach alles was ich bisher gedacht habe so ändern das es der norm entspricht. Großteile meines Systems entsprechen wahrscheinlich nicht der norm. es zeckt aber trotzdem. :) besonders nach deinem input hier, auch wenn meine umsetzunge sicher zum teil ganz anders sind als das was du eigentlich meintest.

ps: ich gebe mir mühe
--
Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux

[ Dieser Beitrag wurde von AGSzabo am 25.07.2011 um 23:12 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

25.07.2011, 23:24 Uhr

Thore
Posts: 2266
Nutzer
> Ich kann jetzt nicht einfach alles was ich bisher gedacht habe so ändern das es der norm entspricht.

Wenn Dein System so am Ende funktionert, dann muss es keiner "Norm" entsprechen. Es geht lediglich erstmal um die Begriffe, daß es klar ist, was Du meinst. Wenn Du von "Attributen" redest, aber meinst "Methoden", dann sind wir verwirrt, weil wir aneinander vorbeireden.

Hab mir den Index über die Begriffe auch durchgelesen und es stimmt soweit alles. Ergänzend kann man aber noch sagen:

Notifys sind Events, die durch eine System- oder Useraktion ausgeführt werden, also wenn irgendwas "registriert" oder "bemerkt" wird. Das kann z.B. ein Klick sein, ein Timer-Event, eine Tastatureingabe, eine Diskette die eingelegt wird, ..... eben all das was eine "Interaktion" hervorruft.

Eine Callback Funktion lässt sich an ein Objekt "anheften" welche bei bestimmten Aktionen ausgeführt werden soll (z.B. eine Sortierung in einer ListView wenn man auf die Titelzeile klickt)

Persönliche Anmerkung: Der "Crawler" oder der "Main-Loop" des Masters, den ich letztens angesprochen hab, ist beides das gleiche wie sein Dispatcher (oder macht das gleiche wie der Dispatcher). Nur wegen der Begrifflichkeit nochmal hier gesagt.

[ - Antworten - Zitieren - Direktlink - ]

25.07.2011, 23:39 Uhr

AGSzabo
Posts: 1663
Nutzer
@Thore:

http://dict.leo.org/ende?lp=ende&lang=en&searchLoc=0&cmpType=relaxed§Hdr=off&spellToler=&search=notify
--
Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux

[ - Antworten - Zitieren - Direktlink - ]

25.07.2011, 23:51 Uhr

Thore
Posts: 2266
Nutzer
Danke, ich bin des Englischen durchaus mächtig ;)
Bei diesem Notify gehts aber erstmal um das Registrieren der Aktion an sich, und noch nicht darüber, was dann damit geschieht (also z.B. die dahinterstehende Methode).
Erst beim Abarbeiten des Notifys wird die verknüpfte Methode ausgeführt.

Wenn Du bei deiner GUI die Methode direkt beim Notify aufrufst ohne Dispatcher, dann ist der Klick an sich dein Notify und führt seine Methode aus. Liegen eng beieinander aber dennoch sind sie anders von der Begrifflichkeit her.

Beispiel eines Buttons. Sein Notify/Event kann sein "ButtonPressed" und damit willst Du das Spiel starten. Dann ist die Methode die durch "ButtonPressed" dieses Buttons verknüpft ist die Funktion "StartGame".
Hast Du ein Attribut das einen Pointer zur Funktion hat, und der wird automatisch beim drücken ausgeführt, dann hast Du kein Event-Handling im eigentlichen Sinn, sondern ein Hook der bei einer Aktion ausgeführt wird. Das sind dann Hook-Funktionen/Methoden. Das ausgelöste Event an sich wäre bei dir dann nur die Registrierung des Systems, daß der Button gedrückt wurde. Die Steuerung ist eben anders, aber die Begrifflichkeiten bleiben stets die selben.

[ - Antworten - Zitieren - Direktlink - ]

26.07.2011, 09:53 Uhr

Der_Wanderer
Posts: 1229
Nutzer
Ich kann mich Thore nur anschließen. Du kannst ja deine Engine implementieren wie du willst, es gibt keine "Norm", deshalb ist ein Attribut aber immer noch ein Attribut und eine Methode eine Methode.
Du solltest dir diese Begriffe korrekt aneignen, das hilft nicht nur mit anderen zu kommunizieren, sondern auch dir selbst.
Denn wir "denken" in Sprache. Wenn man etwas korrekt benennen kann, dann kommt man gedanklich auch viel besser klar wenn man plant.


Zitat:
Hab mir den Index über die Begriffe auch durchgelesen und es stimmt soweit alles. Ergänzend kann man aber noch sagen:

Notifys sind Events, die durch eine System- oder Useraktion ausgeführt werden, also wenn irgendwas "registriert" oder "bemerkt" wird. Das kann z.B. ein Klick sein, ein Timer-Event, eine Tastatureingabe, eine Diskette die eingelegt wird, ..... eben all das was eine "Interaktion" hervorruft.

Ja, so habe ich das auch gesehen und deshalb heißen bei mir die Ereignisse (ich sage jetzt bewusst nicht Event...), die der App Programmierer "registiert" hat und empfangen möchte, Notifies. Ich denke das kommt dem Sinn eines Notifies recht nahe. Ich glaube Holger hat das "Action" genannt. Bitte korrigiere mich, wenn ich falsch liege.



--
--
Author of
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 - ]

26.07.2011, 10:14 Uhr

AGSzabo
Posts: 1663
Nutzer
@Der_Wanderer:

Ich habe - als persönlichen fallback - noch die Option, die obigen Begriffe _garnicht_ zu verwenden, sondern einfach im Klartext zu beschreiben was ich mache. ;)
--
Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux

[ - Antworten - Zitieren - Direktlink - ]

26.07.2011, 10:41 Uhr

Der_Wanderer
Posts: 1229
Nutzer
Dann verlangst du aber zu viel von den Lesern, die erst aus deinen langen Erklärungen herausknobeln müssen, wovon du redest. Du läuft dann auch schnell Gefahr, dinge zu verwischen die eigentlich verschieden sind, oder Dinge zweimal zu tun die man auch als eins abhandeln kann.
Z.b. "dein" Binding" und "dein" Notify sieht mir suspekt aus ;-)

Wehre dich nicht gegen das, was kluge Köpfe bereits vorgedacht haben. Ziehe deinen Nutzen daraus.

--
--
Author of
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 - ]

26.07.2011, 10:54 Uhr

AGSzabo
Posts: 1663
Nutzer
@Der_Wanderer:

Die Normwörter scheinen garnicht zu passen auf mein system. Wenn ich sie nutzen wollte, müsste ich mein system ändern. Aber ich kann es auch ganz einfach erklären. Ich habe zwei möglichkeiten eingebaut mittels denen ein gadget oder widget davon kenntniss bekommen kann, wenn ein anderes in sich etwas verändert. erste möglichkeit: das gadget hat eine liste mit zielen. zweite möglichkeit, das gagdet hat einen zeiger auf das nächste und so weiter, zurück bis zum ersten. letztere möglichkeit ist von vorteil, wenn zb der text in einer reihe von stringgadgets gleich sein soll. erstere möglichkeit ist von vorteil, wenn zb eine view den horizontalen slider und den vertikalen slider in kenntis setzen soll, die slider aber nur jeweils 1 rückverbindung zur view haben sollen und nicht zum jeweils anderen slider. zur übermittlung der änderung ruft das sendende gadget eine oxmaster.library funktion auf, mit einer ID von was sich geändert hat. die lib ruft dann den dispatcher des zielgadgets auf, wobei es die ID übergibt. in der praxis _kann_ es egal sein, welche möglichkeit man benutzt. ich habe eben beide eingebaut. die eine ("binding") habe ich von dir, die andere ist die von boopsi oder mui. uff ... was für ein langer text wegen sowas simplen. aber ich denke es ist nötig. jetzt solltest du den sinn oder unsinn meiner möglichkeiten beurteilen können.

ps:

> Wehre dich nicht gegen das, was kluge Köpfe bereits vorgedacht haben. Ziehe deinen Nutzen daraus.

Habe schon Nutzen daraus gezogen, zB die SuperRefresh Routine mit dem dirty bit. das ist aber vermutlich auch keine typische gui terminologie sondern deine idee, oder?

pps:

> Denn wir "denken" in Sprache. Wenn man etwas korrekt benennen kann, dann kommt man gedanklich auch viel besser klar wenn man plant.

Ich stimme dir zu!


--
Sam mini os4.1 upd. 2 / e-uae 39bb2 / A4000D 3.0 & 3.9 2mbchip 8mbfast Ariadne_II ide DVD und HD / A500 3.1 (mkick) adide 50mb / Athlon ii X2 Ubuntu Linux

[ Dieser Beitrag wurde von AGSzabo am 26.07.2011 um 12:56 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

26.07.2011, 15:27 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Der_Wanderer:
Ich denke das kommt dem Sinn eines Notifies recht nahe. Ich glaube Holger hat das "Action" genannt. Bitte korrigiere mich, wenn ich falsch liege.

Gerne. Eine Action ist mehr als nur ein Notify-Mechanismus. Es ist die Abstraktion einer auslösbaren Aktion, die sowohl den Empfänger eines Action-Events als auch das Datenmodell enthält. Wenn ein GUI-Element, gleich welcher Art, an eine Aktion gebunden wird, entsteht eine Zwei-Wege Kommunikation. Die Aktion teilt mit, wenn sich Eigenschaften der Aktion ändern (am Wichtigsten: enabled-Status, dann Default-Werte für Beschriftung und Icons, im Falle von Toggles der aktuelle Auswahlstatus), während die GUI-Elemente ein auslösendes Ereignis an die Aktion melden.
Zitat:
Original von AGSzabo:
@Der_Wanderer:
Die Normwörter scheinen garnicht zu passen auf mein system. Wenn ich sie nutzen wollte, müsste ich mein system ändern.

Nein, Du bist nur nicht in der Lage, das, was Du machst, mit formellen Begriffen zu erklären. Das ist, wenn es ums Programmieren geht, bedenklich.
Zitat:
Aber ich kann es auch ganz einfach erklären.
[...]
uff ... was für ein langer text wegen sowas simplen.

Ganz genau. Deshalb ist es von Vorteil, die korrekten Begrifflichkeiten zu kennen und benutzen zu können.

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

[ - Antworten - Zitieren - Direktlink - ]

26.07.2011, 15:47 Uhr

Der_Wanderer
Posts: 1229
Nutzer
Zitat:
Nein, Du bist nur nicht in der Lage, das, was Du machst, mit formellen Begriffen zu erklären. Das ist, wenn es ums Programmieren geht, bedenklich.
Genau, weil das wiederum bedeutet, dass du dir gar nicht wirklich klar bist, wie und was du machst. Und dann läuft du Gefahr Dinge zu mischen die auseinander gehören oder Dinge zweimal zu machen die zusammengehören.

@Holger
Ja, als Aktion sollte man das Ganze verstehen, d.h. zur Aktion gehört auch der App Code, richtig?


@Holger
Mit deiner Kritik, dass die XML z.b. keine Default Werte oder Wertebereiche setzen darf, bin ich nicht einverstanden. Alle GUI Toolkits die ich kenne machen das so. Man kann sie natürlich programmatisch auch setzen, muss man aber eben nicht.

Welche Object IDs es gibt, und welche Notify an die App es gibt, definieren letztendlich beide, die App und das XML. Beides muss logischerweise matchen. In integrierten Umgebungen erstellt daher der GUI Builder ein automatisches Include mit den #defines, die man im Programmcode benutzt. Mein Ziel war es aber, nicht an eine bestimmte Sprache(n) gebunden zu sein. Deshalb muss man darauf "vertrauen", dass die XML die IDs und Notifys in der gleichen Schreibweise enthält wie die App. Das ist die Achillesverse meines Systems, habe aber keine bessere Möglichkeit gefunden.
In der Praxis funktioniert das aber trotzdem sehr gut, wie man bei stormwizard sehen kann, dort ist es genauso. (Frei-Text IDs ohne festes #define)


--
--
Author of
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 - ]

26.07.2011, 16:53 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Der_Wanderer:
Ja, als Aktion sollte man das Ganze verstehen, d.h. zur Aktion gehört auch der App Code, richtig?

Typischerweise, ja. Wenn man objekt-orientiert programmiert, hat ein Aktion-Objekt eine Methode, die diejenige ist, die vom Dispatcher beim Empfang eines Action-Events auch aufgerufen wird. Das Action-Event ist bereits ein abstrakter Ereignistyp, nicht mehr das auslösende Maus- oder Tastatur-Event.

Zitat:
Mit deiner Kritik, dass die XML z.b. keine Default Werte oder Wertebereiche setzen darf, bin ich nicht einverstanden. Alle GUI Toolkits die ich kenne machen das so. Man kann sie natürlich programmatisch auch setzen, muss man aber eben nicht.
„Das machen alle so“ ist keine sinnvolle Begründung. Es ist nunmal so, dass die Anwendungslogik die gültigen Werte vorgibt. Wenn der Amiga nunmal nur einen Lautstärke-Bereich von 0 bis 63 besitzt, ergibt es einfach keinen Sinn, dass der GUI-Designer etwas anderes festlegen kann.

Und wenn das Programm AHI unterstützt und sich deshalb der erlaubte Range ändert, soll die Anwendung eine spezielle GUI-XML bekommen müssen? Bzw. muss man dann zwischen zwei unterschiedlichen GUIs wechseln, je nachdem, ob man jetzt AHI oder Paula benutzt?
Zitat:
Welche Object IDs es gibt, und welche Notify an die App es gibt, definieren letztendlich beide, die App und das XML. Beides muss logischerweise matchen. In integrierten Umgebungen erstellt daher der GUI Builder ein automatisches Include mit den #defines, die man im Programmcode benutzt.
Das geht alles von einem Workflow aus, bei dem der GUI-Designer letztendlich der Programmierer ist, bzw. eng an dessen Entwicklungszyklus gebunden ist.

Nur brauche ich dann kein XML. Dann kann ich das Ergebnis gleich direkt in das Programm kompilieren.

Der Vorteil einer XML-GUI ist aber eigentlich, dass man sie austauschen kann, ohne die Anwendung neu übersetzen zu müssen. Und dann ist eigentlich klar, wer den Rahmen vorgibt. Nämlich derjenige, der sich nicht ändern kann. Die kompilierte Anwendung.

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

[ - Antworten - Zitieren - Direktlink - ]


1 -2- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Jetzt nochmal das Notify [ - Suche - Neue Beiträge - Registrieren - Login - ]


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