~haowenl/vorg-windows

4106009cb57a61e5071f0be84e936846ad673fa9 — Haowen Liu 11 months ago 5ebce7e
Add libvorg as submodule. Implement open repo.
A .gitmodules => .gitmodules +3 -0
@@ 0,0 1,3 @@
[submodule "libvorg"]
	path = libvorg
	url = https://git.sr.ht/~haowenl/libvorg

A libvorg => libvorg +1 -0
@@ 0,0 1,1 @@
Subproject commit 9ed7faa4aaf511a0735099833db036b4b69fa286

M vorg-windows.sln => vorg-windows.sln +50 -0
@@ 5,14 5,22 @@ VisualStudioVersion = 17.5.33414.496
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vorg-windows", "vorg-windows\vorg-windows.vcxproj", "{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libvorg", "..\..\..\sr.ht\libvorg\build\libvorg\libvorg.vcxproj", "{1B58466A-057A-32B3-9522-A6C017EE90AA}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|ARM64 = Debug|ARM64
		Debug|x64 = Debug|x64
		Debug|x86 = Debug|x86
		MinSizeRel|ARM64 = MinSizeRel|ARM64
		MinSizeRel|x64 = MinSizeRel|x64
		MinSizeRel|x86 = MinSizeRel|x86
		Release|ARM64 = Release|ARM64
		Release|x64 = Release|x64
		Release|x86 = Release|x86
		RelWithDebInfo|ARM64 = RelWithDebInfo|ARM64
		RelWithDebInfo|x64 = RelWithDebInfo|x64
		RelWithDebInfo|x86 = RelWithDebInfo|x86
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.Debug|ARM64.ActiveCfg = Debug|ARM64


@@ 24,6 32,15 @@ Global
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.Debug|x86.ActiveCfg = Debug|Win32
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.Debug|x86.Build.0 = Debug|Win32
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.Debug|x86.Deploy.0 = Debug|Win32
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.MinSizeRel|ARM64.ActiveCfg = Release|ARM64
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.MinSizeRel|ARM64.Build.0 = Release|ARM64
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.MinSizeRel|ARM64.Deploy.0 = Release|ARM64
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.MinSizeRel|x64.ActiveCfg = Release|x64
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.MinSizeRel|x64.Build.0 = Release|x64
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.MinSizeRel|x64.Deploy.0 = Release|x64
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.MinSizeRel|x86.ActiveCfg = Release|Win32
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.MinSizeRel|x86.Build.0 = Release|Win32
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.MinSizeRel|x86.Deploy.0 = Release|Win32
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.Release|ARM64.ActiveCfg = Release|ARM64
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.Release|ARM64.Build.0 = Release|ARM64
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.Release|ARM64.Deploy.0 = Release|ARM64


@@ 33,6 50,39 @@ Global
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.Release|x86.ActiveCfg = Release|Win32
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.Release|x86.Build.0 = Release|Win32
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.Release|x86.Deploy.0 = Release|Win32
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.RelWithDebInfo|ARM64.ActiveCfg = Release|ARM64
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.RelWithDebInfo|ARM64.Build.0 = Release|ARM64
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.RelWithDebInfo|ARM64.Deploy.0 = Release|ARM64
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.RelWithDebInfo|x64.ActiveCfg = Release|x64
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.RelWithDebInfo|x64.Build.0 = Release|x64
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.RelWithDebInfo|x64.Deploy.0 = Release|x64
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.RelWithDebInfo|x86.ActiveCfg = Release|Win32
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.RelWithDebInfo|x86.Build.0 = Release|Win32
		{F873567E-C027-48F4-ADCA-B5A7C3CE8ACC}.RelWithDebInfo|x86.Deploy.0 = Release|Win32
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.Debug|ARM64.ActiveCfg = Debug|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.Debug|ARM64.Build.0 = Debug|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.Debug|x64.ActiveCfg = Debug|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.Debug|x64.Build.0 = Debug|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.Debug|x86.ActiveCfg = Debug|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.Debug|x86.Build.0 = Debug|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.MinSizeRel|ARM64.ActiveCfg = MinSizeRel|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.MinSizeRel|ARM64.Build.0 = MinSizeRel|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.MinSizeRel|x86.ActiveCfg = MinSizeRel|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.MinSizeRel|x86.Build.0 = MinSizeRel|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.Release|ARM64.ActiveCfg = Release|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.Release|ARM64.Build.0 = Release|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.Release|x64.ActiveCfg = Release|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.Release|x64.Build.0 = Release|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.Release|x86.ActiveCfg = Release|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.Release|x86.Build.0 = Release|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.RelWithDebInfo|ARM64.Build.0 = RelWithDebInfo|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
		{1B58466A-057A-32B3-9522-A6C017EE90AA}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|x64
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE

M vorg-windows/App.xaml.cpp => vorg-windows/App.xaml.cpp +11 -2
@@ 49,11 49,20 @@ void App::OnLaunched(LaunchActivatedEventArgs const &)
    mWindow.Activate();
}

