/// <summary> /// プロジェクト修正画面を起動する /// mode 0:プロジェクト修正 1:モジュール修正 /// </summary> public static void ShowEditProject(BaseForm parentForm, int mode, MacroStartType startType) { try { LoadProjectForm form = new LoadProjectForm(); switch (mode) { case 0: form.Init(0); break; case 1: form.Init(LoadProjectMode.モジュール読込_削除); break; } form.ShowDialog(); if (form.LoadResult != DialogResult.OK) { return; } ProcessEditForm procForm = new ProcessEditForm(); switch (mode) { case 0: procForm.Init(ProcessEditFormViewMode.プロジェクト修正, form.ProjectModel); break; case 1: procForm.Init(ProcessEditFormViewMode.モジュール修正, form.ProjectModel); break; } procForm.ShowDialog(parentForm); parentForm.Show(); ShowEditProject(parentForm, mode, startType); } catch (Exception ex) { throw Program.ThrowException(ex); } }
/// <summary> /// 新規作成ボタンのクリックイベント /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void NewProjectButton_Click(object sender, EventArgs e) { try { ProcessEditForm form = new ProcessEditForm(); ProjectModel projectModel = new ProjectModel(); projectModel.Name = StringValue.NEW_PROJECT_NAME; projectModel.ExecDataType = ExecDataType.PROJECT; ProcessModel model = new ProcessModel(); model.Name = StringValue.PROCESS_NAME; projectModel.ProcessModelList.Add(model); projectModel.SetNodeId(model.ProcessId, ""); form.Init(ProcessEditFormViewMode.新規プロジェクト, projectModel); this.Hide(); form.ShowDialog(this); this.Show(); } catch (Exception ex) { throw Program.ThrowException(ex); } }
/// <summary> /// モジュールを新規作成する /// </summary> /// <param name="parentForm"></param> public static void ShowModuleCreateForm(BaseForm parentForm) { try { ProcessEditForm form = new ProcessEditForm(); ProjectModel projectModel = new ProjectModel(); projectModel.Name = StringValue.NEW_MACRO_NAME; projectModel.ExecDataType = ExecDataType.MACRO; ProcessModel model = new ProcessModel(); model.Name = StringValue.PROCESS_NAME; projectModel.ProcessModelList.Add(model); projectModel.SetNodeId(model.ProcessId, ""); form.Init(ProcessEditFormViewMode.新規モジュール, projectModel); parentForm.Hide(); form.ShowDialog(parentForm); parentForm.Show(); } catch (Exception ex) { throw Program.ThrowException(ex); } }
/// <summary> /// ファイルからプロジェクト、又はモジュールをインポートします。 /// </summary> /// <param name="type"></param> private void ImportFromFile(ExecDataType type) { try { string kana = "プロジェクト"; string file1 = "mcrp"; string file2 = "MCRP"; switch (type) { case ExecDataType.MACRO: kana = "モジュール"; file1 = "mcrm"; file2 = "MCRM"; break; } var dialog = new CommonOpenFileDialog(kana + "ファイルの選択"); // ファイル選択モード dialog.IsFolderPicker = false; dialog.Multiselect = false; dialog.Filters.Add(new CommonFileDialogFilter(file2 + "ファイル(*." + file1 + ")", "*." + file1)); if (dialog.ShowDialog(this.Handle) == CommonFileDialogResult.Ok) { ProjectModel model = null; //平文フォーマット using (StreamReader sr = new StreamReader(dialog.FileName, Encoding.Default)) { try { string jsonString = sr.ReadToEnd(); model = JsonConvert.DeserializeObject <ProjectModel>(jsonString); model = LoadProjectForm.RebuildProject(model); } catch (Exception) { } } //新フォーマット if (model == null) { using (FileStream fs = new FileStream(dialog.FileName, FileMode.Open, FileAccess.Read)) { try { BinaryFormatter f = new BinaryFormatter(); model = (ProjectModel)f.Deserialize(fs); model = LoadProjectForm.RebuildProject(model); } catch (Exception) { } } } //旧フォーマット if (model == null) { using (FileStream fs = new FileStream(dialog.FileName, FileMode.Open, FileAccess.Read)) { BinaryFormatter f = new BinaryFormatter(); string jsonString = (string)f.Deserialize(fs); jsonString = CryptUtil.DecryptString(jsonString, StringValue.CRYPT_PASSWORD); model = LoadProjectForm.GetProjectFromJsonString(jsonString); } } switch (type) { case ExecDataType.PROJECT: if (model.ExecDataType != ExecDataType.PROJECT) { throw new Exception(kana + "ファイルではありません。"); } break; case ExecDataType.MACRO: if (model.ExecDataType != ExecDataType.MACRO) { throw new Exception(kana + "ファイルではありません。"); } break; } model.Name = DateTime.Now.ToString("yyyyMMddHHmmss_") + model.Name; //IDを更新する model.RenewId(); DialogResult result = this.ShowInfoDialog("保存確認", kana + "をインポートしますか?", MessageBoxButtons.YesNo, MessageBoxDefaultButton.Button1); if (result == DialogResult.No) { return; } ProcessEditForm.SaveProject(model); this.ShowDialog("保存成功", kana + "を保存しました。"); switch (type) { case ExecDataType.PROJECT: ShowEditProject(this, 0, MacroStartType.EDITORSTART); break; case ExecDataType.MACRO: ShowEditProject(this, 1, MacroStartType.EDITORSTART); break; } } } catch (Exception ex) { throw Program.ThrowException(ex); } }