/// <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"); } }
private void AddSpeckleMenu(object sender, ElapsedEventArgs e) { if (Grasshopper.Instances.DocumentEditor == null) { return; } if (MenuHasBeenAdded) { loadTimer.Stop(); return; } var speckleMenu = new ToolStripMenuItem("Speckle"); speckleMenu.DropDown.Items.Add("Speckle Account Manager", null, (s, a) => { var signInWindow = new SpecklePopup.SignInWindow(false); var helper = new System.Windows.Interop.WindowInteropHelper(signInWindow); helper.Owner = Rhino.RhinoApp.MainWindowHandle(); signInWindow.Show(); }); speckleMenu.DropDown.Items.Add(new ToolStripSeparator()); speckleMenu.DropDown.Items.Add("Speckle Home", null, (s, a) => { Process.Start(@"https://speckle.works"); }); speckleMenu.DropDown.Items.Add("Speckle Documentation", null, (s, a) => { Process.Start(@"https://speckle.works/docs/essentials/start"); }); speckleMenu.DropDown.Items.Add("Speckle Forum", null, (s, a) => { Process.Start(@"https://discourse.speckle.works"); }); try { var mainMenu = Grasshopper.Instances.DocumentEditor.MainMenuStrip; Grasshopper.Instances.DocumentEditor.Invoke(new Action(() => { mainMenu.Items.Insert(mainMenu.Items.Count - 2, speckleMenu); })); MenuHasBeenAdded = true; loadTimer.Stop(); } catch (Exception err) { Debug.WriteLine(err.Message); } }
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; }
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; }
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); }
public void Loaded(ViewLoadedParams viewLoadedParams) { //new node manager var nodeManagerViewModel = new NodeManagerViewModel(viewLoadedParams); _nodeManager = new NodeManager { Owner = viewLoadedParams.DynamoWindow, DataContext = nodeManagerViewModel }; var speckleMenu = new MenuItem { Header = "Speckle" }; var speckleAccountsMenu = new MenuItem { Header = "Manage Accounts" }; var speckleNodeManagerMenu = new MenuItem { Header = "Manage Speckle Nodes" }; var speckleSendReceiveNodesMenu = new MenuItem { Header = "Send/Receive nodes (experimental)" }; var speckleNodeSender = new MenuItem { Header = "Node Sender" }; var speckleNodeReceiver = new MenuItem { Header = "Node Receiver" }; //accounts speckleAccountsMenu.Click += (sender, args) => { //var viewModel = new SampleWindowViewModel(p); var window = new SpecklePopup.SignInWindow() { Owner = viewLoadedParams.DynamoWindow, WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner }; window.Show(); }; //node manager speckleNodeManagerMenu.Click += (sender, args) => { _nodeManager.Show(); }; //node sender click speckleNodeSender.Click += (sender, args) => { var viewModel = new SenderViewModel(viewLoadedParams); var window = new Sender() { Owner = viewLoadedParams.DynamoWindow, DataContext = viewModel }; window.ForceSend.Click += viewModel.Send_Click; window.Show(); }; //node receiver click speckleNodeReceiver.Click += (receiver, args) => { var viewModel = new ReceiverViewModel(viewLoadedParams); var window = new Receiver() { Owner = viewLoadedParams.DynamoWindow, DataContext = viewModel, }; window.StreamChanged += viewModel.StreamChanged; window.Show(); }; //sub menus speckleSendReceiveNodesMenu.Items.Add(speckleNodeReceiver); speckleSendReceiveNodesMenu.Items.Add(speckleNodeSender); //top level menus speckleMenu.Items.Add(speckleAccountsMenu); speckleMenu.Items.Add(speckleNodeManagerMenu); speckleMenu.Items.Add(speckleSendReceiveNodesMenu); viewLoadedParams.dynamoMenu.Items.Insert(viewLoadedParams.dynamoMenu.Items.Count - 1, speckleMenu); }