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

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

1 -2- [ - Beitrag schreiben - ]

03.06.2011, 17:39 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
Namen sind imo nicht so wichtig. Ich sehe nicht ein, warum ich mich da an Schema halten soll.

Es geht nicht um die Namen, sondern darum, dass Du gerade dabei bist, das Rad neu zu erfinden. Du lehnst das eine ab, mit der Begründung, es sei Dir zu kompliziert (oder was auch immer) und erfindest etwas, dass am Ende dasselbe nur mit anderen Namen (und ein paar strukturellen Fehlern) ist.

Der Vorteil, etwas vorhandenes zu nutzen, liegt doch auf der Hand: da haben eine paar Leute, die Ahnung davon haben, sich Gedanken zu gemacht und bereits Lösungen für Probleme geschaffen, die Du noch gar nicht erkannt hast.

Du könntest Deine OXML-Beschreibung jemand anderes in die Hand drücken, ohne ihm noch erklären zu müssen, wie bestimmte Dinge gemeint sind, was soweit geht, dass XML-Parser die Beschreibung verstehen und die Richtigkeit einer Datei verifizieren können und XML-Editoren Dir sogar Auto-Completion u.ä. Gimmicks bei der Bearbeitung anbieten können.

Klar, kann man auf alles verzichten, die Frage ist nur, warum? Wie bereits festgestellt, kommt bei Deinem eigenen Ansatz auch nichts besseres raus. Nicht mal etwas wirklich anderes.

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

[ - Antworten - Zitieren - Direktlink - ]

03.06.2011, 17:55 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

Du hast vollkommen recht. Aber schau mal: wenn meine Mutter ein Kreutzworträtsel macht, schaut sie dann gleich in der Lösung nach? Und wenn es schon zwei Bibliotheken zum parsen von xml gibt, warum nicht auch noch eine dritte? Klar kann ich den standard nicht erreichen denn mir fehlen Teile (das Wissen). In 68k Assembler zu programmieren und noch tools dafür zu entwickeln ist sowieso eine brotlose kunst. Wen kümmert es da noch, was man macht. So eine konformität zum autocomplete wäre aber nett. Ich weiss leider nicht bescheid.
--
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 - ]

03.06.2011, 23:00 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
Aber schau mal: wenn meine Mutter ein Kreutzworträtsel macht, schaut sie dann gleich in der Lösung nach?

Falsche Frage. Wenn Deine Mutter ein Kreuzworträtsel macht, versucht sie dann das Rätsel zu lösen, oder ein eigenes zu erstellen? Und wenn sie wider Erwarten letzteres macht, fängt sie dann an, Papier selber zu schöpfen und eigene Druckertinte zusammenzurühren?
Zitat:
Und wenn es schon zwei Bibliotheken zum parsen von xml gibt, warum nicht auch noch eine dritte?
Mmmh, ich weiß ja, dass Du nicht wirklich eine nützliche Anwendung anstrebst, sondern yet-another-gui-toolkit. Aber selbst für das frage ich mich, ob Du nicht doch Lust hast, selbiges innerhalb Deiner eigenen Lebenszeit fertig zu machen, statt jetzt noch eine XML-Softwaresuite anzufangen, die ebenfalls nie wirklich fertig sein wird.
Zitat:
In 68k Assembler zu programmieren und noch tools dafür zu entwickeln ist sowieso eine brotlose kunst.
Nicht mehr als in jeder anderen Programmiersprache für 68k zu entwickeln. Ob man damit etwas schafft, hängt nicht von der Sprache ab.
Zitat:
So eine konformität zum autocomplete wäre aber nett. Ich weiss leider nicht bescheid.
Hehe, machst Du das ganze nicht genau deshalb, um etwas zu lernen? Dann solltest Du aber auch bereit sein, etwas zu lernen.

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

[ - Antworten - Zitieren - Direktlink - ]

03.06.2011, 23:16 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

Ok. Fragen kostet nix. Was genau muß ich lernen und in welcher Reihenfolge? Und steht es mir frei kleine Abwandlungen vor zu nehmen, wenn mit dem gegebenen etwas nicht so möglich ist wie ich es brauche?
--
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 - ]

08.06.2011, 15:47 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
Was genau muß ich lernen und in welcher Reihenfolge?

Hey, wer hat denn was von „müssen“ gesagt? ;)

