OSDN Git Service

Visual Studio 2019対応
authorおりん <pandora_po@hotmail.com>
Sat, 3 Aug 2019 11:43:42 +0000 (20:43 +0900)
committerおりん <pandora_po@hotmail.com>
Sat, 3 Aug 2019 11:43:42 +0000 (20:43 +0900)
28 files changed:
FileNameChenger.sln [new file with mode: 0644]
FileNameChenger/App.xaml [new file with mode: 0644]
FileNameChenger/App.xaml.cs [new file with mode: 0644]
FileNameChenger/FileNameChenger.csproj [new file with mode: 0644]
FileNameChenger/FileNameChenger.ico [new file with mode: 0644]
FileNameChenger/Img/moon.jpg [new file with mode: 0644]
FileNameChenger/Properties/AssemblyInfo.cs [new file with mode: 0644]
FileNameChenger/Properties/Resources.Designer.cs [new file with mode: 0644]
FileNameChenger/Properties/Resources.resx [new file with mode: 0644]
FileNameChenger/Properties/Settings.Designer.cs [new file with mode: 0644]
FileNameChenger/Properties/Settings.settings [new file with mode: 0644]
FileNameChenger/Settings.cs [new file with mode: 0644]
FileNameChenger/Themes/Generic.xaml [new file with mode: 0644]
FileNameChenger/WindowMain.xaml [new file with mode: 0644]
FileNameChenger/WindowMain.xaml.BAK [new file with mode: 0644]
FileNameChenger/WindowMain.xaml.cs [new file with mode: 0644]
FileNameChenger/WorkView.xaml [new file with mode: 0644]
FileNameChenger/WorkView.xaml.cs [new file with mode: 0644]
FileNameChenger/app.config [new file with mode: 0644]
FileNameChengerCore/CConfig.cs [new file with mode: 0644]
FileNameChengerCore/CFileCopy.cs [new file with mode: 0644]
FileNameChengerCore/FileNameChengerCore.csproj [new file with mode: 0644]
FileNameChengerCore/Properties/AssemblyInfo.cs [new file with mode: 0644]
UserControl/Properties/AssemblyInfo.cs [new file with mode: 0644]
UserControl/UCFileSelectTextBox.xaml [new file with mode: 0644]
UserControl/UCFileSelectTextBox.xaml.cs [new file with mode: 0644]
UserControl/UserControls.csproj [new file with mode: 0644]
UserControl/dir.JPG [new file with mode: 0644]

