mirror of
https://github.com/microsoft/terminal.git
synced 2025-12-11 04:38:24 -06:00
Merge branch 'dev/pabhoj/settings_model_reflection' into dev/pabhoj/settings_actions_editor
This commit is contained in:
commit
41ae7130cf
@ -1229,18 +1229,18 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
|||||||
UpdateCommandID(foundCmd, foundCmdNewID);
|
UpdateCommandID(foundCmd, foundCmdNewID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cmd.ID(newID);
|
winrt::get_self<implementation::Command>(cmd)->ID(newID);
|
||||||
// update _ActionMap with the ID change
|
// update _ActionMap with the ID change
|
||||||
_ActionMap.erase(oldID);
|
_ActionMap.erase(oldID);
|
||||||
_ActionMap.emplace(newID, cmd);
|
_ActionMap.emplace(newID, cmd);
|
||||||
|
|
||||||
// update _KeyMap so that all keys that pointed to the old ID now point to the new ID
|
// update _KeyMap so that all keys that pointed to the old ID now point to the new ID
|
||||||
std::unordered_set<KeyChord, KeyChordHash, KeyChordEquality> keysToRemap{};
|
std::vector<KeyChord> keysToRemap;
|
||||||
for (const auto& [keys, cmdID] : _KeyMap)
|
for (const auto& [keys, cmdID] : _KeyMap)
|
||||||
{
|
{
|
||||||
if (cmdID == oldID)
|
if (cmdID == oldID)
|
||||||
{
|
{
|
||||||
keysToRemap.insert(keys);
|
keysToRemap.push_back(keys);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (const auto& keys : keysToRemap)
|
for (const auto& keys : keysToRemap)
|
||||||
@ -1248,7 +1248,6 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
|||||||
_KeyMap.erase(keys);
|
_KeyMap.erase(keys);
|
||||||
_KeyMap.emplace(keys, newID);
|
_KeyMap.emplace(keys, newID);
|
||||||
}
|
}
|
||||||
PropagateCommandIDChanged.raise(cmd, oldID);
|
|
||||||
}
|
}
|
||||||
_RefreshKeyBindingCaches();
|
_RefreshKeyBindingCaches();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -105,8 +105,6 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
|||||||
|
|
||||||
void ResolveMediaResourcesWithBasePath(const winrt::hstring& basePath, const Model::MediaResourceResolver& resolver);
|
void ResolveMediaResourcesWithBasePath(const winrt::hstring& basePath, const Model::MediaResourceResolver& resolver);
|
||||||
|
|
||||||
til::typed_event<Model::Command, winrt::hstring> PropagateCommandIDChanged;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Model::Command _GetActionByID(const winrt::hstring& actionID) const;
|
Model::Command _GetActionByID(const winrt::hstring& actionID) const;
|
||||||
std::optional<winrt::hstring> _GetActionIdByKeyChordInternal(const Control::KeyChord& keys) const;
|
std::optional<winrt::hstring> _GetActionIdByKeyChordInternal(const Control::KeyChord& keys) const;
|
||||||
|
|||||||
@ -34,8 +34,6 @@ namespace Microsoft.Terminal.Settings.Model
|
|||||||
IVector<Command> ExpandedCommands { get; };
|
IVector<Command> ExpandedCommands { get; };
|
||||||
|
|
||||||
Windows.Foundation.IAsyncOperation<IVector<Command> > FilterToSnippets(String CurrentCommandline, String CurrentWorkingDirectory);
|
Windows.Foundation.IAsyncOperation<IVector<Command> > FilterToSnippets(String CurrentCommandline, String CurrentWorkingDirectory);
|
||||||
|
|
||||||
event Windows.Foundation.TypedEventHandler<Command, String> PropagateCommandIDChanged;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
runtimeclass ActionMap : IActionMapView
|
runtimeclass ActionMap : IActionMapView
|
||||||
@ -47,6 +45,5 @@ namespace Microsoft.Terminal.Settings.Model
|
|||||||
void AddKeyBinding(Microsoft.Terminal.Control.KeyChord keys, String cmdID);
|
void AddKeyBinding(Microsoft.Terminal.Control.KeyChord keys, String cmdID);
|
||||||
void RegisterKeyBinding(Microsoft.Terminal.Control.KeyChord keys, ActionAndArgs action);
|
void RegisterKeyBinding(Microsoft.Terminal.Control.KeyChord keys, ActionAndArgs action);
|
||||||
void AddSendInputAction(String name, String input, Microsoft.Terminal.Control.KeyChord keys);
|
void AddSendInputAction(String name, String input, Microsoft.Terminal.Control.KeyChord keys);
|
||||||
void UpdateCommandID(Command cmd, String newID);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1258,3 +1258,8 @@ void CascadiaSettings::ExpandCommands()
|
|||||||
{
|
{
|
||||||
_globals->ExpandCommands(ActiveProfiles().GetView(), GlobalSettings().ColorSchemes());
|
_globals->ExpandCommands(ActiveProfiles().GetView(), GlobalSettings().ColorSchemes());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CascadiaSettings::UpdateCommandID(const Model::Command& cmd, winrt::hstring newID)
|
||||||
|
{
|
||||||
|
_globals->UpdateCommandID(cmd, newID);
|
||||||
|
}
|
||||||
|
|||||||
@ -191,6 +191,7 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
|||||||
void CurrentDefaultTerminal(const Model::DefaultTerminal& terminal);
|
void CurrentDefaultTerminal(const Model::DefaultTerminal& terminal);
|
||||||
|
|
||||||
void ExpandCommands();
|
void ExpandCommands();
|
||||||
|
void UpdateCommandID(const Model::Command& cmd, winrt::hstring newID);
|
||||||
void ResolveMediaResources() { _validateMediaResources(); }
|
void ResolveMediaResources() { _validateMediaResources(); }
|
||||||
|
|
||||||
void LogSettingChanges(bool isJsonLoad) const;
|
void LogSettingChanges(bool isJsonLoad) const;
|
||||||
|
|||||||
@ -64,6 +64,7 @@ namespace Microsoft.Terminal.Settings.Model
|
|||||||
DefaultTerminal CurrentDefaultTerminal;
|
DefaultTerminal CurrentDefaultTerminal;
|
||||||
|
|
||||||
void ExpandCommands();
|
void ExpandCommands();
|
||||||
|
void UpdateCommandID(Command cmd, String newID);
|
||||||
|
|
||||||
void ResolveMediaResources();
|
void ResolveMediaResources();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,7 +41,7 @@ namespace Microsoft.Terminal.Settings.Model
|
|||||||
String Name;
|
String Name;
|
||||||
Boolean HasName();
|
Boolean HasName();
|
||||||
String LanguageNeutralName { get; };
|
String LanguageNeutralName { get; };
|
||||||
String ID;
|
String ID { get; };
|
||||||
void GenerateID();
|
void GenerateID();
|
||||||
|
|
||||||
String Description { get; };
|
String Description { get; };
|
||||||
|
|||||||
@ -62,8 +62,7 @@ winrt::com_ptr<GlobalAppSettings> GlobalAppSettings::Copy() const
|
|||||||
globals->_UnparsedDefaultProfile = _UnparsedDefaultProfile;
|
globals->_UnparsedDefaultProfile = _UnparsedDefaultProfile;
|
||||||
|
|
||||||
globals->_defaultProfile = _defaultProfile;
|
globals->_defaultProfile = _defaultProfile;
|
||||||
globals->_actionMap = _actionMap->Copy();
|
globals->_actionMap = _actionMap->Copy();
|
||||||
globals->_actionMap->PropagateCommandIDChanged({ globals.get(), &GlobalAppSettings::_CommandIDChangedHandler });
|
|
||||||
globals->_keybindingsWarnings = _keybindingsWarnings;
|
globals->_keybindingsWarnings = _keybindingsWarnings;
|
||||||
|
|
||||||
#define GLOBAL_SETTINGS_COPY(type, name, jsonKey, ...) \
|
#define GLOBAL_SETTINGS_COPY(type, name, jsonKey, ...) \
|
||||||
@ -146,7 +145,6 @@ winrt::com_ptr<GlobalAppSettings> GlobalAppSettings::FromJson(const Json::Value&
|
|||||||
{
|
{
|
||||||
auto result = winrt::make_self<GlobalAppSettings>();
|
auto result = winrt::make_self<GlobalAppSettings>();
|
||||||
result->LayerJson(json, origin);
|
result->LayerJson(json, origin);
|
||||||
result->_actionMap->PropagateCommandIDChanged({ result.get(), &GlobalAppSettings::_CommandIDChangedHandler });
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -461,12 +459,12 @@ void GlobalAppSettings::_logSettingSet(const std::string_view& setting)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GlobalAppSettings::_CommandIDChangedHandler(const Model::Command& senderCmd, const winrt::hstring& oldID)
|
void GlobalAppSettings::UpdateCommandID(const Model::Command& cmd, const winrt::hstring& newID)
|
||||||
{
|
{
|
||||||
|
const auto oldID = cmd.ID();
|
||||||
|
_actionMap->UpdateCommandID(cmd, newID);
|
||||||
if (_NewTabMenu)
|
if (_NewTabMenu)
|
||||||
{
|
{
|
||||||
const auto newID = senderCmd.ID();
|
|
||||||
|
|
||||||
// Recursive lambda function to look through all the new tab menu entries and update IDs accordingly
|
// Recursive lambda function to look through all the new tab menu entries and update IDs accordingly
|
||||||
std::function<void(const Model::NewTabMenuEntry&)> recursiveEntryIdUpdate;
|
std::function<void(const Model::NewTabMenuEntry&)> recursiveEntryIdUpdate;
|
||||||
recursiveEntryIdUpdate = [&](const Model::NewTabMenuEntry& entry) {
|
recursiveEntryIdUpdate = [&](const Model::NewTabMenuEntry& entry) {
|
||||||
|
|||||||
@ -47,6 +47,7 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
|||||||
Model::ColorScheme DuplicateColorScheme(const Model::ColorScheme& scheme);
|
Model::ColorScheme DuplicateColorScheme(const Model::ColorScheme& scheme);
|
||||||
|
|
||||||
Model::ActionMap ActionMap() const noexcept;
|
Model::ActionMap ActionMap() const noexcept;
|
||||||
|
void UpdateCommandID(const Model::Command& cmd, const winrt::hstring& newID);
|
||||||
|
|
||||||
static com_ptr<GlobalAppSettings> FromJson(const Json::Value& json, const OriginTag origin = OriginTag::None);
|
static com_ptr<GlobalAppSettings> FromJson(const Json::Value& json, const OriginTag origin = OriginTag::None);
|
||||||
void LayerJson(const Json::Value& json, const OriginTag origin);
|
void LayerJson(const Json::Value& json, const OriginTag origin);
|
||||||
@ -104,8 +105,6 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
|||||||
Windows::Foundation::Collections::IMap<winrt::hstring, Model::ColorScheme> _colorSchemes{ winrt::single_threaded_map<winrt::hstring, Model::ColorScheme>() };
|
Windows::Foundation::Collections::IMap<winrt::hstring, Model::ColorScheme> _colorSchemes{ winrt::single_threaded_map<winrt::hstring, Model::ColorScheme>() };
|
||||||
Windows::Foundation::Collections::IMap<winrt::hstring, Model::Theme> _themes{ winrt::single_threaded_map<winrt::hstring, Model::Theme>() };
|
Windows::Foundation::Collections::IMap<winrt::hstring, Model::Theme> _themes{ winrt::single_threaded_map<winrt::hstring, Model::Theme>() };
|
||||||
|
|
||||||
void _CommandIDChangedHandler(const Model::Command& senderCmd, const winrt::hstring& oldID);
|
|
||||||
|
|
||||||
void _logSettingSet(const std::string_view& setting);
|
void _logSettingSet(const std::string_view& setting);
|
||||||
void _logSettingIfSet(const std::string_view& setting, const bool isSet);
|
void _logSettingIfSet(const std::string_view& setting, const bool isSet);
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user