mirror of
https://github.com/ckaczor/FeedCenter.git
synced 2026-01-13 17:22:48 -05:00
More modernization
- Split generic "common" libraries into specific libraries - Use other packages in lieu of custom code - General cleanup
This commit is contained in:
6
.gitmodules
vendored
6
.gitmodules
vendored
@@ -1,6 +0,0 @@
|
||||
[submodule "Common.Wpf"]
|
||||
path = Common.Wpf
|
||||
url = https://github.com/ckaczor/Common.Wpf.git
|
||||
[submodule "Common"]
|
||||
path = Common
|
||||
url = https://github.com/ckaczor/Common.git
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<Application.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="pack://application:,,,/Common.Wpf;component/Toolbar/SplitButton/SplitButtonStyle.xaml" />
|
||||
<ResourceDictionary Source="pack://application:,,,/Wpf.Controls.Toolbar;component/SplitButton/SplitButtonStyle.xaml" />
|
||||
<ResourceDictionary Source="Style.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
using Common.Debug;
|
||||
using Common.Helpers;
|
||||
using Common.IO;
|
||||
using Common.Settings;
|
||||
using Common.Wpf.Extensions;
|
||||
using CKaczor.GenericSettingsProvider;
|
||||
using CKaczor.Wpf.Application;
|
||||
using FeedCenter.Data;
|
||||
using FeedCenter.Properties;
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Threading;
|
||||
|
||||
namespace FeedCenter
|
||||
{
|
||||
@@ -34,32 +33,23 @@ namespace FeedCenter
|
||||
var app = new App();
|
||||
app.InitializeComponent();
|
||||
|
||||
// Create an isolation handle to see if we are already running
|
||||
var isolationHandle = ApplicationIsolation.GetIsolationHandle(FeedCenter.Properties.Resources.ApplicationName);
|
||||
// Create an single instance handle to see if we are already running
|
||||
var isolationHandle = SingleInstance.GetSingleInstanceHandleAsync(Name).Result;
|
||||
|
||||
// If there is another copy then pass it the command line and exit
|
||||
if (isolationHandle == null)
|
||||
{
|
||||
InterprocessMessageSender.SendMessage(FeedCenter.Properties.Resources.ApplicationName, Environment.CommandLine);
|
||||
return;
|
||||
}
|
||||
|
||||
// Use the handle over the lifetime of the application
|
||||
using (isolationHandle)
|
||||
{
|
||||
// Set the data directory based on debug or not
|
||||
AppDomain.CurrentDomain.SetData("DataDirectory", SystemConfiguration.DataDirectory);
|
||||
|
||||
// Get the data directory
|
||||
var path = AppDomain.CurrentDomain.GetData("DataDirectory").ToString();
|
||||
|
||||
// Set the path
|
||||
Database.DatabasePath = path;
|
||||
Database.DatabaseFile = System.IO.Path.Combine(path, Settings.Default.DatabaseFile);
|
||||
Database.DatabasePath = SystemConfiguration.DataDirectory;
|
||||
Database.DatabaseFile = Path.Combine(SystemConfiguration.DataDirectory, Settings.Default.DatabaseFile);
|
||||
Database.Load();
|
||||
|
||||
// Get the generic provider
|
||||
var genericProvider = (GenericSettingsProvider) Settings.Default.Providers[typeof(GenericSettingsProvider).Name];
|
||||
var genericProvider = (GenericSettingsProvider) Settings.Default.Providers[nameof(GenericSettingsProvider)];
|
||||
|
||||
if (genericProvider == null)
|
||||
return;
|
||||
@@ -73,8 +63,22 @@ namespace FeedCenter
|
||||
genericProvider.GetVersionList = SettingsStore.GetVersionList;
|
||||
genericProvider.DeleteOldVersionsOnUpgrade = !IsDebugBuild;
|
||||
|
||||
// Initialize the tracer with the current process ID
|
||||
Tracer.Initialize(SystemConfiguration.UserSettingsPath, FeedCenter.Properties.Resources.ApplicationName, Process.GetCurrentProcess().Id.ToString(CultureInfo.InvariantCulture), false);
|
||||
Log.Logger = new LoggerConfiguration()
|
||||
.Enrich.WithThreadId()
|
||||
.WriteTo.Console()
|
||||
.WriteTo.File(
|
||||
Path.Join(SystemConfiguration.UserSettingsPath, $"{FeedCenter.Properties.Resources.ApplicationName}_.txt"),
|
||||
rollingInterval: RollingInterval.Day, retainedFileCountLimit: 5,
|
||||
outputTemplate: "[{Timestamp:u} - {ThreadId} - {Level:u3}] {Message:lj}{NewLine}{Exception}")
|
||||
.CreateLogger();
|
||||
|
||||
Log.Logger.Information("---");
|
||||
Log.Logger.Information("Application started");
|
||||
|
||||
Log.Logger.Information("Command line arguments:");
|
||||
|
||||
foreach (var arg in Environment.GetCommandLineArgs().Select((value, index) => (Value: value, Index: index)))
|
||||
Log.Logger.Information("\tArg {0}: {1}", arg.Index, arg.Value);
|
||||
|
||||
Current.DispatcherUnhandledException += HandleCurrentDispatcherUnhandledException;
|
||||
AppDomain.CurrentDomain.UnhandledException += HandleCurrentDomainUnhandledException;
|
||||
@@ -103,22 +107,19 @@ namespace FeedCenter
|
||||
|
||||
// Run the app
|
||||
app.Run(mainWindow);
|
||||
|
||||
// Terminate the tracer
|
||||
Tracer.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
private static void HandleCurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
|
||||
{
|
||||
Tracer.WriteException((Exception) e.ExceptionObject);
|
||||
Tracer.Flush();
|
||||
Log.Logger.Error((Exception) e.ExceptionObject, "Exception");
|
||||
}
|
||||
|
||||
private static void HandleCurrentDispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
|
||||
private static void HandleCurrentDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
|
||||
{
|
||||
Tracer.WriteException(e.Exception);
|
||||
Tracer.Flush();
|
||||
Log.Logger.Error(e.Exception, "Exception");
|
||||
}
|
||||
|
||||
public static string Name => FeedCenter.Properties.Resources.ApplicationName;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
using Common.Debug;
|
||||
using Common.Internet;
|
||||
using FeedCenter.Properties;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace FeedCenter
|
||||
{
|
||||
public static class BrowserCommon
|
||||
{
|
||||
public static Browser FindBrowser(string browserKey)
|
||||
{
|
||||
Browser browser = null;
|
||||
|
||||
// Get the list of installed browsers
|
||||
var browsers = Browser.DetectInstalledBrowsers();
|
||||
|
||||
// Make sure the desired browser exists
|
||||
if (browsers.ContainsKey(browserKey))
|
||||
{
|
||||
// Get the browser
|
||||
browser = browsers[browserKey];
|
||||
}
|
||||
|
||||
return browser;
|
||||
}
|
||||
|
||||
public static bool OpenLink(string url)
|
||||
{
|
||||
// Get the browser
|
||||
var browser = FindBrowser(Settings.Default.Browser);
|
||||
|
||||
// Start the browser
|
||||
return OpenLink(browser, url);
|
||||
}
|
||||
|
||||
public static bool OpenLink(Browser browser, string url)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Don't bother with empty links
|
||||
if (String.IsNullOrEmpty(url))
|
||||
return true;
|
||||
|
||||
// Add quotes around the URL for safety
|
||||
url = $"\"{url}\"";
|
||||
|
||||
// Start the browser
|
||||
if (browser == null)
|
||||
{
|
||||
var ps = new ProcessStartInfo(url)
|
||||
{
|
||||
UseShellExecute = true,
|
||||
Verb = "open"
|
||||
};
|
||||
|
||||
Process.Start(ps);
|
||||
}
|
||||
else
|
||||
Process.Start(browser.Command, url);
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
// Just log the exception
|
||||
Tracer.WriteException(exception);
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
using Common.Debug;
|
||||
using FeedCenter.Properties;
|
||||
using FeedCenter.Properties;
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlServerCe;
|
||||
@@ -38,9 +38,9 @@ namespace FeedCenter.Data
|
||||
private static SqlServerCeFileVersion GetFileVersion(string databasePath)
|
||||
{
|
||||
// Create a mapping of version numbers to the version enumeration
|
||||
var versionMapping = new Dictionary<int, SqlServerCeFileVersion>
|
||||
{
|
||||
{ 0x73616261, SqlServerCeFileVersion.Version20 },
|
||||
var versionMapping = new Dictionary<int, SqlServerCeFileVersion>
|
||||
{
|
||||
{ 0x73616261, SqlServerCeFileVersion.Version20 },
|
||||
{ 0x002dd714, SqlServerCeFileVersion.Version30 },
|
||||
{ 0x00357b9d, SqlServerCeFileVersion.Version35 },
|
||||
{ 0x003d0900, SqlServerCeFileVersion.Version40 }
|
||||
@@ -63,7 +63,7 @@ namespace FeedCenter.Data
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Tracer.WriteException(exception);
|
||||
Log.Logger.Error(exception, "Exception");
|
||||
|
||||
throw;
|
||||
}
|
||||
@@ -78,16 +78,16 @@ namespace FeedCenter.Data
|
||||
|
||||
public static void CreateDatabase()
|
||||
{
|
||||
Tracer.WriteLine("Creating database engine");
|
||||
Log.Logger.Information("Creating database engine");
|
||||
|
||||
// Create the database engine
|
||||
using var engine = new SqlCeEngine($"Data Source={DatabaseFile}");
|
||||
Tracer.WriteLine("Creating database");
|
||||
Log.Logger.Information("Creating database");
|
||||
|
||||
// Create the database itself
|
||||
engine.CreateDatabase();
|
||||
|
||||
Tracer.WriteLine("Running database script");
|
||||
Log.Logger.Information("Running database script");
|
||||
|
||||
// Run the creation script
|
||||
ExecuteScript(Resources.CreateDatabase);
|
||||
@@ -113,34 +113,34 @@ namespace FeedCenter.Data
|
||||
if (string.IsNullOrEmpty(versionString))
|
||||
versionString = "0";
|
||||
|
||||
Tracer.WriteLine("Database version: {0}", versionString);
|
||||
Log.Logger.Information("Database version: {0}", versionString);
|
||||
|
||||
return int.Parse(versionString);
|
||||
}
|
||||
|
||||
public static void UpdateDatabase()
|
||||
{
|
||||
Tracer.WriteLine("Getting database file version");
|
||||
Log.Logger.Information("Getting database file version");
|
||||
|
||||
// Get the database file version
|
||||
var fileVersion = GetFileVersion(DatabaseFile);
|
||||
|
||||
Tracer.WriteLine("Database file version: {0}", fileVersion);
|
||||
Log.Logger.Information("Database file version: {0}", fileVersion);
|
||||
|
||||
// See if we need to upgrade the database file version
|
||||
if (fileVersion != SqlServerCeFileVersion.Version40)
|
||||
{
|
||||
Tracer.WriteLine("Creating database engine");
|
||||
Log.Logger.Information("Creating database engine");
|
||||
|
||||
// Create the database engine
|
||||
using var engine = new SqlCeEngine($"Data Source={DatabaseFile}");
|
||||
Tracer.WriteLine("Upgrading database");
|
||||
Log.Logger.Information("Upgrading database");
|
||||
|
||||
// Upgrade the database (if needed)
|
||||
engine.Upgrade();
|
||||
}
|
||||
|
||||
Tracer.WriteLine("Getting database version");
|
||||
Log.Logger.Information("Getting database version");
|
||||
|
||||
// Create a database connection
|
||||
using var connection = new SqlCeConnection($"Data Source={DatabaseFile}");
|
||||
@@ -183,11 +183,11 @@ namespace FeedCenter.Data
|
||||
|
||||
public static void MaintainDatabase()
|
||||
{
|
||||
Tracer.WriteLine("Creating database engine");
|
||||
Log.Logger.Information("Creating database engine");
|
||||
|
||||
// Create the database engine
|
||||
using var engine = new SqlCeEngine($"Data Source={DatabaseFile}");
|
||||
Tracer.WriteLine("Shrinking database");
|
||||
Log.Logger.Information("Shrinking database");
|
||||
|
||||
// Compact the database
|
||||
engine.Shrink();
|
||||
|
||||
@@ -125,22 +125,50 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\Public\namebasedgrid\src\NameBasedGrid\NameBasedGrid.csproj" />
|
||||
<ProjectReference Include="..\Common.Wpf\Common.Native\Common.Native.csproj" />
|
||||
<ProjectReference Include="..\Common.Wpf\Common.Wpf.csproj" />
|
||||
<ProjectReference Include="..\Common\Common.csproj" />
|
||||
<ProjectReference Include="..\..\ApplicationUpdate\ApplicationUpdate.csproj" />
|
||||
<ProjectReference Include="..\..\GenericSettingsProvider\GenericSettingsProvider.csproj" />
|
||||
<ProjectReference Include="..\..\InstalledBrowsers\InstalledBrowsers.csproj" />
|
||||
<ProjectReference Include="..\..\Wpf.Application.SingleInstance\Wpf.Application.SingleInstance.csproj" />
|
||||
<ProjectReference Include="..\..\Wpf.Application.StartWithWindows\Wpf.Application.StartWithWindows.csproj" />
|
||||
<ProjectReference Include="..\..\Wpf.Controls.HtmlTextBlock\Wpf.Controls.HtmlTextBlock.csproj" />
|
||||
<ProjectReference Include="..\..\Wpf.Controls.Link\Wpf.Controls.Link.csproj" />
|
||||
<ProjectReference Include="..\..\Wpf.Controls.Toolbar\Wpf.Controls.Toolbar.csproj" />
|
||||
<ProjectReference Include="..\..\Wpf.Validation\Wpf.Validation.csproj" />
|
||||
<ProjectReference Include="..\..\Wpf.Windows.ControlBox\Wpf.Windows.ControlBox.csproj" />
|
||||
<ProjectReference Include="..\..\Wpf.Windows.SnappingWindow\Wpf.Windows.SnappingWindow.csproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Dapper" Version="2.0.123" />
|
||||
<PackageReference Include="DebounceThrottle" Version="2.0.0" />
|
||||
<PackageReference Include="HtmlAgilityPack" Version="1.11.46" />
|
||||
<PackageReference Include="HtmlTextWriter" Version="2.1.1" />
|
||||
<PackageReference Include="Microsoft.SqlServer.Compact" Version="4.0.8876.1" GeneratePathProperty="true" />
|
||||
<PackageReference Include="Microsoft.SqlServer.Compact" Version="4.0.8876.1" GeneratePathProperty="true">
|
||||
<NoWarn>NU1701</NoWarn>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Windows.Compatibility" Version="7.0.0" />
|
||||
<PackageReference Include="Realm" Version="10.20.0" />
|
||||
<PackageReference Include="Serilog" Version="2.12.0" />
|
||||
<PackageReference Include="Serilog.Enrichers.Thread" Version="3.1.0" />
|
||||
<PackageReference Include="Serilog.Sinks.Console" Version="4.1.0" />
|
||||
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
|
||||
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Remove="SqlSettingsProvider.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Update="Properties\Settings.Designer.cs">
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Update="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>
|
||||
if not exist "$(TargetDir)x86" md "$(TargetDir)x86"
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:windows="clr-namespace:Common.Wpf.Windows;assembly=Common.Wpf"
|
||||
xmlns:my="clr-namespace:FeedCenter.Properties"
|
||||
xmlns:controlBox="clr-namespace:CKaczor.Wpf.Windows;assembly=Wpf.Windows.ControlBox"
|
||||
mc:Ignorable="d"
|
||||
Title="{x:Static my:Resources.FeedChooserWindow}"
|
||||
Height="247.297"
|
||||
@@ -12,8 +12,8 @@
|
||||
WindowStartupLocation="CenterOwner"
|
||||
Icon="/FeedCenter;component/Resources/Application.ico"
|
||||
FocusManager.FocusedElement="{Binding ElementName=FeedDataGrid}"
|
||||
windows:ControlBox.HasMaximizeButton="False"
|
||||
windows:ControlBox.HasMinimizeButton="False">
|
||||
controlBox:ControlBox.HasMaximizeButton="False"
|
||||
controlBox:ControlBox.HasMinimizeButton="False">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*" />
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:my="clr-namespace:FeedCenter.Properties"
|
||||
xmlns:linkControl="clr-namespace:Common.Wpf.LinkControl;assembly=Common.Wpf"
|
||||
xmlns:windows="clr-namespace:Common.Wpf.Windows;assembly=Common.Wpf"
|
||||
xmlns:linkControl="clr-namespace:CKaczor.Wpf.Controls;assembly=Wpf.Controls.Link"
|
||||
xmlns:controlBox="clr-namespace:CKaczor.Wpf.Windows;assembly=Wpf.Windows.ControlBox"
|
||||
x:Class="FeedCenter.FeedErrorWindow"
|
||||
Title="{x:Static my:Resources.FeedErrorWindow}"
|
||||
Height="300"
|
||||
Width="550"
|
||||
WindowStartupLocation="CenterOwner"
|
||||
Icon="/FeedCenter;component/Resources/Application.ico"
|
||||
windows:ControlBox.HasMaximizeButton="False"
|
||||
windows:ControlBox.HasMinimizeButton="False">
|
||||
controlBox:ControlBox.HasMaximizeButton="False"
|
||||
controlBox:ControlBox.HasMinimizeButton="False">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="225*" />
|
||||
@@ -53,31 +53,31 @@
|
||||
BorderBrush="{DynamicResource {x:Static SystemColors.ActiveBorderBrushKey}}">
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}">
|
||||
<linkControl:LinkControl x:Name="EditFeedButton"
|
||||
Margin="2"
|
||||
Click="HandleEditFeedButtonClick"
|
||||
Text="{x:Static my:Resources.EditLink}"
|
||||
ToolTip="{x:Static my:Resources.EditFeedButton}" />
|
||||
<linkControl:LinkControl x:Name="DeleteFeedButton"
|
||||
Margin="2"
|
||||
Click="HandleDeleteFeedButtonClick"
|
||||
Text="{x:Static my:Resources.DeleteLink}"
|
||||
ToolTip="{x:Static my:Resources.DeleteFeedButton}" />
|
||||
<linkControl:LinkControl x:Name="RefreshCurrent"
|
||||
Margin="2"
|
||||
Click="HandleRefreshCurrentButtonClick"
|
||||
Text="{x:Static my:Resources.RefreshCurrent}"
|
||||
ToolTip="{x:Static my:Resources.RefreshCurrent}" />
|
||||
<linkControl:LinkControl x:Name="OpenPage"
|
||||
Margin="6,2,2,2"
|
||||
Click="HandleOpenPageButtonClick"
|
||||
Text="{x:Static my:Resources.OpenPage}"
|
||||
ToolTip="{x:Static my:Resources.OpenPage}" />
|
||||
<linkControl:LinkControl x:Name="OpenFeed"
|
||||
Margin="2"
|
||||
Click="HandleOpenFeedButtonClick"
|
||||
Text="{x:Static my:Resources.OpenFeed}"
|
||||
ToolTip="{x:Static my:Resources.OpenFeed}" />
|
||||
<linkControl:Link x:Name="EditFeedButton"
|
||||
Margin="2"
|
||||
Click="HandleEditFeedButtonClick"
|
||||
Text="{x:Static my:Resources.EditLink}"
|
||||
ToolTip="{x:Static my:Resources.EditFeedButton}" />
|
||||
<linkControl:Link x:Name="DeleteFeedButton"
|
||||
Margin="2"
|
||||
Click="HandleDeleteFeedButtonClick"
|
||||
Text="{x:Static my:Resources.DeleteLink}"
|
||||
ToolTip="{x:Static my:Resources.DeleteFeedButton}" />
|
||||
<linkControl:Link x:Name="RefreshCurrent"
|
||||
Margin="2"
|
||||
Click="HandleRefreshCurrentButtonClick"
|
||||
Text="{x:Static my:Resources.RefreshCurrent}"
|
||||
ToolTip="{x:Static my:Resources.RefreshCurrent}" />
|
||||
<linkControl:Link x:Name="OpenPage"
|
||||
Margin="6,2,2,2"
|
||||
Click="HandleOpenPageButtonClick"
|
||||
Text="{x:Static my:Resources.OpenPage}"
|
||||
ToolTip="{x:Static my:Resources.OpenPage}" />
|
||||
<linkControl:Link x:Name="OpenFeed"
|
||||
Margin="2"
|
||||
Click="HandleOpenFeedButtonClick"
|
||||
Text="{x:Static my:Resources.OpenFeed}"
|
||||
ToolTip="{x:Static my:Resources.OpenFeed}" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<Grid DockPanel.Dock="Right"
|
||||
@@ -102,4 +102,4 @@
|
||||
Grid.Column="2" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Window>
|
||||
</Window>
|
||||
@@ -1,9 +1,11 @@
|
||||
using FeedCenter.Options;
|
||||
using CKaczor.InstalledBrowsers;
|
||||
using FeedCenter.Data;
|
||||
using FeedCenter.Options;
|
||||
using FeedCenter.Properties;
|
||||
using System.ComponentModel;
|
||||
using System.Windows;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Input;
|
||||
using FeedCenter.Data;
|
||||
|
||||
namespace FeedCenter
|
||||
{
|
||||
@@ -87,13 +89,13 @@ namespace FeedCenter
|
||||
private void HandleOpenPageButtonClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var feed = (Feed) FeedDataGrid.SelectedItem;
|
||||
BrowserCommon.OpenLink(feed.Link);
|
||||
InstalledBrowser.OpenLink(Settings.Default.Browser, feed.Link);
|
||||
}
|
||||
|
||||
private void HandleOpenFeedButtonClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var feed = (Feed) FeedDataGrid.SelectedItem;
|
||||
BrowserCommon.OpenLink(feed.Source);
|
||||
InstalledBrowser.OpenLink(Settings.Default.Browser, feed.Source);
|
||||
}
|
||||
|
||||
private void HandleOkayButtonClick(object sender, RoutedEventArgs e)
|
||||
@@ -129,4 +131,4 @@ namespace FeedCenter
|
||||
IsEnabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
using System;
|
||||
using Common.Debug;
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Xml;
|
||||
|
||||
namespace FeedCenter.FeedParsers
|
||||
@@ -68,7 +68,7 @@ namespace FeedCenter.FeedParsers
|
||||
}
|
||||
catch (XmlException xmlException)
|
||||
{
|
||||
Tracer.WriteLine("XML error: " + xmlException.Message + "\n" + feedText);
|
||||
Log.Logger.Error(xmlException, "Exception: {0}", feedText);
|
||||
|
||||
return FeedReadResult.InvalidXml;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using Common.Debug;
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Xml;
|
||||
@@ -55,7 +55,7 @@ namespace FeedCenter.FeedParsers
|
||||
// Check to see if we already have this feed item
|
||||
if (existingFeedItem == null)
|
||||
{
|
||||
Tracer.WriteLine("New link: " + newFeedItem.Link);
|
||||
Log.Logger.Information("New link: " + newFeedItem.Link);
|
||||
|
||||
// Associate the new item with the right feed
|
||||
newFeedItem.Feed = Feed;
|
||||
@@ -71,7 +71,7 @@ namespace FeedCenter.FeedParsers
|
||||
}
|
||||
else
|
||||
{
|
||||
Tracer.WriteLine("Existing link: " + newFeedItem.Link);
|
||||
Log.Logger.Information("Existing link: " + newFeedItem.Link);
|
||||
|
||||
// Update the fields in the existing item
|
||||
existingFeedItem.Link = newFeedItem.Link;
|
||||
@@ -150,8 +150,8 @@ namespace FeedCenter.FeedParsers
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Tracer.WriteException(exception);
|
||||
|
||||
Log.Logger.Error(exception, "Exception: {0}", feedText);
|
||||
|
||||
return FeedType.Unknown;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using Common.Debug;
|
||||
using Common.Xml;
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Xml;
|
||||
using FeedCenter.Xml;
|
||||
|
||||
namespace FeedCenter.FeedParsers
|
||||
{
|
||||
@@ -73,7 +74,7 @@ namespace FeedCenter.FeedParsers
|
||||
}
|
||||
catch (XmlException xmlException)
|
||||
{
|
||||
Tracer.WriteLine("XML error: " + xmlException.Message + "\n" + feedText);
|
||||
Log.Logger.Error(xmlException, "Exception: {0}", feedText);
|
||||
|
||||
return FeedReadResult.InvalidXml;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using Common.Debug;
|
||||
using Common.Xml;
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Xml;
|
||||
using FeedCenter.Xml;
|
||||
|
||||
namespace FeedCenter.FeedParsers
|
||||
{
|
||||
@@ -67,7 +67,7 @@ namespace FeedCenter.FeedParsers
|
||||
}
|
||||
catch (XmlException xmlException)
|
||||
{
|
||||
Tracer.WriteLine("XML error: " + xmlException.Message + "\n" + feedText);
|
||||
Log.Logger.Error(xmlException, "Exception: {0}", feedText);
|
||||
|
||||
return FeedReadResult.InvalidXml;
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
using Common.Debug;
|
||||
using Common.Update;
|
||||
using Common.Xml;
|
||||
using CKaczor.ApplicationUpdate;
|
||||
using FeedCenter.Data;
|
||||
using FeedCenter.FeedParsers;
|
||||
using FeedCenter.Properties;
|
||||
using Realms;
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
@@ -16,6 +15,8 @@ using System.Net.Http.Headers;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using FeedCenter.Xml;
|
||||
using Resources = FeedCenter.Properties.Resources;
|
||||
|
||||
namespace FeedCenter
|
||||
{
|
||||
@@ -64,6 +65,7 @@ namespace FeedCenter
|
||||
[PrimaryKey]
|
||||
[MapTo("ID")]
|
||||
public Guid Id { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
public string Title { get; set; }
|
||||
public string Source { get; set; }
|
||||
@@ -140,8 +142,7 @@ namespace FeedCenter
|
||||
|
||||
public FeedReadResult Read(FeedCenterEntities database, bool forceRead = false)
|
||||
{
|
||||
Tracer.WriteLine("Reading feed: {0}", Source);
|
||||
Tracer.IncrementIndentLevel();
|
||||
Log.Logger.Information("Reading feed: {0}", Source);
|
||||
|
||||
var result = ReadFeed(database, forceRead);
|
||||
|
||||
@@ -166,8 +167,7 @@ namespace FeedCenter
|
||||
if (result == FeedReadResult.Success && LastUpdated == Extensions.SqlDateTimeZero.Value)
|
||||
LastUpdated = DateTimeOffset.Now;
|
||||
|
||||
Tracer.DecrementIndentLevel();
|
||||
Tracer.WriteLine("Done reading feed: {0}", result);
|
||||
Log.Logger.Information("Done reading feed: {0}", result);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -236,7 +236,7 @@ namespace FeedCenter
|
||||
}
|
||||
catch (IOException ioException)
|
||||
{
|
||||
Tracer.WriteLine(ioException.Message);
|
||||
Log.Logger.Error(ioException, "Exception");
|
||||
|
||||
return Tuple.Create(FeedReadResult.ConnectionFailed, string.Empty);
|
||||
}
|
||||
@@ -281,7 +281,7 @@ namespace FeedCenter
|
||||
break;
|
||||
}
|
||||
|
||||
Tracer.WriteException(webException);
|
||||
Log.Logger.Error(webException, "Exception");
|
||||
|
||||
if (result == FeedReadResult.UnknownError)
|
||||
Debug.Print("Unknown error");
|
||||
@@ -290,7 +290,7 @@ namespace FeedCenter
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Tracer.WriteLine(exception.Message);
|
||||
Log.Logger.Error(exception, "Exception");
|
||||
|
||||
return Tuple.Create(FeedReadResult.UnknownError, string.Empty);
|
||||
}
|
||||
@@ -357,13 +357,13 @@ namespace FeedCenter
|
||||
}
|
||||
catch (InvalidFeedFormatException exception)
|
||||
{
|
||||
Tracer.WriteException(exception.InnerException);
|
||||
Log.Logger.Error(exception, "Exception");
|
||||
|
||||
return FeedReadResult.InvalidXml;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Tracer.WriteLine(exception.Message);
|
||||
Log.Logger.Error(exception, "Exception");
|
||||
|
||||
return FeedReadResult.UnknownError;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
using System;
|
||||
using FeedCenter.Properties;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using FeedCenter.Properties;
|
||||
|
||||
namespace FeedCenter
|
||||
{
|
||||
public partial class MainWindow : IDisposable
|
||||
public partial class MainWindow
|
||||
{
|
||||
private void DisplayCategory()
|
||||
{
|
||||
@@ -96,12 +96,5 @@ namespace FeedCenter
|
||||
|
||||
Settings.Default.LastCategoryID = _currentCategory?.Id.ToString() ?? string.Empty;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_mainTimer?.Dispose();
|
||||
_feedReadWorker?.Dispose();
|
||||
_commandLineListener?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,42 +1,38 @@
|
||||
using Common.IO;
|
||||
using System;
|
||||
using System;
|
||||
|
||||
namespace FeedCenter
|
||||
{
|
||||
public partial class MainWindow
|
||||
{
|
||||
private InterprocessMessageListener _commandLineListener;
|
||||
|
||||
private void HandleCommandLine(object sender, InterprocessMessageListener.InterprocessMessageEventArgs e)
|
||||
private void HandleCommandLine(string commandLine)
|
||||
{
|
||||
// If the command line is blank then ignore it
|
||||
if (e.Message.Length == 0)
|
||||
if (commandLine.Length == 0)
|
||||
return;
|
||||
|
||||
// Pad the command line with a trailing space just to be lazy in parsing
|
||||
var commandLine = e.Message + " ";
|
||||
commandLine += " ";
|
||||
|
||||
// Look for the feed URL in the command line
|
||||
var startPosition = commandLine.IndexOf("feed://", StringComparison.Ordinal);
|
||||
|
||||
// If we found one then we should extract and process it
|
||||
if (startPosition > 0)
|
||||
{
|
||||
// Advance past the protocol
|
||||
startPosition += 7;
|
||||
// If nothing was found then exit
|
||||
if (startPosition <= 0) return;
|
||||
|
||||
// Starting at the URL position look for the next space
|
||||
var endPosition = commandLine.IndexOf(" ", startPosition, StringComparison.Ordinal);
|
||||
// Advance past the protocol
|
||||
startPosition += 7;
|
||||
|
||||
// Extract the feed URL
|
||||
var feedUrl = commandLine.Substring(startPosition, endPosition - startPosition);
|
||||
// Starting at the URL position look for the next space
|
||||
var endPosition = commandLine.IndexOf(" ", startPosition, StringComparison.Ordinal);
|
||||
|
||||
// Add the HTTP protocol by default
|
||||
feedUrl = "http://" + feedUrl;
|
||||
// Extract the feed URL
|
||||
var feedUrl = commandLine.Substring(startPosition, endPosition - startPosition);
|
||||
|
||||
// Create a new feed using the URL
|
||||
HandleNewFeed(feedUrl);
|
||||
}
|
||||
// Add the HTTP protocol by default
|
||||
feedUrl = "http://" + feedUrl;
|
||||
|
||||
// Create a new feed using the URL
|
||||
HandleNewFeed(feedUrl);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,20 +1,29 @@
|
||||
using System;
|
||||
using FeedCenter.Options;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using Common.Internet;
|
||||
using FeedCenter.Options;
|
||||
|
||||
namespace FeedCenter
|
||||
{
|
||||
public partial class MainWindow
|
||||
{
|
||||
private delegate void NewFeedDelegate(string feedUrl);
|
||||
|
||||
private static string GetAbsoluteUrlString(string baseUrl, string url)
|
||||
{
|
||||
var uri = new Uri(url, UriKind.RelativeOrAbsolute);
|
||||
if (!uri.IsAbsoluteUri)
|
||||
uri = new Uri(new Uri(baseUrl), uri);
|
||||
return uri.ToString();
|
||||
}
|
||||
|
||||
private void HandleNewFeed(string feedUrl)
|
||||
{
|
||||
// Create and configure the new feed
|
||||
var feed = Feed.Create(_database);
|
||||
feed.Source = feedUrl;
|
||||
feed.Category = _database.DefaultCategory;
|
||||
feed.Enabled = true;
|
||||
|
||||
// Try to detect the feed type
|
||||
var feedTypeResult = feed.DetectFeedType();
|
||||
@@ -32,7 +41,7 @@ namespace FeedCenter
|
||||
// Look for all RSS or atom links in the document
|
||||
var rssLinks = htmlDocument.DocumentNode.Descendants("link")
|
||||
.Where(n => n.Attributes["type"] != null && (n.Attributes["type"].Value == "application/rss+xml" || n.Attributes["type"].Value == "application/atom+xml"))
|
||||
.Select(n => new Tuple<string, string>(UrlHelper.GetAbsoluteUrlString(feed.Source, n.Attributes["href"].Value), WebUtility.HtmlDecode(n.Attributes["title"]?.Value ?? feedUrl)))
|
||||
.Select(n => new Tuple<string, string>(GetAbsoluteUrlString(feed.Source, n.Attributes["href"].Value), WebUtility.HtmlDecode(n.Attributes["title"]?.Value ?? feedUrl)))
|
||||
.Distinct()
|
||||
.ToList();
|
||||
|
||||
@@ -91,4 +100,4 @@ namespace FeedCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
using System;
|
||||
using CKaczor.InstalledBrowsers;
|
||||
using FeedCenter.Properties;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
@@ -49,19 +51,19 @@ namespace FeedCenter
|
||||
// Get the feed item
|
||||
var feedItem = (FeedItem) ((ListBoxItem) sender).DataContext;
|
||||
|
||||
// Open the item link
|
||||
if (BrowserCommon.OpenLink(feedItem.Link))
|
||||
{
|
||||
// The feed item has been read and is no longer new
|
||||
_database.SaveChanges(() =>
|
||||
{
|
||||
feedItem.BeenRead = true;
|
||||
feedItem.New = false;
|
||||
});
|
||||
// Try to open the item link
|
||||
if (!InstalledBrowser.OpenLink(Settings.Default.Browser, feedItem.Link))
|
||||
return;
|
||||
|
||||
// Remove the item from the list
|
||||
LinkTextList.Items.Remove(feedItem);
|
||||
}
|
||||
// The feed item has been read and is no longer new
|
||||
_database.SaveChanges(() =>
|
||||
{
|
||||
feedItem.BeenRead = true;
|
||||
feedItem.New = false;
|
||||
});
|
||||
|
||||
// Remove the item from the list
|
||||
LinkTextList.Items.Remove(feedItem);
|
||||
}
|
||||
|
||||
private void HandleFeedButtonClick(object sender, RoutedEventArgs e)
|
||||
@@ -130,4 +132,4 @@ namespace FeedCenter
|
||||
DisplayFeed();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
using Common.Update;
|
||||
using CKaczor.ApplicationUpdate;
|
||||
using FeedCenter.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@@ -113,8 +113,8 @@ namespace FeedCenter
|
||||
|
||||
// Set the text to match the number of errors
|
||||
FeedErrorsLink.Text = feedErrorCount == 1
|
||||
? Properties.Resources.FeedErrorLink
|
||||
: string.Format(Properties.Resources.FeedErrorsLink, feedErrorCount);
|
||||
? Properties.Resources.FeedErrorLink
|
||||
: string.Format(Properties.Resources.FeedErrorsLink, feedErrorCount);
|
||||
}
|
||||
|
||||
private static void HandleFeedReadWorkerStart(object sender, DoWorkEventArgs e)
|
||||
@@ -123,10 +123,10 @@ namespace FeedCenter
|
||||
var database = new FeedCenterEntities();
|
||||
|
||||
// Get the worker
|
||||
var worker = (BackgroundWorker)sender;
|
||||
var worker = (BackgroundWorker) sender;
|
||||
|
||||
// Get the input information
|
||||
var workerInput = (FeedReadWorkerInput)e.Argument ?? new FeedReadWorkerInput { Feed = null, ForceRead = false };
|
||||
var workerInput = (FeedReadWorkerInput) e.Argument ?? new FeedReadWorkerInput { Feed = null, ForceRead = false };
|
||||
|
||||
// Setup for progress
|
||||
var currentProgress = 0;
|
||||
@@ -179,4 +179,4 @@ namespace FeedCenter
|
||||
Thread.Sleep(Settings.Default.ProgressSleepInterval * 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using FeedCenter.Properties;
|
||||
using CKaczor.InstalledBrowsers;
|
||||
using FeedCenter.Properties;
|
||||
using System.Windows;
|
||||
using System.Windows.Input;
|
||||
|
||||
@@ -26,7 +27,7 @@ namespace FeedCenter
|
||||
{
|
||||
// Open the link for the current feed on a left double click
|
||||
if (e.ClickCount == 2 && e.ChangedButton == MouseButton.Left)
|
||||
BrowserCommon.OpenLink(_currentFeed.Link);
|
||||
InstalledBrowser.OpenLink(Settings.Default.Browser, _currentFeed.Link);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,13 +2,13 @@
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:properties="clr-namespace:FeedCenter.Properties"
|
||||
xmlns:windows="clr-namespace:Common.Wpf.Windows;assembly=Common.Wpf"
|
||||
xmlns:toolbar="clr-namespace:Common.Wpf.Toolbar;assembly=Common.Wpf"
|
||||
xmlns:splitButton="clr-namespace:Common.Wpf.Toolbar.SplitButton;assembly=Common.Wpf"
|
||||
xmlns:linkControl="clr-namespace:Common.Wpf.LinkControl;assembly=Common.Wpf"
|
||||
xmlns:htmlTextBlock="clr-namespace:Common.Wpf.HtmlTextBlock;assembly=Common.Wpf"
|
||||
xmlns:windows="clr-namespace:CKaczor.Wpf.Windows;assembly=Wpf.Windows.SnappingWindow"
|
||||
xmlns:toolbar="clr-namespace:CKaczor.Wpf.Controls.Toolbar;assembly=Wpf.Controls.Toolbar"
|
||||
xmlns:splitButton="clr-namespace:CKaczor.Wpf.Controls.Toolbar;assembly=Wpf.Controls.Toolbar"
|
||||
xmlns:htmlTextBlock="clr-namespace:CKaczor.Wpf.Controls;assembly=Wpf.Controls.HtmlTextBlock"
|
||||
xmlns:system="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:nameBasedGrid="clr-namespace:NameBasedGrid;assembly=NameBasedGrid"
|
||||
xmlns:controls="clr-namespace:CKaczor.Wpf.Controls;assembly=Wpf.Controls.Link"
|
||||
Title="MainWindow"
|
||||
Height="360"
|
||||
Width="252"
|
||||
@@ -80,18 +80,19 @@
|
||||
FontFamily="Marlett"
|
||||
Content="r"
|
||||
FontSize="8"
|
||||
Grid.Column="1"></Button>
|
||||
Grid.Column="1">
|
||||
</Button>
|
||||
</Grid>
|
||||
<linkControl:LinkControl Name="NewVersionLink"
|
||||
Height="21"
|
||||
nameBasedGrid:NameBasedGrid.Row="NewVersionRow"
|
||||
Text="{x:Static properties:Resources.NewVersionLink}"
|
||||
Background="AntiqueWhite"
|
||||
VerticalContentAlignment="Center"
|
||||
HorizontalContentAlignment="Center"
|
||||
Visibility="Collapsed"
|
||||
Click="HandleNewVersionLinkClick">
|
||||
</linkControl:LinkControl>
|
||||
<controls:Link Name="NewVersionLink"
|
||||
Height="21"
|
||||
nameBasedGrid:NameBasedGrid.Row="NewVersionRow"
|
||||
Text="{x:Static properties:Resources.NewVersionLink}"
|
||||
Background="AntiqueWhite"
|
||||
VerticalContentAlignment="Center"
|
||||
HorizontalContentAlignment="Center"
|
||||
Visibility="Collapsed"
|
||||
Click="HandleNewVersionLinkClick">
|
||||
</controls:Link>
|
||||
<Grid Name="CategoryGrid"
|
||||
Height="21"
|
||||
nameBasedGrid:NameBasedGrid.Row="CategoryRow"
|
||||
@@ -186,12 +187,14 @@
|
||||
<Setter Property="Panel.Background"
|
||||
TargetName="Bd">
|
||||
<Setter.Value>
|
||||
<DynamicResource ResourceKey="{x:Static SystemColors.HighlightBrushKey}" />
|
||||
<DynamicResource
|
||||
ResourceKey="{x:Static SystemColors.HighlightBrushKey}" />
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Setter Property="TextElement.Foreground">
|
||||
<Setter.Value>
|
||||
<DynamicResource ResourceKey="{x:Static SystemColors.HighlightTextBrushKey}" />
|
||||
<DynamicResource
|
||||
ResourceKey="{x:Static SystemColors.HighlightTextBrushKey}" />
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Setter Property="Panel.Cursor"
|
||||
@@ -295,17 +298,17 @@
|
||||
</splitButton:SplitButton>
|
||||
</ToolBar>
|
||||
</ToolBarTray>
|
||||
<linkControl:LinkControl Name="FeedErrorsLink"
|
||||
Height="21"
|
||||
nameBasedGrid:NameBasedGrid.Row="FeedErrorsRow"
|
||||
Text="{x:Static properties:Resources.FeedErrorsLink}"
|
||||
ToolTip="{x:Static properties:Resources.showErrorsToolbarButton}"
|
||||
Background="AntiqueWhite"
|
||||
VerticalContentAlignment="Center"
|
||||
HorizontalContentAlignment="Center"
|
||||
Visibility="Collapsed"
|
||||
Click="HandleShowErrorsButtonClick">
|
||||
</linkControl:LinkControl>
|
||||
<controls:Link Name="FeedErrorsLink"
|
||||
Height="21"
|
||||
nameBasedGrid:NameBasedGrid.Row="FeedErrorsRow"
|
||||
Text="{x:Static properties:Resources.FeedErrorsLink}"
|
||||
ToolTip="{x:Static properties:Resources.showErrorsToolbarButton}"
|
||||
Background="AntiqueWhite"
|
||||
VerticalContentAlignment="Center"
|
||||
HorizontalContentAlignment="Center"
|
||||
Visibility="Collapsed"
|
||||
Click="HandleShowErrorsButtonClick">
|
||||
</controls:Link>
|
||||
</nameBasedGrid:NameBasedGrid>
|
||||
</Border>
|
||||
</windows:SnappingWindow>
|
||||
</windows:SnappingWindow>
|
||||
@@ -1,9 +1,8 @@
|
||||
using Common.Debug;
|
||||
using Common.Helpers;
|
||||
using Common.IO;
|
||||
using Common.Update;
|
||||
using CKaczor.ApplicationUpdate;
|
||||
using CKaczor.Wpf.Application;
|
||||
using FeedCenter.Data;
|
||||
using FeedCenter.Properties;
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
@@ -14,7 +13,7 @@ using System.Windows.Media;
|
||||
|
||||
namespace FeedCenter
|
||||
{
|
||||
public partial class MainWindow
|
||||
public partial class MainWindow : IDisposable
|
||||
{
|
||||
private FeedCenterEntities _database;
|
||||
private int _feedIndex;
|
||||
@@ -28,6 +27,21 @@ namespace FeedCenter
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
protected override async void OnClosed(EventArgs e)
|
||||
{
|
||||
base.OnClosed(e);
|
||||
|
||||
await SingleInstance.Stop();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_mainTimer?.Dispose();
|
||||
_feedReadWorker?.Dispose();
|
||||
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
public async void Initialize()
|
||||
{
|
||||
// Setup the update handler
|
||||
@@ -52,12 +66,12 @@ namespace FeedCenter
|
||||
// Setup the database
|
||||
_database = Database.Entities;
|
||||
|
||||
// Initialize the command line listener
|
||||
_commandLineListener = new InterprocessMessageListener(Properties.Resources.ApplicationName);
|
||||
_commandLineListener.MessageReceived += HandleCommandLine;
|
||||
// Initialize the single instance listener
|
||||
SingleInstance.MessageReceived += SingleInstance_MessageReceived;
|
||||
await SingleInstance.StartAsync(App.Name);
|
||||
|
||||
// Handle any command line we were started with
|
||||
HandleCommandLine(null, new InterprocessMessageListener.InterprocessMessageEventArgs(Environment.CommandLine));
|
||||
HandleCommandLine(Environment.CommandLine);
|
||||
|
||||
// Create a timer to keep track of things we need to do
|
||||
InitializeTimer();
|
||||
@@ -73,7 +87,12 @@ namespace FeedCenter
|
||||
if (UpdateCheck.UpdateAvailable)
|
||||
NewVersionLink.Visibility = Visibility.Visible;
|
||||
|
||||
Tracer.WriteLine("MainForm creation finished");
|
||||
Log.Logger.Information("MainForm creation finished");
|
||||
}
|
||||
|
||||
private void SingleInstance_MessageReceived(object sender, string commandLine)
|
||||
{
|
||||
HandleCommandLine(commandLine);
|
||||
}
|
||||
|
||||
#region Setting events
|
||||
@@ -87,30 +106,36 @@ namespace FeedCenter
|
||||
return;
|
||||
}
|
||||
|
||||
if (e.PropertyName == Reflection.GetPropertyName(() => Settings.Default.MultipleLineDisplay))
|
||||
switch (e.PropertyName)
|
||||
{
|
||||
// Update the current feed
|
||||
DisplayFeed();
|
||||
}
|
||||
else if (e.PropertyName == Reflection.GetPropertyName(() => Settings.Default.WindowLocked))
|
||||
{
|
||||
// Update the window for the new window lock value
|
||||
HandleWindowLockState();
|
||||
}
|
||||
else if (e.PropertyName == Reflection.GetPropertyName(() => Settings.Default.ToolbarLocation))
|
||||
{
|
||||
// Update the window for the toolbar location
|
||||
switch (Settings.Default.ToolbarLocation)
|
||||
{
|
||||
case Dock.Top:
|
||||
NameBasedGrid.NameBasedGrid.SetRow(NavigationToolbarTray, "TopToolbarRow");
|
||||
case nameof(Settings.Default.MultipleLineDisplay):
|
||||
// Update the current feed
|
||||
DisplayFeed();
|
||||
break;
|
||||
case nameof(Settings.Default.WindowLocked):
|
||||
// Update the window for the new window lock value
|
||||
HandleWindowLockState();
|
||||
break;
|
||||
case nameof(Settings.Default.ToolbarLocation):
|
||||
// Update the window for the toolbar location
|
||||
switch (Settings.Default.ToolbarLocation)
|
||||
{
|
||||
case Dock.Top:
|
||||
NameBasedGrid.NameBasedGrid.SetRow(NavigationToolbarTray, "TopToolbarRow");
|
||||
|
||||
break;
|
||||
case Dock.Bottom:
|
||||
NameBasedGrid.NameBasedGrid.SetRow(NavigationToolbarTray, "BottomToolbarRow");
|
||||
break;
|
||||
case Dock.Bottom:
|
||||
NameBasedGrid.NameBasedGrid.SetRow(NavigationToolbarTray, "BottomToolbarRow");
|
||||
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case Dock.Left:
|
||||
case Dock.Right:
|
||||
throw new NotSupportedException();
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException(nameof(Settings.Default.ToolbarLocation));
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,15 +149,15 @@ namespace FeedCenter
|
||||
var feedCount = _feedList?.Count() ?? 0;
|
||||
|
||||
// Set button states
|
||||
PreviousToolbarButton.IsEnabled = (feedCount > 1);
|
||||
NextToolbarButton.IsEnabled = (feedCount > 1);
|
||||
RefreshToolbarButton.IsEnabled = (feedCount > 0);
|
||||
FeedButton.IsEnabled = (feedCount > 0);
|
||||
OpenAllToolbarButton.IsEnabled = (feedCount > 0);
|
||||
MarkReadToolbarButton.IsEnabled = (feedCount > 0);
|
||||
FeedLabel.Visibility = (feedCount == 0 ? Visibility.Hidden : Visibility.Visible);
|
||||
FeedButton.Visibility = (feedCount > 1 ? Visibility.Hidden : Visibility.Visible);
|
||||
CategoryGrid.Visibility = (_database.Categories.Count() > 1 ? Visibility.Visible : Visibility.Collapsed);
|
||||
PreviousToolbarButton.IsEnabled = feedCount > 1;
|
||||
NextToolbarButton.IsEnabled = feedCount > 1;
|
||||
RefreshToolbarButton.IsEnabled = feedCount > 0;
|
||||
FeedButton.IsEnabled = feedCount > 0;
|
||||
OpenAllToolbarButton.IsEnabled = feedCount > 0;
|
||||
MarkReadToolbarButton.IsEnabled = feedCount > 0;
|
||||
FeedLabel.Visibility = feedCount == 0 ? Visibility.Hidden : Visibility.Visible;
|
||||
FeedButton.Visibility = feedCount > 1 ? Visibility.Hidden : Visibility.Visible;
|
||||
CategoryGrid.Visibility = _database.Categories.Count > 1 ? Visibility.Visible : Visibility.Collapsed;
|
||||
}
|
||||
|
||||
private void InitializeDisplay()
|
||||
@@ -196,7 +221,7 @@ namespace FeedCenter
|
||||
_currentFeed = _feedList.OrderBy(feed => feed.Name).AsEnumerable().ElementAt(_feedIndex);
|
||||
|
||||
// If the current feed has unread items then we can display it
|
||||
if (_currentFeed.Items.Count(item => !item.BeenRead) > 0)
|
||||
if (_currentFeed.Items.Any(item => !item.BeenRead))
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
@@ -204,8 +229,7 @@ namespace FeedCenter
|
||||
|
||||
// Increment the index and adjust if we've gone around the end
|
||||
_feedIndex = (_feedIndex + 1) % feedCount;
|
||||
}
|
||||
while (_feedIndex != startIndex);
|
||||
} while (_feedIndex != startIndex);
|
||||
|
||||
// If nothing was found then clear the current feed
|
||||
if (!found)
|
||||
@@ -263,7 +287,7 @@ namespace FeedCenter
|
||||
_currentFeed = _feedList.OrderBy(feed => feed.Name).AsEnumerable().ElementAt(_feedIndex);
|
||||
|
||||
// If the current feed has unread items then we can display it
|
||||
if (_currentFeed.Items.Count(item => !item.BeenRead) > 0)
|
||||
if (_currentFeed.Items.Any(item => !item.BeenRead))
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
@@ -275,8 +299,7 @@ namespace FeedCenter
|
||||
// If we've gone below the start of the list then reset to the end
|
||||
if (_feedIndex < 0)
|
||||
_feedIndex = feedCount - 1;
|
||||
}
|
||||
while (_feedIndex != startIndex);
|
||||
} while (_feedIndex != startIndex);
|
||||
|
||||
// If nothing was found then clear the current feed
|
||||
if (!found)
|
||||
@@ -395,4 +418,4 @@ namespace FeedCenter
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using FeedCenter.Options;
|
||||
using CKaczor.InstalledBrowsers;
|
||||
using FeedCenter.Options;
|
||||
using FeedCenter.Properties;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
@@ -26,9 +27,6 @@ namespace FeedCenter
|
||||
// Create a new list of feed items
|
||||
var feedItems = (from FeedItem feedItem in LinkTextList.Items select feedItem).ToList();
|
||||
|
||||
// Get the browser
|
||||
var browser = BrowserCommon.FindBrowser(Settings.Default.Browser);
|
||||
|
||||
// Cache the settings object
|
||||
var settings = Settings.Default;
|
||||
|
||||
@@ -39,7 +37,7 @@ namespace FeedCenter
|
||||
foreach (var feedItem in feedItems)
|
||||
{
|
||||
// Try to open the link
|
||||
if (BrowserCommon.OpenLink(browser, feedItem.Link))
|
||||
if (InstalledBrowser.OpenLink(Settings.Default.Browser, feedItem.Link))
|
||||
{
|
||||
// Mark the feed as read
|
||||
_database.SaveChanges(() => feedItem.BeenRead = true);
|
||||
@@ -236,9 +234,9 @@ namespace FeedCenter
|
||||
textWriter.Flush();
|
||||
textWriter.Close();
|
||||
|
||||
BrowserCommon.OpenLink(fileName);
|
||||
InstalledBrowser.OpenLink(Settings.Default.Browser, fileName);
|
||||
|
||||
MarkAllItemsAsRead();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
using Common.Update;
|
||||
using CKaczor.ApplicationUpdate;
|
||||
using FeedCenter.Properties;
|
||||
using System.Windows;
|
||||
|
||||
@@ -8,12 +8,13 @@ namespace FeedCenter
|
||||
{
|
||||
private static void InitializeUpdate()
|
||||
{
|
||||
UpdateCheck.ApplicationName = Properties.Resources.ApplicationDisplayName;
|
||||
UpdateCheck.UpdateServerType = ServerType.GitHub;
|
||||
UpdateCheck.UpdateServer = Settings.Default.VersionLocation;
|
||||
UpdateCheck.ApplicationShutdown = ApplicationShutdown;
|
||||
UpdateCheck.ApplicationCurrentMessage = ApplicationCurrentMessage;
|
||||
UpdateCheck.ApplicationUpdateMessage = ApplicationUpdateMessage;
|
||||
UpdateCheck.Initialize(ServerType.GitHub,
|
||||
Settings.Default.VersionLocation,
|
||||
string.Empty,
|
||||
Properties.Resources.ApplicationDisplayName,
|
||||
ApplicationShutdown,
|
||||
ApplicationCurrentMessage,
|
||||
ApplicationUpdateMessage);
|
||||
}
|
||||
|
||||
private static bool ApplicationUpdateMessage(string title, string message)
|
||||
@@ -33,8 +34,7 @@ namespace FeedCenter
|
||||
|
||||
private void HandleNewVersionLinkClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// Display update information
|
||||
UpdateCheck.DisplayUpdateInformation(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
using FeedCenter.Properties;
|
||||
using DebounceThrottle;
|
||||
using FeedCenter.Properties;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Interop;
|
||||
using System.Windows.Media;
|
||||
using Common.Helpers;
|
||||
|
||||
namespace FeedCenter
|
||||
{
|
||||
@@ -90,25 +90,22 @@ namespace FeedCenter
|
||||
SaveWindowSettings();
|
||||
|
||||
// Save settings
|
||||
_database.SaveChanges(() => Settings.Default.Save());
|
||||
_database.SaveChanges(Settings.Default.Save);
|
||||
|
||||
// Get rid of the notification icon
|
||||
NotificationIcon.Dispose();
|
||||
}
|
||||
|
||||
private DelayedMethod _windowStateDelay;
|
||||
private readonly DebounceDispatcher _updateWindowSettingsDispatcher = new(500);
|
||||
|
||||
private void HandleWindowSizeChanged(object sender, SizeChangedEventArgs e)
|
||||
{
|
||||
_windowStateDelay ??= new DelayedMethod(500, UpdateWindowSettings);
|
||||
|
||||
_windowStateDelay.Reset();
|
||||
_updateWindowSettingsDispatcher.Debounce(() => Dispatcher.Invoke(UpdateWindowSettings));
|
||||
}
|
||||
|
||||
private void HandleWindowLocationChanged(object sender, EventArgs e)
|
||||
{
|
||||
_windowStateDelay ??= new DelayedMethod(500, UpdateWindowSettings);
|
||||
|
||||
_windowStateDelay.Reset();
|
||||
_updateWindowSettingsDispatcher.Debounce(() => Dispatcher.Invoke(UpdateWindowSettings));
|
||||
}
|
||||
|
||||
private void UpdateBorder()
|
||||
@@ -152,6 +149,7 @@ namespace FeedCenter
|
||||
}
|
||||
|
||||
private bool _activated;
|
||||
|
||||
protected override void OnActivated(EventArgs e)
|
||||
{
|
||||
base.OnActivated(e);
|
||||
@@ -172,4 +170,4 @@ namespace FeedCenter
|
||||
Settings.Default.PropertyChanged += HandlePropertyChanged;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -20,10 +20,7 @@ namespace FeedCenter
|
||||
// Setup the menu
|
||||
var contextMenuStrip = new ContextMenuStrip();
|
||||
|
||||
var toolStripMenuItem = new ToolStripMenuItem(Resources.NotificationIconContextMenuLocked, null, HandleLockWindowClicked)
|
||||
{
|
||||
Checked = Settings.Default.WindowLocked
|
||||
};
|
||||
var toolStripMenuItem = new ToolStripMenuItem(Resources.NotificationIconContextMenuLocked, null, HandleLockWindowClicked) { Checked = Settings.Default.WindowLocked };
|
||||
contextMenuStrip.Items.Add(toolStripMenuItem);
|
||||
|
||||
contextMenuStrip.Items.Add(new ToolStripSeparator());
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using Common.Update;
|
||||
using CKaczor.ApplicationUpdate;
|
||||
using System.Reflection;
|
||||
|
||||
namespace FeedCenter.Options
|
||||
@@ -33,4 +33,4 @@ namespace FeedCenter.Options
|
||||
|
||||
public override string CategoryName => Properties.Resources.optionCategoryAbout;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,8 +5,8 @@
|
||||
Height="300"
|
||||
Width="500"
|
||||
xmlns:my="clr-namespace:FeedCenter.Properties"
|
||||
xmlns:linkControl="clr-namespace:Common.Wpf.LinkControl;assembly=Common.Wpf"
|
||||
xmlns:feedCenter="clr-namespace:FeedCenter"
|
||||
xmlns:controls="clr-namespace:CKaczor.Wpf.Controls;assembly=Wpf.Controls.Link"
|
||||
WindowStartupLocation="CenterOwner"
|
||||
Icon="/FeedCenter;component/Resources/Application.ico"
|
||||
FocusManager.FocusedElement="{Binding ElementName=FeedLinkFilterText}">
|
||||
@@ -61,18 +61,18 @@
|
||||
<TextBlock Margin="2"
|
||||
Text="{x:Static my:Resources.SelectLabel}">
|
||||
</TextBlock>
|
||||
<linkControl:LinkControl Margin="2"
|
||||
Click="HandleSelectAll"
|
||||
Text="{x:Static my:Resources.SelectAllLabel}">
|
||||
</linkControl:LinkControl>
|
||||
<linkControl:LinkControl Margin="2"
|
||||
Click="HandleSelectNone"
|
||||
Text="{x:Static my:Resources.SelectNoneLabel}">
|
||||
</linkControl:LinkControl>
|
||||
<linkControl:LinkControl Margin="2"
|
||||
Click="HandleSelectInvert"
|
||||
Text="{x:Static my:Resources.SelectInvertLabel}">
|
||||
</linkControl:LinkControl>
|
||||
<controls:Link Margin="2"
|
||||
Click="HandleSelectAll"
|
||||
Text="{x:Static my:Resources.SelectAllLabel}">
|
||||
</controls:Link>
|
||||
<controls:Link Margin="2"
|
||||
Click="HandleSelectNone"
|
||||
Text="{x:Static my:Resources.SelectNoneLabel}">
|
||||
</controls:Link>
|
||||
<controls:Link Margin="2"
|
||||
Click="HandleSelectInvert"
|
||||
Text="{x:Static my:Resources.SelectInvertLabel}">
|
||||
</controls:Link>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Grid>
|
||||
@@ -124,4 +124,4 @@
|
||||
Width="75"
|
||||
Grid.Row="3" />
|
||||
</Grid>
|
||||
</Window>
|
||||
</Window>
|
||||
@@ -1,5 +1,4 @@
|
||||
using Common.Wpf;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
@@ -36,7 +35,7 @@ namespace FeedCenter.Options
|
||||
ShowDialog();
|
||||
}
|
||||
|
||||
void HandleCollectionViewSourceFilter(object sender, FilterEventArgs e)
|
||||
private void HandleCollectionViewSourceFilter(object sender, FilterEventArgs e)
|
||||
{
|
||||
var checkedListBoxItem = (CheckedListItem<Feed>) e.Item;
|
||||
|
||||
|
||||
@@ -2,44 +2,71 @@
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:properties="clr-namespace:FeedCenter.Properties"
|
||||
xmlns:feedCenter="clr-namespace:FeedCenter"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:validation="clr-namespace:CKaczor.Wpf.Validation;assembly=Wpf.Validation"
|
||||
xmlns:controls="clr-namespace:CKaczor.Wpf.Windows;assembly=Wpf.Windows.ControlBox"
|
||||
d:DataContext="{d:DesignInstance Type=feedCenter:Category}"
|
||||
Title="CategoryWindow"
|
||||
Height="119"
|
||||
Width="339"
|
||||
Width="300"
|
||||
ResizeMode="NoResize"
|
||||
SizeToContent="Height"
|
||||
WindowStartupLocation="CenterOwner"
|
||||
Icon="/FeedCenter;component/Resources/Application.ico"
|
||||
FocusManager.FocusedElement="{Binding ElementName=NameTextBox}">
|
||||
<Grid>
|
||||
FocusManager.FocusedElement="{Binding ElementName=NameTextBox}"
|
||||
controls:ControlBox.HasMinimizeButton="False"
|
||||
controls:ControlBox.HasMaximizeButton="False">
|
||||
<Grid Margin="8">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="367*" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Label Content="{x:Static properties:Resources.feedCategoryLabel}"
|
||||
HorizontalAlignment="Left"
|
||||
Grid.Column="0"
|
||||
Grid.Row="0"
|
||||
Target="{Binding ElementName=NameTextBox}"
|
||||
VerticalAlignment="Top"
|
||||
VerticalContentAlignment="Center"
|
||||
Margin="12,12,0,0" />
|
||||
<TextBox Margin="7,14,12,0"
|
||||
Name="NameTextBox"
|
||||
Text="{Binding Path=Name, UpdateSourceTrigger=Explicit, ValidatesOnExceptions=True}"
|
||||
VerticalAlignment="Top"
|
||||
Grid.Column="1" />
|
||||
<Button Content="{x:Static properties:Resources.OkayButton}"
|
||||
Height="23"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Bottom"
|
||||
Width="75"
|
||||
IsDefault="True"
|
||||
Margin="0,0,93,12"
|
||||
Click="HandleOkayButtonClick"
|
||||
Grid.Column="1" />
|
||||
<Button Content="{x:Static properties:Resources.CancelButton}"
|
||||
Height="23"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Bottom"
|
||||
Width="75"
|
||||
IsCancel="True"
|
||||
Margin="0,0,12,12"
|
||||
Grid.Column="1" />
|
||||
VerticalAlignment="Center"
|
||||
VerticalContentAlignment="Center" />
|
||||
<TextBox Name="NameTextBox"
|
||||
VerticalAlignment="Center"
|
||||
Grid.Row="0"
|
||||
Grid.Column="1">
|
||||
<TextBox.Text>
|
||||
<Binding Path="Name" UpdateSourceTrigger="Explicit" ValidatesOnExceptions="True">
|
||||
<Binding.ValidationRules>
|
||||
<validation:RequiredValidationRule></validation:RequiredValidationRule>
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
<StackPanel
|
||||
Grid.Column="1"
|
||||
Grid.Row="2"
|
||||
Orientation="Horizontal"
|
||||
Margin="0,4,0,0"
|
||||
HorizontalAlignment="Right">
|
||||
<Button Content="{x:Static properties:Resources.OkayButton}"
|
||||
Height="23"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Bottom"
|
||||
Width="75"
|
||||
Margin="0,0,5,0"
|
||||
IsDefault="True"
|
||||
Click="HandleOkayButtonClick" />
|
||||
<Button Content="{x:Static properties:Resources.CancelButton}"
|
||||
Height="23"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Bottom"
|
||||
Width="75"
|
||||
IsCancel="True" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Window>
|
||||
</Window>
|
||||
@@ -1,8 +1,5 @@
|
||||
using Common.Wpf.Extensions;
|
||||
using System.Linq;
|
||||
using CKaczor.Wpf.Validation;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace FeedCenter.Options
|
||||
{
|
||||
@@ -19,7 +16,9 @@ namespace FeedCenter.Options
|
||||
DataContext = category;
|
||||
|
||||
// Set the title based on the state of the category
|
||||
Title = string.IsNullOrWhiteSpace(category.Name) ? Properties.Resources.CategoryWindowAdd : Properties.Resources.CategoryWindowEdit;
|
||||
Title = string.IsNullOrWhiteSpace(category.Name)
|
||||
? Properties.Resources.CategoryWindowAdd
|
||||
: Properties.Resources.CategoryWindowEdit;
|
||||
|
||||
// Set the window owner
|
||||
Owner = owner;
|
||||
@@ -30,29 +29,8 @@ namespace FeedCenter.Options
|
||||
|
||||
private void HandleOkayButtonClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// Get a list of all explicit binding expressions
|
||||
var bindingExpressions = this.GetBindingExpressions(new[] { UpdateSourceTrigger.Explicit });
|
||||
|
||||
// Loop over each binding expression and clear any existing error
|
||||
bindingExpressions.ForEach(b => Validation.ClearInvalid(b.BindingExpression));
|
||||
|
||||
// Force all explicit bindings to update the source
|
||||
bindingExpressions.ForEach(bindingExpression => bindingExpression.BindingExpression.UpdateSource());
|
||||
|
||||
// See if there are any errors
|
||||
var hasError = bindingExpressions.Exists(bindingExpression => bindingExpression.BindingExpression.HasError);
|
||||
|
||||
// If there was an error then set focus to the bad controls
|
||||
if (hasError)
|
||||
{
|
||||
// Get the first framework element with an error
|
||||
var firstErrorElement = bindingExpressions.First(b => b.BindingExpression.HasError).FrameworkElement;
|
||||
|
||||
// Set focus
|
||||
firstErrorElement.Focus();
|
||||
|
||||
if (!this.Validate())
|
||||
return;
|
||||
}
|
||||
|
||||
// Dialog is good
|
||||
DialogResult = true;
|
||||
@@ -61,4 +39,4 @@ namespace FeedCenter.Options
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
41
Application/Options/CheckedListItem.cs
Normal file
41
Application/Options/CheckedListItem.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace FeedCenter.Options;
|
||||
|
||||
public class CheckedListItem<T> : INotifyPropertyChanged
|
||||
{
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
private bool _isChecked;
|
||||
private readonly T _item;
|
||||
|
||||
public CheckedListItem() { }
|
||||
|
||||
public CheckedListItem(T item, bool isChecked = false)
|
||||
{
|
||||
_item = item;
|
||||
_isChecked = isChecked;
|
||||
}
|
||||
|
||||
public T Item
|
||||
{
|
||||
get => _item;
|
||||
init
|
||||
{
|
||||
_item = value;
|
||||
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Item"));
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsChecked
|
||||
{
|
||||
get => _isChecked;
|
||||
set
|
||||
{
|
||||
_isChecked = value;
|
||||
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("IsChecked"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
d:DataContext="{d:DesignInstance Type=feedCenter:Feed}"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:validation="clr-namespace:Common.Wpf.Validation;assembly=Common.Wpf"
|
||||
xmlns:validation="clr-namespace:CKaczor.Wpf.Validation;assembly=Wpf.Validation"
|
||||
mc:Ignorable="d"
|
||||
Title="FeedWindow"
|
||||
Height="300"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using Common.Wpf.Extensions;
|
||||
using CKaczor.Wpf.Validation;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:options="clr-namespace:FeedCenter.Options"
|
||||
xmlns:linkControl="clr-namespace:Common.Wpf.LinkControl;assembly=Common.Wpf"
|
||||
xmlns:properties="clr-namespace:FeedCenter.Properties"
|
||||
xmlns:controls="clr-namespace:CKaczor.Wpf.Controls;assembly=Wpf.Controls.Link"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="311"
|
||||
d:DesignWidth="425">
|
||||
@@ -95,39 +95,39 @@
|
||||
BorderBrush="{DynamicResource {x:Static SystemColors.ActiveBorderBrushKey}}">
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}">
|
||||
<linkControl:LinkControl Name="AddFeedButton"
|
||||
Margin="2"
|
||||
Click="HandleAddFeedButtonClick"
|
||||
Text="{x:Static properties:Resources.AddLink}"
|
||||
ToolTip="{x:Static properties:Resources.AddFeedButton}">
|
||||
</linkControl:LinkControl>
|
||||
<linkControl:LinkControl Name="EditFeedButton"
|
||||
Margin="2"
|
||||
Click="HandleEditFeedButtonClick"
|
||||
Text="{x:Static properties:Resources.EditLink}"
|
||||
ToolTip="{x:Static properties:Resources.EditFeedButton}">
|
||||
</linkControl:LinkControl>
|
||||
<linkControl:LinkControl Name="DeleteFeedButton"
|
||||
Margin="2"
|
||||
Click="HandleDeleteFeedButtonClick"
|
||||
Text="{x:Static properties:Resources.DeleteLink}"
|
||||
ToolTip="{x:Static properties:Resources.DeleteFeedButton}">
|
||||
</linkControl:LinkControl>
|
||||
<linkControl:LinkControl Margin="6,2,2,2"
|
||||
Click="HandleImportButtonClick"
|
||||
Text="{x:Static properties:Resources.ImportLink}"
|
||||
ToolTip="{x:Static properties:Resources.ImportFeedsButton}">
|
||||
</linkControl:LinkControl>
|
||||
<linkControl:LinkControl Margin="2"
|
||||
Click="HandleExportButtonClick"
|
||||
Text="{x:Static properties:Resources.ExportLink}"
|
||||
ToolTip="{x:Static properties:Resources.ExportFeedsButton}">
|
||||
</linkControl:LinkControl>
|
||||
<linkControl:LinkControl Margin="6,2,2,2"
|
||||
Click="HandleMultipleEditClick"
|
||||
Text="{x:Static properties:Resources.MultipleEditLink}"
|
||||
ToolTip="{x:Static properties:Resources.MultipleEditButton}">
|
||||
</linkControl:LinkControl>
|
||||
<controls:Link Name="AddFeedButton"
|
||||
Margin="2"
|
||||
Click="HandleAddFeedButtonClick"
|
||||
Text="{x:Static properties:Resources.AddLink}"
|
||||
ToolTip="{x:Static properties:Resources.AddFeedButton}">
|
||||
</controls:Link>
|
||||
<controls:Link Name="EditFeedButton"
|
||||
Margin="2"
|
||||
Click="HandleEditFeedButtonClick"
|
||||
Text="{x:Static properties:Resources.EditLink}"
|
||||
ToolTip="{x:Static properties:Resources.EditFeedButton}">
|
||||
</controls:Link>
|
||||
<controls:Link Name="DeleteFeedButton"
|
||||
Margin="2"
|
||||
Click="HandleDeleteFeedButtonClick"
|
||||
Text="{x:Static properties:Resources.DeleteLink}"
|
||||
ToolTip="{x:Static properties:Resources.DeleteFeedButton}">
|
||||
</controls:Link>
|
||||
<controls:Link Margin="6,2,2,2"
|
||||
Click="HandleImportButtonClick"
|
||||
Text="{x:Static properties:Resources.ImportLink}"
|
||||
ToolTip="{x:Static properties:Resources.ImportFeedsButton}">
|
||||
</controls:Link>
|
||||
<controls:Link Margin="2"
|
||||
Click="HandleExportButtonClick"
|
||||
Text="{x:Static properties:Resources.ExportLink}"
|
||||
ToolTip="{x:Static properties:Resources.ExportFeedsButton}">
|
||||
</controls:Link>
|
||||
<controls:Link Margin="6,2,2,2"
|
||||
Click="HandleMultipleEditClick"
|
||||
Text="{x:Static properties:Resources.MultipleEditLink}"
|
||||
ToolTip="{x:Static properties:Resources.MultipleEditButton}">
|
||||
</controls:Link>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
<Border Grid.Row="1"
|
||||
@@ -136,24 +136,24 @@
|
||||
BorderBrush="{DynamicResource {x:Static SystemColors.ActiveBorderBrushKey}}">
|
||||
<StackPanel Orientation="Horizontal"
|
||||
Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}">
|
||||
<linkControl:LinkControl Name="AddCategoryButton"
|
||||
Margin="2"
|
||||
Click="HandleAddCategoryButtonClick"
|
||||
Text="{x:Static properties:Resources.AddLink}"
|
||||
ToolTip="{x:Static properties:Resources.AddCategoryButton}">
|
||||
</linkControl:LinkControl>
|
||||
<linkControl:LinkControl Name="EditCategoryButton"
|
||||
Margin="2"
|
||||
Click="HandleEditCategoryButtonClick"
|
||||
Text="{x:Static properties:Resources.EditLink}"
|
||||
ToolTip="{x:Static properties:Resources.EditCategoryButton}">
|
||||
</linkControl:LinkControl>
|
||||
<linkControl:LinkControl Name="DeleteCategoryButton"
|
||||
Margin="2"
|
||||
Click="HandleDeleteCategoryButtonClick"
|
||||
Text="{x:Static properties:Resources.DeleteLink}"
|
||||
ToolTip="{x:Static properties:Resources.DeleteCategoryButton}">
|
||||
</linkControl:LinkControl>
|
||||
<controls:Link Name="AddCategoryButton"
|
||||
Margin="2"
|
||||
Click="HandleAddCategoryButtonClick"
|
||||
Text="{x:Static properties:Resources.AddLink}"
|
||||
ToolTip="{x:Static properties:Resources.AddCategoryButton}">
|
||||
</controls:Link>
|
||||
<controls:Link Name="EditCategoryButton"
|
||||
Margin="2"
|
||||
Click="HandleEditCategoryButtonClick"
|
||||
Text="{x:Static properties:Resources.EditLink}"
|
||||
ToolTip="{x:Static properties:Resources.EditCategoryButton}">
|
||||
</controls:Link>
|
||||
<controls:Link Name="DeleteCategoryButton"
|
||||
Margin="2"
|
||||
Click="HandleDeleteCategoryButtonClick"
|
||||
Text="{x:Static properties:Resources.DeleteLink}"
|
||||
ToolTip="{x:Static properties:Resources.DeleteCategoryButton}">
|
||||
</controls:Link>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
@@ -38,8 +38,6 @@
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
VerticalContentAlignment="Center">
|
||||
<ComboBoxItem Content="{x:Static properties:Resources.DefaultBrowserCaption}"
|
||||
Tag="" />
|
||||
</ComboBox>
|
||||
<Label Content="{x:Static properties:Resources.defaultUserAgentLabel}"
|
||||
Target="{Binding ElementName=BrowserComboBox}"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Windows;
|
||||
using Common.Wpf.Extensions;
|
||||
using Common.Internet;
|
||||
using CKaczor.InstalledBrowsers;
|
||||
using CKaczor.Wpf.Application;
|
||||
using CKaczor.Wpf.Validation;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace FeedCenter.Options
|
||||
settings.StartWithWindows != StartWithWindowsCheckBox.IsChecked.Value)
|
||||
settings.StartWithWindows = StartWithWindowsCheckBox.IsChecked.Value;
|
||||
|
||||
Application.Current.SetStartWithWindows(settings.StartWithWindows);
|
||||
System.Windows.Application.Current.SetStartWithWindows(settings.StartWithWindows);
|
||||
|
||||
settings.Browser = (string) ((ComboBoxItem) BrowserComboBox.SelectedItem).Tag;
|
||||
|
||||
@@ -54,6 +54,8 @@ namespace FeedCenter.Options
|
||||
|
||||
var expressions = this.GetBindingExpressions(new[] { UpdateSourceTrigger.Explicit });
|
||||
this.UpdateAllSources(expressions);
|
||||
|
||||
this.Validate();
|
||||
}
|
||||
|
||||
public override string CategoryName => Properties.Resources.optionCategoryGeneral;
|
||||
@@ -64,7 +66,7 @@ namespace FeedCenter.Options
|
||||
|
||||
ComboBoxItem selectedItem = null;
|
||||
|
||||
var browsers = Browser.DetectInstalledBrowsers();
|
||||
var browsers = InstalledBrowser.GetInstalledBrowsers(true);
|
||||
foreach (var browser in browsers)
|
||||
{
|
||||
var item = new ComboBoxItem { Content = browser.Value.Name, Tag = browser.Key };
|
||||
@@ -129,4 +131,4 @@ namespace FeedCenter.Options
|
||||
return userAgents;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
using Common.Update;
|
||||
using CKaczor.ApplicationUpdate;
|
||||
|
||||
namespace FeedCenter.Options
|
||||
{
|
||||
@@ -34,4 +34,4 @@ namespace FeedCenter.Options
|
||||
UpdateCheck.DisplayUpdateInformation(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
30
Application/Properties/Settings.Designer.cs
generated
30
Application/Properties/Settings.Designer.cs
generated
@@ -12,7 +12,7 @@ namespace FeedCenter.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.5.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
@@ -24,7 +24,7 @@ namespace FeedCenter.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Common.Settings.GenericSettingsProvider))]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(CKaczor.GenericSettingsProvider.GenericSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool WindowLocked {
|
||||
@@ -37,7 +37,7 @@ namespace FeedCenter.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Common.Settings.GenericSettingsProvider))]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(CKaczor.GenericSettingsProvider.GenericSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0,0")]
|
||||
public global::System.Windows.Size WindowSize {
|
||||
@@ -50,7 +50,7 @@ namespace FeedCenter.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Common.Settings.GenericSettingsProvider))]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(CKaczor.GenericSettingsProvider.GenericSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("0,0")]
|
||||
public global::System.Windows.Point WindowLocation {
|
||||
@@ -111,7 +111,7 @@ namespace FeedCenter.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Common.Settings.GenericSettingsProvider))]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(CKaczor.GenericSettingsProvider.GenericSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("00:01:00")]
|
||||
public global::System.TimeSpan FeedScrollInterval {
|
||||
@@ -124,7 +124,7 @@ namespace FeedCenter.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Common.Settings.GenericSettingsProvider))]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(CKaczor.GenericSettingsProvider.GenericSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("00:30:00")]
|
||||
public global::System.TimeSpan FeedCheckInterval {
|
||||
@@ -137,7 +137,7 @@ namespace FeedCenter.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Common.Settings.GenericSettingsProvider))]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(CKaczor.GenericSettingsProvider.GenericSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool DisplayEmptyFeeds {
|
||||
@@ -150,7 +150,7 @@ namespace FeedCenter.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Common.Settings.GenericSettingsProvider))]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(CKaczor.GenericSettingsProvider.GenericSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
public global::System.DateTime LastVersionCheck {
|
||||
get {
|
||||
@@ -171,7 +171,7 @@ namespace FeedCenter.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Common.Settings.GenericSettingsProvider))]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(CKaczor.GenericSettingsProvider.GenericSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool StartWithWindows {
|
||||
@@ -196,7 +196,7 @@ namespace FeedCenter.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Common.Settings.GenericSettingsProvider))]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(CKaczor.GenericSettingsProvider.GenericSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("Bottom")]
|
||||
public global::System.Windows.Controls.Dock ToolbarLocation {
|
||||
@@ -209,7 +209,7 @@ namespace FeedCenter.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Common.Settings.GenericSettingsProvider))]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(CKaczor.GenericSettingsProvider.GenericSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("500")]
|
||||
public int OpenAllSleepInterval {
|
||||
@@ -222,7 +222,7 @@ namespace FeedCenter.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Common.Settings.GenericSettingsProvider))]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(CKaczor.GenericSettingsProvider.GenericSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string Browser {
|
||||
@@ -235,7 +235,7 @@ namespace FeedCenter.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Common.Settings.GenericSettingsProvider))]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(CKaczor.GenericSettingsProvider.GenericSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("1500")]
|
||||
public int OpenAllSleepIntervalFirst {
|
||||
@@ -248,7 +248,7 @@ namespace FeedCenter.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Common.Settings.GenericSettingsProvider))]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(CKaczor.GenericSettingsProvider.GenericSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("Normal")]
|
||||
public global::FeedCenter.Options.MultipleLineDisplay MultipleLineDisplay {
|
||||
@@ -282,7 +282,7 @@ namespace FeedCenter.Properties {
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(Common.Settings.GenericSettingsProvider))]
|
||||
[global::System.Configuration.SettingsProviderAttribute(typeof(CKaczor.GenericSettingsProvider.GenericSettingsProvider))]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string DefaultUserAgent {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using Common.Update;
|
||||
using CKaczor.ApplicationUpdate;
|
||||
using FeedCenter.Data;
|
||||
using FeedCenter.Properties;
|
||||
using System;
|
||||
@@ -33,7 +33,7 @@ namespace FeedCenter
|
||||
|
||||
#region Member variables
|
||||
|
||||
private readonly List<ProgressStep> _progressSteps = new List<ProgressStep>();
|
||||
private readonly List<ProgressStep> _progressSteps = new();
|
||||
private readonly Dispatcher _dispatcher;
|
||||
private readonly BackgroundWorker _backgroundWorker;
|
||||
|
||||
@@ -205,7 +205,7 @@ namespace FeedCenter
|
||||
private static bool UpdateDatabase()
|
||||
{
|
||||
// Update the database
|
||||
// Database.UpdateDatabase();
|
||||
// Database.UpdateDatabase();
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -225,4 +225,4 @@ namespace FeedCenter
|
||||
_backgroundWorker?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
59
Application/Xml/XmlExtensions.cs
Normal file
59
Application/Xml/XmlExtensions.cs
Normal file
@@ -0,0 +1,59 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Xml;
|
||||
using System.Xml.XPath;
|
||||
|
||||
namespace FeedCenter.Xml;
|
||||
|
||||
public static class XmlExtensions
|
||||
{
|
||||
public static XmlNamespaceManager GetAllNamespaces(this XmlDocument document)
|
||||
{
|
||||
// Create the namespace manager from the name table
|
||||
var namespaceManager = new XmlNamespaceManager(document.NameTable);
|
||||
|
||||
// Create a dictionary of all namespaces
|
||||
var allNamespaces = new Dictionary<string, string>();
|
||||
|
||||
// Create an XPathDocument from the XML of the XmlDocument
|
||||
var xPathDocument = new XPathDocument(new StringReader(document.InnerXml));
|
||||
|
||||
// Create an XPathNavigator for the document
|
||||
var xPathNavigator = xPathDocument.CreateNavigator();
|
||||
|
||||
if (xPathNavigator == null) return namespaceManager;
|
||||
|
||||
// Loop over all elements
|
||||
while (xPathNavigator.MoveToFollowing(XPathNodeType.Element))
|
||||
{
|
||||
// Get the list of local namespaces
|
||||
var localNamespaces = xPathNavigator.GetNamespacesInScope(XmlNamespaceScope.Local);
|
||||
|
||||
if (localNamespaces == null) continue;
|
||||
|
||||
// Add all local namespaces to the master list
|
||||
foreach (var ns in localNamespaces)
|
||||
allNamespaces[ns.Key] = ns.Value;
|
||||
}
|
||||
|
||||
// Loop over all namespaces
|
||||
foreach (var ns in allNamespaces)
|
||||
{
|
||||
// Use the key as the name
|
||||
var namespaceName = ns.Key;
|
||||
|
||||
// If the name is blank then use "default" instead
|
||||
if (string.IsNullOrEmpty(namespaceName))
|
||||
namespaceName = "default";
|
||||
|
||||
// Add the namespace to the manager
|
||||
namespaceManager.AddNamespace(namespaceName, ns.Value);
|
||||
}
|
||||
|
||||
// Add the default namespace if missing
|
||||
if (!namespaceManager.HasNamespace("default"))
|
||||
namespaceManager.AddNamespace("default", "");
|
||||
|
||||
return namespaceManager;
|
||||
}
|
||||
}
|
||||
231
Application/Xml/XmlSanitizingStream.cs
Normal file
231
Application/Xml/XmlSanitizingStream.cs
Normal file
@@ -0,0 +1,231 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace FeedCenter.Xml;
|
||||
|
||||
/// <summary>
|
||||
/// A StreamReader that excludes XML-illegal characters while reading.
|
||||
/// </summary>
|
||||
public class XmlSanitizingStream : StreamReader
|
||||
{
|
||||
/// <summary>
|
||||
/// The character that denotes the end of a file has been reached.
|
||||
/// </summary>
|
||||
private const int Eof = -1;
|
||||
|
||||
/// <summary>Create an instance of XmlSanitizingStream.</summary>
|
||||
/// <param name="streamToSanitize">
|
||||
/// The stream to sanitize of illegal XML characters.
|
||||
/// </param>
|
||||
public XmlSanitizingStream(Stream streamToSanitize)
|
||||
: base(streamToSanitize, true)
|
||||
{
|
||||
}
|
||||
|
||||
public XmlSanitizingStream(Stream streamToSanitize, Encoding encoding)
|
||||
: base(streamToSanitize, encoding)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get whether an integer represents a legal XML 1.0 or 1.1 character. See
|
||||
/// the specification at w3.org for these characters.
|
||||
/// </summary>
|
||||
/// <param name="xmlVersion">
|
||||
/// The version number as a string. Use "1.0" for XML 1.0 character
|
||||
/// validation, and use "1.1" for XML 1.1 character validation.
|
||||
/// </param>
|
||||
/// <param name="character"> </param>
|
||||
public static bool IsLegalXmlChar(string xmlVersion, int character)
|
||||
{
|
||||
switch (xmlVersion)
|
||||
{
|
||||
case "1.1": // http://www.w3.org/TR/xml11/#charsets
|
||||
{
|
||||
return
|
||||
!(
|
||||
character <= 0x8 ||
|
||||
character == 0xB ||
|
||||
character == 0xC ||
|
||||
(character >= 0xE && character <= 0x1F) ||
|
||||
(character >= 0x7F && character <= 0x84) ||
|
||||
(character >= 0x86 && character <= 0x9F) ||
|
||||
character > 0x10FFFF
|
||||
);
|
||||
}
|
||||
case "1.0": // http://www.w3.org/TR/REC-xml/#charsets
|
||||
{
|
||||
return
|
||||
(
|
||||
character == 0x9 /* == '\t' == 9 */ ||
|
||||
character == 0xA /* == '\n' == 10 */ ||
|
||||
character == 0xD /* == '\r' == 13 */ ||
|
||||
(character >= 0x20 && character <= 0xD7FF) ||
|
||||
(character >= 0xE000 && character <= 0xFFFD) ||
|
||||
(character >= 0x10000 && character <= 0x10FFFF)
|
||||
);
|
||||
}
|
||||
default:
|
||||
{
|
||||
throw new ArgumentOutOfRangeException
|
||||
("xmlVersion", string.Format("'{0}' is not a valid XML version.", xmlVersion));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get whether an integer represents a legal XML 1.0 character. See the
|
||||
/// specification at w3.org for these characters.
|
||||
/// </summary>
|
||||
public static bool IsLegalXmlChar(int character)
|
||||
{
|
||||
return IsLegalXmlChar("1.0", character);
|
||||
}
|
||||
|
||||
public override int Read()
|
||||
{
|
||||
// Read each character, skipping over characters that XML has prohibited
|
||||
|
||||
int nextCharacter;
|
||||
|
||||
do
|
||||
{
|
||||
// Read a character
|
||||
|
||||
if ((nextCharacter = base.Read()) == Eof)
|
||||
{
|
||||
// If the character denotes the end of the file, stop reading
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Skip the character if it's prohibited, and try the next
|
||||
|
||||
while (!IsLegalXmlChar(nextCharacter));
|
||||
|
||||
return nextCharacter;
|
||||
}
|
||||
|
||||
public override int Peek()
|
||||
{
|
||||
// Return the next legal XML character without reading it
|
||||
|
||||
int nextCharacter;
|
||||
|
||||
do
|
||||
{
|
||||
// See what the next character is
|
||||
|
||||
nextCharacter = base.Peek();
|
||||
} while
|
||||
(
|
||||
// If it's prohibited XML, skip over the character in the stream
|
||||
// and try the next.
|
||||
!IsLegalXmlChar(nextCharacter) &&
|
||||
(nextCharacter = base.Read()) != Eof
|
||||
);
|
||||
|
||||
return nextCharacter;
|
||||
} // method
|
||||
|
||||
#region Read*() method overrides
|
||||
|
||||
// The following methods are exact copies of the methods in TextReader,
|
||||
// extracting by disassembling it in Refelctor
|
||||
|
||||
public override int Read(char[] buffer, int index, int count)
|
||||
{
|
||||
if (buffer == null)
|
||||
{
|
||||
throw new ArgumentNullException("buffer");
|
||||
}
|
||||
|
||||
if (index < 0)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("index");
|
||||
}
|
||||
|
||||
if (count < 0)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("count");
|
||||
}
|
||||
|
||||
if ((buffer.Length - index) < count)
|
||||
{
|
||||
throw new ArgumentException();
|
||||
}
|
||||
|
||||
var num = 0;
|
||||
do
|
||||
{
|
||||
var num2 = Read();
|
||||
if (num2 == -1)
|
||||
{
|
||||
return num;
|
||||
}
|
||||
|
||||
buffer[index + num++] = (char) num2;
|
||||
} while (num < count);
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
public override int ReadBlock(char[] buffer, int index, int count)
|
||||
{
|
||||
int num;
|
||||
var num2 = 0;
|
||||
do
|
||||
{
|
||||
num2 += num = Read(buffer, index + num2, count - num2);
|
||||
} while ((num > 0) && (num2 < count));
|
||||
|
||||
return num2;
|
||||
}
|
||||
|
||||
public override string ReadLine()
|
||||
{
|
||||
var builder = new StringBuilder();
|
||||
while (true)
|
||||
{
|
||||
var num = Read();
|
||||
switch (num)
|
||||
{
|
||||
case -1:
|
||||
if (builder.Length > 0)
|
||||
{
|
||||
return builder.ToString();
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
case 13:
|
||||
case 10:
|
||||
if ((num == 13) && (Peek() == 10))
|
||||
{
|
||||
Read();
|
||||
}
|
||||
|
||||
return builder.ToString();
|
||||
}
|
||||
|
||||
builder.Append((char) num);
|
||||
}
|
||||
}
|
||||
|
||||
public override string ReadToEnd()
|
||||
{
|
||||
int num;
|
||||
var buffer = new char[0x1000];
|
||||
var builder = new StringBuilder(0x1000);
|
||||
while ((num = Read(buffer, 0, buffer.Length)) != 0)
|
||||
{
|
||||
builder.Append(buffer, 0, num);
|
||||
}
|
||||
|
||||
return builder.ToString();
|
||||
}
|
||||
|
||||
#endregion
|
||||
} // class
|
||||
1
Common
1
Common
Submodule Common deleted from 686f33982d
Submodule Common.Wpf deleted from 8a82786166
476
FeedCenter.sln
476
FeedCenter.sln
@@ -16,14 +16,30 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution", "Solution", "{14
|
||||
README.md = README.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Native", "Common.Wpf\Common.Native\Common.Native.csproj", "{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Wpf", "Common.Wpf\Common.Wpf.csproj", "{0074C983-550E-4094-9E8C-F566FB669297}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common", "Common\Common.csproj", "{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NameBasedGrid", "..\..\Public\namebasedgrid\src\NameBasedGrid\NameBasedGrid.csproj", "{01D2D040-A2AF-42A1-9821-D1C6D77A3309}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Controls.Link", "..\Wpf.Controls.Link\Wpf.Controls.Link.csproj", "{D8A22337-E65C-4214-B2AC-EFD34350C0C5}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Windows.SnappingWindow", "..\Wpf.Windows.SnappingWindow\Wpf.Windows.SnappingWindow.csproj", "{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Windows.ControlBox", "..\Wpf.Windows.ControlBox\Wpf.Windows.ControlBox.csproj", "{4203D266-E323-4E49-B5FD-B60C19D17EEF}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Controls.Toolbar", "..\Wpf.Controls.Toolbar\Wpf.Controls.Toolbar.csproj", "{94D49D33-320E-4C9A-A93F-36813D6FB65F}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Controls.HtmlTextBlock", "..\Wpf.Controls.HtmlTextBlock\Wpf.Controls.HtmlTextBlock.csproj", "{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Validation", "..\Wpf.Validation\Wpf.Validation.csproj", "{7AA16534-92EC-4ABF-BFF0-1EC373C91035}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Application.StartWithWindows", "..\Wpf.Application.StartWithWindows\Wpf.Application.StartWithWindows.csproj", "{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Wpf.Application.SingleInstance", "..\Wpf.Application.SingleInstance\Wpf.Application.SingleInstance.csproj", "{7BF3C67C-239E-44D5-BA71-555A624550E8}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InstalledBrowsers", "..\InstalledBrowsers\InstalledBrowsers.csproj", "{C1A3C38D-C802-4E40-9079-4C857063A3CE}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GenericSettingsProvider", "..\GenericSettingsProvider\GenericSettingsProvider.csproj", "{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ApplicationUpdate", "..\ApplicationUpdate\ApplicationUpdate.csproj", "{9A49783E-FFFB-4629-A877-4A9D3B52323F}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug - With Setup|Any CPU = Debug - With Setup|Any CPU
|
||||
@@ -126,102 +142,6 @@ Global
|
||||
{5E5C13A5-635E-4310-A653-0F9760F46935}.Release|x64.ActiveCfg = Release|x86
|
||||
{5E5C13A5-635E-4310-A653-0F9760F46935}.Release|x86.ActiveCfg = Release|x86
|
||||
{5E5C13A5-635E-4310-A653-0F9760F46935}.Release|x86.Build.0 = Release|x86
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Debug - With Setup|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Debug - With Setup|Any CPU.Build.0 = Debug|Any CPU
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Debug - With Setup|Mixed Platforms.ActiveCfg = Debug|x86
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Debug - With Setup|Mixed Platforms.Build.0 = Debug|x86
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Debug - With Setup|x64.ActiveCfg = Debug|x64
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Debug - With Setup|x64.Build.0 = Debug|x64
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Debug - With Setup|x86.ActiveCfg = Debug|x86
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Debug - With Setup|x86.Build.0 = Debug|x86
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Debug|x64.Build.0 = Debug|x64
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Debug|x86.Build.0 = Debug|x86
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Release - With Setup|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Release - With Setup|Any CPU.Build.0 = Release|Any CPU
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Release - With Setup|Mixed Platforms.ActiveCfg = Release|x86
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Release - With Setup|Mixed Platforms.Build.0 = Release|x86
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Release - With Setup|x64.ActiveCfg = Release|x64
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Release - With Setup|x64.Build.0 = Release|x64
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Release - With Setup|x86.ActiveCfg = Release|x86
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Release - With Setup|x86.Build.0 = Release|x86
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Release|x64.ActiveCfg = Release|x64
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Release|x64.Build.0 = Release|x64
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Release|x86.ActiveCfg = Release|x86
|
||||
{ED1C07A1-54F5-4796-8B06-2A0BB1960D84}.Release|x86.Build.0 = Release|x86
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Debug - With Setup|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Debug - With Setup|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Debug - With Setup|Mixed Platforms.ActiveCfg = Debug|x86
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Debug - With Setup|Mixed Platforms.Build.0 = Debug|x86
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Debug - With Setup|x64.ActiveCfg = Debug|x64
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Debug - With Setup|x64.Build.0 = Debug|x64
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Debug - With Setup|x86.ActiveCfg = Debug|x86
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Debug - With Setup|x86.Build.0 = Debug|x86
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Debug|x64.Build.0 = Debug|x64
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Debug|x86.Build.0 = Debug|x86
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Release - With Setup|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Release - With Setup|Any CPU.Build.0 = Release|Any CPU
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Release - With Setup|Mixed Platforms.ActiveCfg = Release|x86
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Release - With Setup|Mixed Platforms.Build.0 = Release|x86
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Release - With Setup|x64.ActiveCfg = Release|x64
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Release - With Setup|x64.Build.0 = Release|x64
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Release - With Setup|x86.ActiveCfg = Release|x86
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Release - With Setup|x86.Build.0 = Release|x86
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Release|x64.ActiveCfg = Release|x64
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Release|x64.Build.0 = Release|x64
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Release|x86.ActiveCfg = Release|x86
|
||||
{0074C983-550E-4094-9E8C-F566FB669297}.Release|x86.Build.0 = Release|x86
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug - With Setup|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug - With Setup|Any CPU.Build.0 = Debug|Any CPU
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug - With Setup|Mixed Platforms.ActiveCfg = Debug|x86
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug - With Setup|Mixed Platforms.Build.0 = Debug|x86
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug - With Setup|x64.ActiveCfg = Debug|x64
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug - With Setup|x64.Build.0 = Debug|x64
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug - With Setup|x86.ActiveCfg = Debug|x86
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug - With Setup|x86.Build.0 = Debug|x86
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug|x64.Build.0 = Debug|x64
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug|x86.Build.0 = Debug|x86
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release - With Setup|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release - With Setup|Any CPU.Build.0 = Release|Any CPU
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release - With Setup|Mixed Platforms.ActiveCfg = Release|x86
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release - With Setup|Mixed Platforms.Build.0 = Release|x86
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release - With Setup|x64.ActiveCfg = Release|x64
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release - With Setup|x64.Build.0 = Release|x64
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release - With Setup|x86.ActiveCfg = Release|x86
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release - With Setup|x86.Build.0 = Release|x86
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release|x64.ActiveCfg = Release|x64
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release|x64.Build.0 = Release|x64
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release|x86.ActiveCfg = Release|x86
|
||||
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release|x86.Build.0 = Release|x86
|
||||
{01D2D040-A2AF-42A1-9821-D1C6D77A3309}.Debug - With Setup|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{01D2D040-A2AF-42A1-9821-D1C6D77A3309}.Debug - With Setup|Any CPU.Build.0 = Debug|Any CPU
|
||||
{01D2D040-A2AF-42A1-9821-D1C6D77A3309}.Debug - With Setup|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
@@ -254,6 +174,358 @@ Global
|
||||
{01D2D040-A2AF-42A1-9821-D1C6D77A3309}.Release|x64.Build.0 = Release|Any CPU
|
||||
{01D2D040-A2AF-42A1-9821-D1C6D77A3309}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{01D2D040-A2AF-42A1-9821-D1C6D77A3309}.Release|x86.Build.0 = Release|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Debug - With Setup|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Debug - With Setup|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Debug - With Setup|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Debug - With Setup|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Debug - With Setup|x64.ActiveCfg = Debug|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Debug - With Setup|x64.Build.0 = Debug|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Debug - With Setup|x86.ActiveCfg = Debug|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Debug - With Setup|x86.Build.0 = Debug|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Release - With Setup|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Release - With Setup|Any CPU.Build.0 = Release|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Release - With Setup|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Release - With Setup|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Release - With Setup|x64.ActiveCfg = Release|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Release - With Setup|x64.Build.0 = Release|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Release - With Setup|x86.ActiveCfg = Release|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Release - With Setup|x86.Build.0 = Release|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Release|x64.Build.0 = Release|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{D8A22337-E65C-4214-B2AC-EFD34350C0C5}.Release|x86.Build.0 = Release|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Debug - With Setup|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Debug - With Setup|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Debug - With Setup|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Debug - With Setup|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Debug - With Setup|x64.ActiveCfg = Debug|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Debug - With Setup|x64.Build.0 = Debug|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Debug - With Setup|x86.ActiveCfg = Debug|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Debug - With Setup|x86.Build.0 = Debug|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Release - With Setup|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Release - With Setup|Any CPU.Build.0 = Release|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Release - With Setup|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Release - With Setup|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Release - With Setup|x64.ActiveCfg = Release|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Release - With Setup|x64.Build.0 = Release|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Release - With Setup|x86.ActiveCfg = Release|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Release - With Setup|x86.Build.0 = Release|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Release|x64.Build.0 = Release|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{3DF3BBDC-F378-48FC-B5D3-6136AD1D1E5D}.Release|x86.Build.0 = Release|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Debug - With Setup|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Debug - With Setup|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Debug - With Setup|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Debug - With Setup|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Debug - With Setup|x64.ActiveCfg = Debug|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Debug - With Setup|x64.Build.0 = Debug|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Debug - With Setup|x86.ActiveCfg = Debug|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Debug - With Setup|x86.Build.0 = Debug|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Release - With Setup|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Release - With Setup|Any CPU.Build.0 = Release|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Release - With Setup|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Release - With Setup|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Release - With Setup|x64.ActiveCfg = Release|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Release - With Setup|x64.Build.0 = Release|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Release - With Setup|x86.ActiveCfg = Release|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Release - With Setup|x86.Build.0 = Release|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Release|x64.Build.0 = Release|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{4203D266-E323-4E49-B5FD-B60C19D17EEF}.Release|x86.Build.0 = Release|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Debug - With Setup|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Debug - With Setup|Any CPU.Build.0 = Debug|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Debug - With Setup|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Debug - With Setup|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Debug - With Setup|x64.ActiveCfg = Debug|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Debug - With Setup|x64.Build.0 = Debug|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Debug - With Setup|x86.ActiveCfg = Debug|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Debug - With Setup|x86.Build.0 = Debug|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Release - With Setup|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Release - With Setup|Any CPU.Build.0 = Release|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Release - With Setup|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Release - With Setup|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Release - With Setup|x64.ActiveCfg = Release|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Release - With Setup|x64.Build.0 = Release|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Release - With Setup|x86.ActiveCfg = Release|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Release - With Setup|x86.Build.0 = Release|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Release|x64.Build.0 = Release|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{94D49D33-320E-4C9A-A93F-36813D6FB65F}.Release|x86.Build.0 = Release|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Debug - With Setup|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Debug - With Setup|Any CPU.Build.0 = Debug|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Debug - With Setup|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Debug - With Setup|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Debug - With Setup|x64.ActiveCfg = Debug|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Debug - With Setup|x64.Build.0 = Debug|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Debug - With Setup|x86.ActiveCfg = Debug|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Debug - With Setup|x86.Build.0 = Debug|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Release - With Setup|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Release - With Setup|Any CPU.Build.0 = Release|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Release - With Setup|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Release - With Setup|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Release - With Setup|x64.ActiveCfg = Release|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Release - With Setup|x64.Build.0 = Release|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Release - With Setup|x86.ActiveCfg = Release|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Release - With Setup|x86.Build.0 = Release|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Release|x64.Build.0 = Release|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{ED2A50A7-33D6-4327-8775-F8F9EBF369EE}.Release|x86.Build.0 = Release|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Debug - With Setup|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Debug - With Setup|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Debug - With Setup|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Debug - With Setup|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Debug - With Setup|x64.ActiveCfg = Debug|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Debug - With Setup|x64.Build.0 = Debug|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Debug - With Setup|x86.ActiveCfg = Debug|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Debug - With Setup|x86.Build.0 = Debug|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Release - With Setup|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Release - With Setup|Any CPU.Build.0 = Release|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Release - With Setup|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Release - With Setup|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Release - With Setup|x64.ActiveCfg = Release|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Release - With Setup|x64.Build.0 = Release|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Release - With Setup|x86.ActiveCfg = Release|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Release - With Setup|x86.Build.0 = Release|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Release|x64.Build.0 = Release|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{7AA16534-92EC-4ABF-BFF0-1EC373C91035}.Release|x86.Build.0 = Release|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Debug - With Setup|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Debug - With Setup|Any CPU.Build.0 = Debug|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Debug - With Setup|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Debug - With Setup|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Debug - With Setup|x64.ActiveCfg = Debug|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Debug - With Setup|x64.Build.0 = Debug|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Debug - With Setup|x86.ActiveCfg = Debug|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Debug - With Setup|x86.Build.0 = Debug|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Release - With Setup|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Release - With Setup|Any CPU.Build.0 = Release|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Release - With Setup|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Release - With Setup|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Release - With Setup|x64.ActiveCfg = Release|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Release - With Setup|x64.Build.0 = Release|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Release - With Setup|x86.ActiveCfg = Release|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Release - With Setup|x86.Build.0 = Release|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Release|x64.Build.0 = Release|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{29B9EDF3-9D68-417E-9D85-D5E88E0975F1}.Release|x86.Build.0 = Release|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Debug - With Setup|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Debug - With Setup|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Debug - With Setup|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Debug - With Setup|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Debug - With Setup|x64.ActiveCfg = Debug|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Debug - With Setup|x64.Build.0 = Debug|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Debug - With Setup|x86.ActiveCfg = Debug|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Debug - With Setup|x86.Build.0 = Debug|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Release - With Setup|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Release - With Setup|Any CPU.Build.0 = Release|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Release - With Setup|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Release - With Setup|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Release - With Setup|x64.ActiveCfg = Release|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Release - With Setup|x64.Build.0 = Release|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Release - With Setup|x86.ActiveCfg = Release|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Release - With Setup|x86.Build.0 = Release|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Release|x64.Build.0 = Release|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{7BF3C67C-239E-44D5-BA71-555A624550E8}.Release|x86.Build.0 = Release|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Debug - With Setup|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Debug - With Setup|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Debug - With Setup|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Debug - With Setup|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Debug - With Setup|x64.ActiveCfg = Debug|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Debug - With Setup|x64.Build.0 = Debug|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Debug - With Setup|x86.ActiveCfg = Debug|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Debug - With Setup|x86.Build.0 = Debug|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Release - With Setup|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Release - With Setup|Any CPU.Build.0 = Release|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Release - With Setup|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Release - With Setup|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Release - With Setup|x64.ActiveCfg = Release|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Release - With Setup|x64.Build.0 = Release|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Release - With Setup|x86.ActiveCfg = Release|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Release - With Setup|x86.Build.0 = Release|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Release|x64.Build.0 = Release|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{C1A3C38D-C802-4E40-9079-4C857063A3CE}.Release|x86.Build.0 = Release|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Debug - With Setup|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Debug - With Setup|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Debug - With Setup|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Debug - With Setup|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Debug - With Setup|x64.ActiveCfg = Debug|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Debug - With Setup|x64.Build.0 = Debug|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Debug - With Setup|x86.ActiveCfg = Debug|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Debug - With Setup|x86.Build.0 = Debug|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Release - With Setup|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Release - With Setup|Any CPU.Build.0 = Release|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Release - With Setup|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Release - With Setup|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Release - With Setup|x64.ActiveCfg = Release|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Release - With Setup|x64.Build.0 = Release|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Release - With Setup|x86.ActiveCfg = Release|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Release - With Setup|x86.Build.0 = Release|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Release|x64.Build.0 = Release|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{1DAD6B26-8993-4C3F-8B75-B9A9D67A2CE0}.Release|x86.Build.0 = Release|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Debug - With Setup|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Debug - With Setup|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Debug - With Setup|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Debug - With Setup|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Debug - With Setup|x64.ActiveCfg = Debug|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Debug - With Setup|x64.Build.0 = Debug|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Debug - With Setup|x86.ActiveCfg = Debug|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Debug - With Setup|x86.Build.0 = Debug|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Release - With Setup|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Release - With Setup|Any CPU.Build.0 = Release|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Release - With Setup|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Release - With Setup|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Release - With Setup|x64.ActiveCfg = Release|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Release - With Setup|x64.Build.0 = Release|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Release - With Setup|x86.ActiveCfg = Release|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Release - With Setup|x86.Build.0 = Release|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Release|x64.Build.0 = Release|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{9A49783E-FFFB-4629-A877-4A9D3B52323F}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@@ -51,30 +51,6 @@
|
||||
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
|
||||
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Common.Wpf\Common.Native\Common.Native.csproj">
|
||||
<Name>Common.Native</Name>
|
||||
<Project>{ed1c07a1-54f5-4796-8b06-2a0bb1960d84}</Project>
|
||||
<Private>True</Private>
|
||||
<DoNotHarvest>True</DoNotHarvest>
|
||||
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
|
||||
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Common.Wpf\Common.Wpf.csproj">
|
||||
<Name>Common.Wpf</Name>
|
||||
<Project>{0074c983-550e-4094-9e8c-f566fb669297}</Project>
|
||||
<Private>True</Private>
|
||||
<DoNotHarvest>True</DoNotHarvest>
|
||||
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
|
||||
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Common\Common.csproj">
|
||||
<Name>Common</Name>
|
||||
<Project>{17864d82-457d-4a0a-bc10-1d07f2b3a5d6}</Project>
|
||||
<Private>True</Private>
|
||||
<DoNotHarvest>True</DoNotHarvest>
|
||||
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
|
||||
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="packages.config" />
|
||||
|
||||
Reference in New Issue
Block a user