Seite 10 von 14

Verfasst: 22.04.2009 16:53
von Fluid Byte
edel hat geschrieben:Kiffi hatte damals mit seinem VD einen sehr guten Ansatz.
Kiffi hat sich auch mal an einem VD versucht? Wusste ich gar nicht. Gibts da noch irgendwas zum runterladen oder alte Quellcodes die eventuell nützlich sein könnten?
edel hat geschrieben:Ueber XML und XSLT seine eigenen Code strukturieren.
Ich weiß was XML ist und kenne auch den groben Verwendungszweck von XSLT aber was genau meinst du? Das man seine eigene Syntax zusammenschrauben kann?
edel hat geschrieben:Also so das der Code z.B. ebenso fuer EasyEvent oder jeder andere Eventhandler genutzt werden kann.
Ausserdem kann der VD dann auch mal laenger mithalten, auch nach einem Update von PB :D
Was genau ist EasyEvent und wie sollte das integriert werden?
edel hat geschrieben:Eigene Controls einfuegen muss ich bestimmt nicht erwaehnen, oder? ;)
Habt Nachsicht Herr, ich bin bloß ein Amateur ... <)

Du meinst also alle Gadgets die nicht von PB bzw. Windows unterstützt werden. Ich dachte da an ein auf DLL's basierendes Plugin-System. Oder doch lieber per "Code-Injection"?

Verfasst: 22.04.2009 16:54
von DarkDragon
Fluid Byte hat geschrieben:
edel hat geschrieben:Kiffi hatte damals mit seinem VD einen sehr guten Ansatz.
Kiffi hat sich auch mal an einem VD versucht? Wusste ich gar nicht. Gibts da noch irgendwas zum runterladen oder alte Quellcodes die eventuell nützlich sein könnten?
WiDe - http://www.purebasic.fr/german/viewtopic.php?t=10140

Leider ist die Webseite tot.

Verfasst: 22.04.2009 17:17
von Kiffi
um da mal kurz Licht ins Dunkle zu bringen: Mein VD ist in .Net geschrieben
worden. Ich hatte von Anfang an das Ziel, nicht nur PureBasic zu
unterstützen, sondern auch andere Programmiersprache, die nicht über
einen eigenen VD verfügen. Aus diesem Grund habe ich als Speicherformat
XML gewählt, welches dann mit XSLT in beliebige Formate gebracht werden sollte.

Irgendwann bin ich dann an einigen Problemen mit dem Speichern von
Container-Objekten hängengeblieben und habe die Entwicklung vorerst auf
Eis gelegt.

Ohne hier grossartig was versprechen zu wollen kann ich mir das Problem
von 'damals' ja noch einmal anschauen und versuchen, das mit meinen
heutigen Kenntnissen zu lösen.

Grüße ... Kiffi

Verfasst: 22.04.2009 17:34
von edel
Fluid Byte hat geschrieben:
edel hat geschrieben:Kiffi hatte damals mit seinem VD einen sehr guten Ansatz.
Kiffi hat sich auch mal an einem VD versucht? Wusste ich gar nicht. Gibts da noch irgendwas zum runterladen oder alte Quellcodes die eventuell nützlich sein könnten?
Der VD basierte auf dem von Visual Studio, also C#. Fuer Code musste mal Kiffi fragen.
Fluid Byte hat geschrieben:
edel hat geschrieben:Ueber XML und XSLT seine eigenen Code strukturieren.
Ich weiß was XML ist und kenne auch den groben Verwendungszweck von XSLT aber was genau meinst du? Das man seine eigene Syntax zusammenschrauben kann?
edel hat geschrieben:Also so das der Code z.B. ebenso fuer EasyEvent oder jeder andere Eventhandler genutzt werden kann.
Ausserdem kann der VD dann auch mal laenger mithalten, auch nach einem Update von PB :D
Was genau ist EasyEvent und wie sollte das integriert werden?
EasyEvent ist von Srod. Mit der Include laeuft das EventHandling im
Hintergrund, es werden dann nur noch die gesetzten Funktionen
angesprungen, aehnlich wie es .NET macht. Wobei das aber voellig
egal ist, da man per Transformation dann seinen Code an alles
anpassen kann. Man klickt sich seine Oberflaeche zusammen, waehlt
dann das entprechende Output-Format aus, und bekommt das was man
haben will.

Dein VD koennte folgenden Code exportieren

