Init Commit
This commit is contained in:
4
.gitmodules
vendored
Normal file
4
.gitmodules
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[submodule "submodules/OPMLCore.NET"]
|
||||||
|
path = submodules/OPMLCore.NET
|
||||||
|
url = https://github.com/fnya/OPMLCore.NET
|
||||||
|
branch = master
|
||||||
364
src/.gitignore
vendored
Normal file
364
src/.gitignore
vendored
Normal file
@@ -0,0 +1,364 @@
|
|||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
##
|
||||||
|
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.rsuser
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.userosscache
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
|
*.userprefs
|
||||||
|
|
||||||
|
# Mono auto generated files
|
||||||
|
mono_crash.*
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
[Dd]ebug/
|
||||||
|
[Dd]ebugPublic/
|
||||||
|
[Rr]elease/
|
||||||
|
[Rr]eleases/
|
||||||
|
x64/
|
||||||
|
x86/
|
||||||
|
[Ww][Ii][Nn]32/
|
||||||
|
[Aa][Rr][Mm]/
|
||||||
|
[Aa][Rr][Mm]64/
|
||||||
|
bld/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
[Ll]og/
|
||||||
|
[Ll]ogs/
|
||||||
|
|
||||||
|
# Visual Studio 2015/2017 cache/options directory
|
||||||
|
.vs/
|
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
|
#wwwroot/
|
||||||
|
|
||||||
|
# Visual Studio 2017 auto generated files
|
||||||
|
Generated\ Files/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
# NUnit
|
||||||
|
*.VisualState.xml
|
||||||
|
TestResult.xml
|
||||||
|
nunit-*.xml
|
||||||
|
|
||||||
|
# Build Results of an ATL Project
|
||||||
|
[Dd]ebugPS/
|
||||||
|
[Rr]eleasePS/
|
||||||
|
dlldata.c
|
||||||
|
|
||||||
|
# Benchmark Results
|
||||||
|
BenchmarkDotNet.Artifacts/
|
||||||
|
|
||||||
|
# .NET Core
|
||||||
|
project.lock.json
|
||||||
|
project.fragment.lock.json
|
||||||
|
artifacts/
|
||||||
|
|
||||||
|
# ASP.NET Scaffolding
|
||||||
|
ScaffoldingReadMe.txt
|
||||||
|
|
||||||
|
# StyleCop
|
||||||
|
StyleCopReport.xml
|
||||||
|
|
||||||
|
# Files built by Visual Studio
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*_h.h
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.iobj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.ipdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*_wpftmp.csproj
|
||||||
|
*.log
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.svclog
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Chutzpah Test files
|
||||||
|
_Chutzpah*
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opendb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
*.VC.db
|
||||||
|
*.VC.VC.opendb
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
*.sap
|
||||||
|
|
||||||
|
# Visual Studio Trace Files
|
||||||
|
*.e2e
|
||||||
|
|
||||||
|
# TFS 2012 Local Workspace
|
||||||
|
$tf/
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
*.DotSettings.user
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity*
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
*.dotCover
|
||||||
|
|
||||||
|
# AxoCover is a Code Coverage Tool
|
||||||
|
.axoCover/*
|
||||||
|
!.axoCover/settings.json
|
||||||
|
|
||||||
|
# Coverlet is a free, cross platform Code Coverage Tool
|
||||||
|
coverage*.json
|
||||||
|
coverage*.xml
|
||||||
|
coverage*.info
|
||||||
|
|
||||||
|
# Visual Studio code coverage results
|
||||||
|
*.coverage
|
||||||
|
*.coveragexml
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
_NCrunch_*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
nCrunchTemp_*
|
||||||
|
|
||||||
|
# MightyMoose
|
||||||
|
*.mm.*
|
||||||
|
AutoTest.Net/
|
||||||
|
|
||||||
|
# Web workbench (sass)
|
||||||
|
.sass-cache/
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
[Ee]xpress/
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
DocProject/buildhelp/
|
||||||
|
DocProject/Help/*.HxT
|
||||||
|
DocProject/Help/*.HxC
|
||||||
|
DocProject/Help/*.hhc
|
||||||
|
DocProject/Help/*.hhk
|
||||||
|
DocProject/Help/*.hhp
|
||||||
|
DocProject/Help/Html2
|
||||||
|
DocProject/Help/html
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
publish/
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
*.[Pp]ublish.xml
|
||||||
|
*.azurePubxml
|
||||||
|
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||||
|
# but database connection strings (with potential passwords) will be unencrypted
|
||||||
|
*.pubxml
|
||||||
|
*.publishproj
|
||||||
|
|
||||||
|
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||||
|
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||||
|
# in these scripts will be unencrypted
|
||||||
|
PublishScripts/
|
||||||
|
|
||||||
|
# NuGet Packages
|
||||||
|
*.nupkg
|
||||||
|
# NuGet Symbol Packages
|
||||||
|
*.snupkg
|
||||||
|
# The packages folder can be ignored because of Package Restore
|
||||||
|
**/[Pp]ackages/*
|
||||||
|
# except build/, which is used as an MSBuild target.
|
||||||
|
!**/[Pp]ackages/build/
|
||||||
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
|
#!**/[Pp]ackages/repositories.config
|
||||||
|
# NuGet v3's project.json files produces more ignorable files
|
||||||
|
*.nuget.props
|
||||||
|
*.nuget.targets
|
||||||
|
|
||||||
|
# Microsoft Azure Build Output
|
||||||
|
csx/
|
||||||
|
*.build.csdef
|
||||||
|
|
||||||
|
# Microsoft Azure Emulator
|
||||||
|
ecf/
|
||||||
|
rcf/
|
||||||
|
|
||||||
|
# Windows Store app package directories and files
|
||||||
|
AppPackages/
|
||||||
|
BundleArtifacts/
|
||||||
|
Package.StoreAssociation.xml
|
||||||
|
_pkginfo.txt
|
||||||
|
*.appx
|
||||||
|
*.appxbundle
|
||||||
|
*.appxupload
|
||||||
|
|
||||||
|
# Visual Studio cache files
|
||||||
|
# files ending in .cache can be ignored
|
||||||
|
*.[Cc]ache
|
||||||
|
# but keep track of directories ending in .cache
|
||||||
|
!?*.[Cc]ache/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
ClientBin/
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.dbproj.schemaview
|
||||||
|
*.jfm
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
orleans.codegen.cs
|
||||||
|
|
||||||
|
# Including strong name files can present a security risk
|
||||||
|
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||||
|
#*.snk
|
||||||
|
|
||||||
|
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||||
|
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||||
|
#bower_components/
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
Generated_Code/
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file
|
||||||
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
|
# because we have git ;-)
|
||||||
|
_UpgradeReport_Files/
|
||||||
|
Backup*/
|
||||||
|
UpgradeLog*.XML
|
||||||
|
UpgradeLog*.htm
|
||||||
|
ServiceFabricBackup/
|
||||||
|
*.rptproj.bak
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
*.mdf
|
||||||
|
*.ldf
|
||||||
|
*.ndf
|
||||||
|
|
||||||
|
# Business Intelligence projects
|
||||||
|
*.rdl.data
|
||||||
|
*.bim.layout
|
||||||
|
*.bim_*.settings
|
||||||
|
*.rptproj.rsuser
|
||||||
|
*- [Bb]ackup.rdl
|
||||||
|
*- [Bb]ackup ([0-9]).rdl
|
||||||
|
*- [Bb]ackup ([0-9][0-9]).rdl
|
||||||
|
|
||||||
|
# Microsoft Fakes
|
||||||
|
FakesAssemblies/
|
||||||
|
|
||||||
|
# GhostDoc plugin setting file
|
||||||
|
*.GhostDoc.xml
|
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio
|
||||||
|
.ntvs_analysis.dat
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# Visual Studio 6 build log
|
||||||
|
*.plg
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file
|
||||||
|
*.opt
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||||
|
*.vbw
|
||||||
|
|
||||||
|
# Visual Studio LightSwitch build output
|
||||||
|
**/*.HTMLClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/ModelManifest.xml
|
||||||
|
**/*.Server/GeneratedArtifacts
|
||||||
|
**/*.Server/ModelManifest.xml
|
||||||
|
_Pvt_Extensions
|
||||||
|
|
||||||
|
# Paket dependency manager
|
||||||
|
.paket/paket.exe
|
||||||
|
paket-files/
|
||||||
|
|
||||||
|
# FAKE - F# Make
|
||||||
|
.fake/
|
||||||
|
|
||||||
|
# CodeRush personal settings
|
||||||
|
.cr/personal
|
||||||
|
|
||||||
|
# Python Tools for Visual Studio (PTVS)
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
|
||||||
|
# Cake - Uncomment if you are using it
|
||||||
|
# tools/**
|
||||||
|
# !tools/packages.config
|
||||||
|
|
||||||
|
# Tabs Studio
|
||||||
|
*.tss
|
||||||
|
|
||||||
|
# Telerik's JustMock configuration file
|
||||||
|
*.jmconfig
|
||||||
|
|
||||||
|
# BizTalk build output
|
||||||
|
*.btp.cs
|
||||||
|
*.btm.cs
|
||||||
|
*.odx.cs
|
||||||
|
*.xsd.cs
|
||||||
|
|
||||||
|
# OpenCover UI analysis results
|
||||||
|
OpenCover/
|
||||||
|
|
||||||
|
# Azure Stream Analytics local run output
|
||||||
|
ASALocalRun/
|
||||||
|
|
||||||
|
# MSBuild Binary and Structured Log
|
||||||
|
*.binlog
|
||||||
|
|
||||||
|
# NVidia Nsight GPU debugger configuration file
|
||||||
|
*.nvuser
|
||||||
|
|
||||||
|
# MFractors (Xamarin productivity tool) working folder
|
||||||
|
.mfractor/
|
||||||
|
|
||||||
|
# Local History for Visual Studio
|
||||||
|
.localhistory/
|
||||||
|
|
||||||
|
# BeatPulse healthcheck temp database
|
||||||
|
healthchecksdb
|
||||||
|
|
||||||
|
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||||
|
MigrationBackup/
|
||||||
|
|
||||||
|
# Ionide (cross platform F# VS Code tools) working folder
|
||||||
|
.ionide/
|
||||||
|
|
||||||
|
# Fody - auto-generated XML schema
|
||||||
|
FodyWeavers.xsd
|
||||||
|
|
||||||
|
[Ss]ubmodules/*
|
||||||
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
4
src/.gitmodules
vendored
Normal file
4
src/.gitmodules
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[submodule "submodules/OPMLCore.NET"]
|
||||||
|
path = submodules/OPMLCore.NET
|
||||||
|
url = https://github.com/fnya/OPMLCore.NET
|
||||||
|
branch = master
|
||||||
14
src/App.config
Normal file
14
src/App.config
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
||||||
|
</startup>
|
||||||
|
<runtime>
|
||||||
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
</assemblyBinding>
|
||||||
|
</runtime>
|
||||||
|
</configuration>
|
||||||
26
src/AppProps.cs
Normal file
26
src/AppProps.cs
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
using Cordial.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace Cordial
|
||||||
|
{
|
||||||
|
public class AppProps
|
||||||
|
{
|
||||||
|
public static string AppName = "Cordial";
|
||||||
|
public static string CreatorName = "exsersewo";
|
||||||
|
public static string AppFullName = Path.Combine(CreatorName, AppName).Replace("\\", "/");
|
||||||
|
public static readonly string BaseDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), AppFullName);
|
||||||
|
public static readonly string LogDirectory = Path.Combine(BaseDirectory, "logs");
|
||||||
|
public static readonly string ConfigurationDirectory = Path.Combine(BaseDirectory, "config");
|
||||||
|
public static readonly string DefaultPodcastDownloadDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyMusic), "Podcasts");
|
||||||
|
public static readonly string RepoUrl = Path.Combine("https://github.com", AppFullName);
|
||||||
|
public static string[] Contributors = new[] { CreatorName };
|
||||||
|
public static List<GithubStruct> OpenSourceProjects = new List<GithubStruct>
|
||||||
|
{
|
||||||
|
new GithubStruct("fnya", "https://github.com/fnya/OPMLCore.NET"),
|
||||||
|
new GithubStruct("Argotic team", "https://github.com/argotic-syndication-framework/Argotic"),
|
||||||
|
new GithubStruct("GitHub", "https://github.com/octokit/octokit.net")
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
224
src/Cordial.csproj
Normal file
224
src/Cordial.csproj
Normal file
@@ -0,0 +1,224 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{7385FD85-EE39-4DB2-9853-7AD2736FAB18}</ProjectGuid>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<RootNamespace>Cordial</RootNamespace>
|
||||||
|
<AssemblyName>Cordial</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
|
<Deterministic>true</Deterministic>
|
||||||
|
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||||
|
<PublishUrl>publish\</PublishUrl>
|
||||||
|
<Install>true</Install>
|
||||||
|
<InstallFrom>Disk</InstallFrom>
|
||||||
|
<UpdateEnabled>false</UpdateEnabled>
|
||||||
|
<UpdateMode>Foreground</UpdateMode>
|
||||||
|
<UpdateInterval>7</UpdateInterval>
|
||||||
|
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||||
|
<UpdatePeriodically>false</UpdatePeriodically>
|
||||||
|
<UpdateRequired>false</UpdateRequired>
|
||||||
|
<MapFileExtensions>true</MapFileExtensions>
|
||||||
|
<ApplicationRevision>0</ApplicationRevision>
|
||||||
|
<ApplicationVersion>0.1.0.%2a</ApplicationVersion>
|
||||||
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'PreRelease|AnyCPU'">
|
||||||
|
<OutputPath>bin\PreRelease\</OutputPath>
|
||||||
|
<DefineConstants>TRACE;PRERELEASE</DefineConstants>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<LangVersion>7.3</LangVersion>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<Prefer32Bit>true</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'PreRelease Debug|AnyCPU'">
|
||||||
|
<OutputPath>bin\PreRelease Debug\</OutputPath>
|
||||||
|
<DefineConstants>TRACE;PRERELEASE; DEBUG</DefineConstants>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<LangVersion>7.3</LangVersion>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<StartupObject>Cordial.Program</StartupObject>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="Argotic.Common, Version=2008.0.2.0, Culture=neutral, PublicKeyToken=84b2ce808fb02469, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\Argotic.Common.2008.0.2.0\lib\Net35\Argotic.Common.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Argotic.Core, Version=2008.0.2.0, Culture=neutral, PublicKeyToken=84b2ce808fb02469, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\Argotic.Core.2008.0.2.0\lib\Net35\Argotic.Core.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Argotic.Extensions, Version=2008.0.2.0, Culture=neutral, PublicKeyToken=84b2ce808fb02469, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\Argotic.Extensions.2008.0.2.0\lib\Net35\Argotic.Extensions.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Argotic.Web, Version=2008.0.2.0, Culture=neutral, PublicKeyToken=84b2ce808fb02469, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\Argotic.Web.2008.0.2.0\lib\Net35\Argotic.Web.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Octokit, Version=0.48.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\Octokit.0.48.0\lib\net46\Octokit.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Numerics" />
|
||||||
|
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Text.Encodings.Web, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Text.Encodings.Web.5.0.0\lib\net461\System.Text.Encodings.Web.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Text.Json, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Text.Json.5.0.0\lib\net461\System.Text.Json.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Deployment" />
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Windows.Forms" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="AppProps.cs" />
|
||||||
|
<Compile Include="External\MessageBoxManager.cs" />
|
||||||
|
<Compile Include="Form1.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Form1.Designer.cs">
|
||||||
|
<DependentUpon>Form1.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Log.cs" />
|
||||||
|
<Compile Include="Models\Configuration.cs" />
|
||||||
|
<Compile Include="Models\GithubStruct.cs" />
|
||||||
|
<Compile Include="Models\Podcast.cs" />
|
||||||
|
<Compile Include="Models\PodcastStatus.cs" />
|
||||||
|
<Compile Include="Models\RSSFeed.cs" />
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="Resources\Languages\en-gb.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<DependentUpon>en-gb.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Resources\Languages\nl-nl.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<DependentUpon>nl-nl.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="LocaleManager.cs">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
</Compile>
|
||||||
|
<EmbeddedResource Include="Form1.resx">
|
||||||
|
<DependentUpon>Form1.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<EmbeddedResource Include="Resources\Languages\en-gb.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>en-gb.Designer.cs</LastGenOutput>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Resources\Languages\nl-nl.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>nl-nl.Designer.cs</LastGenOutput>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
<None Include="Properties\DataSources\Podcast.datasource" />
|
||||||
|
<None Include="Properties\Settings.settings">
|
||||||
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||||
|
</None>
|
||||||
|
<Compile Include="Properties\Settings.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Settings.settings</DependentUpon>
|
||||||
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="App.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="submodules\OPMLCore.NET\src\OPMLCore.NET\OPMLCore.NET.csproj">
|
||||||
|
<Project>{e015f989-878b-4ff6-a9d2-724abbe9a959}</Project>
|
||||||
|
<Name>OPMLCore.NET</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="Resources\Icon\" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 and x64%29</ProductName>
|
||||||
|
<Install>true</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||||
|
<Install>false</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<PostBuildEvent>XCOPY "$(SolutionDir)\Resources" "$(TargetDir)\Resources\" /S /Y
|
||||||
|
RD /S /Q "$(TargetDir)\Resources\Icon"
|
||||||
|
DEL "$(TargetDir)\Resources\Languages\*.cs"</PostBuildEvent>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<PreBuildEvent>RD /S /Q "$(TargetDir)\Resources\"</PreBuildEvent>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
||||||
41
src/Cordial.sln
Normal file
41
src/Cordial.sln
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 16
|
||||||
|
VisualStudioVersion = 16.0.30615.102
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cordial", "Cordial.csproj", "{7385FD85-EE39-4DB2-9853-7AD2736FAB18}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OPMLCore.NET", "submodules\OPMLCore.NET\src\OPMLCore.NET\OPMLCore.NET.csproj", "{E015F989-878B-4FF6-A9D2-724ABBE9A959}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
PreRelease Debug|Any CPU = PreRelease Debug|Any CPU
|
||||||
|
PreRelease|Any CPU = PreRelease|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{7385FD85-EE39-4DB2-9853-7AD2736FAB18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{7385FD85-EE39-4DB2-9853-7AD2736FAB18}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{7385FD85-EE39-4DB2-9853-7AD2736FAB18}.PreRelease Debug|Any CPU.ActiveCfg = PreRelease Debug|Any CPU
|
||||||
|
{7385FD85-EE39-4DB2-9853-7AD2736FAB18}.PreRelease Debug|Any CPU.Build.0 = PreRelease Debug|Any CPU
|
||||||
|
{7385FD85-EE39-4DB2-9853-7AD2736FAB18}.PreRelease|Any CPU.ActiveCfg = PreRelease|Any CPU
|
||||||
|
{7385FD85-EE39-4DB2-9853-7AD2736FAB18}.PreRelease|Any CPU.Build.0 = PreRelease|Any CPU
|
||||||
|
{7385FD85-EE39-4DB2-9853-7AD2736FAB18}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{7385FD85-EE39-4DB2-9853-7AD2736FAB18}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{E015F989-878B-4FF6-A9D2-724ABBE9A959}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{E015F989-878B-4FF6-A9D2-724ABBE9A959}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{E015F989-878B-4FF6-A9D2-724ABBE9A959}.PreRelease Debug|Any CPU.ActiveCfg = PreRelease Debug|Any CPU
|
||||||
|
{E015F989-878B-4FF6-A9D2-724ABBE9A959}.PreRelease Debug|Any CPU.Build.0 = PreRelease Debug|Any CPU
|
||||||
|
{E015F989-878B-4FF6-A9D2-724ABBE9A959}.PreRelease|Any CPU.ActiveCfg = PreRelease|Any CPU
|
||||||
|
{E015F989-878B-4FF6-A9D2-724ABBE9A959}.PreRelease|Any CPU.Build.0 = PreRelease|Any CPU
|
||||||
|
{E015F989-878B-4FF6-A9D2-724ABBE9A959}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{E015F989-878B-4FF6-A9D2-724ABBE9A959}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {037502FE-ECE8-4F20-9416-31EB1732ADDC}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
225
src/External/MessageBoxManager.cs
vendored
Normal file
225
src/External/MessageBoxManager.cs
vendored
Normal file
@@ -0,0 +1,225 @@
|
|||||||
|
/*
|
||||||
|
* @Author Alex C. Duma
|
||||||
|
* @Url https://www.codeproject.com/Articles/18399/Localizing-System-MessageBox
|
||||||
|
* @Date 2 May 2007
|
||||||
|
* @License CPOL 1.02 https://www.codeproject.com/info/cpol10.aspx
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma warning disable 0618
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Security.Permissions;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
[assembly: SecurityPermission(SecurityAction.RequestMinimum, UnmanagedCode = true)]
|
||||||
|
namespace System.Windows.Forms
|
||||||
|
{
|
||||||
|
public class MessageBoxManager
|
||||||
|
{
|
||||||
|
private delegate IntPtr HookProc(int nCode, IntPtr wParam, IntPtr lParam);
|
||||||
|
private delegate bool EnumChildProc(IntPtr hWnd, IntPtr lParam);
|
||||||
|
|
||||||
|
private const int WH_CALLWNDPROCRET = 12;
|
||||||
|
private const int WM_DESTROY = 0x0002;
|
||||||
|
private const int WM_INITDIALOG = 0x0110;
|
||||||
|
private const int WM_TIMER = 0x0113;
|
||||||
|
private const int WM_USER = 0x400;
|
||||||
|
private const int DM_GETDEFID = WM_USER + 0;
|
||||||
|
|
||||||
|
private const int MBOK = 1;
|
||||||
|
private const int MBCancel = 2;
|
||||||
|
private const int MBAbort = 3;
|
||||||
|
private const int MBRetry = 4;
|
||||||
|
private const int MBIgnore = 5;
|
||||||
|
private const int MBYes = 6;
|
||||||
|
private const int MBNo = 7;
|
||||||
|
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
private static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
private static extern int UnhookWindowsHookEx(IntPtr idHook);
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
private static extern IntPtr CallNextHookEx(IntPtr idHook, int nCode, IntPtr wParam, IntPtr lParam);
|
||||||
|
|
||||||
|
[DllImport("user32.dll", EntryPoint = "GetWindowTextLengthW", CharSet = CharSet.Unicode)]
|
||||||
|
private static extern int GetWindowTextLength(IntPtr hWnd);
|
||||||
|
|
||||||
|
[DllImport("user32.dll", EntryPoint = "GetWindowTextW", CharSet = CharSet.Unicode)]
|
||||||
|
private static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int maxLength);
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
private static extern int EndDialog(IntPtr hDlg, IntPtr nResult);
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
private static extern bool EnumChildWindows(IntPtr hWndParent, EnumChildProc lpEnumFunc, IntPtr lParam);
|
||||||
|
|
||||||
|
[DllImport("user32.dll", EntryPoint = "GetClassNameW", CharSet = CharSet.Unicode)]
|
||||||
|
private static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
private static extern int GetDlgCtrlID(IntPtr hwndCtl);
|
||||||
|
|
||||||
|
[DllImport("user32.dll")]
|
||||||
|
private static extern IntPtr GetDlgItem(IntPtr hDlg, int nIDDlgItem);
|
||||||
|
|
||||||
|
[DllImport("user32.dll", EntryPoint = "SetWindowTextW", CharSet = CharSet.Unicode)]
|
||||||
|
private static extern bool SetWindowText(IntPtr hWnd, string lpString);
|
||||||
|
|
||||||
|
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public struct CWPRETSTRUCT
|
||||||
|
{
|
||||||
|
public IntPtr lResult;
|
||||||
|
public IntPtr lParam;
|
||||||
|
public IntPtr wParam;
|
||||||
|
public uint message;
|
||||||
|
public IntPtr hwnd;
|
||||||
|
};
|
||||||
|
|
||||||
|
private static HookProc hookProc;
|
||||||
|
private static EnumChildProc enumProc;
|
||||||
|
[ThreadStatic]
|
||||||
|
private static IntPtr hHook;
|
||||||
|
[ThreadStatic]
|
||||||
|
private static int nButton;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// OK text
|
||||||
|
/// </summary>
|
||||||
|
public static string OK = "&OK";
|
||||||
|
/// <summary>
|
||||||
|
/// Cancel text
|
||||||
|
/// </summary>
|
||||||
|
public static string Cancel = "&Cancel";
|
||||||
|
/// <summary>
|
||||||
|
/// Abort text
|
||||||
|
/// </summary>
|
||||||
|
public static string Abort = "&Abort";
|
||||||
|
/// <summary>
|
||||||
|
/// Retry text
|
||||||
|
/// </summary>
|
||||||
|
public static string Retry = "&Retry";
|
||||||
|
/// <summary>
|
||||||
|
/// Ignore text
|
||||||
|
/// </summary>
|
||||||
|
public static string Ignore = "&Ignore";
|
||||||
|
/// <summary>
|
||||||
|
/// Yes text
|
||||||
|
/// </summary>
|
||||||
|
public static string Yes = "&Yes";
|
||||||
|
/// <summary>
|
||||||
|
/// No text
|
||||||
|
/// </summary>
|
||||||
|
public static string No = "&No";
|
||||||
|
|
||||||
|
static MessageBoxManager()
|
||||||
|
{
|
||||||
|
hookProc = new HookProc(MessageBoxHookProc);
|
||||||
|
enumProc = new EnumChildProc(MessageBoxEnumProc);
|
||||||
|
hHook = IntPtr.Zero;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Enables MessageBoxManager functionality
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// MessageBoxManager functionality is enabled on current thread only.
|
||||||
|
/// Each thread that needs MessageBoxManager functionality has to call this method.
|
||||||
|
/// </remarks>
|
||||||
|
public static void Register()
|
||||||
|
{
|
||||||
|
if (hHook != IntPtr.Zero)
|
||||||
|
throw new NotSupportedException("One hook per thread allowed.");
|
||||||
|
hHook = SetWindowsHookEx(WH_CALLWNDPROCRET, hookProc, IntPtr.Zero, AppDomain.GetCurrentThreadId());
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Disables MessageBoxManager functionality
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Disables MessageBoxManager functionality on current thread only.
|
||||||
|
/// </remarks>
|
||||||
|
public static void Unregister()
|
||||||
|
{
|
||||||
|
if (hHook != IntPtr.Zero)
|
||||||
|
{
|
||||||
|
UnhookWindowsHookEx(hHook);
|
||||||
|
hHook = IntPtr.Zero;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IntPtr MessageBoxHookProc(int nCode, IntPtr wParam, IntPtr lParam)
|
||||||
|
{
|
||||||
|
if (nCode < 0)
|
||||||
|
return CallNextHookEx(hHook, nCode, wParam, lParam);
|
||||||
|
|
||||||
|
CWPRETSTRUCT msg = (CWPRETSTRUCT)Marshal.PtrToStructure(lParam, typeof(CWPRETSTRUCT));
|
||||||
|
IntPtr hook = hHook;
|
||||||
|
|
||||||
|
if (msg.message == WM_INITDIALOG)
|
||||||
|
{
|
||||||
|
int nLength = GetWindowTextLength(msg.hwnd);
|
||||||
|
StringBuilder className = new StringBuilder(10);
|
||||||
|
GetClassName(msg.hwnd, className, className.Capacity);
|
||||||
|
if (className.ToString() == "#32770")
|
||||||
|
{
|
||||||
|
nButton = 0;
|
||||||
|
EnumChildWindows(msg.hwnd, enumProc, IntPtr.Zero);
|
||||||
|
if (nButton == 1)
|
||||||
|
{
|
||||||
|
IntPtr hButton = GetDlgItem(msg.hwnd, MBCancel);
|
||||||
|
if (hButton != IntPtr.Zero)
|
||||||
|
SetWindowText(hButton, OK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return CallNextHookEx(hook, nCode, wParam, lParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool MessageBoxEnumProc(IntPtr hWnd, IntPtr lParam)
|
||||||
|
{
|
||||||
|
StringBuilder className = new StringBuilder(10);
|
||||||
|
GetClassName(hWnd, className, className.Capacity);
|
||||||
|
if (className.ToString() == "Button")
|
||||||
|
{
|
||||||
|
int ctlId = GetDlgCtrlID(hWnd);
|
||||||
|
switch (ctlId)
|
||||||
|
{
|
||||||
|
case MBOK:
|
||||||
|
SetWindowText(hWnd, OK);
|
||||||
|
break;
|
||||||
|
case MBCancel:
|
||||||
|
SetWindowText(hWnd, Cancel);
|
||||||
|
break;
|
||||||
|
case MBAbort:
|
||||||
|
SetWindowText(hWnd, Abort);
|
||||||
|
break;
|
||||||
|
case MBRetry:
|
||||||
|
SetWindowText(hWnd, Retry);
|
||||||
|
break;
|
||||||
|
case MBIgnore:
|
||||||
|
SetWindowText(hWnd, Ignore);
|
||||||
|
break;
|
||||||
|
case MBYes:
|
||||||
|
SetWindowText(hWnd, Yes);
|
||||||
|
break;
|
||||||
|
case MBNo:
|
||||||
|
SetWindowText(hWnd, No);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
nButton++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
875
src/Form1.Designer.cs
generated
Normal file
875
src/Form1.Designer.cs
generated
Normal file
@@ -0,0 +1,875 @@
|
|||||||
|
|
||||||
|
namespace Cordial
|
||||||
|
{
|
||||||
|
partial class Form1
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.components = new System.ComponentModel.Container();
|
||||||
|
System.Windows.Forms.DataGridView dataGridView1;
|
||||||
|
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||||
|
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
|
||||||
|
this.fileMenuStrip = new System.Windows.Forms.MenuStrip();
|
||||||
|
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.importFeedsFromOpmlToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.exportFeedsAsOpmlToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.preferencesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.closeWindowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.quitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.closeNotificationTray = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.selectAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.checkAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.catchupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.checkSelectedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.addAFeedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.removeFeedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.feedPropertiesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.schedulerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.selectLanguageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.checkForUpdateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.reportAProblemToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||||
|
this.downloadsPage = new System.Windows.Forms.TabPage();
|
||||||
|
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
this.removeSelectedButton = new System.Windows.Forms.Button();
|
||||||
|
this.cancelSelectedButton = new System.Windows.Forms.Button();
|
||||||
|
this.statusStrip2 = new System.Windows.Forms.StatusStrip();
|
||||||
|
this.liveDownloadCounter = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.downloadSpeed = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.subscriptionsPage = new System.Windows.Forms.TabPage();
|
||||||
|
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.checkNewButton = new System.Windows.Forms.Button();
|
||||||
|
this.cactchUpButton = new System.Windows.Forms.Button();
|
||||||
|
this.subscriptionSearchBox = new System.Windows.Forms.TextBox();
|
||||||
|
this.checkSelectedButton = new System.Windows.Forms.Button();
|
||||||
|
this.addNewFeed = new System.Windows.Forms.Button();
|
||||||
|
this.feedPropertiesButton = new System.Windows.Forms.Button();
|
||||||
|
this.removeFeedButton = new System.Windows.Forms.Button();
|
||||||
|
this.schedulerButton = new System.Windows.Forms.Button();
|
||||||
|
this.cleanupPage = new System.Windows.Forms.TabPage();
|
||||||
|
this.logPage = new System.Windows.Forms.TabPage();
|
||||||
|
this.logRTB = new System.Windows.Forms.RichTextBox();
|
||||||
|
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||||
|
this.notificationIcon = new System.Windows.Forms.NotifyIcon(this.components);
|
||||||
|
this.notificationMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
|
this.showWindowNotificationMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.runCheckNotificationMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.quitNotificationMenu = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.opmlFileOpen = new System.Windows.Forms.OpenFileDialog();
|
||||||
|
this.opmlFileSave = new System.Windows.Forms.SaveFileDialog();
|
||||||
|
this.nameDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
|
this.statusDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
|
this.mBDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
|
this.locationDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
|
this.podcastBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
||||||
|
dataGridView1 = new System.Windows.Forms.DataGridView();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(dataGridView1)).BeginInit();
|
||||||
|
this.fileMenuStrip.SuspendLayout();
|
||||||
|
this.tabControl1.SuspendLayout();
|
||||||
|
this.downloadsPage.SuspendLayout();
|
||||||
|
this.tableLayoutPanel2.SuspendLayout();
|
||||||
|
this.tableLayoutPanel1.SuspendLayout();
|
||||||
|
this.panel1.SuspendLayout();
|
||||||
|
this.statusStrip2.SuspendLayout();
|
||||||
|
this.subscriptionsPage.SuspendLayout();
|
||||||
|
this.tableLayoutPanel3.SuspendLayout();
|
||||||
|
this.logPage.SuspendLayout();
|
||||||
|
this.notificationMenuStrip.SuspendLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.podcastBindingSource)).BeginInit();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// dataGridView1
|
||||||
|
//
|
||||||
|
dataGridView1.AllowUserToAddRows = false;
|
||||||
|
dataGridView1.AllowUserToDeleteRows = false;
|
||||||
|
dataGridView1.AutoGenerateColumns = false;
|
||||||
|
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||||
|
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
|
||||||
|
dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
|
||||||
|
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||||
|
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||||
|
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||||
|
dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
|
||||||
|
dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||||
|
dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||||
|
this.nameDataGridViewTextBoxColumn,
|
||||||
|
this.statusDataGridViewTextBoxColumn,
|
||||||
|
this.mBDataGridViewTextBoxColumn,
|
||||||
|
this.locationDataGridViewTextBoxColumn});
|
||||||
|
dataGridView1.DataSource = this.podcastBindingSource;
|
||||||
|
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||||
|
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;
|
||||||
|
dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||||
|
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||||
|
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||||
|
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||||
|
dataGridView1.DefaultCellStyle = dataGridViewCellStyle2;
|
||||||
|
dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
dataGridView1.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically;
|
||||||
|
dataGridView1.Location = new System.Drawing.Point(2, 26);
|
||||||
|
dataGridView1.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
dataGridView1.Name = "dataGridView1";
|
||||||
|
dataGridView1.ReadOnly = true;
|
||||||
|
dataGridView1.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
|
||||||
|
dataGridView1.RowHeadersVisible = false;
|
||||||
|
dataGridView1.RowHeadersWidth = 51;
|
||||||
|
dataGridView1.RowTemplate.Height = 24;
|
||||||
|
dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||||
|
dataGridView1.ShowCellErrors = false;
|
||||||
|
dataGridView1.ShowEditingIcon = false;
|
||||||
|
dataGridView1.ShowRowErrors = false;
|
||||||
|
dataGridView1.Size = new System.Drawing.Size(796, 436);
|
||||||
|
dataGridView1.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// fileMenuStrip
|
||||||
|
//
|
||||||
|
this.fileMenuStrip.ImageScalingSize = new System.Drawing.Size(20, 20);
|
||||||
|
this.fileMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.fileToolStripMenuItem,
|
||||||
|
this.editToolStripMenuItem,
|
||||||
|
this.viewToolStripMenuItem,
|
||||||
|
this.toolsToolStripMenuItem,
|
||||||
|
this.helpToolStripMenuItem});
|
||||||
|
this.fileMenuStrip.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.fileMenuStrip.Name = "fileMenuStrip";
|
||||||
|
this.fileMenuStrip.Padding = new System.Windows.Forms.Padding(4, 2, 0, 2);
|
||||||
|
this.fileMenuStrip.Size = new System.Drawing.Size(808, 24);
|
||||||
|
this.fileMenuStrip.TabIndex = 0;
|
||||||
|
this.fileMenuStrip.Text = "menuStrip1";
|
||||||
|
//
|
||||||
|
// fileToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.importFeedsFromOpmlToolStripMenuItem,
|
||||||
|
this.exportFeedsAsOpmlToolStripMenuItem,
|
||||||
|
this.preferencesToolStripMenuItem,
|
||||||
|
this.toolStripSeparator3,
|
||||||
|
this.closeNotificationTray,
|
||||||
|
this.closeWindowToolStripMenuItem,
|
||||||
|
this.quitToolStripMenuItem});
|
||||||
|
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
|
||||||
|
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
|
||||||
|
this.fileToolStripMenuItem.Text = "File";
|
||||||
|
//
|
||||||
|
// importFeedsFromOpmlToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.importFeedsFromOpmlToolStripMenuItem.Name = "importFeedsFromOpmlToolStripMenuItem";
|
||||||
|
this.importFeedsFromOpmlToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
|
||||||
|
| System.Windows.Forms.Keys.O)));
|
||||||
|
this.importFeedsFromOpmlToolStripMenuItem.Size = new System.Drawing.Size(285, 22);
|
||||||
|
this.importFeedsFromOpmlToolStripMenuItem.Text = "Import feeds from opml...";
|
||||||
|
this.importFeedsFromOpmlToolStripMenuItem.Click += new System.EventHandler(this.importFeedsFromOpmlToolStripMenuItem_Click);
|
||||||
|
//
|
||||||
|
// exportFeedsAsOpmlToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.exportFeedsAsOpmlToolStripMenuItem.Name = "exportFeedsAsOpmlToolStripMenuItem";
|
||||||
|
this.exportFeedsAsOpmlToolStripMenuItem.Size = new System.Drawing.Size(285, 22);
|
||||||
|
this.exportFeedsAsOpmlToolStripMenuItem.Text = "Export feeds as opml";
|
||||||
|
this.exportFeedsAsOpmlToolStripMenuItem.Click += new System.EventHandler(this.exportFeedsAsOpmlToolStripMenuItem_Click);
|
||||||
|
//
|
||||||
|
// preferencesToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.preferencesToolStripMenuItem.Name = "preferencesToolStripMenuItem";
|
||||||
|
this.preferencesToolStripMenuItem.Size = new System.Drawing.Size(285, 22);
|
||||||
|
this.preferencesToolStripMenuItem.Text = "Preferences...";
|
||||||
|
//
|
||||||
|
// toolStripSeparator3
|
||||||
|
//
|
||||||
|
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||||
|
this.toolStripSeparator3.Size = new System.Drawing.Size(282, 6);
|
||||||
|
//
|
||||||
|
// closeWindowToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.closeWindowToolStripMenuItem.Name = "closeWindowToolStripMenuItem";
|
||||||
|
this.closeWindowToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.W)));
|
||||||
|
this.closeWindowToolStripMenuItem.Size = new System.Drawing.Size(285, 22);
|
||||||
|
this.closeWindowToolStripMenuItem.Text = "Close window";
|
||||||
|
this.closeWindowToolStripMenuItem.Click += new System.EventHandler(this.closeWindowToolStripMenuItem_Click);
|
||||||
|
//
|
||||||
|
// quitToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.quitToolStripMenuItem.Name = "quitToolStripMenuItem";
|
||||||
|
this.quitToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Q)));
|
||||||
|
this.quitToolStripMenuItem.Size = new System.Drawing.Size(285, 22);
|
||||||
|
this.quitToolStripMenuItem.Text = "Quit";
|
||||||
|
this.quitToolStripMenuItem.Click += new System.EventHandler(this.quitToolStripMenuItem_Click);
|
||||||
|
//
|
||||||
|
// closeNotificationTray
|
||||||
|
//
|
||||||
|
this.closeNotificationTray.Name = "closeNotificationTray";
|
||||||
|
this.closeNotificationTray.Size = new System.Drawing.Size(285, 22);
|
||||||
|
this.closeNotificationTray.Text = "Close to Notification Try";
|
||||||
|
//
|
||||||
|
// editToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.selectAllToolStripMenuItem});
|
||||||
|
this.editToolStripMenuItem.Name = "editToolStripMenuItem";
|
||||||
|
this.editToolStripMenuItem.Size = new System.Drawing.Size(39, 20);
|
||||||
|
this.editToolStripMenuItem.Text = "Edit";
|
||||||
|
//
|
||||||
|
// selectAllToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem";
|
||||||
|
this.selectAllToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A)));
|
||||||
|
this.selectAllToolStripMenuItem.Size = new System.Drawing.Size(162, 22);
|
||||||
|
this.selectAllToolStripMenuItem.Text = "Select all";
|
||||||
|
//
|
||||||
|
// viewToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.viewToolStripMenuItem.Name = "viewToolStripMenuItem";
|
||||||
|
this.viewToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
|
||||||
|
this.viewToolStripMenuItem.Text = "View";
|
||||||
|
//
|
||||||
|
// toolsToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.checkAllToolStripMenuItem,
|
||||||
|
this.catchupToolStripMenuItem,
|
||||||
|
this.checkSelectedToolStripMenuItem,
|
||||||
|
this.toolStripSeparator1,
|
||||||
|
this.addAFeedToolStripMenuItem,
|
||||||
|
this.removeFeedToolStripMenuItem,
|
||||||
|
this.feedPropertiesToolStripMenuItem,
|
||||||
|
this.schedulerToolStripMenuItem,
|
||||||
|
this.toolStripSeparator2,
|
||||||
|
this.selectLanguageToolStripMenuItem});
|
||||||
|
this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
|
||||||
|
this.toolsToolStripMenuItem.Size = new System.Drawing.Size(47, 20);
|
||||||
|
this.toolsToolStripMenuItem.Text = "Tools";
|
||||||
|
//
|
||||||
|
// checkAllToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.checkAllToolStripMenuItem.Name = "checkAllToolStripMenuItem";
|
||||||
|
this.checkAllToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F5;
|
||||||
|
this.checkAllToolStripMenuItem.Size = new System.Drawing.Size(187, 22);
|
||||||
|
this.checkAllToolStripMenuItem.Text = "Check all";
|
||||||
|
//
|
||||||
|
// catchupToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.catchupToolStripMenuItem.Name = "catchupToolStripMenuItem";
|
||||||
|
this.catchupToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F6;
|
||||||
|
this.catchupToolStripMenuItem.Size = new System.Drawing.Size(187, 22);
|
||||||
|
this.catchupToolStripMenuItem.Text = "Catch-up";
|
||||||
|
//
|
||||||
|
// checkSelectedToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.checkSelectedToolStripMenuItem.Enabled = false;
|
||||||
|
this.checkSelectedToolStripMenuItem.Name = "checkSelectedToolStripMenuItem";
|
||||||
|
this.checkSelectedToolStripMenuItem.Size = new System.Drawing.Size(187, 22);
|
||||||
|
this.checkSelectedToolStripMenuItem.Text = "Check Selected";
|
||||||
|
//
|
||||||
|
// toolStripSeparator1
|
||||||
|
//
|
||||||
|
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||||
|
this.toolStripSeparator1.Size = new System.Drawing.Size(184, 6);
|
||||||
|
//
|
||||||
|
// addAFeedToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.addAFeedToolStripMenuItem.Name = "addAFeedToolStripMenuItem";
|
||||||
|
this.addAFeedToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N)));
|
||||||
|
this.addAFeedToolStripMenuItem.Size = new System.Drawing.Size(187, 22);
|
||||||
|
this.addAFeedToolStripMenuItem.Text = "Add a Feed...";
|
||||||
|
//
|
||||||
|
// removeFeedToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.removeFeedToolStripMenuItem.Enabled = false;
|
||||||
|
this.removeFeedToolStripMenuItem.Name = "removeFeedToolStripMenuItem";
|
||||||
|
this.removeFeedToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.D)));
|
||||||
|
this.removeFeedToolStripMenuItem.Size = new System.Drawing.Size(187, 22);
|
||||||
|
this.removeFeedToolStripMenuItem.Text = "Remove Feed";
|
||||||
|
//
|
||||||
|
// feedPropertiesToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.feedPropertiesToolStripMenuItem.Enabled = false;
|
||||||
|
this.feedPropertiesToolStripMenuItem.Name = "feedPropertiesToolStripMenuItem";
|
||||||
|
this.feedPropertiesToolStripMenuItem.Size = new System.Drawing.Size(187, 22);
|
||||||
|
this.feedPropertiesToolStripMenuItem.Text = "Feed properties...";
|
||||||
|
//
|
||||||
|
// schedulerToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.schedulerToolStripMenuItem.Name = "schedulerToolStripMenuItem";
|
||||||
|
this.schedulerToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.L)));
|
||||||
|
this.schedulerToolStripMenuItem.Size = new System.Drawing.Size(187, 22);
|
||||||
|
this.schedulerToolStripMenuItem.Text = "Scheduler...";
|
||||||
|
//
|
||||||
|
// toolStripSeparator2
|
||||||
|
//
|
||||||
|
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||||
|
this.toolStripSeparator2.Size = new System.Drawing.Size(184, 6);
|
||||||
|
//
|
||||||
|
// selectLanguageToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.selectLanguageToolStripMenuItem.Name = "selectLanguageToolStripMenuItem";
|
||||||
|
this.selectLanguageToolStripMenuItem.Size = new System.Drawing.Size(187, 22);
|
||||||
|
this.selectLanguageToolStripMenuItem.Text = "Select language";
|
||||||
|
//
|
||||||
|
// helpToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.checkForUpdateToolStripMenuItem,
|
||||||
|
this.reportAProblemToolStripMenuItem,
|
||||||
|
this.toolStripSeparator4,
|
||||||
|
this.aboutToolStripMenuItem});
|
||||||
|
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
|
||||||
|
this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
|
||||||
|
this.helpToolStripMenuItem.Text = "Help";
|
||||||
|
//
|
||||||
|
// checkForUpdateToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.checkForUpdateToolStripMenuItem.Name = "checkForUpdateToolStripMenuItem";
|
||||||
|
this.checkForUpdateToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||||
|
this.checkForUpdateToolStripMenuItem.Text = "Check for Update....";
|
||||||
|
this.checkForUpdateToolStripMenuItem.Click += new System.EventHandler(this.checkForUpdateToolStripMenuItem_Click);
|
||||||
|
//
|
||||||
|
// reportAProblemToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.reportAProblemToolStripMenuItem.Name = "reportAProblemToolStripMenuItem";
|
||||||
|
this.reportAProblemToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||||
|
this.reportAProblemToolStripMenuItem.Text = "Report a Problem";
|
||||||
|
this.reportAProblemToolStripMenuItem.Click += new System.EventHandler(this.reportAProblemToolStripMenuItem_Click);
|
||||||
|
//
|
||||||
|
// toolStripSeparator4
|
||||||
|
//
|
||||||
|
this.toolStripSeparator4.Name = "toolStripSeparator4";
|
||||||
|
this.toolStripSeparator4.Size = new System.Drawing.Size(177, 6);
|
||||||
|
//
|
||||||
|
// aboutToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
|
||||||
|
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||||
|
this.aboutToolStripMenuItem.Text = "About";
|
||||||
|
//
|
||||||
|
// tabControl1
|
||||||
|
//
|
||||||
|
this.tabControl1.Controls.Add(this.downloadsPage);
|
||||||
|
this.tabControl1.Controls.Add(this.subscriptionsPage);
|
||||||
|
this.tabControl1.Controls.Add(this.cleanupPage);
|
||||||
|
this.tabControl1.Controls.Add(this.logPage);
|
||||||
|
this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.tabControl1.Location = new System.Drawing.Point(0, 24);
|
||||||
|
this.tabControl1.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.tabControl1.Name = "tabControl1";
|
||||||
|
this.tabControl1.SelectedIndex = 0;
|
||||||
|
this.tabControl1.Size = new System.Drawing.Size(808, 490);
|
||||||
|
this.tabControl1.TabIndex = 2;
|
||||||
|
//
|
||||||
|
// downloadsPage
|
||||||
|
//
|
||||||
|
this.downloadsPage.Controls.Add(this.tableLayoutPanel2);
|
||||||
|
this.downloadsPage.Controls.Add(this.statusStrip2);
|
||||||
|
this.downloadsPage.Location = new System.Drawing.Point(4, 22);
|
||||||
|
this.downloadsPage.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.downloadsPage.Name = "downloadsPage";
|
||||||
|
this.downloadsPage.Padding = new System.Windows.Forms.Padding(2);
|
||||||
|
this.downloadsPage.Size = new System.Drawing.Size(800, 464);
|
||||||
|
this.downloadsPage.TabIndex = 0;
|
||||||
|
this.downloadsPage.Text = "Downloads";
|
||||||
|
this.downloadsPage.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// tableLayoutPanel2
|
||||||
|
//
|
||||||
|
this.tableLayoutPanel2.ColumnCount = 2;
|
||||||
|
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.tableLayoutPanel2.Controls.Add(this.tableLayoutPanel1, 0, 0);
|
||||||
|
this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Top;
|
||||||
|
this.tableLayoutPanel2.Location = new System.Drawing.Point(2, 2);
|
||||||
|
this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
|
||||||
|
this.tableLayoutPanel2.RowCount = 1;
|
||||||
|
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.tableLayoutPanel2.Size = new System.Drawing.Size(796, 41);
|
||||||
|
this.tableLayoutPanel2.TabIndex = 3;
|
||||||
|
//
|
||||||
|
// tableLayoutPanel1
|
||||||
|
//
|
||||||
|
this.tableLayoutPanel1.ColumnCount = 2;
|
||||||
|
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.46008F));
|
||||||
|
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 66.53992F));
|
||||||
|
this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0);
|
||||||
|
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||||
|
this.tableLayoutPanel1.Location = new System.Drawing.Point(2, 2);
|
||||||
|
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||||
|
this.tableLayoutPanel1.RowCount = 1;
|
||||||
|
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
this.tableLayoutPanel1.Size = new System.Drawing.Size(394, 37);
|
||||||
|
this.tableLayoutPanel1.TabIndex = 2;
|
||||||
|
//
|
||||||
|
// panel1
|
||||||
|
//
|
||||||
|
this.panel1.Controls.Add(this.removeSelectedButton);
|
||||||
|
this.panel1.Controls.Add(this.cancelSelectedButton);
|
||||||
|
this.panel1.Location = new System.Drawing.Point(2, 2);
|
||||||
|
this.panel1.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.panel1.Name = "panel1";
|
||||||
|
this.panel1.Size = new System.Drawing.Size(127, 32);
|
||||||
|
this.panel1.TabIndex = 4;
|
||||||
|
//
|
||||||
|
// removeSelectedButton
|
||||||
|
//
|
||||||
|
this.removeSelectedButton.Dock = System.Windows.Forms.DockStyle.Right;
|
||||||
|
this.removeSelectedButton.Location = new System.Drawing.Point(15, 0);
|
||||||
|
this.removeSelectedButton.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.removeSelectedButton.Name = "removeSelectedButton";
|
||||||
|
this.removeSelectedButton.Size = new System.Drawing.Size(56, 32);
|
||||||
|
this.removeSelectedButton.TabIndex = 0;
|
||||||
|
this.removeSelectedButton.Text = "button1";
|
||||||
|
this.removeSelectedButton.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// cancelSelectedButton
|
||||||
|
//
|
||||||
|
this.cancelSelectedButton.Dock = System.Windows.Forms.DockStyle.Right;
|
||||||
|
this.cancelSelectedButton.Location = new System.Drawing.Point(71, 0);
|
||||||
|
this.cancelSelectedButton.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.cancelSelectedButton.Name = "cancelSelectedButton";
|
||||||
|
this.cancelSelectedButton.Size = new System.Drawing.Size(56, 32);
|
||||||
|
this.cancelSelectedButton.TabIndex = 1;
|
||||||
|
this.cancelSelectedButton.Text = "button2";
|
||||||
|
this.cancelSelectedButton.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// statusStrip2
|
||||||
|
//
|
||||||
|
this.statusStrip2.ImageScalingSize = new System.Drawing.Size(20, 20);
|
||||||
|
this.statusStrip2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.liveDownloadCounter,
|
||||||
|
this.downloadSpeed});
|
||||||
|
this.statusStrip2.Location = new System.Drawing.Point(2, 440);
|
||||||
|
this.statusStrip2.Name = "statusStrip2";
|
||||||
|
this.statusStrip2.Padding = new System.Windows.Forms.Padding(1, 0, 10, 0);
|
||||||
|
this.statusStrip2.Size = new System.Drawing.Size(796, 22);
|
||||||
|
this.statusStrip2.SizingGrip = false;
|
||||||
|
this.statusStrip2.TabIndex = 1;
|
||||||
|
this.statusStrip2.Text = "statusStrip2";
|
||||||
|
//
|
||||||
|
// liveDownloadCounter
|
||||||
|
//
|
||||||
|
this.liveDownloadCounter.Name = "liveDownloadCounter";
|
||||||
|
this.liveDownloadCounter.Size = new System.Drawing.Size(101, 17);
|
||||||
|
this.liveDownloadCounter.Text = "Live downloads: 0";
|
||||||
|
//
|
||||||
|
// downloadSpeed
|
||||||
|
//
|
||||||
|
this.downloadSpeed.Name = "downloadSpeed";
|
||||||
|
this.downloadSpeed.Size = new System.Drawing.Size(139, 17);
|
||||||
|
this.downloadSpeed.Text = "Download speed: 0.0kB/s";
|
||||||
|
//
|
||||||
|
// subscriptionsPage
|
||||||
|
//
|
||||||
|
this.subscriptionsPage.Controls.Add(dataGridView1);
|
||||||
|
this.subscriptionsPage.Controls.Add(this.tableLayoutPanel3);
|
||||||
|
this.subscriptionsPage.Location = new System.Drawing.Point(4, 22);
|
||||||
|
this.subscriptionsPage.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.subscriptionsPage.Name = "subscriptionsPage";
|
||||||
|
this.subscriptionsPage.Padding = new System.Windows.Forms.Padding(2);
|
||||||
|
this.subscriptionsPage.Size = new System.Drawing.Size(800, 464);
|
||||||
|
this.subscriptionsPage.TabIndex = 1;
|
||||||
|
this.subscriptionsPage.Text = "Subscriptions";
|
||||||
|
this.subscriptionsPage.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// tableLayoutPanel3
|
||||||
|
//
|
||||||
|
this.tableLayoutPanel3.AutoSize = true;
|
||||||
|
this.tableLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
|
||||||
|
this.tableLayoutPanel3.ColumnCount = 10;
|
||||||
|
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||||
|
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||||
|
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||||
|
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||||
|
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||||
|
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||||
|
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||||
|
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||||
|
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||||
|
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F));
|
||||||
|
this.tableLayoutPanel3.Controls.Add(this.checkNewButton, 1, 0);
|
||||||
|
this.tableLayoutPanel3.Controls.Add(this.cactchUpButton, 2, 0);
|
||||||
|
this.tableLayoutPanel3.Controls.Add(this.subscriptionSearchBox, 8, 0);
|
||||||
|
this.tableLayoutPanel3.Controls.Add(this.checkSelectedButton, 6, 0);
|
||||||
|
this.tableLayoutPanel3.Controls.Add(this.addNewFeed, 3, 0);
|
||||||
|
this.tableLayoutPanel3.Controls.Add(this.feedPropertiesButton, 5, 0);
|
||||||
|
this.tableLayoutPanel3.Controls.Add(this.removeFeedButton, 4, 0);
|
||||||
|
this.tableLayoutPanel3.Controls.Add(this.schedulerButton, 7, 0);
|
||||||
|
this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Top;
|
||||||
|
this.tableLayoutPanel3.Location = new System.Drawing.Point(2, 2);
|
||||||
|
this.tableLayoutPanel3.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
|
||||||
|
this.tableLayoutPanel3.RowCount = 1;
|
||||||
|
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
this.tableLayoutPanel3.Size = new System.Drawing.Size(796, 24);
|
||||||
|
this.tableLayoutPanel3.TabIndex = 1;
|
||||||
|
//
|
||||||
|
// checkNewButton
|
||||||
|
//
|
||||||
|
this.checkNewButton.Dock = System.Windows.Forms.DockStyle.Right;
|
||||||
|
this.checkNewButton.Location = new System.Drawing.Point(100, 2);
|
||||||
|
this.checkNewButton.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.checkNewButton.Name = "checkNewButton";
|
||||||
|
this.checkNewButton.Size = new System.Drawing.Size(56, 20);
|
||||||
|
this.checkNewButton.TabIndex = 0;
|
||||||
|
this.checkNewButton.Text = "Check for new podcasts";
|
||||||
|
this.checkNewButton.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// cactchUpButton
|
||||||
|
//
|
||||||
|
this.cactchUpButton.Dock = System.Windows.Forms.DockStyle.Right;
|
||||||
|
this.cactchUpButton.Location = new System.Drawing.Point(179, 2);
|
||||||
|
this.cactchUpButton.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.cactchUpButton.Name = "cactchUpButton";
|
||||||
|
this.cactchUpButton.Size = new System.Drawing.Size(56, 20);
|
||||||
|
this.cactchUpButton.TabIndex = 1;
|
||||||
|
this.cactchUpButton.Text = "Catch-up";
|
||||||
|
this.cactchUpButton.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// subscriptionSearchBox
|
||||||
|
//
|
||||||
|
this.subscriptionSearchBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)));
|
||||||
|
this.subscriptionSearchBox.Location = new System.Drawing.Point(634, 2);
|
||||||
|
this.subscriptionSearchBox.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.subscriptionSearchBox.Name = "subscriptionSearchBox";
|
||||||
|
this.subscriptionSearchBox.Size = new System.Drawing.Size(75, 20);
|
||||||
|
this.subscriptionSearchBox.TabIndex = 7;
|
||||||
|
//
|
||||||
|
// checkSelectedButton
|
||||||
|
//
|
||||||
|
this.checkSelectedButton.Dock = System.Windows.Forms.DockStyle.Right;
|
||||||
|
this.checkSelectedButton.Enabled = false;
|
||||||
|
this.checkSelectedButton.Location = new System.Drawing.Point(495, 2);
|
||||||
|
this.checkSelectedButton.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.checkSelectedButton.Name = "checkSelectedButton";
|
||||||
|
this.checkSelectedButton.Size = new System.Drawing.Size(56, 20);
|
||||||
|
this.checkSelectedButton.TabIndex = 5;
|
||||||
|
this.checkSelectedButton.Text = "Check/Download Selected";
|
||||||
|
this.checkSelectedButton.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// addNewFeed
|
||||||
|
//
|
||||||
|
this.addNewFeed.Dock = System.Windows.Forms.DockStyle.Right;
|
||||||
|
this.addNewFeed.Location = new System.Drawing.Point(258, 2);
|
||||||
|
this.addNewFeed.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.addNewFeed.Name = "addNewFeed";
|
||||||
|
this.addNewFeed.Size = new System.Drawing.Size(56, 20);
|
||||||
|
this.addNewFeed.TabIndex = 2;
|
||||||
|
this.addNewFeed.Text = "Add New Feed";
|
||||||
|
this.addNewFeed.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// feedPropertiesButton
|
||||||
|
//
|
||||||
|
this.feedPropertiesButton.Dock = System.Windows.Forms.DockStyle.Right;
|
||||||
|
this.feedPropertiesButton.Enabled = false;
|
||||||
|
this.feedPropertiesButton.Location = new System.Drawing.Point(416, 2);
|
||||||
|
this.feedPropertiesButton.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.feedPropertiesButton.Name = "feedPropertiesButton";
|
||||||
|
this.feedPropertiesButton.Size = new System.Drawing.Size(56, 20);
|
||||||
|
this.feedPropertiesButton.TabIndex = 4;
|
||||||
|
this.feedPropertiesButton.Text = "Properties";
|
||||||
|
this.feedPropertiesButton.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// removeFeedButton
|
||||||
|
//
|
||||||
|
this.removeFeedButton.Dock = System.Windows.Forms.DockStyle.Right;
|
||||||
|
this.removeFeedButton.Enabled = false;
|
||||||
|
this.removeFeedButton.Location = new System.Drawing.Point(337, 2);
|
||||||
|
this.removeFeedButton.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.removeFeedButton.Name = "removeFeedButton";
|
||||||
|
this.removeFeedButton.Size = new System.Drawing.Size(56, 20);
|
||||||
|
this.removeFeedButton.TabIndex = 3;
|
||||||
|
this.removeFeedButton.Text = "Remove selected Feed";
|
||||||
|
this.removeFeedButton.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// schedulerButton
|
||||||
|
//
|
||||||
|
this.schedulerButton.Dock = System.Windows.Forms.DockStyle.Right;
|
||||||
|
this.schedulerButton.Location = new System.Drawing.Point(574, 2);
|
||||||
|
this.schedulerButton.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.schedulerButton.Name = "schedulerButton";
|
||||||
|
this.schedulerButton.Size = new System.Drawing.Size(56, 20);
|
||||||
|
this.schedulerButton.TabIndex = 6;
|
||||||
|
this.schedulerButton.Text = "Scheduler";
|
||||||
|
this.schedulerButton.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// cleanupPage
|
||||||
|
//
|
||||||
|
this.cleanupPage.Location = new System.Drawing.Point(4, 22);
|
||||||
|
this.cleanupPage.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.cleanupPage.Name = "cleanupPage";
|
||||||
|
this.cleanupPage.Padding = new System.Windows.Forms.Padding(2);
|
||||||
|
this.cleanupPage.Size = new System.Drawing.Size(800, 464);
|
||||||
|
this.cleanupPage.TabIndex = 2;
|
||||||
|
this.cleanupPage.Text = "Cleanup";
|
||||||
|
this.cleanupPage.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// logPage
|
||||||
|
//
|
||||||
|
this.logPage.Controls.Add(this.logRTB);
|
||||||
|
this.logPage.Location = new System.Drawing.Point(4, 22);
|
||||||
|
this.logPage.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.logPage.Name = "logPage";
|
||||||
|
this.logPage.Padding = new System.Windows.Forms.Padding(2);
|
||||||
|
this.logPage.Size = new System.Drawing.Size(800, 464);
|
||||||
|
this.logPage.TabIndex = 3;
|
||||||
|
this.logPage.Text = "Log";
|
||||||
|
this.logPage.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// logRTB
|
||||||
|
//
|
||||||
|
this.logRTB.Cursor = System.Windows.Forms.Cursors.Default;
|
||||||
|
this.logRTB.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.logRTB.Location = new System.Drawing.Point(2, 2);
|
||||||
|
this.logRTB.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.logRTB.Name = "logRTB";
|
||||||
|
this.logRTB.ReadOnly = true;
|
||||||
|
this.logRTB.Size = new System.Drawing.Size(796, 460);
|
||||||
|
this.logRTB.TabIndex = 0;
|
||||||
|
this.logRTB.Text = "";
|
||||||
|
//
|
||||||
|
// statusStrip1
|
||||||
|
//
|
||||||
|
this.statusStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
|
||||||
|
this.statusStrip1.Location = new System.Drawing.Point(0, 514);
|
||||||
|
this.statusStrip1.Name = "statusStrip1";
|
||||||
|
this.statusStrip1.Padding = new System.Windows.Forms.Padding(1, 0, 10, 0);
|
||||||
|
this.statusStrip1.Size = new System.Drawing.Size(808, 22);
|
||||||
|
this.statusStrip1.TabIndex = 0;
|
||||||
|
this.statusStrip1.Text = "statusStrip1";
|
||||||
|
//
|
||||||
|
// notificationIcon
|
||||||
|
//
|
||||||
|
this.notificationIcon.BalloonTipTitle = "Cordial";
|
||||||
|
this.notificationIcon.ContextMenuStrip = this.notificationMenuStrip;
|
||||||
|
this.notificationIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("notificationIcon.Icon")));
|
||||||
|
this.notificationIcon.Text = "Cordial";
|
||||||
|
this.notificationIcon.Visible = true;
|
||||||
|
this.notificationIcon.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notificationIcon_MouseDoubleClick);
|
||||||
|
//
|
||||||
|
// notificationMenuStrip
|
||||||
|
//
|
||||||
|
this.notificationMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.showWindowNotificationMenu,
|
||||||
|
this.runCheckNotificationMenu,
|
||||||
|
this.toolStripSeparator5,
|
||||||
|
this.quitNotificationMenu});
|
||||||
|
this.notificationMenuStrip.Name = "notificationMenuStrip";
|
||||||
|
this.notificationMenuStrip.Size = new System.Drawing.Size(181, 76);
|
||||||
|
//
|
||||||
|
// showWindowNotificationMenu
|
||||||
|
//
|
||||||
|
this.showWindowNotificationMenu.Name = "showWindowNotificationMenu";
|
||||||
|
this.showWindowNotificationMenu.Size = new System.Drawing.Size(180, 22);
|
||||||
|
this.showWindowNotificationMenu.Text = "toolStripMenuItem1";
|
||||||
|
//
|
||||||
|
// runCheckNotificationMenu
|
||||||
|
//
|
||||||
|
this.runCheckNotificationMenu.Name = "runCheckNotificationMenu";
|
||||||
|
this.runCheckNotificationMenu.Size = new System.Drawing.Size(180, 22);
|
||||||
|
this.runCheckNotificationMenu.Text = "toolStripMenuItem2";
|
||||||
|
//
|
||||||
|
// toolStripSeparator5
|
||||||
|
//
|
||||||
|
this.toolStripSeparator5.Name = "toolStripSeparator5";
|
||||||
|
this.toolStripSeparator5.Size = new System.Drawing.Size(177, 6);
|
||||||
|
//
|
||||||
|
// quitNotificationMenu
|
||||||
|
//
|
||||||
|
this.quitNotificationMenu.Name = "quitNotificationMenu";
|
||||||
|
this.quitNotificationMenu.Size = new System.Drawing.Size(180, 22);
|
||||||
|
this.quitNotificationMenu.Text = "toolStripMenuItem3";
|
||||||
|
//
|
||||||
|
// opmlFileOpen
|
||||||
|
//
|
||||||
|
this.opmlFileOpen.Filter = "OMPL files|*.opml";
|
||||||
|
this.opmlFileOpen.Title = "Open File";
|
||||||
|
//
|
||||||
|
// opmlFileSave
|
||||||
|
//
|
||||||
|
this.opmlFileSave.Filter = "OPML files|*.opml";
|
||||||
|
this.opmlFileSave.Title = "Save to file";
|
||||||
|
//
|
||||||
|
// nameDataGridViewTextBoxColumn
|
||||||
|
//
|
||||||
|
this.nameDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
|
||||||
|
this.nameDataGridViewTextBoxColumn.DataPropertyName = "Name";
|
||||||
|
this.nameDataGridViewTextBoxColumn.FillWeight = 60F;
|
||||||
|
this.nameDataGridViewTextBoxColumn.HeaderText = "Name";
|
||||||
|
this.nameDataGridViewTextBoxColumn.MinimumWidth = 6;
|
||||||
|
this.nameDataGridViewTextBoxColumn.Name = "nameDataGridViewTextBoxColumn";
|
||||||
|
this.nameDataGridViewTextBoxColumn.ReadOnly = true;
|
||||||
|
//
|
||||||
|
// statusDataGridViewTextBoxColumn
|
||||||
|
//
|
||||||
|
this.statusDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
|
||||||
|
this.statusDataGridViewTextBoxColumn.DataPropertyName = "Status";
|
||||||
|
this.statusDataGridViewTextBoxColumn.FillWeight = 30F;
|
||||||
|
this.statusDataGridViewTextBoxColumn.HeaderText = "Status";
|
||||||
|
this.statusDataGridViewTextBoxColumn.MinimumWidth = 6;
|
||||||
|
this.statusDataGridViewTextBoxColumn.Name = "statusDataGridViewTextBoxColumn";
|
||||||
|
this.statusDataGridViewTextBoxColumn.ReadOnly = true;
|
||||||
|
//
|
||||||
|
// mBDataGridViewTextBoxColumn
|
||||||
|
//
|
||||||
|
this.mBDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
|
||||||
|
this.mBDataGridViewTextBoxColumn.DataPropertyName = "MB";
|
||||||
|
this.mBDataGridViewTextBoxColumn.FillWeight = 20F;
|
||||||
|
this.mBDataGridViewTextBoxColumn.HeaderText = "MB";
|
||||||
|
this.mBDataGridViewTextBoxColumn.MinimumWidth = 6;
|
||||||
|
this.mBDataGridViewTextBoxColumn.Name = "mBDataGridViewTextBoxColumn";
|
||||||
|
this.mBDataGridViewTextBoxColumn.ReadOnly = true;
|
||||||
|
//
|
||||||
|
// locationDataGridViewTextBoxColumn
|
||||||
|
//
|
||||||
|
this.locationDataGridViewTextBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
|
||||||
|
this.locationDataGridViewTextBoxColumn.DataPropertyName = "Location";
|
||||||
|
this.locationDataGridViewTextBoxColumn.HeaderText = "Location";
|
||||||
|
this.locationDataGridViewTextBoxColumn.MinimumWidth = 6;
|
||||||
|
this.locationDataGridViewTextBoxColumn.Name = "locationDataGridViewTextBoxColumn";
|
||||||
|
this.locationDataGridViewTextBoxColumn.ReadOnly = true;
|
||||||
|
//
|
||||||
|
// podcastBindingSource
|
||||||
|
//
|
||||||
|
this.podcastBindingSource.DataSource = typeof(Cordial.Models.Podcast);
|
||||||
|
//
|
||||||
|
// Form1
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.ClientSize = new System.Drawing.Size(808, 536);
|
||||||
|
this.Controls.Add(this.tabControl1);
|
||||||
|
this.Controls.Add(this.statusStrip1);
|
||||||
|
this.Controls.Add(this.fileMenuStrip);
|
||||||
|
this.MainMenuStrip = this.fileMenuStrip;
|
||||||
|
this.Margin = new System.Windows.Forms.Padding(2);
|
||||||
|
this.Name = "Form1";
|
||||||
|
this.Text = "Form1";
|
||||||
|
((System.ComponentModel.ISupportInitialize)(dataGridView1)).EndInit();
|
||||||
|
this.fileMenuStrip.ResumeLayout(false);
|
||||||
|
this.fileMenuStrip.PerformLayout();
|
||||||
|
this.tabControl1.ResumeLayout(false);
|
||||||
|
this.downloadsPage.ResumeLayout(false);
|
||||||
|
this.downloadsPage.PerformLayout();
|
||||||
|
this.tableLayoutPanel2.ResumeLayout(false);
|
||||||
|
this.tableLayoutPanel1.ResumeLayout(false);
|
||||||
|
this.panel1.ResumeLayout(false);
|
||||||
|
this.statusStrip2.ResumeLayout(false);
|
||||||
|
this.statusStrip2.PerformLayout();
|
||||||
|
this.subscriptionsPage.ResumeLayout(false);
|
||||||
|
this.subscriptionsPage.PerformLayout();
|
||||||
|
this.tableLayoutPanel3.ResumeLayout(false);
|
||||||
|
this.tableLayoutPanel3.PerformLayout();
|
||||||
|
this.logPage.ResumeLayout(false);
|
||||||
|
this.notificationMenuStrip.ResumeLayout(false);
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.podcastBindingSource)).EndInit();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.MenuStrip fileMenuStrip;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem selectAllToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem viewToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem toolsToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.TabControl tabControl1;
|
||||||
|
private System.Windows.Forms.TabPage downloadsPage;
|
||||||
|
private System.Windows.Forms.TabPage subscriptionsPage;
|
||||||
|
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem checkAllToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem catchupToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem checkSelectedToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem addAFeedToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem removeFeedToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem importFeedsFromOpmlToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem exportFeedsAsOpmlToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem preferencesToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem closeWindowToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem quitToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem feedPropertiesToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem schedulerToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem selectLanguageToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem checkForUpdateToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem reportAProblemToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.TabPage cleanupPage;
|
||||||
|
private System.Windows.Forms.TabPage logPage;
|
||||||
|
private System.Windows.Forms.RichTextBox logRTB;
|
||||||
|
private System.Windows.Forms.NotifyIcon notificationIcon;
|
||||||
|
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
|
||||||
|
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||||
|
private System.Windows.Forms.Panel panel1;
|
||||||
|
private System.Windows.Forms.Button removeSelectedButton;
|
||||||
|
private System.Windows.Forms.Button cancelSelectedButton;
|
||||||
|
private System.Windows.Forms.StatusStrip statusStrip2;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel liveDownloadCounter;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel downloadSpeed;
|
||||||
|
private System.Windows.Forms.OpenFileDialog opmlFileOpen;
|
||||||
|
private System.Windows.Forms.SaveFileDialog opmlFileSave;
|
||||||
|
private System.Windows.Forms.BindingSource podcastBindingSource;
|
||||||
|
private System.Windows.Forms.DataGridViewTextBoxColumn nameDataGridViewTextBoxColumn;
|
||||||
|
private System.Windows.Forms.DataGridViewTextBoxColumn statusDataGridViewTextBoxColumn;
|
||||||
|
private System.Windows.Forms.DataGridViewTextBoxColumn mBDataGridViewTextBoxColumn;
|
||||||
|
private System.Windows.Forms.DataGridViewTextBoxColumn locationDataGridViewTextBoxColumn;
|
||||||
|
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
|
||||||
|
private System.Windows.Forms.Button addNewFeed;
|
||||||
|
private System.Windows.Forms.Button removeFeedButton;
|
||||||
|
private System.Windows.Forms.Button feedPropertiesButton;
|
||||||
|
private System.Windows.Forms.Button checkSelectedButton;
|
||||||
|
private System.Windows.Forms.Button schedulerButton;
|
||||||
|
private System.Windows.Forms.TextBox subscriptionSearchBox;
|
||||||
|
private System.Windows.Forms.Button checkNewButton;
|
||||||
|
private System.Windows.Forms.Button cactchUpButton;
|
||||||
|
private System.Windows.Forms.ContextMenuStrip notificationMenuStrip;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem showWindowNotificationMenu;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem runCheckNotificationMenu;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem quitNotificationMenu;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem closeNotificationTray;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
396
src/Form1.cs
Normal file
396
src/Form1.cs
Normal file
@@ -0,0 +1,396 @@
|
|||||||
|
using Cordial.Globalization;
|
||||||
|
using Cordial.Models;
|
||||||
|
using Octokit;
|
||||||
|
using OPMLCore.NET;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Resources;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using Configuration = Cordial.Models.Configuration;
|
||||||
|
|
||||||
|
namespace Cordial
|
||||||
|
{
|
||||||
|
public partial class Form1 : Form
|
||||||
|
{
|
||||||
|
List<RSSFeed> Feeds;
|
||||||
|
string downloadDestination;
|
||||||
|
List<Podcast> Subscriptions;
|
||||||
|
LocaleManager locale;
|
||||||
|
Configuration currentConfiguration;
|
||||||
|
GitHubClient githubClient;
|
||||||
|
#if PRERELEASE
|
||||||
|
bool isPreRelease = true;
|
||||||
|
#else
|
||||||
|
bool isPreRelease = false;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
public Form1()
|
||||||
|
{
|
||||||
|
if (!Directory.Exists(AppProps.DefaultPodcastDownloadDir))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(AppProps.DefaultPodcastDownloadDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
Log.Configure(logRTB);
|
||||||
|
|
||||||
|
currentConfiguration = Configuration.Load();
|
||||||
|
|
||||||
|
Feeds = currentConfiguration.Podcasts;
|
||||||
|
downloadDestination = currentConfiguration.Destination;
|
||||||
|
|
||||||
|
currentConfiguration.Language = currentConfiguration.Language;
|
||||||
|
|
||||||
|
locale = LocaleManager.InitialiseLocales();
|
||||||
|
|
||||||
|
foreach (var localeEntry in locale.Locales)
|
||||||
|
{
|
||||||
|
ToolStripMenuItem item = new ToolStripMenuItem(localeEntry.Value.GetString("human_name"), image: null, onClick: (e, sender) =>
|
||||||
|
{
|
||||||
|
currentConfiguration.Language = localeEntry.Key;
|
||||||
|
|
||||||
|
currentConfiguration.Save();
|
||||||
|
|
||||||
|
Log.Info($"Using \"{localeEntry.Value.GetString("human_name")}\" as current language");
|
||||||
|
|
||||||
|
UpdateLanguage();
|
||||||
|
})
|
||||||
|
{
|
||||||
|
Checked = true,
|
||||||
|
CheckState = currentConfiguration.Language == localeEntry.Key ? CheckState.Checked : CheckState.Unchecked,
|
||||||
|
};
|
||||||
|
|
||||||
|
selectLanguageToolStripMenuItem.DropDownItems.Add(item);
|
||||||
|
|
||||||
|
if (currentConfiguration.Language == localeEntry.Key)
|
||||||
|
{
|
||||||
|
Log.Info($"Using \"{localeEntry.Value.GetString("human_name")}\" as current language");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
showWindowNotificationMenu.Visible = false;
|
||||||
|
showWindowNotificationMenu.Click += ShowWindowNotificationMenu_Click;
|
||||||
|
closeNotificationTray.Click += CloseNotificationTray_Click;
|
||||||
|
closeNotificationTray.Checked = currentConfiguration.CloseNotifTray;
|
||||||
|
|
||||||
|
UpdateLanguage();
|
||||||
|
|
||||||
|
UpdateSubscriptions();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ShowWindowNotificationMenu_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Visible = true;
|
||||||
|
showWindowNotificationMenu.Visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateSubscriptions()
|
||||||
|
{
|
||||||
|
if (Subscriptions == null)
|
||||||
|
{
|
||||||
|
Subscriptions = new List<Podcast>();
|
||||||
|
}
|
||||||
|
|
||||||
|
Subscriptions.Clear();
|
||||||
|
|
||||||
|
foreach (var feed in Feeds)
|
||||||
|
{
|
||||||
|
ulong mb = 0;
|
||||||
|
string podcastPath = Path.Combine(downloadDestination, feed.Name);
|
||||||
|
if (Directory.Exists(podcastPath))
|
||||||
|
{
|
||||||
|
mb = (ulong)new DirectoryInfo(podcastPath).GetFiles().Sum(z => z.Length) / 1000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
Subscriptions.Add(new Podcast
|
||||||
|
{
|
||||||
|
Name = feed.Name,
|
||||||
|
Status = PodcastStatus.NewlySubscribed,
|
||||||
|
MB = mb,
|
||||||
|
Location = feed.URL.OriginalString
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
podcastBindingSource.DataSource = Subscriptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
string GetLanguageString(string key, ResourceManager targetResource, ResourceManager defaultResource = null)
|
||||||
|
{
|
||||||
|
var value = key;
|
||||||
|
|
||||||
|
if (locale != null)
|
||||||
|
{
|
||||||
|
if (defaultResource == null)
|
||||||
|
{
|
||||||
|
defaultResource = locale.GetDefaultLocale();
|
||||||
|
}
|
||||||
|
|
||||||
|
value = targetResource.GetString(key);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(value))
|
||||||
|
{
|
||||||
|
value = defaultResource.GetString(key);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(value))
|
||||||
|
{
|
||||||
|
value = key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateLanguage()
|
||||||
|
{
|
||||||
|
var currentLocale = locale != null ? locale.GetLocale(currentConfiguration.Language) : null;
|
||||||
|
var defaultLocale = locale != null ? locale.GetDefaultLocale() : null;
|
||||||
|
|
||||||
|
foreach (var item in selectLanguageToolStripMenuItem.DropDownItems)
|
||||||
|
{
|
||||||
|
if (item is ToolStripMenuItem tsmi)
|
||||||
|
{
|
||||||
|
if (tsmi.Text == currentLocale.GetString("human_name"))
|
||||||
|
{
|
||||||
|
tsmi.CheckState = CheckState.Checked;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tsmi.CheckState = CheckState.Unchecked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//statustray
|
||||||
|
liveDownloadCounter.Text = GetLanguageString("generic_livedownloads", currentLocale, defaultLocale).Replace("{0}", "0");
|
||||||
|
downloadSpeed.Text = GetLanguageString("generic_downloadspeed", currentLocale, defaultLocale).Replace("{0}", "0");
|
||||||
|
|
||||||
|
//toolstrip
|
||||||
|
fileToolStripMenuItem.Text = GetLanguageString("generic_file", currentLocale, defaultLocale);
|
||||||
|
editToolStripMenuItem.Text = GetLanguageString("generic_edit", currentLocale, defaultLocale);
|
||||||
|
viewToolStripMenuItem.Text = GetLanguageString("generic_view", currentLocale, defaultLocale);
|
||||||
|
toolsToolStripMenuItem.Text = GetLanguageString("generic_tools", currentLocale, defaultLocale);
|
||||||
|
helpToolStripMenuItem.Text = GetLanguageString("generic_help", currentLocale, defaultLocale);
|
||||||
|
|
||||||
|
//pages
|
||||||
|
downloadsPage.Text = GetLanguageString("generic_downloads", currentLocale, defaultLocale);
|
||||||
|
subscriptionsPage.Text = GetLanguageString("generic_subscriptions", currentLocale, defaultLocale);
|
||||||
|
cleanupPage.Text = GetLanguageString("generic_cleanup", currentLocale, defaultLocale);
|
||||||
|
logPage.Text = GetLanguageString("generic_log", currentLocale, defaultLocale);
|
||||||
|
|
||||||
|
//file
|
||||||
|
importFeedsFromOpmlToolStripMenuItem.Text = GetLanguageString("file_importopml", currentLocale, defaultLocale);
|
||||||
|
exportFeedsAsOpmlToolStripMenuItem.Text = GetLanguageString("file_exportopml", currentLocale, defaultLocale);
|
||||||
|
preferencesToolStripMenuItem.Text = GetLanguageString("file_preferences", currentLocale, defaultLocale);
|
||||||
|
closeWindowToolStripMenuItem.Text = GetLanguageString("file_close", currentLocale, defaultLocale);
|
||||||
|
closeNotificationTray.Text = GetLanguageString("file_closetotray", currentLocale, defaultLocale);
|
||||||
|
quitToolStripMenuItem.Text = GetLanguageString("file_quit", currentLocale, defaultLocale);
|
||||||
|
|
||||||
|
//edit
|
||||||
|
selectAllToolStripMenuItem.Text = GetLanguageString("edit_selectall", currentLocale, defaultLocale);
|
||||||
|
|
||||||
|
//view
|
||||||
|
|
||||||
|
|
||||||
|
//tools
|
||||||
|
checkAllToolStripMenuItem.Text = GetLanguageString("tools_checkall", currentLocale, defaultLocale);
|
||||||
|
catchupToolStripMenuItem.Text = GetLanguageString("tools_catchup", currentLocale, defaultLocale);
|
||||||
|
checkSelectedToolStripMenuItem.Text = GetLanguageString("tools_checkselected", currentLocale, defaultLocale);
|
||||||
|
addAFeedToolStripMenuItem.Text = GetLanguageString("tools_addfeed", currentLocale, defaultLocale);
|
||||||
|
removeFeedToolStripMenuItem.Text = GetLanguageString("tools_removefeed", currentLocale, defaultLocale);
|
||||||
|
feedPropertiesToolStripMenuItem.Text = GetLanguageString("tools_feedprops", currentLocale, defaultLocale);
|
||||||
|
schedulerToolStripMenuItem.Text = GetLanguageString("tools_scheduler", currentLocale, defaultLocale);
|
||||||
|
selectLanguageToolStripMenuItem.Text = GetLanguageString("tools_selectlang", currentLocale, defaultLocale);
|
||||||
|
|
||||||
|
//help
|
||||||
|
checkForUpdateToolStripMenuItem.Text = GetLanguageString("help_checkupdates", currentLocale, defaultLocale);
|
||||||
|
reportAProblemToolStripMenuItem.Text = GetLanguageString("help_reportproblem", currentLocale, defaultLocale);
|
||||||
|
aboutToolStripMenuItem.Text = string.Format(GetLanguageString("help_about", currentLocale, defaultLocale), AppProps.AppName);
|
||||||
|
|
||||||
|
//notification context menu
|
||||||
|
showWindowNotificationMenu.Text = GetLanguageString("file_showwindow", currentLocale, defaultLocale);
|
||||||
|
runCheckNotificationMenu.Text = GetLanguageString("generic_runcheck", currentLocale, defaultLocale);
|
||||||
|
quitNotificationMenu.Text = quitToolStripMenuItem.Text;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool closeOverride = false;
|
||||||
|
private void quitToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
closeOverride = true;
|
||||||
|
this.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnClosing(CancelEventArgs e)
|
||||||
|
{
|
||||||
|
if (closeNotificationTray.CheckState == CheckState.Checked && !closeOverride)
|
||||||
|
{
|
||||||
|
Visible = false;
|
||||||
|
showWindowNotificationMenu.Visible = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
base.OnClosing(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnClosed(EventArgs e)
|
||||||
|
{
|
||||||
|
if (closeNotificationTray.CheckState == CheckState.Checked && !closeOverride)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
base.OnClosed(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void importFeedsFromOpmlToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (opmlFileOpen.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
if (opmlFileOpen.Multiselect)
|
||||||
|
{
|
||||||
|
foreach (var filePath in opmlFileOpen.FileNames)
|
||||||
|
{
|
||||||
|
ImportOPML(filePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ImportOPML(opmlFileOpen.FileName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void exportFeedsAsOpmlToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
opmlFileSave.ShowDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ImportOPML(string filePath)
|
||||||
|
{
|
||||||
|
Opml opmldoc = new Opml(filePath);
|
||||||
|
|
||||||
|
Log.Info($"Opened: {filePath}");
|
||||||
|
|
||||||
|
foreach (var rssOutline in opmldoc.Body.Outlines[0].Outlines)
|
||||||
|
{
|
||||||
|
Feeds.Add(new RSSFeed(rssOutline.Title, rssOutline.XMLUrl));
|
||||||
|
|
||||||
|
Log.Info($"Added: {rssOutline.Title}");
|
||||||
|
}
|
||||||
|
|
||||||
|
Configuration.Save(Configuration.GenerateConfiguration(downloadDestination, Feeds));
|
||||||
|
|
||||||
|
UpdateSubscriptions();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void notificationIcon_MouseDoubleClick(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
Visible = true;
|
||||||
|
showWindowNotificationMenu.Visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void closeWindowToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (closeNotificationTray.CheckState == CheckState.Checked && !closeOverride)
|
||||||
|
{
|
||||||
|
Visible = false;
|
||||||
|
showWindowNotificationMenu.Visible = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CloseNotificationTray_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (sender is ToolStripMenuItem tsmi)
|
||||||
|
{
|
||||||
|
tsmi.Checked = currentConfiguration.CloseNotifTray = !currentConfiguration.CloseNotifTray;
|
||||||
|
currentConfiguration.Save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void reportAProblemToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
System.Diagnostics.Process.Start(Path.Combine(AppProps.RepoUrl, "issues", "new", "choose"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkForUpdateToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (githubClient == null)
|
||||||
|
{
|
||||||
|
githubClient = new GitHubClient(new ProductHeaderValue(AppProps.AppName, Assembly.GetExecutingAssembly().GetName().Version.ToString()));
|
||||||
|
}
|
||||||
|
|
||||||
|
Task.Run(async () =>
|
||||||
|
{
|
||||||
|
#if DEBUG
|
||||||
|
var releases = await githubClient.Repository.Release.GetAll("xercsis", $"Cordial-Test");
|
||||||
|
#else
|
||||||
|
var releases = await githubClient.Repository.Release.GetAll(AppProps.CreatorName, AppProps.AppName);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (releases.Any())
|
||||||
|
{
|
||||||
|
var assName = Assembly.GetExecutingAssembly().GetName();
|
||||||
|
|
||||||
|
Release latestRelease = null;
|
||||||
|
|
||||||
|
if (isPreRelease)
|
||||||
|
{
|
||||||
|
latestRelease = releases.FirstOrDefault(rel => rel.Prerelease);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
latestRelease = releases.FirstOrDefault(rel => !rel.Prerelease);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (latestRelease != null)
|
||||||
|
{
|
||||||
|
var tagVersion = new Version(latestRelease.TagName);
|
||||||
|
|
||||||
|
if (tagVersion > assName.Version)
|
||||||
|
{
|
||||||
|
showUpdateBox();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
[STAThread]
|
||||||
|
void showUpdateBox()
|
||||||
|
{
|
||||||
|
var currentLocale = locale != null ? locale.GetLocale(currentConfiguration.Language) : null;
|
||||||
|
var defaultLocale = locale != null ? locale.GetDefaultLocale() : null;
|
||||||
|
|
||||||
|
MessageBoxManager.Yes = GetLanguageString("generic_yes", currentLocale, defaultLocale);
|
||||||
|
MessageBoxManager.No = GetLanguageString("generic_no", currentLocale, defaultLocale);
|
||||||
|
|
||||||
|
MessageBoxManager.Register();
|
||||||
|
|
||||||
|
var dialogueResult = MessageBox.Show(
|
||||||
|
GetLanguageString("update_maintext", currentLocale, defaultLocale),
|
||||||
|
GetLanguageString("update_caption", currentLocale, defaultLocale),
|
||||||
|
MessageBoxButtons.YesNo
|
||||||
|
);
|
||||||
|
|
||||||
|
MessageBoxManager.Unregister();
|
||||||
|
|
||||||
|
if (dialogueResult == DialogResult.Yes)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
728
src/Form1.resx
Normal file
728
src/Form1.resx
Normal file
@@ -0,0 +1,728 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<metadata name="dataGridView1.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>False</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="podcastBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>1319, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="fileMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="statusStrip2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>722, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>287, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="notificationIcon.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>424, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="notificationMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>1346, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="notificationIcon.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
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
|
||||||
|
AABJRU5ErkJggg==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<metadata name="opmlFileOpen.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>859, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="opmlFileSave.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>1026, 17</value>
|
||||||
|
</metadata>
|
||||||
|
</root>
|
||||||
82
src/LocaleManager.cs
Normal file
82
src/LocaleManager.cs
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Resources;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Cordial.Globalization
|
||||||
|
{
|
||||||
|
public class LocaleManager
|
||||||
|
{
|
||||||
|
private static Dictionary<string, ResourceManager> locales = new Dictionary<string, ResourceManager>();
|
||||||
|
private static Dictionary<string, string> localehumannames = new Dictionary<string, string>();
|
||||||
|
public Dictionary<string, ResourceManager> Locales { get => locales; }
|
||||||
|
public Dictionary<string, string> LocaleHumanNames { get => localehumannames; }
|
||||||
|
public const string DefaultLocale = "en-gb";
|
||||||
|
|
||||||
|
public ResourceManager GetDefaultLocale()
|
||||||
|
{
|
||||||
|
if (locales.TryGetValue(DefaultLocale, out var resMan))
|
||||||
|
{
|
||||||
|
return resMan;
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new System.NullReferenceException("Couldn't get default locale, is it registered?");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static LocaleManager InitialiseLocales()
|
||||||
|
{
|
||||||
|
LocaleManager localeinstance = new LocaleManager();
|
||||||
|
|
||||||
|
if (!locales.Any())
|
||||||
|
{
|
||||||
|
string[] list = Directory.GetFiles(Path.Combine(Application.StartupPath, "Resources", "Languages"), "*.resx");
|
||||||
|
|
||||||
|
Assembly currentAssembly = Assembly.GetExecutingAssembly();
|
||||||
|
|
||||||
|
foreach (string str in list)
|
||||||
|
{
|
||||||
|
Regex regex = new Regex("[a-zA-Z-]*.resx");
|
||||||
|
|
||||||
|
string language = regex.Match(str).ToString().Replace(".resx", string.Empty);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(language)) continue;
|
||||||
|
|
||||||
|
if (!locales.ContainsKey(language))
|
||||||
|
{
|
||||||
|
var niceKey = language.Replace("-", "_");
|
||||||
|
|
||||||
|
var languageClass = currentAssembly.GetType($"Cordial.Resources.Languages.{niceKey}");
|
||||||
|
|
||||||
|
var instance = FormatterServices.GetUninitializedObject(languageClass.GetType());
|
||||||
|
|
||||||
|
var resProp = languageClass.GetRuntimeProperties().FirstOrDefault(x => x.Name == "ResourceManager");
|
||||||
|
|
||||||
|
var resMan = resProp.GetValue(instance) as ResourceManager;
|
||||||
|
|
||||||
|
locales.Add(language, resMan);
|
||||||
|
localehumannames.Add(resMan.GetString("human_name"), language);
|
||||||
|
|
||||||
|
Log.Info($"Registered \"{resMan.GetString("human_name")}\" into locale database");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Log.Info($"Registered: {locales.Count}/{list.Length} languages into locale database");
|
||||||
|
}
|
||||||
|
|
||||||
|
return localeinstance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ResourceManager GetLocale(string id)
|
||||||
|
{
|
||||||
|
var locale = locales.FirstOrDefault(x => x.Key == id);
|
||||||
|
if (locale.Value != null)
|
||||||
|
return locale.Value;
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
108
src/Log.cs
Normal file
108
src/Log.cs
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Cordial
|
||||||
|
{
|
||||||
|
public static class Log
|
||||||
|
{
|
||||||
|
readonly static string CurrentLogFileName =
|
||||||
|
DateTime.UtcNow.ToString(
|
||||||
|
"yyyy-MM-dd",
|
||||||
|
CultureInfo.InvariantCulture
|
||||||
|
) + ".log";
|
||||||
|
|
||||||
|
static RichTextBox RichTextBox;
|
||||||
|
static StreamWriter LogFile;
|
||||||
|
|
||||||
|
public static void Configure(RichTextBox rtb)
|
||||||
|
{
|
||||||
|
RichTextBox = rtb;
|
||||||
|
|
||||||
|
if (!Directory.Exists(AppProps.BaseDirectory))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(AppProps.BaseDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Directory.Exists(AppProps.LogDirectory))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(AppProps.LogDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
|
LogFile = new StreamWriter(
|
||||||
|
File.Open(
|
||||||
|
Path.Combine(AppProps.LogDirectory, CurrentLogFileName),
|
||||||
|
FileMode.Append,
|
||||||
|
FileAccess.Write,
|
||||||
|
FileShare.Read
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
AutoFlush = true,
|
||||||
|
NewLine = Environment.NewLine
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Info(string message)
|
||||||
|
{
|
||||||
|
var log = GetMessage("INF", message, null);
|
||||||
|
|
||||||
|
if (RichTextBox != null)
|
||||||
|
{
|
||||||
|
RichTextBox.AppendText(log);
|
||||||
|
RichTextBox.AppendText(Environment.NewLine);
|
||||||
|
}
|
||||||
|
if (LogFile != null)
|
||||||
|
{
|
||||||
|
LogFile.WriteLine(log);
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.WriteLine(log);
|
||||||
|
}
|
||||||
|
public static void Warning(string message, Exception exception)
|
||||||
|
{
|
||||||
|
var log = GetMessage("WAR", message, exception);
|
||||||
|
|
||||||
|
if (RichTextBox != null)
|
||||||
|
{
|
||||||
|
RichTextBox.AppendText(log);
|
||||||
|
RichTextBox.AppendText(Environment.NewLine);
|
||||||
|
}
|
||||||
|
if (LogFile != null)
|
||||||
|
{
|
||||||
|
LogFile.WriteLine(log);
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.WriteLine(log);
|
||||||
|
}
|
||||||
|
public static void Error(string message, Exception exception)
|
||||||
|
{
|
||||||
|
var log = GetMessage("ERR", message, exception);
|
||||||
|
|
||||||
|
if (RichTextBox != null)
|
||||||
|
{
|
||||||
|
RichTextBox.AppendText(log);
|
||||||
|
RichTextBox.AppendText(Environment.NewLine);
|
||||||
|
}
|
||||||
|
if (LogFile != null)
|
||||||
|
{
|
||||||
|
LogFile.WriteLine(log);
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.WriteLine(log);
|
||||||
|
}
|
||||||
|
|
||||||
|
static string GetMessage(string level, string message, Exception exception)
|
||||||
|
{
|
||||||
|
string logContent = $"[{DateTime.Now:yyyy/MM/dd HH:mm:ss}] [{level}] {message}";
|
||||||
|
|
||||||
|
if (exception != null)
|
||||||
|
{
|
||||||
|
logContent += $"\n{exception}";
|
||||||
|
}
|
||||||
|
|
||||||
|
return logContent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
81
src/Models/Configuration.cs
Normal file
81
src/Models/Configuration.cs
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text.Json;
|
||||||
|
|
||||||
|
namespace Cordial.Models
|
||||||
|
{
|
||||||
|
public class Configuration
|
||||||
|
{
|
||||||
|
public string Language { get; set; } = "en-gb";
|
||||||
|
public bool CloseNotifTray { get; set; } = false;
|
||||||
|
public string Destination { get; set; } = AppProps.DefaultPodcastDownloadDir;
|
||||||
|
public List<RSSFeed> Podcasts { get; set; } = new List<RSSFeed>();
|
||||||
|
|
||||||
|
public static Configuration GenerateConfiguration(string dest, IEnumerable<RSSFeed> podcasts)
|
||||||
|
=> new Configuration
|
||||||
|
{
|
||||||
|
Destination = dest,
|
||||||
|
Podcasts = podcasts.ToList()
|
||||||
|
};
|
||||||
|
|
||||||
|
public static Configuration Default
|
||||||
|
=> new Configuration();
|
||||||
|
|
||||||
|
public void Save()
|
||||||
|
=> Save(this);
|
||||||
|
|
||||||
|
public static string Save(Configuration configuration, string location = null)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(location))
|
||||||
|
{
|
||||||
|
if (!Directory.Exists(AppProps.ConfigurationDirectory))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(AppProps.ConfigurationDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
|
location = Path.Combine(AppProps.ConfigurationDirectory, "default.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
File.WriteAllText(location, JsonSerializer.Serialize(configuration, new JsonSerializerOptions
|
||||||
|
{
|
||||||
|
WriteIndented = true
|
||||||
|
}));
|
||||||
|
|
||||||
|
Log.Info($"Written configuration to: {location}");
|
||||||
|
|
||||||
|
return location;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Configuration Load(string location = null)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(location))
|
||||||
|
{
|
||||||
|
if (!Directory.Exists(AppProps.ConfigurationDirectory))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(AppProps.ConfigurationDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!File.Exists(Path.Combine(AppProps.ConfigurationDirectory, "default.json")))
|
||||||
|
{
|
||||||
|
location = Save(Default);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
location = Path.Combine(AppProps.ConfigurationDirectory, "default.json");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var data = File.ReadAllText(location);
|
||||||
|
|
||||||
|
var config = JsonSerializer.Deserialize<Configuration>(data, new JsonSerializerOptions
|
||||||
|
{
|
||||||
|
WriteIndented = true
|
||||||
|
});
|
||||||
|
|
||||||
|
Log.Info($"Loaded configuration from: {location}");
|
||||||
|
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
21
src/Models/GithubStruct.cs
Normal file
21
src/Models/GithubStruct.cs
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Cordial.Models
|
||||||
|
{
|
||||||
|
public class GithubStruct
|
||||||
|
{
|
||||||
|
public string Author { get; internal set; }
|
||||||
|
public Uri RepoUrl { get; internal set; }
|
||||||
|
|
||||||
|
public GithubStruct(string author, Uri repo)
|
||||||
|
{
|
||||||
|
Author = author;
|
||||||
|
RepoUrl = repo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GithubStruct(string author, string repo) : this(author, new Uri(repo))
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
10
src/Models/Podcast.cs
Normal file
10
src/Models/Podcast.cs
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
namespace Cordial.Models
|
||||||
|
{
|
||||||
|
public class Podcast
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public PodcastStatus Status { get; set; }
|
||||||
|
public ulong MB { get; set; }
|
||||||
|
public string Location { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
10
src/Models/PodcastStatus.cs
Normal file
10
src/Models/PodcastStatus.cs
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
namespace Cordial.Models
|
||||||
|
{
|
||||||
|
public enum PodcastStatus
|
||||||
|
{
|
||||||
|
NewlySubscribed = 0,
|
||||||
|
Subscribed = 1,
|
||||||
|
Downloading = 2,
|
||||||
|
Syncing = 3
|
||||||
|
}
|
||||||
|
}
|
||||||
20
src/Models/RSSFeed.cs
Normal file
20
src/Models/RSSFeed.cs
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Cordial.Models
|
||||||
|
{
|
||||||
|
public class RSSFeed
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public Uri URL { get; set; }
|
||||||
|
|
||||||
|
public RSSFeed() { }
|
||||||
|
|
||||||
|
public RSSFeed(string name, Uri url)
|
||||||
|
{
|
||||||
|
Name = name;
|
||||||
|
URL = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RSSFeed(string name, string url) : this(name, new Uri(url)) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
22
src/Program.cs
Normal file
22
src/Program.cs
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Cordial
|
||||||
|
{
|
||||||
|
static class Program
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The main entry point for the application.
|
||||||
|
/// </summary>
|
||||||
|
[STAThread]
|
||||||
|
static void Main()
|
||||||
|
{
|
||||||
|
Application.EnableVisualStyles();
|
||||||
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
|
Application.Run(new Form1());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
38
src/Properties/AssemblyInfo.cs
Normal file
38
src/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
using System.Resources;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
[assembly: AssemblyTitle("Cordial")]
|
||||||
|
[assembly: AssemblyDescription("A podcast aggregator")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("exsersewo")]
|
||||||
|
[assembly: AssemblyProduct("Cordial")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2020")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
|
// to COM components. If you need to access a type in this assembly from
|
||||||
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
|
[assembly: Guid("7385fd85-ee39-4db2-9853-7ad2736fab18")]
|
||||||
|
|
||||||
|
// Version information for an assembly consists of the following four values:
|
||||||
|
//
|
||||||
|
// Major Version
|
||||||
|
// Minor Version
|
||||||
|
// Build Number
|
||||||
|
// Revision
|
||||||
|
//
|
||||||
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
|
// by using the '*' as shown below:
|
||||||
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
|
[assembly: AssemblyVersion("0.1.0.0")]
|
||||||
|
[assembly: AssemblyFileVersion("0.1.0.0")]
|
||||||
|
[assembly: NeutralResourcesLanguage("en-GB")]
|
||||||
93
src/Properties/DataSources/Podcast.datasource
Normal file
93
src/Properties/DataSources/Podcast.datasource
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
This file is automatically generated by Visual Studio .Net. It is
|
||||||
|
used to store generic object data source configuration information.
|
||||||
|
Renaming the file extension or editing the content of this file may
|
||||||
|
cause the file to be unrecognizable by the program.
|
||||||
|
-->
|
||||||
|
<GenericObjectDataSource DisplayName="Podcast" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
|
||||||
|
<Children>
|
||||||
|
<GenericObjectDataSource DisplayName="Location" Version="1.0">
|
||||||
|
<TypeInfo>System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</TypeInfo>
|
||||||
|
<TypeUISetting>
|
||||||
|
<PropertyUISettings>
|
||||||
|
<PropertyUISetting Name="Podcast.Location">
|
||||||
|
<ControlSettings>
|
||||||
|
<ControlSetting ArtifactName="Microsoft:System.Windows.Forms:Form">
|
||||||
|
<BindableControlInfo Name="Details" Type="Microsoft.VSDesigner.Data.DataForm.Windows.DetailView" />
|
||||||
|
</ControlSetting>
|
||||||
|
</ControlSettings>
|
||||||
|
</PropertyUISetting>
|
||||||
|
<PropertyUISetting Name="AbsoluteUri">
|
||||||
|
<ControlSettings>
|
||||||
|
<ControlSetting ArtifactName="Microsoft:System.Windows.Forms:Form">
|
||||||
|
<BindableControlInfo Name="Label" Type="System.Windows.Forms.Label" AssemblyName="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
</ControlSetting>
|
||||||
|
</ControlSettings>
|
||||||
|
</PropertyUISetting>
|
||||||
|
<PropertyUISetting Name="AbsolutePath">
|
||||||
|
<ControlSettings>
|
||||||
|
<ControlSetting ArtifactName="Microsoft:System.Windows.Forms:Form">
|
||||||
|
<BindableControlInfo Name="[None]" Type="Microsoft.VSDesigner.Data.BindManager.NoneControlPlaceHolder" />
|
||||||
|
</ControlSetting>
|
||||||
|
</ControlSettings>
|
||||||
|
</PropertyUISetting>
|
||||||
|
<PropertyUISetting Name="Scheme">
|
||||||
|
<ControlSettings>
|
||||||
|
<ControlSetting ArtifactName="Microsoft:System.Windows.Forms:Form">
|
||||||
|
<BindableControlInfo Name="[None]" Type="Microsoft.VSDesigner.Data.BindManager.NoneControlPlaceHolder" />
|
||||||
|
</ControlSetting>
|
||||||
|
</ControlSettings>
|
||||||
|
</PropertyUISetting>
|
||||||
|
<PropertyUISetting Name="UserEscaped">
|
||||||
|
<ControlSettings>
|
||||||
|
<ControlSetting ArtifactName="Microsoft:System.Windows.Forms:Form">
|
||||||
|
<BindableControlInfo Name="[None]" Type="Microsoft.VSDesigner.Data.BindManager.NoneControlPlaceHolder" />
|
||||||
|
</ControlSetting>
|
||||||
|
</ControlSettings>
|
||||||
|
</PropertyUISetting>
|
||||||
|
<PropertyUISetting Name="UserInfo">
|
||||||
|
<ControlSettings>
|
||||||
|
<ControlSetting ArtifactName="Microsoft:System.Windows.Forms:Form">
|
||||||
|
<BindableControlInfo Name="[None]" Type="Microsoft.VSDesigner.Data.BindManager.NoneControlPlaceHolder" />
|
||||||
|
</ControlSetting>
|
||||||
|
</ControlSettings>
|
||||||
|
</PropertyUISetting>
|
||||||
|
<PropertyUISetting Name="Query">
|
||||||
|
<ControlSettings>
|
||||||
|
<ControlSetting ArtifactName="Microsoft:System.Windows.Forms:Form">
|
||||||
|
<BindableControlInfo Name="[None]" Type="Microsoft.VSDesigner.Data.BindManager.NoneControlPlaceHolder" />
|
||||||
|
</ControlSetting>
|
||||||
|
</ControlSettings>
|
||||||
|
</PropertyUISetting>
|
||||||
|
</PropertyUISettings>
|
||||||
|
</TypeUISetting>
|
||||||
|
</GenericObjectDataSource>
|
||||||
|
</Children>
|
||||||
|
<TypeInfo>Cordial.Podcast, Cordial, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
|
||||||
|
<TypeUISetting>
|
||||||
|
<PropertyUISettings>
|
||||||
|
<PropertyUISetting Name="Status">
|
||||||
|
<ControlSettings>
|
||||||
|
<ControlSetting ArtifactName="Microsoft:System.Windows.Forms:Form">
|
||||||
|
<BindableControlInfo Name="Label" Type="System.Windows.Forms.Label" AssemblyName="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
</ControlSetting>
|
||||||
|
</ControlSettings>
|
||||||
|
</PropertyUISetting>
|
||||||
|
<PropertyUISetting Name="Name">
|
||||||
|
<ControlSettings>
|
||||||
|
<ControlSetting ArtifactName="Microsoft:System.Windows.Forms:Form">
|
||||||
|
<BindableControlInfo Name="Label" Type="System.Windows.Forms.Label" AssemblyName="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
</ControlSetting>
|
||||||
|
</ControlSettings>
|
||||||
|
</PropertyUISetting>
|
||||||
|
<PropertyUISetting Name="MB">
|
||||||
|
<ControlSettings>
|
||||||
|
<ControlSetting ArtifactName="Microsoft:System.Windows.Forms:Form">
|
||||||
|
<BindableControlInfo Name="Label" Type="System.Windows.Forms.Label" AssemblyName="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
</ControlSetting>
|
||||||
|
</ControlSettings>
|
||||||
|
</PropertyUISetting>
|
||||||
|
</PropertyUISettings>
|
||||||
|
</TypeUISetting>
|
||||||
|
</GenericObjectDataSource>
|
||||||
70
src/Properties/Resources.Designer.cs
generated
Normal file
70
src/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Runtime Version:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
namespace Cordial.Properties
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
/// </summary>
|
||||||
|
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||||
|
// class via a tool like ResGen or Visual Studio.
|
||||||
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
|
// with the /str option, or rebuild your VS project.
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
internal class Resources
|
||||||
|
{
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal Resources()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the cached ResourceManager instance used by this class.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Resources.ResourceManager ResourceManager
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if ((resourceMan == null))
|
||||||
|
{
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Cordial.Properties.Resources", typeof(Resources).Assembly);
|
||||||
|
resourceMan = temp;
|
||||||
|
}
|
||||||
|
return resourceMan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Overrides the current thread's CurrentUICulture property for all
|
||||||
|
/// resource lookups using this strongly typed resource class.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Globalization.CultureInfo Culture
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
117
src/Properties/Resources.resx
Normal file
117
src/Properties/Resources.resx
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
29
src/Properties/Settings.Designer.cs
generated
Normal file
29
src/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Runtime Version:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
namespace Cordial.Properties
|
||||||
|
{
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||||
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||||
|
{
|
||||||
|
|
||||||
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||||
|
|
||||||
|
public static Settings Default
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return defaultInstance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
7
src/Properties/Settings.settings
Normal file
7
src/Properties/Settings.settings
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||||
|
<Profiles>
|
||||||
|
<Profile Name="(Default)" />
|
||||||
|
</Profiles>
|
||||||
|
<Settings />
|
||||||
|
</SettingsFile>
|
||||||
BIN
src/Resources/Icon/lime.ico
Normal file
BIN
src/Resources/Icon/lime.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
405
src/Resources/Languages/en-gb.Designer.cs
generated
Normal file
405
src/Resources/Languages/en-gb.Designer.cs
generated
Normal file
@@ -0,0 +1,405 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Runtime Version:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace Cordial.Resources.Languages {
|
||||||
|
using System;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
/// </summary>
|
||||||
|
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||||
|
// class via a tool like ResGen or Visual Studio.
|
||||||
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
|
// with the /str option, or rebuild your VS project.
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
internal class en_gb {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal en_gb() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the cached ResourceManager instance used by this class.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
|
get {
|
||||||
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Cordial.Resources.Languages.en-gb", typeof(en_gb).Assembly);
|
||||||
|
resourceMan = temp;
|
||||||
|
}
|
||||||
|
return resourceMan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Overrides the current thread's CurrentUICulture property for all
|
||||||
|
/// resource lookups using this strongly typed resource class.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Globalization.CultureInfo Culture {
|
||||||
|
get {
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Select All.
|
||||||
|
/// </summary>
|
||||||
|
internal static string edit_selectall {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("edit_selectall", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Close Window.
|
||||||
|
/// </summary>
|
||||||
|
internal static string file_close {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("file_close", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Close to Notification Tray.
|
||||||
|
/// </summary>
|
||||||
|
internal static string file_closetotray {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("file_closetotray", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Export feeds as ompl.
|
||||||
|
/// </summary>
|
||||||
|
internal static string file_exportopml {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("file_exportopml", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Import feeds from opml....
|
||||||
|
/// </summary>
|
||||||
|
internal static string file_importopml {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("file_importopml", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Preferences....
|
||||||
|
/// </summary>
|
||||||
|
internal static string file_preferences {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("file_preferences", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Quit.
|
||||||
|
/// </summary>
|
||||||
|
internal static string file_quit {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("file_quit", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Show Window.
|
||||||
|
/// </summary>
|
||||||
|
internal static string file_showwindow {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("file_showwindow", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Cleanup.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_cleanup {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_cleanup", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Download.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_download {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_download", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Downloads.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_downloads {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_downloads", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Download speed: {0}kB/s.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_downloadspeed {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_downloadspeed", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Edit.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_edit {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_edit", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to File.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_file {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_file", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Help.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_help {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_help", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Live Downloads: {0}.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_livedownloads {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_livedownloads", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Log.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_log {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_log", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to No.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_no {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_no", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Run Check.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_runcheck {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_runcheck", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Subscribe.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_subscribe {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_subscribe", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Subscriptions.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_subscriptions {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_subscriptions", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Tools.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_tools {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_tools", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to View.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_view {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_view", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Yes.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_yes {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_yes", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to About.
|
||||||
|
/// </summary>
|
||||||
|
internal static string help_about {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("help_about", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Check for updates....
|
||||||
|
/// </summary>
|
||||||
|
internal static string help_checkupdates {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("help_checkupdates", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Report a problem.
|
||||||
|
/// </summary>
|
||||||
|
internal static string help_reportproblem {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("help_reportproblem", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to English (Great Britain).
|
||||||
|
/// </summary>
|
||||||
|
internal static string human_name {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("human_name", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Add Feed.
|
||||||
|
/// </summary>
|
||||||
|
internal static string tools_addfeed {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("tools_addfeed", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Catch-up.
|
||||||
|
/// </summary>
|
||||||
|
internal static string tools_catchup {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("tools_catchup", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Check All.
|
||||||
|
/// </summary>
|
||||||
|
internal static string tools_checkall {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("tools_checkall", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Check Selected.
|
||||||
|
/// </summary>
|
||||||
|
internal static string tools_checkselected {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("tools_checkselected", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Feed Properties.
|
||||||
|
/// </summary>
|
||||||
|
internal static string tools_feedprops {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("tools_feedprops", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Remove Feed.
|
||||||
|
/// </summary>
|
||||||
|
internal static string tools_removefeed {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("tools_removefeed", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Scheduler.
|
||||||
|
/// </summary>
|
||||||
|
internal static string tools_scheduler {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("tools_scheduler", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Select Language.
|
||||||
|
/// </summary>
|
||||||
|
internal static string tools_selectlang {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("tools_selectlang", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to An update is available.
|
||||||
|
/// </summary>
|
||||||
|
internal static string update_caption {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("update_caption", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to There's a new version available, do you wish to update?.
|
||||||
|
/// </summary>
|
||||||
|
internal static string update_maintext {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("update_maintext", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
234
src/Resources/Languages/en-gb.resx
Normal file
234
src/Resources/Languages/en-gb.resx
Normal file
@@ -0,0 +1,234 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="human_name" xml:space="preserve">
|
||||||
|
<value>English (Great Britain)</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_cleanup" xml:space="preserve">
|
||||||
|
<value>Cleanup</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_download" xml:space="preserve">
|
||||||
|
<value>Download</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_downloads" xml:space="preserve">
|
||||||
|
<value>Downloads</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_edit" xml:space="preserve">
|
||||||
|
<value>Edit</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_file" xml:space="preserve">
|
||||||
|
<value>File</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_help" xml:space="preserve">
|
||||||
|
<value>Help</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_log" xml:space="preserve">
|
||||||
|
<value>Log</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_subscribe" xml:space="preserve">
|
||||||
|
<value>Subscribe</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_subscriptions" xml:space="preserve">
|
||||||
|
<value>Subscriptions</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_tools" xml:space="preserve">
|
||||||
|
<value>Tools</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_view" xml:space="preserve">
|
||||||
|
<value>View</value>
|
||||||
|
</data>
|
||||||
|
<data name="edit_selectall" xml:space="preserve">
|
||||||
|
<value>Select All</value>
|
||||||
|
</data>
|
||||||
|
<data name="file_close" xml:space="preserve">
|
||||||
|
<value>Close Window</value>
|
||||||
|
</data>
|
||||||
|
<data name="file_exportopml" xml:space="preserve">
|
||||||
|
<value>Export feeds as ompl</value>
|
||||||
|
</data>
|
||||||
|
<data name="file_importopml" xml:space="preserve">
|
||||||
|
<value>Import feeds from opml...</value>
|
||||||
|
</data>
|
||||||
|
<data name="file_preferences" xml:space="preserve">
|
||||||
|
<value>Preferences...</value>
|
||||||
|
</data>
|
||||||
|
<data name="file_quit" xml:space="preserve">
|
||||||
|
<value>Quit</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_downloadspeed" xml:space="preserve">
|
||||||
|
<value>Download speed: {0}kB/s</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_livedownloads" xml:space="preserve">
|
||||||
|
<value>Live Downloads: {0}</value>
|
||||||
|
</data>
|
||||||
|
<data name="help_about" xml:space="preserve">
|
||||||
|
<value>About</value>
|
||||||
|
</data>
|
||||||
|
<data name="help_checkupdates" xml:space="preserve">
|
||||||
|
<value>Check for updates...</value>
|
||||||
|
</data>
|
||||||
|
<data name="help_reportproblem" xml:space="preserve">
|
||||||
|
<value>Report a problem</value>
|
||||||
|
</data>
|
||||||
|
<data name="tools_addfeed" xml:space="preserve">
|
||||||
|
<value>Add Feed</value>
|
||||||
|
</data>
|
||||||
|
<data name="tools_catchup" xml:space="preserve">
|
||||||
|
<value>Catch-up</value>
|
||||||
|
</data>
|
||||||
|
<data name="tools_checkall" xml:space="preserve">
|
||||||
|
<value>Check All</value>
|
||||||
|
</data>
|
||||||
|
<data name="tools_checkselected" xml:space="preserve">
|
||||||
|
<value>Check Selected</value>
|
||||||
|
</data>
|
||||||
|
<data name="tools_feedprops" xml:space="preserve">
|
||||||
|
<value>Feed Properties</value>
|
||||||
|
</data>
|
||||||
|
<data name="tools_removefeed" xml:space="preserve">
|
||||||
|
<value>Remove Feed</value>
|
||||||
|
</data>
|
||||||
|
<data name="tools_scheduler" xml:space="preserve">
|
||||||
|
<value>Scheduler</value>
|
||||||
|
</data>
|
||||||
|
<data name="tools_selectlang" xml:space="preserve">
|
||||||
|
<value>Select Language</value>
|
||||||
|
</data>
|
||||||
|
<data name="file_showwindow" xml:space="preserve">
|
||||||
|
<value>Show Window</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_runcheck" xml:space="preserve">
|
||||||
|
<value>Run Check</value>
|
||||||
|
</data>
|
||||||
|
<data name="file_closetotray" xml:space="preserve">
|
||||||
|
<value>Close to Notification Tray</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_no" xml:space="preserve">
|
||||||
|
<value>No</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_yes" xml:space="preserve">
|
||||||
|
<value>Yes</value>
|
||||||
|
</data>
|
||||||
|
<data name="update_caption" xml:space="preserve">
|
||||||
|
<value>An update is available</value>
|
||||||
|
</data>
|
||||||
|
<data name="update_maintext" xml:space="preserve">
|
||||||
|
<value>There's a new version available, do you wish to update?</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
396
src/Resources/Languages/nl-nl.Designer.cs
generated
Normal file
396
src/Resources/Languages/nl-nl.Designer.cs
generated
Normal file
@@ -0,0 +1,396 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Runtime Version:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace Cordial.Resources.Languages {
|
||||||
|
using System;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
/// </summary>
|
||||||
|
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||||
|
// class via a tool like ResGen or Visual Studio.
|
||||||
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
|
// with the /str option, or rebuild your VS project.
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
internal class nl_nl {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal nl_nl() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the cached ResourceManager instance used by this class.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
|
get {
|
||||||
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Cordial.Resources.Languages.nl-nl", typeof(nl_nl).Assembly);
|
||||||
|
resourceMan = temp;
|
||||||
|
}
|
||||||
|
return resourceMan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Overrides the current thread's CurrentUICulture property for all
|
||||||
|
/// resource lookups using this strongly typed resource class.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Globalization.CultureInfo Culture {
|
||||||
|
get {
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Selecteer alles.
|
||||||
|
/// </summary>
|
||||||
|
internal static string edit_selectall {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("edit_selectall", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Venster sluiten.
|
||||||
|
/// </summary>
|
||||||
|
internal static string file_close {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("file_close", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Sluit naar systeemvak.
|
||||||
|
/// </summary>
|
||||||
|
internal static string file_closetotray {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("file_closetotray", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Exporteer feeds naar OPML.
|
||||||
|
/// </summary>
|
||||||
|
internal static string file_exportopml {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("file_exportopml", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Importeer feeds uit OPML.
|
||||||
|
/// </summary>
|
||||||
|
internal static string file_importopml {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("file_importopml", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Voorkeuren.
|
||||||
|
/// </summary>
|
||||||
|
internal static string file_preferences {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("file_preferences", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Afsluiten.
|
||||||
|
/// </summary>
|
||||||
|
internal static string file_quit {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("file_quit", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Toon venster.
|
||||||
|
/// </summary>
|
||||||
|
internal static string file_showwindow {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("file_showwindow", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Schoonmaken.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_cleanup {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_cleanup", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Downloaden.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_download {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_download", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Download snelheid: {0}kB/s.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_downloadspeed {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_downloadspeed", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Bewerken.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_edit {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_edit", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Bestand.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_file {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_file", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Help.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_help {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_help", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Live Downloads: {0}.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_livedownloads {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_livedownloads", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Logboek.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_log {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_log", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Nee.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_no {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_no", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Voer Check uit.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_runcheck {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_runcheck", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Abonneren.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_subscribe {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_subscribe", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Abonnementen.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_subscriptions {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_subscriptions", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Gereedschap.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_tools {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_tools", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Beeld.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_view {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_view", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Ja.
|
||||||
|
/// </summary>
|
||||||
|
internal static string generic_yes {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("generic_yes", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Over {0}.
|
||||||
|
/// </summary>
|
||||||
|
internal static string help_about {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("help_about", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Controleer op updates.
|
||||||
|
/// </summary>
|
||||||
|
internal static string help_checkupdates {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("help_checkupdates", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Meld een probleem.
|
||||||
|
/// </summary>
|
||||||
|
internal static string help_reportproblem {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("help_reportproblem", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Dutch (Nederlands).
|
||||||
|
/// </summary>
|
||||||
|
internal static string human_name {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("human_name", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Feed toevoegen.
|
||||||
|
/// </summary>
|
||||||
|
internal static string tools_addfeed {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("tools_addfeed", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Binnenhalen.
|
||||||
|
/// </summary>
|
||||||
|
internal static string tools_catchup {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("tools_catchup", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Controleer alles.
|
||||||
|
/// </summary>
|
||||||
|
internal static string tools_checkall {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("tools_checkall", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Selectievakje geselecteerd.
|
||||||
|
/// </summary>
|
||||||
|
internal static string tools_checkselected {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("tools_checkselected", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Feed eigenschappen.
|
||||||
|
/// </summary>
|
||||||
|
internal static string tools_feedprops {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("tools_feedprops", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Feed verwijderen.
|
||||||
|
/// </summary>
|
||||||
|
internal static string tools_removefeed {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("tools_removefeed", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Rooster.
|
||||||
|
/// </summary>
|
||||||
|
internal static string tools_scheduler {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("tools_scheduler", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Selecteer taal.
|
||||||
|
/// </summary>
|
||||||
|
internal static string tools_selectlang {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("tools_selectlang", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Er is een update beschikbaar..
|
||||||
|
/// </summary>
|
||||||
|
internal static string update_caption {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("update_caption", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Er is een nieuwe versie beschikbaar, wilt u updaten?.
|
||||||
|
/// </summary>
|
||||||
|
internal static string update_maintext {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("update_maintext", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
231
src/Resources/Languages/nl-nl.resx
Normal file
231
src/Resources/Languages/nl-nl.resx
Normal file
@@ -0,0 +1,231 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="human_name" xml:space="preserve">
|
||||||
|
<value>Dutch (Nederlands)</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_cleanup" xml:space="preserve">
|
||||||
|
<value>Schoonmaken</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_download" xml:space="preserve">
|
||||||
|
<value>Downloaden</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_edit" xml:space="preserve">
|
||||||
|
<value>Bewerken</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_file" xml:space="preserve">
|
||||||
|
<value>Bestand</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_help" xml:space="preserve">
|
||||||
|
<value>Help</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_log" xml:space="preserve">
|
||||||
|
<value>Logboek</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_subscribe" xml:space="preserve">
|
||||||
|
<value>Abonneren</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_subscriptions" xml:space="preserve">
|
||||||
|
<value>Abonnementen</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_tools" xml:space="preserve">
|
||||||
|
<value>Gereedschap</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_view" xml:space="preserve">
|
||||||
|
<value>Beeld</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_no" xml:space="preserve">
|
||||||
|
<value>Nee</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_yes" xml:space="preserve">
|
||||||
|
<value>Ja</value>
|
||||||
|
</data>
|
||||||
|
<data name="update_caption" xml:space="preserve">
|
||||||
|
<value>Er is een update beschikbaar.</value>
|
||||||
|
</data>
|
||||||
|
<data name="update_maintext" xml:space="preserve">
|
||||||
|
<value>Er is een nieuwe versie beschikbaar, wilt u updaten?</value>
|
||||||
|
</data>
|
||||||
|
<data name="edit_selectall" xml:space="preserve">
|
||||||
|
<value>Selecteer alles</value>
|
||||||
|
</data>
|
||||||
|
<data name="file_close" xml:space="preserve">
|
||||||
|
<value>Venster sluiten</value>
|
||||||
|
</data>
|
||||||
|
<data name="file_closetotray" xml:space="preserve">
|
||||||
|
<value>Sluit naar systeemvak</value>
|
||||||
|
</data>
|
||||||
|
<data name="file_exportopml" xml:space="preserve">
|
||||||
|
<value>Exporteer feeds naar OPML</value>
|
||||||
|
</data>
|
||||||
|
<data name="file_importopml" xml:space="preserve">
|
||||||
|
<value>Importeer feeds uit OPML</value>
|
||||||
|
</data>
|
||||||
|
<data name="file_preferences" xml:space="preserve">
|
||||||
|
<value>Voorkeuren</value>
|
||||||
|
</data>
|
||||||
|
<data name="file_quit" xml:space="preserve">
|
||||||
|
<value>Afsluiten</value>
|
||||||
|
</data>
|
||||||
|
<data name="file_showwindow" xml:space="preserve">
|
||||||
|
<value>Toon venster</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_downloadspeed" xml:space="preserve">
|
||||||
|
<value>Download snelheid: {0}kB/s</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_livedownloads" xml:space="preserve">
|
||||||
|
<value>Live Downloads: {0}</value>
|
||||||
|
</data>
|
||||||
|
<data name="generic_runcheck" xml:space="preserve">
|
||||||
|
<value>Voer Check uit</value>
|
||||||
|
</data>
|
||||||
|
<data name="help_about" xml:space="preserve">
|
||||||
|
<value>Over {0}</value>
|
||||||
|
</data>
|
||||||
|
<data name="help_checkupdates" xml:space="preserve">
|
||||||
|
<value>Controleer op updates</value>
|
||||||
|
</data>
|
||||||
|
<data name="help_reportproblem" xml:space="preserve">
|
||||||
|
<value>Meld een probleem</value>
|
||||||
|
</data>
|
||||||
|
<data name="tools_addfeed" xml:space="preserve">
|
||||||
|
<value>Feed toevoegen</value>
|
||||||
|
</data>
|
||||||
|
<data name="tools_catchup" xml:space="preserve">
|
||||||
|
<value>Binnenhalen</value>
|
||||||
|
</data>
|
||||||
|
<data name="tools_checkall" xml:space="preserve">
|
||||||
|
<value>Controleer alles</value>
|
||||||
|
</data>
|
||||||
|
<data name="tools_checkselected" xml:space="preserve">
|
||||||
|
<value>Selectievakje geselecteerd</value>
|
||||||
|
</data>
|
||||||
|
<data name="tools_feedprops" xml:space="preserve">
|
||||||
|
<value>Feed eigenschappen</value>
|
||||||
|
</data>
|
||||||
|
<data name="tools_removefeed" xml:space="preserve">
|
||||||
|
<value>Feed verwijderen</value>
|
||||||
|
</data>
|
||||||
|
<data name="tools_scheduler" xml:space="preserve">
|
||||||
|
<value>Rooster</value>
|
||||||
|
</data>
|
||||||
|
<data name="tools_selectlang" xml:space="preserve">
|
||||||
|
<value>Selecteer taal</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
17
src/packages.config
Normal file
17
src/packages.config
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Argotic.Common" version="2008.0.2.0" targetFramework="net472" />
|
||||||
|
<package id="Argotic.Core" version="2008.0.2.0" targetFramework="net472" />
|
||||||
|
<package id="Argotic.Extensions" version="2008.0.2.0" targetFramework="net472" />
|
||||||
|
<package id="Argotic.Web" version="2008.0.2.0" targetFramework="net472" />
|
||||||
|
<package id="Microsoft.Bcl.AsyncInterfaces" version="5.0.0" targetFramework="net472" />
|
||||||
|
<package id="Octokit" version="0.48.0" targetFramework="net472" />
|
||||||
|
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
|
||||||
|
<package id="System.Memory" version="4.5.4" targetFramework="net472" />
|
||||||
|
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
|
||||||
|
<package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0" targetFramework="net472" />
|
||||||
|
<package id="System.Text.Encodings.Web" version="5.0.0" targetFramework="net472" />
|
||||||
|
<package id="System.Text.Json" version="5.0.0" targetFramework="net472" />
|
||||||
|
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
|
||||||
|
<package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
|
||||||
|
</packages>
|
||||||
1
submodules/OPMLCore.NET
Submodule
1
submodules/OPMLCore.NET
Submodule
Submodule submodules/OPMLCore.NET added at 8d37cd062b
Reference in New Issue
Block a user