Skip to content

Commit

Permalink
SelectionMode --> TripleClickSelectionMode
Browse files Browse the repository at this point in the history
Terminal: save winrt version of enum
Added doc comments
  • Loading branch information
carlos-zamora committed Jun 28, 2019
1 parent 9db18ab commit 23ae33c
Show file tree
Hide file tree
Showing 8 changed files with 49 additions and 52 deletions.
52 changes: 33 additions & 19 deletions src/cascadia/TerminalApp/Profile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,9 @@ static constexpr std::string_view ImageStretchModeUniform{ "uniform" };
static constexpr std::string_view ImageStretchModeUniformTofill{ "uniformToFill" };

// Possible values for Triple Click Selection Mode
static constexpr std::wstring_view SelectionModeDisabled{ L"disabled" };
static constexpr std::wstring_view SelectionModeLine{ L"line" };
static constexpr std::wstring_view SelectionModeViewport{ L"viewport" };
static constexpr std::wstring_view TripleClickSelectionModeDisabled{ L"disabled" };
static constexpr std::wstring_view TripleClickSelectionModeLine{ L"line" };
static constexpr std::wstring_view TripleClickSelectionModeViewport{ L"viewport" };

Profile::Profile() :
Profile(Utils::CreateGuid())
Expand All @@ -82,7 +82,7 @@ Profile::Profile(const winrt::guid& guid) :
_cursorColor{ DEFAULT_CURSOR_COLOR },
_cursorShape{ CursorStyle::Bar },
_cursorHeight{ DEFAULT_CURSOR_HEIGHT },
_tripleClickSelectionMode{ SelectionMode::Line },
_tripleClickSelectionMode{ TripleClickSelectionMode::Line },

_commandline{ L"cmd.exe" },
_startingDirectory{},
Expand Down Expand Up @@ -257,7 +257,7 @@ Json::Value Profile::ToJson() const
root[JsonKey(CursorHeightKey)] = _cursorHeight;
}
root[JsonKey(CursorShapeKey)] = winrt::to_string(_SerializeCursorStyle(_cursorShape));
root[JsonKey(TripleClickSelectionModeKey)] = winrt::to_string(_SerializeSelectionMode(_tripleClickSelectionMode));
root[JsonKey(TripleClickSelectionModeKey)] = winrt::to_string(_SerializeTripleClickSelectionMode(_tripleClickSelectionMode));

///// Control Settings /////
root[JsonKey(CommandlineKey)] = winrt::to_string(_commandline);
Expand Down Expand Up @@ -380,7 +380,7 @@ Profile Profile::FromJson(const Json::Value& json)
}
if (auto tripleClickSelectionMode{ json[JsonKey(TripleClickSelectionModeKey)] })
{
result._tripleClickSelectionMode = _ParseSelectionMode(GetWstringFromJson(tripleClickSelectionMode));
result._tripleClickSelectionMode = _ParseTripleClickSelectionMode(GetWstringFromJson(tripleClickSelectionMode));
}

// Control Settings
Expand Down Expand Up @@ -687,29 +687,43 @@ std::wstring_view Profile::_SerializeCursorStyle(const CursorStyle cursorShape)
}
}

winrt::Microsoft::Terminal::Settings::SelectionMode Profile::_ParseSelectionMode(const std::wstring& selectionModeString)
// Method Description:
// - Helper function for converting a user-specified triple click selection mode to the corresponding
// TripleClickSelectionMode enum value
// Arguments:
// - selectionModeString: The string value from the settings file to parse
// Return Value:
// - The corresponding enum value which maps to the string provided by the user
winrt::Microsoft::Terminal::Settings::TripleClickSelectionMode Profile::_ParseTripleClickSelectionMode(const std::wstring& selectionModeString)
{
if (selectionModeString == SelectionModeDisabled)
if (selectionModeString == TripleClickSelectionModeDisabled)
{
return SelectionMode::Disabled;
return winrt::Microsoft::Terminal::Settings::TripleClickSelectionMode::Disabled;
}
else if (selectionModeString == SelectionModeViewport)
else if (selectionModeString == TripleClickSelectionModeViewport)
{
return SelectionMode::VisibleViewport;
return winrt::Microsoft::Terminal::Settings::TripleClickSelectionMode::VisibleViewport;
}
return SelectionMode::Line;
return winrt::Microsoft::Terminal::Settings::TripleClickSelectionMode::Line;
}

