I added your patch. Thanks! Can you check if everything is ok?
BTW: Lainz do you still have write permissions on SVN? Sourceforge changed sources paths and I can't understand new permission manager
I don't have access, sourceforge and his changes..
---
Here it is, well I've not touched nothing and only I've added the methods LoadFromFile, SaveToFile and OnFindClass. Patch file attached.
The output is something like the '.bcbtn' but with less information.
I think it's ok to just store the 'style' and nothing more that that, but i don't know how to limit the data that will be streamed only in the saved file without touching the published things that works inside the object inspector on the ide.
As is it streams position, size, the StateClicked, StateHover, StateNormal, DropDown settings, Opacity.. Caption and some others..
By the other hand if something is missing the way to fix:
if it's a SubComponent set TheComponent.SetSubComponent(True) after creating.
if it's a custom property:
http://forum.lazarus.freepascal.org/index.php/topic,24011.msg144123.html#msg144123I think that Dibo used something like this when he added the 'DummyProperty' that's used to load and save from file but that only works in the object inspector.
object BCButton1: TBCButton
Left = 8
Height = 33
Top = 8
Width = 123
StateClicked.Background.Color = clBlack
StateClicked.Background.ColorOpacity = 255
StateClicked.Background.Gradient1.StartColor = 8404992
StateClicked.Background.Gradient1.StartColorOpacity = 255
StateClicked.Background.Gradient1.DrawMode = dmSet
StateClicked.Background.Gradient1.EndColor = 4194304
StateClicked.Background.Gradient1.EndColorOpacity = 255
StateClicked.Background.Gradient1.ColorCorrection = True
StateClicked.Background.Gradient1.GradientType = gtRadial
StateClicked.Background.Gradient1.Point1XPercent = 50
StateClicked.Background.Gradient1.Point1YPercent = 100
StateClicked.Background.Gradient1.Point2XPercent = 0
StateClicked.Background.Gradient1.Point2YPercent = 0
StateClicked.Background.Gradient1.Sinus = False
StateClicked.Background.Gradient2.StartColor = clWhite
StateClicked.Background.Gradient2.StartColorOpacity = 255
StateClicked.Background.Gradient2.DrawMode = dmSet
StateClicked.Background.Gradient2.EndColor = clBlack
StateClicked.Background.Gradient2.EndColorOpacity = 255
StateClicked.Background.Gradient2.ColorCorrection = True
StateClicked.Background.Gradient2.GradientType = gtLinear
StateClicked.Background.Gradient2.Point1XPercent = 0
StateClicked.Background.Gradient2.Point1YPercent = 0
StateClicked.Background.Gradient2.Point2XPercent = 0
StateClicked.Background.Gradient2.Point2YPercent = 100
StateClicked.Background.Gradient2.Sinus = False
StateClicked.Background.Gradient1EndPercent = 100
StateClicked.Background.Style = bbsGradient
StateClicked.Border.Color = clBlack
StateClicked.Border.ColorOpacity = 255
StateClicked.Border.LightColor = clWhite
StateClicked.Border.LightOpacity = 255
StateClicked.Border.LightWidth = 0
StateClicked.Border.Style = bboNone
StateClicked.Border.Width = 1
StateClicked.FontEx.Color = 16770790
StateClicked.FontEx.EndEllipsis = False
StateClicked.FontEx.FontQuality = fqSystemClearType
StateClicked.FontEx.Height = 0
StateClicked.FontEx.SingleLine = True
StateClicked.FontEx.Shadow = True
StateClicked.FontEx.ShadowColor = clBlack
StateClicked.FontEx.ShadowColorOpacity = 255
StateClicked.FontEx.ShadowRadius = 2
StateClicked.FontEx.ShadowOffsetX = 1
StateClicked.FontEx.ShadowOffsetY = 1
StateClicked.FontEx.Style = [fsBold]
StateClicked.FontEx.TextAlignment = bcaCenter
StateClicked.FontEx.WordBreak = False
StateHover.Background.Color = clBlack
StateHover.Background.ColorOpacity = 255
StateHover.Background.Gradient1.StartColor = 16744448
StateHover.Background.Gradient1.StartColorOpacity = 255
StateHover.Background.Gradient1.DrawMode = dmSet
StateHover.Background.Gradient1.EndColor = 8404992
StateHover.Background.Gradient1.EndColorOpacity = 255
StateHover.Background.Gradient1.ColorCorrection = True
StateHover.Background.Gradient1.GradientType = gtRadial
StateHover.Background.Gradient1.Point1XPercent = 50
StateHover.Background.Gradient1.Point1YPercent = 100
StateHover.Background.Gradient1.Point2XPercent = 0
StateHover.Background.Gradient1.Point2YPercent = 0
StateHover.Background.Gradient1.Sinus = False
StateHover.Background.Gradient2.StartColor = clWhite
StateHover.Background.Gradient2.StartColorOpacity = 255
StateHover.Background.Gradient2.DrawMode = dmSet
StateHover.Background.Gradient2.EndColor = clBlack
StateHover.Background.Gradient2.EndColorOpacity = 255
StateHover.Background.Gradient2.ColorCorrection = True
StateHover.Background.Gradient2.GradientType = gtLinear
StateHover.Background.Gradient2.Point1XPercent = 0
StateHover.Background.Gradient2.Point1YPercent = 0
StateHover.Background.Gradient2.Point2XPercent = 0
StateHover.Background.Gradient2.Point2YPercent = 100
StateHover.Background.Gradient2.Sinus = False
StateHover.Background.Gradient1EndPercent = 100
StateHover.Background.Style = bbsGradient
StateHover.Border.Color = clBlack
StateHover.Border.ColorOpacity = 255
StateHover.Border.LightColor = clWhite
StateHover.Border.LightOpacity = 255
StateHover.Border.LightWidth = 0
StateHover.Border.Style = bboNone
StateHover.Border.Width = 1
StateHover.FontEx.Color = clWhite
StateHover.FontEx.EndEllipsis = False
StateHover.FontEx.FontQuality = fqSystemClearType
StateHover.FontEx.Height = 0
StateHover.FontEx.SingleLine = True
StateHover.FontEx.Shadow = True
StateHover.FontEx.ShadowColor = clBlack
StateHover.FontEx.ShadowColorOpacity = 255
StateHover.FontEx.ShadowRadius = 2
StateHover.FontEx.ShadowOffsetX = 1
StateHover.FontEx.ShadowOffsetY = 1
StateHover.FontEx.Style = [fsBold]
StateHover.FontEx.TextAlignment = bcaCenter
StateHover.FontEx.WordBreak = False
StateNormal.Background.Color = clBlack
StateNormal.Background.ColorOpacity = 255
StateNormal.Background.Gradient1.StartColor = 4194304
StateNormal.Background.Gradient1.StartColorOpacity = 255
StateNormal.Background.Gradient1.DrawMode = dmSet
StateNormal.Background.Gradient1.EndColor = 8405056
StateNormal.Background.Gradient1.EndColorOpacity = 255
StateNormal.Background.Gradient1.ColorCorrection = True
StateNormal.Background.Gradient1.GradientType = gtLinear
StateNormal.Background.Gradient1.Point1XPercent = 0
StateNormal.Background.Gradient1.Point1YPercent = 0
StateNormal.Background.Gradient1.Point2XPercent = 0
StateNormal.Background.Gradient1.Point2YPercent = 100
StateNormal.Background.Gradient1.Sinus = False
StateNormal.Background.Gradient2.StartColor = 8405056
StateNormal.Background.Gradient2.StartColorOpacity = 255
StateNormal.Background.Gradient2.DrawMode = dmSet
StateNormal.Background.Gradient2.EndColor = 4194304
StateNormal.Background.Gradient2.EndColorOpacity = 255
StateNormal.Background.Gradient2.ColorCorrection = True
StateNormal.Background.Gradient2.GradientType = gtRadial
StateNormal.Background.Gradient2.Point1XPercent = 50
StateNormal.Background.Gradient2.Point1YPercent = 100
StateNormal.Background.Gradient2.Point2XPercent = 0
StateNormal.Background.Gradient2.Point2YPercent = 0
StateNormal.Background.Gradient2.Sinus = False
StateNormal.Background.Gradient1EndPercent = 60
StateNormal.Background.Style = bbsGradient
StateNormal.Border.Color = clBlack
StateNormal.Border.ColorOpacity = 255
StateNormal.Border.LightColor = clWhite
StateNormal.Border.LightOpacity = 255
StateNormal.Border.LightWidth = 0
StateNormal.Border.Style = bboNone
StateNormal.Border.Width = 1
StateNormal.FontEx.Color = 16770790
StateNormal.FontEx.EndEllipsis = False
StateNormal.FontEx.FontQuality = fqSystemClearType
StateNormal.FontEx.Height = 0
StateNormal.FontEx.SingleLine = True
StateNormal.FontEx.Shadow = True
StateNormal.FontEx.ShadowColor = clBlack
StateNormal.FontEx.ShadowColorOpacity = 255
StateNormal.FontEx.ShadowRadius = 2
StateNormal.FontEx.ShadowOffsetX = 1
StateNormal.FontEx.ShadowOffsetY = 1
StateNormal.FontEx.Style = [fsBold]
StateNormal.FontEx.TextAlignment = bcaCenter
StateNormal.FontEx.WordBreak = False
Caption = 'BCButton1'
Color = clNone
DropDownWidth = 16
DropDownArrowSize = 8
GlobalOpacity = 255
ParentColor = False
Rounding.RoundX = 12
Rounding.RoundY = 12
Rounding.RoundOptions = []
RoundingDropDown.RoundX = 1
RoundingDropDown.RoundY = 1
RoundingDropDown.RoundOptions = []
TextApplyGlobalOpacity = False
end