Visual Generate Deluxe - Code Erzeugung (Window, Linux, Mac)

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
mk-soft
Beiträge: 3700
Registriert: 24.11.2004 13:12
Wohnort: Germany

Visual Generate Deluxe - Code Erzeugung (Window, Linux, Mac)

Beitrag von mk-soft »

Vollständigen Programmcode aus Common-Dateien von Visual-Designer, Form-Designer oder von Hand erstellte Dateien.

Update v5.19
- OpenGLGadget hinzugefügt
- Erstellung vom Mac StandardMenus hinzugefügt
- Bugfixes

Update v5.17
- Anpassung an den neuen FormDesigner

Update v5.13
- Code optimiert
- Neu compiliert für Windows und Linux Version

Update v5.12
- Neu: Verwaltung Images überarbeitet und Dateien vom FormDesigner die ImageID mit der WindowID als Prefix erweitert
- Neu: Überprüfung Konstanten erweitert

* Linux Version folgt noch

Update v5.11
- Bugfix: LoadFiles
- Neu:
-> Multi Language über Map - MyLanguage(...)
-> In den Common-Datei(en) wird Mylanguage(...) automatisch gesetzt.
-> MyLanguage(...) kann überall verwendet werden und es wird nach erneuten generieren die Catalog-Datei aktuallisiert.
Visual Generate v5.x

Programm zu Erstellung eines lauffähigen Programmcode aus einen oder mehreren Common Dateien.

Mit Visual Designer, Form Designer oder von Hand erstellte Common Dateien hinzufügen und Start Generieren ausführen.
Das erste gefundene Fenster wird als Hauptfenster aufgerufen.
Nach eine Änderung der Common Dateien das Generieren noch einmal durchführen. Somit werden neue Fenster, Menus, Gadgets. Etc hinzugefügt und vorhande korregiert. Verwendete Konstanten und Fensteraufrufe werden auch in den Benutzer Include-Dateien mit korregiert.

Nach dem Generieren stehen folgende Dateien zu Verfügung.

- Main.pb: Hauptprogramm (Wird nur beim ersten Durchlauf erzeugt.)
- Commonfile.pb : Gemeinsame Common Datei (Wird jedes Mal neu erzeugt)
- EventMain.pb: Event Verteilung (Wird jedes Mal neu erzeugt)
- EventMenu.pb: Alle Events für Menus und ToolBarButtons
- EventGadget.pb: Alle Events für Gadgets
- EventWindow.pb: Alle Events für SizeWindow und ExitWindow
- Option Mehrsprachig
* Mehrsprachenverwaltung über Map
* In den Common-Dateien wird MyLanguage(...) automatich gesetzt.
* Die Map MyLanguage(...) kann überall verwendet werden.
* Die Sprachdatei 'Catalog' wird nach jeden generieren angespasst.

Richtlinien:

Für OpenWindow() eine eindeutige Konstante ohne Trennzeichen "_" vergeben.
Aus dieser werden für alle weiteren Konstanten der Prefix erzeugt um nicht mit anderen Fenster in Konflikt zu kommen.
Beispiel:
Bei OpenWindow(#Main, ...) wird aus den folgenden Konstanten
MenuItem(#Datei_Neu, ...) zu MenuItem(#Main_Datei_Neu, ...)
ButtonGadget(#Ok, ...) zu ButtonGadget(#Main_Ok, ...)

Bei ImageGadget() oder ButtonImageGadget() LoadImage() verwenden. Es kann dadurch automatisch die Grafiken eingebunden werden. Option Image Include.

Von Hand erstellte Common-Dateien muss der Procedure-Name "Open_'WindowID'()" aufgebaut sein.

NEU: FormDesigner v5.xx
Unter PB-IDE Einstellungen "Form"
- PB_Any ausschalten
- Generiere Ereignisprocedur ausschalten
- Generiere Ereignis-Schleife ausschalten

Automatische Namensvergabe von den Proceduren:

- Menus: EventMenu_MenuKonstante()
- Gadgets: EventGadget_GadgetKonstante(EventType)
- Window: EventSize_WindowKonstante()
- Window: EventExit_WindowKonstante()
Downloads:
Visual Generate Deluxe Window v5.x
Visual Generate Deluxe Linux 32 v5.x
Visual Generate Deluxe Linux 64 v5.x
Visual Generate Deluxe Mac v5.x


FF :wink:
Zuletzt geändert von mk-soft am 22.06.2014 16:23, insgesamt 31-mal geändert.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
mk-soft
Beiträge: 3700
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Update:

Datei "LoadLanguage.pb" wird nicht mehr überschrieben, sondern mit neuen Daten gefüllt.

Somit kann die Procedure "LoadLanguage()" nach eigenen bedarf angepasst werden

Neu:
Projekt Datei (*.pbm) als Programparameter

ToDo Liste:
- EventGaget_XYZ() abhängig von Gadget Type
- Verbesserte Oberfläche

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Hallo Michael,

ich habe mir gerade Dein Tool mal angeschaut. Die Grundidee ist nicht
schlecht, weil mir das immer wieder auf den Zeiger geht, mir die Finger an
den Events wundzutippen, wenn ich ein neues Projekt anlege.

Ein paar Sachen sind mir auf die Schnelle aufgefallen:

* Bei meinem ersten Test habe ich mit dem VD ein Fenster erstellt und die
Common erstellt. Dein VG erstellte mir dann daraufhin alle benötigen
Dateien. Die Main.pb habe ich dann geladen und ausgeführt. Funktionierte
:-) Dann bin ich jedoch noch mal in den VD gegangen und habe das
Fenster umbenannt. Da Du die Main.pb nur einmal erstellst und danach
nicht mehr änderst, konnte ich das Projekt nicht mehr starten, weil es ja
jetzt kein Open_Window_0() mehr gab sondern ein nur Open_frmMain().
Ich bin mir der Problematik bewusst, dass eine korrekte Umsetzung sehr
viel Aufwand bedeuten würde.

* Zweiter Test: Zwei Fenster. Im ersten ein Button. In dessen Klick-Event
ein Open_Window_1() rein. Gestartet. Klick auf Button. Window_1() öffnet
sich. Prima! Window_1() geschlossen und schon beendet sich mein
gesamtes Testprojekt. Das liegt daran, dass Du beim EventExit_*() die
Variable Exit auf 1 setzt (egal welches Fenster geschlossen wird) und
daraufhin die Event-Schleife verlassen wird. Wäre schöner, wenn Du die
Event-Schleife nur dann verlässt, wenn entweder kein Fenster mehr da ist
oder das Hauptfenster (kann man ja in Deinen Optionen festlegen)
geschlossen wird.

Dann noch Verbesserungsvorschläge / Unklarheiten:

* Menüzeile Aktion / Common Erstes Fenster: Was kann man damit
machen?

* Menüzeile Datei / Projekt Speichern: Bitte einen Shortcut (Ctrl + S)
drauflegen. Ich habe mir angewöhnt, regelmäßig diese Tastenkombination
zu drücken, um zu speichern.

* Wenn ich auf "Start Generieren" klicke, protokollierst Du ja in dem
ListView unten, welche Dateien geschrieben werden. Bitte schiebe doch die
aktuell geschriebene Zeile immer in den sichtbaren Bereich. Dann kann
man ohne manuelles Scrollen sofort sehen, was passiert ist. Der
Übersichtlichkeit halber würde ich noch eine Leerzeile zwischen 2
Generierungsvorgängen einfügen.

* Ein paar Typos: Das können wir via PN bekaspern, wenn Du möchtest.

So, das war's -- wie gesagt -- auf die Schnelle.

Grüße ... Kiffi
Hygge
Benutzeravatar
mk-soft
Beiträge: 3700
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Danke fürs Feedback :wink:
* Menüzeile Aktion / Common Erstes Fenster: Was kann man damit
machen?
Wenn mehrere Common Dateien eingefügt werden kann die markierte Common Datei nach oben verlegt werden. So mit zum erste Fenster geändert werden.


* Zweiter Test: Zwei Fenster...
Das liegt daran, dass Du beim EventExit_*() die
Variable Exit auf 1 setzt (egal welches Fenster geschlossen wird) und
daraufhin die Event-Schleife verlassen wird.
Habe ich noch mal getestet.
Das verhalten ist richtig da wenn man am Hauptfenster das Schließen betätigt kommt das Event auch am Hauptfenster an.
Bei ein zweiten Fenster schließen kommt dieses auch nur an den Event für das Zweite Fenster an.

Eine Entscheidung wie das Programm auf das Schließen des Hauptfenster reagiert halte ich den Programmierer frei.
In der der Regel sperre ich das Hauptfenster mit DisableWindow(...) bis das Unterfenster geschlossen ist.


Shortcut wie Ctrl+S und Verbesserung der Ausgabe habe ich mit zu meiner TuDo Liste aufgenommen.

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
mk-soft
Beiträge: 3700
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

*** UPDATE Rev.20070414 ***

1. Nach wunsch Schortcuts für Neu, Laden, Speichern hinzugefügt.

2. Ablauf Menu Speichern und Speichern als Überarbeitet.

3. Ausgabe Scrollt jetzt mit.

Bugfix:
Sonderfall MDIGadget. Menueintrag wird jetzt mit richtigen Prefix gesetzt.

Betreffend Window Konstante:

Die Window Konstante ist die Basic für alle zu generierenden Events.
Die Konstante bestimmt den Prefix für alle Menus und Gadgets aus denen dann alle Event Proceduren generiert werden.
Eine nachträgliche Änderung führt daher zu einen Problem da nicht festgestellt werden kann wie die vorherige Konstante lautete.

Sollte man den noch die Window Konstante ändern muss vor den neuen generieren alle Event Proceduren mit Suchen und Ersetzen
auf die neue Konstante umgeschrieben werden.
Sowie im Main.pb Open_Window??? korrigiert werden.

FF
:wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

mk-soft hat geschrieben:*** UPDATE Rev.20070414 ***
Danke! Werde ich mir gleich mal anschauen.
mk-soft hat geschrieben:Eine nachträgliche Änderung führt daher zu einen Problem da nicht festgestellt werden kann wie die vorherige Konstante lautete.
Mein Lösungsvorschlag für eine VG-Deluxe ;-)

Beim ersten Generieren der Source merkst Du Dir in einer separaten Liste
(die projektabhängig geladen/gespeichert wird) die initial vergebenen
Konstanten (z.B. Window_0, Button_0, etc.). Konvertierst Du den Code ein
weiteres mal, prüfst Du nach, ob die Konstanten noch vorhanden sind.
Wenn nicht, dann kann eine Umbenennung von Objekten vorgenommen
worden sein (beispielsweise Window_0 -> frmMain). In diesem Fall kannst
Du ein Fenster aufploppen lassen, in dem die Objekte vom User neu
zugewiesen werden können. Dann weißt Du, wie das Objekt vorher hieß
und kannst auf dieser Basis die Objekte des generierten Sources
umbenennen. Das Visual Studio 2003 macht das z.B. auch so. (VS 2005
merkt das von selber ;-))

Ist viel Arbeit -- ich weiß. Aber das wäre zumindest eine Möglichkeit.

Grüße ... Kiffi
Hygge
Benutzeravatar
mk-soft
Beiträge: 3700
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

@Kiffi
Guter Vorschlag. Wird aber noch ein wenig dauern bis die Deluxe Version kommt. :allright:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
mk-soft
Beiträge: 3700
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

MEGA UPDATE Visual Generate Deluxe

Nach Kiffis Anregung hier nun die Deluxe Version 4.0 (Beta)

Nachträgliche Änderungen in allen bereichen nun möglich.
Korrigiert im gesamten Code, auch in den "User Include Files" alle Änderungen.

In den Diaglogboxen "Suchen und Erstzen" alle Änderungen zuweisen.
Butten "Binden" oder Doppelklick auf den Eintrag und dann "Weiter".

Richtlinien:
- Keine Unterstriche der Window Konstante.

Hinweis:
- Alte Projektdateien sind nicht mehr gültig.

Bitte ausgiebig Testen damit möglichst bald das Beta verschwindet.

Danke!

FF :wink:
Zuletzt geändert von mk-soft am 06.05.2007 23:31, insgesamt 1-mal geändert.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
mk-soft
Beiträge: 3700
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Alle neuen Versionen im englischen Forum

http://www.purebasic.fr/english/viewtopic.php?t=26943
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
mk-soft
Beiträge: 3700
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Update 18.05.2005

Bugfix:
- Default Code für Procedure EventExit

Neu:
- UserGadget.
- Letztes Projekt automatisch öffnen.


FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten