Seite 1 von 1

[Module] DynamicGUI

Verfasst: 06.10.2017 18:21
von Thorsten1867
Ich habe das "DynamicDialogs"-Module von PureLust an meine Bedürfnisse angepasst und um eine Speicherfunktion für die letzte Fensterposition und -größe erweitert.

Download: DynamicGUI_Module.pbi

Code: Alles auswählen

; added:   Speichern, laden & wiederherstellen von Fensterpositionen & -größen
; added:   GetWinID(DialogID.i) & GetGadgetID(DialogID.i, Name.s) 
; changed: Anpassung der Befehlsnamen für den Aufruf mittels "DynGUI::"
; changed: Makros durch Proceduren ersetzt, da diese den compilerten Code unnötig "aufblähen"
; changed: T2H() -> TXT2XML(), da eine Maskierung der Strings für XML (anstatt HTML) logischer erscheint
; changed: CreateUUID() für fehlende Image-Namen
; changed: Bugfix Macro 'Auswertung_Parameter_URL' (URL$ => XML$)
; changed: Struktur 'Struct_XMLout' anstatt einzelner Variablen
; changed: Lesbarkeit des Codes verbessert & Ersetzen der "unsäglichen" Tabulatoren durch Leerzeichen
; changed: diverse Bugfixes

DynamicGUI

Verfasst: 07.10.2017 12:38
von Thorsten1867
Dynamische GUI

- Automatische Größenanpassung von Gadget bei Änderung der Fenstergröße (basierend auf Dialog-Befehlsbibliothek)
- Speichern und wiederherstellen der letzten Fensterposition und/oder -größe
  • ===== DynamicGUI - Befehle =====

    DynGUI::ClearXML() - löschen bzw. zurücksetzen des bisher erzeugten XML-Codes
    DynGUI::ShowNodeErrors() - de-/aktivieren von Nachrichten, die bei Fehlern von Close-Nodes angezeigt werden
    DynGUI::ClearXML() - löschen bzw. zurücksetzen des bisher erzeugten XML-Codes
    DynGUI::GetXML() - abrufen des bisher erzeugten XML-Codes
    DynGUI::SetXML() - setzt den XML-Code & alle folgenden Befehle fügen ihren Code hier an
    DynGUI::AddXML() - zum Einfügen diverser eigener XML-Codes SetXMLOutputFormat()
    DynGUI::CloseNode() - statt immer den passenden Endxxx()-Befehl zu nehmen, kann auch einfach CloseNode() genommen werden.
    DynGUI::CheckDialog() - überprüfen, ob eine Dialog-Definition güötig ist
    DynGUI::Font()
    DynGUI::FontByID()
    DynGUI::GetWinID() - WindowID für PB-Befehle anhand der DialogID ermitteln (Thorsten1867)
    DynGUI::GetGadgetID() - GadgetID für PB-Befehle anhand der DialogID und des Namens ermitteln (Thorsten1867)

    DynGUI::SaveWindowsData() - Letzte Fensterpositionen & -größen in JSON-Datei speichern (Thorsten1867)
    DynGUI::LoadWindowsData() - Letzte Fensterpositionen & -größen aus JSON-Datei laden (Thorsten1867)
    DynGUI::RestoreWinPosition() - Letzte Fensterposition wiederherstellen (Thorsten1867)
    DynGUI::RestoreWinSize() - Letzte Fenstergröße wiederherstellen (Thorsten1867)
    DynGUI::RestoreWindow() - Letzte Fensterposition & -größe wiederherstellen (Thorsten1867)

    DynGUI::OpenWindowXML() & CloseWindowXML()
    DynGUI::DialogXML() & EndDialogXML()
    DynGUI::WindowXML() & EndWindowXML()
    DynGUI::vBoxXML() & EndVBoxXML()
    DynGUI::hBoxXML() & EndHBoxXML()
    DynGUI::GridBoxXML() & EndGridBoxXML()
    DynGUI::MultiBoxXML() & EndMultiBoxXML()
    DynGUI::SingleBoxXML() & EndSingleBoxXML()
    DynGUI::EmptyXML()

    DynGUI::ContainerXML() & EndContainerXML()
    DynGUI::FrameXML() & EndFrameXML()
    DynGUI::PanelXML() & EndPanelXML()
    DynGUI::TabXML() & EndTabXML()
    DynGUI::ScrollAreaXML() & EndScrollAreaXML()
    DynGUI::SplitterXML() & EndSplitterXML()

    DynGUI::ButtonXML()
    DynGUI::ButtonImageXML()
    DynGUI::CalendarXML()
    DynGUI::CanvasXML()
    DynGUI::CheckBoxXML()
    DynGUI::ComboBoxXML()
    DynGUI::DateTimeXML()
    DynGUI::EditorXML()
    DynGUI::ExplorerComboXML()
    DynGUI::ExplorerListXML()
    DynGUI::ExplorerTreeXML()
    DynGUI::HyperLinkXML()
    DynGUI::IPAddressXML()
    DynGUI::ImageXML()
    DynGUI::ListIconXML()
    DynGUI::ListViewXML()
    DynGUI::OptionXML()
    DynGUI::ScrollBarXML()
    DynGUI::SpinXML()
    DynGUI::StringXML()
    DynGUI::TextXML()
    DynGUI::TrackBarXML()
    DynGUI::TreeXML()
    DynGUI::WebXML()
    DynGUI::ScintillaXML()

Re: [Module] DynamicGUI

Verfasst: 01.12.2017 16:16
von oO0XX0Oo
Hi,

danke sehr für dieses tolle Modul!

Es gibt einen kleinen bug bezüglich der Funktion ButtonXML().
Sie funktioniert nicht korrekt, zumindest nicht, wenn man die
ID als Referenz benutzen will.

Ab Zeile 1703 beginnt die Prozedur und ihr fehlt der Eintrag für die ID.

Momentan:

Code: Alles auswählen

  Procedure.s ButtonXML(ID=#PB_Ignore, Name$="", Text$="", Flags=0, Width=#PB_Default, Height=#PB_Default, Align=#PB_Default, Margin$="", ColSpan=#PB_Ignore, RowSpan=#PB_Ignore, XmlParam$="")
    Protected XML$ = "<button"
    
    SetParameterCurrentFont(ID, Name$)     ; Parameter: ID
    
    XML$ + GetParameterName(Name$)         ; Parameter: Name$
Ändert man es auf:

Code: Alles auswählen

  Procedure.s ButtonXML(ID=#PB_Ignore, Name$="", Text$="", Flags=0, Width=#PB_Default, Height=#PB_Default, Align=#PB_Default, Margin$="", ColSpan=#PB_Ignore, RowSpan=#PB_Ignore, XmlParam$="")
    Protected XML$ = "<button"
    
    SetParameterCurrentFont(ID, Name$)     ; Setze Gadget-Font, wenn ActFontID <> #PB_Default
    
    XML$ + GetParameterID(ID)              ; Parameter: ID
    XML$ + GetParameterName(Name$)         ; Parameter: Name$
Funktioniert es auch mit der ID einwandfrei...

Siehst du evtl. eine Möglichkeit, Menüs / Toolbars innerhalb DynamicGUI mit unterstützen zu können?
Ich weiß, DynamicDialogs unterstützt das im Original nicht, aber der Programmierer scheint
MIA (missing in action) zu sein, so dass es nicht sonderlich viel Sinn macht, in dessen
thread noch danach zu fragen...

Re: [Module] DynamicGUI

Verfasst: 06.12.2017 12:25
von Thorsten1867
Die Dialog-Befehlsbibliothek unterstützt leider weder Menü- noch Toolbar.

Re: [Module] DynamicGUI

Verfasst: 02.01.2018 15:29
von oO0XX0Oo
http://forums.purebasic.com/german/view ... db#p343882

Unterstützung für die Verwendung von Menüs und einer Statusbar wurde hinzugefügt...

Könntest du die Änderungen in deiner Version evtl. auch mit einbauen?

Danke sehr!