diff options
| author | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2018-02-09 20:44:48 +0100 |
|---|---|---|
| committer | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2018-02-09 20:48:02 +0100 |
| commit | 673466d57ed603eb5c336ab9c09c7d8a74ec3b02 (patch) | |
| tree | b774fc1bc15c3606ab42fbe948850eb7cbf315e6 | |
| parent | d783669223da5bfe8caa1b95c0ff6e1c5046e09e (diff) | |
made SeletedItem of templatedGroup writable0.6.0
| -rw-r--r-- | Crow.OpenTK.nuspec | 12 | ||||
| -rw-r--r-- | Crow.sln | 4 | ||||
| -rw-r--r-- | CrowIDE/src/ImlVisualEditor.cs | 13 | ||||
| -rw-r--r-- | CrowIDE/src/MembersView.cs | 10 | ||||
| -rw-r--r-- | CrowIDE/ui/CSProjExplorer.crow | 2 | ||||
| -rw-r--r-- | CrowIDE/ui/GTreeExpITemp.crow | 2 | ||||
| -rw-r--r-- | CrowIDE/ui/MembersItem.template | 2 | ||||
| -rwxr-xr-x | CrowIDE/ui/MembersView.template | 2 | ||||
| -rw-r--r-- | CrowIDE/ui/imlEditor.crow | 4 | ||||
| -rw-r--r-- | Tests/Tests.csproj | 2 | ||||
| -rw-r--r-- | src/ExtensionsMethods.cs | 8 | ||||
| -rw-r--r-- | src/GraphicObjects/TemplatedGroup.cs | 13 | ||||
| -rw-r--r-- | src/Instantiator.cs | 3 |
13 files changed, 44 insertions, 33 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> @@ -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/CrowIDE/src/ImlVisualEditor.cs b/CrowIDE/src/ImlVisualEditor.cs index 9c51338f..e238a706 100644 --- a/CrowIDE/src/ImlVisualEditor.cs +++ b/CrowIDE/src/ImlVisualEditor.cs @@ -129,19 +129,6 @@ namespace CrowIDE get { return imlVE.GraphicTree; } } - - public CrowMSBuild.Project CSProj { - get { - CrowMSBuild.Project proj = null; - XmlSerializer serializer = new XmlSerializer(typeof(CrowMSBuild.Project)); - string path=@"/mnt/data2/devel/crow/Tests/Tests.csproj"; - using (StreamReader reader = new StreamReader (path)) { - proj = (CrowMSBuild.Project)serializer.Deserialize (reader); - } - return proj; - } - } - void reloadFromSource(){ if (string.IsNullOrEmpty (imlSource)) { reload_iTor (null); diff --git a/CrowIDE/src/MembersView.cs b/CrowIDE/src/MembersView.cs index 18f1a709..67c712bd 100644 --- a/CrowIDE/src/MembersView.cs +++ b/CrowIDE/src/MembersView.cs @@ -24,6 +24,7 @@ using System.Xml.Serialization; using System.ComponentModel; using System.Reflection; using System.Collections.Generic; +using System.Linq; namespace CrowIDE { @@ -47,7 +48,10 @@ namespace CrowIDE try { if (!pi.PropertyType.IsAssignableFrom(value.GetType()) && pi.PropertyType != typeof(string)){ if (pi.PropertyType.IsEnum) { - pi.SetValue (instance, value); + if (value is string) { + pi.SetValue (instance, Enum.Parse (pi.PropertyType, (string)value)); + }else + pi.SetValue (instance, value); } else { MethodInfo me = pi.PropertyType.GetMethod ("Parse", BindingFlags.Static | BindingFlags.Public, @@ -65,9 +69,9 @@ namespace CrowIDE public string Type { get { return pi.PropertyType.IsEnum ? "System.Enum" : pi.PropertyType.FullName; }} - public string[] Choices { + public object[] Choices { get { - return Enum.GetNames (pi.PropertyType); + return Enum.GetValues (pi.PropertyType).Cast<object>().ToArray(); } } diff --git a/CrowIDE/ui/CSProjExplorer.crow b/CrowIDE/ui/CSProjExplorer.crow index f8155a23..5f9f9949 100644 --- a/CrowIDE/ui/CSProjExplorer.crow +++ b/CrowIDE/ui/CSProjExplorer.crow @@ -51,7 +51,7 @@ <HorizontalStack Height="Fit"> <GraphicObject Width="12" Height="10"/> <TreeView Name="List" Height="Fit" - Template="#Crow.Templates.treeList.crow" /> + Template="#Crow.Templates.treeList.template" /> </HorizontalStack> </Expandable> </ItemTemplate> diff --git a/CrowIDE/ui/GTreeExpITemp.crow b/CrowIDE/ui/GTreeExpITemp.crow index 32eeb43b..4be4f094 100644 --- a/CrowIDE/ui/GTreeExpITemp.crow +++ b/CrowIDE/ui/GTreeExpITemp.crow @@ -23,6 +23,6 @@ <HorizontalStack Height="Fit"> <GraphicObject Width="12" Height="10"/> <TreeView Name="List" Height="Fit" - Template="#Crow.Templates.treeList.crow" /> + Template="#Crow.Templates.treeList.template" /> </HorizontalStack> </Expandable> diff --git a/CrowIDE/ui/MembersItem.template b/CrowIDE/ui/MembersItem.template index 4b1c97c7..abf8c24c 100644 --- a/CrowIDE/ui/MembersItem.template +++ b/CrowIDE/ui/MembersItem.template @@ -21,7 +21,7 @@ MouseLeave="{Background=Transparent}" > <Label Margin="1" Text="{Name}" Height="Fit" Width="50%"/> <ComboBox Margin="0" Height="Stretched" Width="50%" Data="{Choices}" - SelectedIndex="{²Value}"> + SelectedItem="{²Value}"> <Template> <Popper Name="popper" PopDirection="Bottom"> <Template> diff --git a/CrowIDE/ui/MembersView.template b/CrowIDE/ui/MembersView.template index 48475116..92f132f3 100755 --- a/CrowIDE/ui/MembersView.template +++ b/CrowIDE/ui/MembersView.template @@ -2,7 +2,7 @@ <Window Template="#Crow.ToolWindow.template" Caption="Properties" MinimumSize="10,10" Width="Stretched" Height="Stretched"> <VerticalStack> <Border Height="Fit"> - <Label TextAlignment="Left" Text="{./Instance}" Width="Stretched"/> + <Label TextAlignment="Left" Text="{../../../../Instance}" Width="Stretched"/> </Border> <Scroller Name="scroller1" Margin="1" VerticalScrolling="true" ValueChanged="./_scroller_ValueChanged"> diff --git a/CrowIDE/ui/imlEditor.crow b/CrowIDE/ui/imlEditor.crow index 4df6b40d..2b2fc8ec 100644 --- a/CrowIDE/ui/imlEditor.crow +++ b/CrowIDE/ui/imlEditor.crow @@ -29,9 +29,9 @@ <!-- <HorizontalStack Height="Fit" Margin="2"> <Image Style="icon" Path="#CrowIDE.images.save.svg" MouseClick="onCommandSave"/> </HorizontalStack>--> - <Border Margin="1" Background="Onyx" Height="Fit"> +<!-- <Border Margin="1" Background="Onyx" Height="Fit"> <Label Width="Stretched" Margin="1" Text="{../../dv.SelectedItem}"/> - </Border> + </Border>--> <HorizontalStack> <TreeView Name="treeview" Width="20%" Height="100%" IsRoot="true" DataSource="{CurrentSolution}" Data="{Projects}" 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); |