[PowerRename] Fluent UX (#13678)
* PowerRename new UI * Add scrollviewer * Don't deploy PowerRenameUI_new * Visual updates * Visual updates * Updates * Update Resources.resw * Added docs button * Update MainWindow.xaml * Wire Docs button * RegEx -> regular expressions * Update Show only renamed list on search/replace text changed * Update Show only renamed list on search/replace text changed - proper fix Set searchTerm to NULL when cleared - fix Show only renamed files on clear searchTerm * Files/folders input error handling * Fix renaming with keeping UI window opened After renaming folder, all of it's children need path update. Without path update, further renaming of children items would fail. * Update only children, not all items with greater depth * Fix dictionary false positives * Remove .NET dep * Rename PowerRenameUI_new to PowerRenameUILib Rename executable PowerRenameUIHost to PowerRename Co-authored-by: Laute <Niels.Laute@philips.com>
18
src/modules/powerrename/PowerRenameUILib/App.cpp
Normal file
@@ -0,0 +1,18 @@
|
||||
#include "pch.h"
|
||||
#include "App.h"
|
||||
#include "App.g.cpp"
|
||||
using namespace winrt;
|
||||
using namespace Windows::UI::Xaml;
|
||||
namespace winrt::PowerRenameUILib::implementation
|
||||
{
|
||||
App::App()
|
||||
{
|
||||
Initialize();
|
||||
AddRef();
|
||||
m_inner.as<::IUnknown>()->Release();
|
||||
}
|
||||
App::~App()
|
||||
{
|
||||
Close();
|
||||
}
|
||||
}
|
||||
18
src/modules/powerrename/PowerRenameUILib/App.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#pragma once
|
||||
#include "App.g.h"
|
||||
#include "App.base.h"
|
||||
namespace winrt::PowerRenameUILib::implementation
|
||||
{
|
||||
class App : public AppT2<App>
|
||||
{
|
||||
public:
|
||||
App();
|
||||
~App();
|
||||
};
|
||||
}
|
||||
namespace winrt::PowerRenameUILib::factory_implementation
|
||||
{
|
||||
class App : public AppT<App, implementation::App>
|
||||
{
|
||||
};
|
||||
}
|
||||
7
src/modules/powerrename/PowerRenameUILib/App.idl
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace PowerRenameUILib
|
||||
{
|
||||
[default_interface] runtimeclass App : Microsoft.Toolkit.Win32.UI.XamlHost.XamlApplication
|
||||
{
|
||||
App();
|
||||
}
|
||||
}
|
||||
1066
src/modules/powerrename/PowerRenameUILib/App.xaml
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
BIN
src/modules/powerrename/PowerRenameUILib/Assets/StoreLogo.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
BIN
src/modules/powerrename/PowerRenameUILib/Assets/file.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
src/modules/powerrename/PowerRenameUILib/Assets/folder.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
105
src/modules/powerrename/PowerRenameUILib/ExplorerItem.cpp
Normal file
@@ -0,0 +1,105 @@
|
||||
#include "pch.h"
|
||||
#include "ExplorerItem.h"
|
||||
#include "ExplorerItem.g.cpp"
|
||||
|
||||
namespace winrt::PowerRenameUILib::implementation
|
||||
{
|
||||
ExplorerItem::ExplorerItem(int32_t id, hstring const& original, hstring const& renamed, int32_t type, bool checked) :
|
||||
m_id{ id }, m_idStr{ std::to_wstring(id) }, m_original{ original }, m_renamed{ renamed }, m_type{ type }, m_checked{ checked }
|
||||
{
|
||||
if (m_type == static_cast<UINT>(ExplorerItemType::Folder))
|
||||
{
|
||||
m_children = winrt::single_threaded_observable_vector<PowerRenameUILib::ExplorerItem>();
|
||||
}
|
||||
}
|
||||
|
||||
int32_t ExplorerItem::Id()
|
||||
{
|
||||
return m_id;
|
||||
}
|
||||
|
||||
hstring ExplorerItem::IdStr()
|
||||
{
|
||||
return m_idStr;
|
||||
}
|
||||
|
||||
hstring ExplorerItem::Original()
|
||||
{
|
||||
return m_original;
|
||||
}
|
||||
|
||||
void ExplorerItem::Original(hstring const& value)
|
||||
{
|
||||
if (m_original != value)
|
||||
{
|
||||
m_original = value;
|
||||
m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"Original" });
|
||||
}
|
||||
}
|
||||
|
||||
hstring ExplorerItem::Renamed()
|
||||
{
|
||||
return m_renamed;
|
||||
}
|
||||
|
||||
void ExplorerItem::Renamed(hstring const& value)
|
||||
{
|
||||
if (m_renamed != value)
|
||||
{
|
||||
m_renamed = value;
|
||||
m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"Renamed" });
|
||||
}
|
||||
}
|
||||
|
||||
int32_t ExplorerItem::Type()
|
||||
{
|
||||
return m_type;
|
||||
}
|
||||
|
||||
void ExplorerItem::Type(int32_t value)
|
||||
{
|
||||
if (m_type != value)
|
||||
{
|
||||
m_type = value;
|
||||
m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"Type" });
|
||||
}
|
||||
}
|
||||
|
||||
bool ExplorerItem::Checked()
|
||||
{
|
||||
return m_checked;
|
||||
}
|
||||
|
||||
void ExplorerItem::Checked(bool value)
|
||||
{
|
||||
if (m_checked != value)
|
||||
{
|
||||
m_checked = value;
|
||||
m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"Checked" });
|
||||
}
|
||||
}
|
||||
|
||||
winrt::Windows::Foundation::Collections::IObservableVector<winrt::PowerRenameUILib::ExplorerItem> ExplorerItem::Children()
|
||||
{
|
||||
return m_children;
|
||||
}
|
||||
|
||||
void ExplorerItem::Children(Windows::Foundation::Collections::IObservableVector<PowerRenameUILib::ExplorerItem> const& value)
|
||||
{
|
||||
if (m_children != value)
|
||||
{
|
||||
m_children = value;
|
||||
m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"Children" });
|
||||
}
|
||||
}
|
||||
|
||||
winrt::event_token ExplorerItem::PropertyChanged(winrt::Windows::UI::Xaml::Data::PropertyChangedEventHandler const& handler)
|
||||
{
|
||||
return m_propertyChanged.add(handler);
|
||||
}
|
||||
|
||||
void ExplorerItem::PropertyChanged(winrt::event_token const& token) noexcept
|
||||
{
|
||||
m_propertyChanged.remove(token);
|
||||
}
|
||||
}
|
||||
48
src/modules/powerrename/PowerRenameUILib/ExplorerItem.h
Normal file
@@ -0,0 +1,48 @@
|
||||
#pragma once
|
||||
#include "ExplorerItem.g.h"
|
||||
|
||||
namespace winrt::PowerRenameUILib::implementation
|
||||
{
|
||||
struct ExplorerItem : ExplorerItemT<ExplorerItem>
|
||||
{
|
||||
enum class ExplorerItemType
|
||||
{
|
||||
Folder = 0,
|
||||
File = 1
|
||||
};
|
||||
|
||||
ExplorerItem() = delete;
|
||||
|
||||
ExplorerItem(int32_t id, hstring const& original, hstring const& renamed, int32_t type, bool checked);
|
||||
int32_t Id();
|
||||
hstring IdStr();
|
||||
hstring Original();
|
||||
void Original(hstring const& value);
|
||||
hstring Renamed();
|
||||
void Renamed(hstring const& value);
|
||||
int32_t Type();
|
||||
void Type(int32_t value);
|
||||
bool Checked();
|
||||
void Checked(bool value);
|
||||
Windows::Foundation::Collections::IObservableVector<PowerRenameUILib::ExplorerItem> Children();
|
||||
void Children(Windows::Foundation::Collections::IObservableVector<PowerRenameUILib::ExplorerItem> const& value);
|
||||
winrt::event_token PropertyChanged(Windows::UI::Xaml::Data::PropertyChangedEventHandler const& handler);
|
||||
void PropertyChanged(winrt::event_token const& token) noexcept;
|
||||
|
||||
private:
|
||||
int32_t m_id;
|
||||
hstring m_idStr;
|
||||
winrt::hstring m_original;
|
||||
winrt::hstring m_renamed;
|
||||
winrt::Windows::Foundation::Collections::IObservableVector<PowerRenameUILib::ExplorerItem> m_children;
|
||||
int32_t m_type;
|
||||
bool m_checked;
|
||||
winrt::event<Windows::UI::Xaml::Data::PropertyChangedEventHandler> m_propertyChanged;
|
||||
};
|
||||
}
|
||||
namespace winrt::PowerRenameUILib::factory_implementation
|
||||
{
|
||||
struct ExplorerItem : ExplorerItemT<ExplorerItem, implementation::ExplorerItem>
|
||||
{
|
||||
};
|
||||
}
|
||||
14
src/modules/powerrename/PowerRenameUILib/ExplorerItem.idl
Normal file
@@ -0,0 +1,14 @@
|
||||
namespace PowerRenameUILib
|
||||
{
|
||||
runtimeclass ExplorerItem : Windows.UI.Xaml.Data.INotifyPropertyChanged
|
||||
{
|
||||
ExplorerItem(Int32 id, String original, String renamed, Int32 type, Boolean checked);
|
||||
Int32 Id { get; };
|
||||
String IdStr { get; };
|
||||
String Original;
|
||||
String Renamed;
|
||||
Int32 Type;
|
||||
Boolean Checked;
|
||||
Windows.Foundation.Collections.IObservableVector<ExplorerItem> Children;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
#include "pch.h"
|
||||
#include "ExplorerItemTemplateSelector.h"
|
||||
#include "ExplorerItemTemplateSelector.g.cpp"
|
||||
|
||||
namespace winrt::PowerRenameUILib::implementation
|
||||
{
|
||||
Windows::UI::Xaml::DataTemplate ExplorerItemTemplateSelector::SelectTemplateCore(IInspectable const& item)
|
||||
{
|
||||
ExplorerItem explorerItem = (ExplorerItem&)item;
|
||||
return explorerItem.Type() == 0 ? m_folderTemplate : m_fileTemplate;
|
||||
}
|
||||
|
||||
Windows::UI::Xaml::DataTemplate ExplorerItemTemplateSelector::SelectTemplateCore(IInspectable const&, Windows::UI::Xaml::DependencyObject const&)
|
||||
{
|
||||
return Windows::UI::Xaml::DataTemplate();
|
||||
}
|
||||
|
||||
winrt::Windows::UI::Xaml::DataTemplate ExplorerItemTemplateSelector::FolderTemplate()
|
||||
{
|
||||
return m_folderTemplate;
|
||||
}
|
||||
|
||||
void ExplorerItemTemplateSelector::FolderTemplate(winrt::Windows::UI::Xaml::DataTemplate const& value)
|
||||
{
|
||||
m_folderTemplate = value;
|
||||
}
|
||||
|
||||
winrt::Windows::UI::Xaml::DataTemplate ExplorerItemTemplateSelector::FileTemplate()
|
||||
{
|
||||
return m_fileTemplate;
|
||||
}
|
||||
|
||||
void ExplorerItemTemplateSelector::FileTemplate(winrt::Windows::UI::Xaml::DataTemplate const& value)
|
||||
{
|
||||
m_fileTemplate = value;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
#pragma once
|
||||
#include "ExplorerItemTemplateSelector.g.h"
|
||||
|
||||
namespace winrt::PowerRenameUILib::implementation
|
||||
{
|
||||
struct ExplorerItemTemplateSelector : ExplorerItemTemplateSelectorT<ExplorerItemTemplateSelector>
|
||||
{
|
||||
ExplorerItemTemplateSelector() = default;
|
||||
|
||||
Windows::UI::Xaml::DataTemplate SelectTemplateCore(IInspectable const&);
|
||||
Windows::UI::Xaml::DataTemplate SelectTemplateCore(IInspectable const&, Windows::UI::Xaml::DependencyObject const&);
|
||||
|
||||
winrt::Windows::UI::Xaml::DataTemplate FolderTemplate();
|
||||
void FolderTemplate(winrt::Windows::UI::Xaml::DataTemplate const& value);
|
||||
winrt::Windows::UI::Xaml::DataTemplate FileTemplate();
|
||||
void FileTemplate(winrt::Windows::UI::Xaml::DataTemplate const& value);
|
||||
|
||||
private:
|
||||
Windows::UI::Xaml::DataTemplate m_folderTemplate{ nullptr };
|
||||
Windows::UI::Xaml::DataTemplate m_fileTemplate{ nullptr };
|
||||
};
|
||||
}
|
||||
namespace winrt::PowerRenameUILib::factory_implementation
|
||||
{
|
||||
struct ExplorerItemTemplateSelector : ExplorerItemTemplateSelectorT<ExplorerItemTemplateSelector, implementation::ExplorerItemTemplateSelector>
|
||||
{
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
namespace PowerRenameUILib
|
||||
{
|
||||
[bindable]
|
||||
[default_interface] runtimeclass ExplorerItemTemplateSelector : Windows.UI.Xaml.Controls.DataTemplateSelector
|
||||
{
|
||||
ExplorerItemTemplateSelector();
|
||||
|
||||
Windows.UI.Xaml.DataTemplate FolderTemplate;
|
||||
Windows.UI.Xaml.DataTemplate FileTemplate;
|
||||
}
|
||||
}
|
||||
14
src/modules/powerrename/PowerRenameUILib/LocProject.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"Projects": [
|
||||
{
|
||||
"LanguageSet": "Azure_Languages",
|
||||
"LocItems": [
|
||||
{
|
||||
"SourceFile": "src\\modules\\powerrename\\PowerRenameUILib\\Strings\\en-us\\Resources.resw",
|
||||
"CopyOption": "LangIDOnName",
|
||||
"OutputPath": "src\\modules\\powerrename\\PowerRenameUILib\\Strings"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
326
src/modules/powerrename/PowerRenameUILib/MainWindow.cpp
Normal file
@@ -0,0 +1,326 @@
|
||||
#include "pch.h"
|
||||
#include "MainWindow.h"
|
||||
#if __has_include("MainWindow.g.cpp")
|
||||
#include "MainWindow.g.cpp"
|
||||
#endif
|
||||
|
||||
using namespace winrt;
|
||||
using namespace Windows::UI::Xaml;
|
||||
|
||||
namespace winrt::PowerRenameUILib::implementation
|
||||
{
|
||||
MainWindow::MainWindow() :
|
||||
m_allSelected{ true }
|
||||
{
|
||||
m_searchMRU = winrt::single_threaded_observable_vector<hstring>();
|
||||
m_replaceMRU = winrt::single_threaded_observable_vector<hstring>();
|
||||
|
||||
m_explorerItems = winrt::single_threaded_observable_vector<PowerRenameUILib::ExplorerItem>();
|
||||
|
||||
m_searchRegExShortcuts = winrt::single_threaded_observable_vector<PowerRenameUILib::PatternSnippet>();
|
||||
auto resourceLoader{ Windows::ApplicationModel::Resources::ResourceLoader::GetForCurrentView() };
|
||||
|
||||
m_searchRegExShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"\\.", resourceLoader.GetString(L"RegExCheatSheet_MatchAny")));
|
||||
m_searchRegExShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"\\d", resourceLoader.GetString(L"RegExCheatSheet_MatchDigit")));
|
||||
m_searchRegExShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"\\D", resourceLoader.GetString(L"RegExCheatSheet_MatchNonDigit")));
|
||||
m_searchRegExShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"\\w", resourceLoader.GetString(L"RegExCheatSheet_MatchNonWS")));
|
||||
m_searchRegExShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"\\S", resourceLoader.GetString(L"RegExCheatSheet_MatchWordChar")));
|
||||
m_searchRegExShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"\\S+", resourceLoader.GetString(L"RegExCheatSheet_MatchSeveralWS")));
|
||||
m_searchRegExShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"\\b", resourceLoader.GetString(L"RegExCheatSheet_MatchWordBoundary")));
|
||||
|
||||
m_dateTimeShortcuts = winrt::single_threaded_observable_vector<PowerRenameUILib::PatternSnippet>();
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$YYYY", resourceLoader.GetString(L"DateTimeCheatSheet_FullYear")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$YY", resourceLoader.GetString(L"DateTimeCheatSheet_YearLastTwoDigits")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$Y", resourceLoader.GetString(L"DateTimeCheatSheet_YearLastDigit")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$MMMM", resourceLoader.GetString(L"DateTimeCheatSheet_MonthName")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$MMM", resourceLoader.GetString(L"DateTimeCheatSheet_MonthNameAbbr")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$MM", resourceLoader.GetString(L"DateTimeCheatSheet_MonthDigitLZero")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$M", resourceLoader.GetString(L"DateTimeCheatSheet_MonthDigit")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$DDDD", resourceLoader.GetString(L"DateTimeCheatSheet_DayName")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$DDD", resourceLoader.GetString(L"DateTimeCheatSheet_DayNameAbbr")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$DD", resourceLoader.GetString(L"DateTimeCheatSheet_DayDigitLZero")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$D", resourceLoader.GetString(L"DateTimeCheatSheet_DayDigit")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$hh", resourceLoader.GetString(L"DateTimeCheatSheet_HoursLZero")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$h", resourceLoader.GetString(L"DateTimeCheatSheet_Hours")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$mm", resourceLoader.GetString(L"DateTimeCheatSheet_MinutesLZero")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$m", resourceLoader.GetString(L"DateTimeCheatSheet_Minutes")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$ss", resourceLoader.GetString(L"DateTimeCheatSheet_SecondsLZero")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$s", resourceLoader.GetString(L"DateTimeCheatSheet_Seconds")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$fff", resourceLoader.GetString(L"DateTimeCheatSheet_MilliSeconds3D")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$ff", resourceLoader.GetString(L"DateTimeCheatSheet_MilliSeconds2D")));
|
||||
m_dateTimeShortcuts.Append(winrt::make<PowerRenameUILib::implementation::PatternSnippet>(L"$f", resourceLoader.GetString(L"DateTimeCheatSheet_MilliSeconds1D")));
|
||||
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
Windows::Foundation::Collections::IObservableVector<hstring> MainWindow::SearchMRU()
|
||||
{
|
||||
return m_searchMRU;
|
||||
}
|
||||
|
||||
Windows::Foundation::Collections::IObservableVector<hstring> MainWindow::ReplaceMRU()
|
||||
{
|
||||
return m_replaceMRU;
|
||||
}
|
||||
|
||||
winrt::Windows::Foundation::Collections::IObservableVector<winrt::PowerRenameUILib::ExplorerItem> MainWindow::ExplorerItems()
|
||||
{
|
||||
return m_explorerItems;
|
||||
}
|
||||
|
||||
winrt::Windows::Foundation::Collections::IObservableVector<winrt::PowerRenameUILib::PatternSnippet> MainWindow::SearchRegExShortcuts()
|
||||
{
|
||||
return m_searchRegExShortcuts;
|
||||
}
|
||||
|
||||
winrt::Windows::Foundation::Collections::IObservableVector<winrt::PowerRenameUILib::PatternSnippet> MainWindow::DateTimeShortcuts()
|
||||
{
|
||||
return m_dateTimeShortcuts;
|
||||
}
|
||||
|
||||
Windows::UI::Xaml::Controls::AutoSuggestBox MainWindow::AutoSuggestBoxSearch()
|
||||
{
|
||||
return textBox_search();
|
||||
}
|
||||
|
||||
Windows::UI::Xaml::Controls::AutoSuggestBox MainWindow::AutoSuggestBoxReplace()
|
||||
{
|
||||
return textBox_replace();
|
||||
}
|
||||
|
||||
Windows::UI::Xaml::Controls::CheckBox MainWindow::CheckBoxRegex()
|
||||
{
|
||||
return checkBox_regex();
|
||||
}
|
||||
|
||||
Windows::UI::Xaml::Controls::CheckBox MainWindow::CheckBoxCaseSensitive()
|
||||
{
|
||||
return checkBox_case();
|
||||
}
|
||||
|
||||
Windows::UI::Xaml::Controls::CheckBox MainWindow::CheckBoxMatchAll()
|
||||
{
|
||||
return checkBox_matchAll();
|
||||
}
|
||||
|
||||
Windows::UI::Xaml::Controls::ComboBox MainWindow::ComboBoxRenameParts()
|
||||
{
|
||||
return comboBox_renameParts();
|
||||
}
|
||||
|
||||
Windows::UI::Xaml::Controls::Primitives::ToggleButton MainWindow::ToggleButtonIncludeFiles()
|
||||
{
|
||||
return toggleButton_includeFiles();
|
||||
}
|
||||
|
||||
Windows::UI::Xaml::Controls::Primitives::ToggleButton MainWindow::ToggleButtonIncludeFolders()
|
||||
{
|
||||
return toggleButton_includeFolders();
|
||||
}
|
||||
|
||||
Windows::UI::Xaml::Controls::Primitives::ToggleButton MainWindow::ToggleButtonIncludeSubfolders()
|
||||
{
|
||||
return toggleButton_includeSubfolders();
|
||||
}
|
||||
|
||||
Windows::UI::Xaml::Controls::Primitives::ToggleButton MainWindow::ToggleButtonEnumerateItems()
|
||||
{
|
||||
return toggleButton_enumItems();
|
||||
}
|
||||
|
||||
Windows::UI::Xaml::Controls::Primitives::ToggleButton MainWindow::ToggleButtonUpperCase()
|
||||
{
|
||||
return toggleButton_upperCase();
|
||||
}
|
||||
|
||||
Windows::UI::Xaml::Controls::Primitives::ToggleButton MainWindow::ToggleButtonLowerCase()
|
||||
{
|
||||
return toggleButton_lowerCase();
|
||||
}
|
||||
|
||||
Windows::UI::Xaml::Controls::Primitives::ToggleButton MainWindow::ToggleButtonTitleCase()
|
||||
{
|
||||
return toggleButton_titleCase();
|
||||
}
|
||||
|
||||
Windows::UI::Xaml::Controls::Primitives::ToggleButton MainWindow::ToggleButtonCapitalize()
|
||||
{
|
||||
return toggleButton_capitalize();
|
||||
}
|
||||
|
||||
Windows::UI::Xaml::Controls::Button MainWindow::ButtonSettings()
|
||||
{
|
||||
return button_settings();
|
||||
}
|
||||
|
||||
Windows::UI::Xaml::Controls::CheckBox MainWindow::CheckBoxSelectAll()
|
||||
{
|
||||
return checkBox_selectAll();
|
||||
}
|
||||
|
||||
PowerRenameUILib::UIUpdates MainWindow::UIUpdatesItem()
|
||||
{
|
||||
return m_uiUpdatesItem;
|
||||
}
|
||||
|
||||
void MainWindow::AddExplorerItem(int32_t id, hstring const& original, hstring const& renamed, int32_t type, int32_t parentId, bool checked)
|
||||
{
|
||||
auto newItem = winrt::make<PowerRenameUILib::implementation::ExplorerItem>(id, original, renamed, type, checked);
|
||||
if (parentId == 0)
|
||||
{
|
||||
m_explorerItems.Append(newItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
auto parent = FindById(parentId);
|
||||
parent.Children().Append(newItem);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::UpdateExplorerItem(int32_t id, hstring const& newName)
|
||||
{
|
||||
auto itemToUpdate = FindById(id);
|
||||
if (itemToUpdate != NULL)
|
||||
{
|
||||
itemToUpdate.Renamed(newName);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::UpdateRenamedExplorerItem(int32_t id, hstring const& newOriginalName)
|
||||
{
|
||||
auto itemToUpdate = FindById(id);
|
||||
if (itemToUpdate != NULL)
|
||||
{
|
||||
itemToUpdate.Original(newOriginalName);
|
||||
itemToUpdate.Renamed(L"");
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::AppendSearchMRU(hstring const& value)
|
||||
{
|
||||
m_searchMRU.Append(value);
|
||||
}
|
||||
|
||||
void MainWindow::AppendReplaceMRU(hstring const& value)
|
||||
{
|
||||
m_replaceMRU.Append(value);
|
||||
}
|
||||
|
||||
PowerRenameUILib::ExplorerItem MainWindow::FindById(int32_t id)
|
||||
{
|
||||
auto fakeRoot = winrt::make<PowerRenameUILib::implementation::ExplorerItem>(0, L"Fake", L"", 0, false);
|
||||
fakeRoot.Children(m_explorerItems);
|
||||
return FindById(fakeRoot, id);
|
||||
}
|
||||
|
||||
PowerRenameUILib::ExplorerItem MainWindow::FindById(PowerRenameUILib::ExplorerItem& root, int32_t id)
|
||||
{
|
||||
if (root.Id() == id)
|
||||
return root;
|
||||
|
||||
if (root.Type() == static_cast<UINT>(ExplorerItem::ExplorerItemType::Folder))
|
||||
{
|
||||
for (auto c : root.Children())
|
||||
{
|
||||
auto result = FindById(c, id);
|
||||
if (result != NULL)
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void MainWindow::ToggleAll(PowerRenameUILib::ExplorerItem node, bool checked)
|
||||
{
|
||||
if (node == NULL)
|
||||
return;
|
||||
|
||||
node.Checked(checked);
|
||||
|
||||
if (node.Type() == static_cast<UINT>(ExplorerItem::ExplorerItemType::Folder))
|
||||
{
|
||||
for (auto c : node.Children())
|
||||
{
|
||||
ToggleAll(c, checked);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::Checked_ids(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::RoutedEventArgs const&)
|
||||
{
|
||||
auto checkbox = sender.as<Windows::UI::Xaml::Controls::CheckBox>();
|
||||
auto id = std::stoi(std::wstring{ checkbox.Name() });
|
||||
auto item = FindById(id);
|
||||
if (checkbox.IsChecked().GetBoolean() != item.Checked())
|
||||
{
|
||||
m_uiUpdatesItem.Checked(checkbox.IsChecked().GetBoolean());
|
||||
m_uiUpdatesItem.ChangedExplorerItemId(id);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::SelectAll(winrt::Windows::Foundation::IInspectable const&, winrt::Windows::UI::Xaml::RoutedEventArgs const&)
|
||||
{
|
||||
if (checkBox_selectAll().IsChecked().GetBoolean() != m_allSelected)
|
||||
{
|
||||
auto fakeRoot = winrt::make<PowerRenameUILib::implementation::ExplorerItem>(0, L"Fake", L"", 0, false);
|
||||
fakeRoot.Children(m_explorerItems);
|
||||
ToggleAll(fakeRoot, checkBox_selectAll().IsChecked().GetBoolean());
|
||||
m_uiUpdatesItem.ToggleAll();
|
||||
m_allSelected = !m_allSelected;
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::ShowAll(winrt::Windows::Foundation::IInspectable const&, winrt::Windows::UI::Xaml::RoutedEventArgs const&)
|
||||
{
|
||||
button_showAll().IsChecked(true);
|
||||
button_showRenamed().IsChecked(false);
|
||||
if (!m_uiUpdatesItem.ShowAll())
|
||||
{
|
||||
m_explorerItems.Clear();
|
||||
m_uiUpdatesItem.ShowAll(true);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::ShowRenamed(winrt::Windows::Foundation::IInspectable const&, winrt::Windows::UI::Xaml::RoutedEventArgs const&)
|
||||
{
|
||||
button_showRenamed().IsChecked(true);
|
||||
button_showAll().IsChecked(false);
|
||||
if (m_uiUpdatesItem.ShowAll())
|
||||
{
|
||||
m_explorerItems.Clear();
|
||||
m_uiUpdatesItem.ShowAll(false);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::RegExItemClick(winrt::Windows::Foundation::IInspectable const&, winrt::Windows::UI::Xaml::Controls::ItemClickEventArgs const& e)
|
||||
{
|
||||
auto s = e.ClickedItem().try_as<PatternSnippet>();
|
||||
RegExFlyout().Hide();
|
||||
textBox_search().Text(textBox_search().Text() + s->Code());
|
||||
}
|
||||
|
||||
void MainWindow::DateTimeItemClick(winrt::Windows::Foundation::IInspectable const&, winrt::Windows::UI::Xaml::Controls::ItemClickEventArgs const& e)
|
||||
{
|
||||
auto s = e.ClickedItem().try_as<PatternSnippet>();
|
||||
DateTimeFlyout().Hide();
|
||||
textBox_replace().Text(textBox_replace().Text() + s->Code());
|
||||
}
|
||||
|
||||
void MainWindow::button_rename_Click(winrt::Microsoft::UI::Xaml::Controls::SplitButton const&, winrt::Microsoft::UI::Xaml::Controls::SplitButtonClickEventArgs const&)
|
||||
{
|
||||
m_uiUpdatesItem.CloseUIWindow(false);
|
||||
m_uiUpdatesItem.Rename();
|
||||
}
|
||||
|
||||
void MainWindow::MenuFlyoutItem_Click(winrt::Windows::Foundation::IInspectable const&, winrt::Windows::UI::Xaml::RoutedEventArgs const&)
|
||||
{
|
||||
m_uiUpdatesItem.CloseUIWindow(true);
|
||||
m_uiUpdatesItem.Rename();
|
||||
}
|
||||
|
||||
void MainWindow::OpenDocs(winrt::Windows::Foundation::IInspectable const&, winrt::Windows::UI::Xaml::RoutedEventArgs const&)
|
||||
{
|
||||
Windows::System::Launcher::LaunchUriAsync(winrt::Windows::Foundation::Uri{ L"https://aka.ms/PowerToysOverview_PowerRename" });
|
||||
}
|
||||
}
|
||||
88
src/modules/powerrename/PowerRenameUILib/MainWindow.h
Normal file
@@ -0,0 +1,88 @@
|
||||
#pragma once
|
||||
|
||||
#include "winrt/Windows.UI.Xaml.h"
|
||||
#include "winrt/Windows.UI.Xaml.Markup.h"
|
||||
#include "winrt/Windows.UI.Xaml.Interop.h"
|
||||
#include "winrt/Windows.UI.Xaml.Controls.Primitives.h"
|
||||
#include "MainWindow.g.h"
|
||||
#include "PatternSnippet.h"
|
||||
#include "ExplorerItem.h"
|
||||
#include "ExplorerItemTemplateSelector.h"
|
||||
|
||||
namespace winrt::PowerRenameUILib::implementation
|
||||
{
|
||||
struct MainWindow : MainWindowT<MainWindow>
|
||||
{
|
||||
MainWindow();
|
||||
|
||||
Windows::Foundation::Collections::IObservableVector<hstring> SearchMRU();
|
||||
Windows::Foundation::Collections::IObservableVector<hstring> ReplaceMRU();
|
||||
winrt::Windows::Foundation::Collections::IObservableVector<PowerRenameUILib::ExplorerItem> ExplorerItems();
|
||||
winrt::Windows::Foundation::Collections::IObservableVector<PowerRenameUILib::PatternSnippet> SearchRegExShortcuts();
|
||||
winrt::Windows::Foundation::Collections::IObservableVector<PowerRenameUILib::PatternSnippet> DateTimeShortcuts();
|
||||
|
||||
Windows::UI::Xaml::Controls::AutoSuggestBox AutoSuggestBoxSearch();
|
||||
Windows::UI::Xaml::Controls::AutoSuggestBox AutoSuggestBoxReplace();
|
||||
|
||||
Windows::UI::Xaml::Controls::CheckBox CheckBoxRegex();
|
||||
Windows::UI::Xaml::Controls::CheckBox CheckBoxCaseSensitive();
|
||||
Windows::UI::Xaml::Controls::CheckBox CheckBoxMatchAll();
|
||||
|
||||
Windows::UI::Xaml::Controls::ComboBox ComboBoxRenameParts();
|
||||
|
||||
Windows::UI::Xaml::Controls::Primitives::ToggleButton ToggleButtonIncludeFiles();
|
||||
Windows::UI::Xaml::Controls::Primitives::ToggleButton ToggleButtonIncludeFolders();
|
||||
Windows::UI::Xaml::Controls::Primitives::ToggleButton ToggleButtonIncludeSubfolders();
|
||||
|
||||
Windows::UI::Xaml::Controls::Primitives::ToggleButton ToggleButtonUpperCase();
|
||||
Windows::UI::Xaml::Controls::Primitives::ToggleButton ToggleButtonLowerCase();
|
||||
Windows::UI::Xaml::Controls::Primitives::ToggleButton ToggleButtonTitleCase();
|
||||
Windows::UI::Xaml::Controls::Primitives::ToggleButton ToggleButtonCapitalize();
|
||||
|
||||
Windows::UI::Xaml::Controls::Primitives::ToggleButton ToggleButtonEnumerateItems();
|
||||
|
||||
Windows::UI::Xaml::Controls::Button ButtonSettings();
|
||||
|
||||
Windows::UI::Xaml::Controls::CheckBox CheckBoxSelectAll();
|
||||
|
||||
PowerRenameUILib::UIUpdates UIUpdatesItem();
|
||||
|
||||
void AddExplorerItem(int32_t id, hstring const& original, hstring const& renamed, int32_t type, int32_t parentId, bool checked);
|
||||
void UpdateExplorerItem(int32_t id, hstring const& newName);
|
||||
void UpdateRenamedExplorerItem(int32_t id, hstring const& newOriginalName);
|
||||
void AppendSearchMRU(hstring const& value);
|
||||
void AppendReplaceMRU(hstring const& value);
|
||||
|
||||
void Checked_ids(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::RoutedEventArgs const& e);
|
||||
void SelectAll(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::RoutedEventArgs const& e);
|
||||
void ShowAll(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::RoutedEventArgs const& e);
|
||||
void ShowRenamed(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::RoutedEventArgs const& e);
|
||||
|
||||
private:
|
||||
bool m_allSelected;
|
||||
PowerRenameUILib::UIUpdates m_uiUpdatesItem;
|
||||
PowerRenameUILib::ExplorerItem FindById(int32_t id);
|
||||
PowerRenameUILib::ExplorerItem FindById(PowerRenameUILib::ExplorerItem& root, int32_t id);
|
||||
void ToggleAll(PowerRenameUILib::ExplorerItem node, bool checked);
|
||||
|
||||
winrt::Windows::Foundation::Collections::IObservableVector<hstring> m_searchMRU;
|
||||
winrt::Windows::Foundation::Collections::IObservableVector<hstring> m_replaceMRU;
|
||||
winrt::Windows::Foundation::Collections::IObservableVector<PowerRenameUILib::ExplorerItem> m_explorerItems;
|
||||
winrt::Windows::Foundation::Collections::IObservableVector<PowerRenameUILib::PatternSnippet> m_searchRegExShortcuts;
|
||||
winrt::Windows::Foundation::Collections::IObservableVector<PowerRenameUILib::PatternSnippet> m_dateTimeShortcuts;
|
||||
|
||||
public:
|
||||
void RegExItemClick(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::Controls::ItemClickEventArgs const& e);
|
||||
void DateTimeItemClick(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::Controls::ItemClickEventArgs const& e);
|
||||
void button_rename_Click(winrt::Microsoft::UI::Xaml::Controls::SplitButton const& sender, winrt::Microsoft::UI::Xaml::Controls::SplitButtonClickEventArgs const& args);
|
||||
void MenuFlyoutItem_Click(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::RoutedEventArgs const& e);
|
||||
void OpenDocs(winrt::Windows::Foundation::IInspectable const& sender, winrt::Windows::UI::Xaml::RoutedEventArgs const& e);
|
||||
};
|
||||
}
|
||||
|
||||
namespace winrt::PowerRenameUILib::factory_implementation
|
||||
{
|
||||
struct MainWindow : MainWindowT<MainWindow, implementation::MainWindow>
|
||||
{
|
||||
};
|
||||
}
|
||||
61
src/modules/powerrename/PowerRenameUILib/MainWindow.idl
Normal file
@@ -0,0 +1,61 @@
|
||||
import "ExplorerItem.idl";
|
||||
import "PatternSnippet.idl";
|
||||
|
||||
namespace PowerRenameUILib
|
||||
{
|
||||
runtimeclass UIUpdates : Windows.UI.Xaml.Data.INotifyPropertyChanged
|
||||
{
|
||||
UIUpdates();
|
||||
Boolean ShowAll;
|
||||
Int32 ChangedExplorerItemId;
|
||||
Boolean Checked;
|
||||
void ToggleAll();
|
||||
Boolean CloseUIWindow();
|
||||
void CloseUIWindow(Boolean closeUIWindow);
|
||||
Boolean ButtonRenameEnabled;
|
||||
void Rename();
|
||||
}
|
||||
|
||||
[default_interface] runtimeclass MainWindow : Windows.UI.Xaml.Controls.UserControl
|
||||
{
|
||||
MainWindow();
|
||||
|
||||
Windows.Foundation.Collections.IObservableVector<String> SearchMRU { get; };
|
||||
Windows.Foundation.Collections.IObservableVector<String> ReplaceMRU { get; };
|
||||
|
||||
Windows.Foundation.Collections.IObservableVector<ExplorerItem> ExplorerItems { get; };
|
||||
Windows.Foundation.Collections.IObservableVector<PatternSnippet> SearchRegExShortcuts { get; };
|
||||
Windows.Foundation.Collections.IObservableVector<PatternSnippet> DateTimeShortcuts { get; };
|
||||
|
||||
Windows.UI.Xaml.Controls.AutoSuggestBox AutoSuggestBoxSearch { get; };
|
||||
Windows.UI.Xaml.Controls.AutoSuggestBox AutoSuggestBoxReplace { get; };
|
||||
|
||||
Windows.UI.Xaml.Controls.CheckBox CheckBoxRegex { get; };
|
||||
Windows.UI.Xaml.Controls.CheckBox CheckBoxCaseSensitive { get; };
|
||||
Windows.UI.Xaml.Controls.CheckBox CheckBoxMatchAll { get; };
|
||||
Windows.UI.Xaml.Controls.Primitives.ToggleButton ToggleButtonEnumerateItems { get; };
|
||||
|
||||
Windows.UI.Xaml.Controls.ComboBox ComboBoxRenameParts { get; };
|
||||
|
||||
Windows.UI.Xaml.Controls.Primitives.ToggleButton ToggleButtonIncludeFiles { get; };
|
||||
Windows.UI.Xaml.Controls.Primitives.ToggleButton ToggleButtonIncludeFolders { get; };
|
||||
Windows.UI.Xaml.Controls.Primitives.ToggleButton ToggleButtonIncludeSubfolders { get; };
|
||||
|
||||
Windows.UI.Xaml.Controls.Button ButtonSettings { get; };
|
||||
|
||||
Windows.UI.Xaml.Controls.CheckBox CheckBoxSelectAll { get; };
|
||||
|
||||
Windows.UI.Xaml.Controls.Primitives.ToggleButton ToggleButtonUpperCase { get; };
|
||||
Windows.UI.Xaml.Controls.Primitives.ToggleButton ToggleButtonLowerCase { get; };
|
||||
Windows.UI.Xaml.Controls.Primitives.ToggleButton ToggleButtonTitleCase { get; };
|
||||
Windows.UI.Xaml.Controls.Primitives.ToggleButton ToggleButtonCapitalize { get; };
|
||||
|
||||
void AddExplorerItem(Int32 id, String original, String renamed, Int32 type, Int32 parentId, Boolean checked);
|
||||
void UpdateExplorerItem(Int32 id, String newName);
|
||||
void UpdateRenamedExplorerItem(Int32 id, String newOriginalName);
|
||||
void AppendSearchMRU(String value);
|
||||
void AppendReplaceMRU(String value);
|
||||
|
||||
UIUpdates UIUpdatesItem { get; };
|
||||
}
|
||||
}
|
||||
326
src/modules/powerrename/PowerRenameUILib/MainWindow.xaml
Normal file
@@ -0,0 +1,326 @@
|
||||
<UserControl x:Class="PowerRenameUILib.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:PowerRenameUILib" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:controls="using:Microsoft.UI.Xaml.Controls" xmlns:muxc="using:Microsoft.UI.Xaml.Controls" controls:BackdropMaterial.ApplyToRootOrPageBackground="True" xmlns:animatedVisuals="using:Microsoft.UI.Xaml.Controls.AnimatedVisuals" mc:Ignorable="d">
|
||||
|
||||
<UserControl.Resources>
|
||||
|
||||
<local:ExplorerItemTemplateSelector x:Key="ExplorerItemTemplateSelector" FolderTemplate="{StaticResource FolderTemplate}" FileTemplate="{StaticResource FileTemplate}" />
|
||||
<local:ExplorerItemTemplateSelector x:Key="RenamedExplorerItemTemplateSelector" FolderTemplate="{StaticResource RenamedFolderTemplate}" FileTemplate="{StaticResource RenamedFileTemplate}" />
|
||||
|
||||
<DataTemplate x:Key="FileTemplate" x:DataType="local:ExplorerItem">
|
||||
<Grid Height="24" Margin="0,4,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="36" />
|
||||
<ColumnDefinition Width="36" />
|
||||
<ColumnDefinition Width="300" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<CheckBox TabIndex="0" Grid.Column="0" XYFocusKeyboardNavigation="Enabled" Checked="Checked_ids" IsTabStop="True" Unchecked="Checked_ids" Content="" Name="{x:Bind IdStr}" AutomationProperties.Name="{x:Bind Original}" AutomationProperties.HelpText="{x:Bind Renamed}" IsChecked="{x:Bind Checked, Mode=TwoWay}" />
|
||||
<Image Width="16" Source="ms-appx:///Assets/file.png" HorizontalAlignment="Left" Grid.Column="1" />
|
||||
|
||||
<TextBlock Text="{x:Bind Original, Mode=OneWay}" Foreground="{ThemeResource TextFillColorSecondaryBrush}" VerticalAlignment="Center" FontSize="12" Grid.Column="2" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
|
||||
<DataTemplate x:Key="FolderTemplate" x:DataType="local:ExplorerItem">
|
||||
<Grid Margin="0,4,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="36" />
|
||||
<ColumnDefinition Width="36" />
|
||||
<ColumnDefinition Width="300" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="24" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<CheckBox TabIndex="0" IsTabStop="True" XYFocusKeyboardNavigation="Enabled" Grid.Row="0" Grid.Column="0" Checked="Checked_ids" Unchecked="Checked_ids" Content="" Name="{x:Bind IdStr}" AutomationProperties.Name="{x:Bind Original}" AutomationProperties.HelpText="{x:Bind Renamed}" IsChecked="{x:Bind Checked, Mode=TwoWay}" />
|
||||
<Image Width="16" Source="ms-appx:///Assets/folder.png" HorizontalAlignment="Left" Grid.Column="1" />
|
||||
|
||||
<TextBlock Text="{x:Bind Original, Mode=OneWay}" Foreground="{ThemeResource TextFillColorSecondaryBrush}" VerticalAlignment="Center" FontSize="12" Grid.Column="2" />
|
||||
|
||||
<ListView Grid.ColumnSpan="3" IsTabStop="false" XYFocusKeyboardNavigation="Enabled" SelectionMode="None" IsItemClickEnabled="False" ItemsSource="{x:Bind Children}" Grid.Row="1" ItemTemplateSelector="{StaticResource ExplorerItemTemplateSelector}">
|
||||
<ListView.ItemContainerStyle>
|
||||
<Style TargetType="ListViewItem">
|
||||
<Setter Property="IsTabStop" Value="False" />
|
||||
</Style>
|
||||
</ListView.ItemContainerStyle>
|
||||
</ListView>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
|
||||
<DataTemplate x:Key="RenamedFileTemplate" x:DataType="local:ExplorerItem">
|
||||
<Grid Height="24" Margin="0,4,0,0">
|
||||
<TextBlock Text="{x:Bind Renamed, Mode=OneWay}" FontWeight="SemiBold" VerticalAlignment="Center" FontSize="14" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
<DataTemplate x:Key="RenamedFolderTemplate" x:DataType="local:ExplorerItem">
|
||||
<Grid Margin="0,4,0,0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="24" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="{x:Bind Renamed, Mode=OneWay}" FontWeight="Bold" VerticalAlignment="Center" FontSize="14" />
|
||||
<ListView IsTabStop="false" Margin="-12,0,0,0" SelectionMode="None" IsItemClickEnabled="False" ItemsSource="{x:Bind Children}" Grid.Row="1" ItemTemplateSelector="{StaticResource RenamedExplorerItemTemplateSelector}">
|
||||
<ListView.ItemContainerStyle>
|
||||
<Style TargetType="ListViewItem">
|
||||
<Setter Property="IsTabStop" Value="False" />
|
||||
</Style>
|
||||
</ListView.ItemContainerStyle>
|
||||
</ListView>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</UserControl.Resources>
|
||||
|
||||
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" Padding="20">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="0" /> <!-- 48 if we need to draw the title bar ourself -->
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid Grid.Row="1" Grid.Column="1" Background="{ThemeResource LayerFillColorDefaultBrush}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" CornerRadius="8" BorderThickness="1" BorderBrush="{ThemeResource CardStrokeColorDefaultBrush}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="48" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="36" />
|
||||
<ColumnDefinition Width="48" />
|
||||
<ColumnDefinition Width="Auto" MinWidth="324" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="48" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<CheckBox x:Name="checkBox_selectAll" IsChecked="True" Content="" x:Uid="SelectAllCheckBox" Margin="16,0,0,0" Checked="SelectAll" Unchecked="SelectAll" />
|
||||
<Image Width="16" Grid.Column="1" Source="ms-appx:///Assets/file.png" HorizontalAlignment="Center" />
|
||||
|
||||
<TextBlock x:Uid="TxtBlock_Original" Grid.Column="2" FontWeight="Medium" Margin="2,-2,0,0" VerticalAlignment="Center" />
|
||||
<AppBarSeparator Grid.Column="3" Margin="-6,4,0,4" HorizontalAlignment="Left" />
|
||||
<TextBlock x:Uid="TxtBlock_Renamed" FontWeight="Medium" Grid.Column="3" Margin="4,-2,0,0" HorizontalAlignment="Left" VerticalAlignment="Center" />
|
||||
<Button Content="" Background="Transparent" FontFamily="{ThemeResource SymbolThemeFontFamily}" Height="32" x:Uid="FilterButton" Grid.Column="4" BorderThickness="0" HorizontalAlignment="Right" Margin="0,0,8,0">
|
||||
<Button.Flyout>
|
||||
<MenuBarItemFlyout Placement="Bottom">
|
||||
<controls:RadioMenuFlyoutItem x:Name="button_showAll" Click="ShowAll" x:Uid="ShowAll" IsChecked="True" GroupName="Filter" />
|
||||
<controls:RadioMenuFlyoutItem x:Name="button_showRenamed" Click="ShowRenamed" x:Uid="ShowOnly" GroupName="Filter" />
|
||||
</MenuBarItemFlyout>
|
||||
</Button.Flyout>
|
||||
</Button>
|
||||
|
||||
<Rectangle Height="1" Grid.ColumnSpan="5" Fill="{ThemeResource CardStrokeColorDefaultBrush}" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" />
|
||||
<ScrollViewer Grid.ColumnSpan="6" HorizontalScrollMode="Enabled" Grid.Row="1">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" MinWidth="286" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<ListView IsTabStop="false" SelectionMode="None" XYFocusKeyboardNavigation="Enabled" IsItemClickEnabled="False" ItemsSource="{x:Bind ExplorerItems, Mode=OneWay}" Margin="4,0,0,0" ItemTemplateSelector="{StaticResource ExplorerItemTemplateSelector}">
|
||||
<ListView.ItemContainerStyle>
|
||||
<Style TargetType="ListViewItem">
|
||||
<Setter Property="IsTabStop" Value="False" />
|
||||
</Style>
|
||||
</ListView.ItemContainerStyle>
|
||||
</ListView>
|
||||
<!--<controls:ItemsRepeater ItemsSource="{x:Bind ExplorerItems, Mode=OneWay}"
|
||||
Margin="16,0,0,0"
|
||||
ItemTemplate="{StaticResource ExplorerItemTemplateSelector}" />-->
|
||||
<ListView Grid.Column="1" IsTabStop="false" SelectionMode="None" IsItemClickEnabled="False" ItemsSource="{x:Bind ExplorerItems, Mode=OneWay}" ItemTemplateSelector="{StaticResource RenamedExplorerItemTemplateSelector}">
|
||||
<ListView.ItemContainerStyle>
|
||||
<Style TargetType="ListViewItem">
|
||||
<Setter Property="IsTabStop" Value="False" />
|
||||
</Style>
|
||||
</ListView.ItemContainerStyle>
|
||||
</ListView>
|
||||
<!--<controls:ItemsRepeater ItemsSource="{x:Bind ExplorerItems, Mode=OneWay}"
|
||||
Grid.Column="1"
|
||||
ItemTemplate="{StaticResource RenamedExplorerItemTemplateSelector}" />-->
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Column="0" Grid.Row="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" BorderBrush="{ThemeResource CardStrokeColorDefaultBrush}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="48" />
|
||||
</Grid.RowDefinitions>
|
||||
<ScrollViewer>
|
||||
<StackPanel Orientation="Vertical" Padding="0,0,0,16" Margin="0,0,20,0">
|
||||
<Grid>
|
||||
<AutoSuggestBox x:Name="textBox_search" x:Uid="SearchBox" Height="48" VerticalContentAlignment="Center" ItemsSource="{x:Bind SearchMRU}" />
|
||||
|
||||
<Button FontFamily="{ThemeResource SymbolThemeFontFamily}" VerticalAlignment="Center" Visibility="{Binding ElementName=checkBox_regex, Path=IsChecked}" MinHeight="32" Margin="4" x:Uid="RegExButton" Background="Transparent" BorderBrush="Transparent" Content="" HorizontalAlignment="Right">
|
||||
<Button.Flyout>
|
||||
<Flyout x:Name="RegExFlyout">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="48" />
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock x:Uid="RegExCheatSheet_Title" FontWeight="SemiBold" />
|
||||
<ListView ItemsSource="{x:Bind SearchRegExShortcuts}" Grid.Row="1" IsItemClickEnabled="True" Margin="-4,12,0,0" ItemClick="RegExItemClick">
|
||||
<ListView.ItemTemplate>
|
||||
<DataTemplate x:DataType="local:PatternSnippet">
|
||||
<Grid ColumnSpacing="8" Margin="-10,0,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="48" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Border CornerRadius="4" Padding="8" HorizontalAlignment="Left" BorderThickness="1" BorderBrush="{ThemeResource ButtonBorderBrush}" Background="{ThemeResource ButtonBackground}">
|
||||
<TextBlock FontFamily="Consolas" Foreground="{ThemeResource ButtonForeground}" Text="{x:Bind Code}" />
|
||||
</Border>
|
||||
|
||||
<TextBlock Text="{x:Bind Description}" FontSize="12" Grid.Column="1" Margin="0,0,0,0" Foreground="{ThemeResource TextFillColorSecondaryBrush}" VerticalAlignment="Center" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</ListView.ItemTemplate>
|
||||
</ListView>
|
||||
<HyperlinkButton Grid.Row="2" VerticalAlignment="Bottom">
|
||||
<TextBlock x:Uid="RegExCheatSheet_LearnMore" />
|
||||
</HyperlinkButton>
|
||||
</Grid>
|
||||
</Flyout>
|
||||
</Button.Flyout>
|
||||
</Button>
|
||||
</Grid>
|
||||
|
||||
|
||||
<CheckBox x:Name="checkBox_regex" x:Uid="CheckBox_RegEx" Margin="2,12,0,0" />
|
||||
<CheckBox x:Name="checkBox_matchAll" x:Uid="CheckBox_MatchAll" Margin="2,4,0,0" />
|
||||
<CheckBox x:Name="checkBox_case" x:Uid="CheckBox_Case" Margin="2,4,0,0" />
|
||||
|
||||
<Rectangle Height="1" Fill="{ThemeResource CardStrokeColorDefaultBrush}" HorizontalAlignment="Stretch" Margin="0,16,0,20" />
|
||||
<Grid>
|
||||
<AutoSuggestBox x:Name="textBox_replace" Margin="0,0,0,0" x:Uid="ReplaceBox" Height="48" VerticalContentAlignment="Center" Padding="12,12,0,0" ItemsSource="{x:Bind ReplaceMRU}" />
|
||||
|
||||
<Button FontFamily="{ThemeResource SymbolThemeFontFamily}" VerticalAlignment="Center" MinHeight="32" Margin="4" x:Uid="FileCreationButton" Background="Transparent" BorderBrush="Transparent" Content="" HorizontalAlignment="Right">
|
||||
<Button.Flyout>
|
||||
<Flyout x:Name="DateTimeFlyout" ShouldConstrainToRootBounds="False">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock x:Uid="DateTimeCheatSheet_Title" FontWeight="SemiBold" />
|
||||
<ListView ItemsSource="{x:Bind DateTimeShortcuts}" Grid.Row="1" IsItemClickEnabled="True" Margin="-4,12,0,0" ItemClick="DateTimeItemClick">
|
||||
<ListView.ItemTemplate>
|
||||
<DataTemplate x:DataType="local:PatternSnippet">
|
||||
<Grid ColumnSpacing="8" Margin="-10,0,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="56" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Border CornerRadius="4" Padding="8" HorizontalAlignment="Left" BorderThickness="1" BorderBrush="{ThemeResource ButtonBorderBrush}" Background="{ThemeResource ButtonBackground}">
|
||||
<TextBlock FontFamily="Consolas" Foreground="{ThemeResource ButtonForeground}" Text="{x:Bind Code}" />
|
||||
</Border>
|
||||
|
||||
<TextBlock Text="{x:Bind Description}" FontSize="12" Grid.Column="1" Margin="0,0,0,0" Foreground="{ThemeResource TextFillColorSecondaryBrush}" VerticalAlignment="Center" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</ListView.ItemTemplate>
|
||||
</ListView>
|
||||
|
||||
</Grid>
|
||||
</Flyout>
|
||||
</Button.Flyout>
|
||||
</Button>
|
||||
</Grid>
|
||||
|
||||
<TextBlock x:Uid="TextBox_ApplyTo" x:Name="ApplyToLabel" FontSize="12" Margin="0,20,0,8" Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="1" Spacing="4" Grid.Row="1">
|
||||
<ComboBox x:Name="comboBox_renameParts" SelectedIndex="0" Width="200" AutomationProperties.LabeledBy="{Binding ElementName=ApplyToLabel}" HorizontalAlignment="Stretch" Grid.Column="0" Grid.Row="1">
|
||||
<x:String>Filename + extension</x:String>
|
||||
<x:String>Filename only</x:String>
|
||||
<x:String>Extension only</x:String>
|
||||
</ComboBox>
|
||||
<AppBarSeparator Margin="5,0,5,0" />
|
||||
<ToggleButton x:Name="toggleButton_includeFiles" Content="" MinHeight="32" IsChecked="True" FontFamily="{ThemeResource SymbolThemeFontFamily}" x:Uid="ToggleButton_IncludeFiles" Style="{StaticResource CustomToggleButtonStyle}" />
|
||||
<ToggleButton x:Name="toggleButton_includeFolders" Content="" MinHeight="32" IsChecked="True" FontFamily="{ThemeResource SymbolThemeFontFamily}" x:Uid="ToggleButton_IncludeFolders" Style="{StaticResource CustomToggleButtonStyle}" />
|
||||
<ToggleButton x:Name="toggleButton_includeSubfolders" Content="" MinHeight="32" IsChecked="True" FontFamily="{ThemeResource SymbolThemeFontFamily}" x:Uid="ToggleButton_IncludeSubFolders" Style="{StaticResource CustomToggleButtonStyle}" />
|
||||
</StackPanel>
|
||||
|
||||
|
||||
<TextBlock x:Uid="TextBlock_TextFormatting" FontSize="12" Foreground="{ThemeResource TextFillColorSecondaryBrush}" Margin="0,20,0,8" />
|
||||
|
||||
|
||||
<StackPanel Orientation="Horizontal" Spacing="4">
|
||||
<ToggleButton x:Name="toggleButton_lowerCase" Content="aa" FontWeight="Medium" MinHeight="32" x:Uid="ToggleButton_Lowercase" Style="{StaticResource CustomToggleButtonStyle}" />
|
||||
<ToggleButton x:Name="toggleButton_upperCase" Content="AA" FontWeight="Medium" MinHeight="32" x:Uid="ToggleButton_Uppercase" Style="{StaticResource CustomToggleButtonStyle}" />
|
||||
<ToggleButton x:Name="toggleButton_titleCase" Content="Aa" FontWeight="Medium" MinHeight="32" x:Uid="ToggleButton_TitleCase" Style="{StaticResource CustomToggleButtonStyle}" />
|
||||
<ToggleButton x:Name="toggleButton_capitalize" Content="Aa Aa" FontWeight="Medium" MinHeight="32" x:Uid="ToggleButton_Capitalize" Style="{StaticResource CustomToggleButtonStyle}" />
|
||||
<AppBarSeparator Margin="5,0,5,0" />
|
||||
|
||||
<ToggleButton x:Name="toggleButton_enumItems" Content="" FontFamily="{ThemeResource SymbolThemeFontFamily}" MinHeight="32" x:Uid="ToggleButton_EnumItems" Style="{StaticResource CustomToggleButtonStyle}" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
</ScrollViewer>
|
||||
|
||||
<Rectangle Height="1" Fill="{ThemeResource CardStrokeColorDefaultBrush}" HorizontalAlignment="Stretch" Margin="0,0,20,0" VerticalAlignment="Top" Grid.Row="1" />
|
||||
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row="1" Spacing="8" Margin="0" Grid.Column="1" VerticalAlignment="Bottom" HorizontalAlignment="Left">
|
||||
|
||||
<Button x:Name="button_settings" Height="32" x:Uid="TxtBlock_ButtonSettings" FontFamily="{ThemeResource SymbolThemeFontFamily}" Grid.Row="5" Padding="6" Background="Transparent" BorderBrush="Transparent" Grid.Column="1">
|
||||
<Button.Content>
|
||||
<controls:AnimatedIcon x:Name="SearchAnimatedIcon">
|
||||
<controls:AnimatedIcon.Source>
|
||||
<animatedVisuals:AnimatedSettingsVisualSource />
|
||||
</controls:AnimatedIcon.Source>
|
||||
<controls:AnimatedIcon.FallbackIconSource>
|
||||
<controls:SymbolIconSource Symbol="Setting" />
|
||||
</controls:AnimatedIcon.FallbackIconSource>
|
||||
</controls:AnimatedIcon>
|
||||
|
||||
</Button.Content>
|
||||
</Button>
|
||||
|
||||
<Button x:Name="button_docs" Content="" FontFamily="{ThemeResource SymbolThemeFontFamily}" x:Uid="DocsButton" Background="Transparent" BorderBrush="Transparent" Grid.Row="1" Height="32" VerticalAlignment="Bottom" HorizontalAlignment="Left" Click="OpenDocs" />
|
||||
|
||||
|
||||
<!--<Button Content=""
|
||||
FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
||||
ToolTipService.ToolTip="Presets"
|
||||
Background="Transparent"
|
||||
BorderBrush="Transparent"
|
||||
Grid.Row="1"
|
||||
Height="36"
|
||||
VerticalAlignment="Bottom"
|
||||
HorizontalAlignment="Left">
|
||||
<Button.Flyout>
|
||||
<MenuFlyout>
|
||||
<MenuFlyoutItem Text="Photo rule 1" />
|
||||
<MenuFlyoutItem Text="Date time rule" />
|
||||
<MenuFlyoutItem Text="And another rule" />
|
||||
</MenuFlyout>
|
||||
</Button.Flyout>
|
||||
</Button>-->
|
||||
|
||||
</StackPanel>
|
||||
|
||||
<muxc:SplitButton Grid.Row="1" Style="{StaticResource SplitAccentButtonStyle}" x:Name="button_rename" Margin="0,0,20,0" x:Uid="ButtonApply" Click="button_rename_Click" HorizontalAlignment="Right" VerticalAlignment="Bottom" IsEnabled="{x:Bind UIUpdatesItem.ButtonRenameEnabled, Mode=OneWay}">
|
||||
<muxc:SplitButton.Content>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<FontIcon Glyph="" FontSize="14" VerticalAlignment="Center" Margin="0,2,10,0" />
|
||||
<TextBlock x:Uid="TxtBlock_ButtonApply" />
|
||||
</StackPanel>
|
||||
</muxc:SplitButton.Content>
|
||||
<muxc:SplitButton.Flyout>
|
||||
<MenuFlyout>
|
||||
<MenuFlyoutItem x:Uid="TxtBlock_ButtonApplyAndClose" Click="MenuFlyoutItem_Click" />
|
||||
</MenuFlyout>
|
||||
</muxc:SplitButton.Flyout>
|
||||
</muxc:SplitButton>
|
||||
</Grid>
|
||||
|
||||
<!--<StackPanel x:Name="TitleBar" Orientation="Horizontal">
|
||||
<Image Source="Assets/PowerRename.png" Width="16" Height="16" VerticalAlignment="Top" Margin="20,9,0,0"/>
|
||||
<TextBlock Text="PowerRename" Style="{StaticResource CaptionTextBlockStyle}" Margin="18,8,8,0" VerticalAlignment="Top" />
|
||||
</StackPanel>-->
|
||||
</Grid>
|
||||
</UserControl>
|
||||
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp">
|
||||
<Identity Name="661b0d33-8cab-4599-adca-0976e0346f63" Publisher="CN=ms" Version="1.0.0.0" />
|
||||
<mp:PhoneIdentity PhoneProductId="661b0d33-8cab-4599-adca-0976e0346f63" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
|
||||
<Properties>
|
||||
<DisplayName>PowerRenameUILib</DisplayName>
|
||||
<PublisherDisplayName>Microsoft Corporation</PublisherDisplayName>
|
||||
<Logo>Assets\StoreLogo.png</Logo>
|
||||
</Properties>
|
||||
<Dependencies>
|
||||
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
|
||||
</Dependencies>
|
||||
<Resources>
|
||||
<Resource Language="x-generate" />
|
||||
</Resources>
|
||||
<Applications>
|
||||
<Application Id="App" Executable="placeholder.exe" EntryPoint="PowerRenameUILib.App">
|
||||
<uap:VisualElements DisplayName="PowerRenameUILib" Description="Project for a single page C++/WinRT Universal Windows Platform (UWP) app with no predefined layout" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" BackgroundColor="transparent">
|
||||
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png"></uap:DefaultTile>
|
||||
<uap:SplashScreen Image="Assets\SplashScreen.png" />
|
||||
</uap:VisualElements>
|
||||
</Application>
|
||||
</Applications>
|
||||
<Capabilities>
|
||||
<Capability Name="internetClient" />
|
||||
</Capabilities>
|
||||
</Package>
|
||||
49
src/modules/powerrename/PowerRenameUILib/PatternSnippet.cpp
Normal file
@@ -0,0 +1,49 @@
|
||||
#include "pch.h"
|
||||
#include "PatternSnippet.h"
|
||||
#include "PatternSnippet.g.cpp"
|
||||
|
||||
namespace winrt::PowerRenameUILib::implementation
|
||||
{
|
||||
PatternSnippet::PatternSnippet(hstring const& code, hstring const& description) :
|
||||
m_code{ code }, m_description{ description }
|
||||
{
|
||||
}
|
||||
|
||||
hstring PatternSnippet::Code()
|
||||
{
|
||||
return m_code;
|
||||
}
|
||||
|
||||
void PatternSnippet::Code(hstring const& value)
|
||||
{
|
||||
if (m_code != value)
|
||||
{
|
||||
m_code = value;
|
||||
m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"Code" });
|
||||
}
|
||||
}
|
||||
|
||||
hstring PatternSnippet::Description()
|
||||
{
|
||||
return m_description;
|
||||
}
|
||||
|
||||
void PatternSnippet::Description(hstring const& value)
|
||||
{
|
||||
if (m_description != value)
|
||||
{
|
||||
m_description = value;
|
||||
m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"Description" });
|
||||
}
|
||||
}
|
||||
|
||||
winrt::event_token PatternSnippet::PropertyChanged(winrt::Windows::UI::Xaml::Data::PropertyChangedEventHandler const& handler)
|
||||
{
|
||||
return m_propertyChanged.add(handler);
|
||||
}
|
||||
|
||||
void PatternSnippet::PropertyChanged(winrt::event_token const& token) noexcept
|
||||
{
|
||||
m_propertyChanged.remove(token);
|
||||
}
|
||||
}
|
||||
29
src/modules/powerrename/PowerRenameUILib/PatternSnippet.h
Normal file
@@ -0,0 +1,29 @@
|
||||
#pragma once
|
||||
#include "PatternSnippet.g.h"
|
||||
|
||||
namespace winrt::PowerRenameUILib::implementation
|
||||
{
|
||||
struct PatternSnippet : PatternSnippetT<PatternSnippet>
|
||||
{
|
||||
PatternSnippet() = delete;
|
||||
|
||||
PatternSnippet(hstring const& code, hstring const& description);
|
||||
hstring Code();
|
||||
void Code(hstring const& value);
|
||||
hstring Description();
|
||||
void Description(hstring const& value);
|
||||
winrt::event_token PropertyChanged(winrt::Windows::UI::Xaml::Data::PropertyChangedEventHandler const& handler);
|
||||
void PropertyChanged(winrt::event_token const& token) noexcept;
|
||||
|
||||
private:
|
||||
winrt::hstring m_code;
|
||||
winrt::hstring m_description;
|
||||
winrt::event<Windows::UI::Xaml::Data::PropertyChangedEventHandler> m_propertyChanged;
|
||||
};
|
||||
}
|
||||
namespace winrt::PowerRenameUILib::factory_implementation
|
||||
{
|
||||
struct PatternSnippet : PatternSnippetT<PatternSnippet, implementation::PatternSnippet>
|
||||
{
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace PowerRenameUILib
|
||||
{
|
||||
runtimeclass PatternSnippet : Windows.UI.Xaml.Data.INotifyPropertyChanged
|
||||
{
|
||||
PatternSnippet(String code, String description);
|
||||
String Code;
|
||||
String Description;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<ApplicationDefinition Include="App.xaml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Page Include="MainWindow.xaml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Midl Include="App.idl" />
|
||||
<Midl Include="PatternSnippet.idl" />
|
||||
<Midl Include="ExplorerItem.idl" />
|
||||
<Midl Include="ExplorerItemTemplateSelector.idl" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="pch.cpp" />
|
||||
<ClCompile Include="App.cpp" />
|
||||
<ClCompile Include="$(GeneratedFilesDir)module.g.cpp" />
|
||||
<ClCompile Include="PatternSnippet.cpp" />
|
||||
<ClCompile Include="ExplorerItem.cpp" />
|
||||
<ClCompile Include="ExplorerItemTemplateSelector.cpp" />
|
||||
<ClCompile Include="UIUpdates.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="pch.h" />
|
||||
<ClInclude Include="app.base.h" />
|
||||
<ClInclude Include="PatternSnippet.h" />
|
||||
<ClInclude Include="ExplorerItem.h" />
|
||||
<ClInclude Include="ExplorerItemTemplateSelector.h" />
|
||||
<ClInclude Include="UIUpdates.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="Assets\Wide310x150Logo.scale-200.png">
|
||||
<Filter>Assets</Filter>
|
||||
</Image>
|
||||
<Image Include="Assets\StoreLogo.png">
|
||||
<Filter>Assets</Filter>
|
||||
</Image>
|
||||
<Image Include="Assets\Square150x150Logo.scale-200.png">
|
||||
<Filter>Assets</Filter>
|
||||
</Image>
|
||||
<Image Include="Assets\Square44x44Logo.targetsize-24_altform-unplated.png">
|
||||
<Filter>Assets</Filter>
|
||||
</Image>
|
||||
<Image Include="Assets\Square44x44Logo.scale-200.png">
|
||||
<Filter>Assets</Filter>
|
||||
</Image>
|
||||
<Image Include="Assets\SplashScreen.scale-200.png">
|
||||
<Filter>Assets</Filter>
|
||||
</Image>
|
||||
<Image Include="Assets\LockScreenLogo.scale-200.png">
|
||||
<Filter>Assets</Filter>
|
||||
</Image>
|
||||
<Image Include="Assets\file.png">
|
||||
<Filter>Assets</Filter>
|
||||
</Image>
|
||||
<Image Include="Assets\folder.png">
|
||||
<Filter>Assets</Filter>
|
||||
</Image>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AppxManifest Include="Package.appxmanifest" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Filter Include="Assets">
|
||||
<UniqueIdentifier>{e48dc53e-40b1-40cb-970a-f89935452892}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="PropertySheet.props" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="placeholder.exe" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Text Include="readme.txt" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,210 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.210922.5\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.210922.5\build\native\Microsoft.Windows.CppWinRT.props')" />
|
||||
<Import Project="..\..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.3\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.props" Condition="Exists('..\..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.3\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.props')" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<CppWinRTOptimized>true</CppWinRTOptimized>
|
||||
<CppWinRTRootNamespaceAutoMerge>true</CppWinRTRootNamespaceAutoMerge>
|
||||
<CppWinRTGenerateWindowsMetadata>true</CppWinRTGenerateWindowsMetadata>
|
||||
<MinimalCoreWin>true</MinimalCoreWin>
|
||||
<ProjectGuid>{4642d596-723f-4bfc-894c-46811219ac4a}</ProjectGuid>
|
||||
<ProjectName>PowerRenameUILib</ProjectName>
|
||||
<RootNamespace>PowerRenameUILib</RootNamespace>
|
||||
<DefaultLanguage>en-US</DefaultLanguage>
|
||||
<MinimumVisualStudioVersion>15.0</MinimumVisualStudioVersion>
|
||||
<AppContainerApplication>true</AppContainerApplication>
|
||||
<ApplicationType>Windows Store</ApplicationType>
|
||||
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>
|
||||
<WindowsTargetPlatformVersion Condition=" '$(WindowsTargetPlatformVersion)' == '' ">10.0.18362.0</WindowsTargetPlatformVersion>
|
||||
<WindowsTargetPlatformMinVersion>10.0.18362.0</WindowsTargetPlatformMinVersion>
|
||||
<CppWinRTVerbosity>normal</CppWinRTVerbosity>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<WindowsAppContainer>true</WindowsAppContainer>
|
||||
<AppxGeneratePriEnabled>true</AppxGeneratePriEnabled>
|
||||
<ProjectPriIndexName>App</ProjectPriIndexName>
|
||||
<AppxPackage>true</AppxPackage>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<PlatformToolset Condition="'$(VisualStudioVersion)' == '16.0'">v142</PlatformToolset>
|
||||
<PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
|
||||
<PlatformToolset Condition="'$(VisualStudioVersion)' == '14.0'">v140</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings"></ImportGroup>
|
||||
<ImportGroup Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets">
|
||||
<Import Project="PropertySheet.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="..\..\..\..\Solution.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="..\..\..\..\Solution.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\modules\PowerRename\</OutDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\modules\PowerRename\</OutDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<AdditionalOptions>%(AdditionalOptions) /bigobj</AdditionalOptions>
|
||||
<!--Temporarily disable cppwinrt heap enforcement to work around xaml compiler generated std::shared_ptr use -->
|
||||
<AdditionalOptions Condition="'$(CppWinRTHeapEnforcement)'==''">/DWINRT_NO_MAKE_DETECTION %(AdditionalOptions)</AdditionalOptions>
|
||||
<PreprocessorDefinitions>WIN32_LEAN_AND_MEAN;WINRT_LEAN_AND_MEAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MultiThreadedDLL</RuntimeLibrary>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="app.base.h" />
|
||||
<ClInclude Include="ExplorerItem.h" />
|
||||
<ClInclude Include="ExplorerItemTemplateSelector.h" />
|
||||
<ClInclude Include="MainWindow.h">
|
||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</ClInclude>
|
||||
<ClInclude Include="pch.h" />
|
||||
<ClInclude Include="App.h">
|
||||
<DependentUpon>App.xaml</DependentUpon>
|
||||
</ClInclude>
|
||||
<ClInclude Include="PatternSnippet.h" />
|
||||
<ClInclude Include="UIUpdates.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ApplicationDefinition Include="App.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Page Include="MainWindow.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AppxManifest Include="Package.appxmanifest">
|
||||
<SubType>Designer</SubType>
|
||||
</AppxManifest>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="Assets\file.png" />
|
||||
<Image Include="Assets\folder.png" />
|
||||
<Image Include="Assets\LockScreenLogo.scale-200.png" />
|
||||
<Image Include="Assets\SplashScreen.scale-200.png" />
|
||||
<Image Include="Assets\Square150x150Logo.scale-200.png" />
|
||||
<Image Include="Assets\Square44x44Logo.scale-200.png" />
|
||||
<Image Include="Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
|
||||
<Image Include="Assets\StoreLogo.png" />
|
||||
<Image Include="Assets\Wide310x150Logo.scale-200.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="ExplorerItem.cpp" />
|
||||
<ClCompile Include="ExplorerItemTemplateSelector.cpp" />
|
||||
<ClCompile Include="MainWindow.cpp">
|
||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</ClCompile>
|
||||
<ClCompile Include="pch.cpp">
|
||||
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="App.cpp">
|
||||
<DependentUpon>App.xaml</DependentUpon>
|
||||
</ClCompile>
|
||||
<ClCompile Include="$(GeneratedFilesDir)module.g.cpp" />
|
||||
<ClCompile Include="PatternSnippet.cpp" />
|
||||
<ClCompile Include="UIUpdates.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Midl Include="App.idl">
|
||||
<DependentUpon>App.xaml</DependentUpon>
|
||||
</Midl>
|
||||
<Midl Include="ExplorerItem.idl" />
|
||||
<Midl Include="ExplorerItemTemplateSelector.idl" />
|
||||
<Midl Include="MainWindow.idl">
|
||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Midl>
|
||||
<Midl Include="PatternSnippet.idl" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<_WildCardPRIResource Include="Strings\*\Resources.resw" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
<None Include="placeholder.exe">
|
||||
<DeploymentContent>true</DeploymentContent>
|
||||
</None>
|
||||
<None Include="PropertySheet.props" />
|
||||
<Text Include="readme.txt">
|
||||
<DeploymentContent>false</DeploymentContent>
|
||||
</Text>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
<Import Project="..\..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.3\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.targets" Condition="Exists('..\..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.3\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.targets')" />
|
||||
<Import Project="..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.210922.5\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.210922.5\build\native\Microsoft.Windows.CppWinRT.targets')" />
|
||||
<Import Project="..\..\..\..\packages\Microsoft.UI.Xaml.2.7.0-prerelease.210913003\build\native\Microsoft.UI.Xaml.targets" Condition="Exists('..\..\..\..\packages\Microsoft.UI.Xaml.2.7.0-prerelease.210913003\build\native\Microsoft.UI.Xaml.targets')" />
|
||||
</ImportGroup>
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.3\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.3\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.props'))" />
|
||||
<Error Condition="!Exists('..\..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.3\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Microsoft.Toolkit.Win32.UI.XamlApplication.6.1.3\build\native\Microsoft.Toolkit.Win32.UI.XamlApplication.targets'))" />
|
||||
<Error Condition="!Exists('..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.210922.5\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.210922.5\build\native\Microsoft.Windows.CppWinRT.props'))" />
|
||||
<Error Condition="!Exists('..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.210922.5\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Microsoft.Windows.CppWinRT.2.0.210922.5\build\native\Microsoft.Windows.CppWinRT.targets'))" />
|
||||
<Error Condition="!Exists('..\..\..\..\packages\Microsoft.UI.Xaml.2.7.0-prerelease.210913003\build\native\Microsoft.UI.Xaml.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\Microsoft.UI.Xaml.2.7.0-prerelease.210913003\build\native\Microsoft.UI.Xaml.targets'))" />
|
||||
</Target>
|
||||
<Target Name="AddWildCardItems" AfterTargets="BuildGenerateSources">
|
||||
<ItemGroup>
|
||||
<PRIResource Include="@(_WildCardPRIResource)" />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
</Project>
|
||||
16
src/modules/powerrename/PowerRenameUILib/PropertySheet.props
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Label="PropertySheets" />
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<!--
|
||||
To customize common C++/WinRT project properties:
|
||||
* right-click the project node
|
||||
* expand the Common Properties item
|
||||
* select the C++/WinRT property page
|
||||
|
||||
For more advanced scenarios, and complete documentation, please see:
|
||||
https://github.com/Microsoft/cppwinrt/tree/master/nuget
|
||||
-->
|
||||
<PropertyGroup />
|
||||
<ItemDefinitionGroup />
|
||||
</Project>
|
||||
@@ -0,0 +1,335 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="SearchBox.PlaceholderText" xml:space="preserve">
|
||||
<value>Search for</value>
|
||||
</data>
|
||||
<data name="RegExCheatSheet_Title.Text" xml:space="preserve">
|
||||
<value>RegEx help</value>
|
||||
</data>
|
||||
<data name="RegExCheatSheet_MatchAny" xml:space="preserve">
|
||||
<value>Matches any character</value>
|
||||
</data>
|
||||
<data name="RegExCheatSheet_MatchDigit" xml:space="preserve">
|
||||
<value>Any digit, short for [0-9]</value>
|
||||
</data>
|
||||
<data name="RegExCheatSheet_MatchNonDigit" xml:space="preserve">
|
||||
<value>A non-digit, short for [^0-9]</value>
|
||||
</data>
|
||||
<data name="RegExCheatSheet_MatchNonWS" xml:space="preserve">
|
||||
<value>A non-whitespace character, short for [^\\s]</value>
|
||||
</data>
|
||||
<data name="RegExCheatSheet_MatchWordChar" xml:space="preserve">
|
||||
<value>A word character, short for [a-zA-Z_0-9]</value>
|
||||
</data>
|
||||
<data name="RegExCheatSheet_MatchSeveralWS" xml:space="preserve">
|
||||
<value>Several non-whitespace characters</value>
|
||||
</data>
|
||||
<data name="RegExCheatSheet_MatchWordBoundary" xml:space="preserve">
|
||||
<value>Matches a word boundary where a word character is [a-zA-Z0-9_].</value>
|
||||
</data>
|
||||
<data name="RegExCheatSheet_LearnMore.Text" xml:space="preserve">
|
||||
<value>Learn more about RegEx</value>
|
||||
</data>
|
||||
<data name="ReplaceBox.PlaceholderText" xml:space="preserve">
|
||||
<value>Replace with</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_Title.Text" xml:space="preserve">
|
||||
<value>Replace using file creation date and time</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_FullYear" xml:space="preserve">
|
||||
<value>Year represented by a full four or five digits, depending on the calendar used.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_YearLastTwoDigits" xml:space="preserve">
|
||||
<value>Year represented only by the last two digits. A leading zero is added for single-digit years.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_YearLastDigit" xml:space="preserve">
|
||||
<value>Year represented only by the last digit.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_MonthName" xml:space="preserve">
|
||||
<value>Name of the month.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_MonthNameAbbr" xml:space="preserve">
|
||||
<value>Abbreviated name of the month.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_MonthDigitLZero" xml:space="preserve">
|
||||
<value>Month as digits with leading zeros for single-digit months.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_MonthDigit" xml:space="preserve">
|
||||
<value>Month as digits without leading zeros for single-digit months.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_DayName" xml:space="preserve">
|
||||
<value>Name of the day of the week.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_DayNameAbbr" xml:space="preserve">
|
||||
<value>Abbreviated name of the day of the week.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_DayDigitLZero" xml:space="preserve">
|
||||
<value>Day of the month as digits with leading zeros for single-digit days.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_DayDigit" xml:space="preserve">
|
||||
<value>Day of the month as digits without leading zeros for single-digit days.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_HoursLZero" xml:space="preserve">
|
||||
<value>Hours with leading zeros for single-digit hours.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_Hours" xml:space="preserve">
|
||||
<value>Hours without leading zeros for single-digit hours.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_MinutesLZero" xml:space="preserve">
|
||||
<value>Minutes with leading zeros for single-digit minutes.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_Minutes" xml:space="preserve">
|
||||
<value>Minutes without leading zeros for single-digit minutes.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_SecondsLZero" xml:space="preserve">
|
||||
<value>Seconds with leading zeros for single-digit seconds.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_Seconds" xml:space="preserve">
|
||||
<value>Seconds without leading zeros for single-digit seconds.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_MilliSeconds3D" xml:space="preserve">
|
||||
<value>Milliseconds represented by full three digits.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_MilliSeconds2D" xml:space="preserve">
|
||||
<value>Milliseconds represented only by the first two digit.</value>
|
||||
</data>
|
||||
<data name="DateTimeCheatSheet_MilliSeconds1D" xml:space="preserve">
|
||||
<value>Milliseconds represented only by the first digit.</value>
|
||||
</data>
|
||||
<data name="CheckBox_RegEx.Content" xml:space="preserve">
|
||||
<value>Use regular expressions</value>
|
||||
</data>
|
||||
<data name="CheckBox_MatchAll.Content" xml:space="preserve">
|
||||
<value>Match all occurences</value>
|
||||
</data>
|
||||
<data name="CheckBox_Case.Content" xml:space="preserve">
|
||||
<value>Case sensitive</value>
|
||||
</data>
|
||||
<data name="TextBox_ApplyTo.Text" xml:space="preserve">
|
||||
<value>Apply to</value>
|
||||
</data>
|
||||
<data name="DocsButton.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Documentation</value>
|
||||
</data>
|
||||
<data name="DocsButton.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Documentation</value>
|
||||
</data>
|
||||
<data name="ToggleButton_IncludeFiles.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Include files</value>
|
||||
</data>
|
||||
<data name="ToggleButton_IncludeFiles.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Include files</value>
|
||||
</data>
|
||||
<data name="ToggleButton_IncludeFolders.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Include folders</value>
|
||||
</data>
|
||||
<data name="ToggleButton_IncludeFolders.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Include folders</value>
|
||||
</data>
|
||||
<data name="ToggleButton_IncludeSubFolders.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Include subfolders</value>
|
||||
</data>
|
||||
<data name="ToggleButton_IncludeSubFolders.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Include subfolders</value>
|
||||
</data>
|
||||
<data name="TextBlock_TextFormatting.Text" xml:space="preserve">
|
||||
<value>Text formatting</value>
|
||||
</data>
|
||||
<data name="ToggleButton_Lowercase.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>lowercase</value>
|
||||
</data>
|
||||
<data name="ToggleButton_Lowercase.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Lowercase</value>
|
||||
</data>
|
||||
<data name="ToggleButton_Uppercase.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>UPPERCASE</value>
|
||||
</data>
|
||||
<data name="ToggleButton_Uppercase.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Uppercase</value>
|
||||
</data>
|
||||
<data name="ToggleButton_Titlecase.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Title case</value>
|
||||
</data>
|
||||
<data name="ToggleButton_Titlecase.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Title case</value>
|
||||
</data>
|
||||
<data name="ToggleButton_Capitalize.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Capitalize Each Word</value>
|
||||
</data>
|
||||
<data name="ToggleButton_Capitalize.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Capitalize each word</value>
|
||||
</data>
|
||||
<data name="ToggleButton_EnumItems.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Enumerate items</value>
|
||||
</data>
|
||||
<data name="ToggleButton_EnumItems.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Enumerate items</value>
|
||||
</data>
|
||||
<data name="SelectAllCheckBox.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Select or deselect all</value>
|
||||
</data>
|
||||
<data name="FilterButton.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Filter</value>
|
||||
</data>
|
||||
<data name="FilterButton.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Filter</value>
|
||||
</data>
|
||||
<data name="ShowAll.Text" xml:space="preserve">
|
||||
<value>Show all files</value>
|
||||
</data>
|
||||
<data name="ShowOnly.Text" xml:space="preserve">
|
||||
<value>Only show files that will be renamed</value>
|
||||
</data>
|
||||
<data name="TxtBlock_Original.Text" xml:space="preserve">
|
||||
<value>Original</value>
|
||||
</data>
|
||||
<data name="TxtBlock_Renamed.Text" xml:space="preserve">
|
||||
<value>Renamed</value>
|
||||
</data>
|
||||
<data name="TxtBlock_ButtonSettings.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Settings</value>
|
||||
</data>
|
||||
<data name="TxtBlock_ButtonSettings.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Settings</value>
|
||||
</data>
|
||||
<data name="TxtBlock_ButtonApply.Text" xml:space="preserve">
|
||||
<value>Apply</value>
|
||||
</data>
|
||||
<data name="ButtonApply.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>Apply</value>
|
||||
</data>
|
||||
<data name="TxtBlock_ButtonApplyAndClose.Text" xml:space="preserve">
|
||||
<value>Apply and close</value>
|
||||
</data>
|
||||
<data name="RegExButton.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>RegEx help</value>
|
||||
</data>
|
||||
<data name="RegExButton.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>RegEx help</value>
|
||||
</data>
|
||||
<data name="FileCreationButton.AutomationProperties.Name" xml:space="preserve">
|
||||
<value>File creation date and time help</value>
|
||||
</data>
|
||||
<data name="FileCreationButton.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>File creation date and time help</value>
|
||||
</data>
|
||||
|
||||
|
||||
</root>
|
||||
90
src/modules/powerrename/PowerRenameUILib/UIUpdates.cpp
Normal file
@@ -0,0 +1,90 @@
|
||||
#include "pch.h"
|
||||
#include "UIUpdates.h"
|
||||
#include "UIUpdates.g.cpp"
|
||||
|
||||
namespace winrt::PowerRenameUILib::implementation
|
||||
{
|
||||
UIUpdates::UIUpdates() :
|
||||
m_showAll{ true }, m_changedItemId{ -1 }, m_checked{ true }, m_closeUIWindow{ false }, m_buttonRenameEnabled{ false }
|
||||
{
|
||||
}
|
||||
|
||||
bool UIUpdates::ShowAll()
|
||||
{
|
||||
return m_showAll;
|
||||
}
|
||||
|
||||
void UIUpdates::ShowAll(bool value)
|
||||
{
|
||||
if (m_showAll != value)
|
||||
{
|
||||
m_showAll = value;
|
||||
m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"ShowAll" });
|
||||
}
|
||||
}
|
||||
|
||||
int32_t UIUpdates::ChangedExplorerItemId()
|
||||
{
|
||||
return m_changedItemId;
|
||||
}
|
||||
|
||||
void UIUpdates::ChangedExplorerItemId(int32_t value)
|
||||
{
|
||||
m_changedItemId = value;
|
||||
m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"ChangedItemId" });
|
||||
}
|
||||
|
||||
bool UIUpdates::Checked()
|
||||
{
|
||||
return m_checked;
|
||||
}
|
||||
|
||||
void UIUpdates::Checked(bool value)
|
||||
{
|
||||
m_checked = value;
|
||||
}
|
||||
|
||||
winrt::event_token UIUpdates::PropertyChanged(winrt::Windows::UI::Xaml::Data::PropertyChangedEventHandler const& handler)
|
||||
{
|
||||
return m_propertyChanged.add(handler);
|
||||
}
|
||||
|
||||
void UIUpdates::PropertyChanged(winrt::event_token const& token) noexcept
|
||||
{
|
||||
m_propertyChanged.remove(token);
|
||||
}
|
||||
|
||||
void UIUpdates::ToggleAll()
|
||||
{
|
||||
m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"ToggleAll" });
|
||||
}
|
||||
|
||||
void UIUpdates::Rename()
|
||||
{
|
||||
m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"Rename" });
|
||||
}
|
||||
|
||||
bool UIUpdates::CloseUIWindow()
|
||||
{
|
||||
return m_closeUIWindow;
|
||||
}
|
||||
|
||||
void UIUpdates::CloseUIWindow(bool closeUIWindow)
|
||||
{
|
||||
m_closeUIWindow = closeUIWindow;
|
||||
}
|
||||
|
||||
bool UIUpdates::ButtonRenameEnabled()
|
||||
{
|
||||
return m_buttonRenameEnabled;
|
||||
}
|
||||
|
||||
void UIUpdates::ButtonRenameEnabled(bool value)
|
||||
{
|
||||
if (m_buttonRenameEnabled != value)
|
||||
{
|
||||
m_buttonRenameEnabled = value;
|
||||
m_propertyChanged(*this, Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"ButtonRenameEnabled" });
|
||||
}
|
||||
}
|
||||
}
|
||||
39
src/modules/powerrename/PowerRenameUILib/UIUpdates.h
Normal file
@@ -0,0 +1,39 @@
|
||||
#pragma once
|
||||
#include "UIUpdates.g.h"
|
||||
|
||||
namespace winrt::PowerRenameUILib::implementation
|
||||
{
|
||||
struct UIUpdates : UIUpdatesT<UIUpdates>
|
||||
{
|
||||
UIUpdates();
|
||||
|
||||
bool ShowAll();
|
||||
void ShowAll(bool value);
|
||||
int32_t ChangedExplorerItemId();
|
||||
void ChangedExplorerItemId(int32_t value);
|
||||
bool Checked();
|
||||
void Checked(bool value);
|
||||
winrt::event_token PropertyChanged(winrt::Windows::UI::Xaml::Data::PropertyChangedEventHandler const& handler);
|
||||
void PropertyChanged(winrt::event_token const& token) noexcept;
|
||||
void ToggleAll();
|
||||
bool CloseUIWindow();
|
||||
void CloseUIWindow(bool closeUIWindow);
|
||||
bool ButtonRenameEnabled();
|
||||
void ButtonRenameEnabled(bool value);
|
||||
void Rename();
|
||||
|
||||
private:
|
||||
bool m_showAll;
|
||||
int32_t m_changedItemId;
|
||||
bool m_checked;
|
||||
bool m_closeUIWindow;
|
||||
bool m_buttonRenameEnabled;
|
||||
winrt::event<Windows::UI::Xaml::Data::PropertyChangedEventHandler> m_propertyChanged;
|
||||
};
|
||||
}
|
||||
namespace winrt::PowerRenameUILib::factory_implementation
|
||||
{
|
||||
struct UIUpdates : UIUpdatesT<UIUpdates, implementation::UIUpdates>
|
||||
{
|
||||
};
|
||||
}
|
||||
35
src/modules/powerrename/PowerRenameUILib/app.base.h
Normal file
@@ -0,0 +1,35 @@
|
||||
#pragma once
|
||||
namespace winrt::PowerRenameUILib::implementation
|
||||
{
|
||||
template<typename D, typename... I>
|
||||
struct App_baseWithProvider : public App_base<D, ::winrt::Windows::UI::Xaml::Markup::IXamlMetadataProvider>
|
||||
{
|
||||
using IXamlType = ::winrt::Windows::UI::Xaml::Markup::IXamlType;
|
||||
IXamlType GetXamlType(::winrt::Windows::UI::Xaml::Interop::TypeName const& type)
|
||||
{
|
||||
return AppProvider()->GetXamlType(type);
|
||||
}
|
||||
IXamlType GetXamlType(::winrt::hstring const& fullName)
|
||||
{
|
||||
return AppProvider()->GetXamlType(fullName);
|
||||
}
|
||||
::winrt::com_array<::winrt::Windows::UI::Xaml::Markup::XmlnsDefinition> GetXmlnsDefinitions()
|
||||
{
|
||||
return AppProvider()->GetXmlnsDefinitions();
|
||||
}
|
||||
|
||||
private:
|
||||
bool _contentLoaded{ false };
|
||||
winrt::com_ptr<XamlMetaDataProvider> _appProvider;
|
||||
winrt::com_ptr<XamlMetaDataProvider> AppProvider()
|
||||
{
|
||||
if (!_appProvider)
|
||||
{
|
||||
_appProvider = winrt::make_self<XamlMetaDataProvider>();
|
||||
}
|
||||
return _appProvider;
|
||||
}
|
||||
};
|
||||
template<typename D, typename... I>
|
||||
using AppT2 = App_baseWithProvider<D, I...>;
|
||||
}
|
||||
6
src/modules/powerrename/PowerRenameUILib/packages.config
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Microsoft.Toolkit.Win32.UI.XamlApplication" version="6.1.3" targetFramework="native" />
|
||||
<package id="Microsoft.UI.Xaml" version="2.7.0-prerelease.210913003" targetFramework="native" />
|
||||
<package id="Microsoft.Windows.CppWinRT" version="2.0.210922.5" targetFramework="native" />
|
||||
</packages>
|
||||
1
src/modules/powerrename/PowerRenameUILib/pch.cpp
Normal file
@@ -0,0 +1 @@
|
||||
#include "pch.h"
|
||||
27
src/modules/powerrename/PowerRenameUILib/pch.h
Normal file
@@ -0,0 +1,27 @@
|
||||
#pragma once
|
||||
#include <windows.h>
|
||||
#include <unknwn.h>
|
||||
#include <RestrictedErrorInfo.h>
|
||||
#include <hstring.h>
|
||||
#include <WinUser.h>
|
||||
|
||||
#include <winrt/Windows.ApplicationModel.Activation.h>
|
||||
#include <winrt/Windows.ApplicationModel.Resources.h>
|
||||
#include <winrt/Windows.Foundation.h>
|
||||
#include <winrt/Windows.Foundation.Collections.h>
|
||||
#include <winrt/Windows.System.h>
|
||||
|
||||
#include <winrt/Windows.UI.Xaml.h>
|
||||
#include <winrt/Windows.UI.Xaml.Automation.h>
|
||||
#include <winrt/Windows.UI.Xaml.Controls.h>
|
||||
#include <winrt/Windows.UI.Xaml.Controls.Primitives.h>
|
||||
#include <winrt/Windows.UI.Xaml.Data.h>
|
||||
#include <winrt/Windows.UI.Xaml.Interop.h>
|
||||
#include <winrt/Windows.UI.Xaml.Markup.h>
|
||||
#include <winrt/Windows.UI.Xaml.Navigation.h>
|
||||
|
||||
#include "winrt/Microsoft.UI.Xaml.Automation.Peers.h"
|
||||
#include "winrt/Microsoft.UI.Xaml.Controls.Primitives.h"
|
||||
#include "winrt/Microsoft.UI.Xaml.Controls.AnimatedVisuals.h"
|
||||
#include "winrt/Microsoft.UI.Xaml.Media.h"
|
||||
#include "winrt/Microsoft.UI.Xaml.XamlTypeInfo.h"
|
||||
23
src/modules/powerrename/PowerRenameUILib/readme.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
========================================================================
|
||||
C++/WinRT PowerRenameUILib Project Overview
|
||||
========================================================================
|
||||
|
||||
This project demonstrates how to get started writing XAML apps directly
|
||||
with standard C++, using the C++/WinRT SDK component and XAML compiler
|
||||
support to generate implementation headers from interface (IDL) files.
|
||||
These headers can then be used to implement the local Windows Runtime
|
||||
classes referenced in the app's XAML pages.
|
||||
|
||||
Steps:
|
||||
1. Create an interface (IDL) file to define any local Windows Runtime
|
||||
classes referenced in the app's XAML pages.
|
||||
2. Build the project once to generate implementation templates under
|
||||
the "Generated Files" folder, as well as skeleton class definitions
|
||||
under "Generated Files\sources".
|
||||
3. Use the skeleton class definitions for reference to implement your
|
||||
Windows Runtime classes.
|
||||
|
||||
========================================================================
|
||||
Learn more about C++/WinRT here:
|
||||
http://aka.ms/cppwinrt/
|
||||
========================================================================
|
||||