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