Sind doch nur Empfehlungen und die sind auch frei von irgendeiner Reihenfolge. Ich hab sie auch schon genannt.

Das eine Thema ist XSL(T), um XML-Dateien mit bestehenden Tools umwandeln zu können. Dokumentation und Tutorials findet man zuhauf, wenn man sucht, z.B. auch hier: http://de.selfhtml.org/xml/darstellung/index.htm

Ein mögliches Zwischenziel könnte es sein, die von mir geposteten Beispiele verstehen zu können. Ab da kann man sie auch für eigene Zwecke erweitern. (Natürlich auch gerne hier Fragen stellen)

Interessant dürfte das vielleicht auch insofern für Dich sein, dass Du dann auch bemerkst, wo Dein XUI-API Design die Komplexität bei der Umwandlung in die Höhe treibt. Diese Komplexität trifft Dich teilweise auch dann, wenn Du den Prozess in einem eigenen Programm abbilden wolltest, statt einen XSLT-Prozessor zu verwenden.

Das zweite Thema ist, wie man seine eigene XML-Sprache formal deklariert. Da gibt es zwei Möglichkeiten, DTD und Schema. Ersteres ist weniger komplex und auch weniger mächtig, hat aber vor allem den Nachteil, nicht XML zu sein. Schema ist dagegen äußerst leistungsfähig, dementsprechend komplexer, entspricht aber, wie bereits gesagt, in Grundzügen dem, wie Du es auch selbst gemacht hättest.

Ich denke, Du findest schon passendes Material, wenn Du danach googlest.
Zitat:
Und steht es mir frei kleine Abwandlungen vor zu nehmen, wenn mit dem gegebenen etwas nicht so möglich ist wie ich es brauche?
Kommt drauf an, was Du hinterher draus machst. Als Kommunikationsmittel zwischen Programmierern können an Standards angelehnte, modifizierte Sprachen immer noch funktionieren. Existierende Werkzeuge mit Modifikationen zu verwenden, wird dagegen deutlich schwieriger.

Aber eigne Dir erst einmal das Wissen an, bevor Du Dich mit der Frage beschäftigst, ob es für Dich ausreicht, modifiziert werden müsste oder womöglich gar nicht brauchbar ist.

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

[ - Antworten - Zitieren - Direktlink - ]

18.06.2011, 13:23 Uhr

AGSzabo
Posts: 1663
Nutzer
Ich habe das Rad neu erfunden und meine bedürfnisse in einem eigenen Programm abgebildet.

Unterstützt wird:

  • xml parser mit kommentaren, &...; specialchars syntax- und wohlgeformtheitsprüfung, alles case sensitiv
  • Gui als xml datei
  • Regeln-Dateien im xml format, eine pro klasse und eine globale, dazu überprüfung der einhaltung der regeln
  • tagnamen-prefixe
  • oxmaster interne und auch externe klassen
  • beliebige echtklassen-objekte als childs an beliebige objekte, sofern kombination vom gui-toolkit unterstützt
  • klassenprivate sub-elemente wie zB Item im Menu, dazu namespaces weil das item im menu etwas anderes ist als das item in einer liste zB
  • beliebige objekte als attribut an echtklassen-objekte, zB menu-klasse als oxWinA_winmenu importieren
  • sprechende labels
  • alle strings durchnummeriert ans ende
  • generierung include-zeilen für externe klassen
  • generierung vom funktionslabels (mit rts) für hooks
  • rekursive kapselung, zB item im menu und item im item
  • im moment aber KEINE möglichkeit ein klassenprivates subelement an anderer stelle als unter sich selbst (rekursiv) nochmal zu erzeugen, als workaround muss das unterelement da nochmal definiert sein wo es nochmal vorkommen können soll (außer bei unter sich selbst)