void App::CreateRepo()
bool App::OpenRepo(const winrt::hstring &path)
{
    std::string pathUTF8 = winrt::to_string(path);
    mRepo = std::make_unique<Vorg::VorgRepo>(pathUTF8);
    return mRepo->initRepo();
}

void App::OpenRepo()
winrt::hstring App::GetVorgError() const
{
    if (mRepo == nullptr)
    {
        return L"Repo is not initialized";
    }
    std::string errorUTF8 = mRepo->getErrorMsg();
    return winrt::to_hstring(errorUTF8);
}
} // namespace winrt::vorg_windows::implementation

M vorg-windows/App.xaml.h => vorg-windows/App.xaml.h +10 -2
@@ 5,6 5,8 @@

#include "App.xaml.g.h"

#include <libvorg/libvorg.h>

namespace winrt::vorg_windows::implementation
{
struct App : AppT<App>


@@ 14,10 16,16 @@ struct App : AppT<App>
    void OnLaunched(Microsoft::UI::Xaml::LaunchActivatedEventArgs const &);

    // App logics
    void CreateRepo();
    void OpenRepo();
    bool OpenRepo(const winrt::hstring &path);

    // Error handling
    winrt::hstring GetVorgError() const;
    void ShowVorgError() const;

    // Members
    winrt::Microsoft::UI::Xaml::Window mWindow{nullptr};

  private:
    std::unique_ptr<Vorg::VorgRepo> mRepo;
};
} // namespace winrt::vorg_windows::implementation

A vorg-windows/ErrorContentDialog.idl => vorg-windows/ErrorContentDialog.idl +11 -0
@@ 0,0 1,11 @@
// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.

namespace vorg_windows
{
    [default_interface]
    runtimeclass ErrorContentDialog : Microsoft.UI.Xaml.Controls.ContentDialog
    {
        ErrorContentDialog();
    }
}

A vorg-windows/ErrorContentDialog.xaml => vorg-windows/ErrorContentDialog.xaml +13 -0
@@ 0,0 1,13 @@
<!--  Copyright (c) Microsoft Corporation and Contributors.  -->
<!--  Licensed under the MIT License.  -->

<ContentDialog
    x:Class="vorg_windows.ErrorContentDialog"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="using:vorg_windows"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    CloseButtonText="Ok"
    Style="{StaticResource DefaultContentDialogStyle}"
    mc:Ignorable="d" />

A vorg-windows/ErrorContentDialog.xaml.cpp => vorg-windows/ErrorContentDialog.xaml.cpp +23 -0
@@ 0,0 1,23 @@
// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.

#include "pch.h"

#include "ErrorContentDialog.xaml.h"
#if __has_include("ErrorContentDialog.g.cpp")
#include "ErrorContentDialog.g.cpp"
#endif

using namespace winrt;
using namespace Microsoft::UI::Xaml;

// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.

namespace winrt::vorg_windows::implementation
{
ErrorContentDialog::ErrorContentDialog()
{
    InitializeComponent();
}
} // namespace winrt::vorg_windows::implementation

