DialogDesign0R V1.72

Anwendungen, Tools, Userlibs und anderes nützliches.
matbal
Beiträge: 231
Registriert: 30.03.2011 20:53

Re: DialogDesign0R V1.70

Beitrag von matbal »

Ich habe mich mit den Vorlagen (Templates) beschäftigt. In der aktuellen Version wurden ja das default_save_template.json geändert. Nun habe ich noch ein angepasstes zweites Template hinzugefügt. Nur mit dem umschalten klappt das nicht richtig. Jetzt wird beim Speichern bei mir immer das neue genommen, auch wenn ich wieder auf das default_save_template zurückschalte.

Muß man noch etwas beachten, wenn das Template gewechselt wird?

(Was wohl leider nicht geht, die Declares (wie früher) und die Runtime Procedures für den Test-Code (wie jetzt) gleichzeitig im Template an verschiedenen Stellen einbauen zu können.)
Benutzeravatar
HeX0R
Beiträge: 2804
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
2x16Gig Ram
NVIDIA GEFORCE GTX 1060/6Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: DialogDesign0R V1.70

Beitrag von HeX0R »

Nö, musst Du nix beachten, das ist nur noch nicht richtig zu ende getestet ;)
Hatte bisher noch kein zweites angelegt, muss ich mal machen.
(Was wohl leider nicht geht, die Declares (wie früher) und die Runtime Procedures für den Test-Code (wie jetzt) gleichzeitig im Template an verschiedenen Stellen einbauen zu können.)
Sollte eigentlich gehen, hast Du nen Beispieltemplate, wo das nicht geht?
matbal
Beiträge: 231
Registriert: 30.03.2011 20:53

Re: DialogDesign0R V1.70

Beitrag von matbal »

Vielleicht hatte ich mich schlecht ausgedrückt: Meine ursprüngliche Idee war, im Template in der Rubrik "Runtime Procedures" oberhalb des Testcodes die Declare-Anweisungen zu erstellen zu lassen, so wie in der Vorversion, und im Testcode noch die Prozeduren zu erstellen, wie in der neuen Version 1.70. Dazu müßte das Template zwei verschiedene Codes an verschiedenen Stellen erstellen.

Die Declare-Anweisungen hatte ich vermißt, weil ich mir ein IDE-Werkzeug geschrieben hatte, daß in den DD-Includes die Declare-Anweisungen sucht und im Hauptcode die fehlenden Runtime Prozeduren erstellt. Daher habe ich mir die Templates überhaupt angesehen. Und mehrere Templates hatte ich verwendet, weil ich das Original nicht verändern wollte. Ich konnte eben nur nicht mehr zurück wechseln...
Benutzeravatar
HeX0R
Beiträge: 2804
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
2x16Gig Ram
NVIDIA GEFORCE GTX 1060/6Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: DialogDesign0R V1.70

Beitrag von HeX0R »

Am besten zeigst Du mir mal, wie das Output aussehen soll, mir ist heute zu warm, um das nur anhand Deiner Beschreibung zu verstehen ;)

[Edit]
Eins noch:
Wie immer gilt:
Die Templateeinstellung in den Preferences gilt nur für neu erstellte Dialoge!
Für bereits bestehende musst Du das über das dialogs-Tag im Tree machen, das anwählen, dann kannst Du rechts das gewünschte Template für diesen Dialog auswählen.

[Edit2]
Die declares habe ich rausgeschmissen, weil mein Beispieltemplate ja so, wie es jetzt ist lauffähig ist.
Das ging aber nicht mit simplen Declares, PB meckert dann, dass die Prozedur keine Runtime Prozedur ist, deswegen habe ich es mit leeren Prozeduren ersetzt.
Aber das kannst Du ja gerne wieder rückgängig machen.
Und wenn Du dem einen Namen gibst (wie im Beispieltemplate da heisst es {MYPROC}), kannst Du dieses Template irgendwo anders "hineinpappen", siehe FileFooter, dort findest Du dann auch {MYPROC}.
matbal
Beiträge: 231
Registriert: 30.03.2011 20:53

Re: DialogDesign0R V1.70

Beitrag von matbal »

Danke für deine Erklärung. Damit war es ein Bedienungsfehler meinerseits. Ich dachte, die Templates greifen erst beim Speichern.

Trotzdem hier Code, was ich erreichen wollte. Das ist jetzt aber nicht mehr nötig. Ich habe mein Werkzeug, daß fehlende Runtime Procedures im Hauptcode einfügt, mittlerweile angepaßt.

Code: Alles auswählen

;/-------------------------
;|
;| Names, IDs, Procedures
;|
;| Example Template for Dialog Design0R
;|
;/-------------------------

#DD_WindowCount = 1
#DD_UseExtraStuff = 1

CompilerIf #DD_UseExtraStuff
	XIncludeFile "D:\Programmieren\PureBasic_Source\DialogDesigner__\DD_AddStuff.pbi"
CompilerEndIf

Runtime Enumeration Windows
	#FormMain
EndEnumeration


