/* ----------------------------------------------------------------- */
        ///
        /// 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;
        }
示例#5
0
 /* ----------------------------------------------------------------- */
 ///
 /// 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);