]> O.S.I.I.S - jp/crow.git/commitdiff
debug, combo improvments
authorjpbruyere <jp.bruyere@hotmail.com>
Tue, 22 Sep 2015 12:29:39 +0000 (14:29 +0200)
committerjpbruyere <jp.bruyere@hotmail.com>
Tue, 22 Sep 2015 12:29:39 +0000 (14:29 +0200)
GOLib.csproj
src/GraphicObjects/Combobox.cs
src/GraphicObjects/GraphicObject.cs
src/GraphicObjects/ListBox.cs
src/Interface.cs

index 1c5d4263eb834d7551539bab772df0a20ddf19d8..97ec362ece9b38060aebd27e105f0060ef953103 100644 (file)
@@ -24,6 +24,7 @@
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\r
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ReleaseVersion>0.2</ReleaseVersion>\r
+    <SynchReleaseVersion>false</SynchReleaseVersion>\r
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <BaseAddress>4194304</BaseAddress>\r
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">\r
+    <DefineConstants>__linux__</DefineConstants>\r
     <Optimize>True</Optimize>\r
     <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>\r
     <DebugType>None</DebugType>\r
     <BaseAddress>4194304</BaseAddress>\r
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
-    <DefineConstants>__linux__</DefineConstants>\r
     <OutputPath>bin\Release</OutputPath>\r
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <OutputPath>bin\Debug</OutputPath>\r
+    <DefineConstants>TRACE;DEBUG;__linux__;DEBUG_LOAD_TIME</DefineConstants>\r
   </PropertyGroup>\r
   <!--  <PropertyGroup Condition=" '$(Platform)' == 'Linux_x86' ">\r
     <DefineConstants>__linux__</DefineConstants>\r
index 5cbc875e9d25b5bbb29c0044082352783e809c72..c9781f71273f07d2193f22173ef19cdb6041aec1 100644 (file)
@@ -37,6 +37,8 @@ namespace go
                string _itemTemplate;\r
                string _overlayTemplate;\r
 \r
+               public event EventHandler Pop;\r
+               public event EventHandler Unpop;\r
                public event EventHandler<SelectionChangeEventArgs> SelectedItemChanged;\r
 \r
                #region implemented abstract members of TemplatedControl\r
@@ -87,20 +89,44 @@ namespace go
                [XmlAttributeAttribute][DefaultValue(-1)]\r
                public int SelectedIndex{\r
                        get { return _selectedIndex; }\r
-                       set { _selectedIndex = value; }\r
+                       set { \r
+                               //store value event if data is null, because in xml parsing selindex is always\r
+                               //before data, so it's impossible without that trick to set a default index in goml\r
+                               _selectedIndex = value; \r
+       \r
+                               if (data == null)                                       \r
+                                       return;\r
+       \r
+                               if (_selectedIndex > data.Count - 1 || _selectedIndex < 0)\r
+                                       throw new Exception ("Combobox SelectedIndex out of range");\r
+\r
+\r
+                               _selectedItem = data [_selectedIndex];\r
+                               NotifyValueChanged ("SelectedIndex", SelectedIndex);\r
+                               SelectedItemChanged.Raise (this, new SelectionChangeEventArgs(_selectedItem));\r
+\r
+                               if (SelectedItem == null)\r
+                                       Text = "";\r
+                               else\r
+                                       Text = _selectedItem.ToString ();\r
+                       }\r
                }\r
                public object SelectedItem{\r
-                       set {                           \r
+                       set {\r
+                               if (_selectedItem == value)\r
+                                       return;\r
+\r
                                _selectedItem = value;\r
+                               _selectedIndex = data.IndexOf (_selectedItem);\r
+                               NotifyValueChanged ("SelectedIndex", _selectedIndex);\r
+                               SelectedItemChanged.Raise (this, new SelectionChangeEventArgs(_selectedItem));\r
 \r
-//                             NotifyValueChanged ("SelectedItem", _selectedItem);\r
-//\r
                                if (SelectedItem == null)\r
                                        Text = "";\r
                                else\r
                                        Text = _selectedItem.ToString ();\r
                        }\r
-                               \r
+\r
                        get { return _selectedItem; }\r
                }\r
                [XmlAttributeAttribute][DefaultValue(null)]\r
@@ -121,7 +147,7 @@ namespace go
                                if (data == null)\r
                                        return;\r
 \r
-                               #if DEBUG\r
+                               #if DEBUG_LOAD_TIME\r
                                Stopwatch loadingTime = new Stopwatch ();\r
                                loadingTime.Start ();\r
                                #endif\r
@@ -141,7 +167,13 @@ namespace go
 \r
                                ms.Dispose ();\r
 \r
-                               #if DEBUG\r
+                               if (SelectedIndex < 0)\r
+                                       return;\r
+\r
+                               //force raise of changes\r
+                               SelectedIndex = SelectedIndex;\r
+\r
+                               #if DEBUG_LOAD_TIME\r
                                loadingTime.Stop ();\r
                                Debug.WriteLine("Listbox Loading: {0} ticks \t, {1} ms",\r
                                        loadingTime.ElapsedTicks,\r
@@ -149,27 +181,14 @@ namespace go
                                #endif\r
                        }\r
                }\r
-\r
-               void itemClick(object sender, OpenTK.Input.MouseButtonEventArgs e){\r
-                       object datasource = (sender as GraphicObject).DataSource;\r
-                       SelectedItem = datasource;\r
-                       SelectedItemChanged.Raise (sender, new SelectionChangeEventArgs(datasource));\r
-                       IsPopped = false;\r
-\r
-                       //Debug.WriteLine ((sender as GraphicObject).DataSource);\r
-               }\r
-\r
-               public event EventHandler Pop;\r
-               public event EventHandler Unpop;\r
-\r
                public GraphicObject Overlay {\r
                        get { return _overlay; }\r
                        set { \r
                                if (_overlay != null) {\r
                                        _overlay.LayoutChanged -= _overlay_LayoutChanged;\r
-                                       _overlay.MouseLeave -= _content_MouseLeave;\r
+                                       _overlay.MouseLeave -= _overlay_MouseLeave;\r
                                }\r
-                               \r
+\r
                                _overlay = value; \r
 \r
                                if (_overlay == null)\r
@@ -177,15 +196,48 @@ namespace go
 \r
                                _overlay.Focusable = true;\r
                                _overlay.LayoutChanged += _overlay_LayoutChanged;\r
-                               _overlay.MouseLeave += _content_MouseLeave;\r
+                               _overlay.MouseLeave += _overlay_MouseLeave;\r
+                       }\r
+               }\r
+               [XmlAttributeAttribute()][DefaultValue("Combobox")]\r
+               public string Text {\r
+                       get { return text; } \r
+                       set {\r
+                               if (text == value)\r
+                                       return;\r
+                               text = value; \r
+                               NotifyValueChanged ("Text", text);\r
+                       }\r
+               }        \r
+               [XmlAttributeAttribute()][DefaultValue(false)]\r
+               public bool IsPopped\r
+               {\r
+                       get { return _isPopped; }\r
+                       set\r
+                       {\r
+                               _isPopped = value;\r
+\r
+                               if (_isPopped) {\r
+                                       onPop (this, null);\r
+                                       NotifyValueChanged ("SvgSub", "expanded");\r
+                                       return;\r
+                               }\r
+\r
+                               onUnpop (this, null);\r
+                               NotifyValueChanged ("SvgSub", "collapsed");\r
                        }\r
                }\r
 \r
-               void _content_MouseLeave (object sender, MouseMoveEventArgs e)\r
+               void itemClick(object sender, OpenTK.Input.MouseButtonEventArgs e){\r
+                       object datasource = (sender as GraphicObject).DataSource;\r
+                       SelectedItem = datasource;\r
+                       IsPopped = false;\r
+                       //Debug.WriteLine ((sender as GraphicObject).DataSource);\r
+               }\r
+               void _overlay_MouseLeave (object sender, MouseMoveEventArgs e)\r
                {\r
                        IsPopped = false;\r
                }\r
-\r
                void _overlay_LayoutChanged (object sender, LayoutChangeEventArgs e)\r
                {\r
                        ILayoutable tc = Overlay.Parent as ILayoutable;\r
@@ -210,19 +262,6 @@ namespace go
                                        Overlay.Top = 0;\r
                        }\r
                }\r
-               public override void ClearBinding ()\r
-               {\r
-                       //ensure popped window is cleared\r
-                       if (Overlay != null) {\r
-                               if (Overlay.Parent != null) {\r
-                                       IGOLibHost tc = Overlay.Parent as IGOLibHost;\r
-                                       if (tc != null)\r
-                                               tc.DeleteWidget (Overlay);\r
-                               }\r
-                       }\r
-                       base.ClearBinding ();\r
-\r
-               }\r
 \r
                [XmlAttributeAttribute()][DefaultValue(true)]//overiden to get default to true\r
                public override bool Focusable\r
@@ -231,35 +270,6 @@ namespace go
                        set { base.Focusable = value; }\r
                }\r
 \r
-               [XmlAttributeAttribute()][DefaultValue("Combobox")]\r
-               public string Text {\r
-                       get { return text; } \r
-                       set {\r
-                               if (text == value)\r
-                                       return;\r
-                               text = value; \r
-                               NotifyValueChanged ("Text", text);\r
-                       }\r
-               }        \r
-\r
-               [XmlAttributeAttribute()][DefaultValue(false)]\r
-        public bool IsPopped\r
-        {\r
-                       get { return _isPopped; }\r
-            set\r
-            {\r
-                               _isPopped = value;\r
-\r
-                               if (_isPopped) {\r
-                                       onPop (this, null);\r
-                                       NotifyValueChanged ("SvgSub", "expanded");\r
-                                       return;\r
-                               }\r
-\r
-                               onUnpop (this, null);\r
-                               NotifyValueChanged ("SvgSub", "collapsed");\r
-            }\r
-        }\r
                        \r
                public virtual void onPop(object sender, EventArgs e)\r
                {\r
@@ -289,5 +299,18 @@ namespace go
                        base.onMouseClick (sender, e);\r
                }\r
 \r
+               public override void ClearBinding ()\r
+               {\r
+                       //ensure popped window is cleared\r
+                       if (Overlay != null) {\r
+                               if (Overlay.Parent != null) {\r
+                                       IGOLibHost tc = Overlay.Parent as IGOLibHost;\r
+                                       if (tc != null)\r
+                                               tc.DeleteWidget (Overlay);\r
+                               }\r
+                       }\r
+                       base.ClearBinding ();\r
+\r
+               }\r
        }\r
 }\r
index 807ad95b0574888aa38b7b23e7a317d46819b887..443fa6534c8bee5d8b93327e7c2a413c183275d2 100644 (file)
@@ -801,7 +801,9 @@ namespace go
                                                        MemberName = attName\r
                                                });\r
                                        }\r
-                               } else if (mi.MemberType == MemberTypes.Property) {\r
+                                       continue;\r
+                               }\r
+                               if (mi.MemberType == MemberTypes.Property) {\r
                                        PropertyInfo pi = mi as PropertyInfo;\r
 \r
                                        if (pi.GetSetMethod () == null)\r
index 9b5ea73f6e5b17fb532fbb191fe38474554230b1..9435ffbe9731f65ac3529a879184df0ed150c478 100644 (file)
@@ -27,7 +27,6 @@ using System.IO;
 using System.Diagnostics;
 using System.Xml;
 
-
 namespace go
 {
        [DefaultTemplate("#go.Templates.Listbox.goml")]
@@ -85,10 +84,10 @@ namespace go
                                if (data == null)
                                        return;
 
-//                             #if DEBUG
-//                             Stopwatch loadingTime = new Stopwatch ();
-//                             loadingTime.Start ();
-//                             #endif
+                               #if DEBUG_LOAD_TIME
+                               Stopwatch loadingTime = new Stopwatch ();
+                               loadingTime.Start ();
+                               #endif
 
                                MemoryStream ms = new MemoryStream ();
                                using (Stream stream = Interface.GetStreamFromPath (ItemTemplate))                                      
@@ -105,12 +104,12 @@ namespace go
 
                                ms.Dispose ();
 
-//                             #if DEBUG
-//                             loadingTime.Stop ();
-//                             Debug.WriteLine("Listbox {2} Loading: {0} ticks \t, {1} ms",
-//                                     loadingTime.ElapsedTicks,
-//                                     loadingTime.ElapsedMilliseconds, this.ToString());
-//                             #endif
+                               #if DEBUG_LOAD_TIME
+                               loadingTime.Stop ();
+                               Debug.WriteLine("Listbox {2} Loading: {0} ticks \t, {1} ms",
+                                       loadingTime.ElapsedTicks,
+                                       loadingTime.ElapsedMilliseconds, this.ToString());
+                               #endif
                        }
                }
 
index 551cd1d354370a5b29fd62b83239acd4dbd130c4..f988a17ac61b777e82ebcc3153e9f297f666700f 100644 (file)
@@ -146,6 +146,11 @@ namespace go
                }
                public static GraphicObject Load(Stream stream, Type type, object hostClass = null, bool resolve = true)
                {
+                       #if DEBUG_LOAD_TIME
+                       Stopwatch loadingTime = new Stopwatch ();
+                       loadingTime.Start ();
+                       #endif
+
                        GraphicObject result;
 
 
@@ -168,6 +173,14 @@ namespace go
                        if (resolve)
                                resolveGOML (hostClass);
 
+                       #if DEBUG_LOAD_TIME
+                       loadingTime.Stop ();
+                       Debug.WriteLine("GOML Loading ({2}): {0} ticks \t, {1} ms",
+                       loadingTime.ElapsedTicks,
+                       loadingTime.ElapsedMilliseconds,
+                       CurrentGOMLPath);
+                       #endif
+
                        return result;
                }