std::wstring_view Profile::_SerializeSelectionMode(const winrt::Microsoft::Terminal::Settings::SelectionMode selectionMode)
// Method Description:
// - Helper function for converting a TripleClickSelectionMode to its corresponding string
// value.
// Arguments:
// - selectionMode: The enum value to convert to a string.
// Return Value:
// - The string value for the given TripleClickSelectionMode
std::wstring_view Profile::_SerializeTripleClickSelectionMode(const winrt::Microsoft::Terminal::Settings::TripleClickSelectionMode selectionMode)
{
switch (selectionMode)
{
case SelectionMode::Disabled:
return SelectionModeDisabled;
case SelectionMode::VisibleViewport:
return SelectionModeViewport;
case SelectionMode::Line:
case winrt::Microsoft::Terminal::Settings::TripleClickSelectionMode::Disabled:
return TripleClickSelectionModeDisabled;
case winrt::Microsoft::Terminal::Settings::TripleClickSelectionMode::VisibleViewport:
return TripleClickSelectionModeViewport;
case winrt::Microsoft::Terminal::Settings::TripleClickSelectionMode::Line:
default:
return SelectionModeLine;
return TripleClickSelectionModeLine;
}
}
6 changes: 3 additions & 3 deletions src/cascadia/TerminalApp/Profile.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ class TerminalApp::Profile final
static std::string_view SerializeImageStretchMode(const winrt::Windows::UI::Xaml::Media::Stretch imageStretchMode);
static winrt::Microsoft::Terminal::Settings::CursorStyle _ParseCursorShape(const std::wstring& cursorShapeString);
static std::wstring_view _SerializeCursorStyle(const winrt::Microsoft::Terminal::Settings::CursorStyle cursorShape);
static winrt::Microsoft::Terminal::Settings::SelectionMode _ParseSelectionMode(const std::wstring& selectionModeString);
static std::wstring_view _SerializeSelectionMode(const winrt::Microsoft::Terminal::Settings::SelectionMode selectionMode);
static winrt::Microsoft::Terminal::Settings::TripleClickSelectionMode _ParseTripleClickSelectionMode(const std::wstring& selectionModeString);
static std::wstring_view _SerializeTripleClickSelectionMode(const winrt::Microsoft::Terminal::Settings::TripleClickSelectionMode selectionMode);

GUID _guid;
std::wstring _name;
Expand All @@ -78,7 +78,7 @@ class TerminalApp::Profile final
uint32_t _cursorColor;
uint32_t _cursorHeight;
winrt::Microsoft::Terminal::Settings::CursorStyle _cursorShape;
winrt::Microsoft::Terminal::Settings::SelectionMode _tripleClickSelectionMode;
winrt::Microsoft::Terminal::Settings::TripleClickSelectionMode _tripleClickSelectionMode;

std::wstring _commandline;
std::wstring _fontFace;
Expand Down
14 changes: 1 addition & 13 deletions src/cascadia/TerminalCore/Terminal.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,19 +133,7 @@ void Terminal::UpdateSettings(winrt::Microsoft::Terminal::Settings::ICoreSetting

_snapOnInput = settings.SnapOnInput();

switch (settings.TripleClickSelectionMode())
{
case winrt::Microsoft::Terminal::Settings::SelectionMode::Disabled:
_tripleClickMode = TripleClickSelectionMode::Disabled;
break;
case winrt::Microsoft::Terminal::Settings::SelectionMode::VisibleViewport:
_tripleClickMode = TripleClickSelectionMode::VisibleViewport;
break;
case winrt::Microsoft::Terminal::Settings::SelectionMode::Line:
default:
_tripleClickMode = TripleClickSelectionMode::Line;
break;
}
_tripleClickMode = settings.TripleClickSelectionMode();

// TODO:MSFT:21327402 - if HistorySize has changed, resize the buffer so we
// have a smaller scrollback. We should do this carefully - if the new buffer
Expand Down
9 changes: 2 additions & 7 deletions src/cascadia/TerminalCore/Terminal.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
namespace winrt::Microsoft::Terminal::Settings
{
struct ICoreSettings;
enum class TripleClickSelectionMode;
}

namespace Microsoft::Terminal::Core
Expand Down Expand Up @@ -145,19 +146,13 @@ class Microsoft::Terminal::Core::Terminal final :
bool _snapOnInput;

// Text Selection
enum TripleClickSelectionMode
{
Disabled = 0,
Line,
VisibleViewport
};
COORD _selectionAnchor;
COORD _endSelectionPosition;
bool _boxSelection;
bool _selectionActive;
SHORT _selectionAnchor_YOffset;
SHORT _endSelectionPosition_YOffset;
TripleClickSelectionMode _tripleClickMode;
winrt::Microsoft::Terminal::Settings::TripleClickSelectionMode _tripleClickMode;
void _ExpandDoubleClickSelectionLeft(const COORD position);
void _ExpandDoubleClickSelectionRight(const COORD position);
const bool _DoubleClickDelimiterCheck(std::wstring_view cellChar) const;
Expand Down
4 changes: 2 additions & 2 deletions src/cascadia/TerminalSettings/ICoreSettings.idl
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace Microsoft.Terminal.Settings
EmptyBox
};

enum SelectionMode
enum TripleClickSelectionMode
{
Disabled,
Line,
Expand All @@ -34,7 +34,7 @@ namespace Microsoft.Terminal.Settings
UInt32 CursorColor;
CursorStyle CursorShape;
UInt32 CursorHeight;
SelectionMode TripleClickSelectionMode;
TripleClickSelectionMode TripleClickSelectionMode;
};

}
6 changes: 3 additions & 3 deletions src/cascadia/TerminalSettings/TerminalSettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ namespace winrt::Microsoft::Terminal::Settings::implementation
_cursorColor{ DEFAULT_CURSOR_COLOR },
_cursorShape{ CursorStyle::Vintage },
_cursorHeight{ DEFAULT_CURSOR_HEIGHT },
_tripleClickSelectionMode{ Settings::SelectionMode::Line },
_tripleClickSelectionMode{ Settings::TripleClickSelectionMode::Line },
_useAcrylic{ false },
_closeOnExit{ true },
_tintOpacity{ 0.5 },
Expand Down Expand Up @@ -136,12 +136,12 @@ namespace winrt::Microsoft::Terminal::Settings::implementation
_cursorHeight = value;
}

Settings::SelectionMode TerminalSettings::TripleClickSelectionMode() const noexcept
Settings::TripleClickSelectionMode TerminalSettings::TripleClickSelectionMode() const noexcept
{
return _tripleClickSelectionMode;
}

void TerminalSettings::TripleClickSelectionMode(winrt::Microsoft::Terminal::Settings::SelectionMode const& value) noexcept
void TerminalSettings::TripleClickSelectionMode(winrt::Microsoft::Terminal::Settings::TripleClickSelectionMode const& value) noexcept
{
_tripleClickSelectionMode = value;
}
Expand Down
6 changes: 3 additions & 3 deletions src/cascadia/TerminalSettings/terminalsettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ namespace winrt::Microsoft::Terminal::Settings::implementation
void CursorShape(winrt::Microsoft::Terminal::Settings::CursorStyle const& value) noexcept;
uint32_t CursorHeight();
void CursorHeight(uint32_t value);
Settings::SelectionMode TripleClickSelectionMode() const noexcept;
void TripleClickSelectionMode(winrt::Microsoft::Terminal::Settings::SelectionMode const& value) noexcept;
Settings::TripleClickSelectionMode TripleClickSelectionMode() const noexcept;
void TripleClickSelectionMode(winrt::Microsoft::Terminal::Settings::TripleClickSelectionMode const& value) noexcept;
// ------------------------ End of Core Settings -----------------------

bool UseAcrylic();
Expand Down Expand Up @@ -96,7 +96,7 @@ namespace winrt::Microsoft::Terminal::Settings::implementation
uint32_t _cursorColor;
Settings::CursorStyle _cursorShape;
uint32_t _cursorHeight;
Settings::SelectionMode _tripleClickSelectionMode;
Settings::TripleClickSelectionMode _tripleClickSelectionMode;

bool _useAcrylic;
bool _closeOnExit;
Expand Down
4 changes: 2 additions & 2 deletions src/cascadia/UnitTests_TerminalCore/ScreenSizeLimitsTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ namespace TerminalCoreUnitTests
uint32_t CursorColor() { return COLOR_WHITE; }
CursorStyle CursorShape() const noexcept { return CursorStyle::Vintage; }
uint32_t CursorHeight() { return 42UL; }
SelectionMode TripleClickSelectionMode() { return SelectionMode::Line; }
TripleClickSelectionMode TripleClickSelectionMode() { return TripleClickSelectionMode::Line; }

// other implemented methods
uint32_t GetColorTableEntry(int32_t) const { return 123; }
Expand All @@ -51,7 +51,7 @@ namespace TerminalCoreUnitTests
void CursorColor(uint32_t) {}
void CursorShape(CursorStyle const&) noexcept {}
void CursorHeight(uint32_t) {}
void TripleClickSelectionMode(SelectionMode) {}
void TripleClickSelectionMode(winrt::Microsoft::Terminal::Settings::TripleClickSelectionMode) {}

// other unimplemented methods
void SetColorTableEntry(int32_t /* index */, uint32_t /* value */) {}
Expand Down

0 comments on commit 23ae33c

Please sign in to comment.