/// <summary>
        /// Login to a SpeckleServer
        /// </summary>
        private void Login(object sender, RoutedEventArgs e)
        {
            var signInWindow = new SpecklePopup.SignInWindow(true);

            var helper = new System.Windows.Interop.WindowInteropHelper(signInWindow)
            {
                Owner = new System.Windows.Interop.WindowInteropHelper(this).Handle
            };

            this.IsEnabled = false;

            signInWindow.ShowDialog();

            this.IsEnabled = true;

            if (signInWindow.AccountListBox.SelectedIndex != -1)
            {
                var account = signInWindow.accounts[signInWindow.AccountListBox.SelectedIndex];

                EmailAddress = account.Email;
                RestApi      = account.RestApi;
                ApiToken     = account.Token;
                (SenderTab.Content as Grid).IsEnabled   = FileOpened && LoggedIn;
                (ReceiverTab.Content as Grid).IsEnabled = FileOpened && LoggedIn;
                UpdateClientLists();

                Status.AddMessage("Logged in to account at: " + RestApi);
            }
            else
            {
                Status.AddError("Failed to log in");
            }
        }
Example #2
0
        public virtual void ShowAccountsPopup( )
        {
            Window.Dispatcher.Invoke(() =>
            {
                var signInWindow = new SpecklePopup.SignInWindow();

                var helper   = new System.Windows.Interop.WindowInteropHelper(signInWindow);
                helper.Owner = new System.Windows.Interop.WindowInteropHelper(Window).Handle;

                signInWindow.ShowDialog();
                DispatchStoreActionUi("getAccounts");
            });
        }
        public override void AddedToDocument(GH_Document document)
        {
            base.AddedToDocument(document);
            Document = this.OnPingDocument();

            if (Client == null)
            {
                Account account = null;
                try
                {
                    account = LocalContext.GetDefaultAccount();
                }
                catch (Exception err)
                {
                }

                if (account == null)
                {
                    var signInWindow = new SpecklePopup.SignInWindow(true);
                    var helper       = new System.Windows.Interop.WindowInteropHelper(signInWindow);
                    helper.Owner = Rhino.RhinoApp.MainWindowHandle();

                    signInWindow.ShowDialog();

                    if (signInWindow.AccountListBox.SelectedIndex != -1)
                    {
                        account = signInWindow.accounts[signInWindow.AccountListBox.SelectedIndex];
                    }
                    else
                    {
                        AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Account selection failed.");
                        return;
                    }
                }

                RestApi   = account.RestApi;
                AuthToken = account.Token;
            }

            StreamIdChanger           = new System.Timers.Timer(1000); StreamIdChanger.Enabled = false;
            StreamIdChanger.AutoReset = false;
            StreamIdChanger.Elapsed  += ChangeStreamId;
        }
