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

amiga-news.de Forum > Suche [ - Suche - Neue Beiträge - Registrieren - Login - ]

Erste << 7 8 9 10 11 -12- 13 14 15 16 17 >> Letzte Ergebnisse der Suche: 1662 Treffer (30 pro Seite)
AGSzabo   Nutzer

29.07.2011, 12:07 Uhr

[ - Direktlink - ]
Thema: UAE zu langsam oder Programmierfehler?
Brett: Programmierung

@Holger:

> bei 20 Pixel pro Element immer noch deutlich über 3000.

Sie sind jetzt mal 19 pixel hoch. Das mal 3000 sind $dea8. Das liegt mit vorzeichen (bei grafikoperationen wichtig) außerhalb der $7fff, funktioniert also nicht. Oder was hast du gemeint?
--
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 29.07.2011 um 12:31 Uhr geändert. ]
 
AGSzabo   Nutzer

29.07.2011, 09:41 Uhr

[ - Direktlink - ]
Thema: UAE zu langsam oder Programmierfehler?
Brett: Programmierung

Ok, nun habe ich es so gemacht, daß nur diejenigen Listviewzeilen gezeichnet werden, die innerhalb des clips liegen. Jetzt rennt es! Allerdings scheint es ab einer gewissen Zahl von Zeilen einen grafischen Überlauf zu geben, ich meine die Koordinaten werden wieder negativ oder positiv oder so. Was kann da Abhilfe schaffen?

ps: es könnte evtl auch der scroller sein, der bei zu großen zahlen nicht mehr richtig funktioniert?

--
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 29.07.2011 um 11:13 Uhr geändert. ]
 
AGSzabo   Nutzer

27.07.2011, 11:11 Uhr

[ - Direktlink - ]
Thema: UAE zu langsam oder Programmierfehler?
Brett: Programmierung

@Holger:

> Gibt es denn irgendeinen sinnvollen Grund, warum Du das Layout neuberechnest, obwohl definitiv kein Objekt seine Größe geändert hat?

Optimierungsklausel? Ganz allgemeine Lösungen zu verwenden machte bisher das coden leicht. Aber dank eurer Tips kann ich jetzt den code diese Sonderfälle berücksichtigen lassen, ich finde bestimmt eine Lösung.
--
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
 
AGSzabo   Nutzer

27.07.2011, 09:22 Uhr

[ - Direktlink - ]
Thema: UAE zu langsam oder Programmierfehler?
Brett: Programmierung

@Der_Wanderer:

Das executable sende ich dir nachdem ich einige Änderungen bezüglich der vereinfachung der komplexität vorgenommen habe. Ich weis noch nicht wo der flaschenhals liegt, es dauert wohl alles etwas länger bei vielen zeilen. ich erhoffe mir das es nach der vereinfachung schneller löppt. zeichnen sollte schnell gehen, weil ich alles gleich ausmustere was nicht im cliprect liegt. befüllen passiert, ausser bei einer directory lost nur einmal, das sollte auch schnell gehen. bleibt noch das layouten. genau da soll meine vereinfachung greifen. die ist, daß ich statt extra objekten für jeden text und änliches diese zu spezielle listengruppe und listenzeile zusammenbaue. als schmankerl erlaubt diese zusammennahme auch folders...
--
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 27.07.2011 um 09:24 Uhr geändert. ]

[ Dieser Beitrag wurde von AGSzabo am 27.07.2011 um 09:25 Uhr geändert. ]
 
AGSzabo   Nutzer

26.07.2011, 21:22 Uhr

[ - Direktlink - ]
Thema: UAE zu langsam oder Programmierfehler?
Brett: Programmierung

@Der_Wanderer:

Ich sehe 10 oder 20 zeilen. so schaut es aus:

Bild: http://images.quicktunnels.net/oxlibinfo.jpg
--
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
 
AGSzabo   Nutzer

26.07.2011, 20:56 Uhr

[ - Direktlink - ]
Thema: UAE zu langsam oder Programmierfehler?
Brett: Programmierung

Hallo,

