private async void Save_B_Click(object sender, RoutedEventArgs e)
        {
            if (IsProcessing)
            {
                return;
            }
            if (Project_Name_T.Text == "")
            {
                Message_T.Text = "プロジェクト名が設定されていません。";
                return;
            }
            try
            {
                Directory.CreateDirectory(Voice_Set.Special_Path + "/Temp/" + Project_Name_T.Text);
                Directory.Delete(Voice_Set.Special_Path + "/Temp", true);
                if (Project_Name_T.Text.Contains("/"))
                {
                    Message_T.Text = "プロジェクト名に不適切な文字が含まれています。";
                    return;
                }
            }
            catch
            {
                Message_T.Text = "プロジェクト名に不適切な文字が含まれています。";
                return;
            }
            if (Project_Name_T.Text.CountOf("  ") > 0)
            {
                Message_T.Text = "プロジェクト名に空白を2つ続けて付けることはできません。";
                return;
            }
            if (Voice_Add_L.Items.Count <= 0)
            {
                Message_T.Text = "最低1つは音声ファイルが必要です。";
                return;
            }
            if (Voice_Set.FTPClient.Directory_Exist("/WoTB_Voice_Mod/Voice_Online/" + Project_Name_T.Text))
            {
                Message_T.Text = "同名のプロジェクトが存在するか、別の目的で使用されています。";
                return;
            }
            Server_Create_Config Conf = new Server_Create_Config
            {
                IsEnableR18      = R_18_C.IsChecked.Value,
                IsEnablePassword = Set_Password_C.IsChecked.Value,
                Explanation      = Explanation_T.Text,
                Master_User_Name = Voice_Set.UserName
            };

            if (Set_Password_C.IsChecked.Value)
            {
                Conf.Password = Set_Password_T.Text;
            }
            IsProcessing = true;
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(Server_Create_Config));
            StreamWriter  streamWriter  = new StreamWriter(Voice_Set.Special_Path + "/Temp_Create_Server.dat", false, new UTF8Encoding(false));

            xmlSerializer.Serialize(streamWriter, Conf);
            streamWriter.Close();
            Voice_Set.FTPClient.Directory_Create("/WoTB_Voice_Mod/Voice_Online/" + Project_Name_T.Text + "/Voices");
            Voice_Set.FTPClient.UploadFile(Voice_Set.Special_Path + "/Temp_Create_Server.dat", "/WoTB_Voice_Mod/Voice_Online/" + Project_Name_T.Text + "/Server_Config.dat");
            File.Delete(Voice_Set.Special_Path + "/Temp_Create_Server.dat");
            StreamWriter stw = File.CreateText(Voice_Set.Special_Path + "/Temp_Change_Names.dat");

            stw.WriteLine("ここにファイルの変更を保存します。");
            stw.Close();
            Voice_Set.FTPClient.UploadFile(Voice_Set.Special_Path + "/Temp_Change_Names.dat", "/WoTB_Voice_Mod/Voice_Online/" + Project_Name_T.Text + "/Change_Names.dat");
            File.Delete(Voice_Set.Special_Path + "/Temp_Change_Names.dat");
            StreamWriter Chat_Create = File.CreateText(Voice_Set.Special_Path + "/Temp_Chat_Create.dat");

            Chat_Create.WriteLine(Voice_Set.UserName + "がプロジェクトを作成しました。");
            Chat_Create.Close();
            Voice_Set.FTPClient.UploadFile(Voice_Set.Special_Path + "/Temp_Chat_Create.dat", "/WoTB_Voice_Mod/Voice_Online/" + Project_Name_T.Text + "/Chat.dat");
            File.Delete(Voice_Set.Special_Path + "/Temp_Chat_Create.dat");
            Message_T.Text = "サーバー内にプロジェクトを作成しています...";
            await Task.Delay(50);

            Process_P.Value = 0;
            int Count_Max = Voice_Add_Files.Count;

            Process_P.Maximum    = Count_Max;
            Process_T.Text       = "0/" + Count_Max;
            Process_P.Visibility = Visibility.Visible;
            Process_T.Visibility = Visibility.Visible;
            await Task.Delay(50);

            //Upload_Wait(Count_Max);
            Message_T.Text = "音声ファイルをアップロードしています。音声の数や通信環境によって時間がかかる場合があります。";
            bool IsOK = await Upload_File_Multithread();

            if (!IsOK)
            {
                Process_P.Visibility = Visibility.Hidden;
                Process_T.Visibility = Visibility.Hidden;
                Message_Feed_Out("エラーが発生しました。");
                return;
            }
            Voice_Set.FTPClient.DownloadFile("/WoTB_Voice_Mod/Voice_Online/Server_Names.dat", Voice_Set.Special_Path + "/Server_Names.dat");
            StreamWriter stw2 = new StreamWriter(Voice_Set.Special_Path + "/Server_Names.dat", true, Encoding.UTF8);

            stw2.WriteLine(Project_Name_T.Text + "|" + R_18_C.IsChecked.Value + "|" + Set_Password_C.IsChecked.Value);
            stw2.Close();
            Voice_Set.FTPClient.UploadFile(Voice_Set.Special_Path + "/Server_Names.dat", "/WoTB_Voice_Mod/Voice_Online/Server_Names.dat");
            Voice_Add_L.Items.Clear();
            R_18_C.IsChecked         = false;
            Set_Password_C.IsChecked = false;
            Project_Name_T.Text      = "";
            Voice_Select_T.Text      = "フォルダパス:";
            Set_Password_T.Text      = "";
            Process_P.Visibility     = Visibility.Hidden;
            Process_T.Visibility     = Visibility.Hidden;
            Message_Feed_Out("プロジェクトを作成しました。");
            await Task.Delay(1000);

            while (Opacity > 0)
            {
                Opacity -= Sub_Code.Window_Feed_Time;
                await Task.Delay(1000 / 60);
            }
            Visibility   = Visibility.Hidden;
            IsProcessing = false;
        }
        private async void Save_B_Click(object sender, RoutedEventArgs e)
        {
            if (IsProcessing)
            {
                return;
            }
            if (Project_Name_T.Text == "")
            {
                Message_T.Text = "プロジェクト名が設定されていません。";
                return;
            }
            try
            {
                Directory.CreateDirectory(Special_Path + "/" + Project_Name_T.Text);
                Directory.Delete(Special_Path + "/" + Project_Name_T.Text);
                if (Project_Name_T.Text.Contains("/"))
                {
                    Message_T.Text = "プロジェクト名に不適切な文字が含まれています。";
                    return;
                }
            }
            catch
            {
                Message_T.Text = "プロジェクト名に不適切な文字が含まれています。";
                return;
            }
            if (Voice_List.Items.Count <= 0)
            {
                Message_T.Text = "最低1つは音声ファイルが必要です。";
                return;
            }
            if (Voice_Set.SRTTbacon_Server_Name != Project_Name_T.Text)
            {
                if (Voice_Set.FTPClient.Directory_Exist("/WoTB_Voice_Mod/" + Project_Name_T.Text))
                {
                    Message_T.Text = "同名のプロジェクトが存在します。";
                    return;
                }
            }
            IsProcessing = true;
            StreamWriter stw1 = File.CreateText(Special_Path + "/Temp_Remove_Files.dat");

            foreach (string File_Name in Voices_Remove)
            {
                stw1.WriteLine(File_Name);
                Voice_Set.FTPClient.DeleteFile("/WoTB_Voice_Mod/" + Voice_Set.SRTTbacon_Server_Name + "/Voices/" + File_Name);
            }
            stw1.Close();
            Voice_Set.FTPClient.UploadFile(Special_Path + "/Temp_Remove_Files.dat", "/WoTB_Voice_Mod/" + Project_Name_T.Text + "/Remove_Files.dat");
            File.Delete(Special_Path + "/Temp_Remove_Files.dat");
            StreamWriter stw2 = File.CreateText(Special_Path + "/Temp_Add_Files.dat");

            foreach (string File_Name in Voices_Add_FullName)
            {
                string Name = Path.GetFileName(File_Name);
                stw2.WriteLine(Name);
                Voice_Set.FTPClient.UploadFile(File_Name, "/WoTB_Voice_Mod/" + Voice_Set.SRTTbacon_Server_Name + "/Voices/" + Name);
            }
            stw2.Close();
            Voice_Set.FTPClient.UploadFile(Special_Path + "/Temp_Add_Files.dat", "/WoTB_Voice_Mod/" + Project_Name_T.Text + "/Add_Files.dat");
            File.Delete(Special_Path + "/Temp_Add_Files.dat");
            Server_Create_Config Conf = new Server_Create_Config
            {
                IsEnableR18      = R_18_C.IsChecked.Value,
                IsEnablePassword = Set_Password_C.IsChecked.Value,
                Explanation      = Explanation_T.Text
            };

            if (Set_Password_C.IsChecked.Value)
            {
                Conf.Password = Set_Password_T.Text;
            }
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(Server_Create_Config));
            StreamWriter  streamWriter  = new StreamWriter(Special_Path + "/Temp_Create_Server.dat", false, new UTF8Encoding(false));

            xmlSerializer.Serialize(streamWriter, Conf);
            streamWriter.Close();
            Voice_Set.FTPClient.UploadFile(Special_Path + "/Temp_Create_Server.dat", "/WoTB_Voice_Mod/" + Project_Name_T.Text + "/Server_Config.dat");
            if (Voice_Set.SRTTbacon_Server_Name != Project_Name_T.Text)
            {
                Voice_Set.FTPClient.Directory_Move("/WoTB_Voice_Mod/" + Voice_Set.SRTTbacon_Server_Name, "/WoTB_Voice_Mod/" + Project_Name_T.Text, true);
            }
            Voice_Set.TCP_Server.Send(Voice_Set.SRTTbacon_Server_Name + "|Change_Configs|" + Project_Name_T.Text);
            Message_T.Text = "保存しました。";
            await Task.Delay(500);

            while (Opacity > 0)
            {
                Opacity -= 0.025;
                await Task.Delay(1000 / 60);
            }
            Visibility = Visibility.Hidden;
        }
