예제 #1
0
        public void SetFinsemble(Finsemble fsbl)
        {
            this.fsbl = fsbl;

            Application.Current.Dispatcher.Invoke(() =>
            {
                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);

                fsbl.DragAndDropClient.SetScrim(Scrim);                 // The Scrim Label Control is used for drag and drop.

                Show();
            });
        }
예제 #2
0
        public void SetFinsemble(Finsemble fsbl)
        {
            this.fsbl = fsbl;

            Application.Current.Dispatcher.Invoke(() =>
            {
                FinsembleHeader.SetBridge(fsbl);                 // The Header Control needs a connected finsemble instance

                // Styling the Finsemble Header
                FinsembleHeader.SetActiveBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#3C4C58")));
                FinsembleHeader.SetInactiveBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#303D47")));
                FinsembleHeader.SetButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#005BC5")));
                FinsembleHeader.SetInactiveButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#004BA3")));
                FinsembleHeader.SetCloseButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#D30E2D")));
                FinsembleHeader.SetInactiveCloseButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#D30E2D")));
                FinsembleHeader.SetDockingButtonDockedBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#005BC5")));
                FinsembleHeader.SetTitleForeground(new SolidColorBrush(Colors.White));
                FinsembleHeader.SetButtonForeground(new SolidColorBrush(Colors.White));

                FinsembleHeader.SetButtonFont(null, 14, FontStyles.Normal, FontWeights.Normal);
                FinsembleHeader.SetTitleFont(null, 14, FontStyles.Normal, FontWeights.Normal);

                fsbl.DragAndDropClient.SetScrim(Scrim);                 // The Scrim Label Control is used for drag and drop.

                Show();
            });
        }
        private void Finsemble_Connected(object sender, EventArgs e)
        {
            Application.Current.Dispatcher.Invoke(delegate             //main thread
            {
                // Initialize this Window and show it
                InitializeComponent();                 // Initialize after Finsemble is connected
                FinsembleHeader.SetBridge(FSBL);       // The Header Control needs a connected finsemble instance

                //Styling the Finsemble Header
                FinsembleHeader.SetActiveBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#3C4C58")));
                FinsembleHeader.SetInactiveBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#303D47")));
                FinsembleHeader.SetButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#005BC5")));
                FinsembleHeader.SetInactiveButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#004BA3")));
                FinsembleHeader.SetCloseButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#D30E2D")));
                FinsembleHeader.SetInactiveCloseButtonHoverBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#D30E2D")));
                FinsembleHeader.SetDockingButtonDockedBackground(new SolidColorBrush((Color)ColorConverter.ConvertFromString("#005BC5")));
                FinsembleHeader.SetTitleForeground(new SolidColorBrush(Colors.White));
                FinsembleHeader.SetButtonForeground(new SolidColorBrush(Colors.White));

                FinsembleHeader.SetButtonFont(null, 14, FontStyles.Normal, FontWeights.Normal);
                FinsembleHeader.SetTitleFont(null, 14, FontStyles.Normal, FontWeights.Normal);

                FSBL.DragAndDropClient.SetScrim(Scrim);                 // The Scrim Label Control is used for drag and drop.

                // Receivers for dropped data.
                FSBL.DragAndDropClient.AddReceivers(new List <KeyValuePair <string, EventHandler <FinsembleEventArgs> > >()
                {
                    new KeyValuePair <string, EventHandler <FinsembleEventArgs> >("symbol", (s, args) =>
                    {
                        var data = args.response["data"]?["symbol"]?["symbol"];
                        if (data != null)
                        {
                            Application.Current.Dispatcher.Invoke((Action) delegate //main thread
                            {
                                DroppedData.Content = data.ToString();
                                DataToSend.Text     = data.ToString();
                                SaveState();
                            });
                        }
                        ;
                    })
                });

                // Emitters for data that can be dragged using the drag icon.
                FSBL.DragAndDropClient.SetEmitters(new List <KeyValuePair <string, DragAndDropClient.emitter> >()
                {
                    new KeyValuePair <string, DragAndDropClient.emitter>("symbol", () =>
                    {
                        //set state on drag so correct symbol is displayed
                        Application.Current.Dispatcher.Invoke(delegate //main thread
                        {
                            DroppedData.Content = DataToSend.Text;
                            SaveState();
                        });
                        return(new JObject
                        {
                            ["symbol"] = DataToSend.Text,
                            ["description"] = "Symbol " + DataToSend.Text
                        });
                    })
                });


                FSBL.ConfigClient.GetValue(new JObject {
                    ["field"] = "finsemble.components"
                }, (routerClient, response) =>
                {
                    if (response.error != null)
                    {
                        Logger.Error(response.error);
                        return;
                    }

                    var components = (JObject)response.response?["data"];
                    foreach (var property in components?.Properties())
                    {
                        object value = components?[property.Name]?["foreign"]?["components"]?["App Launcher"]?["launchableByUser"];
                        if ((value != null) && bool.Parse(value.ToString()))
                        {
                            Application.Current.Dispatcher.Invoke(delegate                             //main thread
                            {
                                ComponentSelect.Items.Add(property.Name);
                            });
                        }
                    }
                });

                //restore state if one exists
                UpdateDisplayData();

                //Programmatically link to a colour channel
                //FSBL.LinkerClient.LinkToChannel("group2", null, (s, a) => { });


                this.Show();
            });

            // Subscribe to Finsemble Linker Channels
            FSBL.RPC("LinkerClient.subscribe", new List <JToken>
            {
                "symbol"
            }, (error, response) =>
            {
                Application.Current.Dispatcher.Invoke(delegate                 //main thread
                {
                    DataToSend.Text     = response?["data"]?.ToString();
                    DroppedData.Content = response?["data"]?.ToString();

                    SaveState();
                });
            });

            // Logging to the Finsemble Central Console

            /*FSBL.RPC("Logger.error", new List<JToken> {
             * "Error Test"
             * });
             *
             * FSBL.RPC("Logger.log", new List<JToken> {
             * "Log Test"
             * });
             *
             * FSBL.RPC("Logger.debug", new List<JToken> {
             * "Debug Test"
             * });
             *
             * FSBL.RPC("Logger.info", new List<JToken> {
             * "Info Test"
             * });
             *
             * FSBL.RPC("Logger.verbose", new List<JToken> {
             * "Verbose Test"
             * });
             */
        }
        private void Finsemble_Connected(object sender, EventArgs e)
        {
            Application.Current.Dispatcher.Invoke(delegate             //main thread
            {
                // Initialize this Window and show it
                InitializeComponent();                 // Initialize after Finsemble is connected
                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);

                //Set window title
                FinsembleHeader.SetTitle("WPF Example Component");

                FSBL.DragAndDropClient.SetScrim(Scrim);                 // The Scrim Label Control is used for drag and drop.

                // Receivers for dropped data.
                FSBL.DragAndDropClient.AddReceivers(new List <KeyValuePair <string, EventHandler <FinsembleEventArgs> > >()
                {
                    new KeyValuePair <string, EventHandler <FinsembleEventArgs> >("symbol", (s, args) =>
                    {
                        var data = args.response["data"]?["symbol"];
                        if (data != null)
                        {
                            //Check if we received an object (so data.symbol.symbol) or a string (data.symbol) to support variations in the format
                            if (data.HasValues)
                            {
                                data = data?["symbol"];
                            }
                            Application.Current.Dispatcher.Invoke((Action) delegate     //main thread
                            {
                                Application.Current.Dispatcher.Invoke((Action) delegate //main thread
                                {
                                    DroppedData.Content       = data.ToString();
                                    DataToSend.Text           = data.ToString();
                                    DroppedDataSource.Content = "via Drag and Drop";
                                    SaveState();
                                });
                            });
                        }
                    })
                });

                // Emitters for data that can be dragged using the drag icon.
                FSBL.DragAndDropClient.SetEmitters(new List <KeyValuePair <string, DragAndDropClient.emitter> >()
                {
                    new KeyValuePair <string, DragAndDropClient.emitter>("symbol", () =>
                    {
                        //set state on drag so correct symbol is displayed
                        Application.Current.Dispatcher.Invoke(delegate                         //main thread
                        {
                            DroppedData.Content = DataToSend.Text;
                            SaveState();
                        });
                        return(new JObject
                        {
                            ["symbol"] = DataToSend.Text,
                            ["description"] = "Symbol " + DataToSend.Text
                        });
                    })
                });


                FSBL.ConfigClient.GetValue(new JObject {
                    ["field"] = "finsemble.components"
                }, (routerClient, response) =>
                {
                    if (response.error != null)
                    {
                        Logger.Error(response.error);
                        return;
                    }

                    var components = (JObject)response.response?["data"];
                    foreach (var property in components?.Properties())
                    {
                        object value = components?[property.Name]?["foreign"]?["components"]?["App Launcher"]?["launchableByUser"];
                        if ((value != null) && bool.Parse(value.ToString()))
                        {
                            Application.Current.Dispatcher.Invoke(delegate                             //main thread
                            {
                                ComponentSelect.Items.Add(property.Name);
                            });
                        }
                    }
                });

                //FSBL.LinkerClient.LinkToChannel("group2", null, (s, a) => { });
                //restore state if one exists
                UpdateDisplayData();
                this.Show();
            });

            // Subscribe to Finsemble Linker Channels
            FSBL.RPC("LinkerClient.subscribe", new List <JToken>
            {
                "symbol"
            }, (error, response) =>
            {
                Application.Current.Dispatcher.Invoke(delegate                 //main thread
                {
                    DataToSend.Text           = response?["data"]?.ToString();
                    DroppedData.Content       = response?["data"]?.ToString();
                    DroppedDataSource.Content = "via Linker";
                    SaveState();
                });
            });

            //Subscribe to a PubSub topic
            //N.B. You must add a PubSub responder before publishing or subscribing to any topic that doesn't start with 'Finsemble'
            //     This is not currently supported in the .Net RouterClient implementation and will need to done in a Finsemble HTML5 service
            Subscribe_to_pubsub();

            // Logging to the Finsemble Central Console

            /*FSBL.RPC("Logger.error", new List<JToken> {
             *      "Error Test"
             * });
             *
             * FSBL.RPC("Logger.log", new List<JToken> {
             *      "Log Test"
             * });
             *
             * FSBL.RPC("Logger.debug", new List<JToken> {
             *      "Debug Test"
             * });
             *
             * FSBL.RPC("Logger.info", new List<JToken> {
             *      "Info Test"
             * });
             *
             * FSBL.RPC("Logger.verbose", new List<JToken> {
             *      "Verbose Test"
             * });
             */

            ////Sample code to execute LauncherClient.getActiveDescriptors()
            //FSBL.LauncherClient.getActiveDescriptors((s, args) =>
            //{
            //	System.Diagnostics.Debug.Write(args.response.ToString());
            //});
        }