Serializer for PB Gadgets (PB4.10)
Posted: Wed Jun 06, 2007 5:59 pm
This is a first testversion with some bugs. Please test it and give me an feedback.
You can save and restore all datas in your gadgets (PBGadgets only) in a XML-Stream.
This is useful for listview, listicon, editor and so on, all gadgets supported (MDIGadget not supported, its a window
)
The Source:
Serialize(Gadgets.Serializer_Struc(), FileName.s, flags.l)
This save your settings
First parameter is a linklist with Serializer_Struc()
Second parameter is the filename to save
The last parameter is a combination of constants from the Enumeration ;Serializerflags
DeSerialize(Gadgets.Serializer_Struc(), FileName.s, flags.l)
the same to restore settings.
Images in the moment not supported!
For more info's see the examples in the next thread
You can save and restore all datas in your gadgets (PBGadgets only) in a XML-Stream.
This is useful for listview, listicon, editor and so on, all gadgets supported (MDIGadget not supported, its a window

The Source:
Code: Select all
; Serializer_Include.pbi
; Author: ts-soft
; Second: kiffi
; PB-Version: 4.10 and greater
; ### workaround for beta #######################
; ### can deleted after PB 4.10 release #
Procedure.s GetXMLAttribute_(*Node, Attribute$)
If XMLNodeType(*Node) = #PB_XML_Normal
ExamineXMLAttributes(*Node)
While NextXMLAttribute(*Node)
If XMLAttributeName(*Node) = Attribute$
ProcedureReturn XMLAttributeValue(*Node)
EndIf
Wend
EndIf
EndProcedure
Macro GetXMLAttribute(Node, Attribute)
GetXMLAttribute_(Node, Attribute)
EndMacro
; #### end workaround ############################
Structure Serializer_Struc
PBID.l
Ident.s
EndStructure
Enumeration ;Serializerflags
#Serializer_X = 1
#Serializer_Y = 1 << 1
#Serializer_Width = 1 << 2
#Serializer_Height = 1 << 3
#Serializer_Attribut = 1 << 4
#Serializer_Color = 1 << 5
#Serializer_Data = 1 << 6
#Serializer_State = 1 << 7
#Serializer_Style = 1 << 8
#Serializer_Text = 1 << 9
#Serializer_ItemColor = 1 << 10
#Serializer_ItemData = 1 << 11
#Serializer_ItemState = 1 << 12
#Serializer_ItemText = 1 << 13
#Serializer_Defaults = #Serializer_State|#Serializer_Text|#Serializer_ItemState|#Serializer_ItemText
EndEnumeration
Procedure Serialize_Standard(PBID.l, oGadget.l, flags.l)
Protected oNode.l
If flags & #Serializer_X
SetXMLAttribute(oGadget, "x", Str(GadgetX(PBID)))
EndIf
If flags & #Serializer_Y
SetXMLAttribute(oGadget, "y", Str(GadgetY(PBID)))
EndIf
If flags & #Serializer_Width
SetXMLAttribute(oGadget, "width", Str(GadgetWidth(PBID)))
EndIf
If flags & #Serializer_Height
SetXMLAttribute(oGadget, "height", Str(GadgetHeight(PBID)))
EndIf
If flags & #Serializer_Style
SetXMLAttribute(oGadget, "style", Str(GetWindowLong_(GadgetID(PBID), #GWL_STYLE)))
EndIf
If flags & #Serializer_Attribut
Select GadgetType(PBID)
Case #PB_GadgetType_Calendar
SetXMLAttribute(oGadget, "ca_minimum", Str(GetGadgetAttribute(PBID, #PB_Calendar_Minimum)))
SetXMLAttribute(oGadget, "ca_maximum", Str(GetGadgetAttribute(PBID, #PB_Calendar_Maximum)))
Case #PB_GadgetType_Date
SetXMLAttribute(oGadget, "da_minimum", Str(GetGadgetAttribute(PBID, #PB_Date_Minimum)))
SetXMLAttribute(oGadget, "da_maximum", Str(GetGadgetAttribute(PBID, #PB_Date_Maximum)))
Case #PB_GadgetType_Editor
SetXMLAttribute(oGadget, "readonly", Str(GetGadgetAttribute(PBID, #PB_Editor_ReadOnly)))
Case #PB_GadgetType_Panel
SetXMLAttribute(oGadget, "pa_itemwidth", Str(GetGadgetAttribute(PBID, #PB_Panel_ItemWidth)))
SetXMLAttribute(oGadget, "pa_itemheight", Str(GetGadgetAttribute(PBID, #PB_Panel_ItemHeight)))
SetXMLAttribute(oGadget, "pa_tabheight", Str(GetGadgetAttribute(PBID, #PB_Panel_ItemWidth)))
Case #PB_GadgetType_ProgressBar
SetXMLAttribute(oGadget, "pr_minimum", Str(GetGadgetAttribute(PBID, #PB_ProgressBar_Minimum)))
SetXMLAttribute(oGadget, "pr_maximum", Str(GetGadgetAttribute(PBID, #PB_ProgressBar_Maximum)))
Case #PB_GadgetType_ScrollArea
SetXMLAttribute(oGadget, "sc_innerwidth", Str(GetGadgetAttribute(PBID, #PB_ScrollArea_InnerWidth)))
SetXMLAttribute(oGadget, "sc_innerheight", Str(GetGadgetAttribute(PBID, #PB_ScrollArea_InnerHeight)))
SetXMLAttribute(oGadget, "sc_x", Str(GetGadgetAttribute(PBID, #PB_ScrollArea_X)))
SetXMLAttribute(oGadget, "sc_y", Str(GetGadgetAttribute(PBID, #PB_ScrollArea_Y)))
Case #PB_GadgetType_Spin
SetXMLAttribute(oGadget, "sp_minimum", Str(GetGadgetAttribute(PBID, #PB_Spin_Minimum)))
SetXMLAttribute(oGadget, "sp_maximum", Str(GetGadgetAttribute(PBID, #PB_Spin_Maximum)))
Case #PB_GadgetType_Splitter
SetXMLAttribute(oGadget, "firstminimumsize", Str(GetGadgetAttribute(PBID, #PB_Splitter_FirstMinimumSize)))
SetXMLAttribute(oGadget, "secondminimumsize", Str(GetGadgetAttribute(PBID, #PB_Splitter_SecondMinimumSize)))
SetXMLAttribute(oGadget, "firstgadget", Str(GetGadgetAttribute(PBID, #PB_Splitter_FirstGadget)))
SetXMLAttribute(oGadget, "secondgadget", Str(GetGadgetAttribute(PBID, #PB_Splitter_SecondGadget)))
Case #PB_GadgetType_TrackBar
SetXMLAttribute(oGadget, "tb_minimum", Str(GetGadgetAttribute(PBID, #PB_TrackBar_Minimum)))
SetXMLAttribute(oGadget, "tb_maximum", Str(GetGadgetAttribute(PBID, #PB_TrackBar_Maximum)))
EndSelect
EndIf
If flags & #Serializer_Color
Select GadgetType(PBID)
Case #PB_GadgetType_Calendar, #PB_GadgetType_Date
SetXMLAttribute(oGadget, "frontcolor", Str(GetGadgetColor(PBID, #PB_Gadget_FrontColor)))
SetXMLAttribute(oGadget, "backcolor", Str(GetGadgetColor(PBID, #PB_Gadget_BackColor)))
SetXMLAttribute(oGadget, "titlebackcolor", Str(GetGadgetColor(PBID, #PB_Gadget_TitleBackColor)))
SetXMLAttribute(oGadget, "titlefrontcolor", Str(GetGadgetColor(PBID, #PB_Gadget_TitleFrontColor)))
SetXMLAttribute(oGadget, "graytextcolor", Str(GetGadgetColor(PBID, #PB_Gadget_GrayTextColor)))
Case #PB_GadgetType_Container
SetXMLAttribute(oGadget, "backcolor", Str(GetGadgetColor(PBID, #PB_Gadget_BackColor)))
Case #PB_GadgetType_Editor, #PB_GadgetType_ListView, #PB_GadgetType_ProgressBar, #PB_GadgetType_Spin, #PB_GadgetType_String, #PB_GadgetType_Text
SetXMLAttribute(oGadget, "frontcolor", Str(GetGadgetColor(PBID, #PB_Gadget_FrontColor)))
SetXMLAttribute(oGadget, "backcolor", Str(GetGadgetColor(PBID, #PB_Gadget_BackColor)))
Case #PB_GadgetType_ExplorerList, #PB_GadgetType_ExplorerTree, #PB_GadgetType_ListIcon
SetXMLAttribute(oGadget, "frontcolor", Str(GetGadgetColor(PBID, #PB_Gadget_FrontColor)))
SetXMLAttribute(oGadget, "backcolor", Str(GetGadgetColor(PBID, #PB_Gadget_BackColor)))
SetXMLAttribute(oGadget, "linecolor", Str(GetGadgetColor(PBID, #PB_Gadget_LineColor)))
Case #PB_GadgetType_HyperLink
SetXMLAttribute(oGadget, "frontcolor", Str(GetGadgetColor(PBID, #PB_Gadget_FrontColor)))
EndSelect
EndIf
If flags & #Serializer_Data
SetXMLAttribute(oGadget, "data", Str(GetGadgetData(PBID)))
EndIf
If flags & #Serializer_State
SetXMLAttribute(oGadget, "state", Str(GetGadgetState(PBID)))
EndIf
If flags & #Serializer_Text
If GadgetType(PBID) <> #PB_GadgetType_Editor
oNode = CreateXMLNode(oGadget)
SetXMLNodeName(oNode, "text")
oNode = CreateXMLNode(oNode, 0, #PB_XML_CData)
SetXMLNodeText(oNode, GetGadgetText(PBID))
EndIf
EndIf
EndProcedure
Procedure Serialize_StandardItems(PBID.l, oGadget.l, flags.l)
Protected oItems.l, oNode.l, LineCounter.l, Count.l
Count = CountGadgetItems(PBID) - 1
If Count > -1
oItems = CreateXMLNode(oGadget)
SetXMLNodeName(oItems, "items")
For LineCounter = 0 To Count
oNode = CreateXMLNode(oItems)
SetXMLNodeName(oNode, "item")
If GadgetType(PBID) = #PB_GadgetType_Tree
SetXMLAttribute(oNode, "item_sublevel", Str(GetGadgetItemAttribute(PBID, LineCounter, #PB_Tree_SubLevel)))
EndIf
If flags & #Serializer_ItemColor
If GadgetType(PBID) = #PB_GadgetType_ListIcon Or GadgetType(PBID) = #PB_GadgetType_Tree
SetXMLAttribute(oNode, "item_frontcolor", Str(GetGadgetItemColor(PBID, #PB_Gadget_FrontColor, LineCounter)))
SetXMLAttribute(oNode, "item_backcolor", Str(GetGadgetItemColor(PBID, #PB_Gadget_BackColor, LineCounter)))
EndIf
EndIf
If flags & #Serializer_ItemData
SetXMLAttribute(oNode, "data", Str(GetGadgetItemData(PBID, LineCounter)))
EndIf
If flags & #Serializer_ItemState
SetXMLAttribute(oNode, "state", Str(GetGadgetItemState(PBID, LineCounter)))
EndIf
If flags & #Serializer_ItemText
oNode = CreateXMLNode(oNode)
SetXMLNodeName(oNode, "text")
oNode = CreateXMLNode(oNode, 0, #PB_XML_CData)
SetXMLNodeText(oNode, GetGadgetItemText(PBID, LineCounter))
EndIf
Next ; LineCounter
EndIf
EndProcedure
Procedure DeSerialize_Standard(PBID.l, oGadget.l, flags.l)
Protected oNode.l
If flags & #Serializer_X
ResizeGadget(PBID, Val(Trim(GetXMLAttribute(oGadget, "x"))), #PB_Ignore, #PB_Ignore, #PB_Ignore)
EndIf
If flags & #Serializer_Y
ResizeGadget(PBID, #PB_Ignore, Val(Trim(GetXMLAttribute(oGadget, "y"))), #PB_Ignore, #PB_Ignore)
EndIf
If flags & #Serializer_Width
ResizeGadget(PBID, #PB_Ignore, #PB_Ignore, Val(Trim(GetXMLAttribute(oGadget, "width"))), #PB_Ignore)
EndIf
If flags & #Serializer_Height
ResizeGadget(PBID, #PB_Ignore, #PB_Ignore, #PB_Ignore, Val(Trim(GetXMLAttribute(oGadget, "height"))))
EndIf
If flags & #Serializer_Style
SetWindowLong_(GadgetID(PBID), #GWL_STYLE, Val(Trim(GetXMLAttribute(oGadget, "style"))))
EndIf
If flags & #Serializer_Attribut
Select GadgetType(PBID)
Case #PB_GadgetType_Calendar
SetGadgetAttribute(PBID, #PB_Calendar_Minimum, Val(Trim(GetXMLAttribute(oGadget, "ca_minimum"))))
SetGadgetAttribute(PBID, #PB_Calendar_Maximum, Val(Trim(GetXMLAttribute(oGadget, "ca_maximum"))))
Case #PB_GadgetType_Date
SetGadgetAttribute(PBID, #PB_Date_Minimum, Val(Trim(GetXMLAttribute(oGadget, "da_minimum"))))
SetGadgetAttribute(PBID, #PB_Date_Maximum, Val(Trim(GetXMLAttribute(oGadget, "da_maximum"))))
Case #PB_GadgetType_Editor
SetGadgetAttribute(PBID, #PB_Editor_ReadOnly, Val(Trim(GetXMLAttribute(oGadget, "readonly"))))
Case #PB_GadgetType_Panel
;this values readonly
Case #PB_GadgetType_ProgressBar
SetGadgetAttribute(PBID, #PB_ProgressBar_Minimum, Val(Trim(GetXMLAttribute(oGadget, "pr_minimum"))))
SetGadgetAttribute(PBID, #PB_ProgressBar_Maximum, Val(Trim(GetXMLAttribute(oGadget, "pr_maximum"))))
Case #PB_GadgetType_ScrollArea
SetGadgetAttribute(PBID, #PB_ScrollArea_InnerWidth, Val(Trim(GetXMLAttribute(oGadget, "sc_innerwidth"))))
SetGadgetAttribute(PBID, #PB_ScrollArea_InnerHeight, Val(Trim(GetXMLAttribute(oGadget, "sc_innerheight"))))
SetGadgetAttribute(PBID, #PB_ScrollArea_X, Val(Trim(GetXMLAttribute(oGadget, "sc_x"))))
SetGadgetAttribute(PBID, #PB_ScrollArea_Y, Val(Trim(GetXMLAttribute(oGadget, "sc_y"))))
Case #PB_GadgetType_Spin
SetGadgetAttribute(PBID, #PB_Spin_Minimum, Val(Trim(GetXMLAttribute(oGadget, "sp_minimum"))))
SetGadgetAttribute(PBID, #PB_Spin_Maximum, Val(Trim(GetXMLAttribute(oGadget, "sp_maximum"))))
Case #PB_GadgetType_Splitter
SetGadgetAttribute(PBID, #PB_Splitter_FirstMinimumSize, Val(Trim(GetXMLAttribute(oGadget, "firstminimumsize"))))
SetGadgetAttribute(PBID, #PB_Splitter_SecondMinimumSize, Val(Trim(GetXMLAttribute(oGadget, "secondminimumsize"))))
SetGadgetAttribute(PBID, #PB_Splitter_FirstGadget, Val(Trim(GetXMLAttribute(oGadget, "firstgadget"))))
SetGadgetAttribute(PBID, #PB_Splitter_SecondGadget, Val(Trim(GetXMLAttribute(oGadget, "secondgadget"))))
Case #PB_GadgetType_TrackBar
SetGadgetAttribute(PBID, #PB_TrackBar_Minimum, Val(Trim(GetXMLAttribute(oGadget, "tb_minimum"))))
SetGadgetAttribute(PBID, #PB_TrackBar_Maximum, Val(Trim(GetXMLAttribute(oGadget, "tb_maximum"))))
EndSelect
EndIf
If flags & #Serializer_Color
Select GadgetType(PBID)
Case #PB_GadgetType_Calendar, #PB_GadgetType_Date
SetGadgetColor(PBID, #PB_Gadget_FrontColor, Val(Trim(GetXMLAttribute(oGadget, "frontcolor"))))
SetGadgetColor(PBID, #PB_Gadget_BackColor, Val(Trim(GetXMLAttribute(oGadget, "backcolor"))))
SetGadgetColor(PBID, #PB_Gadget_TitleBackColor, Val(Trim(GetXMLAttribute(oGadget, "titlebackcolor"))))
SetGadgetColor(PBID, #PB_Gadget_TitleFrontColor, Val(Trim(GetXMLAttribute(oGadget, "titlefrontcolor"))))
SetGadgetColor(PBID, #PB_Gadget_GrayTextColor, Val(Trim(GetXMLAttribute(oGadget, "graytextcolor"))))
Case #PB_GadgetType_Container
SetGadgetColor(PBID, #PB_Gadget_BackColor, Val(Trim(GetXMLAttribute(oGadget, "backcolor"))))
Case #PB_GadgetType_Editor, #PB_GadgetType_ListView, #PB_GadgetType_ProgressBar, #PB_GadgetType_Spin, #PB_GadgetType_String, #PB_GadgetType_Text
SetGadgetColor(PBID, #PB_Gadget_FrontColor, Val(Trim(GetXMLAttribute(oGadget, "frontcolor"))))
SetGadgetColor(PBID, #PB_Gadget_BackColor, Val(Trim(GetXMLAttribute(oGadget, "backcolor"))))
Case #PB_GadgetType_ExplorerList, #PB_GadgetType_ExplorerTree, #PB_GadgetType_ListIcon
SetGadgetColor(PBID, #PB_Gadget_FrontColor, Val(Trim(GetXMLAttribute(oGadget, "frontcolor"))))
SetGadgetColor(PBID, #PB_Gadget_BackColor, Val(Trim(GetXMLAttribute(oGadget, "backcolor"))))
SetGadgetColor(PBID, #PB_Gadget_LineColor, Val(Trim(GetXMLAttribute(oGadget, "linecolor"))))
Case #PB_GadgetType_HyperLink
SetGadgetColor(PBID, #PB_Gadget_FrontColor, Val(Trim(GetXMLAttribute(oGadget, "frontcolor"))))
EndSelect
EndIf
If flags & #Serializer_Data
SetGadgetData(PBID, Val(Trim(GetXMLAttribute(oGadget, "data"))))
EndIf
If flags & #Serializer_State
SetGadgetState(PBID, Val(Trim(GetXMLAttribute(oGadget, "state"))))
EndIf
If flags & #Serializer_Text
oNode = XMLNodeFromPath(oGadget, "text/")
If oNode
oNode = ChildXMLNode(oNode) ; Das CData stellt ein Child unter der Ebene Text dar
If oNode
SetGadgetText(PBID, Trim(GetXMLNodeText(oNode)))
EndIf
EndIf
EndIf
EndProcedure
Procedure DeSerialize_StandardItems(PBID.l, oGadget.l, flags.l)
Protected oItem.l, oNode.l, NodeListCounter.l
ClearGadgetItemList(PBID)
Repeat
NodeListCounter + 1
oItem = XMLNodeFromPath(oGadget, "items/item[" + Str(NodeListCounter) + "]")
If oItem = 0 : Break : EndIf
; Der Text muss zuerst eingetragen werden, damit die ItemColor, ItemData und ItemState gesetzt werden können
If flags & #Serializer_ItemText
oNode = XMLNodeFromPath(oItem, "text/")
If oNode
oNode = ChildXMLNode(oNode) ; Das CData stellt ein Child unter der Ebene Text dar
If oNode
If GadgetType(PBID) = #PB_GadgetType_Tree
AddGadgetItem(PBID, NodeListCounter - 1, Trim(GetXMLNodeText(oNode)), 0, Val(Trim(GetXMLAttribute(oItem, "item_sublevel"))))
Else
AddGadgetItem(PBID, NodeListCounter - 1, Trim(GetXMLNodeText(oNode)))
EndIf
EndIf
EndIf
EndIf
If flags & #Serializer_ItemColor
If GadgetType(PBID) = #PB_GadgetType_ListIcon Or GadgetType(PBID) = #PB_GadgetType_Tree
SetGadgetItemColor(PBID, NodeListCounter - 1, #PB_Gadget_FrontColor, Val(Trim(GetXMLAttribute(oItem, "item_frontcolor"))))
SetGadgetItemColor(PBID, NodeListCounter - 1, #PB_Gadget_BackColor, Val(Trim(GetXMLAttribute(oItem, "item_backcolor"))))
EndIf
EndIf
If flags & #Serializer_ItemData
SetGadgetItemData(PBID, NodeListCounter - 1, Val(Trim(GetXMLAttribute(oItem, "data"))))
EndIf
If flags & #Serializer_ItemState
Select GadgetType(PBID)
Case #PB_GadgetType_Calendar, #PB_GadgetType_ListView, #PB_GadgetType_ListIcon, #PB_GadgetType_Tree
SetGadgetItemState(PBID, NodeListCounter - 1, Val(Trim(GetXMLAttribute(oItem, "state"))))
EndSelect
EndIf
ForEver
EndProcedure
Procedure DeSerialize(Gadgets.Serializer_Struc(), FileName.s, flags.l = #Serializer_Defaults)
Protected oXML.l, oRoot.l, oGadget.l, XML.s, NodeListCounter.l
If FileSize(FileName) < 0
Debug "File not found"
ProcedureReturn #False
EndIf
oXML = LoadXML(#PB_Any, FileName)
If Not oXML
Debug "oXML is not initialized"
ProcedureReturn #False
EndIf
If XMLStatus(oXML) <> #PB_XML_Success
Debug "Error: " + XMLError(oXML)
Debug "Line: " + Str(XMLErrorLine(oXML))
Debug "Position: " + Str(XMLErrorPosition(oXML))
ProcedureReturn #False
EndIf
FormatXML(oXML, #PB_XML_CutNewline | #PB_XML_ReIndent, 0)
oRoot = RootXMLNode(oXML)
ForEach Gadgets()
NodeListCounter = 1
Repeat
oGadget = XMLNodeFromPath(oRoot, "gadgets/gadget[" + Str(NodeListCounter) + "]")
If oGadget = 0 : Break : EndIf
NodeListCounter + 1
If oGadget
If GetXMLAttribute(oGadget, "Ident") = Gadgets()\Ident
If IsGadget(Gadgets()\PBID)
DeSerialize_Standard(Gadgets()\PBID, oGadget, flags)
Select GadgetType(Gadgets()\PBID)
Case #PB_GadgetType_ComboBox ; ComboBoxGadget()
DeSerialize_StandardItems(Gadgets()\PBID, oGadget, flags)
Case #PB_GadgetType_Editor ; EditorGadget()
DeSerialize_StandardItems(Gadgets()\PBID, oGadget, flags)
Case #PB_GadgetType_ExplorerCombo ; ExplorerComboGadget()
DeSerialize_StandardItems(Gadgets()\PBID, oGadget, flags)
Case #PB_GadgetType_ExplorerList ; ExplorerListGadget()
DeSerialize_StandardItems(Gadgets()\PBID, oGadget, flags)
Case #PB_GadgetType_ExplorerTree ; ExplorerTreeGadget()
DeSerialize_StandardItems(Gadgets()\PBID, oGadget, flags)
Case #PB_GadgetType_ListIcon ; ListIconGadget()
DeSerialize_StandardItems(Gadgets()\PBID, oGadget, flags)
Case #PB_GadgetType_ListView ; ListViewGadget()
DeSerialize_StandardItems(Gadgets()\PBID, oGadget, flags)
Case #PB_GadgetType_Panel ; PanelGadget()
DeSerialize_StandardItems(Gadgets()\PBID, oGadget, flags)
Case #PB_GadgetType_Tree ; TreeGadget()
DeSerialize_StandardItems(Gadgets()\PBID, oGadget, flags)
EndSelect
EndIf
EndIf
EndIf
ForEver
Next
ProcedureReturn #True
EndProcedure
Procedure Serialize(Gadgets.Serializer_Struc(), FileName.s, flags.l = #Serializer_Defaults)
Protected oXML.l, oRoot.l, oGadgets.l, oGadget.l, XML.s
oXML = CreateXML(#PB_Any)
oRoot = RootXMLNode(oXML)
oGadgets = CreateXMLNode(oRoot)
SetXMLNodeName(oGadgets, "gadgets")
ForEach Gadgets()
oGadget = CreateXMLNode(oGadgets)
If oGadget
SetXMLNodeName(oGadget, "gadget")
SetXMLAttribute(oGadget, "Ident", Gadgets()\Ident)
Serialize_Standard(Gadgets()\PBID, oGadget, flags)
Select GadgetType(Gadgets()\PBID)
Case #PB_GadgetType_ComboBox ; ComboBoxGadget()
Serialize_StandardItems(Gadgets()\PBID, oGadget, flags)
Case #PB_GadgetType_Editor ; EditorGadget()
Serialize_StandardItems(Gadgets()\PBID, oGadget, flags)
Case #PB_GadgetType_ExplorerCombo ; ExplorerComboGadget()
Serialize_StandardItems(Gadgets()\PBID, oGadget, flags)
Case #PB_GadgetType_ExplorerList ; ExplorerListGadget()
Serialize_StandardItems(Gadgets()\PBID, oGadget, flags)
Case #PB_GadgetType_ExplorerTree ; ExplorerTreeGadget()
Serialize_StandardItems(Gadgets()\PBID, oGadget, flags)
Case #PB_GadgetType_ListIcon ; ListIconGadget()
Serialize_StandardItems(Gadgets()\PBID, oGadget, flags)
Case #PB_GadgetType_ListView ; ListViewGadget()
Serialize_StandardItems(Gadgets()\PBID, oGadget, flags)
Case #PB_GadgetType_Panel ; PanelGadget()
Serialize_StandardItems(Gadgets()\PBID, oGadget, flags)
Case #PB_GadgetType_Tree ; TreeGadget()
Serialize_StandardItems(Gadgets()\PBID, oGadget, flags)
EndSelect
EndIf
Next
FormatXML(oXML, #PB_XML_ReFormat)
If FileName = ""
XML = Space(ExportXMLSize(oXML))
ExportXML(oXML, @XML, Len(XML))
MessageRequester("", XML)
Else
SaveXML(oXML, FileName)
EndIf
EndProcedure
This save your settings
First parameter is a linklist with Serializer_Struc()
Second parameter is the filename to save
The last parameter is a combination of constants from the Enumeration ;Serializerflags
DeSerialize(Gadgets.Serializer_Struc(), FileName.s, flags.l)
the same to restore settings.
Images in the moment not supported!
For more info's see the examples in the next thread