[Update - 02 Jan 2018 00:36:12] - Unterstützung von Menüs und Status-Bars (LINK)
[Update - 07 Mär 2016 09:59:20] - direkte Unterstützung der ImageID sowie neues Beispiel für Fonts & Images (LINK)
[Update - 06 Mär 2016 14:39:36] - Font()-Funktionen hinzugefügt (LINK)
[Update - 04 Mär 2016 03:24:40] - Aufsplittung in Haupt-Modul + 4 AddOn-Varianten (LINK)
[Update - 03 Mär 2016 02:12:57] - Suffixed- sowie ..._IDonly- und ..._NameOnly-Varianten hinzugefügt. Ermöglichen autom. Einrücken in der IDE (LINK)
---
Hi zusammen, auf Grund der frühen Stunde nur ganz kurz ein paar Infos zu dem Include-Modul: 'DynamicDialogs'.
(Weitere Infos - wie z.B. eine Auflistung aller Funktionen etc. - schiebe ich evtl. noch morgen oder am WE nach.)
Über meinen DialogWrapper haben einige von Euch ja evtl. schon was im englischen Forum gelesen und ihn u.U. ja auch schon mal ausprobiert.
Der 'Wrapper' ist inzwischen fertig (bis auf einige Kleinigkeiten) und somit wollte ich ihn euch nun unter dem neuen Namen 'DynamicDialogs' zur Verfügung stellen.
Was macht 'DynamicDialogs'?
Mit Hilfe von 'DynamicDialogs' könnt Ihr kinderleicht dynamische GUIs erstellen.
Hierfür wird von 'DynamicDialogs' ein syntax-korrekter XML-Code erzeugt, aus dem dann über die Dialog-Library von PureBasic 'Dialoge' erstellt werden.
Im Gegensatz zum simplen Wrapper sind in 'DynamicDialogs' nun auch Funktionen enthalten, mit denen man auf einfache Weise den XML-Code überprüfen und auch Dialoge erstellen bzw. öffnen kann.
(Schaut hierzu einfach mal in das kleine Beispiel am Ende der 'DynamicDialogs.pbi' Include-Datei.)
In der Zip sind momentan zwar schon einige Demos dabei, aber da werde ich nochmal Hand anlegen.
Was ist noch neu - im Vergleich zum 'alten' Wrapper'?
- Die 'suffixed' Variante der Funktionen:
Mich hatte es etwas gestört, dass die IDE nicht automatisch die Modul-Funktionen im Code so einrückt, wie man es ja auch gerne beim XML-Code hat.
Um eigene Schlüsselwörter automatisch einrücken zu lassen, bietet die IDE ja die Möglichkeit, diese in die "Einrücken'-Liste in den PB-Einstellungen einzutragen. Das habe ich dann probeweise mit den Funktionen von 'DynamicDialogs' gemacht.
Da die Funktionsnamen sich aber zum Teil mit anderweitig verwendeten Variablen überschnitten und die IDE beim Einrücken keinen Unterschied macht, ob man sich im NameSpace des Moduls befindet oder nicht, wurden Zeilen eingerückt, die so nicht beabsichtigt waren.
Somit habe ich noch eine weitere Modul-Variante hinzugefügt, in der die Dialog-Befehle den Suffix "__" bekommen haben.
Es gibt nun also das Modul 'DynamicDialogs', bei dem die Funktionen wie beim Wrapper Window(), hBox(), etc. lauten
und ein Modul 'DynamicDialog_suffixed' bei dem die Dialog-Befehle den Zusatz "__" haben - also Window__(), hBox__(), etc.
Für diese Funktionen mit dem Suffix "__" konnte ich dann also in den IDE-Einstellungen die Schlüsselwörter zum Einrücken eintragen, ohne Überschneidungen mit anderen Variablen, etc. befürchten zu müssen.
Najaaa ... und da das Eintragen von 28 Schlüsselwörtern natürlich recht mühsam ist und Programmierer im Allgemeinen ja 'seeeehr bequeme Menschen' sind, hab ich auch gleich noch das Tool dazu geschrieben, mit dem man auf Knopfdruck die entsprechenden Schlüsselwörter in die Konfigurationsdatei seiner PureBasic-IDE eintragen kann.
(Achtung: Damit das entsprechende Tool "DynamicDialogs_Suffix Indentation-Injector" korrekt in die Konfiguration von PB schreiben kann, muss die IDE zuvor beendet werden. Hiefür hab ich Euch dann auch schon mal als EXE beigelegt)
Den Unterschied in der Lesbarkeit des Codes könnt Ihr im folgenden Beispiel sehen (oben ohne, unten mit Suffix und automatischen Einrücken):
Code: Alles auswählen
; This code was auto-indented with (Ctrl)-I
; To inject the indentation-information for the 'DynamicDialogs_suffixed' functions, please use the 'DynamicDialogs_Suffix Indentation-Injector.pb'
UseModule DynamicDialogs
Panel()
Tab("Tab 1")
Splitter(#PB_Ignore, "", 100,200,#PB_Splitter_Vertical,0,0,0,"0")
Button()
Editor()
EndSplitter()
EndTab()
Tab("Tab 3","2")
Splitter(#PB_Ignore,"",200,100, #PB_Splitter_Vertical)
Button()
Editor()
EndSplitter()
EndTab()
EndPanel()
UnuseModule DynamicDialogs
; The following code is also auto-indented with (Ctrl)-I, but it was indented right, because the indentation-Information has been injected
UseModule DynamicDialogs_suffixed
Panel__()
Tab__("Tab 1")
Splitter__(#PB_Ignore, "", 100,200,#PB_Splitter_Vertical,0,0,0,"0")
Button__()
Editor__()
EndSplitter__()
EndTab__()
Tab__("Tab 3","2")
Splitter__(#PB_Ignore,"",200,100, #PB_Splitter_Vertical)
Button__()
Editor__()
EndSplitter__()
EndTab__()
EndPanel__()
UnuseModule DynamicDialogs_suffixed
Ein paar Demos sind wie gesagt schon dabei und die Anwendung des Moduls ist eigentlich denkbar einfach.
Meiner Meinung nach geht das Erstellen von dynamischen GUIs dank dieses Moduls erheblich einfacher als zuvor ... aber testet es am besten mal selber.
Feedback und auch konstruktive Kritik sind natürlich willkommen.

__________________________________________________
Thread verschoben
Feedback - Anwendungen>Code, Tipps und Tricks
23.03.2016
RSBasic