private async void ScrapMoreFromOriginalScreenshot(object sender, EventArgs args)
        {
            var screenshotPopup = new ScreenshotFullscreenPopup(File.ReadAllBytes(MainVM.SelectedPage.ScreenshotByteArray));

            screenshotPopup.BorderThickness = new Thickness(0, 0, 0, 0);
            System.Drawing.Rectangle workingArea = Screen.AllScreens[MainVM.DisplayIndex].WorkingArea;
            screenshotPopup.Left        = workingArea.Left;
            screenshotPopup.Top         = workingArea.Top;
            screenshotPopup.Width       = workingArea.Width;
            screenshotPopup.Height      = workingArea.Height;
            screenshotPopup.WindowState = WindowState.Maximized;
            screenshotPopup.WindowStyle = WindowStyle.None;
            screenshotPopup.Topmost     = true;
            screenshotPopup.ShowDialog();


            try
            {
                var result = (await VisionAPIHelper
                              .TextDetectionAsync(BitmapHelper.BitmapImageToBytes(screenshotPopup.CroppedImage)))[0]
                             .ToString();

                var    json = JObject.Parse(result);
                string text = json["description"].ToString();
                detectionContainer.Document.Blocks.Add(new Paragraph(new Run(text)));
                var range = new TextRange(detectionContainer.Document.ContentStart, (detectionContainer.Document.ContentEnd));
                SaveDectionResult(range);
            }
            catch (Exception err)
            {
                Console.WriteLine(err);
                detectionContainer.Document.Blocks.Add(new Paragraph(new Run("please try again")));
            }
        }
        private void HandleOriginalScreenshot(object sender, EventArgs args)
        {
            var screenshotPopup = new ScreenshotFullscreenPopup(File.ReadAllBytes(MainVM.SelectedPage.ScreenshotByteArray));

            screenshotPopup.BorderThickness = new Thickness(0, 0, 0, 0);
            System.Drawing.Rectangle workingArea = Screen.AllScreens[MainVM.DisplayIndex].WorkingArea;
            screenshotPopup.Left        = workingArea.Left;
            screenshotPopup.Top         = workingArea.Top;
            screenshotPopup.Width       = workingArea.Width;
            screenshotPopup.Height      = workingArea.Height;
            screenshotPopup.WindowState = WindowState.Maximized;
            screenshotPopup.WindowStyle = WindowStyle.None;
            screenshotPopup.Topmost     = true;
            screenshotPopup.ShowDialog();
            MainVM.CropLayer           = screenshotPopup.CropLayer;
            screenshotContainer.Source = null;

            MainVM.Pages[MainVM.SelectedPageIndex].CroppedScreenshotByteArray = BitmapHelper.SaveCroppedBitmapReturnPath(screenshotPopup.CroppedImage, MainVM.Pages[MainVM.SelectedPageIndex]);

            MainVM.Pages[MainVM.SelectedPageIndex].Version++;

            DatabaseHelper.Update(MainVM.Pages[MainVM.SelectedPageIndex]);
            if (pagesList.Items.Count > 0)
            {
                pagesList.SelectedIndex = MainVM.SelectedPageIndex;
            }
        }
        private async void HandleScreenshot(object sender, EventArgs args)
        {
            if (MainVM.DoUsePreviousSelection == false)
            {
                var screenshotPopup = new ScreenshotFullscreenPopup(File.ReadAllBytes(MainVM.CurrentScreenshot));
                screenshotPopup.BorderThickness = new Thickness(0, 0, 0, 0);
                System.Drawing.Rectangle workingArea = Screen.AllScreens[MainVM.DisplayIndex].WorkingArea;
                screenshotPopup.Left = workingArea.Left;
                screenshotPopup.SourceInitialized += screenshotPopup_SourceInitialized;

                void screenshotPopup_SourceInitialized(object Sender, EventArgs Args)
                {
                    screenshotPopup.Top         = workingArea.Top;
                    screenshotPopup.Width       = workingArea.Width;
                    screenshotPopup.Height      = workingArea.Height;
                    screenshotPopup.WindowState = WindowState.Maximized;
                    screenshotPopup.WindowStyle = WindowStyle.None;
                    screenshotPopup.Topmost     = true;
                }

                screenshotPopup.ShowDialog();
                MainVM.CropLayer = screenshotPopup.CropLayer;
                this.WindowState = WindowState.Normal;
                try
                {
                    var response = await VisionAPIHelper.TextDetectionAsync(BitmapHelper.BitmapImageToBytes(screenshotPopup.CroppedImage));

                    var    result = response[0].ToString();
                    var    json   = JObject.Parse(result);
                    string text   = json["description"].ToString();
                    detectionContainer.Document.Blocks.Clear();
                    detectionContainer.Document.Blocks.Add(new Paragraph(new Run(text)));
                    var range = new TextRange(detectionContainer.Document.ContentStart, (detectionContainer.Document.ContentEnd));
                    SaveDectionResult(range);
                }
                catch (Exception err)
                {
                    detectionContainer.Document.Blocks.Clear();
                    detectionContainer.Document.Blocks.Add(new Paragraph(new Run("Please try again")));
                    var range = new TextRange(detectionContainer.Document.ContentStart, (detectionContainer.Document.ContentEnd));
                    SaveDectionResult(range);
                }
            }
            else
            {
                BitmapImage cropImageByPreviousSelection = BitmapHelper.CropImage(File.ReadAllBytes(MainVM.CurrentScreenshot), MainVM.CropLayer);
                try
                {
                    var    result = (await VisionAPIHelper.TextDetectionAsync(BitmapHelper.BitmapImageToBytes(cropImageByPreviousSelection)))[0].ToString();
                    var    json   = JObject.Parse(result);
                    string text   = json["description"].ToString();
                    detectionContainer.Document.Blocks.Clear();
                    detectionContainer.Document.Blocks.Add(new Paragraph(new Run(text)));
                    var range = new TextRange(detectionContainer.Document.ContentStart, (detectionContainer.Document.ContentEnd));
                    SaveDectionResult(range);
                }
                catch (Exception err)
                {
                    detectionContainer.Document.Blocks.Clear();
                    detectionContainer.Document.Blocks.Add(new Paragraph(new Run("mo text ar dai gor")));
                }
            }
        }