Code: Alles auswählen

<vd>

  <form x="ignore" y="ignore" cx="640" cy="480" text="Fenster">
    
    <button x="10" y="10" cx="75" cy="23" text="Button" OnClick="OnClickFunctionsName" />
    
    <listbox x="10" y="50" cx="200" cy="200">
      
      <listboxitem>item1</listboxitem>
      <listboxitem>item2</listboxitem>
      <listboxitem>item3</listboxitem>
      <listboxitem>item4</listboxitem>
      
    </listbox>
    
  </form>
  
</vd>
Nach entsprechender Transformation kommt dann vielleicht sowas bei rum :

Code: Alles auswählen

OpenWindow(0,#PB_Ignore,#PB_Ignore,640,480,"Fenster")
ButtonGadget(0,10,10,75,23,"Button")
ListViewGadget(1,10,50,200,200)
AddGadgetItem(1,-1,"item1")
AddGadgetItem(1,-1,"item2")
AddGadgetItem(1,-1,"item3")
AddGadgetItem(1,-1,"item4")

Repeat 
  event = waitwindow()
  
  If event = #PB_Event_Gadget
    
    If EventGadget() = 0
      OnClickFunctionsName()
    EndIf 
    
  EndIf 
  
Until ende
oder mit einer anderen XSLT

Code: Alles auswählen

OpenWindow(0,#PB_Ignore,#PB_Ignore,640,480,"Fenster")
ButtonGadget(0,10,10,75,23,"Button")
ListViewGadget(1,10,50,200,200)
AddGadgetItem(1,-1,"item1")
AddGadgetItem(1,-1,"item2")
AddGadgetItem(1,-1,"item3")
AddGadgetItem(1,-1,"item4")

SetEventHandler(0,#onlick,@OnClickFunctionsName())
run()
im Prinzip egal, man koennte das ganze auch einfach durch reines WinAPI
Gedoens ersetzen, oder sogar fuer ganz andere sprachen exportieren.
Fluid Byte hat geschrieben:
edel hat geschrieben:Eigene Controls einfuegen muss ich bestimmt nicht erwaehnen, oder? ;)
Habt Nachsicht Herr, ich bin bloß ein Amateur ... <)

Du meinst also alle Gadgets die nicht von PB bzw. Windows unterstützt werden. Ich dachte da an ein auf DLL's basierendes Plugin-System. Oder doch lieber per "Code-Injection"?
Naja mir wuerde da auch nen einfaches Rechteck anstatt meines Fensters
reichen, ergo wuerde es da auch ne simple XML tun.

Code: Alles auswählen

<vdCustomClass>
  
  <CustomClass Name="MeineKlasse">
    
    <CustomClassAttribute/>
    
  </CustomClass>
  
</vdCustomClass>


Hm, jetzt juckt es mir aber auch schon in den Fingern :lol:

Verfasst: 22.04.2009 17:43
von DarkDragon
edel hat geschrieben:
Fluid Byte hat geschrieben:
edel hat geschrieben:Kiffi hatte damals mit seinem VD einen sehr guten Ansatz.
Kiffi hat sich auch mal an einem VD versucht? Wusste ich gar nicht. Gibts da noch irgendwas zum runterladen oder alte Quellcodes die eventuell nützlich sein könnten?
Der VD basierte auf dem von Visual Studio, also C#
VB.NET :wink: . Dachte auch erst an C#, aber ist nicht so.

Verfasst: 22.04.2009 21:48
von Fluid Byte
Kiffi hat geschrieben:Aus diesem Grund habe ich als Speicherformat
XML gewählt, welches dann mit XSLT in beliebige Formate gebracht werden sollte.
Hast du es denn damals schon hinbekommen das erstellte XML mittels XSLT in ein "brauchbares" Ausgabeformat umzuwandeln? Würd' mich mal interessieren wie sowas aussehen würde.

Verfasst: 23.04.2009 14:06
von Kiffi
Fluid Byte hat geschrieben:Hast du es denn damals schon hinbekommen das erstellte XML mittels XSLT in ein "brauchbares" Ausgabeformat umzuwandeln?
nein. Bevor ich das XSLT erstellen konnte, bin ich an besagtem Container-
Speicher-Problem hängengeblieben und dann verliess mich auch ziemlich
schnell die Motivation, mich da noch tiefer reinzubeissen.

Ich muss auch gestehen, dass XSLT nicht ganz meine Welt ist. Dürfte also
ein wenig dauern, bis ich wieder in die Materie eingestiegen bin.
Fluid Byte hat geschrieben:Würd' mich mal interessieren wie sowas aussehen würde.
Für VB6 zu PB habe ich vor Urzeiten mal ein XSLT erstellt. Das könnte ich
mal posten, damit Du eine ungefähre Vorstellung davon hast.

Grüße ... Kiffi

Verfasst: 23.04.2009 15:06
von Fluid Byte
Kiffi hat geschrieben:Für VB6 zu PB habe ich vor Urzeiten mal ein XSLT erstellt. Das könnte ich mal posten, damit Du eine ungefähre Vorstellung davon hast.
Wäre sehr interessiert. <)