A vorg-windows/ErrorContentDialog.xaml.h => vorg-windows/ErrorContentDialog.xaml.h +21 -0
@@ 0,0 1,21 @@
// Copyright (c) Microsoft Corporation and Contributors.
// Licensed under the MIT License.

#pragma once

#include "ErrorContentDialog.g.h"

namespace winrt::vorg_windows::implementation
{
struct ErrorContentDialog : ErrorContentDialogT<ErrorContentDialog>
{
    ErrorContentDialog();
};
} // namespace winrt::vorg_windows::implementation

namespace winrt::vorg_windows::factory_implementation
{
struct ErrorContentDialog : ErrorContentDialogT<ErrorContentDialog, implementation::ErrorContentDialog>
{
};
} // namespace winrt::vorg_windows::factory_implementation

M vorg-windows/ImportPage.xaml => vorg-windows/ImportPage.xaml +11 -0
@@ 189,5 189,16 @@
                </ItemsControl.ItemTemplate>
            </ListView>
        </Grid>

        <Button
            Margin="0,16,0,0"
            HorizontalAlignment="Right"
            Click="SubmitButton_Click"
            Style="{StaticResource AccentButtonStyle}">
            <StackPanel Orientation="Horizontal" Spacing="8">
                <TextBlock>Import</TextBlock>
                <SymbolIcon Symbol="Import" />
            </StackPanel>
        </Button>
    </StackPanel>
</Page>

M vorg-windows/ImportPage.xaml.cpp => vorg-windows/ImportPage.xaml.cpp +15 -10
@@ 52,8 52,8 @@ void ImportPage::UserControl_PointerExited(const winrt::Windows::Foundation::IIn
    VisualStateManager::GoToState(userControl, L"HoverButtonsHidden", false);
}

void ImportPage::ActorsDeleteButton_Click(winrt::Windows::Foundation::IInspectable const &sender,
                                          winrt::Microsoft::UI::Xaml::RoutedEventArgs const &)
