Support regular textbox context menu functions in the EquationTextBox (#1065)
* Add context menu items back * Disable if no selection
This commit is contained in:
@@ -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*/)
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user