Skip to content

Commit

Permalink
Add better margin logic
Browse files Browse the repository at this point in the history
  • Loading branch information
TheJoeFin committed Feb 17, 2024
1 parent c2f385b commit 942743c
Show file tree
Hide file tree
Showing 2 changed files with 127 additions and 127 deletions.
4 changes: 2 additions & 2 deletions Text-Grab/Views/EditTextWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
250 changes: 125 additions & 125 deletions Text-Grab/Views/EditTextWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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<FindAndReplaceWindow>();
Expand Down Expand Up @@ -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<ILanguage> tesseractLanguages = await TesseractHelper.TesseractLanguages();

foreach (TessLang language in tesseractLanguages.Cast<TessLang>())
{
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<Language> 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<HistoryInfo> grabsHistories = Singleton<HistoryService>.Instance.GetEditWindows();
Expand Down Expand Up @@ -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();
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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<SettingsWindow>();
Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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<ILanguage> tesseractLanguages = await TesseractHelper.TesseractLanguages();

foreach (TessLang language in tesseractLanguages.Cast<TessLang>())
{
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<Language> 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);
}
}

0 comments on commit 942743c

Please sign in to comment.