示例#1
0
        /// This app uses the windows registry to store config data for itself.
        ///     - creates a key for this DotNetZip Winforms app, if one does not exist
        ///     - stores and retrieves the most recent settings.
        ///     - this is done on a per user basis. (HKEY_CURRENT_USER)
        private void FillFormFromRegistry()
        {
            if (!stateLoaded)
            {
                if (AppCuKey != null)
                {
                    var s = (string)AppCuKey.GetValue(_rvn_DirectoryToZip);
                    if (s != null)
                    {
                        this.tbDirectoryToZip.Text     = s;
                        this.tbDirectoryInArchive.Text = System.IO.Path.GetFileName(this.tbDirectoryToZip.Text);
                    }

                    s = (string)AppCuKey.GetValue(_rvn_SelectionToZip);
                    if (s != null)
                    {
                        this.tbSelectionToZip.Text = s;
                    }

                    s = (string)AppCuKey.GetValue(_rvn_SelectionToExtract);
                    if (s != null)
                    {
                        this.tbSelectionToExtract.Text = s;
                    }

                    s = (string)AppCuKey.GetValue(_rvn_ZipTarget);
                    if (s != null)
                    {
                        this.tbZipToCreate.Text = s;
                    }

                    s = (string)AppCuKey.GetValue(_rvn_ZipToOpen);
                    if (s != null)
                    {
                        this.tbZipToOpen.Text = s;
                    }

                    s = (string)AppCuKey.GetValue(_rvn_ExtractLoc);
                    if (s != null)
                    {
                        this.tbExtractDir.Text = s;
                    }
                    else
                    {
                        this.tbExtractDir.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                    }

                    s = (string)AppCuKey.GetValue(_rvn_Encoding);
                    if (s != null)
                    {
                        SelectNamedEncoding(s);
                    }

                    s = (string)AppCuKey.GetValue(_rvn_Compression);
                    if (s != null)
                    {
                        SelectNamedCompressionLevel(s);
                    }
                    else
                    {
                        SelectNamedCompressionLevel("Default");
                    }

                    s = (string)AppCuKey.GetValue(_rvn_Encryption);
                    if (s != null)
                    {
                        SelectNamedEncryption(s);
                        this.tbPassword.Text = "";
                    }

                    int x = (Int32)AppCuKey.GetValue(_rvn_ZipFlavor, 0);
                    if (x >= 0 && x <= 2)
                    {
                        this.comboFlavor.SelectedIndex = x;
                    }

                    x = (Int32)AppCuKey.GetValue(_rvn_Zip64Option, 0);
                    if (x >= 0 && x <= 2)
                    {
                        this.comboZip64.SelectedIndex = x;
                    }

                    x = (Int32)AppCuKey.GetValue(_rvn_ExtractExistingFileAction, 0);
                    if (x >= 0 && x <= comboExistingFileAction.Items.Count)
                    {
                        this.comboExistingFileAction.SelectedIndex = x;
                    }

                    x = (Int32)AppCuKey.GetValue(_rvn_FormTab, 1);
                    if (x == 0 || x == 1)
                    {
                        this.tabControl1.SelectedIndex = x;
                    }

                    x = (Int32)AppCuKey.GetValue(_rvn_HidePassword, 1);
                    this.chkHidePassword.Checked = (x != 0);

                    x = (Int32)AppCuKey.GetValue(_rvn_OpenExplorer, 1);
                    this.chkOpenExplorer.Checked = (x != 0);

                    x = (Int32)AppCuKey.GetValue(_rvn_TraverseJunctions, 1);
                    this.chkTraverseJunctions.Checked = (x != 0);

                    x = (Int32)AppCuKey.GetValue(_rvn_RecurseDirs, 1);
                    this.chkRecurse.Checked = (x != 0);

                    x = (Int32)AppCuKey.GetValue(_rvn_RemoveFiles, 1);
                    this.chkRemoveFiles.Checked = (x != 0);


                    // get the MRU list of selection expressions
                    _selectionCompletions = new System.Windows.Forms.AutoCompleteStringCollection();
                    string history = (string)AppCuKey.GetValue(_rvn_SelectionCompletions, "");
                    if (!String.IsNullOrEmpty(history))
                    {
                        string[] items = history.Split('¡');
                        if (items != null && items.Length > 0)
                        {
                            foreach (string item in items)
                            {
                                _selectionCompletions.Add(item.XmlUnescapeIexcl());
                            }
                        }
                    }



                    // set the geometry of the form
                    s = (string)AppCuKey.GetValue(_rvn_Geometry);
                    if (!String.IsNullOrEmpty(s))
                    {
                        int[] p = Array.ConvertAll <string, int>(s.Split(','),
                                                                 new Converter <string, int>((t) => { return(Int32.Parse(t)); }));
                        if (p != null && p.Length == 5)
                        {
                            this.Bounds = ConstrainToScreen(new System.Drawing.Rectangle(p[0], p[1], p[2], p[3]));

                            // Starting a window minimized is confusing...
                            //this.WindowState = (FormWindowState)p[4];
                        }
                    }

                    AppCuKey.Close();
                    AppCuKey = null;

                    tbPassword_TextChanged(null, null);

                    stateLoaded = true;
                }
            }
        }