hier die gegenwärtige gui testdatei:
xml code:
<application flags="TEST" relptr="g_app" putptr="g_app_abs" hotkey="f" quitwindow="false" name="oxfilter">	
	<window title="Memory Monitor" undermouse="TRUE" layout="TRUE" RELPTR="g_pic_window">
		<windowmenu popup="false">
			<item text="select"></item>
		</windowmenu>
		<vertgroup>
			<title text="bitplane" />
			<frame framestyle="BEVEL" hprop="TRUE" vprop="TRUE">
				<planeview RELPTR="g_picview" />
			</frame>
			<horizgroup spaceprop="FALSE">
				<check senschar="z" RELPTR="g_zoom_check" hook="zoom_checkmark_hook"/>
				<label text="zoom" linechar="1" />
				<button text="Test-Button" />
			</horizgroup>
			<tabs>
				<tab title="My Tab 1">
					<button text="Button on Tab 1" />
				</tab>
				<tab title="My Tab 2">
					<button text="Button on Tab 2" />
				</tab>
			</tabs>
			<menu popup="false" hook="menu_select_hook">
				<item text="select option 1" ID="1">
					<separator />
					<atem taxt="tast">
						<saparator />
					</atem>

					<item text ="this is recursive">
						<separator />

						<atem taxt="tast">
							<saparator />
						</atem>

					</item>
				</item>
				<separator />
				<item text="select option 2" ID="2">
					<separator />
				</item>
			</menu>
		</vertgroup>
	</window>
</application>


hier als beispiel die regeldatei für die menu klasse:
xml code:
<element name="menu" prefix="M">
	<attribute name="hook" type="func" />
	<element name="separator" short="true"></element>
	<element name="item" prefix="MI" recursive="true">
		<attribute name="text" type="string" />
		<attribute name="ID" type="numvar" />
		<element name="separator" short="true"></element>

		<element name="atem">
			<attribute name="taxt" type="string" />
			<element name="saparator" short="true"></element>
		</element>
	</element>
	<attribute name="popup" type="bool" />
</element>


und hier das assembler ergebnis:
68000 assembler code:
; OXML Compiler v0.8-15 by Andreas G. Szabo
; silva@psi5.com  www.psi5.com/~silva/afilter/

	OXCLASSNAME	planeview
	OXCLASSNAME	menu

.application	dc.l	oxAA_flags,TEST
		dc.l	OX_RELPTR,g_app
		dc.l	OX_PUTPTR,g_app_abs
		dc.l	oxAA_hotkey,"f"
		dc.l	oxAA_quitwindow,FALSE
		dc.l	oxAA_name,.str
		dc.l	OX_WINDOW,.window
		dc.l	TAG_END

.window		dc.l	oxWA_title,.str1
		dc.l	oxWA_undermouse,TRUE
		dc.l	oxWA_layout,TRUE
		dc.l	OX_RELPTR,g_pic_window
		dc.l	oxWA_windowmenu,.menu
		dc.l	OX_VERTGROUP,.vertgroup
		dc.l	TAG_END

.menu		dc.l	oxMA_popup,FALSE
		dc.l	oxMA_item,.menu_item
		dc.l	TAG_END

.menu_item	dc.l	oxMIA_text,.str2
		dc.l	TAG_END

.vertgroup	dc.l	OX_TITLE,.title
		dc.l	OX_FRAME,.frame
		dc.l	OX_HORIZGROUP,.horizgroup
		dc.l	OX_TABS,.tabs
		dc.l	menu,.menu1
		dc.l	TAG_END

.title		dc.l	oxTA_text,.str3
		dc.l	TAG_END

.frame		dc.l	oxFrA_framestyle,BEVEL
		dc.l	oxFrA_hprop,TRUE
		dc.l	oxFrA_vprop,TRUE
		dc.l	planeview,.planeview
		dc.l	TAG_END

.planeview	dc.l	OX_RELPTR,g_picview
		dc.l	TAG_END

.horizgroup	dc.l	oxGA_spaceprop,FALSE
		dc.l	OX_CHECK,.check
		dc.l	OX_LABEL,.label
		dc.l	OX_BUTTON,.button
		dc.l	TAG_END

.check		dc.l	oxChkA_senschar,"z"
		dc.l	OX_RELPTR,g_zoom_check
		dc.l	oxChkA_hook,zoom_checkmark_hook
		dc.l	TAG_END

.label		dc.l	oxLabA_text,.str4
		dc.l	oxLabA_linechar,1
		dc.l	TAG_END

.button		dc.l	oxBA_text,.str5
		dc.l	TAG_END

.tabs		dc.l	oxTbA_tab,.tabs_tab
		dc.l	oxTbA_tab,.tabs_tab1
		dc.l	TAG_END

.tabs_tab	dc.l	oxTbTA_title,.str6
		dc.l	OX_BUTTON,.button1
		dc.l	TAG_END

.button1	dc.l	oxBA_text,.str7
		dc.l	TAG_END

.tabs_tab1	dc.l	oxTbTA_title,.str8
		dc.l	OX_BUTTON,.button2
		dc.l	TAG_END

.button2	dc.l	oxBA_text,.str9
		dc.l	TAG_END

.menu1		dc.l	oxMA_popup,FALSE
		dc.l	oxMA_hook,menu_select_hook
		dc.l	oxMA_item,.menu_item1
		dc.l	oxMA_separator,0
		dc.l	oxMA_item,.menu_item2
		dc.l	TAG_END

.menu_item1	dc.l	oxMIA_text,.str10
		dc.l	oxMIA_ID,1
		dc.l	oxMIA_separator,0
		dc.l	oxMIA_atem,.menu_atem
		dc.l	oxMIA_item,.menu_item3
		dc.l	TAG_END

.menu_atem	dc.l	oxMIA_taxt,.str11
		dc.l	oxMIA_saparator,0
		dc.l	TAG_END

.menu_item3	dc.l	oxMIA_text,.str12
		dc.l	oxMIA_separator,0
		dc.l	oxMIA_atem,.menu_atem1
		dc.l	TAG_END

.menu_atem1	dc.l	oxMIA_taxt,.str13
		dc.l	oxMIA_saparator,0
		dc.l	TAG_END

.menu_item2	dc.l	oxMIA_text,.str14
		dc.l	oxMIA_ID,2
		dc.l	oxMIA_separator,0
		dc.l	TAG_END

.str		dc.b	"oxfilter",0
.str1		dc.b	"Memory Monitor",0
.str2		dc.b	"select",0
.str3		dc.b	"bitplane",0
.str4		dc.b	"zoom",0
.str5		dc.b	"Test-Button",0
.str6		dc.b	"My Tab 1",0
.str7		dc.b	"Button on Tab 1",0
.str8		dc.b	"My Tab 2",0
.str9		dc.b	"Button on Tab 2",0
.str10		dc.b	"select option 1",0
.str11		dc.b	"tast",0
.str12		dc.b	"this is recursive",0
.str13		dc.b	"tast",0
.str14		dc.b	"select option 2",0
		even

zoom_checkmark_hook	; 


		rts

menu_select_hook	; 


		rts


Ich wage zu bezweifeln dass all dies mit schema oder dtd auch so möglich ist, lasse mich aber gerne eines besseren belehren!

ags
--
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 18.06.2011 um 13:26 Uhr geändert. ]

[ Dieser Beitrag wurde von AGSzabo am 18.06.2011 um 13:29 Uhr geändert. ]

[ Dieser Beitrag wurde von AGSzabo am 18.06.2011 um 13:35 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

22.06.2011, 11:26 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von AGSzabo:
Ich wage zu bezweifeln dass all dies mit schema oder dtd auch so möglich ist, lasse mich aber gerne eines besseren belehren!

Dass es mit Standard-Methoden geht, wurde doch schon vor drei Wochen bewiesen. Die Frage ist eher umgekehrt, ob Du mit Deiner Methodik jemals ein Stück Software erstellen wirst, mit dem jemand anderes außer Dir auch etwas anfangen könnte.

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

[ - Antworten - Zitieren - Direktlink - ]

09.07.2011, 15:37 Uhr

AGSzabo
Posts: 1663
Nutzer
@Holger:

Ich glaube nicht, daß jemand mein System benutzt blos weil es Schema oder so dtd benutzt. außerdem finde ich meine methode sehr viel überschaubarer und einfacher zum lernen.
--
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 - ]

09.07.2011, 17:34 Uhr

Thore
Posts: 2266
Nutzer
Was hier interessant wäre, wär ein GUI Editor, indem mans einfach nur hinklickt und er dann eben wahlweise XML oder ASM erzeugt.
Das XML könnte man dann zu ASM oder C Code konvertieren können. Dann hätte man auch aus Dritt-Programmierer einen effektiven Nutzen.

[ - Antworten - Zitieren - Direktlink - ]

09.07.2011, 17:44 Uhr

AGSzabo
Posts: 1663
Nutzer
@Thore:

Das Konvertieren von XML zu ASM ist genau das, was mein OXML Compiler jetzt macht.
--
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 - ]


1 -2- [ - Beitrag schreiben - ]


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


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