Skip to content

Commit 05ded92

Browse files
committed
PRE-MERGE #18633 Add display name and icon to SUI extensions page
2 parents 3f31d56 + f650f45 commit 05ded92

31 files changed

+680
-320
lines changed
943 Bytes
Loading
1.33 KB
Loading
787 Bytes
Loading
1.58 KB
Loading
1.63 KB
Loading

src/cascadia/CascadiaResources.build.items

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@
2121
<DeploymentContent>true</DeploymentContent>
2222
<Link>ProfileIcons\%(RecursiveDir)%(FileName)%(Extension)</Link>
2323
</Content>
24+
<!-- Profile Generator Icons -->
25+
<Content Include="$(OpenConsoleDir)src\cascadia\CascadiaPackage\ProfileGeneratorIcons\**\*">
26+
<DeploymentContent>true</DeploymentContent>
27+
<Link>ProfileGeneratorIcons\%(RecursiveDir)%(FileName)%(Extension)</Link>
28+
</Content>
2429
<!-- Default Settings -->
2530
<Content Include="$(OpenConsoleDir)src\cascadia\TerminalSettingsModel\defaults.json">
2631
<DeploymentContent>true</DeploymentContent>

src/cascadia/TerminalSettingsEditor/Extensions.cpp

Lines changed: 145 additions & 121 deletions
Large diffs are not rendered by default.

src/cascadia/TerminalSettingsEditor/Extensions.h

Lines changed: 43 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "FragmentExtensionViewModel.g.h"
1010
#include "FragmentProfileViewModel.g.h"
1111
#include "FragmentColorSchemeViewModel.g.h"
12+
#include "ExtensionPackageTemplateSelector.g.h"
1213
#include "ViewModelHelpers.h"
1314
#include "Utils.h"
1415

@@ -20,14 +21,15 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
2021
Extensions();
2122

2223
void OnNavigatedTo(const Windows::UI::Xaml::Navigation::NavigationEventArgs& e);
23-
void ExtensionLoaded(const Windows::Foundation::IInspectable& sender, const Windows::UI::Xaml::RoutedEventArgs& args);
24-
void ExtensionToggled(const Windows::Foundation::IInspectable& sender, const Windows::UI::Xaml::RoutedEventArgs& args);
2524

2625
void ExtensionNavigator_Click(const Windows::Foundation::IInspectable& sender, const Windows::UI::Xaml::RoutedEventArgs& args);
2726
void NavigateToProfile_Click(const Windows::Foundation::IInspectable& sender, const Windows::UI::Xaml::RoutedEventArgs& args);
2827
void NavigateToColorScheme_Click(const Windows::Foundation::IInspectable& sender, const Windows::UI::Xaml::RoutedEventArgs& args);
2928

3029
WINRT_PROPERTY(Editor::ExtensionsViewModel, ViewModel, nullptr);
30+
31+
private:
32+
Editor::ExtensionPackageTemplateSelector _extensionPackageIdentifierTemplateSelector;
3133
};
3234

3335
struct ExtensionsViewModel : ExtensionsViewModelT<ExtensionsViewModel>, ViewModelHelper<ExtensionsViewModel>
@@ -36,57 +38,62 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
3638
ExtensionsViewModel(const Model::CascadiaSettings& settings, const Editor::ColorSchemesPageViewModel& colorSchemesPageVM);
3739

3840
// Properties
39-
bool IsExtensionView() const noexcept { return _CurrentExtensionSource != hstring{}; }
40-
Windows::Foundation::Collections::IVector<IInspectable> CurrentExtensionFragments() const noexcept;
41-
hstring CurrentExtensionScope() const noexcept;
42-
bool NoActiveExtensions() const noexcept { return _fragmentExtensions.Size() == 0; }
41+
Windows::UI::Xaml::DataTemplate CurrentExtensionPackageIdentifierTemplate() const;
42+
bool IsExtensionView() const noexcept { return _CurrentExtensionPackage != nullptr; }
43+
bool NoExtensionPackages() const noexcept { return _extensionPackages.Size() == 0; }
4344
bool NoProfilesModified() const noexcept { return _profilesModifiedView.Size() == 0; }
4445
bool NoProfilesAdded() const noexcept { return _profilesAddedView.Size() == 0; }
4546
bool NoSchemesAdded() const noexcept { return _colorSchemesAddedView.Size() == 0; }
4647

4748
// Views
48-
Windows::Foundation::Collections::IObservableVector<Editor::ExtensionPackageViewModel> ExtensionPackages() const noexcept;
49+
Windows::Foundation::Collections::IObservableVector<Editor::ExtensionPackageViewModel> ExtensionPackages() const noexcept { return _extensionPackages; }
4950
Windows::Foundation::Collections::IObservableVector<Editor::FragmentProfileViewModel> ProfilesModified() const noexcept { return _profilesModifiedView; }
5051
Windows::Foundation::Collections::IObservableVector<Editor::FragmentProfileViewModel> ProfilesAdded() const noexcept { return _profilesAddedView; }
5152
Windows::Foundation::Collections::IObservableVector<Editor::FragmentColorSchemeViewModel> ColorSchemesAdded() const noexcept { return _colorSchemesAddedView; }
5253

5354
// Methods
5455
void UpdateSettings(const Model::CascadiaSettings& settings, const Editor::ColorSchemesPageViewModel& colorSchemesPageVM);
55-
bool GetExtensionState(hstring extensionSource) const;
56-
void SetExtensionState(hstring extensionSource, bool enableExt);
5756
void NavigateToProfile(const guid profileGuid);
5857
void NavigateToColorScheme(const Editor::ColorSchemeViewModel& schemeVM);
5958

59+
static bool GetExtensionState(hstring extensionSource, const Model::CascadiaSettings& settings);
60+
static void SetExtensionState(hstring extensionSource, const Model::CascadiaSettings& settings, bool enableExt);
61+
6062
til::typed_event<IInspectable, guid> NavigateToProfileRequested;
6163
til::typed_event<IInspectable, Editor::ColorSchemeViewModel> NavigateToColorSchemeRequested;
6264

63-
VIEW_MODEL_OBSERVABLE_PROPERTY(hstring, CurrentExtensionSource);
65+
VIEW_MODEL_OBSERVABLE_PROPERTY(Editor::ExtensionPackageViewModel, CurrentExtensionPackage, nullptr);
66+
WINRT_PROPERTY(Editor::ExtensionPackageTemplateSelector, ExtensionPackageIdentifierTemplateSelector, nullptr);
6467

6568
private:
6669
Model::CascadiaSettings _settings;
6770
Editor::ColorSchemesPageViewModel _colorSchemesPageVM;
68-
std::unordered_set<hstring> _extensionSources;
69-
Windows::Foundation::Collections::IVector<Editor::FragmentExtensionViewModel> _fragmentExtensions;
71+
Windows::Foundation::Collections::IObservableVector<Editor::ExtensionPackageViewModel> _extensionPackages;
7072
Windows::Foundation::Collections::IObservableVector<Editor::FragmentProfileViewModel> _profilesModifiedView;
7173
Windows::Foundation::Collections::IObservableVector<Editor::FragmentProfileViewModel> _profilesAddedView;
7274
Windows::Foundation::Collections::IObservableVector<Editor::FragmentColorSchemeViewModel> _colorSchemesAddedView;
73-
74-
Windows::Foundation::Collections::IVector<hstring> _DisabledProfileSources() const noexcept { return _settings.GlobalSettings().DisabledProfileSources(); }
7575
};
7676

7777
struct ExtensionPackageViewModel : ExtensionPackageViewModelT<ExtensionPackageViewModel>, ViewModelHelper<ExtensionPackageViewModel>
7878
{
7979
public:
80-
ExtensionPackageViewModel(hstring source, bool enabled) :
81-
_source{ source },
82-
_enabled{ enabled } {}
83-
hstring Source() const noexcept { return _source; }
84-
bool Enabled() const noexcept { return _enabled; }
80+
ExtensionPackageViewModel(const Model::ExtensionPackage& pkg, const Model::CascadiaSettings& settings) :
81+
_package{ pkg },
82+
_settings{ settings },
83+
_fragmentExtensions{ single_threaded_observable_vector<Editor::FragmentExtensionViewModel>() } {}
84+
85+
Model::ExtensionPackage Package() const noexcept { return _package; }
86+
hstring Scope() const noexcept;
87+
bool Enabled() const;
88+
void Enabled(bool val);
8589
hstring AccessibleName() const noexcept;
90+
hstring AccessibleNameWithStatus() const noexcept;
91+
Windows::Foundation::Collections::IObservableVector<Editor::FragmentExtensionViewModel> FragmentExtensions() { return _fragmentExtensions; }
8692

8793
private:
88-
hstring _source;
89-
bool _enabled;
94+
Model::ExtensionPackage _package;
95+
Model::CascadiaSettings _settings;
96+
Windows::Foundation::Collections::IObservableVector<Editor::FragmentExtensionViewModel> _fragmentExtensions;
9097
};
9198

9299
struct FragmentExtensionViewModel : FragmentExtensionViewModelT<FragmentExtensionViewModel>, ViewModelHelper<FragmentExtensionViewModel>
@@ -124,6 +131,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
124131
Model::Profile Profile() const { return _deducedProfile; };
125132
hstring SourceName() const { return _fragment.Source(); }
126133
hstring Json() const { return _entry.Json(); }
134+
hstring AccessibleName() const noexcept;
127135

128136
private:
129137
Model::FragmentProfileEntry _entry;
@@ -142,15 +150,29 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
142150
Editor::ColorSchemeViewModel ColorSchemeVM() const { return _deducedSchemeVM; };
143151
hstring SourceName() const { return _fragment.Source(); }
144152
hstring Json() const { return _entry.Json(); }
153+
hstring AccessibleName() const noexcept;
145154