@edel:
Ich überlege gerade, ist das mit XML/XSLT als Ausgabeformat nicht eigentlich Schwachsinn? Ich meine das wird so oder so ein PB-spezifischer Editor. Deshalb kann ich doch gleich eine pb-ähnliche bzw. identische Syntax benutzen. Ich hab' nie im Sinn gehabt das der VD auch eventuell für andere Sprachen eingesetzt wird. Denn man darf nicht vergessen ich will ja gerade ermöglichen Fenster auch per Quelltext zu erstellen bzw. modifizieren. Und im Editorfenster soll natürlich nicht irgend ein XML-Kram stehen sondern der User soll mit pb-ähnlicher Syntax arbeiten.

Ich möchte auch nicht intern XML verwenden und dann für das Bearbeiten des Quelltextes durch den User wieder mit XSLT formatieren und danach wieder zurück. Entweder nur XML und der User kann dann per XSLT-Konverter in die gewünschte Sprache exportieren oder nur PB-Syntax ohne Zwischenschritte.

Verfasst: 23.04.2009 17:48
von edel
Natuerlich waere das Unsinn. Als Ausgabe soll ja nur das kommen was
man in den Stylesheet schreibt.

Beispiel :

wie oben eine simple xml, koennte von deinem VD gebaut werden ;) :

Code: Alles auswählen

<vd>

  <form id="0" x="ignore" y="ignore" cx="640" cy="480" text="Fenster">

    <button id="0" x="10" y="10" cx="100" cy="23" text="blub"/>
    
    <listbox id="1" x="10" y="50" cx="200" cy="100">
      <listboxitem pos="-1" text="blaaa"/>
      <listboxitem pos="-1" text="bl123"/>
      <listboxitem pos="-1" text="bl345563"/>
      <listboxitem pos="-1" text="bla22342"/>
    </listbox>
      
  </form>
    
  <form id="1" x="20" y="50" cx="640" cy="480" text="Fenster 2"/>

</vd>
Ausgabe :

http://edel.realsource.de/zeugs/test.xml
http://edel.realsource.de/zeugs/test2.xml

Es ist immer die gleiche XML Datei, nur der Stylesheet ist ein anderer.

Der Code ist alles andere als sauber, ich habe leider keine Ahnung von
xsl, man haette sich sicherlich eine Menge sparen koennen, aber als Beispiel reicht es.

Verfasst: 24.04.2009 15:03
von NicTheQuick
Ich muss vorweg sagen, dass ich nur die letzten paar Posts gelesen habe, aber dennoch...

Ich fänd einen Zwischencode wie XML auch gut. Eignet sich ja auch wunderbar zum
Speichern und wieder Laden.

Außerdem wäre es gut, wenn der VD auch auf allen von PB unterstützen Plattformen
laufen würde, sonst würde er mich zumindest nicht interessieren. Durch die
XML-Zwischenschicht könnte man dann auch ohne Probleme Crossplatform designen.

Wichtig ist für so eine Art von Projekt die Skalierbarkeit, damit man ohne viele Probleme
weitere Gadgets einfügen kann. Dazu sollte man sich mal ein paar Tricks von OOP
anschauen, also EIN einheitliches Interface pro Typ (Gadget, Window, Image, ...) oder
einfacher eine abstrakte Klasse, die schon alles einheitliche implementiert. Und davon
leiten sich dann die einzelnen Gadgettypen ab.
Aber das wird wohl den meisten hier schon bekannt sein, wie man an sowas rangeht.

Nun gut. Mehr wollte ich auch schon gar nicht mehr sagen. :wink: