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();
        }
示例#2
0
        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);
        }
示例#3
0
        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;
                    }
                }
            }
        }
示例#5
0
        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);
            }
        }