diff --git a/FileNameChenger.sln b/FileNameChenger.sln
new file mode 100644 (file)
index 0000000..bf5df2c
--- /dev/null
@@ -0,0 +1,40 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29123.88
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileNameChenger", "FileNameChenger\FileNameChenger.csproj", "{739724F4-F7C2-4175-9C66-AAB3A7C73FC8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UserControls", "UserControl\UserControls.csproj", "{BFA602E9-04B3-415E-BE5B-FDF23C5B7E7E}"
+       ProjectSection(ProjectDependencies) = postProject
+               {8472E9C7-D27D-40F3-9843-3C95F47EFF29} = {8472E9C7-D27D-40F3-9843-3C95F47EFF29}
+       EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileNameChengerCore", "FileNameChengerCore\FileNameChengerCore.csproj", "{8472E9C7-D27D-40F3-9843-3C95F47EFF29}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Release|Any CPU = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {739724F4-F7C2-4175-9C66-AAB3A7C73FC8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {739724F4-F7C2-4175-9C66-AAB3A7C73FC8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {739724F4-F7C2-4175-9C66-AAB3A7C73FC8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {739724F4-F7C2-4175-9C66-AAB3A7C73FC8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {BFA602E9-04B3-415E-BE5B-FDF23C5B7E7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {BFA602E9-04B3-415E-BE5B-FDF23C5B7E7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {BFA602E9-04B3-415E-BE5B-FDF23C5B7E7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {BFA602E9-04B3-415E-BE5B-FDF23C5B7E7E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8472E9C7-D27D-40F3-9843-3C95F47EFF29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8472E9C7-D27D-40F3-9843-3C95F47EFF29}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8472E9C7-D27D-40F3-9843-3C95F47EFF29}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8472E9C7-D27D-40F3-9843-3C95F47EFF29}.Release|Any CPU.Build.0 = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+       GlobalSection(ExtensibilityGlobals) = postSolution
+               SolutionGuid = {4210B52A-2BF9-4C9E-9670-5FF19C450947}
+       EndGlobalSection
+EndGlobal
diff --git a/FileNameChenger/App.xaml b/FileNameChenger/App.xaml
new file mode 100644 (file)
index 0000000..5518c29
--- /dev/null
@@ -0,0 +1,8 @@
+<Application x:Class="FileNameChenger.App"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    StartupUri="WindowMain.xaml">
+    <Application.Resources>
+         
+    </Application.Resources>
+</Application>
diff --git a/FileNameChenger/App.xaml.cs b/FileNameChenger/App.xaml.cs
new file mode 100644 (file)
index 0000000..faee190
--- /dev/null
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Data;
+using System.Linq;
+using System.Windows;
+
+namespace WpfApplication1
+{
+    /// <summary>
+    /// App.xaml の相互作用ロジック
+    /// </summary>
+    public partial class App : Application
+    {
+    }
+}
diff --git a/FileNameChenger/FileNameChenger.csproj b/FileNameChenger/FileNameChenger.csproj
new file mode 100644 (file)
index 0000000..4d17291
--- /dev/null
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{739724F4-F7C2-4175-9C66-AAB3A7C73FC8}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>FileNameChenger</RootNamespace>
+    <AssemblyName>FileNameChenger</AssemblyName>
+    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <WarningLevel>4</WarningLevel>
+    <IsWebBootstrapper>true</IsWebBootstrapper>
+    <ApplicationIcon>FileNameChenger.ico</ApplicationIcon>
+    <ManifestCertificateThumbprint>A1B2E26D148137B00DF8B896EC3D8110E38EFD8E</ManifestCertificateThumbprint>
+    <ManifestKeyFile>FileNameChenger_TemporaryKey.pfx</ManifestKeyFile>
+    <GenerateManifests>true</GenerateManifests>
+    <SignManifests>false</SignManifests>
+    <PublishUrl>ftp://ftp014.upp.so-net.ne.jp/public_html/FileNameChenger/</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Web</InstallFrom>
+    <UpdateEnabled>true</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <InstallUrl>http://www014.upp.so-net.ne.jp/pandorabox/FileNameChenger/</InstallUrl>
+    <CreateWebPageOnPublish>true</CreateWebPageOnPublish>
+    <WebPage>publish.htm</WebPage>
+    <ApplicationRevision>0</ApplicationRevision>
+    <ApplicationVersion>0.1.0.%2a</ApplicationVersion>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <PublishWizardCompleted>true</PublishWizardCompleted>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <TargetFrameworkProfile />
+  </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>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xaml" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+    <Reference Include="UIAutomationProvider">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="WindowsBase">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="PresentationCore">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="PresentationFramework">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <ApplicationDefinition Include="App.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </ApplicationDefinition>
+    <Page Include="Themes\Generic.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
+    <Page Include="WindowMain.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
+    <Page Include="WorkView.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Compile Include="App.xaml.cs">
+      <DependentUpon>App.xaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="WindowMain.xaml.cs">
+      <DependentUpon>WindowMain.xaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Properties\AssemblyInfo.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+    <Compile Include="Settings.cs" />
+    <Compile Include="WorkView.xaml.cs">
+      <DependentUpon>WorkView.xaml</DependentUpon>
+    </Compile>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <AppDesigner Include="Properties\" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework Client Profile</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
+      <Visible>False</Visible>
+      <ProductName>Windows インストーラ 3.1</ProductName>
+      <Install>true</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <Resource Include="FileNameChenger.ico" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+    <None Include="FileNameChenger_TemporaryKey.pfx" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\FileNameChengerCore\FileNameChengerCore.csproj">
+      <Project>{8472E9C7-D27D-40F3-9843-3C95F47EFF29}</Project>
+      <Name>FileNameChengerCore</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\UserControl\UserControls.csproj">
+      <Project>{BFA602E9-04B3-415E-BE5B-FDF23C5B7E7E}</Project>
+      <Name>UserControls</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Resource Include="Img\moon.jpg" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/FileNameChenger/FileNameChenger.ico b/FileNameChenger/FileNameChenger.ico
new file mode 100644 (file)
index 0000000..ae956f5
Binary files /dev/null and b/FileNameChenger/FileNameChenger.ico differ
diff --git a/FileNameChenger/Img/moon.jpg b/FileNameChenger/Img/moon.jpg
new file mode 100644 (file)
index 0000000..c7e1434
Binary files /dev/null and b/FileNameChenger/Img/moon.jpg differ
diff --git a/FileNameChenger/Properties/AssemblyInfo.cs b/FileNameChenger/Properties/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..0a687c6
--- /dev/null
@@ -0,0 +1,55 @@
+using System.Reflection;
+using System.Resources;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。
+// アセンブリに関連付けられている情報を変更するには、
+// これらの属性値を変更してください。
+[assembly: AssemblyTitle("FileNameChenger")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("FileNameChenger")]
+[assembly: AssemblyCopyright("Copyright ©おりん  2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// ComVisible を false に設定すると、その型はこのアセンブリ内で COM コンポーネントから
+// 参照不可能になります。COM からこのアセンブリ内の型にアクセスする場合は、
+// その型の ComVisible 属性を true に設定してください。
+[assembly: ComVisible(false)]
+
+//ローカライズ可能なアプリケーションのビルドを開始するには、
+//.csproj ファイルの <UICulture>CultureYouAreCodingWith</UICulture> を
+//<PropertyGroup> 内部で設定します。たとえば、
+//ソース ファイルで英語を使用している場合、<UICulture> を en-US に設定します。次に、
+//下の NeutralResourceLanguage 属性のコメントを解除します。下の行の "en-US" を
+//プロジェクト ファイルの UICulture 設定と一致するよう更新します。
+
+//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+
+[assembly: ThemeInfo(
+    ResourceDictionaryLocation.None, //テーマ固有のリソース ディクショナリが置かれている場所
+    //(リソースがページ、
+    //またはアプリケーション リソース ディクショナリに見つからない場合に使用されます)
+    ResourceDictionaryLocation.SourceAssembly //汎用リソース ディクショナリが置かれている場所
+    //(リソースがページ、
+    //アプリケーション、またはいずれのテーマ固有のリソース ディクショナリにも見つからない場合に使用されます)
+)]
+
+
+// アセンブリのバージョン情報は、以下の 4 つの値で構成されています:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を 
+// 既定値にすることができます:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("0.1.0.2")]
+[assembly: AssemblyFileVersion("0.1.0.2")]
diff --git a/FileNameChenger/Properties/Resources.Designer.cs b/FileNameChenger/Properties/Resources.Designer.cs
new file mode 100644 (file)
index 0000000..d5f8ac2
--- /dev/null
@@ -0,0 +1,81 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     このコードはツールによって生成されました。
+//     ランタイム バージョン:4.0.30319.42000
+//
+//     このファイルへの変更は、以下の状況下で不正な動作の原因になったり、
+//     コードが再生成されるときに損失したりします。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace FileNameChenger.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   ローカライズされた文字列などを検索するための、厳密に型指定されたリソース クラスです。
+    /// </summary>
+    // このクラスは StronglyTypedResourceBuilder クラスが ResGen
+    // または Visual Studio のようなツールを使用して自動生成されました。
+    // メンバーを追加または削除するには、.ResX ファイルを編集して、/str オプションと共に
+    // ResGen を実行し直すか、または VS プロジェクトをビルドし直します。
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.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>
+        ///   このクラスで使用されているキャッシュされた ResourceManager インスタンスを返します。
+        /// </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("FileNameChenger.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   すべてについて、現在のスレッドの CurrentUICulture プロパティをオーバーライドします
+        ///   現在のスレッドの CurrentUICulture プロパティをオーバーライドします。
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   .\Config.Xml に類似しているローカライズされた文字列を検索します。
+        /// </summary>
+        internal static string ConfigFileName {
+            get {
+                return ResourceManager.GetString("ConfigFileName", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   FileNameChenger に類似しているローカライズされた文字列を検索します。
+        /// </summary>
+        internal static string Title {
+            get {
+                return ResourceManager.GetString("Title", resourceCulture);
+            }
+        }
+    }
+}
diff --git a/FileNameChenger/Properties/Resources.resx b/FileNameChenger/Properties/Resources.resx
new file mode 100644 (file)
index 0000000..7321ede
--- /dev/null
@@ -0,0 +1,126 @@
+<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="ConfigFileName" xml:space="preserve">
+    <value>.\Config.Xml</value>
+  </data>
+  <data name="Title" xml:space="preserve">
+    <value>FileNameChenger</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/FileNameChenger/Properties/Settings.Designer.cs b/FileNameChenger/Properties/Settings.Designer.cs
new file mode 100644 (file)
index 0000000..fbaa01f
--- /dev/null
@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     このコードはツールによって生成されました。
+//     ランタイム バージョン:4.0.30319.42000
+//
+//     このファイルへの変更は、以下の状況下で不正な動作の原因になったり、
+//     コードが再生成されるときに損失したりします。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace FileNameChenger.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+    }
+}
diff --git a/FileNameChenger/Properties/Settings.settings b/FileNameChenger/Properties/Settings.settings
new file mode 100644 (file)
index 0000000..8e615f2
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles />
+  <Settings />
+</SettingsFile>
\ No newline at end of file
diff --git a/FileNameChenger/Settings.cs b/FileNameChenger/Settings.cs
new file mode 100644 (file)
index 0000000..959b861
--- /dev/null
@@ -0,0 +1,29 @@
+namespace FileNameChenger.Properties
+{
+    
+    
+    // このクラスでは設定クラスでの特定のイベントを処理することができます:
+    //  SettingChanging イベントは、設定値が変更される前に発生します。
+    //  PropertyChanged イベントは、設定値が変更された後に発生します。
+    //  SettingsLoaded イベントは、設定値が読み込まれた後に発生します。
+    //  SettingsSaving イベントは、設定値が保存される前に発生します。
+    internal sealed partial class Settings {
+        
+        public Settings() {
+            // // 設定の保存と変更のイベント ハンドラを追加するには、以下の行のコメントを解除します:
+            //
+            // this.SettingChanging += this.SettingChangingEventHandler;
+            //
+            // this.SettingsSaving += this.SettingsSavingEventHandler;
+            //
+        }
+        
+        private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
+            // SettingChangingEvent イベントを処理するコードをここに追加してください。
+        }
+        
+        private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
+            // SettingsSaving イベントを処理するコードをここに追加してください。
+        }
+    }
+}
diff --git a/FileNameChenger/Themes/Generic.xaml b/FileNameChenger/Themes/Generic.xaml
new file mode 100644 (file)
index 0000000..975d94b
--- /dev/null
@@ -0,0 +1,7 @@
+<ResourceDictionary
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:local="clr-namespace:UserControls">
+
+
+</ResourceDictionary>
diff --git a/FileNameChenger/WindowMain.xaml b/FileNameChenger/WindowMain.xaml
new file mode 100644 (file)
index 0000000..4310122
--- /dev/null
@@ -0,0 +1,115 @@
+<Window x:Class="FileNameChenger.WindowMain"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:uc="clr-namespace:UserControls;assembly=UserControls"
+    Title="FileNameChenger" Height="200" Width="280" ResizeMode="CanMinimize" Unloaded="Window_Unloaded" Closing="Window_Closing" AllowDrop="False">
+
+    <Window.Resources>
+
+        <Style x:Key="PropertyTriggerExampleCheckBoxStyle" TargetType="{x:Type CheckBox}">
+
+        </Style>
+    </Window.Resources>
+
+    <Grid Background="Black" Height="181.484" Width="276.84" Name="Grid" AllowDrop="True" DragEnter="Grid_DragEnter" Drop="Grid_Drop">
+        <Grid.BindingGroup>
+            <BindingGroup Name="{x:Null}" NotifyOnValidationError="False" />
+        </Grid.BindingGroup>
+        <Button Canvas.Left="110" Canvas.Top="110" Width="80" Height="80" Margin="0,0,15.708,7.14" Name="buttonRun" VerticalAlignment="Bottom" HorizontalAlignment="Right" ForceCursor="False" Click="buttonRun_Click">
+            <Button.RenderTransform>
+                <RotateTransform CenterX="45" CenterY="45" Angle="10"/>
+            </Button.RenderTransform>
+
+            変換実行
+        </Button>
+        <Label Height="25.377" Margin="18.296,18.564,0,0" Name="labelFrom" VerticalAlignment="Top" ClipToBounds="False" Foreground="White" HorizontalAlignment="Left" Width="118.84">変換元</Label>
+        <Label Margin="18.296,72.114,0,82.824" Name="labelTo" Foreground="White" HorizontalAlignment="Left" Width="118.84">変換先</Label>
+        <CheckBox Height="14.28" Margin="12,0,111.522,24.276" Name="checkBoxInSubDir" VerticalAlignment="Bottom" Foreground="White" IsChecked="False" Background="Black" Visibility="Hidden">サブディレクトリ内を対象</CheckBox>
+        <Label Height="22.848" HorizontalAlignment="Right" Margin="0,12,-34.272,0" Name="labelSetup" VerticalAlignment="Top" Width="120" Foreground="White" MouseEnter="labelSetup_MouseEnter" Visibility="Hidden">詳細設定→</Label>
+        <Image Canvas.Left="110" Canvas.Top="100" Margin="52.122,65.688,0,35.7" Name="imageWork" Stretch="Fill" Source="file:///F:/リネージュ/fansiteKitThrone1/07.ロゴ/リネージュII.jpg" Opacity="0.25" HorizontalAlignment="Left" Width="79.776">
+            <Image.RenderTransform>
+                <RotateTransform CenterX="45" CenterY="45" Angle="0" x:Name="workingImage"></RotateTransform>
+            </Image.RenderTransform>
+        </Image>
+        <ProgressBar Height="32.706" Margin="12,18.564,80.82,0" Name="progressBarWork" VerticalAlignment="Top" Background="#FFD4D0C8" Value="0" Foreground="Gray" SmallChange="0.1" FontSize="12" BorderBrush="Transparent" BorderThickness="1" />
+        <CheckBox Height="16" HorizontalAlignment="Left" Margin="17.136,0,0,39.27" Name="checkBoxViewControl" VerticalAlignment="Bottom" Width="120" Visibility="Hidden" Foreground="White" Style="{StaticResource PropertyTriggerExampleCheckBoxStyle}">
+            <CheckBox.Triggers>
+                <!--                <Trigger Property="Content" Value="">-->
+                <EventTrigger RoutedEvent="CheckBox.Checked">
+                    <BeginStoryboard>
+                        <Storyboard>
+                            <!--フェイドイン-->
+                            <DoubleAnimation
+                Storyboard.TargetName="imageWork" 
+                Storyboard.TargetProperty="Opacity"
+                To="1.0" Duration="0:0:5"/>
+                            <DoubleAnimation 
+                Storyboard.TargetName="progressBarWork" 
+                Storyboard.TargetProperty="Opacity"
+                To="1.0" Duration="0:0:5"/>
+
+                            <!--フェイドアウト-->
+                            <DoubleAnimation
+                Storyboard.TargetName="labelFrom" 
+                Storyboard.TargetProperty="Opacity"
+                To="0.0" Duration="0:0:5"/>
+                            <DoubleAnimation
+                Storyboard.TargetName="labelTo" 
+                Storyboard.TargetProperty="Opacity"
+                To="0.0" Duration="0:0:5"/>
+                            <DoubleAnimation 
+                Storyboard.TargetName="textBoxFrom" 
+                Storyboard.TargetProperty="Opacity"
+                 To="0.0" Duration="0:0:5"/>
+                            <DoubleAnimation
+                Storyboard.TargetName="textBoxTo" 
+                Storyboard.TargetProperty="Opacity"
+                 To="0.0" Duration="0:0:5"/>
+                         </Storyboard>
+                    </BeginStoryboard>
+                </EventTrigger>
+            </CheckBox.Triggers> アニメーションのトリガー
+        </CheckBox>
+        <CheckBox Height="16" HorizontalAlignment="Left" Margin="17,0,0,20" Name="checkBoxViewControl_Run" VerticalAlignment="Bottom" Width="120" Visibility="Hidden" Foreground="White" Style="{StaticResource PropertyTriggerExampleCheckBoxStyle}">
+            <CheckBox.Triggers>
+                <!--                <Trigger Property="Content" Value="">-->
+                <EventTrigger RoutedEvent="CheckBox.Checked">
+                    <BeginStoryboard>
+                        <Storyboard>
+                            <!--フェイドアウト-->
+                            <DoubleAnimation
+                Storyboard.TargetName="imageWork" 
+                Storyboard.TargetProperty="Opacity"
+                To="0.25" Duration="0:0:5"/>
+                            <DoubleAnimation 
+                Storyboard.TargetName="progressBarWork" 
+                Storyboard.TargetProperty="Opacity"
+                To="0.0" Duration="0:0:5"/>
+
+                            <!--フェイドイン-->
+                            <DoubleAnimation
+                Storyboard.TargetName="labelFrom" 
+                Storyboard.TargetProperty="Opacity"
+                To="1.0" Duration="0:0:5"/>
+                            <DoubleAnimation
+                Storyboard.TargetName="labelTo" 
+                Storyboard.TargetProperty="Opacity"
+                To="1.0" Duration="0:0:5"/>
+                            <DoubleAnimation 
+                Storyboard.TargetName="textBoxFrom" 
+                Storyboard.TargetProperty="Opacity"
+                 To="1.0" Duration="0:0:5"/>
+                            <DoubleAnimation
+                Storyboard.TargetName="textBoxTo" 
+                Storyboard.TargetProperty="Opacity"
+                 To="1.0" Duration="0:0:5"/>
+                        </Storyboard>
+                    </BeginStoryboard>
+                </EventTrigger>
+            </CheckBox.Triggers> アニメーションのトリガー
+        </CheckBox>
+        <Label Height="27.132" Margin="12,0,117.948,13.868" Name="labelNonFreeSpace" VerticalAlignment="Bottom" Visibility="Hidden" Foreground="Red">ディスク容量なし</Label>
+        <uc:UCFileSelectTextBox Name="textBoxFrom" Margin="17.136,40.698,109.704,0" Height="25" VerticalAlignment="Top"></uc:UCFileSelectTextBox>
+        <uc:UCFileSelectTextBox Name="textBoxTo" Margin="17.136,0,109.704,61.404" Height="25" VerticalAlignment="Bottom"></uc:UCFileSelectTextBox>
+    </Grid>
+</Window>
diff --git a/FileNameChenger/WindowMain.xaml.BAK b/FileNameChenger/WindowMain.xaml.BAK
new file mode 100644 (file)
index 0000000..d19afeb
--- /dev/null
@@ -0,0 +1,126 @@
+//TODO:スレッドの廃棄処理を考慮
+//TODO:フェイドアウト フェイドインで処理中のバーを表示する。
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace FileNameChenger
+{
+    /// <summary>
+    /// WindowMain.xaml の相互作用ロジック
+    /// </summary>
+    public partial class WindowMain : Window
+    {
+        public WindowMain()
+        {
+            InitializeComponent();
+        }
+
+        private void textBox_MouseEnter(object sender, MouseEventArgs e)
+        {
+            TextBox textBox = (TextBox)sender;
+            if (textBox.Text == "" || textBox.Text == null) {
+                textBox.ToolTip = null;
+            } else {
+                textBox.ToolTip = textBox.Text;
+            }      
+        }
+
+        private void button_Click(object sender, RoutedEventArgs e)
+        {
+            //TODO:フォルダー選択かっこ悪いのでカスタムを作成したい
+            System.Windows.Forms.FolderBrowserDialog fbd =
+                new System.Windows.Forms.FolderBrowserDialog();
+
+            System.Windows.Forms.DialogResult result = fbd.ShowDialog();
+
+            if (result == System.Windows.Forms.DialogResult.OK)
+            {
+                if (sender == buttonFrom)
+                {
+                    textBoxFrom.Text = fbd.SelectedPath;
+                }
+                else if (sender == buttonTo)
+                {
+                    textBoxTo.Text = fbd.SelectedPath;
+                }
+            }
+        }
+        
+        private void textBoxFrom_Drop(object sender, DragEventArgs e)
+        {
+            //TODO:ドラッグアンドドロップ対応したのだが動かないので調査が必要
+            /*
+            if (e.Effects == System.Windows.DragDropEffects.Copy)
+            {
+                TextBox textBox = (TextBox)sender;
+
+                textBox.Text = e.Data.GetData(System.Windows.DataFormats.FileDrop).ToString();
+            }
+            */
+            // ファイルドロップした場合のみ処理
+            if (e.Data.GetDataPresent(DataFormats.FileDrop))
+            {
+                foreach (string fileName in (string[])e.Data.GetData(DataFormats.FileDrop))
+                {
+                    TextBox textBox = (TextBox)sender;
+                    textBox.Text = fileName;
+
+                    break;
+                }
+            }
+
+        }
+
+        private void textBoxFrom_DragEnter(object sender, DragEventArgs e)
+        {
+            textBoxFrom.Text = "test";
+            if (e.Data.GetDataPresent(System.Windows.DataFormats.FileDrop)
+                || e.Data.GetDataPresent(System.Windows.DataFormats.Text)
+                || e.Data.GetDataPresent(System.Windows.DataFormats.UnicodeText))
+            {
+                e.Effects = System.Windows.DragDropEffects.Copy;
+            }
+        }
+
+        bool IsWidthUp = false;
+        private void labelSetup_MouseEnter(object sender, MouseEventArgs e)
+        {
+            if (IsWidthUp)
+            {
+                Width -= 200;
+                Grid.Width -= 200;
+            }
+            else
+            {
+                Width += 200;
+                Grid.Width += 200;
+            }
+            IsWidthUp = !IsWidthUp;
+        }
+
+        private void buttonRun_Click(object sender, RoutedEventArgs e)
+        {
+            WorkView view = new WorkView();
+            view.ShowDialog();
+            /*
+            CFileCopy fileCopy = new CFileCopy(textBoxFrom.Text, textBoxTo.Text);
+            if (fileCopy.Count > 0)
+            {
+                fileCopy.Run();
+            }
+             */
+        }
+
+    }
+}
diff --git a/FileNameChenger/WindowMain.xaml.cs b/FileNameChenger/WindowMain.xaml.cs
new file mode 100644 (file)
index 0000000..3f7f090
--- /dev/null
@@ -0,0 +1,444 @@
+//TODO:スレッドの廃棄処理を考慮
+//TODO:フェイドアウト フェイドインで処理中のバーを表示する。
+//TODO:処理ファイルをバックグラウンドに流せないか
+//TODO:コンソールアプリ、WEBアプリを作成したい
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.IO;
+
+namespace FileNameChenger
+{
+    /// <summary>
+    /// WindowMain.xaml の相互作用ロジック
+    /// </summary>
+    public partial class WindowMain : Window
+    {
+        const string RunText = "変換実行";
+        const string CancelText = "中断";
+
+        //FileNameChengerCore.EStateFlg eStateFlg = FileNameChengerCore.EStateFlg.Non;
+        bool isRun = false;
+        System.Windows.Forms.Timer stateTimer = null;
+        FileNameChengerCore.CFileCopy cFileCopy = null;
+        FileNameChengerCore.CConfig cConfig = null;
+
+        public WindowMain()
+        {
+            InitializeComponent();
+
+            progressBarWork.Opacity = 0;
+            //imageWork.Opacity = 0.25;
+            imageWork.Opacity = 0.0;
+
+            //progressBarWork.Visibility = Visibility.Hidden;
+            //imageWork.Visibility = Visibility.Hidden;
+
+            //btnStoryboard.Storyboard.Completed += new EventHandler(Storyboard_Completed);
+
+            stateTimer = new System.Windows.Forms.Timer();
+            stateTimer.Interval = 100;
+            stateTimer.Tick += new EventHandler(stateTimer_Tick);
+
+
+            cConfig = new FileNameChengerCore.CConfig(FileNameChenger.Properties.Resources.ConfigFileName);
+            cConfig.getConfig();
+
+            textBoxFrom.Text = cConfig.FileNameFrom;
+            textBoxTo.Text = cConfig.FileNameTo;
+        }
+
+        bool IsWidthUp = false;
+        private void labelSetup_MouseEnter(object sender, MouseEventArgs e)
+        {
+            if (IsWidthUp)
+            {
+                Width -= 200;
+                Grid.Width -= 200;
+            }
+            else
+            {
+                Width += 200;
+                Grid.Width += 200;
+            }
+            IsWidthUp = !IsWidthUp;
+        }
+
+
+
+        private void setImage()
+        {
+            string dir = @".\img";
+
+            if (!Directory.Exists(dir))
+            {
+                Directory.CreateDirectory(dir);
+            }
+
+            string[] files = Directory.GetFiles(dir, "*.jpg", SearchOption.AllDirectories);
+
+
+            BitmapImage myBitmapImage = new BitmapImage();
+
+            if (files.Length == 0)
+            {
+                myBitmapImage.BeginInit();
+                myBitmapImage.UriSource = new Uri(@"FileNameChenger.ico", UriKind.RelativeOrAbsolute);
+                myBitmapImage.EndInit();
+            }
+            else
+            {
+                Random r = new Random();
+                int index = r.Next(files.Length - 1);
+                myBitmapImage.BeginInit();
+                myBitmapImage.UriSource = new Uri(@"file://" + Directory.GetCurrentDirectory() + files[index], UriKind.RelativeOrAbsolute);
+                myBitmapImage.EndInit();
+            }
+
+            imageWork.Source = myBitmapImage;
+
+        }
+
+
+        private void buttonRun_Click(object sender, RoutedEventArgs e)
+        {
+            /*
+            switch (eStateFlg)
+            {
+                case FileNameChengerCore.EStateFlg.Non:
+                    buttonRun.Content = RunText;
+                    break;
+                case FileNameChengerCore.EStateFlg.Run:
+                    buttonRun.Content = CancelText;
+                    break;
+                case FileNameChengerCore.EStateFlg.End:
+                case FileNameChengerCore.EStateFlg.Cancel:
+                    buttonRun.Content = RunText;
+                    break;
+                default:
+                    break;
+                
+            }
+             */
+
+            //WorkView view = new WorkView();
+            //view.ShowDialog();
+            
+            /*
+             */
+
+
+            
+            if (isRun)
+            {
+                /*
+                labelFrom.Visibility = Visibility.Visible;
+                labelTo.Visibility = Visibility.Visible;
+                textBoxFrom.Visibility = Visibility.Visible;
+                textBoxTo.Visibility = Visibility.Visible;
+                 */
+
+                //checkBoxViewControl_Run.IsChecked = !checkBoxViewControl_Run.IsChecked;
+
+                if (cFileCopy != null)
+                {
+                    cFileCopy.Cancel();
+                }
+                isRun = false;
+                buttonRun.Content = RunText;
+                Title = FileNameChenger.Properties.Resources.Title;
+            }
+            else
+            {
+                /*
+                progressBarWork.Visibility = Visibility.Visible;
+                imageWork.Visibility = Visibility.Visible;
+                 */
+
+                //checkBoxViewControl.IsChecked = !checkBoxViewControl.IsChecked;
+
+                cFileCopy = new FileNameChengerCore.CFileCopy(
+                    textBoxFrom.Text, textBoxTo.Text, cConfig.SerchPattern, cConfig.FileNamePattern);
+                if (cFileCopy.Count > 0)
+                {
+                    state = 0;
+                    buttonRun.Content = CancelText;
+                    if (cFileCopy.FreeSpace)
+                    {
+                        labelNonFreeSpace.Visibility = Visibility.Hidden;
+                    }
+                    else
+                    {
+                        labelNonFreeSpace.Visibility = Visibility.Visible;
+                    }
+                    files.Clear();
+                    workingImage.Angle = 0;
+                    setImage();
+                    progressBarWork.Minimum = 0;
+                    progressBarWork.Maximum = cFileCopy.Count;
+                    progressBarWork.Value = 0;
+
+                    cFileCopy.DoWorkEndEvent += new EventHandler<EventArgs>(cFileCopy_DoWorkEndEvent);
+                    cFileCopy.DoWorkingEvent += new EventHandler<FileNameChengerCore.DoWorkingEventArgs>(cFileCopy_DoWorkingEvent);
+
+                    isRun = true;
+                    cFileCopy.Run();
+
+
+                    stateTimer.Start();
+
+                }
+                else
+                {
+                    cFileCopy = null;
+                }
+            }
+            //btnStoryboard.Storyboard.Begin(this);
+        }
+
+        List<string> files = new List<string>();
+        void cFileCopy_DoWorkingEvent(object sender, FileNameChengerCore.DoWorkingEventArgs e)
+        {
+            //throw new NotImplementedException();
+            if (files != null)
+            {
+                files.Add(e.FileNameFrom + "→" + e.FileNameTo);
+            }
+
+            state++;
+        }
+
+        void cFileCopy_DoWorkEndEvent(object sender, EventArgs e)
+        {
+            //throw new NotImplementedException();
+           //buttonRun.Content = CancelText;
+           isRun = false;
+        }
+
+
+        int state = 0;
+
+        void stateTimer_Tick(object sender, EventArgs e)
+        {
+            //throw new NotImplementedException();
+            Title = FileNameChenger.Properties.Resources.Title
+                + "(" + state.ToString() + "/" + progressBarWork.Maximum.ToString() + ")";
+            /*
+            if (files.Count > 0)
+            {
+                Title = files[0];
+                files.RemoveAt(0);
+            }
+            else
+            {
+                Title = FileNameChenger.Properties.Resources.Title;
+            }
+             */
+
+            if (isRun)
+            {
+
+                lock (workingImage)
+                {
+                    if (workingImage.Angle >= 360)
+                    {
+                        workingImage.Angle = 0;
+                        setImage();
+                    }
+                    else
+                    {
+                        workingImage.Angle++;
+                    }
+                }
+
+                //フェードイン
+                lock (progressBarWork)
+                {
+                    if (progressBarWork.Opacity <= 1)
+                    {
+                        progressBarWork.Opacity += 0.1;
+                    }
+                    progressBarWork.Value = state;
+                }
+                if (imageWork.Opacity <= 1)
+                {
+                    imageWork.Opacity += 0.1;
+                }
+
+
+                //フェードアウト
+                if (labelFrom.Opacity >= 0)
+                {
+                    labelFrom.Opacity -= 0.1;
+                }
+                if (labelTo.Opacity >= 0)
+                {
+                    labelTo.Opacity -= 0.1;
+                }
+                if (textBoxFrom.Opacity >= 0)
+                {
+                    textBoxFrom.Opacity -= 0.1;
+                }
+                if (textBoxTo.Opacity >= 0)
+                {
+                    textBoxTo.Opacity -= 0.1;
+                }
+            }
+            else
+            {
+                buttonRun.Content = RunText;
+
+
+                //フェードアウト
+                if (progressBarWork.Opacity >= 0)
+                {
+                    progressBarWork.Opacity -= 0.1;
+                }
+                if (imageWork.Opacity >= 0)
+                {
+                    imageWork.Opacity -= 0.1;
+                }
+
+                //フェードイン
+                if (labelFrom.Opacity <= 1)
+                {
+                    labelFrom.Opacity += 0.1;
+                }
+                if (labelTo.Opacity <= 1)
+                {
+                    labelTo.Opacity += 0.1;
+                }
+                if (textBoxFrom.Opacity <= 1)
+                {
+                textBoxFrom.Opacity += 0.1;
+                }
+                if (textBoxTo.Opacity <= 1)
+                {
+                    textBoxTo.Opacity += 0.1;
+                }
+
+                
+                if (labelTo.Opacity == 1)
+                {
+                    files.Clear();
+                    stateTimer.Stop();
+                }
+            }
+
+        }
+
+        void Storyboard_Completed(object sender, EventArgs e)
+        {
+
+            //throw new NotImplementedException();
+            /*
+            daLabelFrom.From = labelFrom.Opacity;
+            daLabelTo.From = labelTo.Opacity;
+            daTextBoxFrom.From = textBoxFrom.Opacity;
+            daTextBoxTo.From = textBoxTo.Opacity;
+            daButtonFrom.From = buttonFrom.Opacity;
+            daButtonTo.From = buttonTo.Opacity;
+
+            daProgressBarWork.From = progressBarWork.Opacity;
+            daImageWork.From = imageWork.Opacity;
+            */
+            if (isRun)
+            {
+                labelFrom.Visibility = Visibility.Hidden;
+                labelTo.Visibility = Visibility.Hidden;
+                textBoxFrom.Visibility = Visibility.Hidden;
+                textBoxTo.Visibility = Visibility.Hidden;
+
+                /*
+                daLabelFrom.To = 1;
+                daLabelTo.To = 1;
+                daTextBoxFrom.To = 1;
+                daTextBoxTo.To = 1;
+                daButtonFrom.To = 1;
+                daButtonTo.To = 1;
+
+                daProgressBarWork.To = 0;
+                daImageWork.To = 0;
+                 */
+            }
+            else
+            {
+                progressBarWork.Visibility = Visibility.Hidden;
+                imageWork.Visibility = Visibility.Hidden;
+                /*
+                daLabelFrom.To = 0;
+                daLabelTo.To = 0;
+                daTextBoxFrom.To = 0;
+                daTextBoxTo.To = 0;
+                daButtonFrom.To = 0;
+                daButtonTo.To = 0;
+
+                daProgressBarWork.To = 1;
+                daImageWork.To = 1;
+                 */
+            }
+        }
+
+        private void Window_Unloaded(object sender, RoutedEventArgs e)
+        {
+        }
+
+        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
+        {
+            if (cFileCopy != null)
+            {
+                cFileCopy.Cancel();
+            }
+
+            cConfig.FileNameFrom = textBoxFrom.Text;
+            cConfig.FileNameTo = textBoxTo.Text;
+            cConfig.putConfig();
+        }
+
+        private void Grid_DragEnter(object sender, DragEventArgs e)
+        {
+            if (e.Data.GetDataPresent(System.Windows.DataFormats.FileDrop)
+                || e.Data.GetDataPresent(System.Windows.DataFormats.Text)
+                || e.Data.GetDataPresent(System.Windows.DataFormats.UnicodeText))
+            {
+                e.Effects = System.Windows.DragDropEffects.Copy;
+            }
+
+        }
+
+        private void Grid_Drop(object sender, DragEventArgs e)
+        {
+            // ファイルドロップした場合のみ処理
+            if (e.Data.GetDataPresent(DataFormats.FileDrop))
+            {
+                foreach (string fileName in (string[])e.Data.GetData(DataFormats.FileDrop))
+                {
+                    Point p = e.GetPosition(this);
+                    if (p.Y < (Height/2))
+                    {
+                        textBoxFrom.Text = fileName;
+                    }
+                    else
+                    {
+                    //TextBox textBox = (TextBox)sender;
+                    //textBox.Text = fileName;
+                        textBoxTo.Text = fileName;
+                    }
+
+                    break;
+                }
+            }
+
+        }
+    }
+}
diff --git a/FileNameChenger/WorkView.xaml b/FileNameChenger/WorkView.xaml
new file mode 100644 (file)
index 0000000..75f2b1c
--- /dev/null
@@ -0,0 +1,119 @@
+<Window x:Class="FileNameChenger.WorkView"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:uc="clr-namespace:UserControls;assembly=UserControls"
+    Title="FileNameChenger(WorkView)" Height="200" Width="280" ResizeMode="CanMinimize">
+    <Window.Resources>
+
+        <Style x:Key="PropertyTriggerExampleButtonStyle" TargetType="{x:Type Button}">
+
+            <Setter Property="Opacity" Value="0.25" />
+
+            <Style.Triggers>
+                <Trigger Property="IsMouseOver" Value="True">
+
+                    <Trigger.EnterActions>
+                        <BeginStoryboard>
+                            <Storyboard>
+                                <DoubleAnimation Storyboard.TargetProperty="Opacity"
+                  To="1" Duration="0:0:1" />
+                            </Storyboard>
+                        </BeginStoryboard>
+                    </Trigger.EnterActions>
+                    <Trigger.ExitActions>
+                        <BeginStoryboard>
+                            <Storyboard>
+                                <DoubleAnimation Storyboard.TargetProperty="Opacity"
+                  To="0.25" Duration="0:0:1" />
+                            </Storyboard>
+                        </BeginStoryboard>
+                    </Trigger.ExitActions>
+                </Trigger>
+            </Style.Triggers>
+        </Style>
+    </Window.Resources>
+
+    <Grid Background="Black" Height="181.484" Width="276.84" Name="Grid">
+        <Button Style="{StaticResource PropertyTriggerExampleButtonStyle}">
+            Move the mouse over me.
+        </Button>
+        <uc:UCFileSelectTextBox Margin="34,0,72.84,32" Opacity="1" Height="23" VerticalAlignment="Bottom" />
+        <Button Height="23" Margin="0,0,50,32" Name="buttonCancel" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="74.84" Click="buttonCancel_Click">キャンセル</Button>
+        <ProgressBar Height="10" Margin="34,0,59,61" Name="progressBarWork" VerticalAlignment="Bottom" />
+         <Button Height="23" HorizontalAlignment="Left" Margin="12,20,0,0" Name="buttonRun" VerticalAlignment="Top" Width="75" Click="buttonRun_Click">
+            <Button.Triggers>
+                <!-- Animates the rectangle's opacity. -->
+                <EventTrigger RoutedEvent="Button.Click">
+                    <BeginStoryboard Name="btnStoryboard">
+                        <Storyboard>
+                            <!--<DoubleAnimation
+                Storyboard.TargetName="workingImage" 
+                Storyboard.TargetProperty="Angle"
+                From="0" To="360" Duration="0:0:5" />
+-->
+                            <DoubleAnimation
+                Storyboard.TargetName="imageWork" 
+                Storyboard.TargetProperty="Opacity"
+                From="0.0" To="1.0" Duration="0:0:5"/>
+                        </Storyboard>
+
+                    </BeginStoryboard>
+                </EventTrigger>
+            </Button.Triggers>
+            Run</Button>
+        <Image Canvas.Left="110" Canvas.Top="100" Width="80" Height="80" Margin="27,0,50,77" Name="imageWork" Stretch="Fill" Source="file:///F:/リネージュ/fansiteKitThrone1/07.ロゴ/リネージュII.jpg" Opacity="1" Loaded="imageWork_Loaded">
+           <Image.RenderTransform>
+                <RotateTransform CenterX="45" CenterY="45" Angle="0" x:Name="workingImage">
+
+                </RotateTransform>
+            </Image.RenderTransform>
+
+            <Image.Triggers>
+                <!-- Animates the rectangle's opacity. -->
+                <EventTrigger RoutedEvent="Image.Loaded">
+                    <BeginStoryboard Name="imagStoryboard">
+                        <Storyboard>
+                            <!--<DoubleAnimation
+                Storyboard.TargetName="workingImage" 
+                Storyboard.TargetProperty="Angle"
+                From="0" To="360" Duration="0:0:5" />
+                            <DoubleAnimation
+                Storyboard.TargetName="imageWork" 
+                Storyboard.TargetProperty="Opacity"
+                From="0.0" To="1.0" Duration="0:0:5"/>
+ -->
+                       </Storyboard>
+
+                    </BeginStoryboard>
+                </EventTrigger>
+            </Image.Triggers>
+        </Image>
+        <Button HorizontalAlignment="Left" Margin="12,70,0,88" Name="buttonStop" Width="75" Click="buttonStop_Click">Stop</Button>
+        <!--
+        <StackPanel Margin="8,72,12,-52">
+            <Rectangle
+      Name="MyRectangle"
+      Width="100" 
+      Height="100"
+      Fill="Blue">
+                <Rectangle.Triggers>
+-->        
+                    <!-- Animates the rectangle's opacity. -->
+<!--                    <EventTrigger RoutedEvent="Rectangle.Loaded">
+                        <BeginStoryboard>
+                            <Storyboard>
+                                <DoubleAnimation
+                Storyboard.TargetName="MyRectangle" 
+                Storyboard.TargetProperty="Opacity"
+                From="1.0" To="0.0" Duration="0:0:5" 
+                AutoReverse="True" RepeatBehavior="Forever" />
+                            </Storyboard>
+                        </BeginStoryboard>
+                    </EventTrigger>
+                </Rectangle.Triggers>
+            </Rectangle>
+        </StackPanel>
+-->
+
+    </Grid>
+</Window>
diff --git a/FileNameChenger/WorkView.xaml.cs b/FileNameChenger/WorkView.xaml.cs
new file mode 100644 (file)
index 0000000..f9f82e5
--- /dev/null
@@ -0,0 +1,280 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Animation;
+using System.Windows.Shapes;
+using System.Threading;
+using System.IO;
+
+
+
+namespace FileNameChenger
+{
+    /// <summary>
+    /// WorkView.xaml の相互作用ロジック
+    /// </summary>
+    public partial class WorkView : Window
+    {
+
+        //Timer stateTimer = null;
+        System.Windows.Forms.Timer stateTimer = null;
+        public WorkView()
+        {
+            InitializeComponent();
+//            Run();
+
+            //this.Content = FileNameChenger.Properties.Resources.LineageII.darkelf;
+            //BitmapImage myBitmapImage = new BitmapImage();
+            //myBitmapImage.StreamSource = FileNameChenger.Properties.Resources.LineageII.darkelf.;
+
+            string[] files = Directory.GetFiles(@".\img", "*.jpg", SearchOption.AllDirectories);
+            
+
+            BitmapImage myBitmapImage = new BitmapImage();
+
+            if (files.Length == 0)
+            {
+                myBitmapImage.BeginInit();
+                myBitmapImage.UriSource = new Uri(@"FileNameChenger.ico", UriKind.RelativeOrAbsolute);
+                myBitmapImage.EndInit();
+            }
+            else
+            {
+                Random r = new Random();
+                int index = r.Next(files.Length - 1);
+                myBitmapImage.BeginInit();
+                myBitmapImage.UriSource = new Uri(@"file://" + Directory.GetCurrentDirectory() + files[index], UriKind.RelativeOrAbsolute);
+                myBitmapImage.EndInit();
+            }
+            
+            imageWork.Source = myBitmapImage;
+
+
+            //imagStoryboard.Storyboard.Stop();
+            progressBarWork.Minimum = 0;
+            progressBarWork.Maximum = 100;
+
+            /*
+            AutoResetEvent autoEvent     = new AutoResetEvent(false);
+
+                 // Create the delegate that invokes methods for the timer.
+            TimerCallback timerDelegate = 
+                new TimerCallback(CheckStatus);
+
+
+            stateTimer =
+                     new Timer(timerDelegate, autoEvent, 1000, 250);
+             */
+            stateTimer = new System.Windows.Forms.Timer();
+            stateTimer.Interval = 1000;
+            stateTimer.Tick += new EventHandler(stateTimer_Tick);
+            stateTimer.Start();
+        }
+
+        /*
+        public override ~WorkView()
+        {
+            if (stateTimer != null)
+            {
+                stateTimer.Dispose();
+            }
+        }
+         */
+
+        void stateTimer_Tick(object sender, EventArgs e)
+        {
+            //throw new NotImplementedException();
+            lock (workingImage)
+            {
+                workingImage.Angle = angle;
+            }
+
+            lock (progressBarWork)
+            {
+                progressBarWork.Value = angle;
+            }
+        }
+        /*
+        public void CheckStatus(Object stateInfo)
+        {
+            lock (workingImage)
+            {
+                workingImage.Angle = angle;
+            }
+
+            lock (progressBarWork)
+            {
+                progressBarWork.Value = angle;
+            }
+        }
+         */
+
+        private void Run()
+        {
+            DoWorkingEvent += new EventHandler<EventArgs>(WorkView_DoWorkingEvent);
+
+            
+            ThreadStart threadDelegate = new ThreadStart(DoWork);
+            Thread newThread = new Thread(threadDelegate);
+            newThread.Start();
+            
+            //DoWork();
+
+            /*四角アニメーション
+            NameScope.SetNameScope(this, new NameScope());
+
+            this.Title = "Fading Rectangle Example";
+            StackPanel myPanel = new StackPanel();
+            myPanel.Margin = new Thickness(10);
+
+            Rectangle myRectangle = new Rectangle();
+            myRectangle.Name = "myRectangle";
+            this.RegisterName(myRectangle.Name, myRectangle);
+            myRectangle.Width = 100;
+            myRectangle.Height = 100;
+            myRectangle.Fill = Brushes.Blue;
+
+            DoubleAnimation myDoubleAnimation = new DoubleAnimation();
+            myDoubleAnimation.From = 1.0;
+            myDoubleAnimation.To = 0.0;
+            myDoubleAnimation.Duration = new Duration(TimeSpan.FromSeconds(5));
+            myDoubleAnimation.AutoReverse = true;
+            myDoubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
+
+            myStoryboard = new Storyboard();
+            myStoryboard.Children.Add(myDoubleAnimation);
+            Storyboard.SetTargetName(myDoubleAnimation, myRectangle.Name);
+            //Storyboard.SetTargetName(myDoubleAnimation, imageWork.Name);
+            Storyboard.SetTargetProperty(myDoubleAnimation, new PropertyPath(Rectangle.OpacityProperty));
+
+            // Use the Loaded event to start the Storyboard.
+            myRectangle.Loaded += new RoutedEventHandler(myRectangleLoaded);
+            //imageWork.Loaded += new RoutedEventHandler(myRectangleLoaded);
+
+            myPanel.Children.Add(myRectangle);
+            //myPanel.Children.Add(imageWork);
+            this.Content = myPanel;
+            */
+
+            /* ボタン アニメーション
+            StackPanel myStackPanel = new StackPanel();
+            myStackPanel.Margin = new Thickness(20);
+
+
+            // Create and set the Button.
+            Button aButton = new Button();
+            aButton.Content = "A Button";
+
+            // Animate the Button's Width.
+            DoubleAnimation myDoubleAnimation = new DoubleAnimation();
+            myDoubleAnimation.From = 75;
+            myDoubleAnimation.To = 300;
+            myDoubleAnimation.Duration = new Duration(TimeSpan.FromSeconds(5));
+            myDoubleAnimation.AutoReverse = true;
+            myDoubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
+
+            // Apply the animation to the button's Width property.
+            aButton.BeginAnimation(Button.WidthProperty, myDoubleAnimation);
+
+            // Create and animate a Brush to set the button's Background.
+            SolidColorBrush myBrush = new SolidColorBrush();
+            myBrush.Color = Colors.Blue;
+
+            ColorAnimation myColorAnimation = new ColorAnimation();
+            myColorAnimation.From = Colors.Blue;
+            myColorAnimation.To = Colors.Red;
+            myColorAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(7000));
+            myColorAnimation.AutoReverse = true;
+            myColorAnimation.RepeatBehavior = RepeatBehavior.Forever;
+
+            // Apply the animation to the brush's Color property.
+            myBrush.BeginAnimation(SolidColorBrush.ColorProperty, myColorAnimation);
+            aButton.Background = myBrush;
+
+            // Add the Button to the panel.
+            myStackPanel.Children.Add(aButton);
+            this.Content = myStackPanel;
+            */
+
+
+            //imagStoryboard.Storyboard.Begin(this);
+            //imagStoryboard.Storyboard.Stop(this);
+            //imagStoryboard.Storyboard.Pause(this);
+        }
+
+        /*
+        private Storyboard myStoryboard;
+        private void myRectangleLoaded(object sender, RoutedEventArgs e)
+        {
+            myStoryboard.Begin(this);
+        }
+         */
+
+
+        int angle = 0;
+        void WorkView_DoWorkingEvent(object sender, EventArgs e)
+        {
+            //throw new NotImplementedException();
+            /*
+            lock (workingImage)
+            {
+                workingImage.Angle++;
+            }
+             */
+            angle++;
+           
+       }
+
+        bool IsCancel = false;
+        private void DoWork() 
+        {
+            while(!IsCancel)
+            {
+                OnDoWorkingEvent(new EventArgs());
+                Thread.Sleep(1000);
+            }
+        }
+
+        public event EventHandler<EventArgs> DoWorkingEvent;
+        protected virtual void OnDoWorkingEvent(EventArgs e)
+        {
+            EventHandler<EventArgs> handler = DoWorkingEvent;
+
+            if (handler != null)
+            {
+                handler(this, e);
+            }
+        }
+
+        private void buttonCancel_Click(object sender, RoutedEventArgs e)
+        {
+            IsCancel = true;
+        }
+
+        private void buttonRun_Click(object sender, RoutedEventArgs e)
+        {
+            Run();
+        }
+
+
+
+        private void imageWork_Loaded(object sender, RoutedEventArgs e)
+        {
+            imagStoryboard.Storyboard.Stop(this);
+        }
+
+        private void buttonStop_Click(object sender, RoutedEventArgs e)
+        {
+            imagStoryboard.Storyboard.Stop(this);
+        }
+    }
+}
+
diff --git a/FileNameChenger/app.config b/FileNameChenger/app.config
new file mode 100644 (file)
index 0000000..b7fa14f
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+    <configSections>
+    </configSections>
+<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
diff --git a/FileNameChengerCore/CConfig.cs b/FileNameChengerCore/CConfig.cs
new file mode 100644 (file)
index 0000000..418e841
--- /dev/null
@@ -0,0 +1,127 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.IO;
+
+namespace FileNameChengerCore
+{
+
+    public class CConfig
+    {
+        public const string DefultSerchPattern = "*.bmp;*.jpg";
+        public const string DefultFileNamePattern = "yyyyMMdd-HHmmss-ffff";
+
+        string strFileName = "";
+        public string ConfigFileName
+        {
+            get { return strFileName; }
+        }
+
+        string strFileNameFrom = "";
+        public string FileNameFrom
+        {
+            get { return strFileNameFrom; }
+            set { strFileNameFrom = value; }
+        }
+
+        string strFileNameTo = "";
+        public string FileNameTo
+        {
+            get { return strFileNameTo; }
+            set { strFileNameTo = value; }
+        }
+
+        string strSerchPattern = DefultSerchPattern;
+        public string SerchPattern
+        {
+            get { return strSerchPattern; }
+            set { strSerchPattern = value; }
+        }
+
+        string strFileNamePattern = DefultFileNamePattern;
+        public string FileNamePattern
+        {
+            get { return strFileNamePattern; }
+            set { strFileNamePattern = value; }
+        }
+
+        public CConfig(string in_FileName)
+        {
+            strFileName = in_FileName;
+        }
+
+        string strXPathFileNameTo = "FileNameChenger/Config/FileNameTo";
+        string strXPathFileNameFrom = "FileNameChenger/Config/FileNameFrom";
+        string strXPathSerchPattern = "FileNameChenger/Config/SerchPattern";
+        string strXPathFileNamePattern = "FileNameChenger/Config/FileNamePattern";
+
+        private string getConfigValue(System.Xml.XmlDocument in_Doc, string in_XPath, string in_DefultValue)
+        {
+            string resultValue = in_DefultValue;
+            System.Xml.XmlNode node = in_Doc.SelectSingleNode(in_XPath);
+            if (node != null)
+            {
+                resultValue = node.InnerText.Trim();
+            }
+
+            return resultValue;
+        }
+
+        public void getConfig()
+        {
+            if (!File.Exists(strFileName))
+            {
+                return;
+            }
+
+            System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
+            doc.Load(strFileName);
+
+            strFileNameTo = getConfigValue(doc, strXPathFileNameTo, "");
+            strFileNameFrom = getConfigValue(doc, strXPathFileNameFrom, "");
+            strSerchPattern = getConfigValue(doc, strXPathSerchPattern, DefultSerchPattern);
+            strFileNamePattern = getConfigValue(doc, strXPathFileNamePattern, DefultFileNamePattern);
+        }
+
+        private void setConfigValue(System.Xml.XmlDocument in_Doc, string in_XPath, string in_Value)
+        {
+            System.Xml.XmlNode node = in_Doc.SelectSingleNode(in_XPath);
+            if (node != null)
+            {
+                node.InnerText = in_Value;
+            }
+        }
+         
+
+        public void putConfig()
+        {
+            System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
+            if (!File.Exists(strFileName))
+            {
+                string strXml =
+                "<?xml version=\"1.0\"?>\n"
+              + "<FileNameChenger>\n"
+              + "   <Config>\n"
+              + "       <FileNameFrom>" + strFileNameFrom + "</FileNameFrom>\n"
+              + "       <FileNameTo>" + strFileNameTo + "</FileNameTo>\n"
+              + "       <SerchPattern>" + DefultSerchPattern + "</SerchPattern>\n"
+              + "       <FileNamePattern>" + DefultFileNamePattern + "</FileNamePattern>\n"
+              + "   </Config>\n"
+              + "</FileNameChenger>\n";
+
+                doc.InnerXml = strXml;
+            }
+            else
+            {
+                doc.Load(strFileName);
+
+                setConfigValue(doc, strXPathFileNameTo, strFileNameTo);
+                setConfigValue(doc, strXPathFileNameFrom, strFileNameFrom);
+            }
+
+            doc.Save(strFileName);
+
+        }
+    }
+}
diff --git a/FileNameChengerCore/CFileCopy.cs b/FileNameChengerCore/CFileCopy.cs
new file mode 100644 (file)
index 0000000..84f43ef
--- /dev/null
@@ -0,0 +1,456 @@
+// ===============================================================================
+// FileNameChenger
+//
+// Namespace : FileNameChenger
+// ClassName : CFileCopy.cs
+//
+// ===============================================================================
+// Release history
+// VERSION     AUTHER             DATE       DESCRIPTION
+//   1.0       Masami Shiohara  2009.02.14   新規
+//
+// ===============================================================================
+// Copyright (C) 2009 
+// All rights reserved.
+// ===============================================================================
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.IO;
+using System.Threading;
+
+namespace FileNameChengerCore
+{
+
+    /// *************************************************************
+    /// <summary>処理ステータス</summary>
+    /// *------------------------------------------------------------
+    /// 備考:<remarks></remarks>
+    /// *************************************************************
+    public enum EStateFlg
+    {
+        /// <summary>初期</summary>
+        Non,
+        /// <summary>処理中</summary>
+        Run,
+        /// <summary>処理終了</summary>
+        End,
+        /// <summary>中断</summary>
+        Cancel
+    }
+
+    /// *************************************************************
+       /// <summary>ファイルコピークラス</summary>
+       /// *------------------------------------------------------------
+       /// 備考:<remarks>ファイルコピーを行うクラスソースファイル</remarks>
+       /// *************************************************************
+    public class CFileCopy 
+    {
+        EStateFlg eStateFlg = EStateFlg.Non;
+       /// *============================================================
+               /// <summary>変換中フラグ(プロパティ)</summary>
+               /// * -----------------------------------------------------------
+               /// 備考      :<remarks>処理中断に利用します。</remarks>
+               /// *============================================================
+        public EStateFlg StateFlg
+        {
+            get
+            {
+                return eStateFlg; 
+            }
+        }
+
+        bool bSubDir = false;
+        /// *============================================================
+        /// <summary>サブディレクトリまで見るかどうかフラグ(プロパティ)</summary>
+        /// * -----------------------------------------------------------
+        /// 備考     :<remarks></remarks>
+        /// *============================================================
+        public bool IsSubDir
+        {
+            get
+            {
+                return bSubDir;
+            }
+        }
+
+        string strSourcePath = "";
+        /// *============================================================
+        /// <summary>コピー元(プロパティ)</summary>
+        /// * -----------------------------------------------------------
+        /// 備考     :<remarks></remarks>
+        /// *============================================================
+        public string SourcePath
+        {
+            get
+            {
+                return strSourcePath;
+            }
+        }
+
+        string strTargetPath = "";
+        /// *============================================================
+        /// <summary>コピー先(プロパティ)</summary>
+        /// * -----------------------------------------------------------
+        /// 備考     :<remarks></remarks>
+        /// *============================================================
+        public string TargetPath
+        {
+            get
+            {
+                return strTargetPath;
+            }
+        }
+
+        //TODO:ファイルタイプは選択できるようにしないとだめ!!
+        //string strSerchPattern = "*";
+        string strSerchPattern = CConfig.DefultSerchPattern;
+        public string SerchPattern
+        {
+            get
+            {
+                return strSerchPattern;
+            }
+        }
+
+        string strFileNamePattern = CConfig.DefultFileNamePattern;
+        public string FileNamePattern
+        {
+            get
+            {
+                return strFileNamePattern;
+            }
+        }
+
+
+        List<string> files = null;
+        /// *============================================================
+        /// <summary>処理対象件数(プロパティ)</summary>
+        /// * -----------------------------------------------------------
+        /// 備考     :<remarks></remarks>
+        /// *============================================================
+        public int Count
+        {
+            get
+            {
+                if (files == null)
+                {
+                    return 0;
+                }
+                else
+                {
+                    return files.Count;
+                }
+            }
+        }
+
+        bool bFreeSpace = true;
+        /// *============================================================
+        /// <summary>ディスク容量の☑(プロパティ)</summary>
+        /// * -----------------------------------------------------------
+        /// 備考     :<remarks></remarks>
+        /// *============================================================
+        public bool FreeSpace
+        {
+            get
+            {
+                return bFreeSpace;
+            }
+        }
+
+       /// *============================================================
+               /// <summary>コンストラクタ</summary>
+               /// * -----------------------------------------------------------
+        /// 引数     :<param name="in_SourcePath">コピー元</param>
+        ///           <param name="in_TargetPath">コピー先</param>
+        ///           <param name="in_SearchPattern">検索パターン</param>
+        ///           <param name="in_FileNamePattern">作成ファイル名パターン</param>
+        ///           <param name="in_IsSubDir">サブディレクトリまで見るかフラグ</param>
+        /// 備考     :<remarks>このクラスのコンストラクタです。</remarks>
+               /// *============================================================
+        public CFileCopy(string in_SourcePath, string in_TargetPath,
+            string in_SearchPattern, string in_FileNamePattern, bool in_IsSubDir)
+        {
+            //TODO:作成先のファイル名は日付を基本するが、
+            //     フォーマットの設定も可能にしたいです。
+            strSourcePath = in_SourcePath;
+            strTargetPath = in_TargetPath;
+            strSerchPattern = in_SearchPattern;
+            strFileNamePattern = in_FileNamePattern;
+            bSubDir = in_IsSubDir;
+
+            //対象件数取得
+            files = getFiles(strSourcePath, strSerchPattern, bSubDir);
+
+            bFreeSpace = checkFreeSpace();
+
+         }
+
+        /// *============================================================
+        /// <summary>コンストラクタ</summary>
+        /// * -----------------------------------------------------------
+        /// 引数     :<param name="in_SourcePath">コピー元</param>
+        ///           <param name="in_TargetPath">コピー先</param>
+        /// 備考     :<remarks>このクラスのコンストラクタです。</remarks>
+        /// *============================================================
+        public CFileCopy(string in_SourcePath, string in_TargetPath)
+            : this(in_SourcePath, in_TargetPath, CConfig.DefultSerchPattern, CConfig.DefultFileNamePattern, false)
+        {
+        }
+
+               /// *============================================================
+               /// <summary>コンストラクタ</summary>
+               /// * -----------------------------------------------------------
+        /// 引数     :<param name="in_SourcePath">コピー元</param>
+        ///           <param name="in_TargetPath">コピー先</param>
+        ///           <param name="in_SearchPattern">検索パターン</param>
+        ///           <param name="in_FileNamePattern">作成ファイル名パターン</param>
+        /// 備考     :<remarks>このクラスのコンストラクタです。</remarks>
+               /// *============================================================
+        public CFileCopy(string in_SourcePath, string in_TargetPath,
+            string in_SearchPattern, string in_FileNamePattern)
+            : this(in_SourcePath, in_TargetPath, in_SearchPattern, in_FileNamePattern, false)
+        {
+        }
+
+        private bool checkFreeSpace()
+        {
+            //TODO:ファイル名をPATHに入れられた場合の処理を考え直そう。
+            if (files == null)
+            {
+                return true; 
+            }
+
+
+            //ドライブスペースの検証
+            DriveInfo[] allDrives = DriveInfo.GetDrives();
+
+            foreach (DriveInfo d in allDrives)
+            {
+                if (strTargetPath.IndexOf(d.Name) >= 0)
+                {
+                    long free = d.TotalFreeSpace;
+                    foreach (string s in files)
+                    {
+                        FileInfo f = new FileInfo(s);
+                        free = free - f.Length;
+                        if (free <= 0)
+                        {
+                            return false;
+                        }
+                    }
+                }
+            }
+            return true;
+        }
+
+        /// *============================================================
+        /// <summary>ファイル一覧取得処理</summary>
+        /// * -----------------------------------------------------------
+        /// 備考     :<remarks></remarks>
+        /// *============================================================
+        private List<string> getFiles(string in_SourcePath, string in_SearchPattern, bool in_IsSubDir)
+        {
+            //TODO:一覧取得するとディレクトリ毎にスレッドという野望が達成できないが、
+            //   HDへの負荷は少ないと思われる。
+            //TODO:履歴管理するとなると、そのたびに一覧取得する処理が必要になるのでは?
+
+                       //取得時にソートできたらしておいたほうが、作成日時での順番も守れるのでは?
+            if (!Directory.Exists(in_SourcePath))
+            {
+                return null;
+            }
+            
+            SearchOption so = SearchOption.AllDirectories;
+            if (!in_IsSubDir)
+            {
+                so = SearchOption.TopDirectoryOnly;
+            }
+
+            string[] searchPatterns = in_SearchPattern.Split(';');
+            List<string> fileList = new List<string>();
+            foreach (string searchPattern in searchPatterns)
+            {
+                 fileList.AddRange(Directory.GetFiles(in_SourcePath, searchPattern, so));
+            }
+            
+            return fileList;
+        }
+
+
+        /// *============================================================
+        /// <summary>キャンセル発生処理</summary>
+        /// * -----------------------------------------------------------
+        /// 備考     :<remarks></remarks>
+        /// *============================================================
+        public void Cancel()
+        {
+            eStateFlg = EStateFlg.Cancel;
+        }
+
+               /// *============================================================
+               /// <summary>実行初期処理</summary>
+               /// * -----------------------------------------------------------
+               /// 備考      :<remarks></remarks>
+               /// *============================================================
+        public void Run()
+        {
+            //スレッドプール
+            //ThreadPool 
+
+            ThreadStart threadDelegate = new ThreadStart(DoWork);
+            Thread newThread = new Thread(threadDelegate);
+            newThread.Start();
+        }
+
+
+
+       /// *============================================================
+               /// <summary>コピーメイン処理</summary>
+               /// * -----------------------------------------------------------
+               /// 備考      :<remarks>スレッドで処理を行う</remarks>
+               /// *============================================================
+        private void DoWork()
+        {
+            //TODO:元のファイルを削除するか選択できるように対応予定
+            //TODO:サブディレクトリに対応予定
+            if (!System.IO.Directory.Exists(strTargetPath))
+            {
+                System.IO.Directory.CreateDirectory(strTargetPath);
+            }
+
+            try
+            {
+
+                foreach (string strSourcePath in files)
+                {
+                    if (eStateFlg == EStateFlg.Cancel)
+                    {
+                        break;
+                    }
+
+                    FileInfo fileInfoSource = new FileInfo(strSourcePath);
+
+                    //string fileName = fileInfoSource.Name;
+                    string fileExtension = fileInfoSource.Extension;
+
+                    //TODO:更新日時、作成日時、アクセス日時の選択ができるように対応予定
+                    //string fileName = fileInfoSource.CreationTime.ToString("yyyyMMdd-HHmmss-ffff");
+                    string fileName = fileInfoSource.LastWriteTime.ToString(strFileNamePattern);
+
+                    string fullName = System.IO.Path.Combine(strTargetPath, fileName + fileExtension);
+
+                    //TODO:同一時刻で異なる場合もあるので最終的にはbit単位でチェックしてコピーしたい
+                    bool exists = File.Exists(fullName);
+                    if (!exists)
+                    {
+                        try
+                        {
+                            fileInfoSource.CopyTo(fullName);
+                            OnDoWorkingEvent(new DoWorkingEventArgs(fileInfoSource.FullName, fullName, exists));
+                        }
+                        catch (Exception e)
+                        {
+                            //ディスク許容量エラーなど
+                            OnDoWorkingEvent(new DoWorkingEventArgs(fileInfoSource.FullName, fullName, exists, e.ToString()));
+                            //処理終了
+                            return;
+                        }
+                    }
+                    else
+                    {
+                        //TODO:ある場合どうしましょう?
+                        OnDoWorkingEvent(new DoWorkingEventArgs(fileInfoSource.FullName, fullName, exists));
+                    }
+                }
+            }
+            finally
+            {
+                OnDoWorkEndEvent(new EventArgs());
+            }
+        }
+
+        public event EventHandler<DoWorkingEventArgs> DoWorkingEvent;
+
+        protected virtual void OnDoWorkingEvent(DoWorkingEventArgs e)
+        {
+            EventHandler<DoWorkingEventArgs> handler = DoWorkingEvent;
+
+            if (handler != null)
+            {
+                handler(this, e);
+            }
+        }
+
+        public event EventHandler<EventArgs> DoWorkEndEvent;
+        protected virtual void OnDoWorkEndEvent(EventArgs e)
+        {
+            EventHandler<EventArgs> handler = DoWorkEndEvent;
+
+            if (handler != null)
+            {
+                handler(this, e);
+            }
+        }
+        
+    }
+
+    //イベントのデザイン
+    //http://msdn.microsoft.com/ja-jp/library/ms229011.aspx
+    public class DoWorkingEventArgs : EventArgs
+    {
+        string strFileNameFrom = "";
+        public string FileNameFrom
+        {
+            get
+            {
+                return strFileNameFrom;
+            }
+        }
+
+        string strFileNameTo = "";
+        public string FileNameTo
+        {
+            get
+            {
+                return strFileNameTo;
+            }
+        }
+
+        bool bExists = false;
+        public bool Exists
+        {
+            get
+            {
+                return bExists;
+            }
+        }
+
+        string strErr = "";
+        public string Err
+        {
+            get
+            {
+                return strErr;
+            }
+        }
+
+        public DoWorkingEventArgs(string in_FileNameFrom, string in_FileNameTo, bool in_Exists, string in_Err)
+        {
+            strFileNameFrom = in_FileNameFrom;
+            strFileNameTo = in_FileNameTo;
+            bExists = in_Exists;
+            strErr = in_Err;
+        }
+
+        public DoWorkingEventArgs(string in_FileNameFrom, string in_FileNameTo, bool in_Exists)
+            : this(in_FileNameFrom, in_FileNameTo, in_Exists, "")
+        {
+        }
+
+    }
+
+    //public delegate void EventDoWorking(object sender, EventArgesDoWorking e);
+}
diff --git a/FileNameChengerCore/FileNameChengerCore.csproj b/FileNameChengerCore/FileNameChengerCore.csproj
new file mode 100644 (file)
index 0000000..0c337ef
--- /dev/null
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{8472E9C7-D27D-40F3-9843-3C95F47EFF29}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>FileNameChengerCore</RootNamespace>
+    <AssemblyName>FileNameChengerCore</AssemblyName>
+    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <TargetFrameworkProfile />
+  </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>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="CFileCopy.cs" />
+    <Compile Include="CConfig.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/FileNameChengerCore/Properties/AssemblyInfo.cs b/FileNameChengerCore/Properties/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..126ba4e
--- /dev/null
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。
+// アセンブリに関連付けられている情報を変更するには、
+// これらの属性値を変更してください。
+[assembly: AssemblyTitle("FileNameChengerCore")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("FileNameChengerCore")]
+[assembly: AssemblyCopyright("Copyright ©おりん  2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// ComVisible を false に設定すると、その型はこのアセンブリ内で COM コンポーネントから 
+// 参照不可能になります。COM からこのアセンブリ内の型にアクセスする場合は、
+// その型の ComVisible 属性を true に設定してください。
+[assembly: ComVisible(false)]
+
+// 次の GUID は、このプロジェクトが COM に公開される場合の、typelib の ID です
+[assembly: Guid("30f20eec-b57d-4915-8683-ced467d2a610")]
+
+// アセンブリのバージョン情報は、以下の 4 つの値で構成されています:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を 
+// 既定値にすることができます:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("0.1.0.1")]
+[assembly: AssemblyFileVersion("0.1.0.1")]
diff --git a/UserControl/Properties/AssemblyInfo.cs b/UserControl/Properties/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..a2fc3f4
--- /dev/null
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。
+// アセンブリに関連付けられている情報を変更するには、
+// これらの属性値を変更してください。
+[assembly: AssemblyTitle("UserControls")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("UserControls")]
+[assembly: AssemblyCopyright("Copyright ©おりん  2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// ComVisible を false に設定すると、その型はこのアセンブリ内で COM コンポーネントから 
+// 参照不可能になります。COM からこのアセンブリ内の型にアクセスする場合は、
+// その型の ComVisible 属性を true に設定してください。
+[assembly: ComVisible(false)]
+
+// 次の GUID は、このプロジェクトが COM に公開される場合の、typelib の ID です
+[assembly: Guid("77b4bf56-a5ba-4cbe-847e-7e1eef7af975")]
+
+// アセンブリのバージョン情報は、以下の 4 つの値で構成されています:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を 
+// 既定値にすることができます:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("0.1.0.1")]
+[assembly: AssemblyFileVersion("0.1.0.1")]
diff --git a/UserControl/UCFileSelectTextBox.xaml b/UserControl/UCFileSelectTextBox.xaml
new file mode 100644 (file)
index 0000000..edc3222
--- /dev/null
@@ -0,0 +1,11 @@
+<UserControl x:Class="UserControls.UCFileSelectTextBox"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    Height="25" Width="150" AllowDrop="False">
+    <Grid>
+        <TextBox Height="25" Name="textBoxFileName" VerticalAlignment="Top" HorizontalAlignment="Left" Width="125" DragEnter="textBox_DragEnter" Drop="textBox_Drop" MouseEnter="textBox_MouseEnter" AllowDrop="True" />
+        <Button Height="25" Margin="125,0,0,0" Name="buttonFileDirSelecter" VerticalAlignment="Top" Click="button_Click" AllowDrop="False">
+            <Image Name="imgFileDirSelecter" Source="dir.JPG"></Image>
+        </Button>
+    </Grid>
+</UserControl>
diff --git a/UserControl/UCFileSelectTextBox.xaml.cs b/UserControl/UCFileSelectTextBox.xaml.cs
new file mode 100644 (file)
index 0000000..897fc2a
--- /dev/null
@@ -0,0 +1,139 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace UserControls
+{
+    /// <summary>
+    /// UCFileSelectTextBox.xaml の相互作用ロジック
+    /// </summary>
+    public partial class UCFileSelectTextBox : System.Windows.Controls.UserControl
+    {
+        public UCFileSelectTextBox()
+        {
+            InitializeComponent();
+            textBoxFileName.DragEnter += new DragEventHandler(textBoxFileName_DragEnter);
+
+            textBoxFileName.PreviewDragEnter += new DragEventHandler(textBoxFileName_PreviewDragEnter);
+            textBoxFileName.PreviewDrop += new DragEventHandler(textBoxFileName_PreviewDrop);
+
+            BitmapImage myBitmapImage = new BitmapImage();
+
+            //myBitmapImage.BeginInit();
+            //myBitmapImage.UriSource = new Uri(@"dir.JPG");
+            //myBitmapImage.EndInit();
+
+            //imgFileDirSelecter.Source = myBitmapImage;
+
+        }
+         
+
+        void textBoxFileName_PreviewDrop(object sender, DragEventArgs e)
+        {
+            //throw new NotImplementedException();
+            textBox_Drop(sender, e);
+        }
+
+        void textBoxFileName_PreviewDragEnter(object sender, DragEventArgs e)
+        {
+            //throw new NotImplementedException();
+            textBox_DragEnter(sender, e);
+        }
+
+        void textBoxFileName_DragEnter(object sender, DragEventArgs e)
+        {
+            //throw new NotImplementedException();
+            textBox_DragEnter(sender, e);
+        }
+
+        public string Text
+        {
+            get
+            {
+                return textBoxFileName.Text;
+            }
+
+            set
+            {
+                textBoxFileName.Text = value;
+            }
+        }
+
+        private void button_Click(object sender, RoutedEventArgs e)
+        {
+            //TODO:フォルダー選択かっこ悪いのでカスタムを作成したい
+            System.Windows.Forms.FolderBrowserDialog fbd =
+                new System.Windows.Forms.FolderBrowserDialog();
+
+            fbd.SelectedPath = textBoxFileName.Text;
+            System.Windows.Forms.DialogResult result = fbd.ShowDialog();
+            
+            if (result == System.Windows.Forms.DialogResult.OK)
+            {
+                if (sender == buttonFileDirSelecter)
+                {
+                    textBoxFileName.Text = fbd.SelectedPath;
+                }
+            }
+        }
+
+        private void textBox_MouseEnter(object sender, MouseEventArgs e)
+        {
+            TextBox textBox = (TextBox)sender;
+            if (textBox.Text == "" || textBox.Text == null)
+            {
+                textBox.ToolTip = null;
+            }
+            else
+            {
+                textBox.ToolTip = textBox.Text;
+            }
+        }
+
+        private void textBox_Drop(object sender, DragEventArgs e)
+        {
+            //TODO:ドラッグアンドドロップ対応したのだが動かないので調査が必要
+            /*
+            if (e.Effects == System.Windows.DragDropEffects.Copy)
+            {
+                TextBox textBox = (TextBox)sender;
+
+                textBox.Text = e.Data.GetData(System.Windows.DataFormats.FileDrop).ToString();
+            }
+            */
+            // ファイルドロップした場合のみ処理
+            if (e.Data.GetDataPresent(DataFormats.FileDrop))
+            {
+                foreach (string fileName in (string[])e.Data.GetData(DataFormats.FileDrop))
+                {
+                    TextBox textBox = (TextBox)sender;
+                    textBox.Text = fileName;
+
+                    break;
+                }
+            }
+
+        }
+
+        private void textBox_DragEnter(object sender, DragEventArgs e)
+        {
+            //textBoxFrom.Text = "test";
+            if (e.Data.GetDataPresent(System.Windows.DataFormats.FileDrop)
+                || e.Data.GetDataPresent(System.Windows.DataFormats.Text)
+                || e.Data.GetDataPresent(System.Windows.DataFormats.UnicodeText))
+            {
+               e.Effects = System.Windows.DragDropEffects.Copy;
+            }
+        }
+    }
+}
diff --git a/UserControl/UserControls.csproj b/UserControl/UserControls.csproj
new file mode 100644 (file)
index 0000000..497770c
--- /dev/null
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{BFA602E9-04B3-415E-BE5B-FDF23C5B7E7E}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>UserControls</RootNamespace>
+    <AssemblyName>UserControls</AssemblyName>
+    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <OldToolsVersion>3.5</OldToolsVersion>
+    <TargetFrameworkProfile />
+  </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>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="PresentationCore">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="PresentationFramework">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xaml" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+    <Reference Include="WindowsBase">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="UCFileSelectTextBox.xaml.cs">
+      <DependentUpon>UCFileSelectTextBox.xaml</DependentUpon>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Page Include="UCFileSelectTextBox.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
+  </ItemGroup>
+  <ItemGroup>
+    <Resource Include="dir.JPG" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/UserControl/dir.JPG b/UserControl/dir.JPG
new file mode 100644 (file)
index 0000000..818521f
Binary files /dev/null and b/UserControl/dir.JPG differ