Add project files.
This commit is contained in:
63
.gitattributes
vendored
Normal file
63
.gitattributes
vendored
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
###############################################################################
|
||||||
|
# Set default behavior to automatically normalize line endings.
|
||||||
|
###############################################################################
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set default behavior for command prompt diff.
|
||||||
|
#
|
||||||
|
# This is need for earlier builds of msysgit that does not have it on by
|
||||||
|
# default for csharp files.
|
||||||
|
# Note: This is only used by command line
|
||||||
|
###############################################################################
|
||||||
|
#*.cs diff=csharp
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set the merge driver for project and solution files
|
||||||
|
#
|
||||||
|
# Merging from the command prompt will add diff markers to the files if there
|
||||||
|
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||||
|
# the diff markers are never inserted). Diff markers may cause the following
|
||||||
|
# file extensions to fail to load in VS. An alternative would be to treat
|
||||||
|
# these files as binary and thus will always conflict and require user
|
||||||
|
# intervention with every merge. To do so, just uncomment the entries below
|
||||||
|
###############################################################################
|
||||||
|
#*.sln merge=binary
|
||||||
|
#*.csproj merge=binary
|
||||||
|
#*.vbproj merge=binary
|
||||||
|
#*.vcxproj merge=binary
|
||||||
|
#*.vcproj merge=binary
|
||||||
|
#*.dbproj merge=binary
|
||||||
|
#*.fsproj merge=binary
|
||||||
|
#*.lsproj merge=binary
|
||||||
|
#*.wixproj merge=binary
|
||||||
|
#*.modelproj merge=binary
|
||||||
|
#*.sqlproj merge=binary
|
||||||
|
#*.wwaproj merge=binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# behavior for image files
|
||||||
|
#
|
||||||
|
# image files are treated as binary by default.
|
||||||
|
###############################################################################
|
||||||
|
#*.jpg binary
|
||||||
|
#*.png binary
|
||||||
|
#*.gif binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# diff behavior for common document formats
|
||||||
|
#
|
||||||
|
# Convert binary document formats to text before diffing them. This feature
|
||||||
|
# is only available from the command line. Turn it on by uncommenting the
|
||||||
|
# entries below.
|
||||||
|
###############################################################################
|
||||||
|
#*.doc diff=astextplain
|
||||||
|
#*.DOC diff=astextplain
|
||||||
|
#*.docx diff=astextplain
|
||||||
|
#*.DOCX diff=astextplain
|
||||||
|
#*.dot diff=astextplain
|
||||||
|
#*.DOT diff=astextplain
|
||||||
|
#*.pdf diff=astextplain
|
||||||
|
#*.PDF diff=astextplain
|
||||||
|
#*.rtf diff=astextplain
|
||||||
|
#*.RTF diff=astextplain
|
||||||
366
.gitignore
vendored
Normal file
366
.gitignore
vendored
Normal file
@@ -0,0 +1,366 @@
|
|||||||
|
## 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/
|
||||||
|
[Oo]ut/
|
||||||
|
[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
|
||||||
|
|
||||||
|
# Extra misc solution files
|
||||||
|
misc/
|
||||||
24
CHANGELOG.md
Normal file
24
CHANGELOG.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
Version 0.1.2 - 2025-07-29
|
||||||
|
|
||||||
|
* Update repository info and related URLs
|
||||||
|
* Minor changes
|
||||||
|
|
||||||
|
Version 0.1.1 - 2024-09-01
|
||||||
|
|
||||||
|
* New repository created and URLs fixed
|
||||||
|
* Update some NuGet packages
|
||||||
|
* Minor changes
|
||||||
|
|
||||||
|
Version 0.1.0 - 2023-05-19
|
||||||
|
|
||||||
|
* Add Class library project
|
||||||
|
* Add CLI project
|
||||||
|
* Update all projects
|
||||||
|
* Major and minor code changes
|
||||||
|
|
||||||
|
Version 0.0.2 - 2023-04-13
|
||||||
|
|
||||||
|
* Update to .NET Framework 4.8
|
||||||
|
* Update all NuGet Packages
|
||||||
|
* Update and rename Setup project to Installer project
|
||||||
|
* Update Release project folder names and filenames structure
|
||||||
127
CODE_OF_CONDUCT.md
Normal file
127
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
# Contributor Covenant Code of Conduct
|
||||||
|
|
||||||
|
## Our Pledge
|
||||||
|
|
||||||
|
We as members, contributors, and leaders pledge to make participation in our
|
||||||
|
community a harassment-free experience for everyone, regardless of age, body
|
||||||
|
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||||
|
identity and expression, level of experience, education, socio-economic status,
|
||||||
|
nationality, personal appearance, race, religion, or sexual identity
|
||||||
|
and orientation.
|
||||||
|
|
||||||
|
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||||
|
diverse, inclusive, and healthy community.
|
||||||
|
|
||||||
|
## Our Standards
|
||||||
|
|
||||||
|
Examples of behavior that contributes to a positive environment for our
|
||||||
|
community include:
|
||||||
|
|
||||||
|
* Demonstrating empathy and kindness toward other people
|
||||||
|
* Being respectful of differing opinions, viewpoints, and experiences
|
||||||
|
* Giving and gracefully accepting constructive feedback
|
||||||
|
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||||
|
and learning from the experience
|
||||||
|
* Focusing on what is best not just for us as individuals, but for the
|
||||||
|
overall community
|
||||||
|
|
||||||
|
Examples of unacceptable behavior include:
|
||||||
|
|
||||||
|
* The use of sexualized language or imagery, and sexual attention or
|
||||||
|
advances of any kind
|
||||||
|
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||||
|
* Public or private harassment
|
||||||
|
* Publishing others' private information, such as a physical or email
|
||||||
|
address, without their explicit permission
|
||||||
|
* Other conduct which could reasonably be considered inappropriate in a
|
||||||
|
professional setting
|
||||||
|
|
||||||
|
## Enforcement Responsibilities
|
||||||
|
|
||||||
|
Community leaders are responsible for clarifying and enforcing our standards of
|
||||||
|
acceptable behavior and will take appropriate and fair corrective action in
|
||||||
|
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||||
|
or harmful.
|
||||||
|
|
||||||
|
Community leaders have the right and responsibility to remove, edit, or reject
|
||||||
|
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||||
|
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||||
|
decisions when appropriate.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
This Code of Conduct applies within all community spaces, and also applies when
|
||||||
|
an individual is officially representing the community in public spaces.
|
||||||
|
Examples of representing our community include using an official e-mail address,
|
||||||
|
posting via an official social media account, or acting as an appointed
|
||||||
|
representative at an online or offline event.
|
||||||
|
|
||||||
|
## Enforcement
|
||||||
|
|
||||||
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||||
|
reported to the community leaders responsible for enforcement.
|
||||||
|
All complaints will be reviewed and investigated promptly and fairly.
|
||||||
|
|
||||||
|
All community leaders are obligated to respect the privacy and security of the
|
||||||
|
reporter of any incident.
|
||||||
|
|
||||||
|
## Enforcement Guidelines
|
||||||
|
|
||||||
|
Community leaders will follow these Community Impact Guidelines in determining
|
||||||
|
the consequences for any action they deem in violation of this Code of Conduct:
|
||||||
|
|
||||||
|
### 1. Correction
|
||||||
|
|
||||||
|
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||||
|
unprofessional or unwelcome in the community.
|
||||||
|
|
||||||
|
**Consequence**: A private, written warning from community leaders, providing
|
||||||
|
clarity around the nature of the violation and an explanation of why the
|
||||||
|
behavior was inappropriate. A public apology may be requested.
|
||||||
|
|
||||||
|
### 2. Warning
|
||||||
|
|
||||||
|
**Community Impact**: A violation through a single incident or series
|
||||||
|
of actions.
|
||||||
|
|
||||||
|
**Consequence**: A warning with consequences for continued behavior. No
|
||||||
|
interaction with the people involved, including unsolicited interaction with
|
||||||
|
those enforcing the Code of Conduct, for a specified period of time. This
|
||||||
|
includes avoiding interactions in community spaces as well as external channels
|
||||||
|
like social media. Violating these terms may lead to a temporary or
|
||||||
|
permanent ban.
|
||||||
|
|
||||||
|
### 3. Temporary Ban
|
||||||
|
|
||||||
|
**Community Impact**: A serious violation of community standards, including
|
||||||
|
sustained inappropriate behavior.
|
||||||
|
|
||||||
|
**Consequence**: A temporary ban from any sort of interaction or public
|
||||||
|
communication with the community for a specified period of time. No public or
|
||||||
|
private interaction with the people involved, including unsolicited interaction
|
||||||
|
with those enforcing the Code of Conduct, is allowed during this period.
|
||||||
|
Violating these terms may lead to a permanent ban.
|
||||||
|
|
||||||
|
### 4. Permanent Ban
|
||||||
|
|
||||||
|
**Community Impact**: Demonstrating a pattern of violation of community
|
||||||
|
standards, including sustained inappropriate behavior, harassment of an
|
||||||
|
individual, or aggression toward or disparagement of classes of individuals.
|
||||||
|
|
||||||
|
**Consequence**: A permanent ban from any sort of public interaction within
|
||||||
|
the community.
|
||||||
|
|
||||||
|
## Attribution
|
||||||
|
|
||||||
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||||
|
version 2.0, available at
|
||||||
|
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
||||||
|
|
||||||
|
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||||
|
enforcement ladder](https://github.com/mozilla/diversity).
|
||||||
|
|
||||||
|
[homepage]: https://www.contributor-covenant.org
|
||||||
|
|
||||||
|
For answers to common questions about this code of conduct, see the FAQ at
|
||||||
|
https://www.contributor-covenant.org/faq. Translations are available at
|
||||||
|
https://www.contributor-covenant.org/translations.
|
||||||
25
CONTRIBUTING.md
Normal file
25
CONTRIBUTING.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# @Files2Folders2Files
|
||||||
|
### The Original Automated Files 2 Folders 2 Files
|
||||||
|
## Contributing
|
||||||
|
Let's work better together. We are looking to collaborate with like-minded people who want to contribute in any capacity. Collaboration is open to everyone and we need your help if you are a:
|
||||||
|
* Collector
|
||||||
|
* Database Administrator
|
||||||
|
* Datter
|
||||||
|
* Developer
|
||||||
|
* Dumper
|
||||||
|
* Graphic Artist
|
||||||
|
* Translator
|
||||||
|
* Player
|
||||||
|
* Tester
|
||||||
|
|
||||||
|
Feel free to:
|
||||||
|
* Fork the repository
|
||||||
|
* Create an issue
|
||||||
|
* Branch your repository with the issue number and a meaningful name related to the changes you are making
|
||||||
|
* Create a pull request
|
||||||
|
|
||||||
|
## Contact
|
||||||
|
GitEmAll: [https://gitemall.devemall.int.eu.org/TommySalami/Files2Folders2Files](https://gitemall.devemall.int.eu.org/TommySalami/Files2Folders2Files "GitEmAll")
|
||||||
|
|
||||||
|
---
|
||||||
|
###### Copyright (c) 2016-2025 Files 2 Folders 2 Files - All Rights Reserved v2025-07-29-00
|
||||||
6
Files2Folders2Files-CLI/App.config
Normal file
6
Files2Folders2Files-CLI/App.config
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
|
||||||
|
</startup>
|
||||||
|
</configuration>
|
||||||
97
Files2Folders2Files-CLI/Files2Folders2Files-CLI.csproj
Normal file
97
Files2Folders2Files-CLI/Files2Folders2Files-CLI.csproj
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
<?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>{B0E50B70-FDF5-41C8-82FB-0543274CE095}</ProjectGuid>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<RootNamespace>Files2Folders2Files_CLI</RootNamespace>
|
||||||
|
<AssemblyName>Files2Folders2Files-CLI</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
|
<Deterministic>true</Deterministic>
|
||||||
|
</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>
|
||||||
|
<DocumentationFile>bin\Debug\Files2Folders2Files-CLI.xml</DocumentationFile>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugType>none</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="Serilog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Serilog.2.12.0\lib\net47\Serilog.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Serilog.Sinks.Console, Version=4.1.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Serilog.Sinks.Console.4.1.0\lib\net45\Serilog.Sinks.Console.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Serilog.Sinks.LogEmAll, Version=0.0.6.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Serilog.Sinks.LogEmAll.0.0.7\lib\net461\Serilog.Sinks.LogEmAll.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="App.config" />
|
||||||
|
<None Include="packages.config" />
|
||||||
|
<None Include="Resources\BASHes\Files2Folders2Files-Files2Folders.sh" />
|
||||||
|
<None Include="Resources\BASHes\Files2Folders2Files-Folders2Files.sh" />
|
||||||
|
<None Include="Resources\BASHes\Files2Folders2Files-Print-Donation-Info.sh" />
|
||||||
|
<None Include="Resources\BASHes\Files2Folders2Files-Print-Help-CMD.sh" />
|
||||||
|
<None Include="Resources\BASHes\Files2Folders2Files-Print-License.sh" />
|
||||||
|
<None Include="Resources\BASHes\Files2Folders2Files-Print-Version.sh" />
|
||||||
|
<None Include="Resources\BASHes\Files2Folders2Files-Save-Options.sh" />
|
||||||
|
<None Include="Resources\Batches\Files2Folders2Files-Files2Folders.bat" />
|
||||||
|
<None Include="Resources\Batches\Files2Folders2Files-Folders2Files.bat" />
|
||||||
|
<None Include="Resources\Batches\Files2Folders2Files-Print-Donation-Info.bat" />
|
||||||
|
<None Include="Resources\Batches\Files2Folders2Files-Print-Help-CMD.bat" />
|
||||||
|
<None Include="Resources\Batches\Files2Folders2Files-Print-License.bat" />
|
||||||
|
<None Include="Resources\Batches\Files2Folders2Files-Print-Version.bat" />
|
||||||
|
<None Include="Resources\Batches\Files2Folders2Files-Save-Options.bat" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
</EmbeddedResource>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Files2Folders2Files\Files2Folders2Files.csproj">
|
||||||
|
<Project>{cbad4d51-b8d5-4f07-8c71-b152f284fdf2}</Project>
|
||||||
|
<Name>Files2Folders2Files</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup />
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="Resources\BASHes\put your bash files in this directory.txt" />
|
||||||
|
<Content Include="Resources\Batches\put your batch files in this directory.txt" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
</Project>
|
||||||
55
Files2Folders2Files-CLI/Program.cs
Normal file
55
Files2Folders2Files-CLI/Program.cs
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
using Serilog;
|
||||||
|
using Serilog.Formatting.Display;
|
||||||
|
using Serilog.Sinks.LogEmAll;
|
||||||
|
|
||||||
|
namespace Files2Folders2Files_CLI
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The Main Program Class.
|
||||||
|
/// </summary>
|
||||||
|
class Program
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The main entry point for the application.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="args"></param>
|
||||||
|
static void Main(string[] args)
|
||||||
|
{
|
||||||
|
// Configure the Logger.
|
||||||
|
ConfigureSerilog();
|
||||||
|
|
||||||
|
// Create a new program object.
|
||||||
|
Files2Folders2Files.Files2Folders2Files f2f2f = new Files2Folders2Files.Files2Folders2Files();
|
||||||
|
|
||||||
|
// Set the title.
|
||||||
|
f2f2f.UpdateTitle();
|
||||||
|
|
||||||
|
// Print the version.
|
||||||
|
f2f2f.PrintVersion();
|
||||||
|
|
||||||
|
// Load the default options passed from the default options file.
|
||||||
|
f2f2f.LoadOptionsFromFile();
|
||||||
|
|
||||||
|
// Load the default options passed from the command line arguments.
|
||||||
|
f2f2f.LoadOptionsFromCLI(args);
|
||||||
|
|
||||||
|
// Process the command switch.
|
||||||
|
f2f2f.ProcessCommandSwitch();
|
||||||
|
|
||||||
|
// Output the log to a text file.
|
||||||
|
f2f2f.SaveLogToFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Configure the logger.
|
||||||
|
/// </summary>
|
||||||
|
public static void ConfigureSerilog()
|
||||||
|
{
|
||||||
|
Log.Logger = new LoggerConfiguration()
|
||||||
|
.MinimumLevel.Information()
|
||||||
|
.WriteTo.Console(outputTemplate: "{Level:u4}: {Message:lj}{NewLine}{Exception}")
|
||||||
|
.WriteToListString(new MessageTemplateTextFormatter("{Level:u4}: {Message:lj}{Exception}"))
|
||||||
|
.CreateLogger();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
36
Files2Folders2Files-CLI/Properties/AssemblyInfo.cs
Normal file
36
Files2Folders2Files-CLI/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
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("Files2Folders2Files-CLI")]
|
||||||
|
[assembly: AssemblyDescription("The Original Automated Files 2 Folders 2 Files")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("Files 2 Folders 2 Files")]
|
||||||
|
[assembly: AssemblyProduct("Files2Folders2Files-CLI")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright (c) 2016-2025 Files 2 Folders 2 Files - All Rights Reserved")]
|
||||||
|
[assembly: AssemblyTrademark("Files 2 Folders 2 Files - The Original Automated Files 2 Folders 2 Files")]
|
||||||
|
[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("b0e50b70-fdf5-41c8-82fb-0543274ce095")]
|
||||||
|
|
||||||
|
// 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.2")]
|
||||||
|
[assembly: AssemblyFileVersion("0.1.2")]
|
||||||
63
Files2Folders2Files-CLI/Properties/Resources.Designer.cs
generated
Normal file
63
Files2Folders2Files-CLI/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 Files2Folders2Files_CLI.Properties {
|
||||||
|
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", "17.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 (object.ReferenceEquals(resourceMan, null)) {
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Files2Folders2Files_CLI.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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
120
Files2Folders2Files-CLI/Properties/Resources.resx
Normal file
120
Files2Folders2Files-CLI/Properties/Resources.resx
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
<?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>
|
||||||
|
</root>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Main
|
||||||
|
mono "../Files2Folders2Files-CLI.exe" -files2folders
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Main
|
||||||
|
mono "../Files2Folders2Files-CLI.exe" -folders2files
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Main
|
||||||
|
mono "../Files2Folders2Files-CLI.exe" -donations
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Main
|
||||||
|
mono "../Files2Folders2Files-CLI.exe" -help "LF:../Logs/Files2Folders2Files-Log-00000000_000000.txt"
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Main
|
||||||
|
mono "../Files2Folders2Files-CLI.exe" -license
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Main
|
||||||
|
mono "../Files2Folders2Files-CLI.exe" -version
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Main
|
||||||
|
mono "../Files2Folders2Files-CLI.exe" -saveoptions
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
This file can be deleted.
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
rem */ Main /*
|
||||||
|
"..\Files2Folders2Files-CLI.exe" -files2folders
|
||||||
|
|
||||||
|
rem */ Pause /*
|
||||||
|
@pause
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
rem */ Main /*
|
||||||
|
"..\Files2Folders2Files-CLI.exe" -folders2files
|
||||||
|
|
||||||
|
rem */ Pause /*
|
||||||
|
@pause
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
rem */ Main /*
|
||||||
|
"..\Files2Folders2Files-CLI.exe" -donations
|
||||||
|
|
||||||
|
rem */ Pause /*
|
||||||
|
@pause
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
rem */ Main /*
|
||||||
|
"..\Files2Folders2Files-CLI.exe" -help "LF:..\Logs\Files2Folders2Files-Log-00000000_000000.txt"
|
||||||
|
|
||||||
|
rem */ Pause /*
|
||||||
|
@pause
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
rem */ Main /*
|
||||||
|
"..\Files2Folders2Files-CLI.exe" -license
|
||||||
|
|
||||||
|
rem */ Pause /*
|
||||||
|
@pause
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
rem */ Main /*
|
||||||
|
"..\Files2Folders2Files-CLI.exe" -version
|
||||||
|
|
||||||
|
rem */ Pause /*
|
||||||
|
@pause
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
rem */ Main /*
|
||||||
|
"..\Files2Folders2Files-CLI.exe" -saveoptions
|
||||||
|
|
||||||
|
rem */ Pause /*
|
||||||
|
@pause
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
This file can be deleted.
|
||||||
6
Files2Folders2Files-CLI/packages.config
Normal file
6
Files2Folders2Files-CLI/packages.config
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Serilog" version="2.12.0" targetFramework="net48" />
|
||||||
|
<package id="Serilog.Sinks.Console" version="4.1.0" targetFramework="net48" />
|
||||||
|
<package id="Serilog.Sinks.LogEmAll" version="0.0.7" targetFramework="net48" />
|
||||||
|
</packages>
|
||||||
6
Files2Folders2Files-GUI/App.config
Normal file
6
Files2Folders2Files-GUI/App.config
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
|
||||||
|
</startup>
|
||||||
|
</configuration>
|
||||||
118
Files2Folders2Files-GUI/Files2Folders2Files-GUI.csproj
Normal file
118
Files2Folders2Files-GUI/Files2Folders2Files-GUI.csproj
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
<?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>{73055FFB-47A7-4332-BB2B-410AAE263774}</ProjectGuid>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<RootNamespace>Files2Folders2Files_GUI</RootNamespace>
|
||||||
|
<AssemblyName>Files2Folders2Files-GUI</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
|
<Deterministic>true</Deterministic>
|
||||||
|
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
|
<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>1.0.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>
|
||||||
|
<DocumentationFile>bin\Debug\Files2Folders2Files-GUI.xml</DocumentationFile>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugType>none</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup />
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="Serilog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Serilog.2.12.0\lib\net47\Serilog.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Serilog.Sinks.LogEmAll, Version=0.0.6.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Serilog.Sinks.LogEmAll.0.0.7\lib\net461\Serilog.Sinks.LogEmAll.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Deployment" />
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Windows.Forms" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="FrmFiles2Folders2Files.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="FrmFiles2Folders2Files.Designer.cs">
|
||||||
|
<DependentUpon>FrmFiles2Folders2Files.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<EmbeddedResource Include="FrmFiles2Folders2Files.resx">
|
||||||
|
<DependentUpon>FrmFiles2Folders2Files.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>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
</Compile>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="App.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BootstrapperPackage Include=".NETFramework,Version=v4.6.1">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>Microsoft .NET Framework 4.6.1 %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>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Files2Folders2Files\Files2Folders2Files.csproj">
|
||||||
|
<Project>{cbad4d51-b8d5-4f07-8c71-b152f284fdf2}</Project>
|
||||||
|
<Name>Files2Folders2Files</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="Resources\Images\" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
</Project>
|
||||||
966
Files2Folders2Files-GUI/FrmFiles2Folders2Files.Designer.cs
generated
Normal file
966
Files2Folders2Files-GUI/FrmFiles2Folders2Files.Designer.cs
generated
Normal file
@@ -0,0 +1,966 @@
|
|||||||
|
namespace Files2Folders2Files_GUI
|
||||||
|
{
|
||||||
|
partial class FrmFiles2Folders2Files
|
||||||
|
{
|
||||||
|
/// <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()
|
||||||
|
{
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmFiles2Folders2Files));
|
||||||
|
this.msMain = new System.Windows.Forms.MenuStrip();
|
||||||
|
this.tsmiFiles2Folders2Files = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsmiFiles2Folders = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsmiFolders2Files = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.loadOptionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.saveOptionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.saveLogToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.tsmiExit = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsmiView = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsmiLog = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsmiOptions = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsmiHelp = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsmiLicense = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsmiDonations = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsmiRegistration = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsmiToolbar = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsMain = new System.Windows.Forms.ToolStrip();
|
||||||
|
this.tsbFiles2Folders = new System.Windows.Forms.ToolStripButton();
|
||||||
|
this.tsbFolders2Files = new System.Windows.Forms.ToolStripButton();
|
||||||
|
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.tsbLoadOptions = new System.Windows.Forms.ToolStripButton();
|
||||||
|
this.tsbSaveOptions = new System.Windows.Forms.ToolStripButton();
|
||||||
|
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.tsbSaveLog = new System.Windows.Forms.ToolStripButton();
|
||||||
|
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
|
this.tsbViewHelp = new System.Windows.Forms.ToolStripButton();
|
||||||
|
this.tsbViewLicense = new System.Windows.Forms.ToolStripButton();
|
||||||
|
this.tsbViewDonations = new System.Windows.Forms.ToolStripButton();
|
||||||
|
this.tsbViewRegistration = new System.Windows.Forms.ToolStripButton();
|
||||||
|
this.tsbViewToolbar = new System.Windows.Forms.ToolStripButton();
|
||||||
|
this.ssMain = new System.Windows.Forms.StatusStrip();
|
||||||
|
this.tsbCancel = new System.Windows.Forms.ToolStripDropDownButton();
|
||||||
|
this.tspbOverallProgress = new System.Windows.Forms.ToolStripProgressBar();
|
||||||
|
this.tsslStatus = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.tsslSnap = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.bgwFiles2Folders = new System.ComponentModel.BackgroundWorker();
|
||||||
|
this.bgwFolders2Files = new System.ComponentModel.BackgroundWorker();
|
||||||
|
this.tcMain = new System.Windows.Forms.TabControl();
|
||||||
|
this.tabLog = new System.Windows.Forms.TabPage();
|
||||||
|
this.rtblLog = new Serilog.Sinks.LogEmAll.RichTextBoxLog();
|
||||||
|
this.tabOptions = new System.Windows.Forms.TabPage();
|
||||||
|
this.gbOptionsInfo = new System.Windows.Forms.GroupBox();
|
||||||
|
this.lblOptionsInfo1 = new System.Windows.Forms.Label();
|
||||||
|
this.tlpOptions = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.gbOutputOptions = new System.Windows.Forms.GroupBox();
|
||||||
|
this.chkDeleteEmptyFolders = new System.Windows.Forms.CheckBox();
|
||||||
|
this.gbDirectoryPath = new System.Windows.Forms.GroupBox();
|
||||||
|
this.txtDirectoryPath = new System.Windows.Forms.TextBox();
|
||||||
|
this.tabHelp = new System.Windows.Forms.TabPage();
|
||||||
|
this.rtbHelp = new System.Windows.Forms.RichTextBox();
|
||||||
|
this.tabLicense = new System.Windows.Forms.TabPage();
|
||||||
|
this.rtbLicense = new System.Windows.Forms.RichTextBox();
|
||||||
|
this.tabDonations = new System.Windows.Forms.TabPage();
|
||||||
|
this.rtbDonations = new System.Windows.Forms.RichTextBox();
|
||||||
|
this.tabRegistration = new System.Windows.Forms.TabPage();
|
||||||
|
this.gbRegisterApp = new System.Windows.Forms.GroupBox();
|
||||||
|
this.bgwStartupTasks = new System.ComponentModel.BackgroundWorker();
|
||||||
|
this.txtRegisterAppUsername = new System.Windows.Forms.TextBox();
|
||||||
|
this.txtRegisterAppEmailAddress = new System.Windows.Forms.TextBox();
|
||||||
|
this.txtRegisterAppPassword = new System.Windows.Forms.TextBox();
|
||||||
|
this.btnRegisterApp = new System.Windows.Forms.Button();
|
||||||
|
this.lblRegisterAppUsername = new System.Windows.Forms.Label();
|
||||||
|
this.lblRegisterAppEmailAddress = new System.Windows.Forms.Label();
|
||||||
|
this.lblRegisterAppPassword = new System.Windows.Forms.Label();
|
||||||
|
this.lblRegistrationStatus = new System.Windows.Forms.Label();
|
||||||
|
this.lblRegistrationKey = new System.Windows.Forms.Label();
|
||||||
|
this.lblRegistrationStatusLabel = new System.Windows.Forms.Label();
|
||||||
|
this.lblRegistrationKeyLabel = new System.Windows.Forms.Label();
|
||||||
|
this.gbRegistration = new System.Windows.Forms.GroupBox();
|
||||||
|
this.tlpRegistration = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.msMain.SuspendLayout();
|
||||||
|
this.tsMain.SuspendLayout();
|
||||||
|
this.ssMain.SuspendLayout();
|
||||||
|
this.tcMain.SuspendLayout();
|
||||||
|
this.tabLog.SuspendLayout();
|
||||||
|
this.tabOptions.SuspendLayout();
|
||||||
|
this.gbOptionsInfo.SuspendLayout();
|
||||||
|
this.tlpOptions.SuspendLayout();
|
||||||
|
this.gbOutputOptions.SuspendLayout();
|
||||||
|
this.gbDirectoryPath.SuspendLayout();
|
||||||
|
this.tabHelp.SuspendLayout();
|
||||||
|
this.tabLicense.SuspendLayout();
|
||||||
|
this.tabDonations.SuspendLayout();
|
||||||
|
this.tabRegistration.SuspendLayout();
|
||||||
|
this.gbRegisterApp.SuspendLayout();
|
||||||
|
this.gbRegistration.SuspendLayout();
|
||||||
|
this.tlpRegistration.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// msMain
|
||||||
|
//
|
||||||
|
this.msMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.tsmiFiles2Folders2Files,
|
||||||
|
this.tsmiView});
|
||||||
|
this.msMain.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.msMain.Name = "msMain";
|
||||||
|
this.msMain.Size = new System.Drawing.Size(784, 24);
|
||||||
|
this.msMain.TabIndex = 0;
|
||||||
|
this.msMain.Text = "msMain";
|
||||||
|
//
|
||||||
|
// tsmiFiles2Folders2Files
|
||||||
|
//
|
||||||
|
this.tsmiFiles2Folders2Files.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.tsmiFiles2Folders,
|
||||||
|
this.tsmiFolders2Files,
|
||||||
|
this.toolStripSeparator1,
|
||||||
|
this.loadOptionsToolStripMenuItem,
|
||||||
|
this.saveOptionsToolStripMenuItem,
|
||||||
|
this.toolStripSeparator5,
|
||||||
|
this.saveLogToolStripMenuItem,
|
||||||
|
this.toolStripSeparator6,
|
||||||
|
this.tsmiExit});
|
||||||
|
this.tsmiFiles2Folders2Files.Name = "tsmiFiles2Folders2Files";
|
||||||
|
this.tsmiFiles2Folders2Files.Size = new System.Drawing.Size(127, 20);
|
||||||
|
this.tsmiFiles2Folders2Files.Text = "Files 2 Folders 2 Files";
|
||||||
|
//
|
||||||
|
// tsmiFiles2Folders
|
||||||
|
//
|
||||||
|
this.tsmiFiles2Folders.Name = "tsmiFiles2Folders";
|
||||||
|
this.tsmiFiles2Folders.Size = new System.Drawing.Size(147, 22);
|
||||||
|
this.tsmiFiles2Folders.Text = "Files 2 Folders";
|
||||||
|
this.tsmiFiles2Folders.Click += new System.EventHandler(this.Files2Folders_Click);
|
||||||
|
//
|
||||||
|
// tsmiFolders2Files
|
||||||
|
//
|
||||||
|
this.tsmiFolders2Files.Name = "tsmiFolders2Files";
|
||||||
|
this.tsmiFolders2Files.Size = new System.Drawing.Size(147, 22);
|
||||||
|
this.tsmiFolders2Files.Text = "Folders 2 Files";
|
||||||
|
this.tsmiFolders2Files.Click += new System.EventHandler(this.Folders2Files_Click);
|
||||||
|
//
|
||||||
|
// toolStripSeparator1
|
||||||
|
//
|
||||||
|
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||||
|
this.toolStripSeparator1.Size = new System.Drawing.Size(144, 6);
|
||||||
|
//
|
||||||
|
// loadOptionsToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.loadOptionsToolStripMenuItem.Name = "loadOptionsToolStripMenuItem";
|
||||||
|
this.loadOptionsToolStripMenuItem.Size = new System.Drawing.Size(147, 22);
|
||||||
|
this.loadOptionsToolStripMenuItem.Text = "Load Options";
|
||||||
|
this.loadOptionsToolStripMenuItem.Click += new System.EventHandler(this.LoadOptions_Click);
|
||||||
|
//
|
||||||
|
// saveOptionsToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.saveOptionsToolStripMenuItem.Name = "saveOptionsToolStripMenuItem";
|
||||||
|
this.saveOptionsToolStripMenuItem.Size = new System.Drawing.Size(147, 22);
|
||||||
|
this.saveOptionsToolStripMenuItem.Text = "Save Options";
|
||||||
|
this.saveOptionsToolStripMenuItem.Click += new System.EventHandler(this.SaveOptions_Click);
|
||||||
|
//
|
||||||
|
// toolStripSeparator5
|
||||||
|
//
|
||||||
|
this.toolStripSeparator5.Name = "toolStripSeparator5";
|
||||||
|
this.toolStripSeparator5.Size = new System.Drawing.Size(144, 6);
|
||||||
|
//
|
||||||
|
// saveLogToolStripMenuItem
|
||||||
|
//
|
||||||
|
this.saveLogToolStripMenuItem.Name = "saveLogToolStripMenuItem";
|
||||||
|
this.saveLogToolStripMenuItem.Size = new System.Drawing.Size(147, 22);
|
||||||
|
this.saveLogToolStripMenuItem.Text = "Save Log";
|
||||||
|
this.saveLogToolStripMenuItem.Click += new System.EventHandler(this.SaveLog_Click);
|
||||||
|
//
|
||||||
|
// toolStripSeparator6
|
||||||
|
//
|
||||||
|
this.toolStripSeparator6.Name = "toolStripSeparator6";
|
||||||
|
this.toolStripSeparator6.Size = new System.Drawing.Size(144, 6);
|
||||||
|
//
|
||||||
|
// tsmiExit
|
||||||
|
//
|
||||||
|
this.tsmiExit.Name = "tsmiExit";
|
||||||
|
this.tsmiExit.Size = new System.Drawing.Size(147, 22);
|
||||||
|
this.tsmiExit.Text = "Exit";
|
||||||
|
this.tsmiExit.Click += new System.EventHandler(this.Exit_Click);
|
||||||
|
//
|
||||||
|
// tsmiView
|
||||||
|
//
|
||||||
|
this.tsmiView.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.tsmiLog,
|
||||||
|
this.tsmiOptions,
|
||||||
|
this.tsmiHelp,
|
||||||
|
this.tsmiLicense,
|
||||||
|
this.tsmiDonations,
|
||||||
|
this.tsmiRegistration,
|
||||||
|
this.tsmiToolbar});
|
||||||
|
this.tsmiView.Name = "tsmiView";
|
||||||
|
this.tsmiView.Size = new System.Drawing.Size(44, 20);
|
||||||
|
this.tsmiView.Text = "View";
|
||||||
|
//
|
||||||
|
// tsmiLog
|
||||||
|
//
|
||||||
|
this.tsmiLog.Checked = true;
|
||||||
|
this.tsmiLog.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||||
|
this.tsmiLog.Name = "tsmiLog";
|
||||||
|
this.tsmiLog.Size = new System.Drawing.Size(137, 22);
|
||||||
|
this.tsmiLog.Text = "Log";
|
||||||
|
this.tsmiLog.Click += new System.EventHandler(this.ViewLog_Click);
|
||||||
|
//
|
||||||
|
// tsmiOptions
|
||||||
|
//
|
||||||
|
this.tsmiOptions.Checked = true;
|
||||||
|
this.tsmiOptions.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||||
|
this.tsmiOptions.Name = "tsmiOptions";
|
||||||
|
this.tsmiOptions.Size = new System.Drawing.Size(137, 22);
|
||||||
|
this.tsmiOptions.Text = "Options";
|
||||||
|
this.tsmiOptions.Click += new System.EventHandler(this.ViewOptions_Click);
|
||||||
|
//
|
||||||
|
// tsmiHelp
|
||||||
|
//
|
||||||
|
this.tsmiHelp.Name = "tsmiHelp";
|
||||||
|
this.tsmiHelp.Size = new System.Drawing.Size(137, 22);
|
||||||
|
this.tsmiHelp.Text = "Help";
|
||||||
|
this.tsmiHelp.Click += new System.EventHandler(this.ViewHelp_Click);
|
||||||
|
//
|
||||||
|
// tsmiLicense
|
||||||
|
//
|
||||||
|
this.tsmiLicense.Name = "tsmiLicense";
|
||||||
|
this.tsmiLicense.Size = new System.Drawing.Size(137, 22);
|
||||||
|
this.tsmiLicense.Text = "License";
|
||||||
|
this.tsmiLicense.Click += new System.EventHandler(this.ViewLicense_Click);
|
||||||
|
//
|
||||||
|
// tsmiDonations
|
||||||
|
//
|
||||||
|
this.tsmiDonations.Name = "tsmiDonations";
|
||||||
|
this.tsmiDonations.Size = new System.Drawing.Size(137, 22);
|
||||||
|
this.tsmiDonations.Text = "Donations";
|
||||||
|
this.tsmiDonations.Click += new System.EventHandler(this.ViewDonations_Click);
|
||||||
|
//
|
||||||
|
// tsmiRegistration
|
||||||
|
//
|
||||||
|
this.tsmiRegistration.Name = "tsmiRegistration";
|
||||||
|
this.tsmiRegistration.Size = new System.Drawing.Size(137, 22);
|
||||||
|
this.tsmiRegistration.Text = "Registration";
|
||||||
|
this.tsmiRegistration.Click += new System.EventHandler(this.ViewRegistration_Click);
|
||||||
|
//
|
||||||
|
// tsmiToolbar
|
||||||
|
//
|
||||||
|
this.tsmiToolbar.Name = "tsmiToolbar";
|
||||||
|
this.tsmiToolbar.Size = new System.Drawing.Size(137, 22);
|
||||||
|
this.tsmiToolbar.Text = "Toolbar";
|
||||||
|
this.tsmiToolbar.Click += new System.EventHandler(this.ViewToolbar_Click);
|
||||||
|
//
|
||||||
|
// tsMain
|
||||||
|
//
|
||||||
|
this.tsMain.ImageScalingSize = new System.Drawing.Size(32, 32);
|
||||||
|
this.tsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.tsbFiles2Folders,
|
||||||
|
this.tsbFolders2Files,
|
||||||
|
this.toolStripSeparator2,
|
||||||
|
this.tsbLoadOptions,
|
||||||
|
this.tsbSaveOptions,
|
||||||
|
this.toolStripSeparator3,
|
||||||
|
this.tsbSaveLog,
|
||||||
|
this.toolStripSeparator4,
|
||||||
|
this.tsbViewHelp,
|
||||||
|
this.tsbViewLicense,
|
||||||
|
this.tsbViewDonations,
|
||||||
|
this.tsbViewRegistration,
|
||||||
|
this.tsbViewToolbar});
|
||||||
|
this.tsMain.Location = new System.Drawing.Point(0, 24);
|
||||||
|
this.tsMain.Name = "tsMain";
|
||||||
|
this.tsMain.Size = new System.Drawing.Size(784, 39);
|
||||||
|
this.tsMain.TabIndex = 1;
|
||||||
|
this.tsMain.Text = "tsMain";
|
||||||
|
//
|
||||||
|
// tsbFiles2Folders
|
||||||
|
//
|
||||||
|
this.tsbFiles2Folders.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||||
|
this.tsbFiles2Folders.Image = ((System.Drawing.Image)(resources.GetObject("tsbFiles2Folders.Image")));
|
||||||
|
this.tsbFiles2Folders.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||||
|
this.tsbFiles2Folders.Name = "tsbFiles2Folders";
|
||||||
|
this.tsbFiles2Folders.Size = new System.Drawing.Size(36, 36);
|
||||||
|
this.tsbFiles2Folders.Text = "Files 2 Folders";
|
||||||
|
this.tsbFiles2Folders.Click += new System.EventHandler(this.Files2Folders_Click);
|
||||||
|
//
|
||||||
|
// tsbFolders2Files
|
||||||
|
//
|
||||||
|
this.tsbFolders2Files.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||||
|
this.tsbFolders2Files.Image = ((System.Drawing.Image)(resources.GetObject("tsbFolders2Files.Image")));
|
||||||
|
this.tsbFolders2Files.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||||
|
this.tsbFolders2Files.Name = "tsbFolders2Files";
|
||||||
|
this.tsbFolders2Files.Size = new System.Drawing.Size(36, 36);
|
||||||
|
this.tsbFolders2Files.Text = "Folders 2 Files";
|
||||||
|
this.tsbFolders2Files.Click += new System.EventHandler(this.Folders2Files_Click);
|
||||||
|
//
|
||||||
|
// toolStripSeparator2
|
||||||
|
//
|
||||||
|
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||||
|
this.toolStripSeparator2.Size = new System.Drawing.Size(6, 39);
|
||||||
|
//
|
||||||
|
// tsbLoadOptions
|
||||||
|
//
|
||||||
|
this.tsbLoadOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||||
|
this.tsbLoadOptions.Image = ((System.Drawing.Image)(resources.GetObject("tsbLoadOptions.Image")));
|
||||||
|
this.tsbLoadOptions.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||||
|
this.tsbLoadOptions.Name = "tsbLoadOptions";
|
||||||
|
this.tsbLoadOptions.Size = new System.Drawing.Size(36, 36);
|
||||||
|
this.tsbLoadOptions.Text = "Load Options";
|
||||||
|
this.tsbLoadOptions.Click += new System.EventHandler(this.LoadOptions_Click);
|
||||||
|
//
|
||||||
|
// tsbSaveOptions
|
||||||
|
//
|
||||||
|
this.tsbSaveOptions.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||||
|
this.tsbSaveOptions.Image = ((System.Drawing.Image)(resources.GetObject("tsbSaveOptions.Image")));
|
||||||
|
this.tsbSaveOptions.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||||
|
this.tsbSaveOptions.Name = "tsbSaveOptions";
|
||||||
|
this.tsbSaveOptions.Size = new System.Drawing.Size(36, 36);
|
||||||
|
this.tsbSaveOptions.Text = "Save Options";
|
||||||
|
this.tsbSaveOptions.Click += new System.EventHandler(this.SaveOptions_Click);
|
||||||
|
//
|
||||||
|
// toolStripSeparator3
|
||||||
|
//
|
||||||
|
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||||
|
this.toolStripSeparator3.Size = new System.Drawing.Size(6, 39);
|
||||||
|
//
|
||||||
|
// tsbSaveLog
|
||||||
|
//
|
||||||
|
this.tsbSaveLog.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||||
|
this.tsbSaveLog.Image = ((System.Drawing.Image)(resources.GetObject("tsbSaveLog.Image")));
|
||||||
|
this.tsbSaveLog.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||||
|
this.tsbSaveLog.Name = "tsbSaveLog";
|
||||||
|
this.tsbSaveLog.Size = new System.Drawing.Size(36, 36);
|
||||||
|
this.tsbSaveLog.Text = "Save Log";
|
||||||
|
this.tsbSaveLog.Click += new System.EventHandler(this.SaveLog_Click);
|
||||||
|
//
|
||||||
|
// toolStripSeparator4
|
||||||
|
//
|
||||||
|
this.toolStripSeparator4.Name = "toolStripSeparator4";
|
||||||
|
this.toolStripSeparator4.Size = new System.Drawing.Size(6, 39);
|
||||||
|
//
|
||||||
|
// tsbViewHelp
|
||||||
|
//
|
||||||
|
this.tsbViewHelp.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||||
|
this.tsbViewHelp.Image = ((System.Drawing.Image)(resources.GetObject("tsbViewHelp.Image")));
|
||||||
|
this.tsbViewHelp.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||||
|
this.tsbViewHelp.Name = "tsbViewHelp";
|
||||||
|
this.tsbViewHelp.Size = new System.Drawing.Size(36, 36);
|
||||||
|
this.tsbViewHelp.Text = "View Help";
|
||||||
|
this.tsbViewHelp.Click += new System.EventHandler(this.ViewHelp_Click);
|
||||||
|
//
|
||||||
|
// tsbViewLicense
|
||||||
|
//
|
||||||
|
this.tsbViewLicense.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||||
|
this.tsbViewLicense.Image = ((System.Drawing.Image)(resources.GetObject("tsbViewLicense.Image")));
|
||||||
|
this.tsbViewLicense.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||||
|
this.tsbViewLicense.Name = "tsbViewLicense";
|
||||||
|
this.tsbViewLicense.Size = new System.Drawing.Size(36, 36);
|
||||||
|
this.tsbViewLicense.Text = "View License";
|
||||||
|
this.tsbViewLicense.Click += new System.EventHandler(this.ViewLicense_Click);
|
||||||
|
//
|
||||||
|
// tsbViewDonations
|
||||||
|
//
|
||||||
|
this.tsbViewDonations.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||||
|
this.tsbViewDonations.Image = ((System.Drawing.Image)(resources.GetObject("tsbViewDonations.Image")));
|
||||||
|
this.tsbViewDonations.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||||
|
this.tsbViewDonations.Name = "tsbViewDonations";
|
||||||
|
this.tsbViewDonations.Size = new System.Drawing.Size(36, 36);
|
||||||
|
this.tsbViewDonations.Text = "View Donations";
|
||||||
|
this.tsbViewDonations.Click += new System.EventHandler(this.ViewDonations_Click);
|
||||||
|
//
|
||||||
|
// tsbViewRegistration
|
||||||
|
//
|
||||||
|
this.tsbViewRegistration.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||||
|
this.tsbViewRegistration.Image = ((System.Drawing.Image)(resources.GetObject("tsbViewRegistration.Image")));
|
||||||
|
this.tsbViewRegistration.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||||
|
this.tsbViewRegistration.Name = "tsbViewRegistration";
|
||||||
|
this.tsbViewRegistration.Size = new System.Drawing.Size(36, 36);
|
||||||
|
this.tsbViewRegistration.Text = "View Registration";
|
||||||
|
this.tsbViewRegistration.Click += new System.EventHandler(this.ViewRegistration_Click);
|
||||||
|
//
|
||||||
|
// tsbViewToolbar
|
||||||
|
//
|
||||||
|
this.tsbViewToolbar.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||||
|
this.tsbViewToolbar.Image = ((System.Drawing.Image)(resources.GetObject("tsbViewToolbar.Image")));
|
||||||
|
this.tsbViewToolbar.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||||
|
this.tsbViewToolbar.Name = "tsbViewToolbar";
|
||||||
|
this.tsbViewToolbar.Size = new System.Drawing.Size(36, 36);
|
||||||
|
this.tsbViewToolbar.Text = "View Toolbar";
|
||||||
|
this.tsbViewToolbar.Click += new System.EventHandler(this.ViewToolbar_Click);
|
||||||
|
//
|
||||||
|
// ssMain
|
||||||
|
//
|
||||||
|
this.ssMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.tsbCancel,
|
||||||
|
this.tspbOverallProgress,
|
||||||
|
this.tsslStatus,
|
||||||
|
this.tsslSnap});
|
||||||
|
this.ssMain.Location = new System.Drawing.Point(0, 359);
|
||||||
|
this.ssMain.Name = "ssMain";
|
||||||
|
this.ssMain.Size = new System.Drawing.Size(784, 22);
|
||||||
|
this.ssMain.TabIndex = 2;
|
||||||
|
this.ssMain.Text = "ssMain";
|
||||||
|
//
|
||||||
|
// tsbCancel
|
||||||
|
//
|
||||||
|
this.tsbCancel.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||||
|
this.tsbCancel.Enabled = false;
|
||||||
|
this.tsbCancel.Image = ((System.Drawing.Image)(resources.GetObject("tsbCancel.Image")));
|
||||||
|
this.tsbCancel.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||||
|
this.tsbCancel.Name = "tsbCancel";
|
||||||
|
this.tsbCancel.ShowDropDownArrow = false;
|
||||||
|
this.tsbCancel.Size = new System.Drawing.Size(20, 20);
|
||||||
|
this.tsbCancel.Text = "Cancel";
|
||||||
|
this.tsbCancel.Click += new System.EventHandler(this.Cancel_Click);
|
||||||
|
//
|
||||||
|
// tspbOverallProgress
|
||||||
|
//
|
||||||
|
this.tspbOverallProgress.MarqueeAnimationSpeed = 10;
|
||||||
|
this.tspbOverallProgress.Name = "tspbOverallProgress";
|
||||||
|
this.tspbOverallProgress.Size = new System.Drawing.Size(200, 16);
|
||||||
|
this.tspbOverallProgress.Step = 1;
|
||||||
|
//
|
||||||
|
// tsslStatus
|
||||||
|
//
|
||||||
|
this.tsslStatus.Name = "tsslStatus";
|
||||||
|
this.tsslStatus.Size = new System.Drawing.Size(39, 17);
|
||||||
|
this.tsslStatus.Text = "Ready";
|
||||||
|
//
|
||||||
|
// tsslSnap
|
||||||
|
//
|
||||||
|
this.tsslSnap.Name = "tsslSnap";
|
||||||
|
this.tsslSnap.Size = new System.Drawing.Size(508, 17);
|
||||||
|
this.tsslSnap.Spring = true;
|
||||||
|
//
|
||||||
|
// bgwFiles2Folders
|
||||||
|
//
|
||||||
|
this.bgwFiles2Folders.WorkerReportsProgress = true;
|
||||||
|
this.bgwFiles2Folders.WorkerSupportsCancellation = true;
|
||||||
|
this.bgwFiles2Folders.DoWork += new System.ComponentModel.DoWorkEventHandler(this.Files2Folders_DoWork);
|
||||||
|
this.bgwFiles2Folders.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.Files2Folders_ProgressChanged);
|
||||||
|
this.bgwFiles2Folders.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.Files2Folders_RunWorkerCompleted);
|
||||||
|
//
|
||||||
|
// bgwFolders2Files
|
||||||
|
//
|
||||||
|
this.bgwFolders2Files.WorkerReportsProgress = true;
|
||||||
|
this.bgwFolders2Files.WorkerSupportsCancellation = true;
|
||||||
|
this.bgwFolders2Files.DoWork += new System.ComponentModel.DoWorkEventHandler(this.Folders2Files_DoWork);
|
||||||
|
this.bgwFolders2Files.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.Folders2Files_ProgressChanged);
|
||||||
|
this.bgwFolders2Files.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.Folders2Files_RunWorkerCompleted);
|
||||||
|
//
|
||||||
|
// tcMain
|
||||||
|
//
|
||||||
|
this.tcMain.Controls.Add(this.tabLog);
|
||||||
|
this.tcMain.Controls.Add(this.tabOptions);
|
||||||
|
this.tcMain.Controls.Add(this.tabHelp);
|
||||||
|
this.tcMain.Controls.Add(this.tabLicense);
|
||||||
|
this.tcMain.Controls.Add(this.tabDonations);
|
||||||
|
this.tcMain.Controls.Add(this.tabRegistration);
|
||||||
|
this.tcMain.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.tcMain.Location = new System.Drawing.Point(0, 63);
|
||||||
|
this.tcMain.Name = "tcMain";
|
||||||
|
this.tcMain.SelectedIndex = 0;
|
||||||
|
this.tcMain.Size = new System.Drawing.Size(784, 296);
|
||||||
|
this.tcMain.TabIndex = 3;
|
||||||
|
//
|
||||||
|
// tabLog
|
||||||
|
//
|
||||||
|
this.tabLog.Controls.Add(this.rtblLog);
|
||||||
|
this.tabLog.Location = new System.Drawing.Point(4, 22);
|
||||||
|
this.tabLog.Name = "tabLog";
|
||||||
|
this.tabLog.Padding = new System.Windows.Forms.Padding(3);
|
||||||
|
this.tabLog.Size = new System.Drawing.Size(776, 270);
|
||||||
|
this.tabLog.TabIndex = 0;
|
||||||
|
this.tabLog.Text = " Log ";
|
||||||
|
this.tabLog.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// rtblLog
|
||||||
|
//
|
||||||
|
this.rtblLog.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.rtblLog.Location = new System.Drawing.Point(6, 6);
|
||||||
|
this.rtblLog.Name = "rtblLog";
|
||||||
|
this.rtblLog.ReadOnly = true;
|
||||||
|
this.rtblLog.Size = new System.Drawing.Size(764, 258);
|
||||||
|
this.rtblLog.TabIndex = 1;
|
||||||
|
this.rtblLog.Text = "";
|
||||||
|
//
|
||||||
|
// tabOptions
|
||||||
|
//
|
||||||
|
this.tabOptions.Controls.Add(this.gbOptionsInfo);
|
||||||
|
this.tabOptions.Controls.Add(this.tlpOptions);
|
||||||
|
this.tabOptions.Location = new System.Drawing.Point(4, 22);
|
||||||
|
this.tabOptions.Name = "tabOptions";
|
||||||
|
this.tabOptions.Padding = new System.Windows.Forms.Padding(3);
|
||||||
|
this.tabOptions.Size = new System.Drawing.Size(776, 270);
|
||||||
|
this.tabOptions.TabIndex = 1;
|
||||||
|
this.tabOptions.Text = " Options ";
|
||||||
|
this.tabOptions.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// gbOptionsInfo
|
||||||
|
//
|
||||||
|
this.gbOptionsInfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.gbOptionsInfo.Controls.Add(this.lblOptionsInfo1);
|
||||||
|
this.gbOptionsInfo.Location = new System.Drawing.Point(6, 111);
|
||||||
|
this.gbOptionsInfo.Name = "gbOptionsInfo";
|
||||||
|
this.gbOptionsInfo.Size = new System.Drawing.Size(764, 35);
|
||||||
|
this.gbOptionsInfo.TabIndex = 2;
|
||||||
|
this.gbOptionsInfo.TabStop = false;
|
||||||
|
this.gbOptionsInfo.Text = "Options Info";
|
||||||
|
//
|
||||||
|
// lblOptionsInfo1
|
||||||
|
//
|
||||||
|
this.lblOptionsInfo1.AutoSize = true;
|
||||||
|
this.lblOptionsInfo1.Location = new System.Drawing.Point(9, 16);
|
||||||
|
this.lblOptionsInfo1.Name = "lblOptionsInfo1";
|
||||||
|
this.lblOptionsInfo1.Size = new System.Drawing.Size(148, 13);
|
||||||
|
this.lblOptionsInfo1.TabIndex = 0;
|
||||||
|
this.lblOptionsInfo1.Text = "Use these options as needed.";
|
||||||
|
//
|
||||||
|
// tlpOptions
|
||||||
|
//
|
||||||
|
this.tlpOptions.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.tlpOptions.ColumnCount = 1;
|
||||||
|
this.tlpOptions.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
this.tlpOptions.Controls.Add(this.gbOutputOptions, 0, 1);
|
||||||
|
this.tlpOptions.Controls.Add(this.gbDirectoryPath, 0, 0);
|
||||||
|
this.tlpOptions.Location = new System.Drawing.Point(6, 6);
|
||||||
|
this.tlpOptions.Name = "tlpOptions";
|
||||||
|
this.tlpOptions.RowCount = 2;
|
||||||
|
this.tlpOptions.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 51F));
|
||||||
|
this.tlpOptions.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 48F));
|
||||||
|
this.tlpOptions.Size = new System.Drawing.Size(764, 99);
|
||||||
|
this.tlpOptions.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// gbOutputOptions
|
||||||
|
//
|
||||||
|
this.gbOutputOptions.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.gbOutputOptions.Controls.Add(this.chkDeleteEmptyFolders);
|
||||||
|
this.gbOutputOptions.Location = new System.Drawing.Point(3, 54);
|
||||||
|
this.gbOutputOptions.Name = "gbOutputOptions";
|
||||||
|
this.gbOutputOptions.Size = new System.Drawing.Size(758, 42);
|
||||||
|
this.gbOutputOptions.TabIndex = 1;
|
||||||
|
this.gbOutputOptions.TabStop = false;
|
||||||
|
this.gbOutputOptions.Text = "Output Options";
|
||||||
|
//
|
||||||
|
// chkDeleteEmptyFolders
|
||||||
|
//
|
||||||
|
this.chkDeleteEmptyFolders.AutoSize = true;
|
||||||
|
this.chkDeleteEmptyFolders.Location = new System.Drawing.Point(6, 19);
|
||||||
|
this.chkDeleteEmptyFolders.Name = "chkDeleteEmptyFolders";
|
||||||
|
this.chkDeleteEmptyFolders.Size = new System.Drawing.Size(126, 17);
|
||||||
|
this.chkDeleteEmptyFolders.TabIndex = 0;
|
||||||
|
this.chkDeleteEmptyFolders.Text = "Delete Empty Folders";
|
||||||
|
this.chkDeleteEmptyFolders.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// gbDirectoryPath
|
||||||
|
//
|
||||||
|
this.gbDirectoryPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.gbDirectoryPath.Controls.Add(this.txtDirectoryPath);
|
||||||
|
this.gbDirectoryPath.Location = new System.Drawing.Point(3, 3);
|
||||||
|
this.gbDirectoryPath.Name = "gbDirectoryPath";
|
||||||
|
this.gbDirectoryPath.Size = new System.Drawing.Size(758, 45);
|
||||||
|
this.gbDirectoryPath.TabIndex = 0;
|
||||||
|
this.gbDirectoryPath.TabStop = false;
|
||||||
|
this.gbDirectoryPath.Text = "Directory Path";
|
||||||
|
//
|
||||||
|
// txtDirectoryPath
|
||||||
|
//
|
||||||
|
this.txtDirectoryPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.txtDirectoryPath.Location = new System.Drawing.Point(6, 19);
|
||||||
|
this.txtDirectoryPath.Name = "txtDirectoryPath";
|
||||||
|
this.txtDirectoryPath.ReadOnly = true;
|
||||||
|
this.txtDirectoryPath.Size = new System.Drawing.Size(746, 20);
|
||||||
|
this.txtDirectoryPath.TabIndex = 0;
|
||||||
|
this.txtDirectoryPath.Click += new System.EventHandler(this.DirectoryPath_Click);
|
||||||
|
//
|
||||||
|
// tabHelp
|
||||||
|
//
|
||||||
|
this.tabHelp.Controls.Add(this.rtbHelp);
|
||||||
|
this.tabHelp.Location = new System.Drawing.Point(4, 22);
|
||||||
|
this.tabHelp.Name = "tabHelp";
|
||||||
|
this.tabHelp.Padding = new System.Windows.Forms.Padding(3);
|
||||||
|
this.tabHelp.Size = new System.Drawing.Size(776, 270);
|
||||||
|
this.tabHelp.TabIndex = 2;
|
||||||
|
this.tabHelp.Text = " Help ";
|
||||||
|
this.tabHelp.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// rtbHelp
|
||||||
|
//
|
||||||
|
this.rtbHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.rtbHelp.Location = new System.Drawing.Point(6, 6);
|
||||||
|
this.rtbHelp.Name = "rtbHelp";
|
||||||
|
this.rtbHelp.ReadOnly = true;
|
||||||
|
this.rtbHelp.Size = new System.Drawing.Size(764, 258);
|
||||||
|
this.rtbHelp.TabIndex = 0;
|
||||||
|
this.rtbHelp.Text = "";
|
||||||
|
//
|
||||||
|
// tabLicense
|
||||||
|
//
|
||||||
|
this.tabLicense.Controls.Add(this.rtbLicense);
|
||||||
|
this.tabLicense.Location = new System.Drawing.Point(4, 22);
|
||||||
|
this.tabLicense.Name = "tabLicense";
|
||||||
|
this.tabLicense.Padding = new System.Windows.Forms.Padding(3);
|
||||||
|
this.tabLicense.Size = new System.Drawing.Size(776, 270);
|
||||||
|
this.tabLicense.TabIndex = 3;
|
||||||
|
this.tabLicense.Text = " License ";
|
||||||
|
this.tabLicense.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// rtbLicense
|
||||||
|
//
|
||||||
|
this.rtbLicense.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.rtbLicense.Location = new System.Drawing.Point(6, 6);
|
||||||
|
this.rtbLicense.Name = "rtbLicense";
|
||||||
|
this.rtbLicense.ReadOnly = true;
|
||||||
|
this.rtbLicense.Size = new System.Drawing.Size(764, 258);
|
||||||
|
this.rtbLicense.TabIndex = 0;
|
||||||
|
this.rtbLicense.Text = "";
|
||||||
|
//
|
||||||
|
// tabDonations
|
||||||
|
//
|
||||||
|
this.tabDonations.Controls.Add(this.rtbDonations);
|
||||||
|
this.tabDonations.Location = new System.Drawing.Point(4, 22);
|
||||||
|
this.tabDonations.Name = "tabDonations";
|
||||||
|
this.tabDonations.Padding = new System.Windows.Forms.Padding(3);
|
||||||
|
this.tabDonations.Size = new System.Drawing.Size(776, 270);
|
||||||
|
this.tabDonations.TabIndex = 4;
|
||||||
|
this.tabDonations.Text = " Donations ";
|
||||||
|
this.tabDonations.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// rtbDonations
|
||||||
|
//
|
||||||
|
this.rtbDonations.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.rtbDonations.Location = new System.Drawing.Point(6, 6);
|
||||||
|
this.rtbDonations.Name = "rtbDonations";
|
||||||
|
this.rtbDonations.ReadOnly = true;
|
||||||
|
this.rtbDonations.Size = new System.Drawing.Size(764, 258);
|
||||||
|
this.rtbDonations.TabIndex = 0;
|
||||||
|
this.rtbDonations.Text = "";
|
||||||
|
//
|
||||||
|
// tabRegistration
|
||||||
|
//
|
||||||
|
this.tabRegistration.Controls.Add(this.tlpRegistration);
|
||||||
|
this.tabRegistration.Location = new System.Drawing.Point(4, 22);
|
||||||
|
this.tabRegistration.Name = "tabRegistration";
|
||||||
|
this.tabRegistration.Padding = new System.Windows.Forms.Padding(3);
|
||||||
|
this.tabRegistration.Size = new System.Drawing.Size(776, 270);
|
||||||
|
this.tabRegistration.TabIndex = 5;
|
||||||
|
this.tabRegistration.Text = " Registration ";
|
||||||
|
this.tabRegistration.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// gbRegisterApp
|
||||||
|
//
|
||||||
|
this.gbRegisterApp.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.gbRegisterApp.Controls.Add(this.lblRegisterAppPassword);
|
||||||
|
this.gbRegisterApp.Controls.Add(this.lblRegisterAppEmailAddress);
|
||||||
|
this.gbRegisterApp.Controls.Add(this.lblRegisterAppUsername);
|
||||||
|
this.gbRegisterApp.Controls.Add(this.btnRegisterApp);
|
||||||
|
this.gbRegisterApp.Controls.Add(this.txtRegisterAppPassword);
|
||||||
|
this.gbRegisterApp.Controls.Add(this.txtRegisterAppEmailAddress);
|
||||||
|
this.gbRegisterApp.Controls.Add(this.txtRegisterAppUsername);
|
||||||
|
this.gbRegisterApp.Location = new System.Drawing.Point(3, 3);
|
||||||
|
this.gbRegisterApp.Name = "gbRegisterApp";
|
||||||
|
this.gbRegisterApp.Size = new System.Drawing.Size(376, 126);
|
||||||
|
this.gbRegisterApp.TabIndex = 0;
|
||||||
|
this.gbRegisterApp.TabStop = false;
|
||||||
|
this.gbRegisterApp.Text = "Register App";
|
||||||
|
//
|
||||||
|
// bgwStartupTasks
|
||||||
|
//
|
||||||
|
this.bgwStartupTasks.WorkerReportsProgress = true;
|
||||||
|
this.bgwStartupTasks.DoWork += new System.ComponentModel.DoWorkEventHandler(this.StartupTasks_DoWork);
|
||||||
|
this.bgwStartupTasks.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.StartupTasks_ProgressChanged);
|
||||||
|
this.bgwStartupTasks.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.StartupTasks_RunWorkerCompleted);
|
||||||
|
//
|
||||||
|
// txtRegisterAppUsername
|
||||||
|
//
|
||||||
|
this.txtRegisterAppUsername.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.txtRegisterAppUsername.Enabled = false;
|
||||||
|
this.txtRegisterAppUsername.Location = new System.Drawing.Point(92, 19);
|
||||||
|
this.txtRegisterAppUsername.Name = "txtRegisterAppUsername";
|
||||||
|
this.txtRegisterAppUsername.Size = new System.Drawing.Size(278, 20);
|
||||||
|
this.txtRegisterAppUsername.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// txtRegisterAppEmailAddress
|
||||||
|
//
|
||||||
|
this.txtRegisterAppEmailAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.txtRegisterAppEmailAddress.Enabled = false;
|
||||||
|
this.txtRegisterAppEmailAddress.Location = new System.Drawing.Point(92, 45);
|
||||||
|
this.txtRegisterAppEmailAddress.Name = "txtRegisterAppEmailAddress";
|
||||||
|
this.txtRegisterAppEmailAddress.Size = new System.Drawing.Size(278, 20);
|
||||||
|
this.txtRegisterAppEmailAddress.TabIndex = 1;
|
||||||
|
//
|
||||||
|
// txtRegisterAppPassword
|
||||||
|
//
|
||||||
|
this.txtRegisterAppPassword.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.txtRegisterAppPassword.Enabled = false;
|
||||||
|
this.txtRegisterAppPassword.Location = new System.Drawing.Point(92, 71);
|
||||||
|
this.txtRegisterAppPassword.Name = "txtRegisterAppPassword";
|
||||||
|
this.txtRegisterAppPassword.Size = new System.Drawing.Size(278, 20);
|
||||||
|
this.txtRegisterAppPassword.TabIndex = 2;
|
||||||
|
//
|
||||||
|
// btnRegisterApp
|
||||||
|
//
|
||||||
|
this.btnRegisterApp.Enabled = false;
|
||||||
|
this.btnRegisterApp.Location = new System.Drawing.Point(92, 97);
|
||||||
|
this.btnRegisterApp.Name = "btnRegisterApp";
|
||||||
|
this.btnRegisterApp.Size = new System.Drawing.Size(80, 23);
|
||||||
|
this.btnRegisterApp.TabIndex = 3;
|
||||||
|
this.btnRegisterApp.Text = "Register App";
|
||||||
|
this.btnRegisterApp.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// lblRegisterAppUsername
|
||||||
|
//
|
||||||
|
this.lblRegisterAppUsername.AutoSize = true;
|
||||||
|
this.lblRegisterAppUsername.Location = new System.Drawing.Point(6, 22);
|
||||||
|
this.lblRegisterAppUsername.Name = "lblRegisterAppUsername";
|
||||||
|
this.lblRegisterAppUsername.Size = new System.Drawing.Size(61, 13);
|
||||||
|
this.lblRegisterAppUsername.TabIndex = 4;
|
||||||
|
this.lblRegisterAppUsername.Text = "Username: ";
|
||||||
|
//
|
||||||
|
// lblRegisterAppEmailAddress
|
||||||
|
//
|
||||||
|
this.lblRegisterAppEmailAddress.AutoSize = true;
|
||||||
|
this.lblRegisterAppEmailAddress.Location = new System.Drawing.Point(6, 48);
|
||||||
|
this.lblRegisterAppEmailAddress.Name = "lblRegisterAppEmailAddress";
|
||||||
|
this.lblRegisterAppEmailAddress.Size = new System.Drawing.Size(79, 13);
|
||||||
|
this.lblRegisterAppEmailAddress.TabIndex = 5;
|
||||||
|
this.lblRegisterAppEmailAddress.Text = "Email Address: ";
|
||||||
|
//
|
||||||
|
// lblRegisterAppPassword
|
||||||
|
//
|
||||||
|
this.lblRegisterAppPassword.AutoSize = true;
|
||||||
|
this.lblRegisterAppPassword.Location = new System.Drawing.Point(6, 74);
|
||||||
|
this.lblRegisterAppPassword.Name = "lblRegisterAppPassword";
|
||||||
|
this.lblRegisterAppPassword.Size = new System.Drawing.Size(59, 13);
|
||||||
|
this.lblRegisterAppPassword.TabIndex = 6;
|
||||||
|
this.lblRegisterAppPassword.Text = "Password: ";
|
||||||
|
//
|
||||||
|
// lblRegistrationStatus
|
||||||
|
//
|
||||||
|
this.lblRegistrationStatus.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.lblRegistrationStatus.Location = new System.Drawing.Point(55, 22);
|
||||||
|
this.lblRegistrationStatus.Name = "lblRegistrationStatus";
|
||||||
|
this.lblRegistrationStatus.Size = new System.Drawing.Size(315, 13);
|
||||||
|
this.lblRegistrationStatus.TabIndex = 0;
|
||||||
|
this.lblRegistrationStatus.Text = "unregistered";
|
||||||
|
//
|
||||||
|
// lblRegistrationKey
|
||||||
|
//
|
||||||
|
this.lblRegistrationKey.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.lblRegistrationKey.Location = new System.Drawing.Point(55, 48);
|
||||||
|
this.lblRegistrationKey.Name = "lblRegistrationKey";
|
||||||
|
this.lblRegistrationKey.Size = new System.Drawing.Size(315, 13);
|
||||||
|
this.lblRegistrationKey.TabIndex = 1;
|
||||||
|
//
|
||||||
|
// lblRegistrationStatusLabel
|
||||||
|
//
|
||||||
|
this.lblRegistrationStatusLabel.AutoSize = true;
|
||||||
|
this.lblRegistrationStatusLabel.Location = new System.Drawing.Point(6, 22);
|
||||||
|
this.lblRegistrationStatusLabel.Name = "lblRegistrationStatusLabel";
|
||||||
|
this.lblRegistrationStatusLabel.Size = new System.Drawing.Size(43, 13);
|
||||||
|
this.lblRegistrationStatusLabel.TabIndex = 2;
|
||||||
|
this.lblRegistrationStatusLabel.Text = "Status: ";
|
||||||
|
//
|
||||||
|
// lblRegistrationKeyLabel
|
||||||
|
//
|
||||||
|
this.lblRegistrationKeyLabel.AutoSize = true;
|
||||||
|
this.lblRegistrationKeyLabel.Location = new System.Drawing.Point(6, 48);
|
||||||
|
this.lblRegistrationKeyLabel.Name = "lblRegistrationKeyLabel";
|
||||||
|
this.lblRegistrationKeyLabel.Size = new System.Drawing.Size(31, 13);
|
||||||
|
this.lblRegistrationKeyLabel.TabIndex = 3;
|
||||||
|
this.lblRegistrationKeyLabel.Text = "Key: ";
|
||||||
|
//
|
||||||
|
// gbRegistration
|
||||||
|
//
|
||||||
|
this.gbRegistration.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.gbRegistration.Controls.Add(this.lblRegistrationKey);
|
||||||
|
this.gbRegistration.Controls.Add(this.lblRegistrationKeyLabel);
|
||||||
|
this.gbRegistration.Controls.Add(this.lblRegistrationStatus);
|
||||||
|
this.gbRegistration.Controls.Add(this.lblRegistrationStatusLabel);
|
||||||
|
this.gbRegistration.Location = new System.Drawing.Point(385, 3);
|
||||||
|
this.gbRegistration.Name = "gbRegistration";
|
||||||
|
this.gbRegistration.Size = new System.Drawing.Size(376, 126);
|
||||||
|
this.gbRegistration.TabIndex = 1;
|
||||||
|
this.gbRegistration.TabStop = false;
|
||||||
|
this.gbRegistration.Text = "Registration";
|
||||||
|
//
|
||||||
|
// tlpRegistration
|
||||||
|
//
|
||||||
|
this.tlpRegistration.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.tlpRegistration.ColumnCount = 2;
|
||||||
|
this.tlpRegistration.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.tlpRegistration.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.tlpRegistration.Controls.Add(this.gbRegistration, 1, 0);
|
||||||
|
this.tlpRegistration.Controls.Add(this.gbRegisterApp, 0, 0);
|
||||||
|
this.tlpRegistration.Location = new System.Drawing.Point(6, 6);
|
||||||
|
this.tlpRegistration.Name = "tlpRegistration";
|
||||||
|
this.tlpRegistration.RowCount = 1;
|
||||||
|
this.tlpRegistration.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.tlpRegistration.Size = new System.Drawing.Size(764, 132);
|
||||||
|
this.tlpRegistration.TabIndex = 2;
|
||||||
|
//
|
||||||
|
// FrmFiles2Folders2Files
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.ClientSize = new System.Drawing.Size(784, 381);
|
||||||
|
this.Controls.Add(this.tcMain);
|
||||||
|
this.Controls.Add(this.ssMain);
|
||||||
|
this.Controls.Add(this.tsMain);
|
||||||
|
this.Controls.Add(this.msMain);
|
||||||
|
this.MainMenuStrip = this.msMain;
|
||||||
|
this.Name = "FrmFiles2Folders2Files";
|
||||||
|
this.Text = "Files 2 Folders 2 Files";
|
||||||
|
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Files2Folders2Files_FormClosing);
|
||||||
|
this.Shown += new System.EventHandler(this.Form_Shown);
|
||||||
|
this.msMain.ResumeLayout(false);
|
||||||
|
this.msMain.PerformLayout();
|
||||||
|
this.tsMain.ResumeLayout(false);
|
||||||
|
this.tsMain.PerformLayout();
|
||||||
|
this.ssMain.ResumeLayout(false);
|
||||||
|
this.ssMain.PerformLayout();
|
||||||
|
this.tcMain.ResumeLayout(false);
|
||||||
|
this.tabLog.ResumeLayout(false);
|
||||||
|
this.tabOptions.ResumeLayout(false);
|
||||||
|
this.gbOptionsInfo.ResumeLayout(false);
|
||||||
|
this.gbOptionsInfo.PerformLayout();
|
||||||
|
this.tlpOptions.ResumeLayout(false);
|
||||||
|
this.gbOutputOptions.ResumeLayout(false);
|
||||||
|
this.gbOutputOptions.PerformLayout();
|
||||||
|
this.gbDirectoryPath.ResumeLayout(false);
|
||||||
|
this.gbDirectoryPath.PerformLayout();
|
||||||
|
this.tabHelp.ResumeLayout(false);
|
||||||
|
this.tabLicense.ResumeLayout(false);
|
||||||
|
this.tabDonations.ResumeLayout(false);
|
||||||
|
this.tabRegistration.ResumeLayout(false);
|
||||||
|
this.gbRegisterApp.ResumeLayout(false);
|
||||||
|
this.gbRegisterApp.PerformLayout();
|
||||||
|
this.gbRegistration.ResumeLayout(false);
|
||||||
|
this.gbRegistration.PerformLayout();
|
||||||
|
this.tlpRegistration.ResumeLayout(false);
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.MenuStrip msMain;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsmiFiles2Folders2Files;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsmiFiles2Folders;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsmiFolders2Files;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsmiExit;
|
||||||
|
private System.Windows.Forms.ToolStrip tsMain;
|
||||||
|
private System.Windows.Forms.ToolStripButton tsbFiles2Folders;
|
||||||
|
private System.Windows.Forms.ToolStripButton tsbFolders2Files;
|
||||||
|
private System.Windows.Forms.StatusStrip ssMain;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel tsslSnap;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel tsslStatus;
|
||||||
|
private System.Windows.Forms.ToolStripDropDownButton tsbCancel;
|
||||||
|
private System.ComponentModel.BackgroundWorker bgwFiles2Folders;
|
||||||
|
private System.ComponentModel.BackgroundWorker bgwFolders2Files;
|
||||||
|
private System.Windows.Forms.TabControl tcMain;
|
||||||
|
private System.Windows.Forms.TabPage tabLog;
|
||||||
|
private System.Windows.Forms.TabPage tabOptions;
|
||||||
|
private System.Windows.Forms.TableLayoutPanel tlpOptions;
|
||||||
|
private System.Windows.Forms.GroupBox gbDirectoryPath;
|
||||||
|
private System.Windows.Forms.TextBox txtDirectoryPath;
|
||||||
|
private System.Windows.Forms.GroupBox gbOutputOptions;
|
||||||
|
private System.Windows.Forms.CheckBox chkDeleteEmptyFolders;
|
||||||
|
private System.Windows.Forms.ToolStripProgressBar tspbOverallProgress;
|
||||||
|
private System.ComponentModel.BackgroundWorker bgwStartupTasks;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsmiView;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsmiLog;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsmiOptions;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsmiHelp;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsmiLicense;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
||||||
|
private System.Windows.Forms.ToolStripButton tsbViewHelp;
|
||||||
|
private System.Windows.Forms.ToolStripButton tsbViewLicense;
|
||||||
|
private System.Windows.Forms.TabPage tabHelp;
|
||||||
|
private System.Windows.Forms.TabPage tabLicense;
|
||||||
|
private System.Windows.Forms.RichTextBox rtbHelp;
|
||||||
|
private System.Windows.Forms.RichTextBox rtbLicense;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsmiToolbar;
|
||||||
|
private System.Windows.Forms.ToolStripButton tsbViewToolbar;
|
||||||
|
private System.Windows.Forms.TabPage tabDonations;
|
||||||
|
private System.Windows.Forms.TabPage tabRegistration;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsmiDonations;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsmiRegistration;
|
||||||
|
private System.Windows.Forms.ToolStripButton tsbViewDonations;
|
||||||
|
private System.Windows.Forms.ToolStripButton tsbViewRegistration;
|
||||||
|
private System.Windows.Forms.GroupBox gbOptionsInfo;
|
||||||
|
private System.Windows.Forms.Label lblOptionsInfo1;
|
||||||
|
private System.Windows.Forms.RichTextBox rtbDonations;
|
||||||
|
private Serilog.Sinks.LogEmAll.RichTextBoxLog rtblLog;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem loadOptionsToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem saveOptionsToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem saveLogToolStripMenuItem;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
|
||||||
|
private System.Windows.Forms.ToolStripButton tsbLoadOptions;
|
||||||
|
private System.Windows.Forms.ToolStripButton tsbSaveOptions;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
||||||
|
private System.Windows.Forms.ToolStripButton tsbSaveLog;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
|
||||||
|
private System.Windows.Forms.GroupBox gbRegisterApp;
|
||||||
|
private System.Windows.Forms.Label lblRegistrationStatus;
|
||||||
|
private System.Windows.Forms.Label lblRegisterAppPassword;
|
||||||
|
private System.Windows.Forms.Label lblRegisterAppEmailAddress;
|
||||||
|
private System.Windows.Forms.Label lblRegisterAppUsername;
|
||||||
|
private System.Windows.Forms.Button btnRegisterApp;
|
||||||
|
private System.Windows.Forms.TextBox txtRegisterAppPassword;
|
||||||
|
private System.Windows.Forms.TextBox txtRegisterAppEmailAddress;
|
||||||
|
private System.Windows.Forms.TextBox txtRegisterAppUsername;
|
||||||
|
private System.Windows.Forms.Label lblRegistrationKeyLabel;
|
||||||
|
private System.Windows.Forms.Label lblRegistrationStatusLabel;
|
||||||
|
private System.Windows.Forms.Label lblRegistrationKey;
|
||||||
|
private System.Windows.Forms.GroupBox gbRegistration;
|
||||||
|
private System.Windows.Forms.TableLayoutPanel tlpRegistration;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
787
Files2Folders2Files-GUI/FrmFiles2Folders2Files.cs
Normal file
787
Files2Folders2Files-GUI/FrmFiles2Folders2Files.cs
Normal file
@@ -0,0 +1,787 @@
|
|||||||
|
using Serilog;
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.IO;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Files2Folders2Files_GUI
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// FrmFiles2Folders2Files Form Class.
|
||||||
|
/// </summary>
|
||||||
|
public partial class FrmFiles2Folders2Files : Form
|
||||||
|
{
|
||||||
|
#region Constructors
|
||||||
|
|
||||||
|
Files2Folders2Files.Files2Folders2Files f2f2f = new Files2Folders2Files.Files2Folders2Files();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// FrmFiles2Folders2Files-GUI Constructor
|
||||||
|
/// </summary>
|
||||||
|
public FrmFiles2Folders2Files()
|
||||||
|
{
|
||||||
|
// Initialize the form.
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
// Print the version.
|
||||||
|
f2f2f.PrintVersion();
|
||||||
|
|
||||||
|
// Load the default options passed from the default options file.
|
||||||
|
f2f2f.LoadOptionsFromFile();
|
||||||
|
|
||||||
|
// Load the default options passed from the command line arguments.
|
||||||
|
f2f2f.LoadOptionsFromCLI(Environment.GetCommandLineArgs());
|
||||||
|
|
||||||
|
// Add data bindings.
|
||||||
|
chkDeleteEmptyFolders.DataBindings.Add("Checked", f2f2f, "DeleteEmptyFolders");
|
||||||
|
txtDirectoryPath.DataBindings.Add("Text", f2f2f, "DirectoryPath");
|
||||||
|
lblRegistrationKey.DataBindings.Add("Text", f2f2f, "RegistrationKey");
|
||||||
|
lblRegistrationStatus.DataBindings.Add("Text", f2f2f, "RegistrationStatus");
|
||||||
|
txtRegisterAppUsername.DataBindings.Add("Text", f2f2f, "RegisterAppUsername");
|
||||||
|
txtRegisterAppEmailAddress.DataBindings.Add("Text", f2f2f, "RegisterAppEmailAddress");
|
||||||
|
txtRegisterAppPassword.DataBindings.Add("Text", f2f2f, "RegisterAppPassword");
|
||||||
|
|
||||||
|
// Hide some tabs.
|
||||||
|
tcMain.TabPages.Remove(tabHelp);
|
||||||
|
tcMain.TabPages.Remove(tabLicense);
|
||||||
|
tcMain.TabPages.Remove(tabDonations);
|
||||||
|
tcMain.TabPages.Remove(tabRegistration);
|
||||||
|
|
||||||
|
// Update the title.
|
||||||
|
UpdateTitle();
|
||||||
|
|
||||||
|
// Load the GUI RichTextBoxes from resources.
|
||||||
|
rtbHelp.Text = Files2Folders2Files.Properties.Resources.Files2Folders2Files_HELP;
|
||||||
|
rtbLicense.Text = Files2Folders2Files.Properties.Resources.Files2Folders2Files_LICENSE;
|
||||||
|
rtbDonations.Text = Files2Folders2Files.Properties.Resources.Files2Folders2Files_DONATIONS;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Public Accessors
|
||||||
|
|
||||||
|
/// LogLines
|
||||||
|
public string[] LogLines
|
||||||
|
{
|
||||||
|
get { return rtblLog.Lines; }
|
||||||
|
set { rtblLog.Lines = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Log
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Saves the log to a text file.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="strPath"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool SaveLogToFile(string strPath = null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (strPath != null)
|
||||||
|
{
|
||||||
|
f2f2f.PathLogFile = strPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Determine if the user selected a log filename.
|
||||||
|
if (f2f2f.PathLogFile.Length == 0)
|
||||||
|
{
|
||||||
|
// Return a bool value.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Saving log file ...");
|
||||||
|
|
||||||
|
// Create log file directory if it doesn't exist.
|
||||||
|
if (Directory.Exists(Path.GetDirectoryName(f2f2f.PathLogFile)) == false) Directory.CreateDirectory(Path.GetDirectoryName(f2f2f.PathLogFile));
|
||||||
|
|
||||||
|
// Save the contents of the log to a text file.
|
||||||
|
File.WriteAllLines(f2f2f.PathLogFile, LogLines);
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Log file saved (" + f2f2f.PathLogFile + ")");
|
||||||
|
|
||||||
|
// Return a bool value.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Error("Saving log file failed");
|
||||||
|
Log.Error(ex.Message);
|
||||||
|
|
||||||
|
// Return a bool value.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Startup Tasks
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Performs the startup tasks.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void StartupTasks_DoWork(object sender, DoWorkEventArgs e)
|
||||||
|
{
|
||||||
|
// Stub
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// StartupTasks Progress Changed.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void StartupTasks_ProgressChanged(object sender, ProgressChangedEventArgs e)
|
||||||
|
{
|
||||||
|
// Stub
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// StartupTasks RunWorker Completed.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void StartupTasks_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Ready");
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region GUI Methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the application title.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="strTitle"></param>
|
||||||
|
private void UpdateTitle(string strTitle = "")
|
||||||
|
{
|
||||||
|
if (this.InvokeRequired && !this.IsDisposed)
|
||||||
|
{
|
||||||
|
Invoke(new MethodInvoker(delegate ()
|
||||||
|
{
|
||||||
|
// Update the application title.
|
||||||
|
this.Text = f2f2f.AppName + " v" + f2f2f.AppVersion + strTitle;
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
else if (!this.IsDisposed)
|
||||||
|
{
|
||||||
|
// Update the application title.
|
||||||
|
this.Text = f2f2f.AppName + " v" + f2f2f.AppVersion + strTitle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Updates the status message label.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="strMsg"></param>
|
||||||
|
private void UpdateStatusMessageLabel(string strMsg)
|
||||||
|
{
|
||||||
|
if (this.InvokeRequired && !this.IsDisposed)
|
||||||
|
{
|
||||||
|
Invoke(new MethodInvoker(delegate ()
|
||||||
|
{
|
||||||
|
// Update the progress status message label.
|
||||||
|
this.tsslStatus.Text = strMsg;
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
else if (!this.IsDisposed)
|
||||||
|
{
|
||||||
|
// Update the progress status message label.
|
||||||
|
this.tsslStatus.Text = strMsg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private delegate void DisableAllButtonsDelegate();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Disables all the buttons and textboxes and checkboxes.
|
||||||
|
/// </summary>
|
||||||
|
private void DisableAllButtons()
|
||||||
|
{
|
||||||
|
// Disable the toolstrip buttons.
|
||||||
|
tsbFiles2Folders.Enabled = false;
|
||||||
|
tsbFolders2Files.Enabled = false;
|
||||||
|
|
||||||
|
// Disable the menustrip buttons.
|
||||||
|
tsmiFiles2Folders.Enabled = false;
|
||||||
|
tsmiFolders2Files.Enabled = false;
|
||||||
|
|
||||||
|
// Disable the textboxes.
|
||||||
|
txtDirectoryPath.Enabled = false;
|
||||||
|
|
||||||
|
// Disable the checkboxes.
|
||||||
|
chkDeleteEmptyFolders.Enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private delegate void EnableAllButtonsDelegate();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Enables all the buttons and textboxes and checkboxes.
|
||||||
|
/// </summary>
|
||||||
|
private void EnableAllButtons()
|
||||||
|
{
|
||||||
|
// Enable the toolstrip buttons.
|
||||||
|
tsbFiles2Folders.Enabled = true;
|
||||||
|
tsbFolders2Files.Enabled = true;
|
||||||
|
|
||||||
|
// Disable the menustrip buttons.
|
||||||
|
tsmiFiles2Folders.Enabled = true;
|
||||||
|
tsmiFolders2Files.Enabled = true;
|
||||||
|
|
||||||
|
// Enable the textboxes.
|
||||||
|
txtDirectoryPath.Enabled = true;
|
||||||
|
|
||||||
|
// Enable the checkboxes.
|
||||||
|
chkDeleteEmptyFolders.Enabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region GUI Events
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Builds files to folders.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void Files2Folders_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// Select the Log tab.
|
||||||
|
if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); }
|
||||||
|
|
||||||
|
// Disable all buttons.
|
||||||
|
DisableAllButtons();
|
||||||
|
|
||||||
|
// Enable the Cancel Button.
|
||||||
|
tsbCancel.Enabled = true;
|
||||||
|
|
||||||
|
// Update the status message label.
|
||||||
|
UpdateStatusMessageLabel("Building Files 2 Folders ...");
|
||||||
|
|
||||||
|
// Build Files 2 Folders.
|
||||||
|
bgwFiles2Folders.RunWorkerAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Builds folders to files.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void Folders2Files_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// Select the Log tab.
|
||||||
|
if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); }
|
||||||
|
|
||||||
|
// Disable all buttons.
|
||||||
|
DisableAllButtons();
|
||||||
|
|
||||||
|
// Enable the Cancel Button.
|
||||||
|
tsbCancel.Enabled = true;
|
||||||
|
|
||||||
|
// Update the status message label.
|
||||||
|
UpdateStatusMessageLabel("Building Folders 2 Files ...");
|
||||||
|
|
||||||
|
// Build Folders 2 Files.
|
||||||
|
bgwFolders2Files.RunWorkerAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Updates the directory path.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void DirectoryPath_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// Disable all buttons.
|
||||||
|
DisableAllButtons();
|
||||||
|
|
||||||
|
if (txtDirectoryPath.Text == "") { txtDirectoryPath.Text = "."; }
|
||||||
|
|
||||||
|
// Create and initialize a FolderBrowserDialog for the directory path.
|
||||||
|
FolderBrowserDialog fbdSelectDir = new FolderBrowserDialog
|
||||||
|
{
|
||||||
|
ShowNewFolderButton = true,
|
||||||
|
Description = "Please enter a directory path: ",
|
||||||
|
SelectedPath = Path.GetFullPath(Path.Combine(txtDirectoryPath.Text))
|
||||||
|
};
|
||||||
|
|
||||||
|
// Determine if the user selected OK from the FolderBrowserDialog.
|
||||||
|
if (fbdSelectDir.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
// Set both variables for compatibility for Windows .NET and Mono.
|
||||||
|
this.f2f2f.DirectoryPath = fbdSelectDir.SelectedPath;
|
||||||
|
txtDirectoryPath.Text = fbdSelectDir.SelectedPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enable all buttons.
|
||||||
|
EnableAllButtons();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Loads an options file.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void LoadOptions_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// Disable all buttons.
|
||||||
|
DisableAllButtons();
|
||||||
|
|
||||||
|
// Create and initialize an OpenFileDialog for the options file.
|
||||||
|
OpenFileDialog ofdOptions = new OpenFileDialog
|
||||||
|
{
|
||||||
|
DefaultExt = "*.xml",
|
||||||
|
Filter = "XML Files|*.xml",
|
||||||
|
Title = "Please enter a path to the options file: ",
|
||||||
|
InitialDirectory = Path.Combine(Application.StartupPath, "Options")
|
||||||
|
};
|
||||||
|
|
||||||
|
// Determine if the user selected a file name from the OpenFileDialog.
|
||||||
|
if (ofdOptions.ShowDialog() == DialogResult.OK && ofdOptions.FileName.Length > 0)
|
||||||
|
{
|
||||||
|
// Set the options file path.
|
||||||
|
f2f2f.PathOptionsFile = ofdOptions.FileName;
|
||||||
|
|
||||||
|
// Select the Log tab.
|
||||||
|
if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); }
|
||||||
|
|
||||||
|
// Load the options.
|
||||||
|
f2f2f.LoadOptionsFromFile();
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Ready");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dispose of the OpenFileDialog.
|
||||||
|
ofdOptions.Dispose();
|
||||||
|
|
||||||
|
// Enable all buttons.
|
||||||
|
EnableAllButtons();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Saves an options file.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void SaveOptions_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// Disable all buttons.
|
||||||
|
DisableAllButtons();
|
||||||
|
|
||||||
|
// Create and initialize a SaveFileDialog for the options file.
|
||||||
|
SaveFileDialog sfdOptions = new SaveFileDialog
|
||||||
|
{
|
||||||
|
DefaultExt = "*.xml",
|
||||||
|
Filter = "XML Files|*.xml",
|
||||||
|
FileName = "Files2Folders2Files-Options.xml",
|
||||||
|
Title = "Please enter a path to the options file: ",
|
||||||
|
InitialDirectory = Path.Combine(Application.StartupPath, "Options")
|
||||||
|
};
|
||||||
|
|
||||||
|
// Determine if the user selected a file name from the SaveFileDialog.
|
||||||
|
if (sfdOptions.ShowDialog() == DialogResult.OK && sfdOptions.FileName.Length > 0)
|
||||||
|
{
|
||||||
|
// Set the options file path.
|
||||||
|
f2f2f.PathOptionsFile = sfdOptions.FileName;
|
||||||
|
|
||||||
|
// Select the Log tab.
|
||||||
|
if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); }
|
||||||
|
|
||||||
|
// Save the options.
|
||||||
|
f2f2f.SaveOptionsToFile();
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Ready");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dispose of the SaveFileDialog.
|
||||||
|
sfdOptions.Dispose();
|
||||||
|
|
||||||
|
// Enable all buttons.
|
||||||
|
EnableAllButtons();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Saves the log to a text file.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void SaveLog_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// Disable all buttons.
|
||||||
|
DisableAllButtons();
|
||||||
|
|
||||||
|
// Create and initialize a SaveFileDialog for the log file.
|
||||||
|
SaveFileDialog sfdLog = new SaveFileDialog
|
||||||
|
{
|
||||||
|
DefaultExt = "*.txt",
|
||||||
|
Filter = "TXT Files|*.txt",
|
||||||
|
FileName = "Files2Folders2Files-Log-" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".txt",
|
||||||
|
Title = "Please enter a path to the log file: ",
|
||||||
|
InitialDirectory = Path.Combine(Application.StartupPath, "Logs")
|
||||||
|
};
|
||||||
|
|
||||||
|
// Determine if the user selected a log filename.
|
||||||
|
if (sfdLog.ShowDialog() == DialogResult.OK && sfdLog.FileName.Length > 0)
|
||||||
|
{
|
||||||
|
// Set the log file path.
|
||||||
|
f2f2f.PathLogFile = sfdLog.FileName;
|
||||||
|
|
||||||
|
// Select the Log tab.
|
||||||
|
if (tcMain.TabPages.Contains(tabLog)) { tcMain.SelectTab(tabLog); }
|
||||||
|
|
||||||
|
// Save the log.
|
||||||
|
SaveLogToFile(f2f2f.PathLogFile);
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Ready");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dispose of the SaveFileDialog.
|
||||||
|
sfdLog.Dispose();
|
||||||
|
|
||||||
|
// Enable all buttons.
|
||||||
|
EnableAllButtons();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Toggles the visibility of the log.
|
||||||
|
/// </summary>
|
||||||
|
private void ViewLog_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (tsmiLog.Checked)
|
||||||
|
{
|
||||||
|
tsmiLog.Checked = false;
|
||||||
|
tsmiLog.CheckState = CheckState.Unchecked;
|
||||||
|
tcMain.TabPages.Remove(tabLog);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tsmiLog.Checked = true;
|
||||||
|
tsmiLog.CheckState = CheckState.Checked;
|
||||||
|
tcMain.TabPages.Add(tabLog);
|
||||||
|
tcMain.SelectTab(tabLog);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Toggles the visibility of the options.
|
||||||
|
/// </summary>
|
||||||
|
private void ViewOptions_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (tsmiOptions.Checked)
|
||||||
|
{
|
||||||
|
tsmiOptions.Checked = false;
|
||||||
|
tsmiOptions.CheckState = CheckState.Unchecked;
|
||||||
|
tcMain.TabPages.Remove(tabOptions);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tsmiOptions.Checked = true;
|
||||||
|
tsmiOptions.CheckState = CheckState.Checked;
|
||||||
|
tcMain.TabPages.Add(tabOptions);
|
||||||
|
tcMain.SelectTab(tabOptions);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Toggles the visibility of the help.
|
||||||
|
/// </summary>
|
||||||
|
private void ViewHelp_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (tsmiHelp.Checked)
|
||||||
|
{
|
||||||
|
tsmiHelp.Checked = false;
|
||||||
|
tsmiHelp.CheckState = CheckState.Unchecked;
|
||||||
|
tcMain.TabPages.Remove(tabHelp);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tsmiHelp.Checked = true;
|
||||||
|
tsmiHelp.CheckState = CheckState.Checked;
|
||||||
|
tcMain.TabPages.Add(tabHelp);
|
||||||
|
tcMain.SelectTab(tabHelp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Toggles the visibility of the license.
|
||||||
|
/// </summary>
|
||||||
|
private void ViewLicense_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (tsmiLicense.Checked)
|
||||||
|
{
|
||||||
|
tsmiLicense.Checked = false;
|
||||||
|
tsmiLicense.CheckState = CheckState.Unchecked;
|
||||||
|
tcMain.TabPages.Remove(tabLicense);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tsmiLicense.Checked = true;
|
||||||
|
tsmiLicense.CheckState = CheckState.Checked;
|
||||||
|
tcMain.TabPages.Add(tabLicense);
|
||||||
|
tcMain.SelectTab(tabLicense);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Toggles the visibility of the registration.
|
||||||
|
/// </summary>
|
||||||
|
private void ViewRegistration_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (tsmiRegistration.Checked)
|
||||||
|
{
|
||||||
|
tsmiRegistration.Checked = false;
|
||||||
|
tsmiRegistration.CheckState = CheckState.Unchecked;
|
||||||
|
tcMain.TabPages.Remove(tabRegistration);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tsmiRegistration.Checked = true;
|
||||||
|
tsmiRegistration.CheckState = CheckState.Checked;
|
||||||
|
tcMain.TabPages.Add(tabRegistration);
|
||||||
|
tcMain.SelectTab(tabRegistration);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Toggles the visibility of the Donations.
|
||||||
|
/// </summary>
|
||||||
|
private void ViewDonations_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (tsmiDonations.Checked)
|
||||||
|
{
|
||||||
|
tsmiDonations.Checked = false;
|
||||||
|
tsmiDonations.CheckState = CheckState.Unchecked;
|
||||||
|
tcMain.TabPages.Remove(tabDonations);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tsmiDonations.Checked = true;
|
||||||
|
tsmiDonations.CheckState = CheckState.Checked;
|
||||||
|
tcMain.TabPages.Add(tabDonations);
|
||||||
|
tcMain.SelectTab(tabDonations);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Toggles the visibility of the toolbar.
|
||||||
|
/// </summary>
|
||||||
|
private void ViewToolbar_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (tsMain.Visible)
|
||||||
|
{
|
||||||
|
tsMain.Visible = false;
|
||||||
|
tsmiToolbar.Checked = false;
|
||||||
|
tsmiToolbar.CheckState = CheckState.Unchecked;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tsMain.Visible = true;
|
||||||
|
tsmiToolbar.Checked = true;
|
||||||
|
tsmiToolbar.CheckState = CheckState.Checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Cancels the build.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void Cancel_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (bgwFiles2Folders.IsBusy == true || bgwFolders2Files.IsBusy == true)
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Info: Cancellation pending after current operation ...");
|
||||||
|
|
||||||
|
// Disable the cancel button.
|
||||||
|
tsbCancel.Enabled = false;
|
||||||
|
|
||||||
|
// Cancel the asynchronous operation.
|
||||||
|
if (bgwFiles2Folders.IsBusy == true) { bgwFiles2Folders.CancelAsync(); }
|
||||||
|
if (bgwFolders2Files.IsBusy == true) { bgwFolders2Files.CancelAsync(); }
|
||||||
|
|
||||||
|
// Update the status message label.
|
||||||
|
UpdateStatusMessageLabel("Cancellation Pending ...");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Exits the WinForms app.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void Exit_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Application.Exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// After the form is shown, run the startup tasks.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void Form_Shown(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// Perform the application startup tasks.
|
||||||
|
bgwStartupTasks.RunWorkerAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Checks things to make sure it is safe, before closing the form.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void Files2Folders2Files_FormClosing(object sender, FormClosingEventArgs e)
|
||||||
|
{
|
||||||
|
if (bgwFiles2Folders.IsBusy == true || bgwFolders2Files.IsBusy == true)
|
||||||
|
{
|
||||||
|
if (MessageBox.Show("The builder is currently running. Exiting now may cause corrupt or incomplete files! Are you sure you want to exit now?", "Confirm Exit", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK)
|
||||||
|
{
|
||||||
|
e.Cancel = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Builders
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Moves all pf the files from a single directory into folders of matching names.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void Files2Folders_DoWork(object sender, DoWorkEventArgs e)
|
||||||
|
{
|
||||||
|
// Run Files2Folders builder.
|
||||||
|
f2f2f.BuildFiles2Folders(sender, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Changes the progress of the Files 2 Folders background worker.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void Files2Folders_ProgressChanged(object sender, ProgressChangedEventArgs e)
|
||||||
|
{
|
||||||
|
// Update the overall progress bar.
|
||||||
|
tspbOverallProgress.Value = e.ProgressPercentage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Completes the Files 2 Folders background worker.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void Files2Folders_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Cancelled)
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Info: Files 2 Folders cancelled");
|
||||||
|
}
|
||||||
|
else if (e.Error != null)
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Error: Files 2 Folders failed");
|
||||||
|
Log.Information("Error: " + e.Error.Message);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset the overall progress bar.
|
||||||
|
tspbOverallProgress.Value = 0;
|
||||||
|
|
||||||
|
// Disable the cancel button.
|
||||||
|
tsbCancel.Enabled = false;
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Info: Ready");
|
||||||
|
|
||||||
|
// Update the status message label.
|
||||||
|
UpdateStatusMessageLabel("Ready");
|
||||||
|
|
||||||
|
// Enable all buttons.
|
||||||
|
Invoke(new EnableAllButtonsDelegate(EnableAllButtons));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Moves all of the files from all of the folders into a single directory.
|
||||||
|
/// Optionally deletes all of the empty folders.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void Folders2Files_DoWork(object sender, DoWorkEventArgs e)
|
||||||
|
{
|
||||||
|
// Run Files2Folders builder.
|
||||||
|
f2f2f.BuildFolders2Files(sender, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Changes the progress of the Folders 2 Files background worker.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void Folders2Files_ProgressChanged(object sender, ProgressChangedEventArgs e)
|
||||||
|
{
|
||||||
|
// Update the overall progress bar.
|
||||||
|
tspbOverallProgress.Value = e.ProgressPercentage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Completes the Folders 2 Files background worker.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void Folders2Files_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Cancelled)
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Info: Folders 2 Files cancelled");
|
||||||
|
}
|
||||||
|
else if (e.Error != null)
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Error: Folders 2 Files failed");
|
||||||
|
Log.Information("Error: " + e.Error.Message);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset the overall progress bar.
|
||||||
|
tspbOverallProgress.Value = 0;
|
||||||
|
|
||||||
|
// Disable the cancel button.
|
||||||
|
tsbCancel.Enabled = false;
|
||||||
|
|
||||||
|
// Update the status message label.
|
||||||
|
UpdateStatusMessageLabel("Ready");
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Info: Ready");
|
||||||
|
|
||||||
|
// Enable all buttons.
|
||||||
|
Invoke(new EnableAllButtonsDelegate(EnableAllButtons));
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
307
Files2Folders2Files-GUI/FrmFiles2Folders2Files.resx
Normal file
307
Files2Folders2Files-GUI/FrmFiles2Folders2Files.resx
Normal file
@@ -0,0 +1,307 @@
|
|||||||
|
<?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="msMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="tsMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>112, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="tsbFiles2Folders.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||||
|
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||||
|
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||||
|
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||||
|
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||||
|
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||||
|
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||||
|
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||||
|
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||||
|
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||||
|
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbFolders2Files.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||||
|
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||||
|
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||||
|
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||||
|
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||||
|
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||||
|
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||||
|
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||||
|
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||||
|
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||||
|
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbLoadOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||||
|
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||||
|
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||||
|
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||||
|
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||||
|
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||||
|
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||||
|
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||||
|
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||||
|
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||||
|
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbSaveOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||||
|
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||||
|
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||||
|
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||||
|
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||||
|
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||||
|
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||||
|
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||||
|
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||||
|
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||||
|
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbSaveLog.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||||
|
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||||
|
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||||
|
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||||
|
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||||
|
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||||
|
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||||
|
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||||
|
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||||
|
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||||
|
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbViewHelp.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||||
|
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||||
|
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||||
|
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||||
|
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||||
|
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||||
|
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||||
|
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||||
|
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||||
|
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||||
|
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbViewLicense.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||||
|
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||||
|
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||||
|
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||||
|
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||||
|
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||||
|
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||||
|
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||||
|
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||||
|
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||||
|
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbViewDonations.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||||
|
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||||
|
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||||
|
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||||
|
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||||
|
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||||
|
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||||
|
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||||
|
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||||
|
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||||
|
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbViewRegistration.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||||
|
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||||
|
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||||
|
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||||
|
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||||
|
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||||
|
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||||
|
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||||
|
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||||
|
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||||
|
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="tsbViewToolbar.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||||
|
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||||
|
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||||
|
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||||
|
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||||
|
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||||
|
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||||
|
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||||
|
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||||
|
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||||
|
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<metadata name="ssMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>200, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<data name="tsbCancel.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||||
|
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||||
|
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||||
|
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||||
|
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||||
|
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||||
|
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||||
|
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||||
|
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||||
|
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||||
|
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<metadata name="bgwFiles2Folders.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>289, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="bgwFolders2Files.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>434, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="bgwStartupTasks.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>579, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>63</value>
|
||||||
|
</metadata>
|
||||||
|
</root>
|
||||||
34
Files2Folders2Files-GUI/Program.cs
Normal file
34
Files2Folders2Files-GUI/Program.cs
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
using Serilog;
|
||||||
|
using Serilog.Formatting.Display;
|
||||||
|
using Serilog.Sinks.LogEmAll;
|
||||||
|
using System;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Files2Folders2Files_GUI
|
||||||
|
{
|
||||||
|
static class Program
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The main entry point for the application.
|
||||||
|
/// </summary>
|
||||||
|
[STAThread]
|
||||||
|
static void Main()
|
||||||
|
{
|
||||||
|
ConfigureSerilog();
|
||||||
|
Application.EnableVisualStyles();
|
||||||
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
|
Application.Run(new FrmFiles2Folders2Files());
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Configure the logger.
|
||||||
|
/// </summary>
|
||||||
|
public static void ConfigureSerilog()
|
||||||
|
{
|
||||||
|
Log.Logger = new LoggerConfiguration()
|
||||||
|
.MinimumLevel.Information()
|
||||||
|
.WriteToRichTextBox(new MessageTemplateTextFormatter("{Level:u4}: {Message:lj}{NewLine}{Exception}"))
|
||||||
|
.CreateLogger();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
36
Files2Folders2Files-GUI/Properties/AssemblyInfo.cs
Normal file
36
Files2Folders2Files-GUI/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
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("Files 2 Folders 2 Files")]
|
||||||
|
[assembly: AssemblyDescription("The Original Automated Files 2 Folders 2 Files")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("Files 2 Folders 2 Files")]
|
||||||
|
[assembly: AssemblyProduct("Files 2 Folders 2 Files-GUI")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright (c) 2016-2025 Files 2 Folders 2 Files - All Rights Reserved")]
|
||||||
|
[assembly: AssemblyTrademark("Files 2 Folders 2 Files - The Original Automated Files 2 Folders 2 Files")]
|
||||||
|
[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("73055ffb-47a7-4332-bb2b-410aae263774")]
|
||||||
|
|
||||||
|
// 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.2")]
|
||||||
|
[assembly: AssemblyFileVersion("0.1.2")]
|
||||||
63
Files2Folders2Files-GUI/Properties/Resources.Designer.cs
generated
Normal file
63
Files2Folders2Files-GUI/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 Files2Folders2Files_GUI.Properties {
|
||||||
|
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", "17.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 (object.ReferenceEquals(resourceMan, null)) {
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Files2Folders2Files_GUI.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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
120
Files2Folders2Files-GUI/Properties/Resources.resx
Normal file
120
Files2Folders2Files-GUI/Properties/Resources.resx
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
<?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>
|
||||||
|
</root>
|
||||||
5
Files2Folders2Files-GUI/packages.config
Normal file
5
Files2Folders2Files-GUI/packages.config
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Serilog" version="2.12.0" targetFramework="net48" />
|
||||||
|
<package id="Serilog.Sinks.LogEmAll" version="0.0.7" targetFramework="net48" />
|
||||||
|
</packages>
|
||||||
1849
Files2Folders2Files-Installer/Files2Folders2Files-Installer.vdproj
Normal file
1849
Files2Folders2Files-Installer/Files2Folders2Files-Installer.vdproj
Normal file
File diff suppressed because it is too large
Load Diff
118
Files2Folders2Files-Release/Files2Folders2Files-Release.csproj
Normal file
118
Files2Folders2Files-Release/Files2Folders2Files-Release.csproj
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
|
||||||
|
<Import Project="..\packages\ILMerge.3.0.41\build\ILMerge.props" Condition="Exists('..\packages\ILMerge.3.0.41\build\ILMerge.props')" />
|
||||||
|
<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>{68E72165-E8D2-4B40-8801-BC16D5D160AC}</ProjectGuid>
|
||||||
|
<NuGetPackageImportStamp>
|
||||||
|
</NuGetPackageImportStamp>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<ReleaseName>Files2Folders2Files</ReleaseName>
|
||||||
|
<ReleaseVersion>0.1.2</ReleaseVersion>
|
||||||
|
<ReleasePortableName>Files2Folders2Files-Portable</ReleasePortableName>
|
||||||
|
<ReleaseInstallerName>Files2Folders2Files-Installer</ReleaseInstallerName>
|
||||||
|
<ReleasePackageName>Files2Folders2Files-Package</ReleasePackageName>
|
||||||
|
<ReleaseSourceName>Files2Folders2Files-Source</ReleaseSourceName>
|
||||||
|
<ReleaseDLLName>Files2Folders2Files</ReleaseDLLName>
|
||||||
|
<ReleaseCLIName>Files2Folders2Files-CLI</ReleaseCLIName>
|
||||||
|
<ReleaseGUIName>Files2Folders2Files-GUI</ReleaseGUIName>
|
||||||
|
<PortableDir>$(OutputPath)Portable\</PortableDir>
|
||||||
|
<ILMergeDir>$(OutputPath)ILMerge\</ILMergeDir>
|
||||||
|
<PackageDir>$(OutputPath)Package</PackageDir>
|
||||||
|
<InstallerDir>$(OutputPath)Installer\</InstallerDir>
|
||||||
|
<SourceDir>$(OutputPath)Source\</SourceDir>
|
||||||
|
<ReleasesDir>$(OutputPath)Releases\</ReleasesDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Target Name="Build">
|
||||||
|
<CallTarget Targets="Clean" />
|
||||||
|
<CallTarget Condition="$(Configuration) == 'Release'" Targets="CreateILMergeFiles" />
|
||||||
|
<CallTarget Targets="CreatePortableFiles" />
|
||||||
|
<CallTarget Targets="CreatePackageFiles" />
|
||||||
|
<CallTarget Targets="CreateInstallerFiles" />
|
||||||
|
<CallTarget Targets="CreateSourceFiles" />
|
||||||
|
<CallTarget Targets="CreateReleasesFiles" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="Clean">
|
||||||
|
<RemoveDir Condition="$(Configuration) == 'Release'" Directories="$(ILMergeDir)" />
|
||||||
|
<MakeDir Condition="$(Configuration) == 'Release'" Directories="$(ILMergeDir)" />
|
||||||
|
<RemoveDir Directories="$(PortableDir)" />
|
||||||
|
<MakeDir Directories="$(PortableDir)" />
|
||||||
|
<RemoveDir Directories="$(PackageDir)" />
|
||||||
|
<MakeDir Directories="$(PackageDir)" />
|
||||||
|
<RemoveDir Directories="$(InstallerDir)" />
|
||||||
|
<MakeDir Directories="$(InstallerDir)" />
|
||||||
|
<RemoveDir Directories="$(SourceDir)" />
|
||||||
|
<MakeDir Directories="$(SourceDir)" />
|
||||||
|
<RemoveDir Directories="$(ReleasesDir)" />
|
||||||
|
<MakeDir Directories="$(ReleasesDir)" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="CreateILMergeFiles">
|
||||||
|
<Exec Command="%22$(SolutionDir)packages\ILMerge.3.0.41\tools\net452\ILMerge.exe%22 /out:%22$(ILMergeDir)$(ReleaseCLIName).exe%22 %22$(SolutionDir)$(ReleaseCLIName)\bin\$(Configuration)\$(ReleaseCLIName).exe%22 %22$(SolutionDir)$(ReleaseCLIName)\bin\$(Configuration)\*.dll%22 /wildcards" />
|
||||||
|
<Exec Command="%22$(SolutionDir)packages\ILMerge.3.0.41\tools\net452\ILMerge.exe%22 /out:%22$(ILMergeDir)$(ReleaseGUIName).exe%22 %22$(SolutionDir)$(ReleaseGUIName)\bin\$(Configuration)\$(ReleaseGUIName).exe%22 %22$(SolutionDir)$(ReleaseGUIName)\bin\$(Configuration)\*.dll%22 /wildcards" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="CreatePortableFiles">
|
||||||
|
<ItemGroup>
|
||||||
|
<MySourceBINs Condition="$(Configuration) == 'Debug'" Include="$(SolutionDir)$(ReleaseCLIName)\bin\$(Configuration)\**\*.*;$(SolutionDir)$(ReleaseGUIName)\bin\$(Configuration)\**\*.*;$(SolutionDir)$(ReleaseDLLName)\bin\$(Configuration)\**\*.*;" />
|
||||||
|
<MySourceBINs Condition="$(Configuration) == 'Release'" Include="$(ILMergeDir)\**\*.exe;" />
|
||||||
|
<MySourceBatches Include="$(SolutionDir)$(ReleaseCLIName)\Resources\Batches\**\*.*;" />
|
||||||
|
<MySourceBASHes Include="$(SolutionDir)$(ReleaseCLIName)\Resources\BASHes\**\*.*;" />
|
||||||
|
<MySourceDocs Include="$(SolutionDir)$(ReleaseDLLName)\Resources\Docs\**\*.txt;" />
|
||||||
|
<MySourceLogs Include="$(SolutionDir)$(ReleaseDLLName)\Resources\Logs\**\*.txt;" />
|
||||||
|
<MySourceOptions Include="$(SolutionDir)$(ReleaseDLLName)\Resources\Options\**\*.txt;" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Copy SourceFiles="@(MySourceBINs)" DestinationFiles="@(MySourceBINs->'$(PortableDir)\%(RecursiveDir)%(Filename)%(Extension)')" />
|
||||||
|
<Copy SourceFiles="@(MySourceBatches)" DestinationFiles="@(MySourceBatches->'$(PortableDir)\Batches\%(RecursiveDir)%(Filename)%(Extension)')" />
|
||||||
|
<Copy SourceFiles="@(MySourceBASHes)" DestinationFiles="@(MySourceBASHes->'$(PortableDir)\BASHes\%(RecursiveDir)%(Filename)%(Extension)')" />
|
||||||
|
<Copy SourceFiles="@(MySourceDocs)" DestinationFiles="@(MySourceDocs->'$(PortableDir)\Docs\%(RecursiveDir)%(Filename)%(Extension)')" />
|
||||||
|
<Copy SourceFiles="@(MySourceLogs)" DestinationFiles="@(MySourceLogs->'$(PortableDir)\Logs\%(RecursiveDir)%(Filename)%(Extension)')" />
|
||||||
|
<Copy SourceFiles="@(MySourceOptions)" DestinationFiles="@(MySourceOptions->'$(PortableDir)\Options\%(RecursiveDir)%(Filename)%(Extension)')" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="CreatePackageFiles">
|
||||||
|
<Delete Files="$(PackageDir)$(ReleaseName).$(ReleaseVersion).nuget" />
|
||||||
|
<Exec Command="nuget pack %22$(SolutionDir)$(ReleaseDLLName)\$(ReleaseDLLName).csproj%22 -Properties Configuration=$(Configuration) -OutputDirectory $(PackageDir) -Version $(ReleaseVersion)" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="CreateInstallerFiles">
|
||||||
|
<ItemGroup>
|
||||||
|
<MySourceInstallerFiles Condition="$(Configuration) == 'Debug'" Include="$(SolutionDir)$(ReleaseInstallerName)\bin\$(Configuration)\**\*.*" />
|
||||||
|
<MySourceInstallerFiles Condition="$(Configuration) == 'Release'" Include="$(SolutionDir)$(ReleaseInstallerName)\bin\$(Configuration)\**\*.*" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Copy SourceFiles="@(MySourceInstallerFiles)" DestinationFiles="@(MySourceInstallerFiles->'$(InstallerDir)\%(RecursiveDir)%(Filename)%(Extension)')" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="CreateSourceFiles">
|
||||||
|
<ItemGroup>
|
||||||
|
<MySourceSourceFiles Include="$(SolutionDir)**\*;" Exclude="$(SolutionDir)**\obj\**\*.*;$(SolutionDir)**\bin\**\*.*;$(SolutionDir)**\misc\**\*.*;$(SolutionDir)**\packages\**\*.*;$(SolutionDir)**\.git\**\*.*;$(SolutionDir)**\.vs\**\*.*;" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Copy SourceFiles="@(MySourceSourceFiles)" DestinationFiles="@(MySourceSourceFiles->'$(SourceDir)\%(RecursiveDir)%(Filename)%(Extension)')" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="CreateReleasesFiles">
|
||||||
|
<Delete Files="$(ReleasesDir)$(ReleasePortableName).$(ReleaseVersion).zip" />
|
||||||
|
<ZipDirectory SourceDirectory="$(PortableDir)" DestinationFile="$(ReleasesDir)$(ReleasePortableName).$(ReleaseVersion).zip" />
|
||||||
|
<Delete Files="$(ReleasesDir)$(ReleaseInstallerName).$(ReleaseVersion).zip" />
|
||||||
|
<ZipDirectory SourceDirectory="$(InstallerDir)" DestinationFile="$(ReleasesDir)$(ReleaseInstallerName).$(ReleaseVersion).zip" />
|
||||||
|
<Delete Files="$(ReleasesDir)$(ReleasePackageName).$(ReleaseVersion).zip" />
|
||||||
|
<ZipDirectory SourceDirectory="$(PackageDir)" DestinationFile="$(ReleasesDir)$(ReleasePackageName).$(ReleaseVersion).zip" />
|
||||||
|
<Delete Files="$(ReleasesDir)$(ReleaseSourceName).$(ReleaseVersion).zip" />
|
||||||
|
<ZipDirectory SourceDirectory="$(SourceDir)" DestinationFile="$(ReleasesDir)$(ReleaseSourceName).$(ReleaseVersion).zip" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Error Condition="!Exists('..\packages\ILMerge.3.0.41\build\ILMerge.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\ILMerge.3.0.41\build\ILMerge.props'))" />
|
||||||
|
</Target>
|
||||||
|
</Project>
|
||||||
4
Files2Folders2Files-Release/packages.config
Normal file
4
Files2Folders2Files-Release/packages.config
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="ILMerge" version="3.0.41" targetFramework="net40" />
|
||||||
|
</packages>
|
||||||
65
Files2Folders2Files.sln
Normal file
65
Files2Folders2Files.sln
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.5.33627.172
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Files2Folders2Files-GUI", "Files2Folders2Files-GUI\Files2Folders2Files-GUI.csproj", "{73055FFB-47A7-4332-BB2B-410AAE263774}"
|
||||||
|
EndProject
|
||||||
|
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Files2Folders2Files-Installer", "Files2Folders2Files-Installer\Files2Folders2Files-Installer.vdproj", "{6001528E-3FF2-4396-BAAD-A86C6A8DCD9D}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Files2Folders2Files-Release", "Files2Folders2Files-Release\Files2Folders2Files-Release.csproj", "{68E72165-E8D2-4B40-8801-BC16D5D160AC}"
|
||||||
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
|
{6001528E-3FF2-4396-BAAD-A86C6A8DCD9D} = {6001528E-3FF2-4396-BAAD-A86C6A8DCD9D}
|
||||||
|
{73055FFB-47A7-4332-BB2B-410AAE263774} = {73055FFB-47A7-4332-BB2B-410AAE263774}
|
||||||
|
{B0E50B70-FDF5-41C8-82FB-0543274CE095} = {B0E50B70-FDF5-41C8-82FB-0543274CE095}
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BC5B21C7-3C27-4456-B5A4-39C00EF25B4F}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
CHANGELOG.md = CHANGELOG.md
|
||||||
|
CODE_OF_CONDUCT.md = CODE_OF_CONDUCT.md
|
||||||
|
CONTRIBUTING.md = CONTRIBUTING.md
|
||||||
|
LICENSE = LICENSE
|
||||||
|
README.md = README.md
|
||||||
|
TODO.md = TODO.md
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Files2Folders2Files", "Files2Folders2Files\Files2Folders2Files.csproj", "{CBAD4D51-B8D5-4F07-8C71-B152F284FDF2}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Files2Folders2Files-CLI", "Files2Folders2Files-CLI\Files2Folders2Files-CLI.csproj", "{B0E50B70-FDF5-41C8-82FB-0543274CE095}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
Description = The Original Automated Files 2 Folders 2 Files
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{73055FFB-47A7-4332-BB2B-410AAE263774}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{73055FFB-47A7-4332-BB2B-410AAE263774}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{73055FFB-47A7-4332-BB2B-410AAE263774}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{73055FFB-47A7-4332-BB2B-410AAE263774}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{6001528E-3FF2-4396-BAAD-A86C6A8DCD9D}.Debug|Any CPU.ActiveCfg = Debug
|
||||||
|
{6001528E-3FF2-4396-BAAD-A86C6A8DCD9D}.Debug|Any CPU.Build.0 = Debug
|
||||||
|
{6001528E-3FF2-4396-BAAD-A86C6A8DCD9D}.Release|Any CPU.ActiveCfg = Release
|
||||||
|
{6001528E-3FF2-4396-BAAD-A86C6A8DCD9D}.Release|Any CPU.Build.0 = Release
|
||||||
|
{68E72165-E8D2-4B40-8801-BC16D5D160AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{68E72165-E8D2-4B40-8801-BC16D5D160AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{68E72165-E8D2-4B40-8801-BC16D5D160AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{68E72165-E8D2-4B40-8801-BC16D5D160AC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{CBAD4D51-B8D5-4F07-8C71-B152F284FDF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{CBAD4D51-B8D5-4F07-8C71-B152F284FDF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{CBAD4D51-B8D5-4F07-8C71-B152F284FDF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{CBAD4D51-B8D5-4F07-8C71-B152F284FDF2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{B0E50B70-FDF5-41C8-82FB-0543274CE095}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{B0E50B70-FDF5-41C8-82FB-0543274CE095}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{B0E50B70-FDF5-41C8-82FB-0543274CE095}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{B0E50B70-FDF5-41C8-82FB-0543274CE095}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {46A8276F-6071-4BFB-BD00-0BB0DAECBAF6}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
900
Files2Folders2Files/Files2Folders2Files.cs
Normal file
900
Files2Folders2Files/Files2Folders2Files.cs
Normal file
@@ -0,0 +1,900 @@
|
|||||||
|
using Serilog;
|
||||||
|
using Serilog.Sinks.LogEmAll;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
|
namespace Files2Folders2Files
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Files2Folders2Files class
|
||||||
|
/// </summary>
|
||||||
|
public class Files2Folders2Files : INotifyPropertyChanged
|
||||||
|
{
|
||||||
|
#region Constructors
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Files2Folders2Files Constructor
|
||||||
|
/// </summary>
|
||||||
|
public Files2Folders2Files()
|
||||||
|
{
|
||||||
|
// Construct a Files2Folders2Files object.
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region INotifyPropertyChanged
|
||||||
|
|
||||||
|
/// PropertyChanged Event
|
||||||
|
public event PropertyChangedEventHandler PropertyChanged;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// NotifyPropertyChanged
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pName"></param>
|
||||||
|
private void NotifyPropertyChanged(String pName)
|
||||||
|
{
|
||||||
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(pName));
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Private members
|
||||||
|
|
||||||
|
// Not Options
|
||||||
|
private readonly string _appName = FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).ProductName;
|
||||||
|
private readonly string _appVersion = FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).ProductVersion;
|
||||||
|
private readonly string _appCopyright = FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).LegalCopyright;
|
||||||
|
private readonly string _libName = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductName;
|
||||||
|
private readonly string _libVersion = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion;
|
||||||
|
private readonly string _libCopyright = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).LegalCopyright;
|
||||||
|
private bool _appIsRegistered = false;
|
||||||
|
private string _commandSwitch = "-help";
|
||||||
|
private bool _deleteEmptyFolders = true;
|
||||||
|
private ListStringLog _logLines = new ListStringLog();
|
||||||
|
// Paths Options
|
||||||
|
private string _directoryPath = "";
|
||||||
|
private string _pathOptionsFile = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "Options", "Files2Folders2Files-Options.xml");
|
||||||
|
private string _pathLogFile = "";
|
||||||
|
// Registration Options
|
||||||
|
private string _registrationStatus = "unregistered";
|
||||||
|
private string _registrationKey = "";
|
||||||
|
private string _registerAppUsername = "";
|
||||||
|
private string _registerAppEmailAddress = "";
|
||||||
|
private string _registerAppPassword = "";
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Getters/Setters Public Accessors
|
||||||
|
|
||||||
|
/// AppName
|
||||||
|
public string AppName
|
||||||
|
{
|
||||||
|
get { return _appName; }
|
||||||
|
set { }
|
||||||
|
}
|
||||||
|
/// AppVersion
|
||||||
|
public string AppVersion
|
||||||
|
{
|
||||||
|
get { return _appVersion; }
|
||||||
|
set { }
|
||||||
|
}
|
||||||
|
/// AppCopyright
|
||||||
|
public string AppCopyright
|
||||||
|
{
|
||||||
|
get { return _appCopyright; }
|
||||||
|
set { }
|
||||||
|
}
|
||||||
|
/// LibName
|
||||||
|
public string LibName
|
||||||
|
{
|
||||||
|
get { return _libName; }
|
||||||
|
set { }
|
||||||
|
}
|
||||||
|
/// LibVersion
|
||||||
|
public string LibVersion
|
||||||
|
{
|
||||||
|
get { return _libVersion; }
|
||||||
|
set { }
|
||||||
|
}
|
||||||
|
/// LibCopyright
|
||||||
|
public string LibCopyright
|
||||||
|
{
|
||||||
|
get { return _libCopyright; }
|
||||||
|
set { }
|
||||||
|
}
|
||||||
|
/// AppIsRegistered
|
||||||
|
public bool AppIsRegistered
|
||||||
|
{
|
||||||
|
get { return _appIsRegistered; }
|
||||||
|
set { _appIsRegistered = value; NotifyPropertyChanged("AppIsRegistered"); }
|
||||||
|
}
|
||||||
|
/// CommandSwitch
|
||||||
|
public string CommandSwitch
|
||||||
|
{
|
||||||
|
get { return _commandSwitch; }
|
||||||
|
set { _commandSwitch = value; }
|
||||||
|
}
|
||||||
|
/// DirectoryPath
|
||||||
|
public string DirectoryPath
|
||||||
|
{
|
||||||
|
get { return _directoryPath; }
|
||||||
|
set { _directoryPath = value; NotifyPropertyChanged("DirectoryPath"); }
|
||||||
|
}
|
||||||
|
/// DeleteEmptyFolders
|
||||||
|
public bool DeleteEmptyFolders
|
||||||
|
{
|
||||||
|
get { return _deleteEmptyFolders; }
|
||||||
|
set { _deleteEmptyFolders = value; NotifyPropertyChanged("DeleteEmptyFolders"); }
|
||||||
|
}
|
||||||
|
/// PathOptionsFile
|
||||||
|
public string PathOptionsFile
|
||||||
|
{
|
||||||
|
get { return _pathOptionsFile; }
|
||||||
|
set { _pathOptionsFile = value; }
|
||||||
|
}
|
||||||
|
/// PathLogFile
|
||||||
|
public string PathLogFile
|
||||||
|
{
|
||||||
|
get { return _pathLogFile; }
|
||||||
|
set { _pathLogFile = value; }
|
||||||
|
}
|
||||||
|
/// LogLines
|
||||||
|
public ListStringLog LogLines
|
||||||
|
{
|
||||||
|
get { return _logLines; }
|
||||||
|
set { _logLines = value; }
|
||||||
|
}
|
||||||
|
/// RegistrationStatus
|
||||||
|
public string RegistrationStatus
|
||||||
|
{
|
||||||
|
get { return _registrationStatus; }
|
||||||
|
set { _registrationStatus = value; NotifyPropertyChanged("RegistrationStatus"); }
|
||||||
|
}
|
||||||
|
/// RegistrationKey
|
||||||
|
public string RegistrationKey
|
||||||
|
{
|
||||||
|
get { return _registrationKey; }
|
||||||
|
set { _registrationKey = value; NotifyPropertyChanged("RegistrationKey"); }
|
||||||
|
}
|
||||||
|
/// RegisterAppUsername
|
||||||
|
public string RegisterAppUsername
|
||||||
|
{
|
||||||
|
get { return _registerAppUsername; }
|
||||||
|
set { _registerAppUsername = value; NotifyPropertyChanged("RegisterAppUsername"); }
|
||||||
|
}
|
||||||
|
/// RegisterAppEmailAddress
|
||||||
|
public string RegisterAppEmailAddress
|
||||||
|
{
|
||||||
|
get { return _registerAppEmailAddress; }
|
||||||
|
set { _registerAppEmailAddress = value; NotifyPropertyChanged("RegisterAppEmailAddress"); }
|
||||||
|
}
|
||||||
|
/// RegisterAppPassword
|
||||||
|
public string RegisterAppPassword
|
||||||
|
{
|
||||||
|
get { return _registerAppPassword; }
|
||||||
|
set { _registerAppPassword = value; NotifyPropertyChanged("RegisterAppPassword"); }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Registration
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Register the app.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="strUsername"></param>
|
||||||
|
/// <param name="strEmailAddress"></param>
|
||||||
|
/// <param name="strPassword"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool RegisterApp(string strUsername = null, string strEmailAddress = null, string strPassword = null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Return a bool value
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Error("Registering app failed");
|
||||||
|
Log.Error(ex.Message);
|
||||||
|
|
||||||
|
// Return a value
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Options
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Loads and sets the options variables from the options file.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="strPath"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool LoadOptionsFromFile(string strPath = null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (strPath != null)
|
||||||
|
{
|
||||||
|
PathOptionsFile = strPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!File.Exists(PathOptionsFile))
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Options file was not found");
|
||||||
|
|
||||||
|
// Return a bool value.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Loading options file ...");
|
||||||
|
|
||||||
|
// Load the options from the XML file.
|
||||||
|
XDocument xdocOptions = XDocument.Load(PathOptionsFile);
|
||||||
|
|
||||||
|
// Set the variables.
|
||||||
|
if (xdocOptions.Element("Options") == null) { Log.Warning("Options file is corrupt or outdated (Options)"); }
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (xdocOptions.Element("Options").Element("Paths") == null) { Log.Warning("Options file is corrupt or outdated (Paths)"); }
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (xdocOptions.Element("Options").Element("Paths").Element("DirectoryPath") != null) { DirectoryPath = xdocOptions.Element("Options").Element("Paths").Element("DirectoryPath").Value; }
|
||||||
|
else { Log.Warning("Options file is corrupt or outdated (DirectoryPath)"); }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (xdocOptions.Element("Options").Element("Output") == null) { Log.Warning("Options file is corrupt or outdated (Output)"); }
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (xdocOptions.Element("Options").Element("Output").Element("DeleteEmptyFolders") != null) { DeleteEmptyFolders = Convert.ToBoolean(xdocOptions.Element("Options").Element("Output").Element("DeleteEmptyFolders").Value); }
|
||||||
|
else { Log.Warning("Options file is corrupt or outdated (DeleteEmptyFolders)"); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Options file loaded (" + PathOptionsFile + ")");
|
||||||
|
|
||||||
|
// Return a bool value.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Error("Loading options from file failed");
|
||||||
|
Log.Error(ex.Message);
|
||||||
|
|
||||||
|
// Return a bool value.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Saves a new options file.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="strPath"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool SaveOptionsToFile(string strPath = null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (strPath != null)
|
||||||
|
{
|
||||||
|
PathOptionsFile = strPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Saving options file ...");
|
||||||
|
|
||||||
|
// Create a new options XDocument.
|
||||||
|
XDocument xdocOptions = new XDocument(
|
||||||
|
new XDeclaration("1.0", "utf-8", "yes"),
|
||||||
|
new XComment("This is a Files2Folders2Files options file"),
|
||||||
|
new XComment("WARNING: Using invalid values might cause this app to crash!"),
|
||||||
|
new XElement("Options",
|
||||||
|
new XAttribute("Version", AppVersion),
|
||||||
|
new XElement("Output",
|
||||||
|
new XElement("DeleteEmptyFolders", DeleteEmptyFolders)
|
||||||
|
),
|
||||||
|
new XElement("Paths",
|
||||||
|
new XElement("DirectoryPath", DirectoryPath)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Create options file directory if it doesn't exist.
|
||||||
|
if (Directory.Exists(Path.GetDirectoryName(PathOptionsFile)) == false) Directory.CreateDirectory(Path.GetDirectoryName(PathOptionsFile));
|
||||||
|
|
||||||
|
// Save the contents of the options XDocument to the file.
|
||||||
|
xdocOptions.Save(PathOptionsFile);
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Options file saved (" + PathOptionsFile + ")");
|
||||||
|
|
||||||
|
// Return a bool value.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Error("Saving options to file failed");
|
||||||
|
Log.Error(ex.Message);
|
||||||
|
|
||||||
|
// Return a bool value.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Loads and sets the options variables passed from the CLI.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="strArgs"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool LoadOptionsFromCLI(string[] strArgs)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
foreach (string strArg in strArgs)
|
||||||
|
{
|
||||||
|
if (Regex.IsMatch(strArg, "^-", RegexOptions.IgnoreCase) == true)
|
||||||
|
{
|
||||||
|
// Set the command.
|
||||||
|
CommandSwitch = strArg;
|
||||||
|
}
|
||||||
|
if (Regex.IsMatch(strArg, "^DE:", RegexOptions.IgnoreCase) == true)
|
||||||
|
{
|
||||||
|
// Set whether to delete empty folders.
|
||||||
|
DeleteEmptyFolders = Convert.ToBoolean(Convert.ToInt32(strArg.Substring(3)));
|
||||||
|
}
|
||||||
|
if (Regex.IsMatch(strArg, "^DP:", RegexOptions.IgnoreCase) == true)
|
||||||
|
{
|
||||||
|
// Set the directory path.
|
||||||
|
DirectoryPath = strArg.Substring(3);
|
||||||
|
}
|
||||||
|
if (Regex.IsMatch(strArg, "^RA:", RegexOptions.IgnoreCase) == true)
|
||||||
|
{
|
||||||
|
// Set the registration info.
|
||||||
|
RegisterAppUsername = strArg.Substring(3);
|
||||||
|
}
|
||||||
|
if (Regex.IsMatch(strArg, "^RB:", RegexOptions.IgnoreCase) == true)
|
||||||
|
{
|
||||||
|
// Set the registration info.
|
||||||
|
RegisterAppEmailAddress = strArg.Substring(3);
|
||||||
|
}
|
||||||
|
if (Regex.IsMatch(strArg, "^RC:", RegexOptions.IgnoreCase) == true)
|
||||||
|
{
|
||||||
|
// Set the registration info.
|
||||||
|
RegisterAppPassword = strArg.Substring(3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return a bool value.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Error("Loading options from CLI failed");
|
||||||
|
Log.Error(ex.Message);
|
||||||
|
|
||||||
|
// Return a bool value.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Log
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Saves the log to a text file.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="strPath"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool SaveLogToFile(string strPath = null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (strPath != null)
|
||||||
|
{
|
||||||
|
PathLogFile = strPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Determine if the user selected a log filename.
|
||||||
|
if (PathLogFile.Length == 0)
|
||||||
|
{
|
||||||
|
// Return a bool value.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Saving log file ...");
|
||||||
|
|
||||||
|
// Create log file directory if it doesn't exist.
|
||||||
|
if (Directory.Exists(Path.GetDirectoryName(PathLogFile)) == false) Directory.CreateDirectory(Path.GetDirectoryName(PathLogFile));
|
||||||
|
|
||||||
|
// Save the contents of the log to a text file.
|
||||||
|
File.WriteAllLines(PathLogFile, LogLines);
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Log file saved (" + PathLogFile + ")");
|
||||||
|
|
||||||
|
// Return a bool value.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Error("Saving log file failed");
|
||||||
|
Log.Error(ex.Message);
|
||||||
|
|
||||||
|
// Return a bool value.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Startup Tasks
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Check for the latest version from the WWW.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="strSettingsPage"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private bool CheckForLatestVersionFromWWW(string strSettingsPage = null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
// Log.Information("Checking for latest version ...");
|
||||||
|
|
||||||
|
// Return a bool value.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Error("Checking for latest version failed");
|
||||||
|
Log.Error(ex.Message);
|
||||||
|
|
||||||
|
// Return a bool value.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Perform the startup tasks.
|
||||||
|
/// </summary>
|
||||||
|
public void StartupTasks()
|
||||||
|
{
|
||||||
|
// Check if the app is registered.
|
||||||
|
if (AppIsRegistered == true || AppIsRegistered == false)
|
||||||
|
{
|
||||||
|
// Check latest version from the WWW.
|
||||||
|
// CheckForLatestVersionFromWWW();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region CLI Commands
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Updates/Sets the application title.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="strTitle"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool UpdateTitle(string strTitle = "")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Console.Title = AppName + " v" + AppVersion + strTitle;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Error("Updating the title failed");
|
||||||
|
Log.Error(ex.Message);
|
||||||
|
|
||||||
|
// Return a bool value.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Processes the command switch.
|
||||||
|
/// </summary>
|
||||||
|
public void ProcessCommandSwitch()
|
||||||
|
{
|
||||||
|
switch (CommandSwitch)
|
||||||
|
{
|
||||||
|
case "-files2folders":
|
||||||
|
StartupTasks(); // Performs the application startup tasks.
|
||||||
|
BuildFiles2Folders(); // Builds a datafile.
|
||||||
|
break;
|
||||||
|
case "-folders2files":
|
||||||
|
StartupTasks(); // Performs the application startup tasks.
|
||||||
|
BuildFolders2Files(); // Builds a datafile.
|
||||||
|
break;
|
||||||
|
case "-saveoptions":
|
||||||
|
SaveOptionsToFile(); // Saves a new options file.
|
||||||
|
break;
|
||||||
|
case "-license":
|
||||||
|
PrintLicense(); // Prints the license text.
|
||||||
|
break;
|
||||||
|
case "-donations":
|
||||||
|
PrintDonationInfo(); // Prints the donation information.
|
||||||
|
break;
|
||||||
|
case "-registerapp":
|
||||||
|
RegisterApp(); // Registers the app.
|
||||||
|
break;
|
||||||
|
case "-diagnostics":
|
||||||
|
StartupTasks(); // Performs the application startup tasks.
|
||||||
|
PrintDiagnosticsInfo(); // Prints the diagnostics information.
|
||||||
|
break;
|
||||||
|
case "-version":
|
||||||
|
// // Does nothing.
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
PrintHelp(); // Prints the help text.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Ready");
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Builders
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Build folders from files.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
public void BuildFiles2Folders(object sender = null, DoWorkEventArgs e = null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (e != null && e.Cancel == true)
|
||||||
|
{
|
||||||
|
// Do nothing.
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Files 2 Folders started ...");
|
||||||
|
|
||||||
|
// Create and start a stopwatch.
|
||||||
|
var stopWatch = new Stopwatch();
|
||||||
|
stopWatch.Start();
|
||||||
|
|
||||||
|
if (!String.IsNullOrEmpty(DirectoryPath))
|
||||||
|
{
|
||||||
|
// Build the list of files array.
|
||||||
|
string[] arrPathsFiles = Directory.GetFiles(Path.Combine(DirectoryPath));
|
||||||
|
int intTotal = arrPathsFiles.Length;
|
||||||
|
int intTotalCompleted = 0;
|
||||||
|
|
||||||
|
// Declarations
|
||||||
|
BackgroundWorker worker = (e != null) ? sender as BackgroundWorker : null;
|
||||||
|
|
||||||
|
// Loop through the list of files array.
|
||||||
|
foreach (string arrPathFile in arrPathsFiles)
|
||||||
|
{
|
||||||
|
if (worker != null && worker.CancellationPending == true)
|
||||||
|
{
|
||||||
|
e.Cancel = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a new folder for the file.
|
||||||
|
Directory.CreateDirectory(Path.Combine(DirectoryPath, Path.GetFileNameWithoutExtension(arrPathFile)));
|
||||||
|
Log.Information("Info: Creating folder (" + Path.Combine(DirectoryPath, Path.GetFileNameWithoutExtension(arrPathFile)) + ")");
|
||||||
|
|
||||||
|
// Move the file into the folder.
|
||||||
|
File.Move(arrPathFile, Path.Combine(DirectoryPath, Path.GetFileNameWithoutExtension(arrPathFile), Path.GetFileName(arrPathFile)));
|
||||||
|
Log.Information("Info: Moving file (" + Path.GetFullPath(arrPathFile) + ")");
|
||||||
|
|
||||||
|
// Step the overall progress bar.
|
||||||
|
intTotalCompleted++;
|
||||||
|
if (worker != null)
|
||||||
|
{
|
||||||
|
worker.ReportProgress(intTotalCompleted * 100 / intTotal);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Log.Information("Info: Completed " + intTotalCompleted + " out of " + intTotal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Info: No directory path was selected");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Files 2 Folders completed in " + stopWatch.Elapsed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Error("Files2Folders failed");
|
||||||
|
Log.Error(ex.Message);
|
||||||
|
// Log.Error(ex.StackTrace);
|
||||||
|
// Log.Error(ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Build files from folders.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
public void BuildFolders2Files(object sender = null, DoWorkEventArgs e = null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (e != null && e.Cancel == true)
|
||||||
|
{
|
||||||
|
// Do nothing.
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Folders 2 Files started ...");
|
||||||
|
|
||||||
|
// Create and start a stopwatch.
|
||||||
|
var stopWatch = new Stopwatch();
|
||||||
|
stopWatch.Start();
|
||||||
|
|
||||||
|
if (!String.IsNullOrEmpty(DirectoryPath))
|
||||||
|
{
|
||||||
|
// Build the list of directories array.
|
||||||
|
string[] arrPathsDirectories = Directory.GetDirectories(Path.Combine(DirectoryPath));
|
||||||
|
int intTotal = arrPathsDirectories.Length;
|
||||||
|
int intTotalCompleted = 0;
|
||||||
|
|
||||||
|
// Declarations
|
||||||
|
BackgroundWorker worker = (e != null) ? sender as BackgroundWorker : null;
|
||||||
|
|
||||||
|
// Loop through the list of directories array.
|
||||||
|
foreach (string strPathDirectory in arrPathsDirectories)
|
||||||
|
{
|
||||||
|
if (worker != null && worker.CancellationPending == true)
|
||||||
|
{
|
||||||
|
e.Cancel = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build the list of files array.
|
||||||
|
var arrPathsFiles = Directory.EnumerateFiles(strPathDirectory);
|
||||||
|
|
||||||
|
// Loop through the list of files array.
|
||||||
|
foreach (string strPathFile in arrPathsFiles)
|
||||||
|
{
|
||||||
|
// Move the file into the directory.
|
||||||
|
Log.Information("Info: Moving file (" + Path.GetFullPath(strPathFile) + ")");
|
||||||
|
File.Move(strPathFile, Path.Combine(DirectoryPath, Path.GetFileName(strPathFile)));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Optionally delete the empty directory.
|
||||||
|
if (DeleteEmptyFolders == true && Directory.GetFileSystemEntries(strPathDirectory).Length == 0)
|
||||||
|
{
|
||||||
|
// Delete the empty directory.
|
||||||
|
Log.Information("Info: Deleting folder (" + Path.GetFullPath(strPathDirectory) + ")");
|
||||||
|
Directory.Delete(strPathDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step the overall progress bar.
|
||||||
|
intTotalCompleted++;
|
||||||
|
if (worker != null)
|
||||||
|
{
|
||||||
|
worker.ReportProgress(intTotalCompleted * 100 / intTotal);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Log.Information("Info: Completed " + intTotalCompleted + " out of " + intTotal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Info: No directory path was selected");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("Folders 2 Files completed in " + stopWatch.Elapsed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Error("Folders2Files failed");
|
||||||
|
Log.Error(ex.Message);
|
||||||
|
// Log.Error(ex.StackTrace);
|
||||||
|
// Log.Error(ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Printers
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// EnumerateLines
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="reader"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public IEnumerable<string> EnumerateLines(TextReader reader)
|
||||||
|
{
|
||||||
|
string line;
|
||||||
|
|
||||||
|
while ((line = reader.ReadLine()) != null)
|
||||||
|
{
|
||||||
|
yield return line;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ReadAllResourceLines
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="resourceText"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public string[] ReadAllResourceLines(string resourceText)
|
||||||
|
{
|
||||||
|
using (StringReader reader = new StringReader(resourceText))
|
||||||
|
{
|
||||||
|
return EnumerateLines(reader).ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Prints the help text.
|
||||||
|
/// </summary>
|
||||||
|
public void PrintHelp()
|
||||||
|
{
|
||||||
|
// Read all of the lines of the file into an array.
|
||||||
|
string[] arrLines = ReadAllResourceLines(Properties.Resources.Files2Folders2Files_HELP_CMD);
|
||||||
|
|
||||||
|
// Loop through each line of the array.
|
||||||
|
foreach (string strLine in arrLines)
|
||||||
|
{
|
||||||
|
// Print to screen.
|
||||||
|
Log.Information(strLine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Prints the license text.
|
||||||
|
/// </summary>
|
||||||
|
public void PrintLicense()
|
||||||
|
{
|
||||||
|
// Read all of the lines of the file into an array.
|
||||||
|
string[] arrLines = ReadAllResourceLines(Properties.Resources.Files2Folders2Files_LICENSE);
|
||||||
|
|
||||||
|
// Loop through each line of the array.
|
||||||
|
foreach (string strLine in arrLines)
|
||||||
|
{
|
||||||
|
// Print to screen.
|
||||||
|
Log.Information(strLine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Prints the donation information.
|
||||||
|
/// </summary>
|
||||||
|
public void PrintDonationInfo()
|
||||||
|
{
|
||||||
|
// Read all of the lines of the file into an array.
|
||||||
|
string[] arrLines = ReadAllResourceLines(Properties.Resources.Files2Folders2Files_DONATIONS);
|
||||||
|
|
||||||
|
// Loop through each line of the array.
|
||||||
|
foreach (string strLine in arrLines)
|
||||||
|
{
|
||||||
|
// Print to screen.
|
||||||
|
Log.Information(strLine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Prints the version and copyright notice texts.
|
||||||
|
/// </summary>
|
||||||
|
public void PrintVersion()
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("------------------------------------------------------------------");
|
||||||
|
Log.Information(AppName + " v" + AppVersion);
|
||||||
|
Log.Information(AppCopyright);
|
||||||
|
Log.Debug("Lib: " + LibName + " v" + LibVersion);
|
||||||
|
Log.Debug("Lib: " + LibCopyright);
|
||||||
|
Log.Information("------------------------------------------------------------------");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Prints the diagnostics information
|
||||||
|
/// </summary>
|
||||||
|
public void PrintDiagnosticsInfo()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("-Diagnostics Info");
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("-Environment.OSVersion Detaiils");
|
||||||
|
Log.Information("OS Version: " + Environment.OSVersion.Version.ToString());
|
||||||
|
Log.Information("OS Platoform: " + Environment.OSVersion.Platform.ToString());
|
||||||
|
Log.Information("OS SP: " + Environment.OSVersion.ServicePack.ToString());
|
||||||
|
Log.Information("OS Version String: " + Environment.OSVersion.VersionString.ToString());
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("-Environment.OSVersion.Version Detaiils");
|
||||||
|
Log.Information("Major version: " + Environment.OSVersion.Version.Major.ToString());
|
||||||
|
Log.Information("Major Revision: " + Environment.OSVersion.Version.MajorRevision.ToString());
|
||||||
|
Log.Information("Minor version: " + Environment.OSVersion.Version.Minor.ToString());
|
||||||
|
Log.Information("Minor Revision: " + Environment.OSVersion.Version.MinorRevision.ToString());
|
||||||
|
Log.Information("Build: " + Environment.OSVersion.Version.Build.ToString());
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("-Runtime.InteropServices.RuntimeInformation Detaiils");
|
||||||
|
Log.Information("Framework Description: " + RuntimeInformation.FrameworkDescription.ToString());
|
||||||
|
Log.Information("OS Architecture: " + RuntimeInformation.OSArchitecture.ToString());
|
||||||
|
Log.Information("OS Description: " + RuntimeInformation.OSDescription.ToString());
|
||||||
|
Log.Information("Process Architecture: " + RuntimeInformation.ProcessArchitecture.ToString());
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("-Assembly.GetEntryAssembly Detaiils");
|
||||||
|
Log.Information("Product Name: " + FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).ProductName);
|
||||||
|
Log.Information("Product Version: " + FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).ProductVersion);
|
||||||
|
Log.Information("Legal Copyright: " + FileVersionInfo.GetVersionInfo(Assembly.GetEntryAssembly().Location).LegalCopyright);
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("-Assembly.GetExecutingAssembly Detaiils");
|
||||||
|
Log.Information("Product Name: " + FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductName);
|
||||||
|
Log.Information("Product Version: " + FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion);
|
||||||
|
Log.Information("Legal Copyright: " + FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).LegalCopyright);
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
Log.Information("-Environment Detaiils");
|
||||||
|
Log.Information("Processor Count: " + Environment.ProcessorCount.ToString());
|
||||||
|
Log.Information("Is 64 Bit OS: " + Environment.Is64BitOperatingSystem.ToString());
|
||||||
|
// Log.Information("Machine Name: " + Environment.MachineName.ToString());
|
||||||
|
// Log.Information("User Name: " + Environment.UserName.ToString());
|
||||||
|
|
||||||
|
// Print to screen
|
||||||
|
// Log.Information("-App Details");
|
||||||
|
// Log.Information("");
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Print to screen
|
||||||
|
Log.Error("Test failed");
|
||||||
|
Log.Error(ex.Message);
|
||||||
|
Log.Error(ex.StackTrace);
|
||||||
|
Log.Error(ex.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
86
Files2Folders2Files/Files2Folders2Files.csproj
Normal file
86
Files2Folders2Files/Files2Folders2Files.csproj
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
<?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>{CBAD4D51-B8D5-4F07-8C71-B152F284FDF2}</ProjectGuid>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>Files2Folders2Files</RootNamespace>
|
||||||
|
<AssemblyName>Files2Folders2Files</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<Deterministic>true</Deterministic>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<DocumentationFile>bin\Debug\Files2Folders2Files.xml</DocumentationFile>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<DebugType>none</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<SignAssembly>false</SignAssembly>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<AssemblyOriginatorKeyFile>Files2Folders2Files.snk</AssemblyOriginatorKeyFile>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="Serilog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Serilog.2.12.0\lib\net47\Serilog.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Serilog.Sinks.Console, Version=4.1.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Serilog.Sinks.Console.4.1.0\lib\net45\Serilog.Sinks.Console.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Serilog.Sinks.LogEmAll, Version=0.0.6.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Serilog.Sinks.LogEmAll.0.0.7\lib\net461\Serilog.Sinks.LogEmAll.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Files2Folders2Files.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
</EmbeddedResource>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Files2Folders2Files.snk" />
|
||||||
|
<None Include="packages.config" />
|
||||||
|
<None Include="Resources\Docs\Files2Folders2Files-LICENSE.rtf" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup />
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="Resources\Docs\Files2Folders2Files-DONATIONS.txt" />
|
||||||
|
<Content Include="Resources\Docs\Files2Folders2Files-HELP-CMD.txt" />
|
||||||
|
<Content Include="Resources\Docs\Files2Folders2Files-HELP.txt" />
|
||||||
|
<None Include="Resources\Logs\put your logs in this directory.txt" />
|
||||||
|
<None Include="Resources\Options\put your options files in this directory.txt" />
|
||||||
|
<Content Include="Resources\Docs\Files2Folders2Files-LICENSE.txt" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
</Project>
|
||||||
BIN
Files2Folders2Files/Files2Folders2Files.snk
Normal file
BIN
Files2Folders2Files/Files2Folders2Files.snk
Normal file
Binary file not shown.
36
Files2Folders2Files/Properties/AssemblyInfo.cs
Normal file
36
Files2Folders2Files/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
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("Files2Folders2Files")]
|
||||||
|
[assembly: AssemblyDescription("The Original Automated Files 2 Folders 2 Files")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("Files 2 Folders 2 Files")]
|
||||||
|
[assembly: AssemblyProduct("Files2Folders2Files")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright (c) 2016-2025 Files 2 Folders 2 Files - All Rights Reserved")]
|
||||||
|
[assembly: AssemblyTrademark("Files 2 Folders 2 Files - The Original Automated Files 2 Folders 2 Files")]
|
||||||
|
[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("cbad4d51-b8d5-4f07-8c71-b152f284fdf2")]
|
||||||
|
|
||||||
|
// 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.2")]
|
||||||
|
[assembly: AssemblyFileVersion("0.1.2")]
|
||||||
146
Files2Folders2Files/Properties/Resources.Designer.cs
generated
Normal file
146
Files2Folders2Files/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 Files2Folders2Files.Properties {
|
||||||
|
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", "17.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
public 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)]
|
||||||
|
public static global::System.Resources.ResourceManager ResourceManager {
|
||||||
|
get {
|
||||||
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Files2Folders2Files.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)]
|
||||||
|
public static global::System.Globalization.CultureInfo Culture {
|
||||||
|
get {
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to ------------------------------------------------------------------
|
||||||
|
///DownloadEmAll - Donations version 20240901
|
||||||
|
///Copyright (c) 2016-2024 DownloadEmAll - All Rights Reserved
|
||||||
|
///------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
///As you may know, a lot of time, effort and hard work goes into the
|
||||||
|
///development and maintenance of a world class automated dat
|
||||||
|
///downloader. Likewise, a lot of time, effort and hard work goes
|
||||||
|
///into the development and maintenance of a world class datafile
|
||||||
|
///database. If [rest of string was truncated]";.
|
||||||
|
/// </summary>
|
||||||
|
public static string Files2Folders2Files_DONATIONS {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Files2Folders2Files_DONATIONS", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to ---------------------------------------------------------------
|
||||||
|
///Files 2 Folders 2 Files - Help version 20240901
|
||||||
|
///Copyright (c) 2016-2024 Files 2 Folders 2 Files - All Rights Reserved
|
||||||
|
///---------------------------------------------------------------
|
||||||
|
///
|
||||||
|
///[I] About
|
||||||
|
///[II] Contributing
|
||||||
|
///[III] Contact
|
||||||
|
///[IV] Disclaimer
|
||||||
|
///
|
||||||
|
///[I] About
|
||||||
|
///---------------------------------------------------------------
|
||||||
|
///Files 2 Folders 2 Files, or F2F2F is the original automated file s to folder and folder 2 files converter. This is usefu [rest of string was truncated]";.
|
||||||
|
/// </summary>
|
||||||
|
public static string Files2Folders2Files_HELP {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Files2Folders2Files_HELP", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to ------------------------------------------------------------------
|
||||||
|
///DownloadEmAll - Help - CMD version 20240901
|
||||||
|
///Copyright (c) 2016-2024 DownloadEmAll - All Rights Reserved
|
||||||
|
///------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
///Usage:
|
||||||
|
/// DownloadEmAll-CLI.exe [-command] [option:]
|
||||||
|
/// Options that contain spaces must be enclosed in quotations
|
||||||
|
/// Options may be specified in any order
|
||||||
|
/// Only one command may be used
|
||||||
|
/// If no command is passed then -all will be used
|
||||||
|
///
|
||||||
|
///-------------------------------- [rest of string was truncated]";.
|
||||||
|
/// </summary>
|
||||||
|
public static string Files2Folders2Files_HELP_CMD {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Files2Folders2Files_HELP_CMD", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to ***************************************************************
|
||||||
|
///Files 2 Folders 2 Files - License version 20240901
|
||||||
|
///Copyright (c) 2000-2024 Files 2 Folders 2 Files
|
||||||
|
///All Rights Reserved
|
||||||
|
///***************************************************************
|
||||||
|
///
|
||||||
|
///TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
///
|
||||||
|
///1. Redistributions in any form are not permitted whatsoever,
|
||||||
|
/// under any conditions.
|
||||||
|
///
|
||||||
|
///2. This software may not be reverse engineered, decompiled,
|
||||||
|
/// or disassembled.
|
||||||
|
///
|
||||||
|
///3. Files 2 Folders [rest of string was truncated]";.
|
||||||
|
/// </summary>
|
||||||
|
public static string Files2Folders2Files_LICENSE {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Files2Folders2Files_LICENSE", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
133
Files2Folders2Files/Properties/Resources.resx
Normal file
133
Files2Folders2Files/Properties/Resources.resx
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
<?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>
|
||||||
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="Files2Folders2Files_DONATIONS" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Docs\Files2Folders2Files-DONATIONS.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
|
||||||
|
</data>
|
||||||
|
<data name="Files2Folders2Files_HELP" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Docs\Files2Folders2Files-HELP.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
|
||||||
|
</data>
|
||||||
|
<data name="Files2Folders2Files_HELP_CMD" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Docs\Files2Folders2Files-HELP-CMD.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
|
||||||
|
</data>
|
||||||
|
<data name="Files2Folders2Files_LICENSE" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Docs\Files2Folders2Files-LICENSE.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
------------------------------------------------------------------
|
||||||
|
Files 2 Folders 2 Files - Donations version 20250729
|
||||||
|
Copyright (c) 2016-2025 Files 2 Folders 2 Files
|
||||||
|
All Rights Reserved
|
||||||
|
------------------------------------------------------------------
|
||||||
|
|
||||||
|
As you may know, a lot of time, effort and hard work goes into the
|
||||||
|
development and maintenance of a world class automated files 2
|
||||||
|
folders 2 files app. If you like or use this software regularly,
|
||||||
|
maybe you would like to make a donation.
|
||||||
|
|
||||||
|
Please use the following donation link to make a donation:
|
||||||
|
|
||||||
|
https://www.devemall.int.eu.org/index.php?action=donations
|
||||||
|
|
||||||
|
Home Page: https://www.devemall.int.eu.org/
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
------------------------------------------------------------------
|
||||||
|
Files 2 Folders 2 Files - Help - CMD version 20250729
|
||||||
|
Copyright (c) 2016-2025 Files 2 Folders 2 Files
|
||||||
|
All Rights Reserved
|
||||||
|
------------------------------------------------------------------
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
Files2Folders2Files-CLI.exe [-command] [option:]
|
||||||
|
Options that contain spaces must be enclosed in quotations
|
||||||
|
Options may be specified in any order
|
||||||
|
Only one command may be used
|
||||||
|
If no command is passed then -help will be used
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
|
||||||
|
Folders 2 Files Example:
|
||||||
|
Files2Folders2Files-CLI.exe -folders2files
|
||||||
|
|
||||||
|
Files 2 Folders Example:
|
||||||
|
Files2Folders2Files-CLI.exe -files2folders
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
|
||||||
|
WARNING:
|
||||||
|
Using invalid options values may cause this app to crash!
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
|
||||||
|
Standard Commands:
|
||||||
|
-folders2files Builds files from folders
|
||||||
|
-files2folders Builds folders from files
|
||||||
|
-help Print the help
|
||||||
|
-donations Print the donations information
|
||||||
|
-license Print the license
|
||||||
|
-version Print the version
|
||||||
|
-registerapp Registers the app
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
|
||||||
|
Output Options:
|
||||||
|
DE: Delete Empty Folders
|
||||||
|
0 No
|
||||||
|
1 Yes - DEFAULT
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
|
||||||
|
Path Options:
|
||||||
|
DP: Path to the directory path
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
|
||||||
|
Registration Options:
|
||||||
|
RA: Register app username
|
||||||
|
RB: Register app email address
|
||||||
|
RC: Register app password
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
---------------------------------------------------------------
|
||||||
|
Files 2 Folders 2 Files - Help version 20250729
|
||||||
|
Copyright (c) 2016-2025 Files 2 Folders 2 Files
|
||||||
|
All Rights Reserved
|
||||||
|
---------------------------------------------------------------
|
||||||
|
|
||||||
|
[I] About
|
||||||
|
[II] Contributing
|
||||||
|
[III] Contact
|
||||||
|
[IV] Disclaimer
|
||||||
|
|
||||||
|
[I] About
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Files 2 Folders 2 Files, or F2F2F is the original automated files to folders and folders to files converter. This is useful for converting back and forth between organizing your Gamecube games for playing them on a modded Wii and organizing them for sharing.
|
||||||
|
|
||||||
|
Files 2 Folders 2 Files can perform the following tasks:
|
||||||
|
* Files 2 Folders - Moves all the files from a single directory into folders of matching names.
|
||||||
|
* Folders 2 Files - Moves all the files from all the folders into a single directory.
|
||||||
|
|
||||||
|
[II] Contributing
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Let's work better together. We are looking to collaborate with like-minded people who want to contribute in any capacity. Collaboration is open to everyone and we need your help if you are a:
|
||||||
|
* Collector
|
||||||
|
* Database Administrator
|
||||||
|
* Datter
|
||||||
|
* Developer
|
||||||
|
* Dumper
|
||||||
|
* Graphic Artist
|
||||||
|
* Translator
|
||||||
|
* Player
|
||||||
|
* Tester
|
||||||
|
|
||||||
|
Feel free to:
|
||||||
|
* Fork the repository
|
||||||
|
* Branch your repository with a meaningful name related to the changes you are making
|
||||||
|
* Create a pull request
|
||||||
|
|
||||||
|
[III] Contact
|
||||||
|
---------------------------------------------------------------
|
||||||
|
GitEmAll: https://gitemall.devemall.int.eu.org/TommySalami/Files2Folders2Files
|
||||||
|
|
||||||
|
[IV] Disclaimer
|
||||||
|
---------------------------------------------------------------
|
||||||
|
This software may only be used and/or distributed in accordance with the license with which it is distributed.
|
||||||
Binary file not shown.
@@ -0,0 +1,40 @@
|
|||||||
|
***************************************************************
|
||||||
|
Files 2 Folders 2 Files - License version 20250729
|
||||||
|
Copyright (c) 2000-2025 Files 2 Folders 2 Files
|
||||||
|
All Rights Reserved
|
||||||
|
***************************************************************
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Redistributions in any form are not permitted whatsoever,
|
||||||
|
under any conditions.
|
||||||
|
|
||||||
|
2. This software may not be reverse engineered, decompiled,
|
||||||
|
or disassembled.
|
||||||
|
|
||||||
|
3. Files 2 Folders 2 Files may publish revised and/or new
|
||||||
|
versions of the license from time to time. Each version
|
||||||
|
will be given a distinguishing version number. No one other
|
||||||
|
than Files 2 Folders 2 Files has the right to modify the
|
||||||
|
terms applicable to covered code created under this
|
||||||
|
License.
|
||||||
|
|
||||||
|
4. It is your responsibility to use this software in accordance
|
||||||
|
with all applicable laws.
|
||||||
|
|
||||||
|
***************************************************************
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE FILES 2 FOLDERS 2 FILES
|
||||||
|
DEVELOPMENT TEAM 'AS IS' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
FILES 2 FOLDERS 2 FILES DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||||
|
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||||
|
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||||
|
THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
This file can be deleted.
|
||||||
6
Files2Folders2Files/packages.config
Normal file
6
Files2Folders2Files/packages.config
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Serilog" version="2.12.0" targetFramework="net48" />
|
||||||
|
<package id="Serilog.Sinks.Console" version="4.1.0" targetFramework="net48" />
|
||||||
|
<package id="Serilog.Sinks.LogEmAll" version="0.0.7" targetFramework="net48" />
|
||||||
|
</packages>
|
||||||
40
LICENSE
Normal file
40
LICENSE
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
***************************************************************
|
||||||
|
Files 2 Folders 2 Files - License version 20250729
|
||||||
|
Copyright (c) 2000-2025 Files 2 Folders 2 Files
|
||||||
|
All Rights Reserved
|
||||||
|
***************************************************************
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Redistributions in any form are not permitted whatsoever,
|
||||||
|
under any conditions.
|
||||||
|
|
||||||
|
2. This software may not be reverse engineered, decompiled,
|
||||||
|
or disassembled.
|
||||||
|
|
||||||
|
3. Files 2 Folders 2 Files may publish revised and/or new
|
||||||
|
versions of the license from time to time. Each version
|
||||||
|
will be given a distinguishing version number. No one other
|
||||||
|
than Files 2 Folders 2 Files has the right to modify the
|
||||||
|
terms applicable to covered code created under this
|
||||||
|
License.
|
||||||
|
|
||||||
|
4. It is your responsibility to use this software in accordance
|
||||||
|
with all applicable laws.
|
||||||
|
|
||||||
|
***************************************************************
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE FILES 2 FOLDERS 2 FILES
|
||||||
|
DEVELOPMENT TEAM 'AS IS' AND ANY EXPRESSED OR IMPLIED
|
||||||
|
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||||
|
FILES 2 FOLDERS 2 FILES DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||||
|
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||||
|
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||||
|
THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
42
README.md
Normal file
42
README.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# @Files2Folders2Files
|
||||||
|
### The Original Automated Files 2 Folders 2 Files
|
||||||
|
## About
|
||||||
|
Files 2 Folders 2 Files, or F2F2F is the original automated files to folders and folders to files converter. This is useful for converting back and forth between organizing your Gamecube games for playing them on a modded Wii and organizing them for sharing.
|
||||||
|
|
||||||
|
Files 2 Folders 2 Files can perform the following tasks:
|
||||||
|
* Files 2 Folders - Moves all the files from a single directory into folders of matching names.
|
||||||
|
* Folders 2 Files - Moves all the files from all the folders into a single directory.
|
||||||
|
## Dependencies
|
||||||
|
.NET Framework 4.8
|
||||||
|
|
||||||
|
The following tools, extensions and external programs are required to be installed:
|
||||||
|
* Microsoft Visual Studio Installer Projects
|
||||||
|
## Projects
|
||||||
|
* Files2Folders2Files - Class Library
|
||||||
|
* Files2Folders2Files-CLI - Console App
|
||||||
|
* Files2Folders2Files-GUI - Windows Forms App
|
||||||
|
* Files2Folders2Files-Installer - Installer Project
|
||||||
|
* Files2Folders2Files-Release - Release Project
|
||||||
|
## Contributing
|
||||||
|
Let's work better together. We are looking to collaborate with like-minded people who want to contribute in any capacity. Collaboration is open to everyone and we need your help if you are a:
|
||||||
|
* Collector
|
||||||
|
* Database Administrator
|
||||||
|
* Datter
|
||||||
|
* Developer
|
||||||
|
* Dumper
|
||||||
|
* Graphic Artist
|
||||||
|
* Translator
|
||||||
|
* Player
|
||||||
|
* Tester
|
||||||
|
|
||||||
|
Feel free to:
|
||||||
|
* Fork the repository
|
||||||
|
* Create an issue
|
||||||
|
* Branch your repository with the issue number and a meaningful name related to the changes you are making
|
||||||
|
* Create a pull request
|
||||||
|
|
||||||
|
## Contact
|
||||||
|
GitEmAll: [https://gitemall.devemall.int.eu.org/TommySalami/Files2Folders2Files](https://gitemall.devemall.int.eu.org/TommySalami/Files2Folders2Files "GitEmAll")
|
||||||
|
|
||||||
|
---
|
||||||
|
###### Copyright (c) 2016-2025 Files 2 Folders 2 Files - All Rights Reserved v2025-07-29-00
|
||||||
Reference in New Issue
Block a user