Example #4
0
        public override void AddedToDocument(GH_Document document)
        {
            base.AddedToDocument(document);
            Document = OnPingDocument();

            if (Client == null)
            {
                Locked   = true;
                NickName = "Initialising";

                Account account = null;
                try
                {
                    account = LocalContext.GetDefaultAccount();
                    RestApi = account.RestApi;
                    Client  = new SpeckleApiClient(account.RestApi);
                    Client.IntializeSender(account.Token, Document.DisplayName, "Grasshopper", Document.DocumentID.ToString()).ContinueWith(task =>
                    {
                        Rhino.RhinoApp.InvokeOnUiThread(ExpireComponentAction);
                    });
                }
                catch (Exception err)
                {
                }

                if (account == null)
                {
                    var signInWindow = new SpecklePopup.SignInWindow(true);
                    var helper       = new System.Windows.Interop.WindowInteropHelper(signInWindow);
                    helper.Owner = Rhino.RhinoApp.MainWindowHandle();

                    signInWindow.ShowDialog();

                    if (signInWindow.AccountListBox.SelectedIndex != -1)
                    {
                        account = signInWindow.accounts[signInWindow.AccountListBox.SelectedIndex];
                        RestApi = account.RestApi;
                        Client  = new SpeckleApiClient(account.RestApi);
                        Client.IntializeSender(account.Token, Document.DisplayName, "Grasshopper", Document.DocumentID.ToString()).ContinueWith(task =>
                        {
                            Rhino.RhinoApp.InvokeOnUiThread(ExpireComponentAction);
                        });
                    }
                    else
                    {
                        AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Account selection failed.");
                        return;
                    }
                }
            }
            else
            {
            }

            Client.OnReady += (sender, e) =>
            {
                StreamId = Client.StreamId;
                if (!WasSerialised)
                {
                    Locked   = false;
                    NickName = "Anonymous Stream";
                }
                ////this.UpdateMetadata();
                Rhino.RhinoApp.InvokeOnUiThread(ExpireComponentAction);
            };

            Client.OnWsMessage += OnWsMessage;

            Client.OnLogData += (sender, e) =>
            {
                Log += DateTime.Now.ToString("dd:HH:mm:ss ") + e.EventData + "\n";
            };

            Client.OnError += (sender, e) =>
            {
                AddRuntimeMessage(GH_RuntimeMessageLevel.Error, e.EventName + ": " + e.EventData);
                Log += DateTime.Now.ToString("dd:HH:mm:ss ") + e.EventData + "\n";
            };

            ExpireComponentAction = () => ExpireSolution(true);

            ObjectChanged += (sender, e) => UpdateMetadata();

            foreach (var param in Params.Input)
            {
                param.ObjectChanged += (sender, e) => UpdateMetadata();
            }

            MetadataSender = new System.Timers.Timer(1000)
            {
                AutoReset = false, Enabled = false
            };
            MetadataSender.Elapsed += MetadataSender_Elapsed;

            DataSender = new System.Timers.Timer(2000)
            {
                AutoReset = false, Enabled = false
            };
            DataSender.Elapsed += DataSender_Elapsed;

            ObjectCache = new Dictionary <string, SpeckleObject>();

            Grasshopper.Instances.DocumentServer.DocumentRemoved += DocumentServer_DocumentRemoved;
        }
Example #5
0
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            if (Client == null)
            {
                Account account = null;
                try
                {
                    RestApi = account.RestApi;
                    Client  = new SpeckleApiClient(account.RestApi);
                    Client.IntializeSender(account.Token, "docName", "Revit_Datasmith", "").ContinueWith(task =>
                                                                                                         { });
                }
                catch (Exception err)
                {
                }

                if (account == null)
                {
                    var signInWindow = new SpecklePopup.SignInWindow(true);

                    signInWindow.ShowDialog();

                    if (signInWindow.AccountListBox.SelectedIndex != -1)
                    {
                        account = signInWindow.accounts[signInWindow.AccountListBox.SelectedIndex];
                        RestApi = account.RestApi;
                        Client  = new SpeckleApiClient(account.RestApi);
                        Client.IntializeSender(account.Token, "docName", "Revit_Datasmith", "").ContinueWith(task =>
                                                                                                             { });
                    }
                    else
                    {
                        return(Result.Cancelled);
                    }
                }
            }
            else
            {
            }

            Client.OnReady += (sender, e) =>
            {
                StreamId = Client.StreamId;
            };

            MetadataSender = new System.Timers.Timer(1000)
            {
                AutoReset = false, Enabled = false
            };
            MetadataSender.Elapsed += MetadataSender_Elapsed;

            DataSender = new System.Timers.Timer(2000)
            {
                AutoReset = false, Enabled = false
            };
            DataSender.Elapsed += DataSender_Elapsed;

            ObjectCache = new Dictionary <string, SpeckleObject>();


            // Original datasmith form. Need to remove form.
            DatasmithRevitCommand dmrc = new DatasmithRevitCommand();

            dmrc.SpeckleCommand = this;
            dmrc.Execute(commandData, ref message, elements);



            //ForceUpdateData();


            return(Result.Succeeded);
        }