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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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_kgfEquationMenuItem = dynamic_cast<MenuFlyoutItem ^>(GetTemplateChild("FunctionAnalysisMenuItem"));
m_removeMenuItem = dynamic_cast<MenuFlyoutItem ^>(GetTemplateChild("RemoveFunctionMenuItem")); m_removeMenuItem = dynamic_cast<MenuFlyoutItem ^>(GetTemplateChild("RemoveFunctionMenuItem"));
m_colorChooserMenuItem = dynamic_cast<MenuFlyoutItem ^>(GetTemplateChild("ChangeFunctionStyleMenuItem")); 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(); auto resProvider = AppResourceProvider::GetInstance();
@ -65,7 +70,8 @@ void EquationTextBox::OnApplyTemplate()
auto equationButtonMessage = LocalizationStringUtil::GetLocalizedString( auto equationButtonMessage = LocalizationStringUtil::GetLocalizedString(
m_equationButton->IsChecked->Value ? resProvider->GetResourceString(L"showEquationButtonToolTip") m_equationButton->IsChecked->Value ? resProvider->GetResourceString(L"showEquationButtonToolTip")
: resProvider->GetResourceString(L"hideEquationButtonToolTip"), EquationButtonContentIndex); : resProvider->GetResourceString(L"hideEquationButtonToolTip"),
EquationButtonContentIndex);
toolTip->Content = equationButtonMessage; toolTip->Content = equationButtonMessage;
ToolTipService::SetToolTip(m_equationButton, toolTip); ToolTipService::SetToolTip(m_equationButton, toolTip);
@ -122,6 +128,31 @@ void EquationTextBox::OnApplyTemplate()
ColorChooserFlyout->Closed += ref new EventHandler<Object ^>(this, &EquationTextBox::OnColorFlyoutClosed); 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(); UpdateCommonVisualState();
UpdateButtonsVisualState(); UpdateButtonsVisualState();
} }
@ -208,7 +239,8 @@ void EquationTextBox::OnEquationButtonClicked(Object ^ sender, RoutedEventArgs ^
auto equationButtonMessage = LocalizationStringUtil::GetLocalizedString( auto equationButtonMessage = LocalizationStringUtil::GetLocalizedString(
m_equationButton->IsChecked->Value ? resProvider->GetResourceString(L"showEquationButtonToolTip") m_equationButton->IsChecked->Value ? resProvider->GetResourceString(L"showEquationButtonToolTip")
: resProvider->GetResourceString(L"hideEquationButtonToolTip"), EquationButtonContentIndex); : resProvider->GetResourceString(L"hideEquationButtonToolTip"),
EquationButtonContentIndex);
toolTip->Content = equationButtonMessage; toolTip->Content = equationButtonMessage;
ToolTipService::SetToolTip(m_equationButton, toolTip); ToolTipService::SetToolTip(m_equationButton, toolTip);
@ -256,6 +288,46 @@ void EquationTextBox::OnFunctionButtonClicked(Object ^ sender, RoutedEventArgs ^
KeyGraphFeaturesButtonClicked(this, ref new 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() void EquationTextBox::UpdateButtonsVisualState()
{ {
String ^ state; String ^ state;
@ -355,6 +427,26 @@ void EquationTextBox::OnRichEditMenuOpened(Object ^ /*sender*/, Object ^ /*args*
{ {
m_colorChooserMenuItem->IsEnabled = !HasError && !IsAddEquationMode; 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*/) 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 OnFunctionButtonClicked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
void OnRichEditMenuOpened(Platform::Object ^ sender, Platform::Object ^ args); 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 OnColorFlyoutOpened(Platform::Object ^ sender, Platform::Object ^ e);
void OnColorFlyoutClosed(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::Primitives::ToggleButton ^ m_colorChooserButton;
Windows::UI::Xaml::Controls::MenuFlyout^ m_richEditContextMenu; 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_kgfEquationMenuItem;
Windows::UI::Xaml::Controls::MenuFlyoutItem^ m_removeMenuItem; Windows::UI::Xaml::Controls::MenuFlyoutItem^ m_removeMenuItem;
Windows::UI::Xaml::Controls::MenuFlyoutItem^ m_colorChooserMenuItem; Windows::UI::Xaml::Controls::MenuFlyoutItem^ m_colorChooserMenuItem;

View File

@ -4266,4 +4266,24 @@
<value>Copy</value> <value>Copy</value>
<comment>Copy menu item for the graph context menu</comment> <comment>Copy menu item for the graph context menu</comment>
</data> </data>
<data name="cutEquationMenuItem.Text" xml:space="preserve">
<value>Cut</value>
<comment>Cut menu item from the Equation TextBox</comment>
</data>
<data name="copyEquationMenuItem.Text" xml:space="preserve">
<value>Copy</value>
<comment>Copy menu item from the Equation TextBox</comment>
</data>
<data name="pasteEquationMenuItem.Text" xml:space="preserve">
<value>Paste</value>
<comment>Paste menu item from the Equation TextBox</comment>
</data>
<data name="undoEquationMenuItem.Text" xml:space="preserve">
<value>Undo</value>
<comment>Undo menu item from the Equation TextBox</comment>
</data>
<data name="selectAllEquationMenuItem.Text" xml:space="preserve">
<value>Select All</value>
<comment>Select all menu item from the Equation TextBox</comment>
</data>
</root> </root>

View File

@ -582,6 +582,20 @@
TextWrapping="NoWrap"> TextWrapping="NoWrap">
<controls:MathRichEditBox.ContextFlyout> <controls:MathRichEditBox.ContextFlyout>
<MenuFlyout x:Name="MathRichEditContextMenu"> <MenuFlyout x:Name="MathRichEditContextMenu">
<MenuFlyoutItem x:Name="CutMenuItem"
x:Uid="cutEquationMenuItem"
Icon="Cut"/>
<MenuFlyoutItem x:Name="CopyMenuItem"
x:Uid="copyEquationMenuItem"
Icon="Copy"/>
<MenuFlyoutItem x:Name="PasteMenuItem"
x:Uid="pasteEquationMenuItem"
Icon="Paste"/>
<MenuFlyoutItem x:Name="UndoMenuItem"
x:Uid="undoEquationMenuItem"
Icon="Undo"/>
<MenuFlyoutItem x:Name="SelectAllMenuItem" x:Uid="selectAllEquationMenuItem"/>
<MenuFlyoutSeparator/>
<MenuFlyoutItem x:Name="FunctionAnalysisMenuItem"> <MenuFlyoutItem x:Name="FunctionAnalysisMenuItem">
<MenuFlyoutItem.Icon> <MenuFlyoutItem.Icon>
<FontIcon FontFamily="{StaticResource CalculatorFontFamily}" Glyph="&#xE3B5;"/> <FontIcon FontFamily="{StaticResource CalculatorFontFamily}" Glyph="&#xE3B5;"/>