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);
		}
예제 #2
0
		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);
		}