gDesign - Visueller Gadget Designer
gDesign - Visueller Gadget Designer
gDesign (beta)
Ich habe mir mal wieder ein paar Tage Urlaub vom Hauptprojekt gegönnt
und ein bischen mit Gadgets rumgespielt. (Brauchte etwas simpleres,
da mein Kopf zur Zeit ziemlich voll ist)
gDesign ist ein sehr minimalistischer visueller Designer.
Er verarbeitet nur Gadgets, nicht aber Statusbars, Toolbars, oder Fenstermenues.
Warum ein weiterer visueller Designer?
Ganz einfach:
Das gesamte Gadget-Layout ist in einer isolierten Datei gespeichert
und kann auch nachträglich verändert werden!
Es können mehrere dieser Layout-Blöcke verwendet werden.
Eingebunden werden sie beispielsweise per IncludeBinary.
Verarbeitet werden sie mit einer (äußerst) kleinen .pbi Include-Datei.
Außerdem ist das hinzufügen von Gadgets auf Panel-, oder
ScrollAreaGadgets möglich.
Einfach mal anschauen:
Download:
http://www.thinkrelative.de/gdesign.zip
..und mir bitte sagen wie's bekommt.
Zwei Beispiele sind dabei und ein Tool zum Verknüpfen der Dateiendung.
Ach ja, in der ReadMe.txt erfahrt Ihr wie es zu bedienen ist. Simpel.
Gruß,
Mischa
Ich habe mir mal wieder ein paar Tage Urlaub vom Hauptprojekt gegönnt
und ein bischen mit Gadgets rumgespielt. (Brauchte etwas simpleres,
da mein Kopf zur Zeit ziemlich voll ist)
gDesign ist ein sehr minimalistischer visueller Designer.
Er verarbeitet nur Gadgets, nicht aber Statusbars, Toolbars, oder Fenstermenues.
Warum ein weiterer visueller Designer?
Ganz einfach:
Das gesamte Gadget-Layout ist in einer isolierten Datei gespeichert
und kann auch nachträglich verändert werden!
Es können mehrere dieser Layout-Blöcke verwendet werden.
Eingebunden werden sie beispielsweise per IncludeBinary.
Verarbeitet werden sie mit einer (äußerst) kleinen .pbi Include-Datei.
Außerdem ist das hinzufügen von Gadgets auf Panel-, oder
ScrollAreaGadgets möglich.
Einfach mal anschauen:
Download:
http://www.thinkrelative.de/gdesign.zip
..und mir bitte sagen wie's bekommt.
Zwei Beispiele sind dabei und ein Tool zum Verknüpfen der Dateiendung.
Ach ja, in der ReadMe.txt erfahrt Ihr wie es zu bedienen ist. Simpel.
Gruß,
Mischa
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Das Teil ist sehr Genial 
Habs nur kurz angetestet und bin von der Idee und bisherigen Umsetzung begeistert. Ist ja so ähnlich, wie Dialoge aus Resourcen einbinden, nur einfacher.
Habs nur kurz angetestet und bin von der Idee und bisherigen Umsetzung begeistert. Ist ja so ähnlich, wie Dialoge aus Resourcen einbinden, nur einfacher.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- Blackskyliner
- Beiträge: 532
- Registriert: 28.07.2005 00:54
- Wohnort: /home/Blackskyliner/
weiter machen !! des ist ja der hammer, mann iss das fett!!!
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Was mir jetzt noch fehlt ist eine Möglichkeit die Gadgets zu kopieren und einzufügen. Das erleichtert das Erstellen erheblich. Löschen usw. sollte auch möglich sein.
Schön wären auch Zusatzsachen wie Schriftart, Farbe usw. Aber das ist ja nur per API realisierbar (wobei du auch WinAPI-Konstanten wie BS_FLAT reinbringst, also kannst du auch gleich andere API-Funktionen einbauen).
Schön wären auch Zusatzsachen wie Schriftart, Farbe usw. Aber das ist ja nur per API realisierbar (wobei du auch WinAPI-Konstanten wie BS_FLAT reinbringst, also kannst du auch gleich andere API-Funktionen einbauen).
@all
Ähm,danke für das nette Feedback.
@Sunny
Ich hätte es evtl erwähnen sollen, sehe ich ein.
Also:
Wenn man ein Gadget neu erstellt, oder ein bestehendes markiert,
merkt sich gDesign diese Größe und die Flags für diesen
Gadget-Typen.
Nehmen wir beispielsweise ein ButtonGadget.
Erstelle es, verändere die Größe, den Stil, dann de-markiere es.
(Irgendwo in den leeren Fensterraum klicken)
Nun drücke die Taste 'B' gefolgt von einem 'U' und
unterhalb des Mauszeigers erscheint ein neues ButtonGadget
identisch zum ersten. (Mal abgesehen vom Text, insofern Du ihn
geändert hattest)
Das Löschen ist im ReadMe.txt erwähnt.
Einfach Gadget markieren und SHIFT+ENTF drücken.
Mischa
Ähm,danke für das nette Feedback.
@Sunny
Ich hätte es evtl erwähnen sollen, sehe ich ein.
Also:
Wenn man ein Gadget neu erstellt, oder ein bestehendes markiert,
merkt sich gDesign diese Größe und die Flags für diesen
Gadget-Typen.
Nehmen wir beispielsweise ein ButtonGadget.
Erstelle es, verändere die Größe, den Stil, dann de-markiere es.
(Irgendwo in den leeren Fensterraum klicken)
Nun drücke die Taste 'B' gefolgt von einem 'U' und
unterhalb des Mauszeigers erscheint ein neues ButtonGadget
identisch zum ersten. (Mal abgesehen vom Text, insofern Du ihn
geändert hattest)
Das Löschen ist im ReadMe.txt erwähnt.
Einfach Gadget markieren und SHIFT+ENTF drücken.
Mischa
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
>> Löschen usw. sollte auch möglich sein.
Löschen geht doch ? Mit Shift und Del
Ansonsten kann ich mich nur anschließen, ein paar erweiterte Einstellungen wären sehr schön.
Nachtrag: Mehrfachselektion zum verschieben vermisse ich und der GridSize sollte gespeichert werden, entweder Pauschal oder je *gdf.
Löschen geht doch ? Mit Shift und Del
Ansonsten kann ich mich nur anschließen, ein paar erweiterte Einstellungen wären sehr schön.
Nachtrag: Mehrfachselektion zum verschieben vermisse ich und der GridSize sollte gespeichert werden, entweder Pauschal oder je *gdf.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Um mir das einbinden der Include zu sparen, hab ich mal eine Tailbite Lib draus gemacht, hier der Source:
Als gDesign.pb speichern und mit Tailbite die Lib erstellen. Vielleicht für den einen oder anderen nützlich.
Code: Alles auswählen
ProcedureDLL gDesign_Init()
;This is the init stuff
Structure gdescontent
id.l
number.w
x.l
y.l
w.l
h.l
para1.l
para2.l
para3.l
flags.l
typ.l
wtext.s
gpo.l
EndStructure
Global gDesValue.gdescontent
NewList gDesParent.l()
Dim gDesignTyp.b(24)
Restore gdestyp : For i=1 To 24 : Read gDesignTyp(i) : Next i
DataSection
gdestyp: Data.b 3,0,3,2,2,3,3,3,3,3,2,7,0,1,0,14,30,30,12,3,3,14,2,1
EndDataSection
;End of init
EndProcedure
Procedure ReCreateObject()
Select gDesValue\typ
Case 1:gDesValue\id=ButtonGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 2:gDesValue\id=ButtonImageGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,0)
Case 3:gDesValue\id=CheckBoxGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 4:gDesValue\id=ComboBoxGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\flags)
Case 5:gDesValue\id=EditorGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\flags)
Case 6:gDesValue\id=ExplorerComboGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 7:gDesValue\id=ExplorerListGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 8:gDesValue\id=ExplorerTreeGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 9:gDesValue\id=Frame3DGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 10:gDesValue\id=HyperLinkGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 11:gDesValue\id=ImageGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,0,gDesValue\flags)
Case 12:gDesValue\id=ListIconGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\para1,gDesValue\flags)
Case 13:gDesValue\id=ListViewGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h)
Case 14:gDesValue\id=OptionGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext)
Case 15:gDesValue\id=PanelGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h)
Case 16:gDesValue\id=ProgressBarGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2,gDesValue\flags)
Case 17:gDesValue\id=ScrollAreaGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2,gDesValue\para3,gDesValue\flags)
Case 18:gDesValue\id=ScrollBarGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2,gDesValue\para3,gDesValue\flags)
Case 19:gDesValue\id=SpinGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2)
Case 20:gDesValue\id=StringGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 21:gDesValue\id=TextGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext,gDesValue\flags)
Case 22:gDesValue\id=TrackBarGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\para1,gDesValue\para2,gDesValue\flags)
Case 23:gDesValue\id=TreeGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\flags)
Case 24:gDesValue\id=WebGadget(#PB_Any,gDesValue\x,gDesValue\y,gDesValue\w,gDesValue\h,gDesValue\wtext)
EndSelect
EndProcedure
ProcedureDLL gDesignClientWidth(*gdata)
ProcedureReturn PeekL(*gdata+4)
EndProcedure
ProcedureDLL gDesignClientHeight(*gdata)
ProcedureReturn PeekL(*gdata+8)
EndProcedure
ProcedureDLL gDesignMaxItem(*gdata)
ProcedureReturn PeekL(*gdata)-1
EndProcedure
ProcedureDLL gDesign(*gdata,*gitems,goffx,goffy)
gcount=PeekL(*gdata+12):gDesValue\gpo=16
For i=1 To gcount
gDesValue\typ=PeekB(*gdata+gDesValue\gpo):gDesValue\gpo+1
gDesValue\number=PeekW(*gdata+gDesValue\gpo):gDesValue\gpo+2
If gDesValue\typ=100
ptext.s=PeekS(*gdata+gDesValue\gpo):gDesValue\gpo+Len(ptext)+1
AddGadgetItem(gDesParent(),-1,ptext)
ElseIf gDesValue\typ=0
CloseGadgetList()
DeleteElement(gDesParent())
Else
gDesValue\x=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4
gDesValue\y=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4
gDesValue\w=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4
gDesValue\h=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4
If gDesignTyp(gDesValue\typ) & 1
gDesValue\wtext=PeekS(*gdata+gDesValue\gpo):gDesValue\gpo+Len(gDesValue\wtext)+1
EndIf
If gDesignTyp(gDesValue\typ) & 2
gDesValue\flags=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4
EndIf
If gDesignTyp(gDesValue\typ) & 4
gDesValue\para1=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4
EndIf
If gDesignTyp(gDesValue\typ) & 8
gDesValue\para2=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4
EndIf
If gDesignTyp(gDesValue\typ) & 16
gDesValue\para3=PeekL(*gdata+gDesValue\gpo):gDesValue\gpo+4
EndIf
If CountList(gDesParent())=0
gDesValue\x+goffx
gDesValue\y+goffy
EndIf
ReCreateObject()
PokeL(*gitems+gDesValue\number*4,gDesValue\id)
If gDesValue\typ=15
AddElement(gDesParent())
gDesParent()=gDesValue\id
ElseIf gDesValue\typ=17
AddElement(gDesParent())
gDesParent()=gDesValue\id
EndIf
EndIf
Next
ClearList(gDesParent())
While WindowEvent():Wend
EndProcedure
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

@all
Hatte vergessen es in der ReadMe zu erwähnen. (Ist aber nachgetragen)
Manche Gadget muß man mit nem Doppelrechtsklick, statt 'nem
Einfachen anklicken um das Styleflag-Menu zu Gesicht zu bekommen.
Aber das hat man, denke ich, wohl schnell raus, wie's läuft.
@Ts-soft
Ja, Vielen Dank! Werde das dann demnächst mit ins Paket packen.
Die Idee hatte ich selber allerdings auch schon gehabt und erst mal
in die Zukunft verschoben, weil ich wegen möglicher Bugs, oder
Erweiterungen und Veränderungen, den Quelltext der Include
eingebunden wissen wollte. Ist doch einfacher bei der Fehlersuche.
Denn gDesign ist ja schließlich noch beta, nicht wahr.
Dennoch, super Einsatz Ts-soft! Du scheinst Dich ja tatsächlich
für das Tool zu interessieren.
Die Grid-Geschichte mache ich, die Mehrfachselektion sollte
auch nicht so schwer sein, mal sehen.
Gruß,
Mischa
Hatte vergessen es in der ReadMe zu erwähnen. (Ist aber nachgetragen)
Manche Gadget muß man mit nem Doppelrechtsklick, statt 'nem
Einfachen anklicken um das Styleflag-Menu zu Gesicht zu bekommen.
Aber das hat man, denke ich, wohl schnell raus, wie's läuft.
@Ts-soft
Ja, Vielen Dank! Werde das dann demnächst mit ins Paket packen.
Die Idee hatte ich selber allerdings auch schon gehabt und erst mal
in die Zukunft verschoben, weil ich wegen möglicher Bugs, oder
Erweiterungen und Veränderungen, den Quelltext der Include
eingebunden wissen wollte. Ist doch einfacher bei der Fehlersuche.
Denn gDesign ist ja schließlich noch beta, nicht wahr.
Dennoch, super Einsatz Ts-soft! Du scheinst Dich ja tatsächlich
für das Tool zu interessieren.
Die Grid-Geschichte mache ich, die Mehrfachselektion sollte
auch nicht so schwer sein, mal sehen.
Gruß,
Mischa