146155
private:
147156
Model::FragmentColorSchemeEntry _entry;
148157
Model::FragmentSettings _fragment;
149158
Editor::ColorSchemeViewModel _deducedSchemeVM;
150159
};
160+
161+
struct ExtensionPackageTemplateSelector : public ExtensionPackageTemplateSelectorT<ExtensionPackageTemplateSelector>
162+
{
163+
public:
164+
ExtensionPackageTemplateSelector() = default;
165+
166+
Windows::UI::Xaml::DataTemplate SelectTemplateCore(const Windows::Foundation::IInspectable& item, const Windows::UI::Xaml::DependencyObject& container);
167+
Windows::UI::Xaml::DataTemplate SelectTemplateCore(const Windows::Foundation::IInspectable& item);
168+
169+
WINRT_PROPERTY(Windows::UI::Xaml::DataTemplate, DefaultTemplate, nullptr);
170+
WINRT_PROPERTY(Windows::UI::Xaml::DataTemplate, ComplexTemplate, nullptr);
171+
};
151172
};
152173

153174
namespace winrt::Microsoft::Terminal::Settings::Editor::factory_implementation
154175
{
155176
BASIC_FACTORY(Extensions);
177+
BASIC_FACTORY(ExtensionPackageTemplateSelector);
156178
}

src/cascadia/TerminalSettingsEditor/Extensions.idl

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,35 +14,35 @@ namespace Microsoft.Terminal.Settings.Editor
1414
[default_interface] runtimeclass ExtensionsViewModel : Windows.UI.Xaml.Data.INotifyPropertyChanged
1515
{
1616
// Properties
17-
String CurrentExtensionSource;
18-
IVector<Object> CurrentExtensionFragments { get; };
19-
String CurrentExtensionScope { get; };
17+
ExtensionPackageViewModel CurrentExtensionPackage;
18+
Windows.UI.Xaml.DataTemplate CurrentExtensionPackageIdentifierTemplate { get; };
2019
Boolean IsExtensionView { get; };
21-
Boolean NoActiveExtensions { get; };
20+
Boolean NoExtensionPackages { get; };
2221
Boolean NoProfilesModified { get; };
2322
Boolean NoProfilesAdded { get; };
2423
Boolean NoSchemesAdded { get; };
2524

2625
// Views
27-
IObservableVector<ExtensionPackageViewModel> ExtensionPackages { get; };
26+
IVector<ExtensionPackageViewModel> ExtensionPackages { get; };
2827
IObservableVector<FragmentProfileViewModel> ProfilesModified { get; };
2928
IObservableVector<FragmentProfileViewModel> ProfilesAdded { get; };
3029
IObservableVector<FragmentColorSchemeViewModel> ColorSchemesAdded { get; };
3130

3231
// Methods
3332
void UpdateSettings(Microsoft.Terminal.Settings.Model.CascadiaSettings settings, ColorSchemesPageViewModel colorSchemesPageVM);
34-
Boolean GetExtensionState(String extensionSource);
35-
void SetExtensionState(String extensionSource, Boolean enableExt);
3633

3734
event Windows.Foundation.TypedEventHandler<Object, Guid> NavigateToProfileRequested;
3835
event Windows.Foundation.TypedEventHandler<Object, ColorSchemeViewModel> NavigateToColorSchemeRequested;
3936
}
4037

4138
[default_interface] runtimeclass ExtensionPackageViewModel : Windows.UI.Xaml.Data.INotifyPropertyChanged
4239
{
43-
String Source { get; };
44-
Boolean Enabled { get; };
40+
Microsoft.Terminal.Settings.Model.ExtensionPackage Package { get; };
41+
Boolean Enabled;
42+
String Scope { get; };
4543
String AccessibleName { get; };
44+
String AccessibleNameWithStatus { get; };
45+
IVector<FragmentExtensionViewModel> FragmentExtensions { get; };
4646
}
4747

4848
[default_interface] runtimeclass FragmentExtensionViewModel : Windows.UI.Xaml.Data.INotifyPropertyChanged
@@ -58,12 +58,22 @@ namespace Microsoft.Terminal.Settings.Editor
5858
Microsoft.Terminal.Settings.Model.Profile Profile { get; };
5959
String SourceName { get; };
6060
String Json { get; };
61+
String AccessibleName { get; };
6162
}
6263

6364
[default_interface] runtimeclass FragmentColorSchemeViewModel : Windows.UI.Xaml.Data.INotifyPropertyChanged
6465
{
6566
ColorSchemeViewModel ColorSchemeVM { get; };
6667
String SourceName { get; };
6768
String Json { get; };
69+
String AccessibleName { get; };
70+
}
71+
72+
[default_interface] runtimeclass ExtensionPackageTemplateSelector : Windows.UI.Xaml.Controls.DataTemplateSelector
73+
{
74+
ExtensionPackageTemplateSelector();
75+
76+
Windows.UI.Xaml.DataTemplate DefaultTemplate;
77+
Windows.UI.Xaml.DataTemplate ComplexTemplate;
6878
}
6979
}

0 commit comments

Comments
 (0)