gDesign - Visueller Gadget Designer

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
Mischa
Beiträge: 152
Registriert: 29.08.2004 06:52
Wohnort: Hellhorst

gDesign - Visueller Gadget Designer

Beitrag von Mischa »

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
Benutzeravatar
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

Beitrag von ts-soft »

Das Teil ist sehr Genial Bild
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.
Bild
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag von 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
Benutzeravatar
Darky
Beiträge: 210
Registriert: 18.09.2004 20:53
Wohnort: Gelsenkirchen / NRW
Kontaktdaten:

Beitrag von Darky »

:mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: Das ist jetzt schon mein Favorit, SUPER mach bloss weiter :allright:
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

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).
Benutzeravatar
Mischa
Beiträge: 152
Registriert: 29.08.2004 06:52
Wohnort: Hellhorst

Beitrag von Mischa »

@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
Benutzeravatar
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

Beitrag von ts-soft »

>> 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.
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.
Bild
Benutzeravatar
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

Beitrag von ts-soft »

Um mir das einbinden der Include zu sparen, hab ich mal eine Tailbite Lib draus gemacht, hier der Source:

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
Als gDesign.pb speichern und mit Tailbite die Lib erstellen. Vielleicht für den einen oder anderen nützlich.
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.
Bild
Benutzeravatar
Mischa
Beiträge: 152
Registriert: 29.08.2004 06:52
Wohnort: Hellhorst

Beitrag von Mischa »

@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. :allright:

Die Grid-Geschichte mache ich, die Mehrfachselektion sollte
auch nicht so schwer sein, mal sehen.

Gruß,
Mischa
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Nett :allright:
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Antworten