From 942743c5df711d22794db8fd243d1f9fc62d408b Mon Sep 17 00:00:00 2001 From: Joseph Finney Date: Sat, 17 Feb 2024 14:45:24 -0600 Subject: [PATCH] Add better margin logic --- Text-Grab/Views/EditTextWindow.xaml | 4 +- Text-Grab/Views/EditTextWindow.xaml.cs | 250 ++++++++++++------------- 2 files changed, 127 insertions(+), 127 deletions(-) diff --git a/Text-Grab/Views/EditTextWindow.xaml b/Text-Grab/Views/EditTextWindow.xaml index 43324bca..5176c32b 100644 --- a/Text-Grab/Views/EditTextWindow.xaml +++ b/Text-Grab/Views/EditTextWindow.xaml @@ -8,8 +8,8 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml" Title="Edit Text" - Width="680" - Height="450" + Width="800" + Height="500" MinWidth="200" MinHeight="200" Activated="Window_Activated" diff --git a/Text-Grab/Views/EditTextWindow.xaml.cs b/Text-Grab/Views/EditTextWindow.xaml.cs index ca05cc0d..d2831797 100644 --- a/Text-Grab/Views/EditTextWindow.xaml.cs +++ b/Text-Grab/Views/EditTextWindow.xaml.cs @@ -568,6 +568,11 @@ private void CanOcrPasteExecute(object sender, CanExecuteRoutedEventArgs e) e.CanExecute = false; } + private void CaptureMenuItem_SubmenuOpened(object sender, RoutedEventArgs e) + { + LoadLanguageMenuItems(LanguageMenuItem); + } + private void CheckForGrabFrameOrLaunch() { WindowCollection allWindows = System.Windows.Application.Current.Windows; @@ -963,6 +968,19 @@ private void KeyedEscape(object sender, ExecutedRoutedEventArgs e) cancellationTokenForDirOCR?.Cancel(); } + private void LanguageMenuItem_Click(object sender, RoutedEventArgs e) + { + if (LanguageMenuItem is null || sender is not MenuItem clickedMenuItem) + return; + + foreach (MenuItem menuItem in LanguageMenuItem.Items) + { + menuItem.IsChecked = false; + } + + clickedMenuItem.IsChecked = true; + } + private void LaunchFindAndReplace() { FindAndReplaceWindow findAndReplaceWindow = WindowUtilities.OpenOrActivateWindow(); @@ -1024,6 +1042,71 @@ private void ListFilesMenuItem_Click(object sender, RoutedEventArgs e) } } + private async void LoadLanguageMenuItems(MenuItem captureMenuItem) + { + if (captureMenuItem.Items.Count > 0) + return; + + // TODO Find a way to combine with the FSG language drop down + + bool haveSetLastLang = false; + string lastTextLang = Settings.Default.LastUsedLang; + bool usingTesseract = Settings.Default.UseTesseract && TesseractHelper.CanLocateTesseractExe(); + + if (usingTesseract) + { + List tesseractLanguages = await TesseractHelper.TesseractLanguages(); + + foreach (TessLang language in tesseractLanguages.Cast()) + { + MenuItem languageMenuItem = new() + { + Header = language.DisplayName, + Tag = language, + IsCheckable = true, + }; + languageMenuItem.Click += LanguageMenuItem_Click; + + captureMenuItem.Items.Add(languageMenuItem); + + if (!haveSetLastLang && language.CultureDisplayName == lastTextLang) + { + languageMenuItem.IsChecked = true; + haveSetLastLang = true; + } + } + } + + IReadOnlyList possibleOCRLanguages = OcrEngine.AvailableRecognizerLanguages; + + Language firstLang = LanguageUtilities.GetOCRLanguage(); + + foreach (Language language in possibleOCRLanguages) + { + MenuItem languageMenuItem = new() + { + Header = language.DisplayName, + Tag = language, + IsCheckable = true, + }; + languageMenuItem.Click += LanguageMenuItem_Click; + + captureMenuItem.Items.Add(languageMenuItem); + + if (!haveSetLastLang && + (language.AbbreviatedName.Equals(firstLang?.AbbreviatedName.ToLower(), StringComparison.CurrentCultureIgnoreCase) + || language.LanguageTag.Equals(firstLang?.LanguageTag.ToLower(), StringComparison.CurrentCultureIgnoreCase))) + { + languageMenuItem.IsChecked = true; + haveSetLastLang = true; + } + } + if (!haveSetLastLang && captureMenuItem.Items[0] is MenuItem firstMenuItem) + { + firstMenuItem.IsChecked = true; + } + } + private void LoadRecentTextHistory() { List grabsHistories = Singleton.Instance.GetEditWindows(); @@ -1080,6 +1163,15 @@ private void MakeQrCodeExecuted(object sender, ExecutedRoutedEventArgs e) window.Show(); } + private void MarginsMenuItem_Checked(object sender, RoutedEventArgs e) + { + if (sender is not MenuItem marginsMenuItem) + return; + + Settings.Default.EtwUseMargins = marginsMenuItem.IsChecked; + SetMargins(MarginsMenuItem.IsChecked); + } + private async void MenuItem_SubmenuOpened(object sender, RoutedEventArgs e) { LoadRecentTextHistory(); @@ -1451,6 +1543,19 @@ private void ReplaceReservedCharsCmdExecuted(object sender, ExecutedRoutedEventA PassedTextControl.Text = PassedTextControl.Text.ReplaceReservedCharacters(); } + private void RestorePositionMenuItem_Checked(object sender, RoutedEventArgs e) + { + if (sender is not MenuItem restoreMenuItem) + return; + + Settings.Default.RestoreEtwPositions = restoreMenuItem.IsChecked; + } + + private void RestoreThisPosition_Click(object sender, RoutedEventArgs e) + { + WindowUtilities.SetWindowPosition(this); + } + private void RestoreWindowSettings() { if (Settings.Default.EditWindowStartFullscreen @@ -1610,6 +1715,24 @@ private void SetFontFromSettings() PassedTextControl.TextDecorations = tdc; } + private void SetMargins(bool AreThereMargins) + { + + if (AreThereMargins) + { + if (PassedTextControl.ActualWidth < 400) + PassedTextControl.Padding = new Thickness(10, 0, 10, 0); + else if (PassedTextControl.ActualWidth < 1000) + PassedTextControl.Padding = new Thickness(50, 0, 50, 0); + else if (PassedTextControl.ActualWidth < 1400) + PassedTextControl.Padding = new Thickness(100, 0, 100, 0); + else + PassedTextControl.Padding = new Thickness(160, 0, 160, 0); + } + else + PassedTextControl.Padding = new Thickness(0); + } + private void SettingsMenuItem_Click(object sender, RoutedEventArgs e) { WindowUtilities.OpenOrActivateWindow(); @@ -1880,8 +2003,8 @@ private void Window_Activated(object sender, EventArgs e) private void Window_Closed(object? sender, EventArgs e) { string windowSizeAndPosition = $"{this.Left},{this.Top},{this.Width},{this.Height}"; - Properties.Settings.Default.EditTextWindowSizeAndPosition = windowSizeAndPosition; - Properties.Settings.Default.Save(); + Settings.Default.EditTextWindowSizeAndPosition = windowSizeAndPosition; + Settings.Default.Save(); Windows.ApplicationModel.DataTransfer.Clipboard.ContentChanged -= Clipboard_ContentChanged; @@ -1948,128 +2071,5 @@ private void WrapTextCHBOX_Checked(object sender, RoutedEventArgs e) Settings.Default.EditWindowIsWordWrapOn = (bool)WrapTextMenuItem.IsChecked; } - - private void CaptureMenuItem_SubmenuOpened(object sender, RoutedEventArgs e) - { - LoadLanguageMenuItems(LanguageMenuItem); - } - - private async void LoadLanguageMenuItems(MenuItem captureMenuItem) - { - if (captureMenuItem.Items.Count > 0) - return; - - // TODO Find a way to combine with the FSG language drop down - - bool haveSetLastLang = false; - string lastTextLang = Settings.Default.LastUsedLang; - bool usingTesseract = Settings.Default.UseTesseract && TesseractHelper.CanLocateTesseractExe(); - - if (usingTesseract) - { - List tesseractLanguages = await TesseractHelper.TesseractLanguages(); - - foreach (TessLang language in tesseractLanguages.Cast()) - { - MenuItem languageMenuItem = new() - { - Header = language.DisplayName, - Tag = language, - IsCheckable = true, - }; - languageMenuItem.Click += LanguageMenuItem_Click; - - captureMenuItem.Items.Add(languageMenuItem); - - if (!haveSetLastLang && language.CultureDisplayName == lastTextLang) - { - languageMenuItem.IsChecked = true; - haveSetLastLang = true; - } - } - } - - IReadOnlyList possibleOCRLanguages = OcrEngine.AvailableRecognizerLanguages; - - Language firstLang = LanguageUtilities.GetOCRLanguage(); - - foreach (Language language in possibleOCRLanguages) - { - MenuItem languageMenuItem = new() - { - Header = language.DisplayName, - Tag = language, - IsCheckable = true, - }; - languageMenuItem.Click += LanguageMenuItem_Click; - - captureMenuItem.Items.Add(languageMenuItem); - - if (!haveSetLastLang && - (language.AbbreviatedName.Equals(firstLang?.AbbreviatedName.ToLower(), StringComparison.CurrentCultureIgnoreCase) - || language.LanguageTag.Equals(firstLang?.LanguageTag.ToLower(), StringComparison.CurrentCultureIgnoreCase))) - { - languageMenuItem.IsChecked = true; - haveSetLastLang = true; - } - } - if (!haveSetLastLang && captureMenuItem.Items[0] is MenuItem firstMenuItem) - { - firstMenuItem.IsChecked = true; - } - } - - private void LanguageMenuItem_Click(object sender, RoutedEventArgs e) - { - if (LanguageMenuItem is null || sender is not MenuItem clickedMenuItem) - return; - - foreach (MenuItem menuItem in LanguageMenuItem.Items) - { - menuItem.IsChecked = false; - } - - clickedMenuItem.IsChecked = true; - } #endregion Methods - - private void MarginsMenuItem_Checked(object sender, RoutedEventArgs e) - { - if (sender is not MenuItem marginsMenuItem) - return; - - Settings.Default.EtwUseMargins = marginsMenuItem.IsChecked; - SetMargins(MarginsMenuItem.IsChecked); - } - - private void SetMargins(bool AreThereMargins) - { - - if (AreThereMargins) - { - if (Width < 200) - PassedTextControl.Padding = new Thickness(10,0,10,0); - else if (Width < 800) - PassedTextControl.Padding = new Thickness(50,0,50,0); - else if (Width < 1200) - PassedTextControl.Padding = new Thickness(100,0,100,0); - else - PassedTextControl.Padding = new Thickness(160,0,160,0); - } - else - PassedTextControl.Padding = new Thickness(0); - } - - private void RestorePositionMenuItem_Checked(object sender, RoutedEventArgs e) - { - if (sender is not MenuItem restoreMenuItem) - return; - - Settings.Default.RestoreEtwPositions = restoreMenuItem.IsChecked; - } - - private void RestoreThisPosition_Click(object sender, RoutedEventArgs e) - { - WindowUtilities.SetWindowPosition(this); - } }