ich frage mich gerade, wie große der Unterschied zwischen der nativen rechenleistung und der emulierten ist. während sich nativ komplizierte webseiten schneller als der blitz aufbauen, braucht meine neu listview schon ab ca 200 einträgen zu 5 spalten spürbar lange.

ich habe die listview in 68k assembler programmiert und alles an ihr ist ein eigenes objekt: die view selber als geclippte area, die scroller, der titel, der hintergrund einer listenreihe und die texte in der listenreihe.

nun scheint mein system an seine grenzen gestoßen zu sein und ich frage mich, wie ich es schneller machen kann, falls das in der emualtion irgendwie möglich sein sollte.

ich vermute, der flaschenhals liegt nicht im zeichnen, weil ich da eben clippe und garnicht erst zu zeichnen anfange was außerhalb des clips liegt, sondern er liegt evtl beim layouten! wenn ich die view scrolle, müssen alle x und y coordinaten der childs angepasst werden. dazu mache ich das ganze setlayout für den inhalt der view nochmal, also auch höhen und breiten.

was meint ihr? @Der_Wanderer: ist dein NTUI schnell genug?
--
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
 
AGSzabo   Nutzer

26.07.2011, 10:54 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

@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. ]
 
AGSzabo   Nutzer

26.07.2011, 10:14 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

@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
 
AGSzabo   Nutzer

25.07.2011, 23:39 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

@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
 
AGSzabo   Nutzer

25.07.2011, 23:08 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

@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. ]
 
AGSzabo   Nutzer

24.07.2011, 21:47 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

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
 
AGSzabo   Nutzer

24.07.2011, 21:37 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

@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. ]
 
AGSzabo   Nutzer

24.07.2011, 16:15 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

@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
 
AGSzabo   Nutzer

24.07.2011, 15:16 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

@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
 
AGSzabo   Nutzer

24.07.2011, 09:56 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

@Thore:

> Wie machst Du das mit deinen Methoden? Werden die praktisch beim Drücken auf den Button ausgeführt? Was ist wenn diese Methode blockiert? Ist dann die GUI noch steuerbar?

Wenn der Hook zu lange braucht, dann steht das GUI. Meinst du das? Für längere Aufgaben muß die App einen neuen Task starten.

> Über einen Eventhandler könntest Du einen "Master" über die ausgelösten Events laufen lassen, der diese abfragt und entsprechend dem connect reagiert.

Versteh ich nicht.
--
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
 
AGSzabo   Nutzer

24.07.2011, 09:48 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

@Holger:

> Ich hoffe, er hoppelt nicht, wenn er mit der Maus gezogen wird ...

Ich mache tatsächlich etwas grundsätzlich falsch. Meine Vorgehensweise ist, bei bewegungen mit der maus direkt die gespeicherten pixelwerte der liste zu verändern (und zu senden) und daraus auch beim refresh wieder die pixelposition des scrollers zu berechnen. ich verstehe dass das falsch ist aber weis keine lösung.
--
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
 
AGSzabo   Nutzer

23.07.2011, 21:18 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

Zitat:
Total, Visible und Top != Max, Min, Value.

Die Logik die dahintersteckt ist eine ganz andere.

Und um nochmal zur Frage zurückzukehren, woher das Bedürfnis die interne Repräsentation auf 0..0xFFFF zu normalisieren?


Ich hab jetzt geändert so dass der scroller direkt mit den pixelwerten der view arbeitet. Nachteil, wenn der slider mehr pixel hat als die view, dann hoppelt er.
--
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
 
AGSzabo   Nutzer

23.07.2011, 17:24 Uhr

[ - Direktlink - ]
Thema: mousewheel unter os 4+
Brett: Programmierung

Für alle die es interessiert, hier der relevante teil aus den includes:
assembler code:
IDCMP_EXTENDEDMOUSE	=	$08000000
IMSGCODE_INTUIWHEELDATA	=	1<<15

 STRUCTURE	IntuiWheelData,0
	UWORD	iwd_Version	; version of this structure (see below)
	UWORD	iwd_Reserved	; always 0, reserved for future use
	WORD	iwd_WheelX	; horizontal wheel movement delta
	WORD	iwd_WheelY	; vertical wheel movement delta

