Support regular textbox context menu functions in the EquationTextBox (#1065)

* Add context menu items back

* Disable if no selection
This commit is contained in:
Pepe Rivera
2020-03-11 18:38:12 -07:00
committed by GitHub
parent 59c55a9333
commit a2794b3705
4 changed files with 139 additions and 2 deletions

View File

@@ -44,6 +44,11 @@ void EquationTextBox::OnApplyTemplate()
m_kgfEquationMenuItem = dynamic_cast<MenuFlyoutItem ^>(GetTemplateChild("FunctionAnalysisMenuItem"));
m_removeMenuItem = dynamic_cast<MenuFlyoutItem ^>(GetTemplateChild("RemoveFunctionMenuItem"));
m_colorChooserMenuItem = dynamic_cast<MenuFlyoutItem ^>(GetTemplateChild("ChangeFunctionStyleMenuItem"));
m_cutMenuItem = dynamic_cast<MenuFlyoutItem ^>(GetTemplateChild("CutMenuItem"));
m_copyMenuItem = dynamic_cast<MenuFlyoutItem ^>(GetTemplateChild("CopyMenuItem"));
m_pasteMenuItem = dynamic_cast<MenuFlyoutItem ^>(GetTemplateChild("PasteMenuItem"));
m_undoMenuItem = dynamic_cast<MenuFlyoutItem ^>(GetTemplateChild("UndoMenuItem"));
m_selectAllMenuItem = dynamic_cast<MenuFlyoutItem ^>(GetTemplateChild("SelectAllMenuItem"));
auto resProvider = AppResourceProvider::GetInstance();
@@ -65,7 +70,8 @@ void EquationTextBox::OnApplyTemplate()
auto equationButtonMessage = LocalizationStringUtil::GetLocalizedString(
m_equationButton->IsChecked->Value ? resProvider->GetResourceString(L"showEquationButtonToolTip")
: resProvider->GetResourceString(L"hideEquationButtonToolTip"), EquationButtonContentIndex);
: resProvider->GetResourceString(L"hideEquationButtonToolTip"),
EquationButtonContentIndex);
toolTip->Content = equationButtonMessage;
ToolTipService::SetToolTip(m_equationButton, toolTip);
@@ -122,6 +128,31 @@ void EquationTextBox::OnApplyTemplate()
ColorChooserFlyout->Closed += ref new EventHandler<Object ^>(this, &EquationTextBox::OnColorFlyoutClosed);
}
if (m_cutMenuItem != nullptr)
{
m_cutMenuItem->Click += ref new RoutedEventHandler(this, &EquationTextBox::OnCutClicked);
}
if (m_copyMenuItem != nullptr)
{
m_copyMenuItem->Click += ref new RoutedEventHandler(this, &EquationTextBox::OnCopyClicked);
}
if (m_pasteMenuItem != nullptr)
{
m_pasteMenuItem->Click += ref new RoutedEventHandler(this, &EquationTextBox::OnPasteClicked);
}
if (m_undoMenuItem != nullptr)
{
m_undoMenuItem->Click += ref new RoutedEventHandler(this, &EquationTextBox::OnUndoClicked);
}
if (m_selectAllMenuItem != nullptr)
{
m_selectAllMenuItem->Click += ref new RoutedEventHandler(this, &EquationTextBox::OnSelectAllClicked);
}
UpdateCommonVisualState();
UpdateButtonsVisualState();
}
@@ -208,7 +239,8 @@ void EquationTextBox::OnEquationButtonClicked(Object ^ sender, RoutedEventArgs ^
auto equationButtonMessage = LocalizationStringUtil::GetLocalizedString(
m_equationButton->IsChecked->Value ? resProvider->GetResourceString(L"showEquationButtonToolTip")
: resProvider->GetResourceString(L"hideEquationButtonToolTip"), EquationButtonContentIndex);
: resProvider->GetResourceString(L"hideEquationButtonToolTip"),
EquationButtonContentIndex);
toolTip->Content = equationButtonMessage;
ToolTipService::SetToolTip(m_equationButton, toolTip);
@@ -256,6 +288,46 @@ void EquationTextBox::OnFunctionButtonClicked(Object ^ sender, RoutedEventArgs ^
KeyGraphFeaturesButtonClicked(this, ref new RoutedEventArgs());
}
void EquationTextBox::OnCutClicked(Object ^ sender, RoutedEventArgs ^ e)
{
if (m_richEditBox != nullptr)
{
m_richEditBox->TextDocument->Selection->Cut();
}
}
void EquationTextBox::OnCopyClicked(Object ^ sender, RoutedEventArgs ^ e)
{
if (m_richEditBox != nullptr)
{
m_richEditBox->TextDocument->Selection->Copy();
}
}
void EquationTextBox::OnPasteClicked(Object ^ sender, RoutedEventArgs ^ e)
{
if (m_richEditBox != nullptr)
{
m_richEditBox->TextDocument->Selection->Paste(0);
}
}
void EquationTextBox::OnSelectAllClicked(Object ^ sender, RoutedEventArgs ^ e)
{
if (m_richEditBox != nullptr)
{
m_richEditBox->TextDocument->Selection->SetRange(0, m_richEditBox->TextDocument->Selection->EndPosition);
}
}
void EquationTextBox::OnUndoClicked(Object ^ sender, RoutedEventArgs ^ e)
{
if (m_richEditBox != nullptr)
{
m_richEditBox->TextDocument->Undo();
}
}
void EquationTextBox::UpdateButtonsVisualState()
{
String ^ state;
@@ -355,6 +427,26 @@ void EquationTextBox::OnRichEditMenuOpened(Object ^ /*sender*/, Object ^ /*args*
{
m_colorChooserMenuItem->IsEnabled = !HasError && !IsAddEquationMode;
}
if (m_richEditBox != nullptr && m_cutMenuItem != nullptr)
{
m_cutMenuItem->IsEnabled = m_richEditBox->TextDocument->CanCopy() && m_richEditBox->TextDocument->Selection->Length > 0;
}
if (m_richEditBox != nullptr && m_copyMenuItem != nullptr)
{
m_copyMenuItem->IsEnabled = m_richEditBox->TextDocument->CanCopy() && m_richEditBox->TextDocument->Selection->Length > 0;
}
if (m_richEditBox != nullptr && m_pasteMenuItem != nullptr)
{
m_pasteMenuItem->IsEnabled = m_richEditBox->TextDocument->CanPaste();
}
if (m_richEditBox != nullptr && m_undoMenuItem != nullptr)
{
m_undoMenuItem->IsEnabled = m_richEditBox->TextDocument->CanUndo();
}
}
void EquationTextBox::OnIsAddEquationModePropertyChanged(bool /*oldValue*/, bool /*newValue*/)

View File

@@ -60,6 +60,12 @@ namespace CalculatorApp
void OnFunctionButtonClicked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
void OnRichEditMenuOpened(Platform::Object ^ sender, Platform::Object ^ args);
void OnCutClicked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
void OnCopyClicked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
void OnPasteClicked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
void OnUndoClicked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
void OnSelectAllClicked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
void OnColorFlyoutOpened(Platform::Object ^ sender, Platform::Object ^ e);
void OnColorFlyoutClosed(Platform::Object ^ sender, Platform::Object ^ e);
@@ -73,6 +79,11 @@ namespace CalculatorApp
Windows::UI::Xaml::Controls::Primitives::ToggleButton ^ m_colorChooserButton;
Windows::UI::Xaml::Controls::MenuFlyout^ m_richEditContextMenu;
Windows::UI::Xaml::Controls::MenuFlyoutItem ^ m_cutMenuItem;
Windows::UI::Xaml::Controls::MenuFlyoutItem ^ m_copyMenuItem;
Windows::UI::Xaml::Controls::MenuFlyoutItem ^ m_pasteMenuItem;
Windows::UI::Xaml::Controls::MenuFlyoutItem ^ m_undoMenuItem;
Windows::UI::Xaml::Controls::MenuFlyoutItem ^ m_selectAllMenuItem;
Windows::UI::Xaml::Controls::MenuFlyoutItem^ m_kgfEquationMenuItem;
Windows::UI::Xaml::Controls::MenuFlyoutItem^ m_removeMenuItem;
Windows::UI::Xaml::Controls::MenuFlyoutItem^ m_colorChooserMenuItem;