From 8317ff61736f2eeec68d71b7a8fa8288fa2ded87 Mon Sep 17 00:00:00 2001 From: sgd2z Date: Fri, 6 Nov 2020 10:49:37 -0500 Subject: [PATCH 1/5] 5.1.0 Release --- .../AuthenticationExample.csproj | 7 +- .../Properties/AssemblyInfo.cs | 4 +- AuthenticationExample/packages.config | 3 +- MultiWindowExample/App.config | 8 - MultiWindowExample/App.xaml.cs | 3 - MultiWindowExample/MultiWindowExample.csproj | 7 +- MultiWindowExample/Properties/AssemblyInfo.cs | 4 +- MultiWindowExample/packages.config | 3 +- WPFExample/App.xaml.cs | 6 +- WPFExample/MainWindow.xaml | 67 +-- WPFExample/MainWindow.xaml.cs | 395 ++++++++++++------ WPFExample/Properties/AssemblyInfo.cs | 6 +- WPFExample/Properties/Resources.Designer.cs | 4 +- WPFExample/Properties/Settings.Designer.cs | 2 +- WPFExample/WPFExample.csproj | 11 +- WPFExample/packages.config | 3 +- WindowlessExample/App.config | 4 - WindowlessExample/Properties/AssemblyInfo.cs | 4 +- WindowlessExample/WindowlessExample.csproj | 7 +- WindowlessExample/packages.config | 3 +- WinformExample/FormExample.cs | 95 ++--- WinformExample/Properties/AssemblyInfo.cs | 4 +- WinformExample/WinformExample.csproj | 7 +- WinformExample/app.manifest | 2 +- WinformExample/packages.config | 3 +- .../Properties/AssemblyInfo.cs | 4 +- .../WinformMultiWindowExample.csproj | 7 +- WinformMultiWindowExample/app.manifest | 2 +- WinformMultiWindowExample/packages.config | 3 +- 29 files changed, 413 insertions(+), 265 deletions(-) diff --git a/AuthenticationExample/AuthenticationExample.csproj b/AuthenticationExample/AuthenticationExample.csproj index 9b55bc0..750cbfb 100644 --- a/AuthenticationExample/AuthenticationExample.csproj +++ b/AuthenticationExample/AuthenticationExample.csproj @@ -89,8 +89,8 @@ ..\packages\EventHook.1.4.105\lib\net45\EventHook.dll - - ..\packages\Finsemble.4.5.0\lib\net452\Finsemble.dll + + ..\packages\Finsemble.5.1.0\lib\net452\Finsemble.dll ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll @@ -116,6 +116,9 @@ ..\packages\Nito.AsyncEx.4.0.1\lib\net45\Nito.AsyncEx.Enlightenment.dll + + ..\packages\PInvoke.Windows.Core.0.6.49\lib\net20\PInvoke.Windows.Core.dll + ..\packages\SuperSocket.ClientEngine.Core.0.10.0\lib\net45\SuperSocket.ClientEngine.dll diff --git a/AuthenticationExample/Properties/AssemblyInfo.cs b/AuthenticationExample/Properties/AssemblyInfo.cs index cff6e40..c345079 100644 --- a/AuthenticationExample/Properties/AssemblyInfo.cs +++ b/AuthenticationExample/Properties/AssemblyInfo.cs @@ -51,5 +51,5 @@ // 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("4.5.0.0")] -[assembly: AssemblyFileVersion("4.5.0.0")] +[assembly: AssemblyVersion("5.1.0.0")] +[assembly: AssemblyFileVersion("5.1.0.0")] diff --git a/AuthenticationExample/packages.config b/AuthenticationExample/packages.config index 91a0366..690b28e 100644 --- a/AuthenticationExample/packages.config +++ b/AuthenticationExample/packages.config @@ -3,13 +3,14 @@ - + + diff --git a/MultiWindowExample/App.config b/MultiWindowExample/App.config index c97a35c..3ffaea1 100644 --- a/MultiWindowExample/App.config +++ b/MultiWindowExample/App.config @@ -13,14 +13,6 @@ - - - - - - - - diff --git a/MultiWindowExample/App.xaml.cs b/MultiWindowExample/App.xaml.cs index 7da60ce..7f1beb4 100644 --- a/MultiWindowExample/App.xaml.cs +++ b/MultiWindowExample/App.xaml.cs @@ -67,7 +67,6 @@ public static void Main(string[] args) // then ensure that we always release the mutex if (SingleInstance.InitializeAsFirstInstance(Unique)) { - application = new App(); // If window type passed for initial launch, add listener to launch window when connected. @@ -94,9 +93,7 @@ public static void Main(string[] args) // Allow single instance code to perform cleanup operations SingleInstance.Cleanup(); } - } - } /// diff --git a/MultiWindowExample/MultiWindowExample.csproj b/MultiWindowExample/MultiWindowExample.csproj index c7db519..41cc616 100644 --- a/MultiWindowExample/MultiWindowExample.csproj +++ b/MultiWindowExample/MultiWindowExample.csproj @@ -49,8 +49,8 @@ ..\packages\EventHook.1.4.105\lib\net45\EventHook.dll - - ..\packages\Finsemble.4.5.0\lib\net452\Finsemble.dll + + ..\packages\Finsemble.5.1.0\lib\net452\Finsemble.dll ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll @@ -76,6 +76,9 @@ ..\packages\Nito.AsyncEx.4.0.1\lib\net45\Nito.AsyncEx.Enlightenment.dll + + ..\packages\PInvoke.Windows.Core.0.6.49\lib\net20\PInvoke.Windows.Core.dll + ..\packages\SuperSocket.ClientEngine.Core.0.10.0\lib\net45\SuperSocket.ClientEngine.dll diff --git a/MultiWindowExample/Properties/AssemblyInfo.cs b/MultiWindowExample/Properties/AssemblyInfo.cs index 1db953b..31c483c 100644 --- a/MultiWindowExample/Properties/AssemblyInfo.cs +++ b/MultiWindowExample/Properties/AssemblyInfo.cs @@ -51,5 +51,5 @@ // 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("4.5.0.0")] -[assembly: AssemblyFileVersion("4.5.0.0")] +[assembly: AssemblyVersion("5.1.0.0")] +[assembly: AssemblyFileVersion("5.1.0.0")] diff --git a/MultiWindowExample/packages.config b/MultiWindowExample/packages.config index 91a0366..690b28e 100644 --- a/MultiWindowExample/packages.config +++ b/MultiWindowExample/packages.config @@ -3,13 +3,14 @@ - + + diff --git a/WPFExample/App.xaml.cs b/WPFExample/App.xaml.cs index 1c6f2e4..c7ca1fe 100644 --- a/WPFExample/App.xaml.cs +++ b/WPFExample/App.xaml.cs @@ -1,8 +1,8 @@ -using System.Diagnostics; +using ChartIQ.Finsemble; +using log4net; +using System.Diagnostics; using System.Reflection; using System.Windows; -using log4net; -using ChartIQ.Finsemble; namespace WPFExample diff --git a/WPFExample/MainWindow.xaml b/WPFExample/MainWindow.xaml index c1b6b8a..3c2ac7c 100644 --- a/WPFExample/MainWindow.xaml +++ b/WPFExample/MainWindow.xaml @@ -1,36 +1,37 @@ - + - - - - - - - diff --git a/AuthenticationExample/MainWindow.xaml.cs b/AuthenticationExample/MainWindow.xaml.cs index 26addb9..872b7cd 100644 --- a/AuthenticationExample/MainWindow.xaml.cs +++ b/AuthenticationExample/MainWindow.xaml.cs @@ -1,19 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; -using ChartIQ.Finsemble; +using ChartIQ.Finsemble; using Newtonsoft.Json.Linq; +using System; +using System.Windows; namespace AuthenticationExample { @@ -50,7 +38,7 @@ private void Finsemble_Connected(object sender, EventArgs e) }); } - private void Button_Click(object sender, RoutedEventArgs e) + private void PublishCredentials_Click(object sender, RoutedEventArgs e) { finsemble.AuthenticationClient.PublishAuthorization(UserName.Text, JObject.FromObject(new Credentials(Guid.NewGuid().ToString()))); } diff --git a/MultiWindowExample/MultiWindowExample.csproj b/MultiWindowExample/MultiWindowExample.csproj index 41cc616..4904d14 100644 --- a/MultiWindowExample/MultiWindowExample.csproj +++ b/MultiWindowExample/MultiWindowExample.csproj @@ -52,9 +52,7 @@ ..\packages\Finsemble.5.1.0\lib\net452\Finsemble.dll - - ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll - + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll @@ -166,9 +164,7 @@ ResXFileCodeGenerator Resources.Designer.cs - - Always - + SettingsSingleFileGenerator @@ -186,4 +182,4 @@ - \ No newline at end of file + diff --git a/MultiWindowExample/Window1.xaml.cs b/MultiWindowExample/Window1.xaml.cs index 38d261a..84c389d 100644 --- a/MultiWindowExample/Window1.xaml.cs +++ b/MultiWindowExample/Window1.xaml.cs @@ -1,8 +1,7 @@ -using System.Reflection; +using ChartIQ.Finsemble; using System.Windows; using System.Windows.Media; -using ChartIQ.Finsemble; -using log4net; +using ChartIQ.Finsemble.Models; namespace MultiWindowExample { @@ -11,11 +10,6 @@ namespace MultiWindowExample /// public partial class Window1 : Window, IIntegratable { - /// - /// The logger - /// - private static readonly ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - private Finsemble fsbl; public Window1() @@ -32,18 +26,30 @@ public void SetFinsemble(Finsemble fsbl) FinsembleHeader.SetBridge(fsbl); // The Header Control needs a connected finsemble instance //Styling the Finsemble Header - FinsembleHeader.SetActiveBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F"))); - FinsembleHeader.SetInactiveBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F"))); - FinsembleHeader.SetButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4"))); - FinsembleHeader.SetInactiveButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4"))); - FinsembleHeader.SetCloseButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666"))); - FinsembleHeader.SetInactiveCloseButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666"))); - FinsembleHeader.SetDockingButtonDockedBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4"))); - FinsembleHeader.SetTitleForeground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0"))); - FinsembleHeader.SetButtonForeground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0"))); - - FinsembleHeader.SetButtonFont(null, 8, FontStyles.Normal, FontWeights.Normal); - FinsembleHeader.SetTitleFont(null, 12, FontStyles.Normal, FontWeights.SemiBold); + FinsembleHeader.GetHandlingService().ActiveBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F")); + FinsembleHeader.GetHandlingService().InactiveBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F")); + FinsembleHeader.GetHandlingService().ButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4")); + FinsembleHeader.GetHandlingService().InactiveButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4")); + FinsembleHeader.GetHandlingService().CloseButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666")); + FinsembleHeader.GetHandlingService().InactiveCloseButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666")); + FinsembleHeader.GetHandlingService().DockingButtonDockedBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4")); + FinsembleHeader.GetHandlingService().TitleForeground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0")); + FinsembleHeader.GetHandlingService().ButtonForeground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0")); + + FinsembleHeader.GetHandlingService().ButtonFont = new TitlebarFontConfiguration() + { + FontFamily = null, + FontSize = 8, + FontStyle = FontStyles.Normal, + FontWeight = FontWeights.Normal + }; + FinsembleHeader.GetHandlingService().TitleFont = new TitlebarFontConfiguration() + { + FontFamily = null, + FontSize = 12, + FontStyle = FontStyles.Normal, + FontWeight = FontWeights.SemiBold + }; fsbl.DragAndDropClient.SetScrim(Scrim); // The Scrim Label Control is used for drag and drop. diff --git a/MultiWindowExample/Window2.xaml.cs b/MultiWindowExample/Window2.xaml.cs index a827356..280543c 100644 --- a/MultiWindowExample/Window2.xaml.cs +++ b/MultiWindowExample/Window2.xaml.cs @@ -1,6 +1,7 @@ using System.Windows; using System.Windows.Media; using ChartIQ.Finsemble; +using ChartIQ.Finsemble.Models; namespace MultiWindowExample { @@ -25,18 +26,30 @@ public void SetFinsemble(Finsemble fsbl) FinsembleHeader.SetBridge(fsbl); // The Header Control needs a connected finsemble instance //Styling the Finsemble Header - FinsembleHeader.SetActiveBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F"))); - FinsembleHeader.SetInactiveBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F"))); - FinsembleHeader.SetButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4"))); - FinsembleHeader.SetInactiveButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4"))); - FinsembleHeader.SetCloseButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666"))); - FinsembleHeader.SetInactiveCloseButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666"))); - FinsembleHeader.SetDockingButtonDockedBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4"))); - FinsembleHeader.SetTitleForeground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0"))); - FinsembleHeader.SetButtonForeground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0"))); - - FinsembleHeader.SetButtonFont(null, 8, FontStyles.Normal, FontWeights.Normal); - FinsembleHeader.SetTitleFont(null, 12, FontStyles.Normal, FontWeights.SemiBold); + FinsembleHeader.GetHandlingService().ActiveBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F")); + FinsembleHeader.GetHandlingService().InactiveBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F")); + FinsembleHeader.GetHandlingService().ButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4")); + FinsembleHeader.GetHandlingService().InactiveButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4")); + FinsembleHeader.GetHandlingService().CloseButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666")); + FinsembleHeader.GetHandlingService().InactiveCloseButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666")); + FinsembleHeader.GetHandlingService().DockingButtonDockedBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4")); + FinsembleHeader.GetHandlingService().TitleForeground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0")); + FinsembleHeader.GetHandlingService().ButtonForeground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0")); + + FinsembleHeader.GetHandlingService().ButtonFont = new TitlebarFontConfiguration() + { + FontFamily = null, + FontSize = 8, + FontStyle = FontStyles.Normal, + FontWeight = FontWeights.Normal + }; + FinsembleHeader.GetHandlingService().TitleFont = new TitlebarFontConfiguration() + { + FontFamily = null, + FontSize = 12, + FontStyle = FontStyles.Normal, + FontWeight = FontWeights.SemiBold + }; fsbl.DragAndDropClient.SetScrim(Scrim); // The Scrim Label Control is used for drag and drop. diff --git a/MultiWindowExample/Window3.xaml.cs b/MultiWindowExample/Window3.xaml.cs index f3147f9..4fae987 100644 --- a/MultiWindowExample/Window3.xaml.cs +++ b/MultiWindowExample/Window3.xaml.cs @@ -1,6 +1,7 @@ using System.Windows; using System.Windows.Media; using ChartIQ.Finsemble; +using ChartIQ.Finsemble.Models; namespace MultiWindowExample { @@ -25,18 +26,30 @@ public void SetFinsemble(Finsemble fsbl) FinsembleHeader.SetBridge(fsbl); // The Header Control needs a connected finsemble instance //Styling the Finsemble Header - FinsembleHeader.SetActiveBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F"))); - FinsembleHeader.SetInactiveBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F"))); - FinsembleHeader.SetButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4"))); - FinsembleHeader.SetInactiveButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4"))); - FinsembleHeader.SetCloseButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666"))); - FinsembleHeader.SetInactiveCloseButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666"))); - FinsembleHeader.SetDockingButtonDockedBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4"))); - FinsembleHeader.SetTitleForeground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0"))); - FinsembleHeader.SetButtonForeground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0"))); - - FinsembleHeader.SetButtonFont(null, 8, FontStyles.Normal, FontWeights.Normal); - FinsembleHeader.SetTitleFont(null, 12, FontStyles.Normal, FontWeights.SemiBold); + FinsembleHeader.GetHandlingService().ActiveBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F")); + FinsembleHeader.GetHandlingService().InactiveBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F")); + FinsembleHeader.GetHandlingService().ButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4")); + FinsembleHeader.GetHandlingService().InactiveButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4")); + FinsembleHeader.GetHandlingService().CloseButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666")); + FinsembleHeader.GetHandlingService().InactiveCloseButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666")); + FinsembleHeader.GetHandlingService().DockingButtonDockedBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4")); + FinsembleHeader.GetHandlingService().TitleForeground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0")); + FinsembleHeader.GetHandlingService().ButtonForeground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0")); + + FinsembleHeader.GetHandlingService().ButtonFont = new TitlebarFontConfiguration() + { + FontFamily = null, + FontSize = 8, + FontStyle = FontStyles.Normal, + FontWeight = FontWeights.Normal + }; + FinsembleHeader.GetHandlingService().TitleFont = new TitlebarFontConfiguration() + { + FontFamily = null, + FontSize = 12, + FontStyle = FontStyles.Normal, + FontWeight = FontWeights.SemiBold + }; fsbl.DragAndDropClient.SetScrim(Scrim); // The Scrim Label Control is used for drag and drop. diff --git a/MultiWindowExample/Window4.xaml.cs b/MultiWindowExample/Window4.xaml.cs index 01fca96..4e72c86 100644 --- a/MultiWindowExample/Window4.xaml.cs +++ b/MultiWindowExample/Window4.xaml.cs @@ -1,6 +1,7 @@ using System.Windows; using System.Windows.Media; using ChartIQ.Finsemble; +using ChartIQ.Finsemble.Models; namespace MultiWindowExample { @@ -25,18 +26,30 @@ public void SetFinsemble(Finsemble fsbl) FinsembleHeader.SetBridge(fsbl); // The Header Control needs a connected finsemble instance //Styling the Finsemble Header - FinsembleHeader.SetActiveBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F"))); - FinsembleHeader.SetInactiveBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F"))); - FinsembleHeader.SetButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4"))); - FinsembleHeader.SetInactiveButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4"))); - FinsembleHeader.SetCloseButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666"))); - FinsembleHeader.SetInactiveCloseButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666"))); - FinsembleHeader.SetDockingButtonDockedBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4"))); - FinsembleHeader.SetTitleForeground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0"))); - FinsembleHeader.SetButtonForeground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0"))); - - FinsembleHeader.SetButtonFont(null, 8, FontStyles.Normal, FontWeights.Normal); - FinsembleHeader.SetTitleFont(null, 12, FontStyles.Normal, FontWeights.SemiBold); + FinsembleHeader.GetHandlingService().ActiveBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F")); + FinsembleHeader.GetHandlingService().InactiveBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F")); + FinsembleHeader.GetHandlingService().ButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4")); + FinsembleHeader.GetHandlingService().InactiveButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4")); + FinsembleHeader.GetHandlingService().CloseButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666")); + FinsembleHeader.GetHandlingService().InactiveCloseButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666")); + FinsembleHeader.GetHandlingService().DockingButtonDockedBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4")); + FinsembleHeader.GetHandlingService().TitleForeground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0")); + FinsembleHeader.GetHandlingService().ButtonForeground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0")); + + FinsembleHeader.GetHandlingService().ButtonFont = new TitlebarFontConfiguration() + { + FontFamily = null, + FontSize = 8, + FontStyle = FontStyles.Normal, + FontWeight = FontWeights.Normal + }; + FinsembleHeader.GetHandlingService().TitleFont = new TitlebarFontConfiguration() + { + FontFamily = null, + FontSize = 12, + FontStyle = FontStyles.Normal, + FontWeight = FontWeights.SemiBold + }; fsbl.DragAndDropClient.SetScrim(Scrim); // The Scrim Label Control is used for drag and drop. diff --git a/MultiWindowExample/log4net.config b/MultiWindowExample/log4net.config deleted file mode 100644 index 91734ee..0000000 --- a/MultiWindowExample/log4net.config +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/MultiWindowExample/packages.config b/MultiWindowExample/packages.config index 690b28e..25d0165 100644 --- a/MultiWindowExample/packages.config +++ b/MultiWindowExample/packages.config @@ -4,7 +4,6 @@ - @@ -15,4 +14,4 @@ - \ No newline at end of file + diff --git a/WPFExample/App.xaml.cs b/WPFExample/App.xaml.cs index c7ca1fe..794cd8d 100644 --- a/WPFExample/App.xaml.cs +++ b/WPFExample/App.xaml.cs @@ -1,29 +1,22 @@ -using ChartIQ.Finsemble; -using log4net; +using ChartIQ.Finsemble; using System.Diagnostics; -using System.Reflection; using System.Windows; - namespace WPFExample { - /// - /// Interaction logic for App.xaml - /// - public partial class App : Application + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application { - /// - /// The logger - /// - private static readonly ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - private MainWindow mainWindow = null; + private MainWindow mainWindow = null; - protected override void OnStartup(StartupEventArgs e) + protected override void OnStartup(StartupEventArgs e) { - Logger.Debug("OnStartup"); + Debug.Print("OnStartup"); #if DEBUG - Debugger.Launch(); + Debugger.Launch(); #endif mainWindow = new MainWindow(e.Args); // send command line arguments to main window. } @@ -31,11 +24,13 @@ protected override void OnStartup(StartupEventArgs e) private void Application_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) { #if DEBUG - Debugger.Launch(); + Debugger.Launch(); #endif - Finsemble.DispatcherUnhandledException(mainWindow, e); - Logger.Error("An Unhandled Exception has occurred. Please Check your event Logs.", e.Exception); - Shutdown(); - } + + Finsemble.DispatcherUnhandledException(mainWindow, e); + + Debug.Print($"An Unhandled Exception has occurred. Exception: {e.Exception}"); + Shutdown(); + } } } diff --git a/WPFExample/MainWindow.xaml.cs b/WPFExample/MainWindow.xaml.cs index 330e22b..457293f 100644 --- a/WPFExample/MainWindow.xaml.cs +++ b/WPFExample/MainWindow.xaml.cs @@ -1,12 +1,11 @@ using ChartIQ.Finsemble; -using log4net; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; -using System.Reflection; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; +using ChartIQ.Finsemble.Models; namespace WPFExample { @@ -18,7 +17,6 @@ public partial class MainWindow : Window /// /// The logger /// - private static readonly ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private Finsemble FSBL; @@ -108,7 +106,7 @@ private void SpawnComponent_Click(object sender, RoutedEventArgs e) private void Send_Click(object sender, RoutedEventArgs e) { - if(FSBL.FDC3Client is object) + if (FSBL.FDC3Client is object) { //FDC3 Usage example //Broadcast @@ -164,21 +162,34 @@ private void Finsemble_Connected(object sender, EventArgs e) FinsembleHeader.SetBridge(FSBL); // The Header Control needs a connected finsemble instance //Styling the Finsemble Header - FinsembleHeader.SetActiveBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F"))); - FinsembleHeader.SetInactiveBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F"))); - FinsembleHeader.SetButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4"))); - FinsembleHeader.SetInactiveButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4"))); - FinsembleHeader.SetCloseButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666"))); - FinsembleHeader.SetInactiveCloseButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666"))); - FinsembleHeader.SetDockingButtonDockedBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4"))); - FinsembleHeader.SetTitleForeground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0"))); - FinsembleHeader.SetButtonForeground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0"))); - - FinsembleHeader.SetButtonFont(null, 8, FontStyles.Normal, FontWeights.Normal); - FinsembleHeader.SetTitleFont(null, 12, FontStyles.Normal, FontWeights.SemiBold); + + FinsembleHeader.GetHandlingService().ActiveBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F")); + FinsembleHeader.GetHandlingService().InactiveBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#22262F")); + FinsembleHeader.GetHandlingService().ButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4")); + FinsembleHeader.GetHandlingService().InactiveButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4")); + FinsembleHeader.GetHandlingService().CloseButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666")); + FinsembleHeader.GetHandlingService().InactiveCloseButtonHoverBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#F26666")); + FinsembleHeader.GetHandlingService().DockingButtonDockedBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#0A8CF4")); + FinsembleHeader.GetHandlingService().TitleForeground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0")); + FinsembleHeader.GetHandlingService().ButtonForeground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ACB2C0")); + + FinsembleHeader.GetHandlingService().ButtonFont = new TitlebarFontConfiguration() + { + FontFamily = null, + FontSize = 8, + FontStyle = FontStyles.Normal, + FontWeight = FontWeights.Normal + }; + FinsembleHeader.GetHandlingService().TitleFont = new TitlebarFontConfiguration() + { + FontFamily = null, + FontSize = 12, + FontStyle = FontStyles.Normal, + FontWeight = FontWeights.SemiBold + }; //Set window title - FinsembleHeader.SetTitle("WPF Example Component"); + FinsembleHeader.GetHandlingService().Title = "WPF Example Component"; FSBL.DragAndDropClient.SetScrim(Scrim); // The Scrim Label Control is used for drag and drop. @@ -236,7 +247,6 @@ private void Finsemble_Connected(object sender, EventArgs e) { if (response.error != null) { - Logger.Error(response.error); return; } @@ -260,7 +270,7 @@ private void Finsemble_Connected(object sender, EventArgs e) this.Show(); }); - if(FSBL.FDC3Client is object) + if (FSBL.FDC3Client is object) { //FDC3 Usage example Application.Current.Dispatcher.Invoke(delegate //main thread @@ -269,7 +279,8 @@ private void Finsemble_Connected(object sender, EventArgs e) }); //Context handler - EventHandler contextHandler = (s, context) => { + EventHandler contextHandler = (s, context) => + { FSBL.Logger.Log(new JToken[] { "WPF FDC3 Usage Example, context received by contextHandler.", context }); if (context["type"].ToString().Equals("fdc3.instrument")) { @@ -286,7 +297,8 @@ private void Finsemble_Connected(object sender, EventArgs e) //FSBL.FDC3Client.fdc3.addContextListener("fdc3.instrument", contextHandler); - EventHandler intentHandler = (s, context) => { + EventHandler intentHandler = (s, context) => + { FSBL.Logger.Log(new JToken[] { "WPF FDC3 Usage Example: context received by intentHandler.", context }); if (context["type"].ToString().Equals("fdc3.instrument")) { @@ -358,7 +370,7 @@ private void LinkToGroup_Click(object sender, RoutedEventArgs e) { FSBL.LinkerClient.LinkToChannel("group1", null, (s, r) => { - FSBL.Logger.Log(new JToken[] {"Link to Group1", r.response}); + FSBL.Logger.Log(new JToken[] { "Link to Group1", r.response }); }); } else @@ -379,6 +391,10 @@ await FSBL.WindowClient.SetComponentState(new JObject ["value"] = DataToSend.Text }); } + catch (ApplicationException e) + { + FSBL.Logger.Warn(new JToken[] { "WPFExample SaveState Warn", e.Message, e.StackTrace }); + } catch (Exception e) { FSBL.Logger.Error(new JToken[] { "WPFExample SaveState Error", e.Message, e.StackTrace }); @@ -387,11 +403,11 @@ await FSBL.WindowClient.SetComponentState(new JObject private void UnLinkFromGroup_Click(object sender, RoutedEventArgs e) { - if(FSBL.FDC3Client is null) + if (FSBL.FDC3Client is null) { FSBL.LinkerClient.UnlinkFromChannel("group1", null, (s, r) => { - FSBL.Logger.Log(new JToken[] {"Unlinked from Group1", r.response}); + FSBL.Logger.Log(new JToken[] { "Unlinked from Group1", r.response }); }); } else @@ -427,7 +443,7 @@ private void UpdateDisplayData() else { //Get SpawnData if no previous state - FSBL.WindowClient.getSpawnData((sender, r) => + FSBL.WindowClient.GetSpawnData((sender, r) => { Application.Current.Dispatcher.Invoke(async delegate //main thread { diff --git a/WPFExample/Properties/AssemblyInfo.cs b/WPFExample/Properties/AssemblyInfo.cs index 1d735a7..5620736 100644 --- a/WPFExample/Properties/AssemblyInfo.cs +++ b/WPFExample/Properties/AssemblyInfo.cs @@ -13,7 +13,7 @@ [assembly: AssemblyCopyright("Copyright © 2017 - 2020")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")] + // 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 diff --git a/WPFExample/packages.config b/WPFExample/packages.config index 690b28e..14c8914 100644 --- a/WPFExample/packages.config +++ b/WPFExample/packages.config @@ -4,7 +4,7 @@ - + @@ -15,4 +15,4 @@ - \ No newline at end of file + diff --git a/WindowlessExample/WindowlessExample.csproj b/WindowlessExample/WindowlessExample.csproj index fd020cf..92e4048 100644 --- a/WindowlessExample/WindowlessExample.csproj +++ b/WindowlessExample/WindowlessExample.csproj @@ -92,9 +92,6 @@ ..\packages\Finsemble.5.1.0\lib\net452\Finsemble.dll - - ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll - ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll @@ -180,4 +177,4 @@ - \ No newline at end of file + diff --git a/WindowlessExample/packages.config b/WindowlessExample/packages.config index 690b28e..25d0165 100644 --- a/WindowlessExample/packages.config +++ b/WindowlessExample/packages.config @@ -4,7 +4,6 @@ - @@ -15,4 +14,4 @@ - \ No newline at end of file + diff --git a/WinformExample/FormExample.cs b/WinformExample/FormExample.cs index c6a9028..d1decd4 100644 --- a/WinformExample/FormExample.cs +++ b/WinformExample/FormExample.cs @@ -152,7 +152,7 @@ private void handleWindowGrouping(object s, FinsembleEventArgs res) else { JObject groupData = res.response["data"]["groupData"] as JObject; - String currentWindowName = FSBL.WindowClient.windowIdentifier["windowName"].ToString(); + String currentWindowName = FSBL.WindowClient.GetWindowIdentifier()["windowName"].ToString(); JObject thisWindowGroups = new JObject(); thisWindowGroups.Add("dockingGroup", ""); thisWindowGroups.Add("snappingGroup", ""); diff --git a/WinformExample/packages.config b/WinformExample/packages.config index 65e4d71..bce9871 100644 --- a/WinformExample/packages.config +++ b/WinformExample/packages.config @@ -4,7 +4,6 @@ - @@ -15,4 +14,4 @@ - \ No newline at end of file + diff --git a/WinformMultiWindowExample/WinformMultiWindowExample.csproj b/WinformMultiWindowExample/WinformMultiWindowExample.csproj index dab4335..550bf6d 100644 --- a/WinformMultiWindowExample/WinformMultiWindowExample.csproj +++ b/WinformMultiWindowExample/WinformMultiWindowExample.csproj @@ -51,9 +51,6 @@ ..\packages\Finsemble.5.1.0\lib\net452\Finsemble.dll - - ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll - ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll @@ -166,4 +163,4 @@ - \ No newline at end of file + diff --git a/WinformMultiWindowExample/packages.config b/WinformMultiWindowExample/packages.config index 690b28e..25d0165 100644 --- a/WinformMultiWindowExample/packages.config +++ b/WinformMultiWindowExample/packages.config @@ -4,7 +4,6 @@ - @@ -15,4 +14,4 @@ - \ No newline at end of file + diff --git a/wpfExample.json b/wpfExample.json index f35701a..e56e368 100644 --- a/wpfExample.json +++ b/wpfExample.json @@ -19,7 +19,8 @@ } }, "component": { - "spawnOnStartup": false + "spawnOnStartup": false, + "useFdc3": false }, "foreign": { "services": { @@ -42,4 +43,4 @@ } } } -} \ No newline at end of file +} From 2d5b35bca0d16fe1f082fc113db749b5a55fe52a Mon Sep 17 00:00:00 2001 From: kkirkeide Date: Tue, 22 Dec 2020 14:26:20 -0500 Subject: [PATCH 3/5] Updated version fo fsbl for 5.2.0 release --- AuthenticationExample/AuthenticationExample.csproj | 4 ++-- AuthenticationExample/packages.config | 2 +- MultiWindowExample/MultiWindowExample.csproj | 8 +++----- MultiWindowExample/packages.config | 4 ++-- WPFExample/WPFExample.csproj | 4 ++-- WPFExample/packages.config | 5 ++--- WindowlessExample/WindowlessExample.csproj | 6 +++--- WindowlessExample/packages.config | 4 ++-- WinformExample/WinformExample.csproj | 4 ++-- WinformExample/packages.config | 4 ++-- .../WinformMultiWindowExample.csproj | 6 +++--- WinformMultiWindowExample/packages.config | 4 ++-- 12 files changed, 26 insertions(+), 29 deletions(-) diff --git a/AuthenticationExample/AuthenticationExample.csproj b/AuthenticationExample/AuthenticationExample.csproj index 750cbfb..b101a94 100644 --- a/AuthenticationExample/AuthenticationExample.csproj +++ b/AuthenticationExample/AuthenticationExample.csproj @@ -89,8 +89,8 @@ ..\packages\EventHook.1.4.105\lib\net45\EventHook.dll - - ..\packages\Finsemble.5.1.0\lib\net452\Finsemble.dll + + ..\packages\Finsemble.5.2.0\lib\net452\Finsemble.dll ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll diff --git a/AuthenticationExample/packages.config b/AuthenticationExample/packages.config index 690b28e..3baf63b 100644 --- a/AuthenticationExample/packages.config +++ b/AuthenticationExample/packages.config @@ -3,7 +3,7 @@ - + diff --git a/MultiWindowExample/MultiWindowExample.csproj b/MultiWindowExample/MultiWindowExample.csproj index 4904d14..f5116be 100644 --- a/MultiWindowExample/MultiWindowExample.csproj +++ b/MultiWindowExample/MultiWindowExample.csproj @@ -49,10 +49,9 @@ ..\packages\EventHook.1.4.105\lib\net45\EventHook.dll - - ..\packages\Finsemble.5.1.0\lib\net452\Finsemble.dll + + ..\packages\Finsemble.5.2.0\lib\net452\Finsemble.dll - ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll @@ -164,7 +163,6 @@ ResXFileCodeGenerator Resources.Designer.cs - SettingsSingleFileGenerator @@ -182,4 +180,4 @@ - + \ No newline at end of file diff --git a/MultiWindowExample/packages.config b/MultiWindowExample/packages.config index 25d0165..170eb2a 100644 --- a/MultiWindowExample/packages.config +++ b/MultiWindowExample/packages.config @@ -3,7 +3,7 @@ - + @@ -14,4 +14,4 @@ - + \ No newline at end of file diff --git a/WPFExample/WPFExample.csproj b/WPFExample/WPFExample.csproj index 36cf5f6..1dd34a6 100644 --- a/WPFExample/WPFExample.csproj +++ b/WPFExample/WPFExample.csproj @@ -89,8 +89,8 @@ ..\packages\EventHook.1.4.105\lib\net45\EventHook.dll - - ..\packages\Finsemble.5.1.0\lib\net452\Finsemble.dll + + ..\packages\Finsemble.5.2.0\lib\net452\Finsemble.dll ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll diff --git a/WPFExample/packages.config b/WPFExample/packages.config index 14c8914..170eb2a 100644 --- a/WPFExample/packages.config +++ b/WPFExample/packages.config @@ -3,8 +3,7 @@ - - + @@ -15,4 +14,4 @@ - + \ No newline at end of file diff --git a/WindowlessExample/WindowlessExample.csproj b/WindowlessExample/WindowlessExample.csproj index 92e4048..5f35b7c 100644 --- a/WindowlessExample/WindowlessExample.csproj +++ b/WindowlessExample/WindowlessExample.csproj @@ -89,8 +89,8 @@ ..\packages\EventHook.1.4.105\lib\net45\EventHook.dll - - ..\packages\Finsemble.5.1.0\lib\net452\Finsemble.dll + + ..\packages\Finsemble.5.2.0\lib\net452\Finsemble.dll ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll @@ -177,4 +177,4 @@ - + \ No newline at end of file diff --git a/WindowlessExample/packages.config b/WindowlessExample/packages.config index 25d0165..170eb2a 100644 --- a/WindowlessExample/packages.config +++ b/WindowlessExample/packages.config @@ -3,7 +3,7 @@ - + @@ -14,4 +14,4 @@ - + \ No newline at end of file diff --git a/WinformExample/WinformExample.csproj b/WinformExample/WinformExample.csproj index e6d1eb9..cd7a719 100644 --- a/WinformExample/WinformExample.csproj +++ b/WinformExample/WinformExample.csproj @@ -48,8 +48,8 @@ ..\packages\EventHook.1.4.105\lib\net45\EventHook.dll - - ..\packages\Finsemble.5.1.0\lib\net452\Finsemble.dll + + ..\packages\Finsemble.5.2.0\lib\net452\Finsemble.dll ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll diff --git a/WinformExample/packages.config b/WinformExample/packages.config index bce9871..969d6b8 100644 --- a/WinformExample/packages.config +++ b/WinformExample/packages.config @@ -3,7 +3,7 @@ - + @@ -14,4 +14,4 @@ - + \ No newline at end of file diff --git a/WinformMultiWindowExample/WinformMultiWindowExample.csproj b/WinformMultiWindowExample/WinformMultiWindowExample.csproj index 550bf6d..628e44a 100644 --- a/WinformMultiWindowExample/WinformMultiWindowExample.csproj +++ b/WinformMultiWindowExample/WinformMultiWindowExample.csproj @@ -48,8 +48,8 @@ ..\packages\EventHook.1.4.105\lib\net45\EventHook.dll - - ..\packages\Finsemble.5.1.0\lib\net452\Finsemble.dll + + ..\packages\Finsemble.5.2.0\lib\net452\Finsemble.dll ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll @@ -163,4 +163,4 @@ - + \ No newline at end of file diff --git a/WinformMultiWindowExample/packages.config b/WinformMultiWindowExample/packages.config index 25d0165..170eb2a 100644 --- a/WinformMultiWindowExample/packages.config +++ b/WinformMultiWindowExample/packages.config @@ -3,7 +3,7 @@ - + @@ -14,4 +14,4 @@ - + \ No newline at end of file From d41b7a40bc09862bd0ed674ac7b68cfa5c840ac6 Mon Sep 17 00:00:00 2001 From: sgd2z Date: Tue, 22 Dec 2020 14:38:21 -0500 Subject: [PATCH 4/5] updates for 5.2.0 part 2 --- AuthenticationExample/AuthenticationExample.csproj | 3 --- AuthenticationExample/Properties/AssemblyInfo.cs | 4 ++-- AuthenticationExample/packages.config | 3 +-- MultiWindowExample/App.xaml.cs | 9 ++------- MultiWindowExample/MultiWindowExample.csproj | 3 +++ MultiWindowExample/Properties/AssemblyInfo.cs | 4 ++-- MultiWindowExample/packages.config | 1 + WPFExample/Properties/AssemblyInfo.cs | 4 ++-- WPFExample/packages.config | 1 + WindowlessExample/Properties/AssemblyInfo.cs | 4 ++-- WindowlessExample/WindowlessExample.csproj | 3 +++ WindowlessExample/packages.config | 1 + WinformExample/Properties/AssemblyInfo.cs | 2 +- WinformExample/WinformExample.csproj | 3 --- WinformExample/app.manifest | 2 +- WinformExample/packages.config | 1 + WinformMultiWindowExample/Properties/AssemblyInfo.cs | 4 ++-- .../WinformMultiWindowExample.csproj | 3 +++ WinformMultiWindowExample/app.manifest | 2 +- WinformMultiWindowExample/packages.config | 1 + 20 files changed, 30 insertions(+), 28 deletions(-) diff --git a/AuthenticationExample/AuthenticationExample.csproj b/AuthenticationExample/AuthenticationExample.csproj index b101a94..e5e69b5 100644 --- a/AuthenticationExample/AuthenticationExample.csproj +++ b/AuthenticationExample/AuthenticationExample.csproj @@ -92,9 +92,6 @@ ..\packages\Finsemble.5.2.0\lib\net452\Finsemble.dll - - ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll - ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll diff --git a/AuthenticationExample/Properties/AssemblyInfo.cs b/AuthenticationExample/Properties/AssemblyInfo.cs index c345079..9cdc56f 100644 --- a/AuthenticationExample/Properties/AssemblyInfo.cs +++ b/AuthenticationExample/Properties/AssemblyInfo.cs @@ -51,5 +51,5 @@ // 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("5.1.0.0")] -[assembly: AssemblyFileVersion("5.1.0.0")] +[assembly: AssemblyVersion("5.2.0.0")] +[assembly: AssemblyFileVersion("5.2.0.0")] diff --git a/AuthenticationExample/packages.config b/AuthenticationExample/packages.config index 3baf63b..7cab62a 100644 --- a/AuthenticationExample/packages.config +++ b/AuthenticationExample/packages.config @@ -4,8 +4,7 @@ - - + diff --git a/MultiWindowExample/App.xaml.cs b/MultiWindowExample/App.xaml.cs index 7f1beb4..ecb5484 100644 --- a/MultiWindowExample/App.xaml.cs +++ b/MultiWindowExample/App.xaml.cs @@ -7,7 +7,6 @@ using System.Windows; using System.Windows.Threading; using ChartIQ.Finsemble; -using log4net; using Microsoft.Shell; namespace MultiWindowExample @@ -17,10 +16,6 @@ namespace MultiWindowExample /// public partial class App : Application, ISingleInstanceApp { - /// - /// The logger - /// - private static readonly ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly object lockObj = new object(); @@ -143,7 +138,7 @@ private static bool LaunchWindow(IList args) if (window == null) { - Logger.Error($"Could not create window: {name}"); + Debug.Write($"Could not create window: {name}"); } else { @@ -155,7 +150,7 @@ private static bool LaunchWindow(IList args) IIntegratable fsblWin = window as IIntegratable; if (fsblWin == null) { - Logger.Warn($"The window \"{name}\" is not a window that can be integrated into Finsemble."); + Debug.Write($"The window \"{name}\" is not a window that can be integrated into Finsemble."); } else { diff --git a/MultiWindowExample/MultiWindowExample.csproj b/MultiWindowExample/MultiWindowExample.csproj index f5116be..17e1acb 100644 --- a/MultiWindowExample/MultiWindowExample.csproj +++ b/MultiWindowExample/MultiWindowExample.csproj @@ -52,6 +52,9 @@ ..\packages\Finsemble.5.2.0\lib\net452\Finsemble.dll + + ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll diff --git a/MultiWindowExample/Properties/AssemblyInfo.cs b/MultiWindowExample/Properties/AssemblyInfo.cs index 31c483c..5a7809a 100644 --- a/MultiWindowExample/Properties/AssemblyInfo.cs +++ b/MultiWindowExample/Properties/AssemblyInfo.cs @@ -51,5 +51,5 @@ // 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("5.1.0.0")] -[assembly: AssemblyFileVersion("5.1.0.0")] +[assembly: AssemblyVersion("5.2.0.0")] +[assembly: AssemblyFileVersion("5.2.0.0")] diff --git a/MultiWindowExample/packages.config b/MultiWindowExample/packages.config index 170eb2a..3baf63b 100644 --- a/MultiWindowExample/packages.config +++ b/MultiWindowExample/packages.config @@ -4,6 +4,7 @@ + diff --git a/WPFExample/Properties/AssemblyInfo.cs b/WPFExample/Properties/AssemblyInfo.cs index 5620736..cdd53be 100644 --- a/WPFExample/Properties/AssemblyInfo.cs +++ b/WPFExample/Properties/AssemblyInfo.cs @@ -50,5 +50,5 @@ // 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("5.1.0.0")] -[assembly: AssemblyFileVersion("5.1.0.0")] +[assembly: AssemblyVersion("5.2.0.0")] +[assembly: AssemblyFileVersion("5.2.0.0")] diff --git a/WPFExample/packages.config b/WPFExample/packages.config index 170eb2a..3baf63b 100644 --- a/WPFExample/packages.config +++ b/WPFExample/packages.config @@ -4,6 +4,7 @@ + diff --git a/WindowlessExample/Properties/AssemblyInfo.cs b/WindowlessExample/Properties/AssemblyInfo.cs index 46c7659..d354f00 100644 --- a/WindowlessExample/Properties/AssemblyInfo.cs +++ b/WindowlessExample/Properties/AssemblyInfo.cs @@ -51,5 +51,5 @@ // 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("5.1.0.0")] -[assembly: AssemblyFileVersion("5.1.0.0")] +[assembly: AssemblyVersion("5.2.0.0")] +[assembly: AssemblyFileVersion("5.2.0.0")] diff --git a/WindowlessExample/WindowlessExample.csproj b/WindowlessExample/WindowlessExample.csproj index 5f35b7c..b4680e0 100644 --- a/WindowlessExample/WindowlessExample.csproj +++ b/WindowlessExample/WindowlessExample.csproj @@ -92,6 +92,9 @@ ..\packages\Finsemble.5.2.0\lib\net452\Finsemble.dll + + ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll diff --git a/WindowlessExample/packages.config b/WindowlessExample/packages.config index 170eb2a..3baf63b 100644 --- a/WindowlessExample/packages.config +++ b/WindowlessExample/packages.config @@ -4,6 +4,7 @@ + diff --git a/WinformExample/Properties/AssemblyInfo.cs b/WinformExample/Properties/AssemblyInfo.cs index 6d8f225..3d8f11d 100644 --- a/WinformExample/Properties/AssemblyInfo.cs +++ b/WinformExample/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // 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("5.1.0.0")] +[assembly: AssemblyVersion("5.2.0.0")] [assembly: AssemblyFileVersion("5.0.0.0")] diff --git a/WinformExample/WinformExample.csproj b/WinformExample/WinformExample.csproj index cd7a719..7da97c9 100644 --- a/WinformExample/WinformExample.csproj +++ b/WinformExample/WinformExample.csproj @@ -51,9 +51,6 @@ ..\packages\Finsemble.5.2.0\lib\net452\Finsemble.dll - - ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll - ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll diff --git a/WinformExample/app.manifest b/WinformExample/app.manifest index 7f1bd87..48bfddf 100644 --- a/WinformExample/app.manifest +++ b/WinformExample/app.manifest @@ -1,6 +1,6 @@  - + diff --git a/WinformExample/packages.config b/WinformExample/packages.config index 969d6b8..09cac20 100644 --- a/WinformExample/packages.config +++ b/WinformExample/packages.config @@ -4,6 +4,7 @@ + diff --git a/WinformMultiWindowExample/Properties/AssemblyInfo.cs b/WinformMultiWindowExample/Properties/AssemblyInfo.cs index 833f7c6..04cbf1a 100644 --- a/WinformMultiWindowExample/Properties/AssemblyInfo.cs +++ b/WinformMultiWindowExample/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // 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("5.1.0.0")] -[assembly: AssemblyFileVersion("5.1.0.0")] +[assembly: AssemblyVersion("5.2.0.0")] +[assembly: AssemblyFileVersion("5.2.0.0")] diff --git a/WinformMultiWindowExample/WinformMultiWindowExample.csproj b/WinformMultiWindowExample/WinformMultiWindowExample.csproj index 628e44a..9c88a6c 100644 --- a/WinformMultiWindowExample/WinformMultiWindowExample.csproj +++ b/WinformMultiWindowExample/WinformMultiWindowExample.csproj @@ -51,6 +51,9 @@ ..\packages\Finsemble.5.2.0\lib\net452\Finsemble.dll + + ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll + ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll diff --git a/WinformMultiWindowExample/app.manifest b/WinformMultiWindowExample/app.manifest index c805cb6..ff38f9b 100644 --- a/WinformMultiWindowExample/app.manifest +++ b/WinformMultiWindowExample/app.manifest @@ -1,6 +1,6 @@  - + diff --git a/WinformMultiWindowExample/packages.config b/WinformMultiWindowExample/packages.config index 170eb2a..3baf63b 100644 --- a/WinformMultiWindowExample/packages.config +++ b/WinformMultiWindowExample/packages.config @@ -4,6 +4,7 @@ + From 9cf792db288c4761a6badff82ffe0d5d1fa5365e Mon Sep 17 00:00:00 2001 From: sgd2z Date: Thu, 18 Feb 2021 08:43:38 -0500 Subject: [PATCH 5/5] Release 5.3.0 updates --- .../AuthenticationExample.csproj | 4 +- .../Properties/AssemblyInfo.cs | 4 +- AuthenticationExample/packages.config | 4 +- MultiWindowExample/App.xaml.cs | 13 +- MultiWindowExample/MultiWindowExample.csproj | 4 +- MultiWindowExample/Properties/AssemblyInfo.cs | 2 +- MultiWindowExample/packages.config | 2 +- WPFExample/Assets/ic_WPFLogo.png | Bin 0 -> 22301 bytes .../CustomControls/FinsembleButton.xaml | 49 ++ .../CustomControls/FinsembleButton.xaml.cs | 39 ++ .../CustomControls/FinsembleDropDown.xaml | 149 +++++ .../CustomControls/FinsembleDropDown.xaml.cs | 28 + WPFExample/CustomControls/FinsembleInput.xaml | 43 ++ .../CustomControls/FinsembleInput.xaml.cs | 28 + WPFExample/MainWindow.xaml | 80 ++- WPFExample/MainWindow.xaml.cs | 64 +- WPFExample/Properties/AssemblyInfo.cs | 4 +- WPFExample/WPFExample.csproj | 25 +- WPFExample/packages.config | 2 +- WindowlessExample/Properties/AssemblyInfo.cs | 4 +- WindowlessExample/WindowlessExample.csproj | 4 +- WindowlessExample/packages.config | 2 +- .../Controls/FinsembleInput.Designer.cs | 78 +++ WinformExample/Controls/FinsembleInput.cs | 46 ++ WinformExample/Controls/FinsembleInput.resx | 120 ++++ WinformExample/Controls/RoundedButton.cs | 146 +++++ .../Controls/RoundedSelect.Designer.cs | 87 +++ WinformExample/Controls/RoundedSelect.cs | 101 +++ WinformExample/Controls/RoundedSelect.resx | 120 ++++ WinformExample/FormExample.Designer.cs | 577 ++++++++++++------ WinformExample/FormExample.cs | 450 +++++++++----- WinformExample/Properties/AssemblyInfo.cs | 2 +- .../Properties/Resources.Designer.cs | 30 + WinformExample/Properties/Resources.resx | 10 + .../Resources/icons/chevron-arrow-down.png | Bin 0 -> 249 bytes .../Resources/icons/chevron-arrow-up.png | Bin 0 -> 245 bytes .../Resources/icons/winformsLogo.jpg | Bin 0 -> 4988 bytes WinformExample/WinformExample.csproj | 44 +- WinformExample/app.manifest | 2 +- WinformExample/packages.config | 2 +- .../Properties/AssemblyInfo.cs | 4 +- .../WinformMultiWindowExample.csproj | 4 +- WinformMultiWindowExample/app.manifest | 2 +- WinformMultiWindowExample/packages.config | 2 +- winformExample.json | 4 +- 45 files changed, 1943 insertions(+), 442 deletions(-) create mode 100644 WPFExample/Assets/ic_WPFLogo.png create mode 100644 WPFExample/CustomControls/FinsembleButton.xaml create mode 100644 WPFExample/CustomControls/FinsembleButton.xaml.cs create mode 100644 WPFExample/CustomControls/FinsembleDropDown.xaml create mode 100644 WPFExample/CustomControls/FinsembleDropDown.xaml.cs create mode 100644 WPFExample/CustomControls/FinsembleInput.xaml create mode 100644 WPFExample/CustomControls/FinsembleInput.xaml.cs create mode 100644 WinformExample/Controls/FinsembleInput.Designer.cs create mode 100644 WinformExample/Controls/FinsembleInput.cs create mode 100644 WinformExample/Controls/FinsembleInput.resx create mode 100644 WinformExample/Controls/RoundedButton.cs create mode 100644 WinformExample/Controls/RoundedSelect.Designer.cs create mode 100644 WinformExample/Controls/RoundedSelect.cs create mode 100644 WinformExample/Controls/RoundedSelect.resx create mode 100644 WinformExample/Resources/icons/chevron-arrow-down.png create mode 100644 WinformExample/Resources/icons/chevron-arrow-up.png create mode 100644 WinformExample/Resources/icons/winformsLogo.jpg diff --git a/AuthenticationExample/AuthenticationExample.csproj b/AuthenticationExample/AuthenticationExample.csproj index e5e69b5..a59395d 100644 --- a/AuthenticationExample/AuthenticationExample.csproj +++ b/AuthenticationExample/AuthenticationExample.csproj @@ -89,8 +89,8 @@ ..\packages\EventHook.1.4.105\lib\net45\EventHook.dll - - ..\packages\Finsemble.5.2.0\lib\net452\Finsemble.dll + + ..\packages\Finsemble.5.3.0\lib\net452\Finsemble.dll ..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll diff --git a/AuthenticationExample/Properties/AssemblyInfo.cs b/AuthenticationExample/Properties/AssemblyInfo.cs index 9cdc56f..8d94662 100644 --- a/AuthenticationExample/Properties/AssemblyInfo.cs +++ b/AuthenticationExample/Properties/AssemblyInfo.cs @@ -51,5 +51,5 @@ // 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("5.2.0.0")] -[assembly: AssemblyFileVersion("5.2.0.0")] +[assembly: AssemblyVersion("5.3.0.0")] +[assembly: AssemblyFileVersion("5.3.0.0")] diff --git a/AuthenticationExample/packages.config b/AuthenticationExample/packages.config index 7cab62a..16c9458 100644 --- a/AuthenticationExample/packages.config +++ b/AuthenticationExample/packages.config @@ -3,8 +3,8 @@ - - + + diff --git a/MultiWindowExample/App.xaml.cs b/MultiWindowExample/App.xaml.cs index ecb5484..be85146 100644 --- a/MultiWindowExample/App.xaml.cs +++ b/MultiWindowExample/App.xaml.cs @@ -1,14 +1,13 @@ -using System; +using ChartIQ.Finsemble; +using Microsoft.Shell; +using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; -using System.Reflection; + using System.Threading; using System.Windows; using System.Windows.Threading; -using ChartIQ.Finsemble; -using Microsoft.Shell; - namespace MultiWindowExample { /// @@ -138,7 +137,7 @@ private static bool LaunchWindow(IList args) if (window == null) { - Debug.Write($"Could not create window: {name}"); + Debug.Print($"Could not create window: {name}"); } else { @@ -150,7 +149,7 @@ private static bool LaunchWindow(IList args) IIntegratable fsblWin = window as IIntegratable; if (fsblWin == null) { - Debug.Write($"The window \"{name}\" is not a window that can be integrated into Finsemble."); + Debug.Print($"The window \"{name}\" is not a window that can be integrated into Finsemble."); } else { diff --git a/MultiWindowExample/MultiWindowExample.csproj b/MultiWindowExample/MultiWindowExample.csproj index 17e1acb..2159dcc 100644 --- a/MultiWindowExample/MultiWindowExample.csproj +++ b/MultiWindowExample/MultiWindowExample.csproj @@ -49,8 +49,8 @@ ..\packages\EventHook.1.4.105\lib\net45\EventHook.dll - - ..\packages\Finsemble.5.2.0\lib\net452\Finsemble.dll + + ..\packages\Finsemble.5.3.0\lib\net452\Finsemble.dll ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll diff --git a/MultiWindowExample/Properties/AssemblyInfo.cs b/MultiWindowExample/Properties/AssemblyInfo.cs index 5a7809a..c2230f4 100644 --- a/MultiWindowExample/Properties/AssemblyInfo.cs +++ b/MultiWindowExample/Properties/AssemblyInfo.cs @@ -51,5 +51,5 @@ // 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("5.2.0.0")] +[assembly: AssemblyVersion("5.3.0.0")] [assembly: AssemblyFileVersion("5.2.0.0")] diff --git a/MultiWindowExample/packages.config b/MultiWindowExample/packages.config index 3baf63b..a2d66ee 100644 --- a/MultiWindowExample/packages.config +++ b/MultiWindowExample/packages.config @@ -3,7 +3,7 @@ - + diff --git a/WPFExample/Assets/ic_WPFLogo.png b/WPFExample/Assets/ic_WPFLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..039888f001d89ccf3d987fa6929c10c608f19998 GIT binary patch literal 22301 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

|ip069hg|gE17Kr_1F_*f)|QO^OVrAB|@;+bn;W z)@YH)A10f%s|Q9k$YE`jC`y;*D>&?4^K+r!;(ZX};v3)Do*1E3`gTwFft@J)NAL^I zF1|ebuTwQgY~Z|_5ebr5=(lQ<;mO(hp1cc>_vw5Fdhx_p3jOP-aoy12z0j=FKePTI z!*4b^o1zHb@`Q(*7~5K9Y8*g$Z&ILpZJs39%=^~g`}sr~SgDX8x9SWWgna&_*)938 zzEi139SojL|7T8D*?hp#^rVU5lz=Vf=XI2@Cu3+qFYFE5o2V~2P!gCwv^Fj9h>jcT z=%93gv(F7E$2*Eww(9`m{rh)#(8)`riY?Bm6#>JcOllDHaE`pvAo(#&&Dx-E1xbWE zZ!b7X_2^0{?RD%A>)&tUDgG?ec6`UUO3V!mVYSr3pa(_;y9TmO*cy>#N^0=M)V%ux zQ~(YUY3xTi%__f7m0+q)che%XVe{&D)tp=G;=C7t5bYM2S^BuceLJkxSI>jSK3sxk z#tH5Oy_uphZ+vcLq+|y4z4Y)i`6qAlys4J;TSYA2qwg%Oatg%y^Hx#?7@dA ze9;^MIVG%C)U6*tt|2u|FOS1!&ohE`S+;bTUOndDyd0dN^_XpB4m%z=ohF`H`El%R!KcQXyGp7{luFaU;sQBvHBg-s)K`s47wXUfi{r#r5 zk3@Mn_@MTYWH*k0FQlavgP9YF%9M$Mae#Wf$MW2tyS1(~TtH!bsmSpIbZuTN(TSpa z7N%L%HrJKdE%gj>pzW}Q^+iP?u$QSka|VCgCXl29Ln>j$WXxxw*rAib9kVg2mUmUQ zZfgE|C!bBRy;r|Pd*jA}gHytgnC$t13(lc6jh24X@ymqAYiYxM{kwKpbTL*)oEoJP zPxH7{seYWgdr6_>5~xqhi4v(-UoB*mXhU^$uCHGp?ZNOwmihf@cxS+!?Q$d!Ywl}s z&v10up5TDice+l%SF{PU;6{qmk16{0t=kq={O$8(g@J8*^%+pL2JtiF|(nH`^Bk{oDvn_1+eKfy5m-v1O6Nb@L#&I^cx*0x>3vaVC{Kluj?c=H5t&jRft=0; zu7OED&`GzEy7S72<6|sFR+Xm-;zxOGLim=2uzJ?a@2$^W)Lc|pNm1`L2x8T8lmO}q z&S6U0gjhwE8ae$Alczc#7rz%0+w`|^H@F%Xqz4SSn=4rdS4RhRe`oQEJM&U)L^|Q( zOs{l0Bd+H)gfz(FbB?HOB8QCp&VrXcPZ>y@6<+YG2`^Ff5C>|1gm*uU8kaO~9A}um zO8Dv!jXMh8#iFm8a)@;4fAJx^<4@09r(Z0uK{*j(wnM>;bKi2tq!?lcuiFcp&boOy zv|KL4+0eB+L1pS>k&3vps>KqLU@Cd^iLN$_kN9QzD8y8L?N59j+Z2|puu>&bQw-|_ zt55@>P#KScl?!`Ws#Cebaof{~8WT_h?MY1u-Xn zo6B~($FJc-V2Wf)MSFGS?{NY-!gBMNa-?whs=F6rB(qaRTvhp-u$MM3Qrthqzj<`Y z2ws_Rui=&y6T`dU!!s#ZveQ7<7Ba403u`N>llryBJ!gZspuL~C(~>J>n!jr2^jNVf z5f}YO`)3EIX+1G073I#%9RT|w!1#gFRi3+UQozrBX@|icK}$M|E2ry23CeCKnCeDN zl#2@tz-tmuBvrpkevKlZ@!;&Pno#5(+M<@Nd2I&JDCSR|Fjy(lA!M*O_AzX_juMNn zh$(Fj{3WhTi2gTGooUuEc*|9UC#WBNEZ7$taVFQG>GE3u!}=)9q4@UCLSbTVR=wQT zWo=ycsS~+ST!}qEX%o*^tHW!80hBwZ6Y`5XzVm60sQIpO02CLst_xL=&st(egJ^q^ zgM^;4|6uNkF6j;B3BcGu%f#@XUd*63+HB}+veO0RDTtGkp z2TiGnfCMM;^95-Zh#Fj_yYI3>@rK*6ZwgLbDm?d#`KP&(LQN-zjTHvJmCa`GzRSvcA*D=sfi(kd;Q6sPSL7s*GZ_tiT8CRQh7<|2R>Yd|KDHTYR zr2}fvw*I={t5jkx;nbtbkQqwC$d1j>F`XKjv;-})a?IO1jCxJ`<8s>3ss z;=#T$ZMPNZakyLpTy2)`#5&0C`GMxGz>BbSK!`~pMJo4Don9ba9Aow=Qd6Fm!a9Rd zHAT@9zAQ;l$C5w(M%eyc>1e#aBHMBaJW0COc2PJrS@I@&=w-*VKM=s~#Dabh+3SOS zP2W@QPZZ*uPE|M&NZ{21np~-5&Co%2d!?8AR(D%NuOgwO@?h#w;5ITLMqSJ%GACi% zT)++Bb}2~N9N~ROWmHJP#n)MINQw9;ryovsWR{sK2eYWhY*>HI0&-R39f|W?H))-1rvl{$1%SI5gyG^y*Rf zMyl3e7sE~^y&IUTHy&F+0*+?nX&k-}^Y|Aky&q;FyTn3qyk1HA;u|g`^Tfe%?yxw_ z1&X0uFvlCHyAj;<=}l+cVTW5M5C+^OgoTRgguqnIU|($1OX$yph@w@0?bO@o@%JtE z15Y{qFRgw;hSqOblk!35TUe>3dXWl)=gZ!_;E37Lix(o0R4qtcSq zY3O16XS&G&eRHJYrQ?zbaFz&C;X zb<>8}@#}eSPVJJ2JN{GH6D5cY{HJndnq%C`V6(Ktf9^Py7ACVF_9^vN5Q)j^Y<{|K z7|-B>Y-JX|#%rf35MDKuuF{YkGe0meEp_xmtfH+(wFJ_3x&{IfgmENxwtQ;99+F-Z zv$t(kc9)QT#gAcZ0e+*Ncd;{!QZ{uY&_-{{z<^OEcPWYebqQC0fA&~fAvVuU6b8*y zJwhO}=CLS#v%XY**(B9wqB>Xr9HsZ=t?ug%`|h8ZC-5gVR}rUBLIOn3PbS$v4UbUw zi>d%ds@m8nN|DNCQ zg}qSv0O6t3j6t|h%&%Zui?lRN-mf`Se&g|#PZLWw{j+VCehs20QwXoG)jqWe7n=oN;6{Gc$n8Lg z$U98v<85{ucrC~JTI_Tp9_?#ky1MFf)D^JL^V0`~;V*iHWfL9ecn1a8w)%)n1hU8e zcA8xQLIYKDiCeQ~e3{6^<;RiHI|DH;&lc12ZAQH7R*pu>;dN7UslI+y4GYwYCyFavjHO29Rf-0i?+>dE)y*ABV^%P8f&Q;@Z)ML^S_4AxEZ{vQ22O_o4 zVO(6LgLhh5#o4YM_fjmA5F6}JIkrTmal&S}k$bH6i%IBa>~Z4YI0hW{vuGGi-a+LH zff6da&kYeC_)vhO3>Ff>assG|lj1bfp>9u}w9d`n2NZIExa|)r=Nsig7I8S1;kDLT zAsGX$w6uvYpbV<<-p@DH$yXQyqA%_cKVh%gGC%u=M6C53%UL{b2i2@t?7DQh{nBnX zJO+gEbEtw^G~gQ|(^!EVNAd&DRsOlgQ+5kGme!SVTyNjUMOm_((~i%{I?fp`ejWD8 z-yp7*Fwu1r6Z~!)i&u|%uTmQALa;aMr=Xz_5W$c-tm>Gn##Y^_^@6U0c*?_6%Y*)M z(kKT!OKZNmAq@S!5)1wG&iGwxXwelr@qsIsg(maRV~-ihTmFoczAAan65w>;<0mhh zx^(rngmn90%-zZf5)xy+>XGF%>kZL7isO|MMVwMT-*XMUk=G)e|2g);6xrx(`lnjG zbFC&-|1lc*%sh_bpdhC2@-c8%yc%8KSTwEMW;O0Gce=ma{Pu}%|B2m*4=Cu+q#3Wg zN_+b>jT--0q=+X9du!@<4fL349{I8h!0C7Pz7Q2Xux6c|ijc|$C}>3FTpg|CB=cXy z73bc^$6<7b*CWS`xOMchS(&d-_@zw#!4B$8=H-JL~F zOyLd0x_s0VNd7Mcv-o1VVI~c$vM=waw>Oz2Vs%YgHHI3tClDHf(4{F?LMd zp?*_yaBzeNpa4aMAwYAe&zA-_zTl^!ud|Yvpvx;GgQNbmJo(!Cct;W?&N2?Prs|xH zznBExbqxHfOb9nes6G(?8JNXxL0ycwFEgdsQOim6p7#wYvehJ&(N{oU@2Iq@>~u1O z=}u?+i^PXyWs_QbX{3a|ae!;whN;B?@QRb+(rCG}GfJC?=pd@14 z%feBh(Id1oG|I(BPbfen@_#K{0;0mV{i7Or6Mz>GYGk#(0%U`{7HDg$4AFT@%?L-q zL0pS4H*k=C;kGf=X?~u6pTb?H!?XX!KeBooc^qCn4RAZjnl~xOZ=FqiWS7kY?f{Pi zw2Iqq7HV~gDcttb-DoT2MZX3?1d1%q=%)UhD=OyZ>SEOFl_mY)EmZ_jWbL`0^|(Sh z9FyuD?$J;7IOG1FUI<^LS!d}J&4--TM(Pf-o4RFxVEE=EM=fobuPgd5$cjA_oX8Ce zAT1N}+J6-=QLexMWqvmUfjmz{P23wORX|<5qXUK#mlIo;|r=c zvKlFG-b%H(8?XM&QrWp43u>uMf0>gp!=V%i`QD~c+wNF~i6OxdKA>t+31py)U(H!& zA5w9Lk%HnQo77}bDBu%i)!#x=u7F%1w2dEp6h0J2PX?u5>p8hCRk}==7Vp5=*6uk~ zHilbd7x;A9TfvV}nk*CNWG)eA?o+gPGiz=7e6{v3WDmqR2a$>CI0(y_@%C-Cn?cKm zsSm|0a2Q+Rjr9$5VkK5JJV!K@Y&6h6v7mC0v_7-`X$qJ!HB4w)Z`wa$P#{?Ty=kMZ zL)T-b*y_VlCeJOlP_y6P9nEHp!oY9k6r#8qu@vI-SY$=AoJBDl^&$iAvv3mFXGTo6=CsyM0fM!=g{H4NACADz^V69IWKlW)^n~3B{I3rJZ?oWWGJrYGF$8K4+j&khg~gYcm`;P#9cg zF{&M{9l@yek97rv}Im@1(`s@Gt zW7T^UyR9_B-pTQ6z`qwQ;Fc%N#K729{cA$pgB*&eaqSJb58GLXfMx(LJ>~!2TK`y8 zQ`1D^O@dY9#zEbaQrQ>(3y;?%5bLk(Hs_~fjZ!DT4tm885uhgM=o;)Z=f8d7+(oMi zh>DILDu|WgiiawRd|u`V?+X{z=+mJuP7?|b4+k`FMsOonT3op@MC?#OIK(X~|1SI0 ztEweoj-00>>lN0SFF(0W^9D?BTIQR*2vj0nBzWyTXEKnzp@dF%J1HZtsZ2nAXE=WA z48s3>ylkN%0#Z`OugjHrtJrcLx7k+;#+Va^5K}DUKl;s{cg$K;O3+!REcde9vs(uo z>c1?Gn2NA=a?YE$XL;2d`rK}Wl~;Stm49P8`y+j`ymcZ>N2o4n3k;BxyT5-wet2*H z_uBr%(D`;(w3CyG+!)4!%24=bm`12WeF?y(y-a**@062JQrr;QM*Z=Kswg2g3KUzJP3V14hdlR7N} z;)k@?(rZE1!9cX#}H@IF)%Wig8*fVvp_`^}%igaj! zJXey_Jnct+r6*tKVTPCgn^VP6=UqnU|Fv_S@oc_ryLeEwincaY>tD4>RFu%7M$MKg zRS8AxQL$&uE~9Fv2u-Q}%~I5!|Eg9<>{y|8Y!M+wp4;<$dB47&-Y;)H-O2C1&-?n_ zInU!d&g;I8Qnw<85b(TOoAp|tQF#?C>1ghMIT{bHyeq}1piyOn#XL#RHs8hq!<)~Brz|E;u5j(yx%4P*$PS#;n0*ueLWS)(L@cDinmzH{_U8#%EX-4@brAK3o-r_Idd1wUf_$E?7(QX)a(P(mQ{mvVFeMx|6&9^08$L~61Q?twARFI?KpSU&!ei0U zmBNXJt8}U(pgWc$Gcz;9QrL-m(7@cmL5~(Re(7P8Y0J|#Gl;mAG}fxn(suImxLmip;xhdY9Xq=(e5D%*6D!u&{9LUNaK` z27JiUT8D<@MTMvaO&v67dU|?fAacKEbA$~8s8$Sz(^w$1e|h>&x2_g{@DGzOkSxDE zt}hz#?M-H5-SjJC`R}vzko`m#jjn0sq=#QDBXDn_mg=Z#zr|m~q5S=C#A@f?@O9L* z#a?E8^F4~z$*Nf;2Rpm4o?a!8;?wCP#QIipxlCW&#MjZ$Q6f-?{^M$bs@`SZlXVz~ zhXAL>_6w_E1v@h{v&+Q}^8W~1=q#_lgiyiE|o|x;gt=e+IOzv$)eLl7y zJfA4j#|$yGl*u5DJcgC`7#OT;Q<6!?a<+ArFdB7itUqdAkWkX2p{TG{%T+wx98wcD zj0-OL8r<{6O9<@S4k2FT>ibAMnxV8lL24b7z z^U|GuM^-If@1~8qCygGJEu+)wCQ{Jf{d|eNy@r$(P({NMa^g@Tr@`FpJo(8*49@^4 zv`cVib`v6$_0;cm@!ZKU;iZ0Sx)zP36+{t9rZg`@YW>@2M{Qf1c}y%_>XALdLEpn% zV!Bs~4tG+b*3Zzfk1mXDWos*ow|SPavEMpg?;wSCz!|X5bygMuy%lrlyAcDpmzsNG zK^wjr%W4C-nX5CR!f*V+qYTCG%V2HL*5gHmft8)B1$ia08Q)K-Ym5RfDpWhAHFsV= zsl1ej&KDP0ydOXQ)$yggV6+_p8w!#cM+Cmg#-J3e9a(?i>hEgr`Guo5pq(Te{3)vs9_q`MDh}Y9-Sq|B4jHh#oY?@VCJwt=-0x+ClTpp z7YVx1Wz0)z^LD?AhT53}K)!-gc=%Jyg_y_-1KlAzZ(-|3C3VX$w=?xwXN<(X;CKEmJKff$a-pbJ|t{`LG<7S_uFOVFKs_OVP@jP zwAOo7nhj?+Sk6V5$~DgjTI<2+&?YQ;%_29R*xEWD?k+ZN=BSgR1-N^PvBOAVjLjEI zO92Nmaimd5SlH|DqDoO(^|OC21bIoV=!Be-Pzs`lKlK;%wWz6jQ%c;KN3UTg#K*NA zK{H!viiWpX9Y{-e=o;LDiV<69?HKA_Ss;hYu6Gow>3Ds@y*mdq=CGqDl2-=O zpFN2oB?a4`r)ig%&2u%*^#X=NW@o&l_;T#!EQsVxLF-ual1k$qgX)xTth~)#{AG1s zaOPs&r1ww&@-hZ^`-)xIKE60C0jIPN$4>CZ2k+OQ?9@}{V^>^Tc76!fK6aC@3Y#D` z1WR4k-w$OFq8*}WHg%r(k84SHNUtrJFG?u6ztVpbnzm!G+v^KXG!ECcwf$gqH70r7 zYqIXkt+{|aYV_k4;v=GlB%fmkUnaglIc<6*Q9*2mI$BSxwyDy_)!)VT70!Q8ZRqme zrt+nK@M*={AwsR2ao?KVoEzjK?e#am(q1u-i3}-Mr?Q}YvZq% z{M^hLn!TgD1!f+)$(@P&*8HRG_;*|1D?i5QN0fE^eEw>|DOmg!{~R@=GW;GYZSAXd zSzs<@=sW=cZg)5EXbBgw$1wW1RFU=3(tV$7K|mB6!!X~h-9zVrp!+*gPWXnYc=*{& zP$Wjz_k%c6N*;eIMmocqjEl`4Ant_5t_8mV-#dOg$%yb@;VyB1@(OY4un%EV`?QgRIC@nn4G&mc-PjSBErG#ccOA#=(8hOX?%UpB!&ob zxsT?IPU8ua!gwCfGHYQC9tF1f{rRKU;cU49u|>5e;FEO%uOnJhYCXpK@jTrjU~K2_ zyr7vc(a`m4&Rgdrn448yRnJJw++hvs#MmT9wRI=yWx(RCP8z^MFFXm}cwVTGP%OCY zRESQO0@kbYSBpK_^oj-z!?s!|0Nt8yNeqP0j!EPOxA&Maul{AU@(1{3v?sm@0~O3S z(|Xj>6?h9QiRMKP1oKi|m*^vm*PVBBM}(5G#@KuZ0X->cI=;yM`x9(xLaYWQxz+FE z{6Mn+5{7=esk+CIYP|GecW`^5j=8R9 kZ-`E`JzStesw5&WlB`7dZM} z63#+I_(ji_+GF{%k}A496g?vf4NRc1$^8vd4!iWVe6Bs9sihJp`INvvQZW?FOes2` zYA|(uasFBKz|ZHVGxaHKr@;M~tJG76*sHYr^?^6~dP)6{@L}MN z%D8i%$2MiDkr(pGK*L&t3ZXjJz77sN>-xzmF;J+SaImUv0eF_^MYgDP{I)+~P zU_4&5&W;2fFe@X%&o#-YmF0ix-2AQA`R11!6X&Q2ImlFj#!k0leW}0sZsgja>!gU-SHXGOEPx9jLV7gPnvds=enscVuPCEhf z8Q;xhxFVtIl**|M0Cb3vi({)J*?u;U*_~crP`&zM3E9_5#odU+E+CQoPxozZp-O_< zh$4m=2t!^!6K=^M-l$&jMc&I|jfpkhzJ(E;e|ENs%u08-FngpeGp4i&#l zEztbet}anQ@S3sN@M}p@IZ)5-nh&s}iLoiUu3kXnB8uxXhUJ?%-ZG#kBMSSOk*wcN zTw*gaG~dSimenkXvKqtzjS#BI8JuJ9^hX@|<&(eSEvn}4a9|h8)zx=kINAoY)SEx^ zPI+JTnogGmPqBU3S4fh`{FlmK_<(M00p9 zr5Vd}Ulqw;CX$PMCtCbBa|Db2!w!Jue(nXh+=jQB>ym)bKCR3J@_X9vPWdYy4TVo~ zRlIRSca+A4qX~yI^j`9{GBpAh45O9R(VcajgU0SI_EeWfF(3rnsfoL6?-C3l!zat!qnhRSV`i z&9c<1agpCb_pXJ^vBJi;r|^RYJdRDHe{FcqS+XwYhgF!4+C_kY(+l)kuBIyNH43@;j{6>b5Pl5gZVbECQ|f3vLq{11@%M^4Z8FZ7irZU zsxPl)J@S`bi@9SqYto?VdpMR&O$h}b$R3r=F=v=pjW}R;l;`C(?ftnbZGyIW%9kTc zKYnkjgnQWNWLea8A9Np3KYT_-hITooQ)g@8ptK=Vb&Lsw2V?c@m$rC}VdC*GC>pUA zZ#sn+JI2f~n|wl@?tQ-fSuTsUccY%*?c^t94;XFP$GM^Jn=6o?Fq&lQxrK&>)h-v} zZoYAm!5v$_GUh9^rKRrRUH$t#9h{vK*>wJ>DZc9r2qX_KcX6gfP=`>XbOA~Im05bz zL;Bk8`ZB{YR}i3TKxO#=OCVJ0VoS`!IE0JxF1WK?Z2jFVgqL)}~cN^lK z#Ou?0_6imi)_iMfvb7!2>wzf0G_u;$bJLicx<-o5D9446wYAvudiHFvhil}k&td32 z1dCyHP$iv&*B5c(NHnBG@#H~zv zjk@Fv<-fwLC-wF`M`PGl7-7v@m>h^65(ko%Gj~i zHZQ!joo5VANN{vG>#P{t42{h#j)3WR#T&!U#MnwZ*$S#>lfIBx%*$oDrmn8;!OSnM#&|4m39a6N4&&Vk}Br7Q@7EEyV#&V3-H!sRfcpU>hV8ium zV&fGm)M>o-pogCLO(9q|y!z+CTHC3|A$}lo$y+5wwRw)+Z#rPC!Si3aAxT!_zX5A{yF=vw&0qi08bA!`BIG_G2U9VZh)8@~aItNRj z2%evEupM|;+S7u{gy$kmT{|(Uz0c2`i0Xfo#NsE;W55;=#fc$%a6S;+bk>-NiJ5Ls z@|A%7aoo19DbPU_^6|t#)ZVThFYqDZ=312Ux$bDja$#v-nXZ(mqnki9 zA;Y0+RNG#c2&`br2YER7dS7OGD>uAhWU&FXsg#cq-D@~~(G0W5-8A5$*-z7b;vdvD zx?|k_<1LyE|Btukf4}^{(dhrV(dhre_*L}kE{$QE{`11$R@ME0rR_Pxd#1V-+V(O3 E2H1!$g#Z8m literal 0 HcmV?d00001 diff --git a/WPFExample/CustomControls/FinsembleButton.xaml b/WPFExample/CustomControls/FinsembleButton.xaml new file mode 100644 index 0000000..d8074fe --- /dev/null +++ b/WPFExample/CustomControls/FinsembleButton.xaml @@ -0,0 +1,49 @@ + + + + + + + + + + diff --git a/WPFExample/CustomControls/FinsembleButton.xaml.cs b/WPFExample/CustomControls/FinsembleButton.xaml.cs new file mode 100644 index 0000000..7b99872 --- /dev/null +++ b/WPFExample/CustomControls/FinsembleButton.xaml.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace WPFExample.CustomControls +{ + ///

+ /// Interaction logic for FinsembleButton.xaml + /// + public partial class FinsembleButton : UserControl + { + public event EventHandler Click; + + public string ButtonContent { get; set; } + public FinsembleButton() + { + InitializeComponent(); + this.DataContext = this; + } + + private void Button_OnClick(object sender, RoutedEventArgs e) + { + var eventHandler = this.Click; + + eventHandler?.Invoke(this, e); + } + } +} diff --git a/WPFExample/CustomControls/FinsembleDropDown.xaml b/WPFExample/CustomControls/FinsembleDropDown.xaml new file mode 100644 index 0000000..44504bc --- /dev/null +++ b/WPFExample/CustomControls/FinsembleDropDown.xaml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/WPFExample/CustomControls/FinsembleDropDown.xaml.cs b/WPFExample/CustomControls/FinsembleDropDown.xaml.cs new file mode 100644 index 0000000..8b14000 --- /dev/null +++ b/WPFExample/CustomControls/FinsembleDropDown.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace WPFExample.CustomControls +{ + /// + /// Interaction logic for FinsembleDropDown.xaml + /// + public partial class FinsembleDropDown : UserControl + { + public FinsembleDropDown() + { + InitializeComponent(); + } + } +} diff --git a/WPFExample/CustomControls/FinsembleInput.xaml b/WPFExample/CustomControls/FinsembleInput.xaml new file mode 100644 index 0000000..2c70480 --- /dev/null +++ b/WPFExample/CustomControls/FinsembleInput.xaml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + diff --git a/WPFExample/CustomControls/FinsembleInput.xaml.cs b/WPFExample/CustomControls/FinsembleInput.xaml.cs new file mode 100644 index 0000000..2fe927d --- /dev/null +++ b/WPFExample/CustomControls/FinsembleInput.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace WPFExample.CustomControls +{ + /// + /// Interaction logic for FinsembleInput.xaml + /// + public partial class FinsembleInput : UserControl + { + public FinsembleInput() + { + InitializeComponent(); + } + } +} diff --git a/WPFExample/MainWindow.xaml b/WPFExample/MainWindow.xaml index 3c2ac7c..d575f52 100644 --- a/WPFExample/MainWindow.xaml +++ b/WPFExample/MainWindow.xaml @@ -5,33 +5,71 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WPFExample" xmlns:Finsemble="clr-namespace:ChartIQ.Finsemble;assembly=Finsemble" + xmlns:customControls="clr-namespace:WPFExample.CustomControls" xmlns:Custom="http://schemas.microsoft.com/winfx/2006/xaml/presentation/ribbon" x:Class="WPFExample.MainWindow" mc:Ignorable="d" - Title="MainWindow" Height="350" - Width="525" WindowStyle="None" Background="{x:Null}" + Title="MainWindow" Height="600" + Width="600" WindowStyle="None" Background="{x:Null}" AllowsTransparency="True"> - - + - - - - -