Example #3
0
        private async void Save_B_Click(object sender, RoutedEventArgs e)
        {
            if (IsProcessing)
            {
                return;
            }
            if (Project_Name_T.Text == "")
            {
                Message_T.Text = "プロジェクト名が設定されていません。";
                return;
            }
            try
            {
                Directory.CreateDirectory(Voice_Set.Special_Path + "/Temp/" + Project_Name_T.Text);
                Directory.Delete(Voice_Set.Special_Path + "/Temp/" + Project_Name_T.Text);
                if (Project_Name_T.Text.Contains("/"))
                {
                    Message_T.Text = "プロジェクト名に不適切な文字が含まれています。";
                    return;
                }
            }
            catch
            {
                Message_T.Text = "プロジェクト名に不適切な文字が含まれています。";
                return;
            }
            if (Project_Name_T.Text.CountOf("  ") > 0)
            {
                Message_T.Text = "プロジェクト名に空白を2つ続けて付けることはできません。";
                return;
            }
            if (Voice_Add_L.Items.Count <= 0)
            {
                Message_T.Text = "最低1つは音声ファイルが必要です。";
                return;
            }
            if (Voice_Set.FTP_Server.DirectoryExists("/WoTB_Voice_Mod/" + Project_Name_T.Text))
            {
                Message_T.Text = "同名のプロジェクトが存在するか、別の目的で使用されています。";
                return;
            }
            Server_Create_Config Conf = new Server_Create_Config
            {
                IsEnableR18      = R_18_C.IsChecked.Value,
                IsEnablePassword = Set_Password_C.IsChecked.Value,
                Explanation      = Explanation_T.Text,
                Master_User_Name = Voice_Set.UserName
            };

            if (Set_Password_C.IsChecked.Value)
            {
                Conf.Password = Set_Password_T.Text;
            }
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(Server_Create_Config));
            StreamWriter  streamWriter  = new StreamWriter(Voice_Set.Special_Path + "/Temp_Create_Server.dat", false, new UTF8Encoding(false));

            xmlSerializer.Serialize(streamWriter, Conf);
            streamWriter.Close();
            Voice_Set.FTP_Server.CreateDirectory("/WoTB_Voice_Mod/" + Project_Name_T.Text, true);
            Voice_Set.FTP_Server.UploadFile(Voice_Set.Special_Path + "/Temp_Create_Server.dat", "/WoTB_Voice_Mod/" + Project_Name_T.Text + "/Server_Config.dat");
            File.Delete(Voice_Set.Special_Path + "/Temp_Create_Server.dat");
            StreamWriter stw = File.CreateText(Voice_Set.Special_Path + "/Temp_Change_Names.dat");

            stw.WriteLine("ここにファイルの変更を保存します。");
            stw.Close();
            Voice_Set.FTP_Server.UploadFile(Voice_Set.Special_Path + "/Temp_Change_Names.dat", "/WoTB_Voice_Mod/" + Project_Name_T.Text + "/Change_Names.dat");
            File.Delete(Voice_Set.Special_Path + "/Temp_Change_Names.dat");
            StreamWriter Chat_Create = File.CreateText(Voice_Set.Special_Path + "/Temp_Chat_Create.dat");

            Chat_Create.WriteLine(Voice_Set.UserName + "がプロジェクトを作成しました。");
            Chat_Create.Close();
            Voice_Set.FTP_Server.UploadFile(Voice_Set.Special_Path + "/Temp_Chat_Create.dat", "/WoTB_Voice_Mod/" + Project_Name_T.Text + "/Chat.dat");
            File.Delete(Voice_Set.Special_Path + "/Temp_Chat_Create.dat");
            Message_T.Text = "サーバー内にプロジェクトを作成しています...";
            await Task.Delay(50);

            string[] Upload_Files = Directory.GetFiles(Voice_Set.Special_Path + "/Server/Voices", "*", SearchOption.TopDirectoryOnly);
            Process_P.Value = 0;
            Voice_Set.FTP_Server.CreateDirectory("/WoTB_Voice_Mod/" + Project_Name_T.Text + "/Voices");
            int Count_Max = Upload_Files.Length;
            int Count_Now = 0;

            Process_P.Maximum    = Upload_Files.Length;
            Process_T.Text       = "0/" + Upload_Files.Length;
            Process_P.Visibility = Visibility.Visible;
            Process_T.Visibility = Visibility.Visible;
            foreach (string File_Name in Upload_Files)
            {
                Voice_Set.FTP_Server.UploadFile(File_Name, "/WoTB_Voice_Mod/" + Project_Name_T.Text + "/Voices/" + Path.GetFileName(File_Name));
                Count_Now++;
                await Task.Delay(1);

                Process_P.Value = Count_Now;
                Process_T.Text  = Count_Now + "/" + Count_Max;
            }
            //Voice_Set.FTP_Server.UploadDirectory(Special_Path + "/Server/Voices", "/WoTB_Voice_Mod/" + Project_Name_T.Text + "/Voices");
            Voice_Set.FTP_Server.DownloadFile(Voice_Set.Special_Path + "/Server_Names.dat", "/WoTB_Voice_Mod/Server_Names.dat");
            StreamWriter stw2 = new StreamWriter(Voice_Set.Special_Path + "/Server_Names.dat", true, Encoding.UTF8);

            stw2.WriteLine(Project_Name_T.Text);
            stw2.Close();
            Directory.CreateDirectory(Voice_Set.Special_Path + "/Server/" + Project_Name_T.Text);
            Directory.Move(Voice_Set.Special_Path + "/Server/Voices", Voice_Set.Special_Path + "/Server/" + Project_Name_T.Text + "/Voices");
            Message_T.Text = "プロジェクトを作成しました。適応します。";
            Voice_Set.FTP_Server.UploadFile(Voice_Set.Special_Path + "/Server_Names.dat", "/WoTB_Voice_Mod/Server_Names.dat");
            Message_T.Text = "";
            Voice_Add_L.Items.Clear();
            R_18_C.IsChecked         = false;
            Set_Password_C.IsChecked = false;
            Project_Name_T.Text      = "";
            Voice_Select_T.Text      = "フォルダパス:";
            Set_Password_T.Text      = "";
            Process_P.Visibility     = Visibility.Hidden;
            Process_T.Visibility     = Visibility.Hidden;
            await Task.Delay(1000);

            while (Message_T.Opacity > 0)
            {
                Message_T.Opacity -= 0.025;
                await Task.Delay(1000 / 60);
            }
            Message_T.Text = "";
            while (Opacity > 0)
            {
                Opacity -= 0.025;
                await Task.Delay(1000 / 60);
            }
            Visibility = Visibility.Hidden;
        }