示例#1
0
        public FrmEditEnvVar(string variableName, EnvironmentVariableTarget variableType)
        {
            InitializeComponent();
            this.MinimumSize       = new Size(327, 439);
            dgvValuesList.TabIndex = 0;
            LoadSettings();
            txtVariableName.CausesValidation = false;
            dgvHandler = new DgvHandler(ref dgvValuesList);

            // set default icon
            dgvValuesList_UserAddedRow(null, null);

            this.txtVariableName.Text = variableName;
            // remember current name
            this.variableName = variableName;
            this.variableType = variableType;
            validator         = new EnvVarValueValidator();

            if (txtVariableName.Text.Length != 0)
            {   // Check if we are editing variable
                LoadEnvironmentVariableValues();
            }

            // Set form title
            this.Text = (txtVariableName.Text.Length != 0
                ? "Edit" : "New") + " "
                        + (this.variableType == EnvironmentVariableTarget.Machine
                ? "System" : "User") + " Variable";

            #region Create DgvHandler Commands
            commandsList = new UndoRedoCommandList();
            dgvHandler.SetCurrentCell(0);
            editVarNameCommand = new EditVarNameCommand(txtVariableName);
            #endregion DgvHandler Commands

            // disable buttons
            SetBtnState();
            txtVariableName.CausesValidation = true;
            isVarNameChanged = false;

            // Open/Save File dialogs
            openFileDialog.Filter     = FILE_FILTER;
            openFileDialog.DefaultExt = DEFAULT_FILTER_EXTENSION;
            saveFileDialog.Filter     = FILE_FILTER;
            saveFileDialog.DefaultExt = DEFAULT_FILTER_EXTENSION;
        }
示例#2
0
        private void LocateInWindowsExplorer( )
        {
            EnvVarValueValidator validator = new EnvVarValueValidator();
            string varValue = string.Empty;

            foreach (DataGridViewRow row in dgvValuesList.SelectedRows)
            {
                if (row.Index != dgvValuesList.Rows.Count - 1)
                {
                    DataGridViewCell cell = row.Cells[1];
                    varValue = (cell.Value.ToString().Contains("%")) ? cell.ToolTipText : cell.Value.ToString();
                    switch (validator.ValueType(varValue))
                    {
                    case EnvironmentValueType.Folder:
                    {           // Open Folder in Windows Explorer
                        LocateInWindowsExplorer(varValue);
                    }
                    break;

                    case EnvironmentValueType.File:
                    {           // Select File in Windows Explorer
                        LocateInWindowsExplorer("/select," + varValue);
                    }
                    break;

                    case EnvironmentValueType.Error:
                    {           // Select existing folder in the path
                        string parentDir = Path.GetDirectoryName(varValue);
                        while (!Directory.Exists(parentDir))
                        {
                            parentDir = Path.GetDirectoryName(parentDir);
                        }
                        // Open Folder in Explorer
                        LocateInWindowsExplorer(parentDir);
                    }
                    break;

                    default:
                        // TODO: Remove for multiple rows
                        MessageBox.Show("Nothing to locate in Windows Explorer", "Validation", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        break;
                    }
                }
            }
        }
示例#3
0
        private void LoadEnvironmentVariables(DataGridView dgv, EnvironmentVariableTarget target)
        {
            EnvVarValueValidator validator = new EnvVarValueValidator();
            int currentRowIndex            = (dgv.CurrentRow != null ? dgv.CurrentRow.Index : 0);

            dgv.Rows.Clear();
            int rowIndex = 0;

            IDictionary environmentVariables = variableManger.GetEnvVariables(target);

            foreach (DictionaryEntry de in environmentVariables)
            {
                string[] row = { de.Key.ToString(), de.Value.ToString() };

                rowIndex = dgv.Rows.Add(row);

                // validate variable value and show row in red if invalid
                if (!validator.Validate(de.Value.ToString()))
                {
                    dgv.Rows[rowIndex].Cells[0].Style.ForeColor = Color.Red;
                    dgv.Rows[rowIndex].Cells[1].Style.ForeColor = Color.Red;
                }
            }

            dgv.Sort(dgv.Columns[0], ListSortDirection.Ascending);
            try
            {
                dgv.CurrentCell = dgv[0, currentRowIndex];
                dgv.FirstDisplayedScrollingRowIndex = currentRowIndex;
            }
            catch
            {   // if row was deleted this will set it to first one
                // TODO: Implement this by searching for var name in the grid.
                // Catching Exceptions makes program slow
                dgv.CurrentCell = dgv[0, 0];
                dgv.FirstDisplayedScrollingRowIndex = 0;
            }
        }