diff --git a/.hgignore b/.hgignore --- a/.hgignore +++ b/.hgignore @@ -6,3 +6,4 @@ Implab.Test/obj/ Implab/bin/ Implab/obj/ TestResults/ +Implab.Fx/obj/ diff --git a/Implab.Fx/Animation.cs b/Implab.Fx/Animation.cs new file mode 100644 --- /dev/null +++ b/Implab.Fx/Animation.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Implab.Fx +{ + public class Animation + { + int m_duration; + int m_fps; + + + } +} diff --git a/Implab.Fx/ControlHelpers.cs b/Implab.Fx/ControlHelpers.cs new file mode 100644 --- /dev/null +++ b/Implab.Fx/ControlHelpers.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace Implab.Fx +{ + public static class ControlHelpers + { + /// + /// Переключает обработку обещания в поток указанного элемента управления. + /// + /// Тип результата обещания + /// Исходное обещание + /// Элемент управления + /// Новое обещание, обработчики которого будут выполнены в потоке элемента управления. + /// Параметр не может быть null. + /// + /// client + /// .Get("description.txt") // returns a promise + /// .DirectToControl(m_ctl) // handle the promise in the thread of the control + /// .Then( + /// description => m_ctl.Text = description // now it's safe + /// ) + /// + public static Promise DirectToControl(this Promise that, Control ctl) + { + if (that == null) + throw new ArgumentNullException("that"); + if (ctl == null) + throw new ArgumentNullException("ctl"); + + var directed = new Promise(); + + that.Then( + res => + { + if (ctl.InvokeRequired) + ctl.Invoke(new Action(directed.Resolve),res); + else + directed.Resolve(res); + }, + err => + { + if (ctl.InvokeRequired) + ctl.Invoke(new Action(directed.Reject), err); + else + directed.Reject(err); + } + ); + + return directed; + } + } +} diff --git a/Implab.Fx/Implab.Fx.csproj b/Implab.Fx/Implab.Fx.csproj new file mode 100644 --- /dev/null +++ b/Implab.Fx/Implab.Fx.csproj @@ -0,0 +1,61 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {06E706F8-6881-43EB-927E-FFC503AF6ABC} + Library + Properties + Implab.Fx + Implab.Fx + v4.0 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + {99B95D0D-9CF9-4F70-8ADF-F4D0AA5CB0D9} + Implab + + + + + \ No newline at end of file diff --git a/Implab.Fx/Properties/AssemblyInfo.cs b/Implab.Fx/Properties/AssemblyInfo.cs new file mode 100644 --- /dev/null +++ b/Implab.Fx/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Implab.Fx")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Implab.Fx")] +[assembly: AssemblyCopyright("Copyright © 2013")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("d239c29f-98e2-4942-9569-554a8511d07b")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Implab.sln b/Implab.sln --- a/Implab.sln +++ b/Implab.sln @@ -12,6 +12,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab.Test", "Implab.Test\Implab.Test.csproj", "{63F92C0C-61BF-48C0-A377-8D67C3C661D0}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Implab.Fx", "Implab.Fx\Implab.Fx.csproj", "{06E706F8-6881-43EB-927E-FFC503AF6ABC}" +EndProject Global GlobalSection(TestCaseManagementSettings) = postSolution CategoryFile = Implab.vsmdi @@ -29,6 +31,10 @@ Global {63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Debug|Any CPU.Build.0 = Debug|Any CPU {63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Release|Any CPU.ActiveCfg = Release|Any CPU {63F92C0C-61BF-48C0-A377-8D67C3C661D0}.Release|Any CPU.Build.0 = Release|Any CPU + {06E706F8-6881-43EB-927E-FFC503AF6ABC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {06E706F8-6881-43EB-927E-FFC503AF6ABC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {06E706F8-6881-43EB-927E-FFC503AF6ABC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {06E706F8-6881-43EB-927E-FFC503AF6ABC}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Implab.suo b/Implab.suo index 15dcf3269422ccfd545ebcb6e6d25425c37cd74a..5ef9f84caa1609b501f07d62659a5c03f93635a0 GIT binary patch literal 20480 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