示例#2
0
        private void SaveFormToRegistry()
        {
            if (this.tbExtractDir.InvokeRequired)
            {
                return;                                   // skip it
            }
            if (AppCuKey != null)
            {
                AppCuKey.SetValue(_rvn_DirectoryToZip, this.tbDirectoryToZip.Text);
                AppCuKey.SetValue(_rvn_SelectionToZip, this.tbSelectionToZip.Text);
                AppCuKey.SetValue(_rvn_SelectionToExtract, this.tbSelectionToExtract.Text);
                AppCuKey.SetValue(_rvn_ZipTarget, this.tbZipToCreate.Text);
                AppCuKey.SetValue(_rvn_ZipToOpen, this.tbZipToOpen.Text);
                AppCuKey.SetValue(_rvn_Encoding, this.comboEncoding.SelectedItem.ToString());
                AppCuKey.SetValue(_rvn_Compression, this.comboCompression.SelectedItem.ToString());
                if (this.tbPassword.Text == "")
                {
                    if (!String.IsNullOrEmpty(_mostRecentEncryption))
                    {
                        AppCuKey.SetValue(_rvn_Encryption, _mostRecentEncryption);
                    }
                }
                else
                {
                    AppCuKey.SetValue(_rvn_Encryption, this.comboEncryption.SelectedItem.ToString());
                }

                AppCuKey.SetValue(_rvn_ExtractLoc, this.tbExtractDir.Text);

                int x = this.comboFlavor.SelectedIndex;
                AppCuKey.SetValue(_rvn_ZipFlavor, x);

                x = this.comboZip64.SelectedIndex;
                AppCuKey.SetValue(_rvn_Zip64Option, x);

                x = this.comboExistingFileAction.SelectedIndex;
                AppCuKey.SetValue(_rvn_ExtractExistingFileAction, x);

                AppCuKey.SetValue(_rvn_FormTab, this.tabControl1.SelectedIndex);

                AppCuKey.SetValue(_rvn_LastRun, System.DateTime.Now.ToString("yyyy MMM dd HH:mm:ss"));
                x = (Int32)AppCuKey.GetValue(_rvn_Runs, 0);
                x++;
                AppCuKey.SetValue(_rvn_Runs, x);

                AppCuKey.SetValue(_rvn_HidePassword, this.chkHidePassword.Checked ? 1 : 0);
                AppCuKey.SetValue(_rvn_OpenExplorer, this.chkOpenExplorer.Checked ? 1 : 0);
                AppCuKey.SetValue(_rvn_TraverseJunctions, this.chkTraverseJunctions.Checked ? 1 : 0);
                AppCuKey.SetValue(_rvn_RecurseDirs, this.chkRecurse.Checked ? 1 : 0);
                AppCuKey.SetValue(_rvn_RemoveFiles, this.chkRemoveFiles.Checked ? 1 : 0);

                // the selection completion list
                var    converted = _selectionCompletions.ToList().ConvertAll(z => z.XmlEscapeIexcl());
                string history   = String.Join("¡", converted.ToArray());
                AppCuKey.SetValue(_rvn_SelectionCompletions, history);


                // store the size of the form
                int w = 0, h = 0, left = 0, top = 0;
                if (this.Bounds.Width < this.MinimumSize.Width || this.Bounds.Height < this.MinimumSize.Height)
                {
                    // RestoreBounds is the size of the window prior to last minimize action.
                    // But the form may have been resized since then!
                    w    = this.RestoreBounds.Width;
                    h    = this.RestoreBounds.Height;
                    left = this.RestoreBounds.Location.X;
                    top  = this.RestoreBounds.Location.Y;
                }
                else
                {
                    w    = this.Bounds.Width;
                    h    = this.Bounds.Height;
                    left = this.Location.X;
                    top  = this.Location.Y;
                }
                AppCuKey.SetValue(_rvn_Geometry,
                                  String.Format("{0},{1},{2},{3},{4}",
                                                left, top, w, h, (int)this.WindowState));

                AppCuKey.Close();
            }
        }