INTUIWHEELDATA_VERSION	=	1



Und hier der Programmcode zur Abfrage:
assmebler code:
check_wheel	cmp.l	#IDCMP_EXTENDEDMOUSE,im_Class(a1)
		bne	.rts

		cmp.w	#IMSGCODE_INTUIWHEELDATA,im_Code(a1)
		bne	.rts

		move.l	im_IAddress(a1),a0
		cmp.w	#INTUIWHEELDATA_VERSION,iwd_Version(a0)
		bne	.rts

		tst.w	iwd_WheelY(a0)
		blt	.wheelup
		bgt	.wheeldown
.rts		rts


Denkt daran in den IDCMP-Flags des Fensters auch IDCMP_EXTENDEDMOUSE zu setzen!
--
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 23.07.2011 um 17:24 Uhr geändert. ]

[ Dieser Beitrag wurde von AGSzabo am 23.07.2011 um 17:29 Uhr geändert. ]
 
AGSzabo   Nutzer

23.07.2011, 17:15 Uhr

[ - Direktlink - ]
Thema: mousewheel unter os 4+
Brett: Programmierung

@ZeroG:

Funktioniert! Danke!
--
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
 
AGSzabo   Nutzer

23.07.2011, 15:11 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

> Dieses Event kann dann Auslöser sein, eine verbundene (connected) Methode auszuführen.

Dann kann man sagen dass in OX das window aus allen events generell diverse methoden macht. Und ein Button zB macht erst garkein event sondern sendet gleich eine methode los. Wann ist das ungünstig?
--
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 23.07.2011 um 15:12 Uhr geändert. ]
 
AGSzabo   Nutzer

23.07.2011, 15:08 Uhr

[ - Direktlink - ]
Thema: mousewheel unter os 4+
Brett: Programmierung

Hi,

auf dem classic (uae) funktionieren diese Zeilen, unter os 4.1.2 nicht.
asm code:
.test_wheel	cmp.w	#$7a,im_Code(a1)	; mouse wheel up
		beq	.wheelup

		cmp.w	#$7b,im_Code(a1)	; mouse wheel down
		beq	.wheeldown


--
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
 
AGSzabo   Nutzer

23.07.2011, 11:59 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

OX Objekt-Struktur
------------------
.i code:
STRUCTURE	oxObject,0
	STRUCT	oxO_node,MLN_SIZE
	STRUCT	oxO_list,MLH_SIZE
	APTR	oxO_parent
	APTR	oxO_binding
	STRUCT	oxO_notifys,MLH_SIZE
	APTR	oxO_class
	UBYTE	oxO_flags
	UBYTE	oxO_hotkey
	APTR	oxO_prev		; for connection when pressing tabulator to focus next or prev object
	APTR	oxO_next		; ..
	APTR	oxO_drawinfo
	APTR	oxO_userbase		; the create() function takes a parameter in a1 that is a pointer to
					; a custom space where f.e. the app has its globals and it is needed
					; to have a pointer to them in the hook functions of the objects ...
					; but the main purpose of this field is that XUI stores pointers here
					; via the OX_PUTPTR and OX_RELPTR tag-commands

	APTR	oxO_userdata		; custom pointer or value set to what ever by the app
	ULONG	oxO_id			; custom field intended for search

	UWORD	oxO_left
	UWORD	oxO_top
	UWORD	oxO_width
	UWORD	oxO_height

	LABEL	oxO_SIZEOF

	BITDEF	oxO,INITIALIZED,0
	BITDEF	oxO,VISIBLE,1
	BITDEF	oxO,GHOSTED,2		; clickable?
	BITDEF	oxO,SLEEPING,3		; get no intuimessages like in ghost mode but stay fully visible,
					; sleeping widgets are skipped in the tabulator chain
	BITDEF	oxO,ACTIVE,4
	BITDEF	oxO,REFRESH,5		; refresh this gadget in next refresh run ..all childs of this gadget
					; are also refreshed


Events / Methods
----------------
code:
ENUM	OX_METHODS

	EITEM	OXM_SET	; a1 oxm_set
	EITEM	OXM_GET	; a1 oxm_get

	EITEM	OXM_ADD	; a0 dest, a1 member		allow custom add-function for class
			;				example: window adds members to inner frame

	; ox objects are created and freed from central,
	; dispatchers do private work on them

	EITEM	OXM_SETDEF	; do this before tags are read to set default values

	EITEM	OXM_INIT
	EITEM	OXM_DEINIT
	EITEM	OXM_ACTIVATE
	EITEM	OXM_INACTIVE

	EITEM	OXM_INTUIMESSAGE

	EITEM	OXM_GETLAYOUT	; a1 oxLayoutInfo
	EITEM	OXM_SETLAYOUT	; ..  ..
	EITEM	OXM_setprop
	EITEM	OXM_DRAW	; draw (no sizes calculations)
	EITEM	OXM_DROPGFXBUFFERS
	EITEM	OXM_WINDOWOPEN
	EITEM	OXM_WINDOWCLOSING

   	EITEM	OXM_TABCHAIN	; link all interactive elements in a ring for
				; prev/next selection via tab
	EITEM	OXM_INVISIBLE
	EITEM	OXM_VISIBLE

	EITEM	OXM_APPWINMESSAGE
	EITEM	OXM_REFRESH

	EITEM	OXM_NEWPENS
	EITEM	OXM_INHERIT

	EITEM	OXM_ATTRSDONE	; this message (method) is sent after all
				; inital attribute tags have been set
				; this is usefull for example for creating co-objects,
				; like for example the grid, image and text in a button 

	EITEM	OXM_NEXT	; step to next/prev object in tabulator-chain
	EITEM	OXM_PREV	; this is required if a gadget hast multiple active areas,
				; like the multiple handles of a tabs gadget
	EITEM	OXM_ISCHILD

	EITEM	OXM_GETCLIP

	EITEM	OXM_HOTKEY	; if the class attribute oxCA_autohotkey is set to FALSE,
				; this method is sent to objects when their hoteky is pressed
				; (see class attributes)

--
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 23.07.2011 um 12:01 Uhr geändert. ]

[ Dieser Beitrag wurde von AGSzabo am 23.07.2011 um 15:17 Uhr geändert. ]
 
AGSzabo   Nutzer

23.07.2011, 11:43 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

@Der_Wanderer:
.i code:
; object interconnection for use with oxNotify() / oxNotifyAttr()
; ---------------------------------------------------------------
;
; the difference between OX_BIND and OX_NOTIFY is, that one object may
; have multiple notifys but only one binding and that oxNotifyAttr()
; yet only works with notifys.
;
; OX_BIND makes a chain, where every object in the chain will get the
; message sent with oxNotify(). you must make a ring with OX_BIND in
; order to get a message read by all objects in the chain regardless
; of where you start it.
;
; OX_NOTIFY makes multiple destinations, but the message or attr is not
; sent further.
;
; you can use both the OX_BIND and the OX_NOTIFY(s) on one object, but
; OX_BIND works only once.

	XITEM	OX_NOTIFY		; generate notify from one object to annother, tag_data should
					; point to a taglist as shown below

	XITEM	OX_BIND			; bind one object to annother and back, the OX_BIND tag must be
					; followed by a pointer to a pointer where the address of the
					; destination object is stored with OX_PUTPTR or OX_RELPTR.

OX_REL		EQU	$00000001	; odd pointers in tag_data are offsets to current userbase  that
					; is active at the moment of creation (odd bit masked out)

; attributes for OX_NOTIFY:

	ENUM	$1000

	EITEM	oxNA_Target		; pointer to a pointer to destination object

	EITEM	oxNA_MatchAttr		; attribute to catch
	EITEM	oxNA_NewAttr		; attribute to send in place of the catched one
					; if this is not given, match attr is sent as is

	EITEM	oxNA_Hook		; attach a callback-hook to a widget to receive
					; everything that is sent through Notify() / NotifyAttr()
					; hook gets: a0/a3 object, a1 message, a4 base, a6 oxbase
					; the message is allways a method. if it comes from
					; NotifyAttr(), the message is OXM_SET and (a1) is attr, value


Methoden und Messages:

aufruf oxDoMethod(methodID, message)


es wird einfach eine id mit einem pointer auf daten an den dispatcher einer oder mehrerer objekte eingegeben. im falle von einer intuition message (event) ist die methodenID "OXM_INTUI". Mehrere objekte heisst in meinem fall "Broadcast". Zb kommen intuimssages als broadcast. Das ist ein DoMethod auf alle kinder und kindeskinder ... eines objekts, oben angefangen. und wenn jeman die message konsumiert, kann je nach art des events schluss sein.

Das was du "event" nennst wäre bei mir eine methode, die auf alle objekte der notify liste ausgeführt wird, oder auf alle objekte der binding kette.

Wo liegt bei dir der unterschied zwischen methode und event?
--
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
 
AGSzabo   Nutzer

23.07.2011, 06:01 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

@Holger:

> Die Wertebereiche sind ja gerade deshalb unterschiedlich, weil Du einem bestimmten Gadgettypen den willkürlich gewählten Bereich von 0-0xffff aufzwingst. Mir fällt absolut kein Praxisbeispiel ein, bei dem es sinnvoll wäre Objekte mit unterschiedlichen Wertebereichen zu koppeln.

Sicher? Ein Slider bzw Scroller mag ja schon vom Haus aus vielleicht eine andere Pixelgröße als die Listview selber haben. Da muß man sowieso was umrechnen? Aber wahrscheinlich hast du recht.

ps: ich habe jetzt sowohl das Notify als auch das Bind eingebaut. :) ...so wie es sich mir im moment erschließt. Sind blos noch wenig Events (= Methoden) definiert. Ein Notify könnte auch einen callback-hook aufrufen..., nur um das mal zu standardisieren anstelle von dem daß jedes widget die option eines hooks selber herstellen muss und um zu vermeiden dass ein widget bei werteänderungen mehrere funktionen aufrufen muss, also zB das Notify UND den hook. Der Hook im Notify würde einfach mitgehen bei dem einen Notify-Aufruf und parallel dazu können andere elemente direkt informiert werden.

--
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 23.07.2011 um 06:10 Uhr geändert. ]
 
AGSzabo   Nutzer

22.07.2011, 17:26 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

@Der_Wanderer:

> woher das Bedürfnis die interne Repräsentation auf 0..0xFFFF zu normalisieren?

Dummes Artefakt aus der Frühzeit der GUI-Geschichte?


edit: ah ja, das ist, damit elemente miteinander kommunizieren können, die verschiedene verhältnisse haben.

--
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 22.07.2011 um 20:26 Uhr geändert. ]
 
AGSzabo   Nutzer

22.07.2011, 17:01 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

@Der_Wanderer:

Slider / Scroller .. größe des knob, da gebe ich dir recht.


> Dan hast du ratz fatz Nullpointer die du abfangen musst.

Musst du auch beim senden deiner events, oder? Also wenn ein objekt kein binding hat, ist der next-zeiger leer.
--
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 22.07.2011 um 17:08 Uhr geändert. ]
 
AGSzabo   Nutzer

22.07.2011, 16:35 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

@Der_Wanderer:

> Letztendlich ist ja aber auch alles das gleiche.

Eben. :D

(auch slider und scroller)
--
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 22.07.2011 um 16:38 Uhr geändert. ]
 
AGSzabo   Nutzer

22.07.2011, 16:31 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

@Der_Wanderer:

> Du kannst ja auch kein Draw(Object) oder SetAttr(Object) machen, bevor das Object existiert, warum sollte das bei einem Bind anders sein?

Weil ich es umständlich finde, daß

- man sich das binding merken muss bis nacher
- dass man den objekten eine id geben muss, bzw nach dem Erzeugen eine Funktion aufrufen muss.

Naja, geschmackssache. Dem einen erscheint das eine umständlich, dem anderen das andere. Wenn ich mir bis nacher die pointer auf die objekte irgendwie merken muss um zu binden kann ich auch nen pointer auf nen pointer merken.

--
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 22.07.2011 um 16:34 Uhr geändert. ]
 
AGSzabo   Nutzer

22.07.2011, 16:12 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

@Der_Wanderer:

> Ausser der Abhängigkeit der Reihenfolge ergibt sich aber sonst keinerlei Problem.

Das ist mir Problem genug. Ich finde es unschön und fehleranfällig. Auch die Reihenfolge wie du bindest gefällt mir nicht. Ich löse es so, daß man beim erstellen einer Verbinung, jetzt mal egal ob Binding oder Notify, dem quellobjekt blos ein zeiger auf den zeiger auf das zielobjekt gegeben wird, wobei das system sobald es das zielobjekt erzeugt, dort den zeiger darauf reinschreibt. bis zur laufzeit ist alles korrekt initialisert. Nun ist es egal wer zuerst kommt.

Zudem werden die zeiger auf wunsch nicht von einer festen adresse gelesen und gespeichert, sondern per offste relativ zu einem buffer, der im fall der scrollview in deren objektstruktur liegt.

da die scrollview aber auf view und sliders aufbaut, wäre es gut, wenn sie die selben attribute wie die view unterstützen könnte (zb "erlaube horizontales wachstum"), das tut sie aber im moment noch nicht. Man muß der scrollview eigene attribute geben, die sie dann an die view weiterleitet. das ist unpraktisch.

"Value" find ich gut, da kann man gleich ein globales attribut draus machen, das von listen, slidern und stringgadgets im zahlenmodus verstanden wird. blos ein kleiner schönheitsfehler bei mir: slider arbeiten intern immer mit max = $ffff und daran angepassten min und value werten. diesen so gearteten value senden sie auch an die liste, welche die werte wiederum in ihr eigenes min/max/value übersetzt... machst du das anders?

Kannst du mir Strobe näher erklären?

> H und V Slider benutzen unterschiedliche Binding Events für jeweils ihre Integer Values

Wenn der vertikale slider mit einem horizontalen gauge-balken verbunden sein soll, hast du da ein problem. das meinte ich zu lösen mit "map" tags, wo aus einem attributID ein anderes wird.

--
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 22.07.2011 um 16:20 Uhr geändert. ]
 
AGSzabo   Nutzer

22.07.2011, 11:29 Uhr

[ - Direktlink - ]
Thema: Jetzt nochmal das Notify
Brett: Programmierung

Da es bisher nicht geklärt wurde, ich möchte ein Notify in mein GUI schreiben.

Dazu habe ich bisher in jedem Objekt eine Liste mit Empfängern und um die anzusprechen ruft das sendende Objekt oxDoNotify( self, methodID, message) auf. MethodID und message werden dann an jedes Objekt der Notify-Liste gesendet. Nun kommt es aber vor, dass ich keine Methode verschicken will, sondern ein geändertes Attribut. Zudem könnte dieses Attribut vom Ziel nicht verstanden werden und ich würde deswegen ein map einbauen, mit der alten und neuen AttributID.

Eine Methode braucht man senden, wenn zwei oder mehr Attribute, die voneinander abhängen, auf einmal gesendet werden müssen, zB die pot/max/body eines Propgadets, welche die Liste bei einer Änderung an ihren Slider sendet. Dem Slider langt es aber, bei einer Bewegung nur pot an die Liste zu senden.

Ich konnte mich bisher nicht entscheiden, wie ich den Unterhschied zwischen dem Senden eines Attributes und einer Methode implementieren soll. Könnte man es mit einem extra oxDoNotifyAttr() machen? Wie würdet ihr es programmieren?

ps: Binding reicht mir nicht.

pps: in MUI reagiert ein Notify direkt auf die Änderung eines Attributes. Aber was ist, wenn sich wie in meinem Fall gleich drei Attribute ändern und man alle drei gleichzeitig zur Neuberechnung der verbundenen Wert braucht?

--
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 22.07.2011 um 11:39 Uhr geändert. ]
 
 
Erste << 7 8 9 10 11 -12- 13 14 15 16 17 >> Letzte Ergebnisse der Suche: 1662 Treffer (30 pro Seite)

Suchbegriffe
Schlüsselwörter      Benutzername
Suchoptionen
Nur in diesen Foren suchen
   nur ganze Wörter
Nur Titel anzeigen
alle Treffer anzeigen

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