Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

IDE
Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  

Wie findest du das Projekt?
Gut
86%
 86%  [ 19 ]
Schlecht
0%
 0%  [ 0 ]
Interessiert mich nicht!
13%
 13%  [ 3 ]
Stimmen insgesamt : 22

Autor Nachricht
SL



Anmeldungsdatum: 06.12.2009
Beiträge: 43

BeitragVerfasst am: 19.01.2010, 20:47    Titel: Antworten mit Zitat

Nein, kein Header. Das soll ganz normaler Quelltext sein, der einfach im Quelltext an passender Stelle (am besten ganz am Anfang) eingefügt wird und natürlich editierbar ist.

Mir fällt gerade noch was ein: Es geht um die - möglichst komfortable - Deklaration / Dimensionierung von Variablen. Da finde ich es zunächst prinzipiell übersichtlicher, wenn Variablen nicht mitten im Quellcode deklariert werden, sondern jeweils direkt am Anfang des Unter/Haupt—Programms.

Das erfordert jedoch eine ziemlich mühsame Hin- und Her-Springerei im Quelltext. Wie wäre es, wenn die IDE das besorgt?

Also, sobald eine nicht deklarierte Variable verwendet wird, stellt die IDE das fest, springt an den Kopf des Unterprogramms und unterbreitet einen Vorschlag zur Dimensionierung. Der Benutzer hat dann folgende Auswahlmöglichkeiten:

    - Den Vorschlag übernehmen / ändern / verwerfen
    - Das Ganze eine Ebene höher in das Hauptprogramm transferieren. Wobei das Spiel dort wieder wie gehabt beginnen kann.

Sobald die Deklaration beendet oder auch gar nicht erfolgt ist, springt mittels „shortcut“ der Cursor wieder an die ursprüngliche Ausgangsposition im Quellcode zurück.

Noch mehr Vorschläge gefällig oder langt’s langsam?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Stueber



Anmeldungsdatum: 07.07.2008
Beiträge: 202

BeitragVerfasst am: 19.01.2010, 20:54    Titel: Antworten mit Zitat

Ich nehme immer alle Vorschläge an und freue mich, deine bisherigen waren auch ziemlich gut. lächeln
Bei dem neuesten bin ich mir über die Machbarkeit nicht sicher.
Und zum Thema Header: Wenn meine IDE automatisch einen Header mit Deklerationen schreibt und den dann automatisch ganz oben einfügt kommt das meines Wissens nach auf das gleiche raus wie wenn man die Dekleration ganz oben einfügt. zwinkern Wenn es einen Grund dagegen gibt kannst du mich gerne verbessern.
Deine Vorschläge hab ich mir alle aufgeschrieben, gerade gibt es größere Umbauten intern, aber sobald das fertig ist gehts mit den kleineren Sachen weiter.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Stueber



Anmeldungsdatum: 07.07.2008
Beiträge: 202

BeitragVerfasst am: 19.01.2010, 21:28    Titel: Antworten mit Zitat

Die Planungsphase für Vererbung ist jetzt abgeschlossen.
Ich schreibe hier nur, dass wenn ich einen riesigen Fehler übersehen habe, der noch erkannt wird.

Also, der Syntax wird wie folgt sein:
Code:
type a
    i as integer
    declare sub p()
end type

sub a.p()
    print i
end sub


type b
    a_Interface()
    i2 as integer
end type

a_Impl(b)



type c
    b_Interface()
end type

b_Impl(c)




dim as c b1
b1.i = 76
b1.p()
sleep