Dim DD_WindowNames.s(#DD_WindowCount)

DD_WindowNames(1) = "main"


Runtime Enumeration Gadgets
	#FormMain_ListIcon
	#FormMain_Button_OK
	#FormMain_Button_Cancel
	#MenuItem_Open
	#MenuItem_Save
EndEnumeration


#DD_GADGET_listicon_1 = "listicon_1"
#DD_GADGET_button_1   = "button_1"
#DD_GADGET_button_2   = "button_2"


Declare FormMain_ListIcon_Event()     
Declare FormMain_Button_OK()
Declare FormMain_Button_Cancel()
Declare MenuItem_Open()
Declare MenuItem_Save()



Procedure.s GetXMLString()
	Protected XML$

	XML$ + "<?xml version='1.0' encoding='UTF-16'?>"
	XML$ + ""
	XML$ + "<dialogs>"
	XML$ + "  <window flags='#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget' width='500' height='400' text='Window1' name='main' id='#FormMain'>"
	XML$ + "    <vbox expand='item:1'>"
	XML$ + "      <listicon name='listicon_1' onevent='FormMain_ListIcon_Event()' id='#FormMain_ListIcon'/>"
	XML$ + "      <hbox>"
	XML$ + "        <button text='OK' name='button_1' id='#FormMain_Button_OK' onevent='FormMain_Button_OK()'/>"
	XML$ + "        <button text='Abbrechen' name='button_2' id='#FormMain_Button_Cancel' onevent='FormMain_Button_Cancel()'/>"
	XML$ + "      </hbox> "
	XML$ + "    </vbox>"
	XML$ + "    <menu>"
	XML$ + "      <title text='Datei'>"
	XML$ + "        <menuitem text='Öffnen' id='#MenuItem_Open' onevent='MenuItem_Open()'/>"
	XML$ + "        <menuitem text='Speichern' id='#MenuItem_Save' onevent='MenuItem_Save()'/>"
	XML$ + "      </title> "
	XML$ + "    </menu>"
	XML$ + "  </window>"
	XML$ + "</dialogs><!--DDesign0R Definition: PureBasic|1|1|0||-->"

	ProcedureReturn XML$
EndProcedure


;Test it
CompilerIf #PB_Compiler_IsMainFile
	
	Runtime Procedure FormMain_ListIcon_Event()

	EndProcedure

	Runtime Procedure FormMain_Button_OK()

	EndProcedure

	Runtime Procedure FormMain_Button_Cancel()

	EndProcedure

	Runtime Procedure MenuItem_Open()

	EndProcedure

	Runtime Procedure MenuItem_Save()

	EndProcedure




	a$ = GetXMLString()
	If ParseXML(0, a$) And XMLStatus(0) = #PB_XML_Success
		For i = 1 To #DD_WindowCount
			CreateDialog(i)
			CompilerIf #DD_UseExtraStuff
				R = DEX::InitDialog(i, 0, DD_WindowNames(i), 1)
			CompilerElse
				R = OpenXMLDialog(i, 0, DD_WindowNames(i))
			CompilerEndIf
			If R
				HideWindow(DialogWindow(i), 0)
				ok = #True
			Else
				Debug DialogError(i)
			EndIf
		Next i
		CompilerIf Defined(PB_OS_Web, #PB_Constant) = 0 Or #PB_Compiler_OS <> #PB_OS_Web
			If ok
				While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
			EndIf
		CompilerEndIf
	Else
		Debug XMLStatus(0)
		Debug XMLError(0)
	EndIf
	CompilerIf #DD_UseExtraStuff
		DEX::DeInit()
	CompilerEndIf

CompilerEndIf

;(c) HeX0R 2021
Benutzeravatar
HeX0R
Beiträge: 2804
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
2x16Gig Ram
NVIDIA GEFORCE GTX 1060/6Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: DialogDesign0R V1.70

Beitrag von HeX0R »

oh o.k., in der Tat etwas was ich nicht bedacht habe.
Hier hast Du das RuntimeProcedure Template ja quasi zweigeteilt.

Wobei das tatsächlich Sinn machen würde.
Auch wenn Du es nicht mehr brauchst, ich werde mal darüber nachdenken.
Benutzeravatar
HeX0R
Beiträge: 2804
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
2x16Gig Ram
NVIDIA GEFORCE GTX 1060/6Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: DialogDesign0R V1.70

Beitrag von HeX0R »

O.k., ich habe noch zwei weitere, universelle Template Items hinzugefügt.
Auch hab ich eine Beispiel JSON drin, die genau das machen sollte, was Du wolltest.
Nur der Source wurde aktualisiert, alte Templates sollten kompatibel bleiben.
matbal
Beiträge: 231
Registriert: 30.03.2011 20:53

Re: DialogDesign0R V1.70

Beitrag von matbal »

Schön, funktioniert gut.

Ich habe mit dem zweiten universellen Template Item die WindowsNames zweigeteilt. Im Include oben wieder die Konstanten für die Windowsnamen, im Testcode-Abschnitt das Array mit den Windowsnamen.
Benutzeravatar
HeX0R
Beiträge: 2804
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
2x16Gig Ram
NVIDIA GEFORCE GTX 1060/6Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: DialogDesign0R V1.70

Beitrag von HeX0R »

sehr schön, Danke für die Rückmeldung!
Das ließe sich auch recht einfach noch erweitern, eigentlich dachte ich 2 universelle Items sind schon eins zuviel, aber Du hast mich eines besseren belehrt :lol:
Denkst Du ich sollte da noch mehr davon einbauen?

Auf jeden Fall habe ich jetzt doch mal mit einer Hilfedatei angefangen, ich blick ja so langsam selbst nicht mehr durch :freak:
matbal
Beiträge: 231
Registriert: 30.03.2011 20:53

Re: DialogDesign0R V1.70

Beitrag von matbal »

Ich denke, das reicht.

Die Konstanten für die Namen finde ich sehr nützlich, weil die Namen dann auch in der Autovervollständigung der IDE auftauchen.
Antworten