void ImportPage::ActorsDeleteButton_Click(const winrt::Windows::Foundation::IInspectable &sender,
                                          const winrt::Microsoft::UI::Xaml::RoutedEventArgs &)
{
    winrt::Microsoft::UI::Xaml::Controls::Button button = sender.as<winrt::Microsoft::UI::Xaml::Controls::Button>();
    winrt::Windows::Foundation::IInspectable dataContext = button.DataContext();


@@ 61,8 61,8 @@ void ImportPage::ActorsDeleteButton_Click(winrt::Windows::Foundation::IInspectab
    DelteFromVector(mActors, itemName);
}

void ImportPage::TagsDeleteButton_Click(winrt::Windows::Foundation::IInspectable const &sender,
                                        winrt::Microsoft::UI::Xaml::RoutedEventArgs const &)
void ImportPage::TagsDeleteButton_Click(const winrt::Windows::Foundation::IInspectable &sender,
                                        const winrt::Microsoft::UI::Xaml::RoutedEventArgs &)
{
    winrt::Microsoft::UI::Xaml::Controls::Button button = sender.as<winrt::Microsoft::UI::Xaml::Controls::Button>();
    winrt::Windows::Foundation::IInspectable dataContext = button.DataContext();


@@ 70,8 70,8 @@ void ImportPage::TagsDeleteButton_Click(winrt::Windows::Foundation::IInspectable
    DelteFromVector(mTags, itemName);
}

void ImportPage::ActorsSubmitButton_Click(winrt::Windows::Foundation::IInspectable const &sender,
                                          winrt::Microsoft::UI::Xaml::RoutedEventArgs const &)
void ImportPage::ActorsSubmitButton_Click(const winrt::Windows::Foundation::IInspectable &,
                                          const winrt::Microsoft::UI::Xaml::RoutedEventArgs &)
{
    winrt::hstring actorName = ActorNameInput().Text();
    if (!FindInVector(mActors, actorName))


@@ 79,8 79,8 @@ void ImportPage::ActorsSubmitButton_Click(winrt::Windows::Foundation::IInspectab
    ActorNameInput().Text(L"");
}

void ImportPage::TagsSubmitButton_Click(winrt::Windows::Foundation::IInspectable const &sender,
                                        winrt::Microsoft::UI::Xaml::RoutedEventArgs const &)
void ImportPage::TagsSubmitButton_Click(const winrt::Windows::Foundation::IInspectable &,
                                        const winrt::Microsoft::UI::Xaml::RoutedEventArgs &)
{
    winrt::hstring tagName = TagNameInput().Text();
    if (!FindInVector(mTags, tagName))


@@ 88,10 88,15 @@ void ImportPage::TagsSubmitButton_Click(winrt::Windows::Foundation::IInspectable
    TagNameInput().Text(L"");
}

void ImportPage::SubmitButton_Click(const winrt::Windows::Foundation::IInspectable &,
                                    const winrt::Microsoft::UI::Xaml::RoutedEventArgs &)
{
}

void ImportPage::DelteFromVector(winrt::Windows::Foundation::Collections::IObservableVector<winrt::hstring> &vector,
                                 const winrt::hstring &item)
{
    for (size_t i = 0; i < vector.Size(); ++i)
    for (uint32_t i = 0; i < vector.Size(); ++i)
    {
        if (vector.GetAt(i) == item)
        {


@@ 104,7 109,7 @@ void ImportPage::DelteFromVector(winrt::Windows::Foundation::Collections::IObser
bool ImportPage::FindInVector(winrt::Windows::Foundation::Collections::IObservableVector<winrt::hstring> &vector,
                              const winrt::hstring &item)
{
    for (size_t i = 0; i < vector.Size(); ++i)
    for (uint32_t i = 0; i < vector.Size(); ++i)
    {
        if (vector.GetAt(i) == item)
        {

M vorg-windows/ImportPage.xaml.h => vorg-windows/ImportPage.xaml.h +12 -9
@@ 18,15 18,18 @@ struct ImportPage : ImportPageT<ImportPage>
                                    const winrt::Microsoft::UI::Xaml::Input::PointerRoutedEventArgs &);
    void UserControl_PointerExited(const winrt::Windows::Foundation::IInspectable &sender,
                                   const winrt::Microsoft::UI::Xaml::Input::PointerRoutedEventArgs &);
    void ActorsDeleteButton_Click(winrt::Windows::Foundation::IInspectable const &sender,
                                  winrt::Microsoft::UI::Xaml::RoutedEventArgs const &e);
    void TagsDeleteButton_Click(winrt::Windows::Foundation::IInspectable const &sender,
                                winrt::Microsoft::UI::Xaml::RoutedEventArgs const &e);

    void ActorsSubmitButton_Click(winrt::Windows::Foundation::IInspectable const &sender,
                                  winrt::Microsoft::UI::Xaml::RoutedEventArgs const &e);
    void TagsSubmitButton_Click(winrt::Windows::Foundation::IInspectable const &sender,
                                winrt::Microsoft::UI::Xaml::RoutedEventArgs const &e);
    void ActorsDeleteButton_Click(const winrt::Windows::Foundation::IInspectable &sender,
                                  const winrt::Microsoft::UI::Xaml::RoutedEventArgs &e);
    void TagsDeleteButton_Click(const winrt::Windows::Foundation::IInspectable &sender,
                                const winrt::Microsoft::UI::Xaml::RoutedEventArgs &e);

    void ActorsSubmitButton_Click(const winrt::Windows::Foundation::IInspectable &,
                                  const winrt::Microsoft::UI::Xaml::RoutedEventArgs &e);
    void TagsSubmitButton_Click(const winrt::Windows::Foundation::IInspectable &,
                                const winrt::Microsoft::UI::Xaml::RoutedEventArgs &e);

    void SubmitButton_Click(const winrt::Windows::Foundation::IInspectable &,
                            const winrt::Microsoft::UI::Xaml::RoutedEventArgs &);

  private:
    winrt::Windows::Foundation::Collections::IObservableVector<winrt::hstring> mActors;

M vorg-windows/LandingPage.xaml.cpp => vorg-windows/LandingPage.xaml.cpp +14 -9
@@ 8,6 8,8 @@
#include "LandingPage.g.cpp"
#endif

#include "ErrorContentDialog.xaml.h"

using namespace winrt;
using namespace Microsoft::UI::Xaml;



@@ 20,12 22,12 @@ LandingPage::LandingPage()

void LandingPage::openButton_Click(const IInspectable &, const RoutedEventArgs &)
{
    launchFileChooser(false);
    launchFileChooser();
}

void LandingPage::createButton_Click(const IInspectable &, const RoutedEventArgs &)
{
    launchFileChooser(true);
    launchFileChooser();
}

winrt::event_token LandingPage::OpenRepo(


@@ 40,7 42,7 @@ void LandingPage::OpenRepo(const winrt::event_token &token)
    mOpenRepoEvent.remove(token);
}

winrt::fire_and_forget LandingPage::launchFileChooser(bool createNew)
winrt::fire_and_forget LandingPage::launchFileChooser()
{
    // If mHwnd is unitialized, initialize it
    if (mHwnd == nullptr)


@@ 57,17 59,20 @@ winrt::fire_and_forget LandingPage::launchFileChooser(bool createNew)
    if (folder != nullptr)
    {
        // Perform requested action
        if (createNew)
        if (!mApp->OpenRepo(folder.Path()))
        {
            mApp->CreateRepo();
            // Show dialog with error
            winrt::vorg_windows::ErrorContentDialog dialog;
            dialog.Title(winrt::box_value(L"Error opening Vorg repository"));
            dialog.Content(winrt::box_value(mApp->GetVorgError()));
            dialog.XamlRoot(XamlRoot());
            co_await dialog.ShowAsync();
        }
        else
        {
            mApp->OpenRepo();
            // Fire open repo event
            mOpenRepoEvent(*this, nullptr);
        }

        // Fire open repo event
        mOpenRepoEvent(*this, nullptr);
    }
}


M vorg-windows/LandingPage.xaml.h => vorg-windows/LandingPage.xaml.h +1 -1
@@ 34,7 34,7 @@ struct LandingPage : LandingPageT<LandingPage>
    HWND mHwnd{nullptr};

    // Helper functions
    winrt::fire_and_forget launchFileChooser(bool createNew);
    winrt::fire_and_forget launchFileChooser();
    void initAppPtr();
    void initWndHandle();
};

M vorg-windows/pch.h => vorg-windows/pch.h +2 -1
@@ 13,7 13,6 @@

#include <microsoft.ui.xaml.window.h>
#include <shobjidl.h>
#include <wil/cppwinrt_helpers.h>
#include <winrt/Microsoft.UI.Composition.h>
#include <winrt/Microsoft.UI.Dispatching.h>
#include <winrt/Microsoft.UI.Xaml.Controls.Primitives.h>


@@ 31,3 30,5 @@
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Storage.Pickers.h>
#include <winrt/Windows.UI.Xaml.Interop.h>

#include <wil/cppwinrt_helpers.h>

M vorg-windows/vorg-windows.vcxproj => vorg-windows/vorg-windows.vcxproj +44 -0
@@ 87,11 87,17 @@
  <ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
    <ClCompile>
      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <LanguageStandard Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">stdcpp20</LanguageStandard>
      <LanguageStandard Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">stdcpp20</LanguageStandard>
      <LanguageStandard Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">stdcpp20</LanguageStandard>
    </ClCompile>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
    <ClCompile>
      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
      <LanguageStandard Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">stdcpp20</LanguageStandard>
      <LanguageStandard Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">stdcpp20</LanguageStandard>
      <LanguageStandard Condition="'$(Configuration)|$(Platform)'=='Release|x64'">stdcpp20</LanguageStandard>
    </ClCompile>
    <Link>
      <EnableCOMDATFolding>true</EnableCOMDATFolding>


@@ 111,6 117,10 @@
      <DependentUpon>BrowsePage.xaml</DependentUpon>
      <SubType>Code</SubType>
    </ClInclude>
    <ClInclude Include="ErrorContentDialog.xaml.h">
      <DependentUpon>ErrorContentDialog.xaml</DependentUpon>
      <SubType>Code</SubType>
    </ClInclude>
    <ClInclude Include="ImportPage.xaml.h">
      <DependentUpon>ImportPage.xaml</DependentUpon>
      <SubType>Code</SubType>


@@ 136,6 146,9 @@
    <Page Include="BrowsePage.xaml">
      <SubType>Designer</SubType>
    </Page>
    <Page Include="ErrorContentDialog.xaml">
      <SubType>Designer</SubType>
    </Page>
    <Page Include="ImportPage.xaml">
      <SubType>Designer</SubType>
    </Page>


@@ 152,6 165,10 @@
      <DependentUpon>BrowsePage.xaml</DependentUpon>
      <SubType>Code</SubType>
    </ClCompile>
    <ClCompile Include="ErrorContentDialog.xaml.cpp">
      <DependentUpon>ErrorContentDialog.xaml</DependentUpon>
      <SubType>Code</SubType>
    </ClCompile>
    <ClCompile Include="ImportPage.xaml.cpp">
      <DependentUpon>ImportPage.xaml</DependentUpon>
      <SubType>Code</SubType>


@@ 184,6 201,10 @@
      <DependentUpon>BrowsePage.xaml</DependentUpon>
      <SubType>Code</SubType>
    </Midl>
    <Midl Include="ErrorContentDialog.idl">
      <DependentUpon>ErrorContentDialog.xaml</DependentUpon>
      <SubType>Code</SubType>
    </Midl>
    <Midl Include="ImportPage.idl">
      <DependentUpon>ImportPage.xaml</DependentUpon>
      <SubType>Code</SubType>


@@ 227,6 248,11 @@
    <None Include="..\.clang-format" />
    <None Include="packages.config" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\..\..\..\sr.ht\libvorg\build\libvorg\libvorg.vcxproj">
      <Project>{1b58466a-057a-32b3-9522-a6c017ee90aa}</Project>
    </ProjectReference>
  </ItemGroup>
  <!--
    Defining the "HasPackageAndPublishMenuAddedByProject" property here allows the Solution
    Explorer "Package and Publish" context menu entry to be enabled for this project even if


@@ 235,6 261,24 @@
  <PropertyGroup Condition="'$(DisableHasPackageAndPublishMenuAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
    <HasPackageAndPublishMenu>true</HasPackageAndPublishMenu>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
    <IncludePath>$(SolutionDir)libvorg\;$(IncludePath)</IncludePath>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
    <IncludePath>$(SolutionDir)libvorg\;$(IncludePath)</IncludePath>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <IncludePath>$(SolutionDir)libvorg\;$(IncludePath)</IncludePath>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <IncludePath>$(SolutionDir)libvorg\;$(IncludePath)</IncludePath>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
    <IncludePath>$(SolutionDir)libvorg\;$(IncludePath)</IncludePath>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <IncludePath>$(SolutionDir)libvorg\;$(IncludePath)</IncludePath>
  </PropertyGroup>
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
    <Import Project="..\packages\Microsoft.Windows.CppWinRT.2.0.220929.3\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('..\packages\Microsoft.Windows.CppWinRT.2.0.220929.3\build\native\Microsoft.Windows.CppWinRT.targets')" />

M vorg-windows/vorg-windows.vcxproj.filters => vorg-windows/vorg-windows.vcxproj.filters +1 -0
@@ 9,6 9,7 @@
    <Page Include="LandingPage.xaml" />
    <Page Include="BrowsePage.xaml" />
    <Page Include="ManagePage.xaml" />
    <Page Include="ErrorContentDialog.xaml" />
  </ItemGroup>
  <ItemGroup>
    <Midl Include="App.idl" />