Anstatt eine Zeile "extends parentName" sind es zwei Zeilen, da zwei Zeilen kaum mehr sind aber das mir so sehr viel Aufwand abnimmt. Das erste ist ein Makro, dass die Dekleration vererbt, das zweite die Implementierung. Ich habe das Konzept schon getestet und es funktioniert, auch mit Ketten von Vererbungen (hier: a->b->c).
Es kommt noch besser: Die aus C++ bekannte Mehrfachvererbung, die nur von wenigen Sprachen unterstützt wird, funktioniert bei diesem Konzept. Wenn irgendjemand noch Einwände hat wäre es gut, wenn er sie jetzt nennt. Und das eine Zeile besser als zwei wäre ist mir klar, aber mir wird wirklich sehr viel Arbeit erspart.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 19.01.2010, 21:32    Titel: Antworten mit Zitat

SL hat Folgendes geschrieben:
Nein, kein Header. Das soll ganz normaler Quelltext sein, der einfach im Quelltext an passender Stelle (am besten ganz am Anfang) eingefügt wird und natürlich editierbar ist.

Warum denn nicht in einer Header-Datei? Die sind schließlich auch in anderne Sprachen genau für so was gedacht. "Weil VBDOS es so machte"? Alt ist nicht immer gut!
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
SL



Anmeldungsdatum: 06.12.2009
Beiträge: 43

BeitragVerfasst am: 19.01.2010, 23:37    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
"Weil VBDOS es so machte"? Alt ist nicht immer gut!

Nein, DOS ist mausetot! Doch so umwerfend sind die Fortschritte bei FB auch nicht. Als VBDOS noch "lebte" konnte man problemlos auf Papier drucken, Schriftarten und Schriftgröße einstellen (na gut, allzu viele waren es nicht) und genau bestimmen in welcher Zeile und Spalte der Buchstabe auf’s Papier sollte. Wie geht das mit FB?

