private GH_SettingsServer server; //GH_SettingsServer handles writing and reading from the preferences xml file. #endregion Fields #region Constructors //class constructor extending GH_Component - this is where the component name, nickname, description, category, and subcategory are defined. public GoogleAuthenticator() : base("Google Authenticator", "GAuth", "Use this component to authenticate with Google to gain access to your spreadsheets", Properties.Resources.AssemblyName, "Spreadsheets") { //on component creation, set up the settings server and initialize variables server = new GH_SettingsServer(PREFS_FILENAME); accessCode = ""; accessToken = server.GetValue(PREFS_TOKEN, ""); refreshToken = server.GetValue(PREFS_REFTOKEN, ""); loggedIn = !String.IsNullOrEmpty(accessToken) && !String.IsNullOrEmpty(refreshToken); UpdateMenu(); }
public static Signature getSignature() { GH_SettingsServer sserver = new GH_SettingsServer("ggit"); string username = sserver.GetValue("author", ""); string email = sserver.GetValue("email", ""); if (username == "" || email == "") { return(null); } Signature author = new Signature(username, email, DateTime.Now); return(author); }
private void PullRepository() { if (ActiveCanvas.Document == null) { return; } string docPath = ActiveCanvas.Document.FilePath; try { using (var repo = new Repository(getWorkDir(docPath))) { GH_SettingsServer sserver = new GH_SettingsServer("ggit"); string token = sserver.GetValue("AccessToken", ""); // Credential information to fetch PullOptions options = new PullOptions(); options.FetchOptions = new FetchOptions(); options.FetchOptions.CredentialsProvider = (_url, _user, _cred) => new UsernamePasswordCredentials { // TO DO Set AccessToken From Username = token, Password = string.Empty }; // User information to create a merge commit var signature = getSignature(); // Pull Commands.Pull(repo, signature, options); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public void SetupMenu(object sender, EventArgs e) { if (!settings.ConstainsEntry("state")) { DefaultSettings(); } bool state = settings.GetValue("state", false); int width = settings.GetValue("width", 400); int height = settings.GetValue("height", 300); string dock = settings.GetValue("dock", "topleft"); var editor = Instances.DocumentEditor; if (null == editor || editor.Handle == IntPtr.Zero) { return; } var controls = editor.Controls; if (null == controls || controls.Count == 0) { return; } _timer.Stop(); foreach (var ctrl2 in controls) { var menu = ctrl2 as Grasshopper.GUI.GH_MenuStrip; if (menu == null) { continue; } for (int i = 0; i < menu.Items.Count; i++) { var menuitem = menu.Items[i] as ToolStripMenuItem; if (menuitem != null && menuitem.Text == "Display") { for (int j = 0; j < menuitem.DropDownItems.Count; j++) { if (menuitem.DropDownItems[j].Text.StartsWith("canvas widgets", StringComparison.OrdinalIgnoreCase)) { viewportMenuItem = new ToolStripMenuItem("Canvas Viewport", Resources.picture, new EventHandler(OnToggle)); viewportMenuItem.ToolTipText = "Opens a docked window in Grasshopper that displays Rhino viewports.\r\n - Use the right-click menu to change display modes, views, and other settings."; viewportMenuItem.CheckOnClick = true; viewportMenuItem.Checked = state; if (state) { if (_viewportControlPanel == null) { _viewportControlPanel = new ViewportContainerPanel(); _viewportControlPanel.Size = new Size(width, height); _viewportControlPanel.MinimumSize = new Size(50, 50); _viewportControlPanel.Padding = new Padding(10); ctrl = new CanvasViewportControl(); ctrl.Dock = DockStyle.Fill; _viewportControlPanel.BorderStyle = BorderStyle.FixedSingle; UpdateViewport(false); _viewportControlPanel.Controls.Add(ctrl); _viewportControlPanel.Location = new Point(0, 0); Instances.ActiveCanvas.Controls.Add(_viewportControlPanel); if (dock == "topleft") { Dock(AnchorStyles.Top | AnchorStyles.Left); } if (dock == "bottomleft") { Dock(AnchorStyles.Bottom | AnchorStyles.Left); } if (dock == "bottomright") { Dock(AnchorStyles.Bottom | AnchorStyles.Right); } if (dock == "topright") { Dock(AnchorStyles.Top | AnchorStyles.Right); } } _viewportControlPanel.Show(); settings.SetValue("state", true); settings.WritePersistentSettings(); } else { if (_viewportControlPanel != null && _viewportControlPanel.Visible) { _viewportControlPanel.Hide(); settings.SetValue("state", false); settings.WritePersistentSettings(); } } viewportMenuItem.CheckedChanged += ViewportMenuItem_CheckedChanged; var canvasWidgets = menuitem.DropDownItems[j] as ToolStripMenuItem; if (canvasWidgets != null) { canvasWidgets.DropDownOpening += (s, args) => canvasWidgets.DropDownItems.Insert(0, viewportMenuItem); } break; } } break; } } } }
private void DocumentPush() { // TO DO nothing to push tip if (ActiveCanvas.Document == null) { return; } try { string docPath = ActiveCanvas.Document.FilePath; using (var repo = new Repository(getWorkDir(docPath))) { GH_SettingsServer sserver = new GH_SettingsServer("ggit"); if (repo.Network.Remotes["origin"] == null) { MessageBox.Show("Remote origin is not exist, create a repository remotely, something like github, and paste the url into next window form."); SingleInput inputer = new SingleInput(); inputer.Text = "Remote Url"; inputer.singleLabel.Text = "Remote Url"; inputer.ConfirmEvent += (sender, content) => { repo.Network.Remotes.Add("origin", content); inputer.Close(); }; inputer.ShowDialog(); return; } Remote remote = repo.Network.Remotes["origin"]; string token = sserver.GetValue("AccessToken", ""); if (token == "") { DialogResult choose = MessageBox.Show("Do you want to set a Personal Access Token to avoid input username and password for each push ?", "Access Token didn't exist", MessageBoxButtons.YesNoCancel); if (choose == DialogResult.OK) { MessageBox.Show("Remote origin is not exist, create a repository remotely, something like github, and paste the url into next window form."); SingleInput inputer = new SingleInput(); inputer.Text = "Access Token"; inputer.singleLabel.Text = "Token"; inputer.ConfirmEvent += (sender, accessToken) => { sserver.SetValue("AccessToken", accessToken); inputer.Close(); }; inputer.ShowDialog(); } else if (choose == DialogResult.No) { DoubleInput loginForm = new DoubleInput(); loginForm.Text = "Git login"; loginForm.label1.Text = "Username"; loginForm.input2.PasswordChar = '*'; loginForm.label2.Text = "Passowrd"; loginForm.ConfirmEvent += (sd, username, password) => { if (username == "") { MessageBox.Show("Username can't be empty."); return; } if (password == "") { MessageBox.Show("E-mail can't be empty."); return; } PushOptions options1 = new PushOptions(); options1.CredentialsProvider = (_url, _user, _cred) => new UsernamePasswordCredentials { // TO DO Set AccessToken From Username = username, Password = password }; repo.Network.Push(remote, @"refs/heads/master", options1); loginForm.Close(); }; loginForm.ShowDialog(); } return; } PushOptions options = new PushOptions(); options.CredentialsProvider = (_url, _user, _cred) => new UsernamePasswordCredentials { // TO DO Set AccessToken From Username = token, Password = string.Empty }; repo.Network.Push(remote, @"refs/heads/master", options); DocumentEditor.SetStatusBarEvent(new GH_RuntimeMessage("Push done !")); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }