Ejemplo n.º 1
0
        private void AddNewScreen()
        {
            if (InputValid())
            {
                TrimInput();

                if (ScreenCollection.GetByName(textBoxName.Text) == null)
                {
                    ScreenCollection.Add(new Screen(
                                             textBoxName.Text,
                                             FileSystem.CorrectScreenshotsFolderPath(textBoxFolder.Text),
                                             textBoxMacro.Text,
                                             comboBoxScreenComponent.SelectedIndex,
                                             ImageFormatCollection.GetByName(comboBoxFormat.Text),
                                             (int)numericUpDownJpegQuality.Value,
                                             (int)numericUpDownResolutionRatio.Value,
                                             checkBoxMouse.Checked));

                    Okay();
                }
                else
                {
                    MessageBox.Show("A screen with this name already exists.", "Duplicate Name Conflict",
                                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else
            {
                MessageBox.Show("Please enter valid input for each field.", "Invalid Input", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 2
0
        private bool SaveScreenshot(Bitmap bitmap, Region region)
        {
            if (bitmap == null)
            {
                return(false);
            }

            Screenshot screenshot = new Screenshot(_screenCapture.ActiveWindowTitle, _screenCapture.DateTimeScreenshotsTaken)
            {
                ViewId      = region.ViewId,
                Path        = FileSystem.CorrectScreenshotsFolderPath(MacroParser.ParseTags(config: false, region.Folder, _formMacroTag.MacroTagCollection)) + MacroParser.ParseTags(preview: false, config: false, region.Name, region.Macro, -1, region.Format, _screenCapture.ActiveWindowTitle, _formMacroTag.MacroTagCollection),
                Bitmap      = bitmap,
                Format      = region.Format,
                ProcessName = _screenCapture.ActiveWindowProcessName + ".exe",
                Label       = checkBoxScreenshotLabel.Checked ? comboBoxScreenshotLabel.Text : string.Empty
            };

            if (_screenCapture.SaveScreenshot(region.JpegQuality, screenshot, _screenshotCollection))
            {
                ScreenshotTakenWithSuccess();

                return(true);
            }
            else
            {
                ScreenshotTakenWithFailure();

                return(false);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Saves the screens.
        /// </summary>
        public void Save()
        {
            try
            {
                XmlWriterSettings xSettings = new XmlWriterSettings();
                xSettings.Indent           = true;
                xSettings.CloseOutput      = true;
                xSettings.CheckCharacters  = true;
                xSettings.Encoding         = Encoding.UTF8;
                xSettings.NewLineChars     = Environment.NewLine;
                xSettings.IndentChars      = XML_FILE_INDENT_CHARS;
                xSettings.NewLineHandling  = NewLineHandling.Entitize;
                xSettings.ConformanceLevel = ConformanceLevel.Document;

                if (File.Exists(FileSystem.ScreensFile))
                {
                    File.Delete(FileSystem.ScreensFile);
                }

                using (XmlWriter xWriter =
                           XmlWriter.Create(FileSystem.ScreensFile, xSettings))
                {
                    xWriter.WriteStartDocument();
                    xWriter.WriteStartElement(XML_FILE_ROOT_NODE);
                    xWriter.WriteAttributeString("app", "version", XML_FILE_ROOT_NODE, Settings.ApplicationVersion);
                    xWriter.WriteAttributeString("app", "codename", XML_FILE_ROOT_NODE, Settings.ApplicationCodename);
                    xWriter.WriteStartElement(XML_FILE_SCREENS_NODE);

                    foreach (object obj in _screenList)
                    {
                        Screen screen = (Screen)obj;

                        xWriter.WriteStartElement(XML_FILE_SCREEN_NODE);
                        xWriter.WriteElementString(SCREEN_VIEWID, screen.ViewId.ToString());
                        xWriter.WriteElementString(SCREEN_NAME, screen.Name);
                        xWriter.WriteElementString(SCREEN_FOLDER, FileSystem.CorrectScreenshotsFolderPath(screen.Folder));
                        xWriter.WriteElementString(SCREEN_MACRO, screen.Macro);
                        xWriter.WriteElementString(SCREEN_COMPONENT, screen.Component.ToString());
                        xWriter.WriteElementString(SCREEN_FORMAT, screen.Format.Name);
                        xWriter.WriteElementString(SCREEN_JPEG_QUALITY, screen.JpegQuality.ToString());
                        xWriter.WriteElementString(SCREEN_RESOLUTION_RATIO, screen.ResolutionRatio.ToString());
                        xWriter.WriteElementString(SCREEN_MOUSE, screen.Mouse.ToString());

                        xWriter.WriteEndElement();
                    }

                    xWriter.WriteEndElement();
                    xWriter.WriteEndElement();
                    xWriter.WriteEndDocument();

                    xWriter.Flush();
                    xWriter.Close();
                }
            }
            catch (Exception ex)
            {
                Log.Write("ScreenCollection::Save", ex);
            }
        }
Ejemplo n.º 4
0
        private void RunRegionCaptures()
        {
            try
            {
                foreach (Region region in _formRegion.RegionCollection)
                {
                    if (region.Active)
                    {
                        MacroParser.screenCapture = _screenCapture;

                        if (!string.IsNullOrEmpty(_screenCapture.ActiveWindowTitle))
                        {
                            // Do not contiune if the active window title needs to be checked and the active window title
                            // does not contain the text defined in "Active Window Title Capture Text" and CaptureNow is false.
                            // CaptureNow could be set to "true" during a "Capture Now / Archive" or "Capture Now / Edit" option
                            // so, in that case, we want to capture the screen and save the screenshot regardless of the title text.
                            if (checkBoxActiveWindowTitle.Checked && !string.IsNullOrEmpty(textBoxActiveWindowTitle.Text) &&
                                !_screenCapture.ActiveWindowTitle.ToLower().Contains(textBoxActiveWindowTitle.Text.ToLower()) &&
                                !_screenCapture.CaptureNow)
                            {
                                return;
                            }

                            _screenCapture.CaptureNow = false;

                            if (_screenCapture.GetScreenImages(-1, region.X, region.Y, region.Width, region.Height, region.Mouse, region.ResolutionRatio, out Bitmap bitmap))
                            {
                                if (_screenCapture.SaveScreenshot(
                                        path: FileSystem.CorrectScreenshotsFolderPath(MacroParser.ParseTags(config: false, region.Folder, _formTag.TagCollection)) + MacroParser.ParseTags(preview: false, config: false, region.Name, region.Macro, -1, region.Format, _screenCapture.ActiveWindowTitle, _formTag.TagCollection),
                                        format: region.Format,
                                        component: -1,
                                        screenshotType: ScreenshotType.Region,
                                        jpegQuality: region.JpegQuality,
                                        viewId: region.ViewId,
                                        bitmap: bitmap,
                                        label: checkBoxScreenshotLabel.Checked ? comboBoxScreenshotLabel.Text : string.Empty,
                                        windowTitle: _screenCapture.ActiveWindowTitle,
                                        processName: _screenCapture.ActiveWindowProcessName,
                                        screenshotCollection: _screenshotCollection
                                        ))
                                {
                                    ScreenshotTakenWithSuccess();
                                }
                                else
                                {
                                    ScreenshotTakenWithFailure();
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _screenCapture.ApplicationError = true;
                Log.WriteExceptionMessage("FormMain-Regions::RunRegionCaptures", ex);
            }
        }
Ejemplo n.º 5
0
        private void RunRegionCaptures()
        {
            try
            {
                Log.WriteDebugMessage(":: RunRegionCaptures Start ::");

                foreach (Region region in formRegion.RegionCollection)
                {
                    if (region.Active)
                    {
                        MacroParser.screenCapture = _screenCapture;

                        if (!string.IsNullOrEmpty(_screenCapture.ActiveWindowTitle))
                        {
                            // Do not contiune if the active window title needs to be checked and the active window title
                            // does not contain the text defined in "Active Window Title Capture Text".
                            if (region.ActiveWindowTitleCaptureCheck && !string.IsNullOrEmpty(region.ActiveWindowTitleCaptureText) &&
                                !_screenCapture.ActiveWindowTitle.ToLower().Contains(region.ActiveWindowTitleCaptureText.ToLower()))
                            {
                                return;
                            }

                            if (_screenCapture.GetScreenImages(-1, region.X, region.Y, region.Width, region.Height, region.Mouse, region.ResolutionRatio, out Bitmap bitmap))
                            {
                                if (_screenCapture.SaveScreenshot(
                                        path: FileSystem.CorrectScreenshotsFolderPath(MacroParser.ParseTags(region.Folder, formTag.TagCollection)) + MacroParser.ParseTags(preview: false, region.Name, region.Macro, -1, region.Format, _screenCapture.ActiveWindowTitle, formTag.TagCollection),
                                        format: region.Format,
                                        component: -1,
                                        screenshotType: ScreenshotType.Region,
                                        jpegQuality: region.JpegQuality,
                                        viewId: region.ViewId,
                                        bitmap: bitmap,
                                        label: checkBoxScreenshotLabel.Checked ? comboBoxScreenshotLabel.Text : string.Empty,
                                        windowTitle: _screenCapture.ActiveWindowTitle,
                                        processName: _screenCapture.ActiveWindowProcessName,
                                        screenshotCollection: _screenshotCollection
                                        ))
                                {
                                    ScreenshotTakenWithSuccess();
                                }
                                else
                                {
                                    ScreenshotTakenWithFailure();
                                }
                            }
                        }
                    }
                }

                Log.WriteDebugMessage(":: RunRegionCaptures End ::");
            }
            catch (Exception ex)
            {
                Log.WriteExceptionMessage("FormMain-Regions::RunRegionCaptures", ex);
            }
        }
Ejemplo n.º 6
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="name"></param>
 /// <param name="folder"></param>
 /// <param name="macro"></param>
 /// <param name="component"></param>
 /// <param name="format"></param>
 /// <param name="jpegQuality"></param>
 /// <param name="resolutionRatio"></param>
 /// <param name="mouse"></param>
 public Screen(string name, string folder, string macro, int component, ImageFormat format, int jpegQuality, int resolutionRatio, bool mouse)
 {
     ViewId          = Guid.NewGuid();
     Name            = name;
     Folder          = FileSystem.CorrectScreenshotsFolderPath(folder);
     Macro           = macro;
     Component       = component;
     Format          = format;
     JpegQuality     = jpegQuality;
     ResolutionRatio = resolutionRatio;
     Mouse           = mouse;
 }
Ejemplo n.º 7
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="name"></param>
 /// <param name="folder"></param>
 /// <param name="macro"></param>
 /// <param name="format"></param>
 /// <param name="jpegQuality"></param>
 /// <param name="resolutionRatio"></param>
 /// <param name="mouse"></param>
 /// <param name="x"></param>
 /// <param name="y"></param>
 /// <param name="width"></param>
 /// <param name="height"></param>
 public Region(string name, string folder, string macro, ImageFormat format, int jpegQuality, int resolutionRatio, bool mouse, int x, int y, int width, int height)
 {
     ViewId          = Guid.NewGuid();
     Name            = name;
     Folder          = FileSystem.CorrectScreenshotsFolderPath(folder);
     Macro           = macro;
     Format          = format;
     JpegQuality     = jpegQuality;
     ResolutionRatio = resolutionRatio;
     Mouse           = mouse;
     X      = x;
     Y      = y;
     Width  = width;
     Height = height;
 }
Ejemplo n.º 8
0
        private void ChangeRegion()
        {
            if (InputValid())
            {
                if (NameChanged() || InputChanged())
                {
                    TrimInput();

                    if (RegionCollection.GetByName(textBoxName.Text) != null && NameChanged())
                    {
                        MessageBox.Show("A region with this name already exists.", "Duplicate Name Conflict",
                                        MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    else
                    {
                        RegionCollection.Get(RegionObject).Name            = textBoxName.Text;
                        RegionCollection.Get(RegionObject).Folder          = FileSystem.CorrectScreenshotsFolderPath(textBoxFolder.Text);
                        RegionCollection.Get(RegionObject).Macro           = textBoxMacro.Text;
                        RegionCollection.Get(RegionObject).Format          = ImageFormatCollection.GetByName(comboBoxFormat.Text);
                        RegionCollection.Get(RegionObject).JpegQuality     = (int)numericUpDownJpegQuality.Value;
                        RegionCollection.Get(RegionObject).ResolutionRatio = (int)numericUpDownResolutionRatio.Value;
                        RegionCollection.Get(RegionObject).Mouse           = checkBoxMouse.Checked;
                        RegionCollection.Get(RegionObject).X      = (int)numericUpDownX.Value;
                        RegionCollection.Get(RegionObject).Y      = (int)numericUpDownY.Value;
                        RegionCollection.Get(RegionObject).Width  = (int)numericUpDownWidth.Value;
                        RegionCollection.Get(RegionObject).Height = (int)numericUpDownHeight.Value;
                        RegionCollection.Get(RegionObject).Active = checkBoxActive.Checked;
                        RegionCollection.Get(RegionObject).ActiveWindowTitleCaptureCheck = checkBoxActiveWindowTitle.Checked;
                        RegionCollection.Get(RegionObject).ActiveWindowTitleCaptureText  = textBoxActiveWindowTitle.Text;

                        Okay();
                    }
                }
                else
                {
                    Close();
                }
            }
            else
            {
                MessageBox.Show("Please enter valid input for each field.", "Invalid Input", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 9
0
        private void AddScreen()
        {
            if (InputValid())
            {
                TrimInput();

                if (ScreenCollection.GetByName(textBoxScreenName.Text) == null)
                {
                    ScreenCollection.Add(new Screen()
                    {
                        ViewId          = Guid.NewGuid(),
                        Name            = textBoxScreenName.Text,
                        Folder          = FileSystem.CorrectScreenshotsFolderPath(textBoxFolder.Text),
                        Macro           = textBoxMacro.Text,
                        Component       = comboBoxScreenComponent.SelectedIndex,
                        Format          = ImageFormatCollection.GetByName(comboBoxFormat.Text),
                        JpegQuality     = (int)numericUpDownJpegQuality.Value,
                        ResolutionRatio = (int)numericUpDownResolutionRatio.Value,
                        Mouse           = checkBoxMouse.Checked,
                        Active          = checkBoxActive.Checked,
                        X      = (int)numericUpDownX.Value,
                        Y      = (int)numericUpDownY.Value,
                        Width  = (int)numericUpDownWidth.Value,
                        Height = (int)numericUpDownHeight.Value,
                        Source = comboBoxScreenSource.SelectedIndex
                    });

                    Okay();
                }
                else
                {
                    MessageBox.Show("A screen with this name already exists.", "Duplicate Name Conflict",
                                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else
            {
                MessageBox.Show("Please enter valid input for each field.", "Invalid Input", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// The event method used by "Region Select / Auto Save".
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void _formRegionSelectWithMouse_RegionSelectAutoSaveMouseSelectionCompleted(object sender, EventArgs e)
        {
            int x      = _formRegionSelectWithMouse.outputX + 1;
            int y      = _formRegionSelectWithMouse.outputY + 1;
            int width  = _formRegionSelectWithMouse.outputWidth - 2;
            int height = _formRegionSelectWithMouse.outputHeight - 2;

            string autoSaveFolder = textBoxAutoSaveFolder.Text;
            string autoSaveMacro  = textBoxAutoSaveMacro.Text;

            ImageFormat imageFormat = new ImageFormat(ImageFormatSpec.NAME_JPEG, ImageFormatSpec.EXTENSION_JPEG);

            if (_screenCapture.GetScreenImages(-1, x, y, width, height, mouse: false, resolutionRatio: 100, out Bitmap bitmap))
            {
                DateTime dtNow = DateTime.Now;

                _screenCapture.DateTimeScreenshotsTaken = dtNow;
                _screenCapture.ActiveWindowTitle        = "*** Auto Screen Capture - Region Select / Auto Save ***";

                if (_screenCapture.SaveScreenshot(
                        path: FileSystem.CorrectScreenshotsFolderPath(MacroParser.ParseTags(config: false, autoSaveFolder, _formTag.TagCollection)) + MacroParser.ParseTags(preview: false, config: false, DateTime.Now.ToString(MacroParser.DateFormat), autoSaveMacro, -1, imageFormat, _screenCapture.ActiveWindowTitle, _formTag.TagCollection),
                        format: imageFormat,
                        component: -1,
                        screenshotType: ScreenshotType.Region,
                        jpegQuality: 100,
                        viewId: new Guid(),
                        bitmap: bitmap,
                        label: checkBoxScreenshotLabel.Checked ? comboBoxScreenshotLabel.Text : string.Empty,
                        windowTitle: _screenCapture.ActiveWindowTitle,
                        processName: _screenCapture.ActiveWindowProcessName,
                        screenshotCollection: _screenshotCollection
                        ))
                {
                    ScreenshotTakenWithSuccess();
                }
                else
                {
                    ScreenshotTakenWithFailure();
                }
            }
        }
Ejemplo n.º 11
0
        private void AddNewRegion()
        {
            if (InputValid())
            {
                TrimInput();

                if (RegionCollection.GetByName(textBoxName.Text) == null)
                {
                    RegionCollection.Add(new Region()
                    {
                        Name            = textBoxName.Text,
                        Folder          = FileSystem.CorrectScreenshotsFolderPath(textBoxFolder.Text),
                        Macro           = textBoxMacro.Text,
                        Format          = ImageFormatCollection.GetByName(comboBoxFormat.Text),
                        JpegQuality     = (int)numericUpDownJpegQuality.Value,
                        ResolutionRatio = (int)numericUpDownResolutionRatio.Value,
                        Mouse           = checkBoxMouse.Checked,
                        X      = (int)numericUpDownX.Value,
                        Y      = (int)numericUpDownY.Value,
                        Width  = (int)numericUpDownWidth.Value,
                        Height = (int)numericUpDownHeight.Value,
                        Active = checkBoxActive.Checked,
                        ActiveWindowTitleCaptureCheck = checkBoxActiveWindowTitle.Checked,
                        ActiveWindowTitleCaptureText  = textBoxActiveWindowTitle.Text
                    });

                    Okay();
                }
                else
                {
                    MessageBox.Show("A region with this name already exists.", "Duplicate Name Conflict",
                                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else
            {
                MessageBox.Show("Please enter valid input for each field.", "Invalid Input", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 12
0
        private void ChangeScreen()
        {
            if (InputValid())
            {
                if (NameChanged() || InputChanged())
                {
                    TrimInput();

                    if (ScreenCollection.GetByName(textBoxScreenName.Text) != null && NameChanged())
                    {
                        MessageBox.Show("A screen with this name already exists.", "Duplicate Name Conflict",
                                        MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    else
                    {
                        ScreenCollection.Get(ScreenObject).Name            = textBoxScreenName.Text;
                        ScreenCollection.Get(ScreenObject).Folder          = FileSystem.CorrectScreenshotsFolderPath(textBoxFolder.Text);
                        ScreenCollection.Get(ScreenObject).Macro           = textBoxMacro.Text;
                        ScreenCollection.Get(ScreenObject).Component       = comboBoxScreenComponent.SelectedIndex;
                        ScreenCollection.Get(ScreenObject).Format          = ImageFormatCollection.GetByName(comboBoxFormat.Text);
                        ScreenCollection.Get(ScreenObject).JpegQuality     = (int)numericUpDownJpegQuality.Value;
                        ScreenCollection.Get(ScreenObject).ResolutionRatio = (int)numericUpDownResolutionRatio.Value;
                        ScreenCollection.Get(ScreenObject).Mouse           = checkBoxMouse.Checked;
                        ScreenCollection.Get(ScreenObject).Active          = checkBoxActive.Checked;

                        Okay();
                    }
                }
                else
                {
                    Close();
                }
            }
            else
            {
                MessageBox.Show("Please enter valid input for each field.", "Invalid Input", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 13
0
        private void FormScreen_Load(object sender, EventArgs e)
        {
            textBoxScreenName.Focus();

            HelpMessage("This is where to configure a screen capture. Select a source, component, and capture method then adjust the display properties and image attributes");

            _toolTip.SetToolTip(checkBoxMouse, "You can include the mouse pointer in your screenshots if the \"Include mouse pointer\" option is checked");
            _toolTip.SetToolTip(comboBoxFormat, "Change the image format for the screenshots taken by this screen capture. JPEG is the recommended image format");
            _toolTip.SetToolTip(checkBoxEnable, "You can capture this screen if Enable is checked (turned on)");
            _toolTip.SetToolTip(buttonScreenBrowseFolder, "Browse for a folder where screenshots of this screen capture will be saved to");
            _toolTip.SetToolTip(buttonMacroTags, "Open a list of available macro tags. You can keep the Macro Tags window open while you modify your filename pattern in the Macro field");
            _toolTip.SetToolTip(checkBoxAutoAdapt, "The position and size will automatically adjust based on changes to your display setup");
            _toolTip.SetToolTip(checkBoxEncrypt, "Screenshots can be encrypted so only you can view each screenshot with Auto Screen Capture");

            comboBoxFormat.Items.Clear();

            labelScreenSource.Enabled    = true;
            labelScreenComponent.Enabled = true;

            comboBoxScreenSource.Enabled    = true;
            comboBoxScreenComponent.Enabled = true;

            labelX.Enabled      = true;
            labelY.Enabled      = true;
            labelWidth.Enabled  = true;
            labelHeight.Enabled = true;

            numericUpDownX.Enabled      = true;
            numericUpDownY.Enabled      = true;
            numericUpDownWidth.Enabled  = true;
            numericUpDownHeight.Enabled = true;

            pictureBoxPreview.Image = null;

            foreach (ImageFormat imageFormat in ImageFormatCollection)
            {
                comboBoxFormat.Items.Add(imageFormat.Name);
            }

            comboBoxScreenSource.Items.Clear();
            comboBoxScreenSource.Items.Add("Auto Screen Capture");
            comboBoxScreenSource.Items.Add("EnumDisplaySettings (user32.dll)");
            comboBoxScreenSource.Items.Add("System.Windows.Forms.Screen (.NET)");

            comboBoxScreenCaptureMethod.Items.Clear();
            comboBoxScreenCaptureMethod.Items.Add("System.Drawing.Graphics.CopyFromScreen (.NET)");
            comboBoxScreenCaptureMethod.Items.Add("BitBlt (gdi32.dll)");

            if (ScreenObject != null)
            {
                Text = "Configure Screen";

                textBoxScreenName.Text                    = ScreenObject.Name;
                textBoxFolder.Text                        = _fileSystem.CorrectScreenshotsFolderPath(ScreenObject.Folder);
                textBoxMacro.Text                         = ScreenObject.Macro;
                comboBoxScreenSource.SelectedIndex        = ScreenObject.Source;
                comboBoxScreenCaptureMethod.SelectedIndex = ScreenObject.CaptureMethod;
                comboBoxFormat.SelectedItem               = ScreenObject.Format.Name;
                numericUpDownJpegQuality.Value            = ScreenObject.JpegQuality;
                checkBoxMouse.Checked                     = ScreenObject.Mouse;
                checkBoxEnable.Checked                    = ScreenObject.Enable;
                numericUpDownX.Value                      = ScreenObject.X;
                numericUpDownY.Value                      = ScreenObject.Y;
                numericUpDownWidth.Value                  = ScreenObject.Width;
                numericUpDownHeight.Value                 = ScreenObject.Height;

                // AutoAdapt
                _autoAdaptIndex           = ScreenObject.AutoAdaptIndex;
                checkBoxAutoAdapt.Checked = ScreenObject.AutoAdapt;

                checkBoxEncrypt.Checked = ScreenObject.Encrypt;
            }
            else
            {
                Text = "Add Screen";

                textBoxScreenName.Text                    = "Screen " + (ScreenCollection.Count + 1);
                textBoxFolder.Text                        = _fileSystem.ScreenshotsFolder;
                textBoxMacro.Text                         = _fileSystem.FilenamePattern;
                comboBoxScreenSource.SelectedIndex        = 0;
                comboBoxScreenCaptureMethod.SelectedIndex = 0;
                comboBoxFormat.SelectedItem               = ScreenCapture.ImageFormat;
                numericUpDownJpegQuality.Value            = 100;
                checkBoxMouse.Checked                     = true;
                checkBoxEnable.Checked                    = true;
                numericUpDownX.Value                      = 0;
                numericUpDownY.Value                      = 0;
                numericUpDownWidth.Value                  = 0;
                numericUpDownHeight.Value                 = 0;

                // AutoAdapt
                int nextAdaptIndexToUseForNewScreen = 0;

                foreach (Screen screen in ScreenCollection)
                {
                    if (screen.AutoAdapt)
                    {
                        nextAdaptIndexToUseForNewScreen++;
                    }
                }

                _autoAdaptIndex           = nextAdaptIndexToUseForNewScreen;
                checkBoxAutoAdapt.Checked = false;

                checkBoxEncrypt.Checked = false;
            }

            UpdatePreviewMacro();
            UpdatePreviewImage(_screenCapture);
        }
Ejemplo n.º 14
0
        private void FormScreen_Load(object sender, EventArgs e)
        {
            comboBoxFormat.Items.Clear();
            comboBoxScreenComponent.Items.Clear();
            comboBoxTags.DataSource = null;

            pictureBoxPreview.Image = null;

            // *** Macro Tags ***
            comboBoxTags.DisplayMember = "Description";
            comboBoxTags.ValueMember   = "Name";
            comboBoxTags.DataSource    = MacroTagCollection.GetList();
            // ******************

            foreach (ImageFormat imageFormat in ImageFormatCollection)
            {
                comboBoxFormat.Items.Add(imageFormat.Name);
            }

            comboBoxScreenComponent.Items.Add("Active Window");

            for (int i = 1; i <= ScreenDictionary.Count; i++)
            {
                System.Windows.Forms.Screen screen = ScreenDictionary[i];
                comboBoxScreenComponent.Items.Add("Screen " + i + " (" + screen.Bounds.Width + " x " + screen.Bounds.Height + ")");
            }

            if (ScreenObject != null)
            {
                Text = "Change Screen";

                textBoxName.Text   = ScreenObject.Name;
                textBoxFolder.Text = FileSystem.CorrectScreenshotsFolderPath(ScreenObject.Folder);
                textBoxMacro.Text  = ScreenObject.Macro;

                if (ScreenObject.Component < comboBoxScreenComponent.Items.Count)
                {
                    SetControls(enabled: true);
                    comboBoxScreenComponent.SelectedIndex = ScreenObject.Component;
                }
                else
                {
                    SetControls(enabled: false);
                }

                comboBoxFormat.SelectedItem        = ScreenObject.Format.Name;
                numericUpDownJpegQuality.Value     = ScreenObject.JpegQuality;
                numericUpDownResolutionRatio.Value = ScreenObject.ResolutionRatio;
                checkBoxMouse.Checked = ScreenObject.Mouse;
            }
            else
            {
                Text = "Add New Screen";

                textBoxName.Text   = "Screen " + (ScreenCollection.Count + 1);
                textBoxFolder.Text = FileSystem.ScreenshotsFolder;
                textBoxMacro.Text  = MacroParser.DefaultMacro;
                comboBoxScreenComponent.SelectedIndex = 0;
                comboBoxFormat.SelectedItem           = ScreenCapture.DefaultImageFormat;
                numericUpDownJpegQuality.Value        = 100;
                numericUpDownResolutionRatio.Value    = 100;
                checkBoxMouse.Checked = true;
            }

            timerScreenPreview.Enabled = true;
        }
Ejemplo n.º 15
0
        private void FormRegion_Load(object sender, EventArgs e)
        {
            textBoxName.Focus();

            HelpMessage("This is where to configure a region capture. Change the X, Y, Width, and Height properties while watching Preview");

            ScreenDictionary.Clear();
            comboBoxScreenTemplate.Items.Clear();

            int component = 1;

            foreach (System.Windows.Forms.Screen screen in System.Windows.Forms.Screen.AllScreens)
            {
                ScreenDictionary.Add(component, screen);
                component++;
            }

            // *** Screen Template ***
            comboBoxScreenTemplate.Items.Add(string.Empty);

            for (int i = 1; i <= ScreenDictionary.Count; i++)
            {
                System.Windows.Forms.Screen screen = ScreenDictionary[i];
                comboBoxScreenTemplate.Items.Add("Screen " + i + " (" + screen.Bounds.Width + " x " + screen.Bounds.Height + ")");
            }

            comboBoxScreenTemplate.SelectedIndex = 0;
            // ***********************

            comboBoxFormat.Items.Clear();

            foreach (ImageFormat imageFormat in ImageFormatCollection)
            {
                comboBoxFormat.Items.Add(imageFormat.Name);
            }

            if (RegionObject != null)
            {
                Text = "Change Region";

                textBoxName.Text                   = RegionObject.Name;
                textBoxFolder.Text                 = FileSystem.CorrectScreenshotsFolderPath(RegionObject.Folder);
                textBoxMacro.Text                  = RegionObject.Macro;
                comboBoxFormat.SelectedItem        = RegionObject.Format.Name;
                numericUpDownJpegQuality.Value     = RegionObject.JpegQuality;
                numericUpDownResolutionRatio.Value = RegionObject.ResolutionRatio;
                checkBoxMouse.Checked              = RegionObject.Mouse;
                numericUpDownX.Value               = RegionObject.X;
                numericUpDownY.Value               = RegionObject.Y;
                numericUpDownWidth.Value           = RegionObject.Width;
                numericUpDownHeight.Value          = RegionObject.Height;
                checkBoxActive.Checked             = RegionObject.Active;
                checkBoxActiveWindowTitle.Checked  = RegionObject.ActiveWindowTitleCaptureCheck;
                textBoxActiveWindowTitle.Text      = RegionObject.ActiveWindowTitleCaptureText;
            }
            else
            {
                Text = "Add New Region";

                textBoxName.Text                   = "Region " + (RegionCollection.Count + 1);
                textBoxFolder.Text                 = FileSystem.ScreenshotsFolder;
                textBoxMacro.Text                  = MacroParser.DefaultMacro;
                comboBoxFormat.SelectedItem        = ScreenCapture.DefaultImageFormat;
                numericUpDownJpegQuality.Value     = 100;
                numericUpDownResolutionRatio.Value = 100;
                checkBoxMouse.Checked              = true;
                numericUpDownX.Value               = 0;
                numericUpDownY.Value               = 0;
                numericUpDownWidth.Value           = 800;
                numericUpDownHeight.Value          = 600;
                checkBoxActive.Checked             = true;
                checkBoxActiveWindowTitle.Checked  = false;
                textBoxActiveWindowTitle.Text      = string.Empty;
            }

            UpdatePreviewMacro();
            UpdatePreviewImage(ScreenCapture);
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Loads the regions.
        /// </summary>
        public void LoadXmlFileAndAddRegions(ImageFormatCollection imageFormatCollection)
        {
            try
            {
                Log.WriteDebugMessage(":: LoadXmlFileAndAddRegions Start ::");

                if (FileSystem.FileExists(FileSystem.RegionsFile))
                {
                    Log.WriteDebugMessage("Regions file \"" + FileSystem.RegionsFile + "\" found. Attempting to load XML document");

                    XmlDocument xDoc = new XmlDocument();
                    xDoc.Load(FileSystem.RegionsFile);

                    Log.WriteDebugMessage("XML document loaded");

                    AppVersion  = xDoc.SelectSingleNode("/autoscreen").Attributes["app:version"]?.Value;
                    AppCodename = xDoc.SelectSingleNode("/autoscreen").Attributes["app:codename"]?.Value;

                    XmlNodeList xRegions = xDoc.SelectNodes(REGION_XPATH);

                    foreach (XmlNode xRegion in xRegions)
                    {
                        Region        region  = new Region();
                        XmlNodeReader xReader = new XmlNodeReader(xRegion);

                        while (xReader.Read())
                        {
                            if (xReader.IsStartElement() && !xReader.IsEmptyElement)
                            {
                                switch (xReader.Name)
                                {
                                case REGION_VIEWID:
                                    xReader.Read();
                                    region.ViewId = Guid.Parse(xReader.Value);
                                    break;

                                case REGION_NAME:
                                    xReader.Read();
                                    region.Name = xReader.Value;
                                    break;

                                case REGION_FOLDER:
                                    xReader.Read();
                                    region.Folder = xReader.Value;
                                    break;

                                case REGION_MACRO:
                                    xReader.Read();
                                    region.Macro = xReader.Value;
                                    break;

                                case REGION_FORMAT:
                                    xReader.Read();
                                    region.Format = imageFormatCollection.GetByName(xReader.Value);
                                    break;

                                case REGION_JPEG_QUALITY:
                                    xReader.Read();
                                    region.JpegQuality = Convert.ToInt32(xReader.Value);
                                    break;

                                case REGION_RESOLUTION_RATIO:
                                    xReader.Read();
                                    region.ResolutionRatio = Convert.ToInt32(xReader.Value);
                                    break;

                                case REGION_MOUSE:
                                    xReader.Read();
                                    region.Mouse = Convert.ToBoolean(xReader.Value);
                                    break;

                                case REGION_X:
                                    xReader.Read();
                                    region.X = Convert.ToInt32(xReader.Value);
                                    break;

                                case REGION_Y:
                                    xReader.Read();
                                    region.Y = Convert.ToInt32(xReader.Value);
                                    break;

                                case REGION_WIDTH:
                                    xReader.Read();
                                    region.Width = Convert.ToInt32(xReader.Value);
                                    break;

                                case REGION_HEIGHT:
                                    xReader.Read();
                                    region.Height = Convert.ToInt32(xReader.Value);
                                    break;

                                case REGION_ACTIVE:
                                    xReader.Read();
                                    region.Active = Convert.ToBoolean(xReader.Value);
                                    break;

                                case REGION_ACTIVE_WINDOW_TITLE_CAPTURE_CHECK:
                                    xReader.Read();
                                    region.ActiveWindowTitleCaptureCheck = Convert.ToBoolean(xReader.Value);
                                    break;

                                case REGION_ACTIVE_WINDOW_TITLE_CAPTURE_TEXT:
                                    xReader.Read();
                                    region.ActiveWindowTitleCaptureText = xReader.Value;
                                    break;
                                }
                            }
                        }

                        xReader.Close();

                        // Change the data for each region that's being loaded if we've detected that
                        // the XML document is from an older version of the application.
                        if (Settings.VersionManager.IsOldAppVersion(AppCodename, AppVersion))
                        {
                            Log.WriteDebugMessage("An old version of the regions file was detected. Attempting upgrade to new region schema");

                            Version v2182         = Settings.VersionManager.Versions.Get("Clara", "2.1.8.2");
                            Version v2300         = Settings.VersionManager.Versions.Get("Boombayah", "2.3.0.0");
                            Version configVersion = Settings.VersionManager.Versions.Get(AppCodename, AppVersion);

                            if (v2182 != null && string.IsNullOrEmpty(AppCodename) && string.IsNullOrEmpty(AppVersion))
                            {
                                Log.WriteDebugMessage("Clara 2.1.8.2 or older detected");

                                region.ViewId = Guid.NewGuid();

                                // Get the screenshots folder path from the old user settings to be used for the region's folder property.
                                region.Folder = Settings.VersionManager.OldUserSettings.GetByKey("ScreenshotsDirectory", FileSystem.ScreenshotsFolder).Value.ToString();

                                region.Folder = FileSystem.CorrectScreenshotsFolderPath(region.Folder);

                                // 2.1 used "%region%", but 2.2 uses "%name%" for a region's Macro value.
                                region.Macro = region.Macro.Replace("%region%", "%name%");

                                region.Format          = imageFormatCollection.GetByName(ImageFormatSpec.NAME_JPEG);
                                region.JpegQuality     = 100;
                                region.ResolutionRatio = 100;
                                region.Mouse           = true;
                                region.Active          = true;
                            }

                            if (v2300 != null && configVersion != null && configVersion.VersionNumber < v2300.VersionNumber)
                            {
                                Log.WriteDebugMessage("Dalek 2.2.4.6 or older detected");

                                // This is a new property for Screen that was introduced in 2.3.0.0
                                // so any version before 2.3.0.0 needs to have it during an upgrade.
                                region.Active = true;
                            }
                        }

                        if (!string.IsNullOrEmpty(region.Name))
                        {
                            Add(region);
                        }
                    }

                    // Write out the regions to the XML document now that we've updated the region objects
                    // with their appropriate property values if it was an old version of the application.
                    if (Settings.VersionManager.IsOldAppVersion(AppCodename, AppVersion))
                    {
                        Log.WriteDebugMessage("Regions file detected as an old version");
                        SaveToXmlFile();
                    }
                }
                else
                {
                    Log.WriteDebugMessage($"WARNING: {FileSystem.RegionsFile} not found. Unable to load regions");

                    SaveToXmlFile();
                }

                Log.WriteDebugMessage(":: LoadXmlFileAndAddRegions End ::");
            }
            catch (Exception ex)
            {
                Log.WriteExceptionMessage("RegionCollection::Load", ex);
            }
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Loads the regions.
        /// </summary>
        public bool LoadXmlFileAndAddRegions(ImageFormatCollection imageFormatCollection, Config config, FileSystem fileSystem, Log log)
        {
            try
            {
                if (fileSystem.FileExists(fileSystem.RegionsFile))
                {
                    log.WriteDebugMessage("Regions file \"" + fileSystem.RegionsFile + "\" found. Attempting to load XML document");

                    XmlDocument xDoc = new XmlDocument();
                    xDoc.Load(fileSystem.RegionsFile);

                    log.WriteDebugMessage("XML document loaded");

                    AppVersion  = xDoc.SelectSingleNode("/autoscreen").Attributes["app:version"]?.Value;
                    AppCodename = xDoc.SelectSingleNode("/autoscreen").Attributes["app:codename"]?.Value;

                    XmlNodeList xRegions = xDoc.SelectNodes(REGION_XPATH);

                    foreach (XmlNode xRegion in xRegions)
                    {
                        Region        region  = new Region();
                        XmlNodeReader xReader = new XmlNodeReader(xRegion);

                        while (xReader.Read())
                        {
                            if (xReader.IsStartElement() && !xReader.IsEmptyElement)
                            {
                                switch (xReader.Name)
                                {
                                case REGION_VIEWID:
                                    xReader.Read();
                                    region.ViewId = Guid.Parse(xReader.Value);
                                    break;

                                case REGION_NAME:
                                    xReader.Read();
                                    region.Name = xReader.Value;
                                    break;

                                case REGION_FOLDER:
                                    xReader.Read();
                                    region.Folder = xReader.Value;
                                    break;

                                case REGION_MACRO:
                                    xReader.Read();
                                    region.Macro = xReader.Value;
                                    break;

                                case REGION_FORMAT:
                                    xReader.Read();
                                    region.Format = imageFormatCollection.GetByName(xReader.Value);
                                    break;

                                case REGION_JPEG_QUALITY:
                                    xReader.Read();
                                    region.JpegQuality = Convert.ToInt32(xReader.Value);
                                    break;

                                case REGION_MOUSE:
                                    xReader.Read();
                                    region.Mouse = Convert.ToBoolean(xReader.Value);
                                    break;

                                case REGION_X:
                                    xReader.Read();
                                    region.X = Convert.ToInt32(xReader.Value);
                                    break;

                                case REGION_Y:
                                    xReader.Read();
                                    region.Y = Convert.ToInt32(xReader.Value);
                                    break;

                                case REGION_WIDTH:
                                    xReader.Read();
                                    region.Width = Convert.ToInt32(xReader.Value);
                                    break;

                                case REGION_HEIGHT:
                                    xReader.Read();
                                    region.Height = Convert.ToInt32(xReader.Value);
                                    break;

                                case REGION_ENABLE:
                                case "active":     // Any version older than 2.4.0.0 used "active" instead of "enable".
                                    xReader.Read();
                                    region.Enable = Convert.ToBoolean(xReader.Value);
                                    break;

                                case REGION_ENCRYPT:
                                    xReader.Read();
                                    region.Encrypt = Convert.ToBoolean(xReader.Value);
                                    break;
                                }
                            }
                        }

                        xReader.Close();

                        // Change the data for each region that's being loaded if we've detected that
                        // the XML document is from an older version of the application.
                        if (config.Settings.VersionManager.IsOldAppVersion(config.Settings, AppCodename, AppVersion))
                        {
                            log.WriteDebugMessage("An old version of the regions file was detected. Attempting upgrade to new region schema");

                            Version v2182         = config.Settings.VersionManager.Versions.Get(Settings.CODENAME_CLARA, Settings.CODEVERSION_CLARA);
                            Version v2300         = config.Settings.VersionManager.Versions.Get(Settings.CODENAME_BOOMBAYAH, Settings.CODEVERSION_BOOMBAYAH);
                            Version v2338         = config.Settings.VersionManager.Versions.Get(Settings.CODENAME_BOOMBAYAH, "2.3.3.8");
                            Version configVersion = config.Settings.VersionManager.Versions.Get(AppCodename, AppVersion);

                            if (v2182 != null && string.IsNullOrEmpty(AppCodename) && string.IsNullOrEmpty(AppVersion))
                            {
                                log.WriteDebugMessage("Clara 2.1.8.2 or older detected");

                                region.ViewId = Guid.NewGuid();

                                // Get the screenshots folder path from the old user settings to be used for the region's folder property.
                                region.Folder = config.Settings.VersionManager.OldUserSettings.GetByKey("ScreenshotsDirectory", fileSystem.ScreenshotsFolder).Value.ToString();

                                region.Folder = fileSystem.CorrectScreenshotsFolderPath(region.Folder);

                                // 2.1 used "%region%", but 2.2 uses "%name%" for a region's Macro value.
                                region.Macro = region.Macro.Replace("%region%", "%name%");

                                region.Format      = imageFormatCollection.GetByName("JPEG");
                                region.JpegQuality = 100;
                                region.Mouse       = true;
                                region.Enable      = true;
                                region.Encrypt     = false;
                            }

                            if (v2300 != null && configVersion != null && configVersion.VersionNumber < v2300.VersionNumber)
                            {
                                log.WriteDebugMessage("Dalek 2.2.4.6 or older detected");

                                // This is a new property for Screen that was introduced in 2.3.0.0
                                // so any version before 2.3.0.0 needs to have it during an upgrade.
                                region.Enable = true;

                                // Introduced in 2.4.0.0
                                region.Encrypt = false;
                            }

                            if (v2338 != null && configVersion != null && configVersion.VersionNumber < v2338.VersionNumber)
                            {
                                log.WriteDebugMessage("Boombayah 2.3.3.7 or older detected");

                                // We don't want to include the old "Region Select / Auto Save" region that's found in 2.3.3.7 (or older)
                                // since 2.3.3.8 replaced it with a more dynamic solution when selecting a screenshot that was saved by using "Region Select -> Clipboard / Auto Save".
                                if (region.Name.Equals("Region Select / Auto Save"))
                                {
                                    region.Name = string.Empty;
                                }
                            }
                        }

                        if (!string.IsNullOrEmpty(region.Name))
                        {
                            Add(region);
                        }
                    }

                    // Write out the regions to the XML document now that we've updated the region objects
                    // with their appropriate property values if it was an old version of the application.
                    if (config.Settings.VersionManager.IsOldAppVersion(config.Settings, AppCodename, AppVersion))
                    {
                        log.WriteDebugMessage("Regions file detected as an old version");
                        SaveToXmlFile(config.Settings, fileSystem, log);
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                if (fileSystem.FileExists(fileSystem.RegionsFile))
                {
                    fileSystem.DeleteFile(fileSystem.RegionsFile);

                    log.WriteErrorMessage("The file \"" + fileSystem.RegionsFile + "\" had to be deleted because an error was encountered. You may need to force quit the application and run it again.");
                }

                log.WriteExceptionMessage("RegionCollection::Load", ex);

                return(false);
            }
        }
Ejemplo n.º 18
0
        private void FormScreen_Load(object sender, EventArgs e)
        {
            textBoxName.Focus();

            HelpMessage("This is where to configure a screen capture. Select an available screen from the Component drop-down menu and keep an eye on Preview");

            comboBoxFormat.Items.Clear();
            comboBoxScreenComponent.Items.Clear();

            pictureBoxPreview.Image = null;

            foreach (ImageFormat imageFormat in ImageFormatCollection)
            {
                comboBoxFormat.Items.Add(imageFormat.Name);
            }

            comboBoxScreenComponent.Items.Add("Active Window");

            for (int i = 1; i <= ScreenDictionary.Count; i++)
            {
                System.Windows.Forms.Screen screen = ScreenDictionary[i];
                comboBoxScreenComponent.Items.Add("Screen " + i + " (" + screen.Bounds.Width + " x " + screen.Bounds.Height + ")");
            }

            if (ScreenObject != null)
            {
                Text = "Change Screen";

                textBoxName.Text   = ScreenObject.Name;
                textBoxFolder.Text = FileSystem.CorrectScreenshotsFolderPath(ScreenObject.Folder);
                textBoxMacro.Text  = ScreenObject.Macro;

                if (ScreenObject.Component < comboBoxScreenComponent.Items.Count)
                {
                    SetControls(enabled: true);
                    comboBoxScreenComponent.SelectedIndex = ScreenObject.Component;
                }
                else
                {
                    SetControls(enabled: false);
                }

                comboBoxFormat.SelectedItem        = ScreenObject.Format.Name;
                numericUpDownJpegQuality.Value     = ScreenObject.JpegQuality;
                numericUpDownResolutionRatio.Value = ScreenObject.ResolutionRatio;
                checkBoxMouse.Checked             = ScreenObject.Mouse;
                checkBoxActive.Checked            = ScreenObject.Active;
                checkBoxActiveWindowTitle.Checked = ScreenObject.ActiveWindowTitleCaptureCheck;
                textBoxActiveWindowTitle.Text     = ScreenObject.ActiveWindowTitleCaptureText;
            }
            else
            {
                Text = "Add New Screen";

                textBoxName.Text   = "Screen " + (ScreenCollection.Count + 1);
                textBoxFolder.Text = FileSystem.ScreenshotsFolder;
                textBoxMacro.Text  = MacroParser.DefaultMacro;
                comboBoxScreenComponent.SelectedIndex = 0;
                comboBoxFormat.SelectedItem           = ScreenCapture.DefaultImageFormat;
                numericUpDownJpegQuality.Value        = 100;
                numericUpDownResolutionRatio.Value    = 100;
                checkBoxMouse.Checked             = true;
                checkBoxActive.Checked            = true;
                checkBoxActiveWindowTitle.Checked = false;
                textBoxActiveWindowTitle.Text     = string.Empty;
            }

            UpdatePreviewMacro();
            UpdatePreviewImage(ScreenCapture);
        }
Ejemplo n.º 19
0
        private void FormRegion_Load(object sender, EventArgs e)
        {
            ScreenDictionary.Clear();
            comboBoxScreenTemplate.Items.Clear();
            comboBoxTags.DataSource = null;

            int component = 1;

            foreach (System.Windows.Forms.Screen screen in System.Windows.Forms.Screen.AllScreens)
            {
                ScreenDictionary.Add(component, screen);
                component++;
            }

            // *** Screen Template ***
            comboBoxScreenTemplate.Items.Add(string.Empty);

            for (int i = 1; i <= ScreenDictionary.Count; i++)
            {
                System.Windows.Forms.Screen screen = ScreenDictionary[i];
                comboBoxScreenTemplate.Items.Add("Screen " + i + " (" + screen.Bounds.Width + " x " + screen.Bounds.Height + ")");
            }

            comboBoxScreenTemplate.SelectedIndex = 0;
            // ***********************

            // *** Macro Tags ***
            comboBoxTags.DisplayMember = "Description";
            comboBoxTags.ValueMember   = "Name";
            comboBoxTags.DataSource    = MacroTagCollection.GetList();
            // ******************

            comboBoxFormat.Items.Clear();

            foreach (ImageFormat imageFormat in ImageFormatCollection)
            {
                comboBoxFormat.Items.Add(imageFormat.Name);
            }

            if (RegionObject != null)
            {
                Text = "Change Region";

                textBoxName.Text                   = RegionObject.Name;
                textBoxFolder.Text                 = FileSystem.CorrectScreenshotsFolderPath(RegionObject.Folder);
                textBoxMacro.Text                  = RegionObject.Macro;
                comboBoxFormat.SelectedItem        = RegionObject.Format.Name;
                numericUpDownJpegQuality.Value     = RegionObject.JpegQuality;
                numericUpDownResolutionRatio.Value = RegionObject.ResolutionRatio;
                checkBoxMouse.Checked              = RegionObject.Mouse;
                numericUpDownX.Value               = RegionObject.X;
                numericUpDownY.Value               = RegionObject.Y;
                numericUpDownWidth.Value           = RegionObject.Width;
                numericUpDownHeight.Value          = RegionObject.Height;
            }
            else
            {
                Text = "Add New Region";

                textBoxName.Text                   = "Region " + (RegionCollection.Count + 1);
                textBoxFolder.Text                 = FileSystem.ScreenshotsFolder;
                textBoxMacro.Text                  = MacroParser.DefaultMacro;
                comboBoxFormat.SelectedItem        = ScreenCapture.DefaultImageFormat;
                numericUpDownJpegQuality.Value     = 100;
                numericUpDownResolutionRatio.Value = 100;
                checkBoxMouse.Checked              = true;
                numericUpDownX.Value               = 0;
                numericUpDownY.Value               = 0;
                numericUpDownWidth.Value           = 800;
                numericUpDownHeight.Value          = 600;
            }

            timerPreview.Enabled = true;
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Saves the screens.
        /// </summary>
        public bool SaveToXmlFile(Settings settings, FileSystem fileSystem, Log log)
        {
            try
            {
                XmlWriterSettings xSettings = new XmlWriterSettings();
                xSettings.Indent           = true;
                xSettings.CloseOutput      = true;
                xSettings.CheckCharacters  = true;
                xSettings.Encoding         = Encoding.UTF8;
                xSettings.NewLineChars     = Environment.NewLine;
                xSettings.IndentChars      = XML_FILE_INDENT_CHARS;
                xSettings.NewLineHandling  = NewLineHandling.Entitize;
                xSettings.ConformanceLevel = ConformanceLevel.Document;

                if (string.IsNullOrEmpty(fileSystem.ScreensFile))
                {
                    fileSystem.ScreensFile = fileSystem.DefaultScreensFile;

                    if (fileSystem.FileExists(fileSystem.ConfigFile))
                    {
                        fileSystem.AppendToFile(fileSystem.ConfigFile, "\nScreensFile=" + fileSystem.ScreensFile);
                    }
                }

                if (fileSystem.FileExists(fileSystem.ScreensFile))
                {
                    fileSystem.DeleteFile(fileSystem.ScreensFile);
                }

                using (XmlWriter xWriter = XmlWriter.Create(fileSystem.ScreensFile, xSettings))
                {
                    xWriter.WriteStartDocument();
                    xWriter.WriteStartElement(XML_FILE_ROOT_NODE);
                    xWriter.WriteAttributeString("app", "version", XML_FILE_ROOT_NODE, settings.ApplicationVersion);
                    xWriter.WriteAttributeString("app", "codename", XML_FILE_ROOT_NODE, settings.ApplicationCodename);
                    xWriter.WriteStartElement(XML_FILE_SCREENS_NODE);

                    foreach (Screen screen in base.Collection)
                    {
                        xWriter.WriteStartElement(XML_FILE_SCREEN_NODE);

                        xWriter.WriteElementString(SCREEN_ENABLE, screen.Enable.ToString());
                        xWriter.WriteElementString(SCREEN_VIEWID, screen.ViewId.ToString());
                        xWriter.WriteElementString(SCREEN_NAME, screen.Name);
                        xWriter.WriteElementString(SCREEN_FOLDER, fileSystem.CorrectScreenshotsFolderPath(screen.Folder));
                        xWriter.WriteElementString(SCREEN_MACRO, screen.Macro);
                        xWriter.WriteElementString(SCREEN_COMPONENT, screen.Component.ToString());
                        xWriter.WriteElementString(SCREEN_FORMAT, screen.Format.Name);
                        xWriter.WriteElementString(SCREEN_JPEG_QUALITY, screen.JpegQuality.ToString());
                        xWriter.WriteElementString(SCREEN_MOUSE, screen.Mouse.ToString());
                        xWriter.WriteElementString(SCREEN_X, screen.X.ToString());
                        xWriter.WriteElementString(SCREEN_Y, screen.Y.ToString());
                        xWriter.WriteElementString(SCREEN_WIDTH, screen.Width.ToString());
                        xWriter.WriteElementString(SCREEN_HEIGHT, screen.Height.ToString());
                        xWriter.WriteElementString(SCREEN_SOURCE, screen.Source.ToString());
                        xWriter.WriteElementString(SCREEN_DEVICE_NAME, screen.DeviceName);
                        xWriter.WriteElementString(SCREEN_AUTO_ADAPT, screen.AutoAdapt.ToString());
                        xWriter.WriteElementString(SCREEN_CAPTURE_METHOD, screen.CaptureMethod.ToString());
                        xWriter.WriteElementString(SCREEN_ENCRYPT, screen.Encrypt.ToString());
                        xWriter.WriteElementString(SCREEN_RESOLUTION_RATIO, screen.ResolutionRatio.ToString());

                        xWriter.WriteEndElement();
                    }

                    xWriter.WriteEndElement();
                    xWriter.WriteEndElement();
                    xWriter.WriteEndDocument();

                    xWriter.Flush();
                    xWriter.Close();
                }

                return(true);
            }
            catch (Exception ex)
            {
                log.WriteExceptionMessage("ScreenCollection::SaveToXmlFile", ex);

                return(false);
            }
        }
Ejemplo n.º 21
0
        private void FormScreen_Load(object sender, EventArgs e)
        {
            textBoxScreenName.Focus();

            HelpMessage("This is where to configure a screen capture. Select a source and a component then change the display properties and image attributes");

            _toolTip.SetToolTip(checkBoxMouse, "You can include the mouse pointer in your screenshots if the \"Include mouse pointer\" option is checked");
            _toolTip.SetToolTip(comboBoxFormat, "Change the image format for the screenshots taken by this screen capture. JPEG is the recommended image format");
            _toolTip.SetToolTip(checkBoxActive, "You can capture this screen if Active is checked (turned on)");
            _toolTip.SetToolTip(buttonScreenBrowseFolder, "Browse for a folder where screenshots of this screen capture will be saved to");
            _toolTip.SetToolTip(buttonMacroTags, "Open a list of available macro tags. You can keep the Macro Tags window open while you modify your macro");

            comboBoxFormat.Items.Clear();

            pictureBoxPreview.Image = null;

            foreach (ImageFormat imageFormat in ImageFormatCollection)
            {
                comboBoxFormat.Items.Add(imageFormat.Name);
            }

            comboBoxScreenSource.Items.Clear();
            comboBoxScreenSource.Items.Add("Auto Screen Capture");
            comboBoxScreenSource.Items.Add("Graphics Card");
            comboBoxScreenSource.Items.Add("Operating System");

            for (int i = 1; i <= ScreenDictionary.Count; i++)
            {
                ScreenCapture.DeviceOptions deviceOptions = ScreenDictionary[i];
                comboBoxScreenComponent.Items.Add("Screen " + i + " (" + deviceOptions.width + " x " + deviceOptions.height + ")");
            }

            if (ScreenObject != null)
            {
                Text = "Change Screen";

                textBoxScreenName.Text             = ScreenObject.Name;
                textBoxFolder.Text                 = _fileSystem.CorrectScreenshotsFolderPath(ScreenObject.Folder);
                textBoxMacro.Text                  = ScreenObject.Macro;
                comboBoxScreenSource.SelectedIndex = ScreenObject.Source;
                comboBoxFormat.SelectedItem        = ScreenObject.Format.Name;
                numericUpDownJpegQuality.Value     = ScreenObject.JpegQuality;
                checkBoxMouse.Checked              = ScreenObject.Mouse;
                checkBoxActive.Checked             = ScreenObject.Active;
                numericUpDownX.Value               = ScreenObject.X;
                numericUpDownY.Value               = ScreenObject.Y;
                numericUpDownWidth.Value           = ScreenObject.Width;
                numericUpDownHeight.Value          = ScreenObject.Height;
            }
            else
            {
                Text = "Add Screen";

                textBoxScreenName.Text             = "Screen " + (ScreenCollection.Count + 1);
                textBoxFolder.Text                 = _fileSystem.ScreenshotsFolder;
                textBoxMacro.Text                  = _macroParser.DefaultMacro;
                comboBoxScreenSource.SelectedIndex = 0;
                comboBoxFormat.SelectedItem        = ScreenCapture.DefaultImageFormat;
                numericUpDownJpegQuality.Value     = 100;
                checkBoxMouse.Checked              = true;
                checkBoxActive.Checked             = true;
                numericUpDownX.Value               = 0;
                numericUpDownY.Value               = 0;
                numericUpDownWidth.Value           = 0;
                numericUpDownHeight.Value          = 0;
            }

            UpdatePreviewMacro();
            UpdatePreviewImage(_screenCapture);
        }
Ejemplo n.º 22
0
        private void FormScreen_Load(object sender, EventArgs e)
        {
            textBoxScreenName.Focus();

            HelpMessage("This is where to configure a screen capture. Select an available screen from the Component drop-down menu and keep an eye on Preview");

            comboBoxFormat.Items.Clear();
            comboBoxScreenComponent.Items.Clear();

            pictureBoxPreview.Image = null;

            foreach (ImageFormat imageFormat in ImageFormatCollection)
            {
                comboBoxFormat.Items.Add(imageFormat.Name);
            }

            comboBoxScreenComponent.Items.Add("Active Window");

            for (int i = 1; i <= ScreenDictionary.Count; i++)
            {
                ScreenCapture.DeviceResolution deviceResolution = ScreenDictionary[i];
                comboBoxScreenComponent.Items.Add("Screen " + i + " (" + deviceResolution.width + " x " + deviceResolution.height + ")");
            }

            if (ScreenObject != null)
            {
                Text = "Change Screen";

                textBoxScreenName.Text = ScreenObject.Name;
                textBoxFolder.Text     = FileSystem.CorrectScreenshotsFolderPath(ScreenObject.Folder);
                textBoxMacro.Text      = ScreenObject.Macro;

                if (ScreenObject.Component < comboBoxScreenComponent.Items.Count)
                {
                    comboBoxScreenComponent.SelectedIndex = ScreenObject.Component;
                }
                else
                {
                    comboBoxScreenComponent.SelectedIndex = 0;
                    MessageBox.Show("The configured screen component has an invalid index since it is not available on this system. The component has therefore been set to Active Window.", "Invalid Screen Index", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }

                comboBoxFormat.SelectedItem        = ScreenObject.Format.Name;
                numericUpDownJpegQuality.Value     = ScreenObject.JpegQuality;
                numericUpDownResolutionRatio.Value = ScreenObject.ResolutionRatio;
                checkBoxMouse.Checked  = ScreenObject.Mouse;
                checkBoxActive.Checked = ScreenObject.Active;
            }
            else
            {
                Text = "Add New Screen";

                textBoxScreenName.Text = "Screen " + (ScreenCollection.Count + 1);
                textBoxFolder.Text     = FileSystem.ScreenshotsFolder;
                textBoxMacro.Text      = MacroParser.DefaultMacro;
                comboBoxScreenComponent.SelectedIndex = 0;
                comboBoxFormat.SelectedItem           = ScreenCapture.DefaultImageFormat;
                numericUpDownJpegQuality.Value        = 100;
                numericUpDownResolutionRatio.Value    = 100;
                checkBoxMouse.Checked  = true;
                checkBoxActive.Checked = true;
            }

            UpdatePreviewMacro();
            UpdatePreviewImage(ScreenCapture);
        }
Ejemplo n.º 23
0
        private void FormRegion_Load(object sender, EventArgs e)
        {
            textBoxRegionName.Focus();

            HelpMessage("This is where to configure a region capture. Change the X, Y, Width, and Height properties while watching Preview");

            _toolTip.SetToolTip(checkBoxMouse, "You can include the mouse pointer in your screenshots if the \"Include mouse pointer\" option is checked");
            _toolTip.SetToolTip(comboBoxFormat, "Change the image format for the screenshots taken by this region capture. JPEG is the recommended image format");
            _toolTip.SetToolTip(comboBoxScreenTemplate, "Acquire the width and height from an available screen to import as the width and height for your region capture");
            _toolTip.SetToolTip(checkBoxActive, "You can capture this region if Active is checked (turned on)");
            _toolTip.SetToolTip(buttonBrowseFolder, "Browse for a folder where screenshots of this region capture will be saved to");
            _toolTip.SetToolTip(buttonMacroTags, "Open a list of available macro tags. You can keep the Macro Tags window open while you modify your macro");

            ScreenDictionary.Clear();
            comboBoxScreenTemplate.Items.Clear();

            int component = 1;

            foreach (System.Windows.Forms.Screen screen in System.Windows.Forms.Screen.AllScreens)
            {
                ScreenCapture.DeviceResolution deviceResolution = ScreenCapture.GetDeviceResolution(screen);

                ScreenDictionary.Add(component, deviceResolution);
                component++;
            }

            // *** Screen Template ***
            comboBoxScreenTemplate.Items.Add(string.Empty);

            for (int i = 1; i <= ScreenDictionary.Count; i++)
            {
                ScreenCapture.DeviceResolution deviceResolution = ScreenDictionary[i];

                comboBoxScreenTemplate.Items.Add("\"" + deviceResolution.screen.DeviceName + "\" X:" + deviceResolution.screen.Bounds.X + " Y:" + deviceResolution.screen.Bounds.Y + " (" + deviceResolution.width + "x" + deviceResolution.height + ")");
            }

            comboBoxScreenTemplate.SelectedIndex = 0;
            // ***********************

            comboBoxFormat.Items.Clear();

            foreach (ImageFormat imageFormat in ImageFormatCollection)
            {
                comboBoxFormat.Items.Add(imageFormat.Name);
            }

            if (RegionObject != null)
            {
                Text = "Change Region";

                textBoxRegionName.Text             = RegionObject.Name;
                textBoxFolder.Text                 = FileSystem.CorrectScreenshotsFolderPath(RegionObject.Folder);
                textBoxMacro.Text                  = RegionObject.Macro;
                comboBoxFormat.SelectedItem        = RegionObject.Format.Name;
                numericUpDownJpegQuality.Value     = RegionObject.JpegQuality;
                numericUpDownResolutionRatio.Value = RegionObject.ResolutionRatio;
                checkBoxMouse.Checked              = RegionObject.Mouse;
                numericUpDownX.Value               = RegionObject.X;
                numericUpDownY.Value               = RegionObject.Y;
                numericUpDownWidth.Value           = RegionObject.Width;
                numericUpDownHeight.Value          = RegionObject.Height;
                checkBoxActive.Checked             = RegionObject.Active;
            }
            else
            {
                Text = "Add Region";

                textBoxRegionName.Text             = "Region " + (RegionCollection.Count + 1);
                textBoxFolder.Text                 = FileSystem.ScreenshotsFolder;
                textBoxMacro.Text                  = MacroParser.DefaultMacro;
                comboBoxFormat.SelectedItem        = ScreenCapture.DefaultImageFormat;
                numericUpDownJpegQuality.Value     = 100;
                numericUpDownResolutionRatio.Value = 100;
                checkBoxMouse.Checked              = true;
                numericUpDownX.Value               = 0;
                numericUpDownY.Value               = 0;
                numericUpDownWidth.Value           = 800;
                numericUpDownHeight.Value          = 600;
                checkBoxActive.Checked             = true;
            }

            UpdatePreviewMacro();
            UpdatePreviewImage(ScreenCapture);
        }
Ejemplo n.º 24
0
        /// <summary>
        /// Saves the regions.
        /// </summary>
        public void SaveToXmlFile()
        {
            try
            {
                XmlWriterSettings xSettings = new XmlWriterSettings();
                xSettings.Indent           = true;
                xSettings.CloseOutput      = true;
                xSettings.CheckCharacters  = true;
                xSettings.Encoding         = Encoding.UTF8;
                xSettings.NewLineChars     = Environment.NewLine;
                xSettings.IndentChars      = XML_FILE_INDENT_CHARS;
                xSettings.NewLineHandling  = NewLineHandling.Entitize;
                xSettings.ConformanceLevel = ConformanceLevel.Document;

                if (string.IsNullOrEmpty(FileSystem.RegionsFile))
                {
                    FileSystem.RegionsFile = FileSystem.DefaultRegionsFile;

                    if (FileSystem.FileExists(FileSystem.ConfigFile))
                    {
                        FileSystem.AppendToFile(FileSystem.ConfigFile, "\nRegionsFile=" + FileSystem.RegionsFile);
                    }
                }

                if (FileSystem.FileExists(FileSystem.RegionsFile))
                {
                    FileSystem.DeleteFile(FileSystem.RegionsFile);
                }

                using (XmlWriter xWriter =
                           XmlWriter.Create(FileSystem.RegionsFile, xSettings))
                {
                    xWriter.WriteStartDocument();
                    xWriter.WriteStartElement(XML_FILE_ROOT_NODE);
                    xWriter.WriteAttributeString("app", "version", XML_FILE_ROOT_NODE, Settings.ApplicationVersion);
                    xWriter.WriteAttributeString("app", "codename", XML_FILE_ROOT_NODE, Settings.ApplicationCodename);
                    xWriter.WriteStartElement(XML_FILE_REGIONS_NODE);

                    foreach (Region region in base.Collection)
                    {
                        xWriter.WriteStartElement(XML_FILE_REGION_NODE);

                        xWriter.WriteElementString(REGION_ACTIVE, region.Active.ToString());
                        xWriter.WriteElementString(REGION_VIEWID, region.ViewId.ToString());
                        xWriter.WriteElementString(REGION_NAME, region.Name);
                        xWriter.WriteElementString(REGION_FOLDER, FileSystem.CorrectScreenshotsFolderPath(region.Folder));
                        xWriter.WriteElementString(REGION_MACRO, region.Macro);
                        xWriter.WriteElementString(REGION_FORMAT, region.Format.Name);
                        xWriter.WriteElementString(REGION_JPEG_QUALITY, region.JpegQuality.ToString());
                        xWriter.WriteElementString(REGION_RESOLUTION_RATIO, region.ResolutionRatio.ToString());
                        xWriter.WriteElementString(REGION_MOUSE, region.Mouse.ToString());
                        xWriter.WriteElementString(REGION_X, region.X.ToString());
                        xWriter.WriteElementString(REGION_Y, region.Y.ToString());
                        xWriter.WriteElementString(REGION_WIDTH, region.Width.ToString());
                        xWriter.WriteElementString(REGION_HEIGHT, region.Height.ToString());
                        xWriter.WriteElementString(REGION_ACTIVE_WINDOW_TITLE_CAPTURE_CHECK, region.ActiveWindowTitleCaptureCheck.ToString());
                        xWriter.WriteElementString(REGION_ACTIVE_WINDOW_TITLE_CAPTURE_TEXT, region.ActiveWindowTitleCaptureText);

                        xWriter.WriteEndElement();
                    }

                    xWriter.WriteEndElement();
                    xWriter.WriteEndElement();
                    xWriter.WriteEndDocument();

                    xWriter.Flush();
                    xWriter.Close();
                }
            }
            catch (Exception ex)
            {
                Log.WriteExceptionMessage("RegionCollection::SaveToXmlFile", ex);
            }
        }
Ejemplo n.º 25
0
        /// <summary>
        /// Saves the screens.
        /// </summary>
        public bool SaveToXmlFile()
        {
            try
            {
                XmlWriterSettings xSettings = new XmlWriterSettings();
                xSettings.Indent           = true;
                xSettings.CloseOutput      = true;
                xSettings.CheckCharacters  = true;
                xSettings.Encoding         = Encoding.UTF8;
                xSettings.NewLineChars     = Environment.NewLine;
                xSettings.IndentChars      = XML_FILE_INDENT_CHARS;
                xSettings.NewLineHandling  = NewLineHandling.Entitize;
                xSettings.ConformanceLevel = ConformanceLevel.Document;

                if (string.IsNullOrEmpty(FileSystem.ScreensFile))
                {
                    FileSystem.ScreensFile = FileSystem.DefaultScreensFile;

                    if (FileSystem.FileExists(FileSystem.ConfigFile))
                    {
                        FileSystem.AppendToFile(FileSystem.ConfigFile, "\nScreensFile=" + FileSystem.ScreensFile);
                    }
                }

                if (FileSystem.FileExists(FileSystem.ScreensFile))
                {
                    FileSystem.DeleteFile(FileSystem.ScreensFile);
                }

                using (XmlWriter xWriter =
                           XmlWriter.Create(FileSystem.ScreensFile, xSettings))
                {
                    xWriter.WriteStartDocument();
                    xWriter.WriteStartElement(XML_FILE_ROOT_NODE);
                    xWriter.WriteAttributeString("app", "version", XML_FILE_ROOT_NODE, Settings.ApplicationVersion);
                    xWriter.WriteAttributeString("app", "codename", XML_FILE_ROOT_NODE, Settings.ApplicationCodename);
                    xWriter.WriteStartElement(XML_FILE_SCREENS_NODE);

                    foreach (Screen screen in base.Collection)
                    {
                        xWriter.WriteStartElement(XML_FILE_SCREEN_NODE);

                        xWriter.WriteElementString(SCREEN_ACTIVE, screen.Active.ToString());
                        xWriter.WriteElementString(SCREEN_VIEWID, screen.ViewId.ToString());
                        xWriter.WriteElementString(SCREEN_NAME, screen.Name);
                        xWriter.WriteElementString(SCREEN_FOLDER, FileSystem.CorrectScreenshotsFolderPath(screen.Folder));
                        xWriter.WriteElementString(SCREEN_MACRO, screen.Macro);
                        xWriter.WriteElementString(SCREEN_COMPONENT, screen.Component.ToString());
                        xWriter.WriteElementString(SCREEN_FORMAT, screen.Format.Name);
                        xWriter.WriteElementString(SCREEN_JPEG_QUALITY, screen.JpegQuality.ToString());
                        xWriter.WriteElementString(SCREEN_RESOLUTION_RATIO, screen.ResolutionRatio.ToString());
                        xWriter.WriteElementString(SCREEN_MOUSE, screen.Mouse.ToString());

                        xWriter.WriteEndElement();
                    }

                    xWriter.WriteEndElement();
                    xWriter.WriteEndElement();
                    xWriter.WriteEndDocument();

                    xWriter.Flush();
                    xWriter.Close();
                }

                return(true);
            }
            catch (Exception ex)
            {
                Log.WriteExceptionMessage("ScreenCollection::SaveToXmlFile", ex);

                return(false);
            }
        }
Ejemplo n.º 26
0
        /// <summary>
        /// Loads the regions.
        /// </summary>
        public void Load(ImageFormatCollection imageFormatCollection)
        {
            try
            {
                if (File.Exists(FileSystem.RegionsFile))
                {
                    XmlDocument xDoc = new XmlDocument();
                    xDoc.Load(FileSystem.RegionsFile);

                    AppVersion  = xDoc.SelectSingleNode("/autoscreen").Attributes["app:version"]?.Value;
                    AppCodename = xDoc.SelectSingleNode("/autoscreen").Attributes["app:codename"]?.Value;

                    XmlNodeList xRegions = xDoc.SelectNodes(REGION_XPATH);

                    foreach (XmlNode xRegion in xRegions)
                    {
                        Region        region  = new Region();
                        XmlNodeReader xReader = new XmlNodeReader(xRegion);

                        while (xReader.Read())
                        {
                            if (xReader.IsStartElement())
                            {
                                switch (xReader.Name)
                                {
                                case REGION_VIEWID:
                                    xReader.Read();
                                    region.ViewId = Guid.Parse(xReader.Value);
                                    break;

                                case REGION_NAME:
                                    xReader.Read();
                                    region.Name = xReader.Value;
                                    break;

                                case REGION_FOLDER:
                                    xReader.Read();
                                    region.Folder = xReader.Value;
                                    break;

                                case REGION_MACRO:
                                    xReader.Read();
                                    region.Macro = xReader.Value;
                                    break;

                                case REGION_FORMAT:
                                    xReader.Read();
                                    region.Format = imageFormatCollection.GetByName(xReader.Value);
                                    break;

                                case REGION_JPEG_QUALITY:
                                    xReader.Read();
                                    region.JpegQuality = Convert.ToInt32(xReader.Value);
                                    break;

                                case REGION_RESOLUTION_RATIO:
                                    xReader.Read();
                                    region.ResolutionRatio = Convert.ToInt32(xReader.Value);
                                    break;

                                case REGION_MOUSE:
                                    xReader.Read();
                                    region.Mouse = Convert.ToBoolean(xReader.Value);
                                    break;

                                case REGION_X:
                                    xReader.Read();
                                    region.X = Convert.ToInt32(xReader.Value);
                                    break;

                                case REGION_Y:
                                    xReader.Read();
                                    region.Y = Convert.ToInt32(xReader.Value);
                                    break;

                                case REGION_WIDTH:
                                    xReader.Read();
                                    region.Width = Convert.ToInt32(xReader.Value);
                                    break;

                                case REGION_HEIGHT:
                                    xReader.Read();
                                    region.Height = Convert.ToInt32(xReader.Value);
                                    break;
                                }
                            }
                        }

                        xReader.Close();

                        // Change the data for each region that's being loaded if we've detected that
                        // the XML file is from an older version of the application.
                        if (Settings.VersionManager.IsOldAppVersion(AppCodename, AppVersion))
                        {
                            if (Settings.VersionManager.Versions.Get("Clara", "2.1.8.2") != null && string.IsNullOrEmpty(AppCodename) && string.IsNullOrEmpty(AppVersion))
                            {
                                Log.Write("An old version of the regions file was detected. Attempting upgrade to new region format");

                                region.ViewId = Guid.NewGuid();

                                // Get the screenshots folder path from the old user settings to be used for the region's folder property.
                                region.Folder = Settings.VersionManager.OldUserSettings.GetByKey("ScreenshotsDirectory", FileSystem.ScreenshotsFolder).Value.ToString();

                                region.Folder = FileSystem.CorrectScreenshotsFolderPath(region.Folder);

                                // 2.1 used "%region%", but 2.2 uses "%name%" for a region's Macro value.
                                region.Macro = region.Macro.Replace("%region%", "%name%");

                                region.Format          = imageFormatCollection.GetByName(ImageFormatSpec.NAME_JPEG);
                                region.JpegQuality     = 100;
                                region.ResolutionRatio = 100;
                                region.Mouse           = false;
                            }
                        }

                        if (!string.IsNullOrEmpty(region.Name))
                        {
                            Add(region);
                        }
                    }

                    // Write out the regions to the XML file now that we've updated the region objects
                    // with their appropriate property values if it was an old version of the application.
                    if (Settings.VersionManager.IsOldAppVersion(AppCodename, AppVersion))
                    {
                        Save();
                    }
                }
                else
                {
                    Log.Write($"WARNING: {FileSystem.RegionsFile} not found. Unable to load regions");
                }
            }
            catch (Exception ex)
            {
                Log.Write("RegionCollection::Load", ex);
            }
        }