private void ResetProperty(FolderItemType type) { _UserProperties.Remove(OutputPathProperty); var propId = OutputPathProperty?.PropertyId ?? GenerateNextPropertyId(); switch (type) { case FolderItemType.File: OutputPathProperty = new FileOutputAppOptionProperty(propId, Name); break; case FolderItemType.Folder: OutputPathProperty = new FolderOutputAppOptionProperty(propId, Name); break; default: break; } _UserProperties.Add(OutputPathProperty); OptionTextPattern = ToPatternText(OutputPathProperty); }
private string MakeArgumentText(string inputPath, DirectoryInfo destFolder) { // Note: コマンドライン引数として使用するオプションを一つのリストにまとめて // オプションからコマンドライン引数の文字列を生成します。 var finalOptions = Options.ToList(); // input var inputOptionInstance = AppPolicy.InputOption.CreateInstance(); inputOptionInstance.Values[0].Value = inputPath; finalOptions.Add(inputOptionInstance); // output var outputValueInstance = finalOptions.FindOutputOptionInstance(); if (outputValueInstance == null) { outputValueInstance = AppPolicy.SameInputOutputOption.CreateInstance(); finalOptions.Add(outputValueInstance); } var outputPath = Path.Combine(destFolder.FullName, Path.GetFileName(inputPath)); outputValueInstance.Values[0].Value = outputPath; var decl = outputValueInstance.OptionDeclaration as AppOutputOptionDeclaration; ResultPath = (string)decl.OutputPathProperty.ConvertOptionText(outputPath); OutputPathType = (decl as AppOutputOptionDeclaration).OutputType; var argumentText = AppPolicy.AppOptionsToArgumentText(finalOptions); return argumentText; }
public AppOutputOptionDeclaration(string name, int id, FolderItemType initialOutputType) : base(name, id) { OutputType = initialOutputType; ResetProperty(initialOutputType); }