/* ----------------------------------------------------------------- */ /// /// GetDestination /// /// <summary> /// 保存先パスを取得します。 /// </summary> /// /* ----------------------------------------------------------------- */ private string GetDestination() { if (!string.IsNullOrEmpty(RtSettings?.Path)) { return(RtSettings.Path); } var cvt = new PathConverter(Request.Sources.First(), Request.Format, IO); var kv = GetSaveLocation(Settings.Value.Archive, cvt.ResultFormat, cvt.Result.FullName); if (kv.Key == SaveLocation.Runtime) { return(kv.Value); } var path = IO.Combine(kv.Value, cvt.Result.Name); if (IO.Exists(path) && Settings.Value.Archive.OverwritePrompt) { var e = new PathQueryEventArgs(path, cvt.ResultFormat, true); OnDestinationRequested(e); if (e.Cancel) { throw new OperationCanceledException(); } return(e.Result); } else { return(path); } }
/* ----------------------------------------------------------------- */ /// /// ShowSaveView /// /// <summary> /// 保存パス名を選択する画面を表示します。 /// </summary> /// /// <param name="e">パスを保持するオブジェクト</param> /// /// <remarks> /// Format.Unknown の場合はディレクトリ選択用ダイアログが表示 /// されます。 /// </remarks> /// /* ----------------------------------------------------------------- */ public virtual void ShowSaveView(PathQueryEventArgs e) { if (e.Format == Format.Unknown) { ShowSaveDirectoryView(e); } else { ShowSaveFileView(e); } }
/* ----------------------------------------------------------------- */ /// /// ShowSaveDirectoryView /// /// <summary> /// 保存ディレクトリ名を選択する画面を表示します。 /// </summary> /// /// <param name="e">パスを保持するオブジェクト</param> /// /* ----------------------------------------------------------------- */ private void ShowSaveDirectoryView(PathQueryEventArgs e) { var view = new FolderBrowserDialog { Description = Properties.Resources.MessageExtractDestination, SelectedPath = e.Query, ShowNewFolderButton = true, }; e.Cancel = view.ShowDialog() == DialogResult.Cancel; e.Result = view.SelectedPath; }
/* ----------------------------------------------------------------- */ /// /// ShowSaveFileView /// /// <summary> /// 保存ファイル名を選択する画面を表示します。 /// </summary> /// /// <param name="e">パスを保持するオブジェクト</param> /// /* ----------------------------------------------------------------- */ private void ShowSaveFileView(PathQueryEventArgs e) { var view = new SaveFileDialog { InitialDirectory = System.IO.Path.GetDirectoryName(e.Query), FileName = System.IO.Path.GetFileName(e.Query), Filter = ViewResource.GetFilter(e.Format), OverwritePrompt = true, SupportMultiDottedExtensions = true, }; e.Cancel = view.ShowDialog() == DialogResult.Cancel; e.Result = view.FileName; }
/* ----------------------------------------------------------------- */ /// /// WhenDestinationRequested /// /// <summary> /// 保存パス要求時に実行されるハンドラです。 /// </summary> /// /* ----------------------------------------------------------------- */ private void WhenDestinationRequested(object s, PathQueryEventArgs e) => ShowDialog(() => Views.ShowSaveView(e));
/* ----------------------------------------------------------------- */ /// /// ShowSaveView /// /// <summary> /// 保存パス名を選択する画面を表示します。 /// </summary> /// /// <param name="e">パスを保持するオブジェクト</param> /// /// <remarks> /// Format.Unknown の場合はディレクトリ選択用ダイアログが表示 /// されます。 /// </remarks> /// /* ----------------------------------------------------------------- */ public static void ShowSaveView(PathQueryEventArgs e) => _factory.ShowSaveView(e);