]> O.S.I.I.S - jp/crow.git/commitdiff
* Tests.csproj:
authorjpbruyere <jp.bruyere@hotmail.com>
Mon, 14 Sep 2015 15:55:46 +0000 (17:55 +0200)
committerjpbruyere <jp.bruyere@hotmail.com>
Mon, 14 Sep 2015 15:55:46 +0000 (17:55 +0200)
* GOLIBTests.cs:
* Popper.goml:
* Checkbox.goml:
* Expandable.goml:
* RadioButton.goml:
* test7.goml:
* Popper.cs:
* test4.1.goml:
* test1.3.goml:
* Checkbox.cs:
* Expandable.cs:
* RadioButton.cs:
* testCheckbox.goml:
* testRadioButton.goml: improve templates, set SvgSub as PropertyLess
  binding updated with only

* radiobutton.svg: simplify svg

17 files changed:
Images/Icons/radiobutton.svg
Templates/Checkbox.goml
Templates/Expandable.goml
Templates/Popper.goml
Templates/RadioButton.goml
Tests/GOLIBTests.cs
Tests/Interfaces/Checkbox.goml [deleted file]
Tests/Interfaces/test1.3.goml [deleted file]
Tests/Interfaces/test4.1.goml
Tests/Interfaces/test7.goml [new file with mode: 0755]
Tests/Interfaces/testCheckbox.goml [new file with mode: 0755]
Tests/Interfaces/testRadioButton.goml [new file with mode: 0755]
Tests/Tests.csproj
src/GraphicObjects/Checkbox.cs
src/GraphicObjects/Expandable.cs
src/GraphicObjects/Popper.cs
src/GraphicObjects/RadioButton.cs

index d0f81c5d3f6c05e692d8b8af5d189c06d5f83c83..226d097b08ab3eb14270a5d34760628a9bbb0609 100644 (file)
@@ -1,77 +1,30 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
 <svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="64"
-   height="64"
-   viewBox="0 0 63.999998 63.999998"
-   id="svg2"
    version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="radiobutton.svg">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="3.9209764"
-     inkscape:cx="36.635416"
-     inkscape:cy="25.879033"
-     inkscape:document-units="px"
-     inkscape:current-layer="svg2"
-     showgrid="false"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     units="px"
-     inkscape:window-width="1280"
-     inkscape:window-height="984"
-     inkscape:window-x="0"
-     inkscape:window-y="16"
-     inkscape:window-maximized="1" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
+   viewBox="0 0 64 64"
+   height="64"
+   width="64">
   <g
      id="checked">
     <circle
-       r="27.214607"
-       cy="35.563198"
-       cx="32.071087"
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1"
        id="path4166"
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" />
+       cx="32"
+       cy="32"
+       r="30" />
     <circle
-       r="20.677874"
-       cy="35.563194"
-       cx="32.071083"
+       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1"
        id="path4166-1"
-       style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" />
+       cx="32"
+       cy="32"
+       r="22" />
   </g>
   <circle
-     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1"
+     r="30"
+     cy="32"
+     cx="32"
      id="unchecked"
-     cx="32.071083"
-     cy="35.563194"
-     r="27.214603" />
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.99999952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1" />
 </svg>
index b37b15f111fdaa64514c035a6ac77ce5cec02430..10ec033fd966be375175037064897f03a7034728 100755 (executable)
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>\r
-<HorizontalStack Width="{Width}" Height="{Height}" Margin="0" Spacing="1">\r
-       <Image Name="Image" Width="16" Height="16" Path="#go.Images.Icons.checkbox.svg"/>\r
-       <Label Name="Caption" Height="{Height}" Width="-1"/>\r
+<HorizontalStack Spacing="1" Height="-1" Width="0">\r
+       <Image Margin="2" Width="14" Height="14" Path="{Image}" SvgSub="{SvgSub}"/>\r
+       <Label Text="{Caption}" Width="0"/>\r
 </HorizontalStack>
\ No newline at end of file
index 877fcdff83548284f6377f04a0b1c715019c862b..79544dbe651fdc7c3bf5748f954a1d65e1c8d32b 100755 (executable)
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>\r
 <Border BorderWidth="1" BorderColor="LightGray"  Height="-1" Width="0" MouseClick="onMouseClick">\r
-       <VerticalStack Height="-1" Width="0" Name="vsTemplateExpander">\r
-               <HorizontalStack Spacing="1" Focusable="false" Height="-1" Width="0">\r
+       <VerticalStack Height="-1" Width="0">\r
+               <HorizontalStack Spacing="1" Height="-1" Width="0">\r
                        <Image Margin="2" Width="12" Height="12" Path="{Image}" SvgSub="{SvgSub}"/>\r
                        <Label Text="{Title}" Width="0"/>\r
                </HorizontalStack>\r
index 27dd8c8d39a1d48b5b8293fde56d78263dbb71a1..a935404fba1506b4bcaab2f75b3d8b2d689c6869 100755 (executable)
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>\r
 <Border BorderWidth="1" BorderColor="LightGray" Height="-1" MouseClick="onMouseClick">\r
-       <HorizontalStack Spacing="1" Focusable="false" Height="-1" Width="0">\r
+       <HorizontalStack Spacing="1" Height="-1" >\r
                <Image Margin="2" Width="12" Height="12" Path="{Image}" SvgSub="{SvgSub}"/>\r
                <Label Text="{Title}" Width="0"/>\r
        </HorizontalStack>\r
index ac52ea753ba6c1face3d316d0e117e50dd2a628a..10ec033fd966be375175037064897f03a7034728 100755 (executable)
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>\r
-<HorizontalStack Width="{Width}" Height="{Height}" Margin="0" Spacing="1">\r
-       <Image Name="Image" Width="12" Height="12" Path="#go.Images.Icons.radiobutton.svg"/>\r
-       <Label Name="Caption" Height="{Height}" Width="-1"/>\r
+<HorizontalStack Spacing="1" Height="-1" Width="0">\r
+       <Image Margin="2" Width="14" Height="14" Path="{Image}" SvgSub="{SvgSub}"/>\r
+       <Label Text="{Caption}" Width="0"/>\r
 </HorizontalStack>
\ No newline at end of file
index 6dd1909b0b546806ba04f40110464baac355f1ea..2f8eb036a6a471427f53d79c3f8304a517f86d87 100644 (file)
@@ -31,27 +31,29 @@ namespace test
                int frameCpt = 0;\r
                int idx = 0;\r
                string[] testFiles = {\r
-                       "testPopper.goml",\r
-                       "testExpandable.goml",\r
-                       "test6.goml",\r
-                       "testHStack.goml",\r
-                       "testMsgBox.goml",\r
-                       "testLabel.goml",\r
-                       "testGrid.goml",\r
                        "test1.goml",\r
                        "test1.1.goml",\r
                        "test1.2.goml",\r
-                       "test1.3.goml",\r
-                       "test2.goml",\r
+                       "testLabel.goml",\r
                        "testContainer.goml",\r
-                       "test_stack.goml",\r
-                       "testScrollbar.goml",\r
+                       "testCheckbox.goml",\r
+                       "testRadioButton.goml",\r
                        "testSpinner.goml",\r
+                       "testPopper.goml",\r
+                       "testExpandable.goml",\r
                        "testWindow.goml",\r
+                       "testMsgBox.goml",\r
+                       "testGrid.goml",\r
                        "fps.goml",\r
                        "testMeter.goml",\r
+                       "test6.goml",\r
+                       "testHStack.goml",\r
+                       "test2.goml",\r
+                       "test_stack.goml",\r
+                       "testScrollbar.goml",\r
                        "test3.goml",\r
                        "test4.1.goml",\r
+                       "test7.goml",\r
                };\r
 \r
                #region FPS\r
diff --git a/Tests/Interfaces/Checkbox.goml b/Tests/Interfaces/Checkbox.goml
deleted file mode 100755 (executable)
index 57184ee..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>\r
-<!--<GraphicObject\r
-                       Width="100" Height="100"\r
-                       Top="200" Left="200" \r
-                       Margin="10" Background="Green"/>-->\r
-<Border CornerRadius="5" Margin="1" BorderWidth="1" Fit="True" Background="SteelBlue">\r
-       <HorizontalStack Name="hstack" Margin="0" Spacing="5">\r
-               <Label Name="labCpt" Text="55"/>\r
-               <VerticalStack Spacing="1" Name="vstack">\r
-                       <Button Width="10" Height="8" MouseClick="onUp">\r
-                               <Image Margin="1" Path="#go.Images.Icons.updown.svg" SvgSub="up"/>\r
-                       </Button>\r
-                       <Button Width="10" Height="8"  MouseClick="onDown">\r
-                               <Image Margin="1" Path="#go.Images.Icons.updown.svg" SvgSub="down"/>\r
-                       </Button>\r
-               </VerticalStack>\r
-       </HorizontalStack>\r
-</Border>
\ No newline at end of file
diff --git a/Tests/Interfaces/test1.3.goml b/Tests/Interfaces/test1.3.goml
deleted file mode 100755 (executable)
index c6fffe4..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0"?>\r
-<Container Name="MainMenu"     \r
-       Margin="30" Focusable="True" Height="-1" Width="300">\r
-       <Border BorderWidth="1" Margin="40" Background="0,5;0,5;0,5;0,5">\r
-               <VerticalStack WidgetSpacing="10">\r
-                       <Button Margin = "10" Text="Start New Game" Height="-1" Width="0" \r
-                               MouseClick="onStartNewGame"/>\r
-                       <Button Margin = "10" Text="Start New Game" Height="-1" Width="0"/>\r
-                       <Button Margin = "10" Text="Start New Game" Height="-1" Width="0"/>\r
-                       <Button Margin = "10" Text="Exit" Height="-1" Width="0"\r
-                               MouseClick="onButExit_MouseClick" />\r
-               </VerticalStack>\r
-       </Border>                               \r
-</Container>
\ No newline at end of file
index a0360eda2be96c09f83032a6e4a0cdf5425ef2a3..bf8dd6889bedfb3827c3db9cb1b9315f4a27c9e4 100755 (executable)
@@ -9,14 +9,14 @@
                MouseEnter="{BorderColor = White}"\r
                MouseLeave="{BorderColor = Transparent}">\r
 \r
-               <HorizontalStack Name="hs0"\r
+               <HorizontalStack Name="hs0" Fit="true"\r
                        WidgetSpacing="10" \r
                        VerticalAlignment="Center" \r
                        Background="0,5;0,5;0,5;0,5">\r
                        <VerticalStack Name="vs1"\r
-                               Margin="20" Width="400">\r
+                               Margin="20" Width="400" Height="-1">\r
                                <Label Name="labMouse" Text="MousePos"/>\r
-                               <HorizontalStack Name="hsPbar">\r
+                               <HorizontalStack Name="hsPbar" Fit="true">\r
                                        <ProgressBar Name="pbBar" \r
                                                Width="100" Height="20"\r
                                                Value="50"\r
                                                Width="100" Height="10"\r
                                                Value="30"/>-->\r
                                </HorizontalStack>\r
-                               <HorizontalStack  Name="hsFocus">\r
+                               <HorizontalStack  Name="hsFocus" Fit="true">\r
                                        <Label Text="Focused:"/>\r
                                        <Label Name="labFocus" />\r
                                </HorizontalStack>\r
-                               <HorizontalStack>\r
+                               <HorizontalStack Fit="true">\r
                                        <Label Text="Active:"  Name="hsActive"/>\r
                                        <Label Name="labActive"/>\r
                                </HorizontalStack>\r
-                               <HorizontalStack>\r
+                               <HorizontalStack Fit="true">\r
                                        <Label Text="Hover:"  Name="hsHover"/>\r
                                        <Label Name="labHover" />\r
                                </HorizontalStack>\r
diff --git a/Tests/Interfaces/test7.goml b/Tests/Interfaces/test7.goml
new file mode 100755 (executable)
index 0000000..97c3d3e
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>\r
+<!--<GraphicObject\r
+                       Width="100" Height="100"\r
+                       Top="200" Left="200" \r
+                       Margin="10" Background="Green"/>-->\r
+<Border CornerRadius="5" Margin="1" BorderWidth="1" Fit="True" Background="SteelBlue">\r
+       <HorizontalStack Name="hstack" Margin="0" Spacing="5" Fit="True">\r
+               <Label Name="labCpt" Text="55"/>\r
+               <VerticalStack Spacing="1" Name="vstack" Fit="True">\r
+                       <Button Width="10" Height="8" >\r
+                               <Image Margin="1" Path="#go.Images.Icons.updown.svg" SvgSub="up"/>\r
+                       </Button>\r
+                       <Button Width="10" Height="8"  >\r
+                               <Image Margin="1" Path="#go.Images.Icons.updown.svg" SvgSub="down"/>\r
+                       </Button>\r
+               </VerticalStack>\r
+       </HorizontalStack>\r
+</Border>
\ No newline at end of file
diff --git a/Tests/Interfaces/testCheckbox.goml b/Tests/Interfaces/testCheckbox.goml
new file mode 100755 (executable)
index 0000000..4a0288c
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>\r
+<Checkbox Caption="Checkbox" Background="DimGray"/>\r
+\r
diff --git a/Tests/Interfaces/testRadioButton.goml b/Tests/Interfaces/testRadioButton.goml
new file mode 100755 (executable)
index 0000000..99542db
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>\r
+<VerticalStack Width="200" Height="-1" Margin="20" Background="DimGray">\r
+       <RadioButton Caption="Radio1"/>\r
+       <RadioButton Caption="Radio2" IsChecked="true"/>\r
+       <RadioButton Caption="Radio3"/>\r
+       <RadioButton Caption="Radio4"/>\r
+</VerticalStack>\r
+\r
index b8a6acc719597361293e6a1ec6b01519b107d33d..210d0c8b90a0ced82e7d36ff3e77a7b97bcfd4a5 100644 (file)
@@ -83,9 +83,6 @@
     <None Include="Interfaces\test4.1.goml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="Interfaces\test1.3.goml">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
     <None Include="Interfaces\fps.goml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
     <None Include="Interfaces\testPopper.goml">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
+    <None Include="Interfaces\testRadioButton.goml">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="Interfaces\testCheckbox.goml">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="Interfaces\test7.goml">
+      <LogicalName>Tests.Interfaces.test7.goml</LogicalName>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
   </ItemGroup>
   <ItemGroup>
     <Folder Include="Interfaces\" />
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="image\tetra.png" />
-    <EmbeddedResource Include="Interfaces\Checkbox.goml" />
   </ItemGroup>
 </Project>
index 863cae0c8a499d61ca8af579ca740868c200373d..d4deb1710ffed13e595ff92644b54a79324adda8 100644 (file)
@@ -19,51 +19,18 @@ namespace go
        [DefaultTemplate("#go.Templates.Checkbox.goml")]\r
     public class Checkbox : TemplatedControl\r
     {                  \r
-               Label _caption;\r
-               Image _image;\r
+               string caption;\r
+               string image;\r
+               bool isChecked;\r
 \r
+               #region CTOR\r
                public Checkbox() : base()\r
                {                       \r
-               }       \r
-                       \r
-               protected override void loadTemplate(GraphicObject template = null)\r
-               {                       \r
-                       base.loadTemplate (template);\r
-\r
-                       _caption = this.child.FindByName ("Caption") as Label;\r
-                       _image = this.child.FindByName ("Image") as Image;\r
-                       _image.SvgSub = "unchecked";\r
-               }\r
-                       \r
-\r
-               [XmlAttributeAttribute()][DefaultValue("Checkbox")]\r
-               public string Caption {\r
-                       get { return _caption == null ? "" : _caption.Text; } \r
-                       set { \r
-                               if (_caption == null)\r
-                                       return;\r
-                               _caption.Text = value; \r
-                       }\r
-               }\r
-        [XmlAttributeAttribute()][DefaultValue(false)]\r
-        public bool IsChecked\r
-        {\r
-                       get { return _image == null ? false :_image.SvgSub == "checked"; }\r
-            set\r
-            {\r
-                if (value == IsChecked)\r
-                    return;\r
+               }                                                       \r
+               #endregion\r
 \r
-                               if (value)\r
-                                       _image.SvgSub = "checked";\r
-                               else\r
-                                       _image.SvgSub = "unchecked";\r
-                                          \r
-                               NotifyValueChanged("IsChecked",  IsChecked);\r
-                //registerForGraphicUpdate();\r
-            }\r
-        }\r
 \r
+               #region GraphicObject overrides\r
                [XmlAttributeAttribute()][DefaultValue(-1)]\r
                public override int Height {\r
                        get { return base.Height; }\r
@@ -75,6 +42,44 @@ namespace go
                        get { return base.Focusable; }\r
                        set { base.Focusable = value; }\r
                }\r
+               #endregion\r
+\r
+               [XmlAttributeAttribute()][DefaultValue("Checkbox")]\r
+               public string Caption {\r
+                       get { return caption; } \r
+                       set {\r
+                               if (caption == value)\r
+                                       return;\r
+                               caption = value; \r
+                               NotifyValueChanged ("Caption", caption);\r
+                       }\r
+               }        \r
+               [XmlAttributeAttribute()][DefaultValue("#go.Images.Icons.checkbox.svg")]\r
+               public string Image {\r
+                       get { return image; } \r
+                       set {\r
+                               if (image == value)\r
+                                       return;\r
+                               image = value; \r
+                               NotifyValueChanged ("Image", image);\r
+                       }\r
+               } \r
+\r
+               [XmlAttributeAttribute()][DefaultValue(false)]\r
+               public bool IsChecked\r
+               {\r
+                       get { return isChecked; }\r
+                       set\r
+                       {\r
+                               isChecked = value;\r
+\r
+                               NotifyValueChanged ("IsChecked", value);\r
+                               if (isChecked)\r
+                                       NotifyValueChanged ("SvgSub", "checked");\r
+                               else\r
+                                       NotifyValueChanged ("SvgSub", "unchecked");\r
+                       }\r
+               }\r
                public override void onMouseClick (object sender, MouseButtonEventArgs e)\r
                {\r
                        IsChecked = !IsChecked;\r
index c8490cbac7c38d78a476b0cc86968deaeae753ec..f9e81c1a9249256b415d1620c82dc48a3001d6f3 100644 (file)
@@ -80,30 +80,23 @@ namespace go
                                image = value; \r
                                NotifyValueChanged ("Image", image);\r
                        }\r
-               } \r
-               [XmlAttributeAttribute()][DefaultValue("collapsed")]\r
-               public string SvgSub {\r
-                       get { return IsExpanded ? "expanded" : "collapsed"; } \r
-               }      \r
-      \r
+               }     \r
                [XmlAttributeAttribute()][DefaultValue(false)]\r
         public bool IsExpanded\r
         {\r
                        get { return _isExpanded; }\r
             set\r
             {\r
-                if (value == _isExpanded)\r
-                    return;\r
-\r
                                _isExpanded = value;\r
-                               NotifyValueChanged ("SvgSub", SvgSub);\r
 \r
-                               if (_isExpanded)\r
+                               if (_isExpanded) {\r
                                        onExpand (this, null);\r
-                               else\r
-                                       onCollapse (this, null);\r
+                                       NotifyValueChanged ("SvgSub", "expanded");\r
+                                       return;\r
+                               }\r
 \r
-                //registerForGraphicUpdate();\r
+                               onCollapse (this, null);\r
+                               NotifyValueChanged ("SvgSub", "collapsed");\r
             }\r
         }\r
 \r
index 419902471dca2d45b3181fd95db54dfe19526fea..76a12f58ba406c746015ef25924e02afb781538d 100644 (file)
@@ -69,10 +69,6 @@ namespace go
                                NotifyValueChanged ("Image", image);\r
                        }\r
                } \r
-               [XmlAttributeAttribute()][DefaultValue("collapsed")]\r
-               public string SvgSub {\r
-                       get { return IsPopped ? "expanded" : "collapsed"; } \r
-               } \r
 \r
                [XmlAttributeAttribute()][DefaultValue(false)]\r
         public bool IsPopped\r
@@ -80,35 +76,39 @@ namespace go
                        get { return _isPopped; }\r
             set\r
             {\r
-                if (value == _isPopped)\r
-                    return;\r
-\r
                                _isPopped = value;\r
-                               NotifyValueChanged ("SvgSub", SvgSub);\r
 \r
-                               if (_isPopped)\r
+                               if (_isPopped) {\r
                                        onPop (this, null);\r
-                               else\r
-                                       onUnpop (this, null);\r
+                                       NotifyValueChanged ("SvgSub", "expanded");\r
+                                       return;\r
+                               }\r
 \r
-                //registerForGraphicUpdate();\r
+                               onUnpop (this, null);\r
+                               NotifyValueChanged ("SvgSub", "collapsed");\r
             }\r
         }\r
                        \r
                public virtual void onPop(object sender, EventArgs e)\r
                {\r
+                       IGOLibHost tc = TopContainer;\r
+                       if (tc == null)\r
+                               return;\r
                        if (Content != null) {\r
                                Rectangle r = this.ScreenCoordinates (this.Slot);\r
                                Content.Visible = true;\r
                                Content.Left = r.Left;\r
                                Content.Top = r.Bottom;\r
-                               TopContainer.AddWidget (Content);\r
+                               tc.AddWidget (Content);\r
                        }\r
                        Pop.Raise (this, e);\r
                }\r
                public virtual void onUnpop(object sender, EventArgs e)\r
                {\r
-                       TopContainer.DeleteWidget (Content);\r
+                       IGOLibHost tc = TopContainer;\r
+                       if (tc == null)\r
+                               return;\r
+                       tc.DeleteWidget (Content);\r
                        Unpop.Raise (this, e);\r
                }\r
                        \r
index 245fd2b239467cd791e22a8791e626cb339feb23..7aa9370c00395278bfb1b270143c8e760732c30e 100644 (file)
@@ -19,56 +19,62 @@ namespace go
        [DefaultTemplate("#go.Templates.RadioButton.goml")]\r
     public class RadioButton : TemplatedControl\r
     {                  \r
-               Label _caption;\r
-               Image _image;\r
+               string caption;\r
+               string image;\r
+               bool isChecked;\r
 \r
-               public RadioButton() : base()\r
-               {\r
-               }       \r
-\r
-               protected override void loadTemplate(GraphicObject template = null)\r
+               #region CTOR\r
+               public RadioButton() : base(){} \r
+               #endregion\r
+                       \r
+               #region GraphicObject overrides\r
+               [XmlAttributeAttribute()][DefaultValue(true)]//overiden to get default to true\r
+               public override bool Focusable\r
                {\r
-                       base.loadTemplate (template);\r
-\r
-                       _caption = this.child.FindByName ("Caption") as Label;//TODO:should use bindings instead\r
-                       _image = this.child.FindByName ("Image") as Image;\r
-                       _image.SvgSub = "unchecked";\r
+                       get { return base.Focusable; }\r
+                       set { base.Focusable = value; }\r
                }\r
-\r
                [XmlAttributeAttribute()][DefaultValue(-1)]\r
                public override int Height {\r
                        get { return base.Height; }\r
                        set { base.Height = value; }\r
                }\r
-               [XmlAttributeAttribute()][DefaultValue(true)]//overiden to get default to true\r
-               public override bool Focusable\r
-               {\r
-                       get { return base.Focusable; }\r
-                       set { base.Focusable = value; }\r
-               }\r
+               #endregion\r
 \r
-               [XmlAttributeAttribute][DefaultValue("RadioButton")]\r
+               [XmlAttributeAttribute()][DefaultValue("RadioButton")]\r
                public string Caption {\r
-                       get { return _caption.Text; } \r
-                       set { \r
-                               _caption.Text = value; \r
+                       get { return caption; } \r
+                       set {\r
+                               if (caption == value)\r
+                                       return;\r
+                               caption = value; \r
+                               NotifyValueChanged ("Caption", caption);\r
                        }\r
-               }\r
+               }        \r
+               [XmlAttributeAttribute()][DefaultValue("#go.Images.Icons.radiobutton.svg")]\r
+               public string Image {\r
+                       get { return image; } \r
+                       set {\r
+                               if (image == value)\r
+                                       return;\r
+                               image = value; \r
+                               NotifyValueChanged ("Image", image);\r
+                       }\r
+               } \r
\r
         [XmlAttributeAttribute()][DefaultValue(false)]\r
         public bool IsChecked\r
         {\r
-                       get { return _image == null ? false :_image.SvgSub == "checked"; }\r
+                       get { return isChecked; }\r
             set\r
             {\r
-//                if (value == IsChecked)\r
-//                    return;\r
-//\r
-                               if (value)\r
-                                       _image.SvgSub = "checked";\r
+                               isChecked = value;\r
+\r
+                               NotifyValueChanged ("IsChecked", value);\r
+                               if (isChecked)\r
+                                       NotifyValueChanged ("SvgSub", "checked");\r
                                else\r
-                                       _image.SvgSub = "unchecked";\r
-                                               \r
-                registerForGraphicUpdate();\r
+                                       NotifyValueChanged ("SvgSub", "unchecked");\r
             }\r
         }\r
 \r
@@ -78,7 +84,8 @@ namespace go
                        if (pg != null) {\r
                                foreach (RadioButton c in pg.Children.OfType<RadioButton>())\r
                                        c.IsChecked = (c == this);\r
-                       }\r
+                       } else\r
+                               IsChecked = !IsChecked;\r
 \r
                        base.onMouseClick (sender, e);\r
                }\r