(Sorry Stueber, das war jetzt eine ziemliche Thema-Abweichung. Ich hätte dir ja gerne zur "Vererbung" was geschrieben, doch ehrlich gesagt, ich werde das vermutlich nicht benötigen und Ahnung habe ich davon auch keine. Bei mir ist das "B" von "BASIC“ wörtlich zu nehmen.)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 19.01.2010, 23:45    Titel: Antworten mit Zitat

naja, das hat eher wenig mit FB als mit der wesentlich höhren abstraktionsebene der windows-druck-api zu tun. zwinkern
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 20.01.2010, 18:41    Titel: Antworten mit Zitat

Mächtige APIs sind meistens eben mehr oder weniger Komplex. Und mit der GDI ist es fast kein Unterschied (Nein, es ist eigentlich überhaupt kein Unterschied...) ob man auf einen Bildschirm zeichnet, mit einem Drucker druckt (Ob nun lokal, übers Netzwerk oder übers Internet oder auf einem virtuellen Drucker, macht btw. auch keinen Unterschied im Quellcode) oder z.B. auf einem Plotter. Oder auf einem Webstuhl. Oder....
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 20.01.2010, 20:58    Titel: Antworten mit Zitat

Zitat:
Also, sobald eine nicht deklarierte Variable verwendet wird, stellt die IDE das fest, springt an den Kopf des Unterprogramms und unterbreitet einen Vorschlag zur Dimensionierung. Der Benutzer hat dann folgende Auswahlmöglichkeiten

Ich bitte zu beachten, dass die Variablendeklaration vielleicht auch nur im aktuellen SCOPE-Block gewünscht ist, z. B. in der aktuellen Schleife oder in der Schleife drumherum usw. Halte ich für recht kompliziert, wenn ich mich in einem stark verschachtelten Konstrukt erst mal nach außen vorarbeiten muss.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Stueber



Anmeldungsdatum: 07.07.2008
Beiträge: 202

BeitragVerfasst am: 22.01.2010, 13:53    Titel: Antworten mit Zitat

Ich halte das auch für etwas kompliziert.

Aber dafür kann ich etwas neues Berichten:
Schaut euch diesen Quelltext an:
Code:
type a
    public:
    i as integer
    declare sub p()
end type

sub a.p()
    print i
end sub




type b extends a
    i2 as integer
    declare sub p3()
end type

sub b.p3()
    i = 4
end sub




type c extends b
   
end type






dim as c t
t.i = 33
t.p3()
t.p()





sleep

Was er macht sollte den meisten klar sein: Er erzeugt eine Instanz von c, setzt den Member i auf 33, ruft dann das sub p3() auf und dann noch das sub p().
Wie man aber der Dekleration entnehmen kann hat der Type c gar keine Member. Trotzdem funktioniert das kompilieren bei mir ohne Probleme. Der Trick ist, dass vor dem Compilieren der Code nochmal temporär verarbeitet wird. Alle Type-Deklerationen werden von meinem Tool gelesen, umgeschrieben und wieder in die .bas Datei geschrieben. Dabei werden Variablen in Propertys umgesetzt. Als Schlüsselwort dient hier "extends". Wenn ihr Screenshots oder ein Video sehen wollt lad ich sowas gerne hoch. Ich schätze, dass ich das eigentliche Programm heute Abend hochladen kann.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 22.01.2010, 14:31    Titel: Antworten mit Zitat

Eventuell solltest du deine bemühungen den compiler zu erweitern, bzw auszutricksen ausgliedern und fortsetzen. Das an die IDE zu binden ist in meinen augen verschwendung. Der Vor-compiler von dir scheint ja schon einiges zu können. Eventuell solltest du das auch im Englischen Forum publizieren, damit sich die entwickler was abgucken können lächeln
_________________
// nicht mehr aktiv //
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Stueber



Anmeldungsdatum: 07.07.2008
Beiträge: 202

BeitragVerfasst am: 22.01.2010, 14:33    Titel: Antworten mit Zitat

Der ist nicht an die IDE gebunden. lächeln
Der funktioniert mit jeder IDE, die ganzen Test hab ich mit FBIde gemacht, ohne Probleme.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 22.01.2010, 16:06    Titel: Antworten mit Zitat

Ja das ist ja das Tolle, dass es ein externes Modul ist.
Ist erfreulich, dass du das doch noch mit der "extends"-Syntax umgesetzt hast und ins englische Forum gehört das sowieso, sag ich ja schon seit langem zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Stueber



Anmeldungsdatum: 07.07.2008
Beiträge: 202

BeitragVerfasst am: 22.01.2010, 19:01    Titel: Antworten mit Zitat

Ist jetzt im englischen Forum.

Ihr könnt den Vorcompiler jetzt testen.
http://users.freebasic-portal.de/stueber/Tools/pre.zip

Die Installation ist einfach:
1. öffne deinen FB Ordner
2. Downloaded und entpackt pre.zip
3. benennt fbc.exe im FB Ordner um in fbc2.exe
4. kopiert QtCore4.dll, mingwm10.dll, libgcc_s_dw2-1 und fbc.exe aus pre.zip in deinen FB Ordner

Jetzt kannst du den Vorcompiler mit jeder IDE benutzen. (FBIde hab ich getestet)
Die Version enthält auch einfache Templates. Beispiel:
Code:
template container
  As t1 var1
  Declare Sub p()
End template


Sub container.p()
    Print var1
End Sub




Dim As container<<<string>>> c

c.var1 = "Hallo2"
c.p()




Dim As container<<<integer>>> c2

c2.var1 = 42
c2.p()

Sleep
 

Der Code läuft auch mit dem Vorcompiler.
Templates sind aber viel weniger entwickelt als Vererbung, sowohl technisch als auch von den Bugs her.

Bekannte Fehler:
Private und Public werden nicht richtig vererbt. (daran arbeite ich gerade)
Eventuell sind Endlosschleifen möglich, aber selten.
Im Zusammenhang mit Types sollte kein : und _ verwendet werden, der Code ist sonst in den meisten Fällen fehlerhaft.
Zeilennummern von Fehlern stimmen nicht.

Der Quelltext liegt bei und steht unter der GPL.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 28.01.2010, 20:42    Titel: Antworten mit Zitat

Der PreCompiler ermöglicht ja schon Vererbung und Templates, der nächste Schritt wären dann Klassen.
Wie wäre es damit:

Code:
Class MyClass
   Constructor ()
      x = 5
      y = 5
   End Constructor
   
   As Integer x
   As Integer y
   
   Method methode_function() As Integer
      Return x
   End Method
   
   Method methode_sub()
      Print y
   End Method
End Class


Der Vorteil von FB ist, dass die Types quasi schon Klassen sind, nur haben sie Einschränkungen. Dieser Code ließe sich durch leichte Anpassungen sofort compilieren.

Daraus müsste in etwa folgendes werden:

Code:
Type _MyClass
   Declare Constructor()
   
   As Integer x
   As Integer y
   
   Declare Function method_function() As Integer
   Declare Sub method_sub()
End Type

Constructor _MyClass()
   x = 5
   y = 5
End Constructor

Function _MyClass.method_function() As Integer
   Return x
End Function

Sub _MyClass.method_sub()
   Print y
End Sub

Dim As _MyClass MyClass


Eine Methode mit Rückgabewert ist eine Function und ohne eine Sub. Die "In-Class"-Methoden müssten also gegen entsprechende Deklarationen ersetzt werden und der Code hinter die Klasse kopiert werden.

Das Ganze müsste dann wieder mit der Vererbung zusammenlaufen aber generell sollte das doch ne gute Lösung sein. grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Stueber



Anmeldungsdatum: 07.07.2008
Beiträge: 202

BeitragVerfasst am: 29.01.2010, 22:25    Titel: Antworten mit Zitat

@modd: wie im IRC besprochen, kann man machen.

So, es ist Freitag Abend. Lange ist es her dass es etwas neues zur eigentlichen IDE gab. Heute habe ich zwar nichts neues fertiges aber hier ist mal ein Bild zum neuen Designer:


Die Neuerungen:
- Property Manager (an Stelle von Dialogen), als DockWidget
- Controls werden über einen Baum ausgewählt (an Stelle des Dialogs), auch als DockWidget

Dann noch die wichtigste Änderung, die eigentlich der Grund für das Neuschreiben war:
Früher waren Buttons, Checkboxen, etc. fest im Quelltext des Designers integriert. Auch alle Einstellungen waren fest im Quelltext eingebaut. Das Hinzufügen eines neuen Controls war schwer und der Quelltext war schwer nachzuvollziehen. Das alles hat dazu geführt das der Designer nur schwer zu pflegen war, daher habe ich alle genannten Probleme behoben.
Man könnte sich fragen wie man Buttons setzen kann wenn es doch nicht im Quelltext steht. Die Lösung sind XML Dateien. Der Designer ist eigentlich kein Designer sondern ein XML Parser. Er stellt nur Widgets zur Verfügung die in den XML Dateien beschrieben sind und baut dann aus Informationen in den XML Dateien eine Ausgabe Datei. Diese Ausgabe Datei ist auch eine XML Datei die von der IDE unmittelbar vor dem Compilieren in eine temporäre .bas Datei umgewandelt wird, ebenfalls nach den Regeln in der XML Datei.

So sieht eine XML Datei für ein Control aus (Beispiel: Button):
Code:
<Controls>
  <ControlName>Button</ControlName>
  <Template>QPushButton</Template>
  <Lib>Winapi</Lib>
  <Type>Buttons</Type>
 

  <Property>
    <Name>text</Name>
    <Type>string</Type>
    <MustHave>true</MustHave>
    <Default>Button-Text</Default>
    <ScriptValueChange>widget2.setButtonText(new_value)</ScriptValueChange>
  </Property>

 

  <Property>
    <Name>x</Name>
    <Type>integer</Type>
    <MustHave>false</MustHave>
    <Default>0</Default>
    <Min>0</Min>
    <Max>3000</Max>
    <Tooltip>X-Position des Fensters</Tooltip>
    <ScriptValueChange>widget2.moveWidget(new_value,y);</ScriptValueChange>
  </Property>


  <Property>
    <Name>y</Name>
    <Type>integer</Type>
    <MustHave>false</MustHave>
    <Default>0</Default>
    <Min>0</Min>
    <Max>3000</Max>
    <Tooltip>Y-Position des Fensters</Tooltip>
    <ScriptValueChange>widget2.moveWidget(x,new_value)</ScriptValueChange>
  </Property>

  <Property>
    <Name>width</Name>
    <Type>integer</Type>
    <MustHave>false</MustHave>
    <Default>100</Default>
    <Min>0</Min>
    <Max>3000</Max>
    <Tooltip>Breite des Fensters</Tooltip>
    <ScriptValueChange>widget2.resizeWidget(new_value,height)</ScriptValueChange>
  </Property>

  <Property>
    <Name>height</Name>
    <Type>integer</Type>
    <MustHave>false</MustHave>
    <Default>60</Default>
    <Min>0</Min>
    <Max>3000</Max>
    <Tooltip>Höhe des Fensters</Tooltip>
    <ScriptValueChange>widget2.resizeWidget(width,new_value)</ScriptValueChange>
  </Property>
</Controls>


Auch der Zusammenhang zwischen Bspw. dem Property width und der Breite in der Vorschau wird nicht im Designer Quelltext festgelegt. Der Zusammenhang wird über Scripts gemacht, die Scriptsprache hat Schleifen, Bedingungen, Funktionen und sogar Objekte. Das wird erreicht durch die Script Klassen von Qt.
Eventuelle Fragen oder Vorschläge werden wie immer beachtet und beantwortet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Stueber



Anmeldungsdatum: 07.07.2008
Beiträge: 202

BeitragVerfasst am: 06.02.2010, 23:22    Titel: Designer 2.0 Antworten mit Zitat

Der Designer der bei der aktuellen öffentlichen Version der IDE dabei ist, ist ja ganz nett, aber er hat einige Schwachstellen:
- unübersichtlich (überall Dialoge)
- komplizierter Quelltext
- Eigenschaften und Controls hinzufügen dauert ewig und ist für nicht-Experten kaum machbar
- zurückparsen zur Vorschau sehr Fehleranfällig und kaum verwandbar

In einigen Chats mit Sebastian haben wir dafür eine Lösung gesucht die ich heute vorstelle.
Alle Informationen die der Designer benutzt (Controls, Eigenschaften, Reaktion auf ändern der Eigenschaften) werden extern vom Programm gelagert. Die Beschreibung von Controls und Eigenschaften wird über .xml Dateien gemacht (weiter oben ein Beispiel) und die Reaktion auf das Ändern einer Eigenschaft wird gescriptet, ist also frei anpassbar, Bsp. das Ändern der Buttonbeschriftung beim Ändern der Eigenschaft "text".
Ausserdem werden die Controls jetzt nicht mehr über einen Dialog erzeugt, sondern werden über einen viel übersichtlicheren Baum erzeugt.
Auch Eigenschaften werden nicht mehr über Dialoge geändert, dafür wird jetzt ein Propertymanager verwendet.

Features:
- Drag'n'drop für Position und Größe der Controls
- Controls werden in .xml Dateien beschrieben
- Eigenschaften auch
- Die Kategorien im Control Baum sind auch frei erzeugbar
- Winapi und GTK
- Zusammenhänge werden gescriptet
- erweiterbar auf beliebige andere Bibliotheken (wenn das Layout-Management ähnlich dem von Winapi oder GTK ist)
- plattformunabhängig
- Management von Parent->Child

Download: hier
Da der GTK Modus noch nicht fertig ist entfällt ein Linux Download.
Wenn der Designer fertig ist wird er fest in die IDE integriert.
Das Modul das die Ausgabe .xml Dateien verwendbar macht folgt in den nächsten Tagen.

Screenhots:

Der ganze Designer


Der Control-Baum


Der Propertymanager
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 07.02.2010, 18:50    Titel: Antworten mit Zitat

Ich hab den Designer etwas getestet und folgendes ist mir aufgefallen:

Ohne Window geht ja gar nichts, also sollte der Container/Window immer offen sein und am besten ganz oben stehen.

Aus der Windowswelt ist man Doppelklicks gewöhnt, beim Designer werden dabei aber immer zwei Elemente erzeugt.

Wenn man beispielsweise einen Button erzeugt hat und danach eine Liste erstellen will, muss man erst wieder ins eignetliche Fenster klicken, also raus aus dem Button, sonst wird die Liste in den Button gesetzt und man kann nichts mit anfangen. Dementsprechend sieht die erzeugte XML auch aus, eins ins andere verwurschtelt.

Ansonsten lief das Ganze bei mir sehr flüssig und auch ohne Abstürze durchgeknallt
Wenn man das dann noch in sein Projekt einbinden kann, werd ich wieder etwas testen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Stueber



Anmeldungsdatum: 07.07.2008
Beiträge: 202

BeitragVerfasst am: 08.02.2010, 21:11    Titel: Antworten mit Zitat

Hab mal ein paar Kritikpunkte verbessert und neue Features eingebaut:
- Controls werden über Doppelklicks eingefügt
- Fenster haben wie die anderen Controls auch die schwarzen Quadrate für die Größe
- eine Baumansicht mit allen Controls die man gesetzt hat und die Möglichkeit ihnen Namen zu geben für bessere Übersicht im Baum und im späteren XML
- viele Fehler wurden behoben
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Stueber



Anmeldungsdatum: 07.07.2008
Beiträge: 202

BeitragVerfasst am: 11.02.2010, 22:55    Titel: Antworten mit Zitat

Heute hat sich viel getan bei der IDE, deswegen ein kurzer Statusbericht:
- Der Designer ist jetzt komplett in die IDE integriert
- Das Kompilieren von XML Dateien ist jetzt mit der IDE möglich und wurde erfolgreich von mir getestet
- Ich habe angefangen auf Scintilla umzusteigen und bin schneller voran gekommen als gedacht. Da ich schon die meisten wichtigen Funktionen des alten Code Editors nachgebaut habe folgt bald eine neue IDE Version. Durch Scintilla werden bald Features wie Codefalten, Codetips und Autovervollständigung möglich.
- Das Laden von Guis ist fast fertig und wird in der nächsten Version dabei sein.

Update:
Der neue Syntax-Highlighter ist gerade fertig geworden. Er highlightet viel schneller als der alte und behebt viele Bugs des alten. Ausserdem kann er jetzt mit Präprozessoren und Operatoren umgehen, was der alte nicht konnte.

Hier ein Screenshot davon:


Update2: Ich habe gerade festgestellt dass FreeBASIC auch mehrzeilige Kommentare hat. Der neue Syntaxhighlighter kann jetzt auch mit mehrzeiligen Kommentaren umgehen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Stueber



Anmeldungsdatum: 07.07.2008
Beiträge: 202

BeitragVerfasst am: 14.02.2010, 22:44    Titel: Antworten mit Zitat

So, in den letzten Wochen hat sich viel rund um die IDE getan, deswegen stell ich euch jetzt mal die aktuellste Version vor, auch wenn ich mir für diese Version viel mehr Ziele gesetzt hatte als ich erreicht habe.

Neue Features
Neuer GUI-Designer
Wie man meinen letzten Posts entnehmen kann habe ich einen neuen GUI Designer entwickelt, der auf XML-Dateien basiert und viele Vorteile im Vergleich zum alten bringt.
Er erzeugt ein XML das kurz vor dem Kompilieren in Code umgesetzt wird. Ausserdem kann er die XML Dateien wieder laden um die GUI weiter zu bearbeiten. Die Bedienung wurde auch verbessert.
Einstellungen werden über einen Property-Browser gemacht, alle Widgets die gesetzt wurden werden in einen Control-Baum eingefügt und Widgets werden über einen Baum erzeugt (anstatt über Buttons).
Auch fällt vermutlich auf, dass nicht jedes Control immer die schwarzen Quadrate hat sondern nur das Control mit dem Fokus.

http://users.freebasic-portal.de/stueber/bilder/designer.PNG

So gehts:
1. Ein neues Projekt anlegen
2. Klick auf Projekt->GUI Designer
3. Nach dem "designen" auf Designer->XML erzeugen klicken
4. Als Speicherort den Projektpfad wählen und dem XML einen Namen geben.
5. Eine leere Datei zum Projekt hinzufügen oder eine .bas Datei öffnen.
6. Mit "declare sub gui_xml()" die GUI Funktion deklarieren und mit gui_xml() die GUI erzeugen.


Neue Projektdateien
Man könnte meinen dass das kein Feature ist. Damit hätte man eigentlich auch recht aber durch die neuen Projektdateien kommen zwei neue Features hinzu.
Zum einen das Speichern von Profilen zum kompilieren. Beim erzeugen eines neuen Projekts werden die beiden Profile "Debug" und "Release" erzeugt, aber man kann theoretisch unendlich viele verwenden. Mit einem Klick in der Toolbar kann das aktuelle Profil geändert werden.

Die zweite Neuerung ist zwar klein aber für viele Leute sehr wichtig: Es werden jetzt relative Pfade benutzt. Um genau zu sein müssen alls .bas Dateien sich sogar im Ordner der Projektdatei befinden (wird noch ein bisschen freier gemacht).
Durch die neuen Projektdateien können die alten Projektdateien natürlich nicht mehr verwendet werden.

Neuer Einstellungsdialog
In der Vergangenheit kam oft der Wunsch mehr einstellen zu können.
Der neue Einstellungsdialog enthält zwar noch nicht alle Einstellungen die sinnvoll wären aber lässt dafür viele Einstellungen im Bezug auf den Syntaxhighlighter zu. In Zukunft wird sich in diesem Dialog noch viel mehr Einstellen lassen.



Umstieg auf Scintilla
Durch den Umstieg auf Scintilla sind viele wichtige Features wie Codefalten und Calltips in greifbare Nähe gerückt (wenn auch noch nicht eingebaut). Trotzdem wurden schon einige Kleinigkeiten von Scintilla in die IDE eingebaut:
- Der Zeilenzähler von Scintilla
- Zoom in und Zoom out
- Einrücken
- Ein neuer Syntax-Highlighter, der auch mit Präprozessoren und mehrzeiligen Kommentaren zurecht kommt und unterschiedliche Schriftgrößen erlaubt.



>>>Download<<<

Bekannte Probleme
- löschen von Widgets im Designer funktioniert noch nicht
- das Laden und Erzeugen von XML Dateien klappt zwar, aber das Codeerzeugen funktioniert nur mit Fenstern
- sehr lange mehrzeilige Kommentare werden nicht richtig hervorgehoben

Zukünftige Pläne:
Die nächste Version wird in ca. 2-4 Wochen erscheinen und folgende Features auf jedenfall mit sich bringen:
- Projektvorlagen
- Einen voll funktionsfähigen GUI-Designer
- mehr Einstellungen
- mehr Features von Scintilla sollen genutzt werden (Calltips)


Update:
Der GUI Designer tut jetzt wie er soll und das Löschen von Widgets ist jetzt auch möglich. Ausserdem wurde ein kritischer Bug behoben und der Designer hat jetzt 5 Controls zur Auswahl (es werden noch viel mehr lächeln).

>>>Download<<<
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  Weiter
Seite 9 von 10

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz