aboutsummaryrefslogtreecommitdiffstatsci
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2018-02-09 20:44:48 +0100
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2018-02-09 20:48:02 +0100
commitdce9ecfbac5b78476550bfe1fc76a8bdbb3d930b (patch)
tree73dc4aad6b32a4f7b01b8be3a51b79d405314876
parent49c7adb31d17bfc9f5349f8c8343a4ca6318d3aa (diff)
made SeletedItem of templatedGroup writable
-rw-r--r--Crow.OpenTK.nuspec12
-rw-r--r--Crow.sln4
-rw-r--r--Tests/Tests.csproj2
-rw-r--r--src/ExtensionsMethods.cs8
-rw-r--r--src/GraphicObjects/TemplatedGroup.cs13
-rw-r--r--src/Instantiator.cs3
6 files changed, 31 insertions, 11 deletions
diff --git a/Crow.OpenTK.nuspec b/Crow.OpenTK.nuspec
index e336b178..9d49b0a4 100644
--- a/Crow.OpenTK.nuspec
+++ b/Crow.OpenTK.nuspec
@@ -2,7 +2,7 @@
<package >
<metadata>
<id>Crow.OpenTK</id>
- <version>0.6.0-pre1</version>
+ <version>0.6.0</version>
<title>C# Rapid Open Widget Toolkit</title>
<authors>JP Bruyere</authors>
<owners>Grand Tetras Software</owners>
@@ -21,13 +21,15 @@ Crow.OpenTK is the OpenTK ready version.
- Bug fix #36
- group item templates in single file
- instantiation from code clarification
- - Only run on mono >= 5.0
- Cairo mesh patterns support.
- - Image resources sharing among controls.
+ - Image resources sharing among controls.
+ - Some small api changes (LoadInterface replaced by AddWidget overload
+ - Documentations
+ - Tooltip for GraphicObject class
</releaseNotes>
- <copyright>Copyright 2013-2017</copyright>
+ <copyright>Copyright 2013-2018</copyright>
<dependencies>
- <dependency id="OpenTK" version="3.0.0-git00041" />
+ <dependency id="OpenTK" version="2.0.0" />
</dependencies>
<tags>Crow OpenTK OpenGL Widget Interface GUI C# .Net Mono</tags>
<references>
diff --git a/Crow.sln b/Crow.sln
index 70736ea4..5fc9079f 100644
--- a/Crow.sln
+++ b/Crow.sln
@@ -16,17 +16,13 @@ Global
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{42C73BD8-51F5-4BB7-8EE9-9F0BE2D80A2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {42C73BD8-51F5-4BB7-8EE9-9F0BE2D80A2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{42C73BD8-51F5-4BB7-8EE9-9F0BE2D80A2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {42C73BD8-51F5-4BB7-8EE9-9F0BE2D80A2C}.Release|Any CPU.Build.0 = Release|Any CPU
{74289092-9F70-4941-AFCB-DFD7BE2140B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{74289092-9F70-4941-AFCB-DFD7BE2140B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{74289092-9F70-4941-AFCB-DFD7BE2140B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{74289092-9F70-4941-AFCB-DFD7BE2140B6}.Release|Any CPU.Build.0 = Release|Any CPU
{B6D911CD-1D09-42FC-B300-9187190F2AE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B6D911CD-1D09-42FC-B300-9187190F2AE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B6D911CD-1D09-42FC-B300-9187190F2AE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B6D911CD-1D09-42FC-B300-9187190F2AE1}.Release|Any CPU.Build.0 = Release|Any CPU
{C2980F9B-4798-4C05-99E2-E174810F7C7B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C2980F9B-4798-4C05-99E2-E174810F7C7B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C2980F9B-4798-4C05-99E2-E174810F7C7B}.Release|Any CPU.ActiveCfg = Release|Any CPU
diff --git a/Tests/Tests.csproj b/Tests/Tests.csproj
index 75969d9b..7fd3f6ed 100644
--- a/Tests/Tests.csproj
+++ b/Tests/Tests.csproj
@@ -8,7 +8,7 @@
<OutputType>Exe</OutputType>
<RootNamespace>Tests</RootNamespace>
<AssemblyName>Tests</AssemblyName>
- <StartupObject>Tests.BasicTests</StartupObject>
+ <StartupObject>Tests.Showcase</StartupObject>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ReleaseVersion>0.5</ReleaseVersion>
diff --git a/src/ExtensionsMethods.cs b/src/ExtensionsMethods.cs
index 6198dee6..6697be62 100644
--- a/src/ExtensionsMethods.cs
+++ b/src/ExtensionsMethods.cs
@@ -125,6 +125,14 @@ namespace Crow
{
return c == '\t' || c == '\r' || c == '\n' || char.IsWhiteSpace (c);
}
+ public static object GetDefaultValue(this object obj)
+ {
+ Type t = obj.GetType ();
+ if (t.IsValueType)
+ return Activator.CreateInstance (t);
+
+ return null;
+ }
}
}
diff --git a/src/GraphicObjects/TemplatedGroup.cs b/src/GraphicObjects/TemplatedGroup.cs
index c32b2c44..34d57727 100644
--- a/src/GraphicObjects/TemplatedGroup.cs
+++ b/src/GraphicObjects/TemplatedGroup.cs
@@ -148,7 +148,18 @@ namespace Crow
}
}
[XmlIgnore]public virtual object SelectedItem{
- get { return data == null ? null : _selectedIndex < 0 ? null : data[_selectedIndex]; }
+ get { return data == null ? null : _selectedIndex < 0 ? data.GetDefaultValue() : data[_selectedIndex]; }
+ set {
+ if (data == null) {
+ SelectedIndex = -1;
+ return;
+ }
+ //TODO:double check if value type will be notified to binding sys
+ if (value == SelectedItem)
+ return;
+
+ SelectedIndex = data.IndexOf (value);
+ }
}
[XmlIgnore]public bool HasItems {
get { return Items.Count > 0; }
diff --git a/src/Instantiator.cs b/src/Instantiator.cs
index 297337ed..b3f070e7 100644
--- a/src/Instantiator.cs
+++ b/src/Instantiator.cs
@@ -890,6 +890,9 @@ namespace Crow.IML
CompilerServices.emitConvert (il, piSource.PropertyType);
+ if (!piSource.CanWrite)
+ throw new Exception ("Source member of bindind is read only:" + piSource.ToString());
+
il.Emit (OpCodes.Callvirt, piSource.GetSetMethod ());
il.MarkLabel (endMethod);