コード例 #1
0
        protected override async Task <Action <AsyncCodeActivityContext> > ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken)
        {
            // Inputs
            var timeout     = TimeoutMS.Get(context);
            var title       = Title.Get(context);
            var initialpath = InitialPath.Get(context);

            // Set a timeout on the execution
            var task = ExecuteWithTimeout(context, cancellationToken);

            if (await Task.WhenAny(task, Task.Delay(timeout, cancellationToken)) != task)
            {
                throw new TimeoutException(Resources.Timeout_Error);
            }

            // Outputs
            return((ctx) => {
                SelectedFilePath.Set(ctx, task.Result);
            });
        }
コード例 #2
0
 public string InitialGitBookPath(string directoryPath)
 {
     return(InitialPath.Replace(directoryPath, "").Replace("\\", "/"));
 }
コード例 #3
0
        private async Task <string> ExecuteWithTimeout(AsyncCodeActivityContext context, CancellationToken cancellationToken = default)
        {
            var title       = Title.Get(context);
            var defaultpath = InitialPath.Get(context);
            var result      = string.Empty;
            var dlg         = new CommonOpenFileDialog();

            if (!string.IsNullOrEmpty(defaultpath))
            {
                var index    = defaultpath.LastIndexOf(@"\");
                var dotindex = defaultpath.IndexOf(@".", index);
                if (dotindex < 0)
                {
                    defaultpath = defaultpath + @"\";
                }
            }

            if (!string.IsNullOrEmpty(title))
            {
                dlg.Title = title;
            }
            if (!string.IsNullOrEmpty(Path.GetDirectoryName(defaultpath)))
            {
                dlg.InitialDirectory = Path.GetDirectoryName(defaultpath);
            }
            if (!string.IsNullOrEmpty(Path.GetFileName(defaultpath)))
            {
                dlg.DefaultFileName = Path.GetFileName(defaultpath);
            }

            if ((int)this.FileType >= 1)
            {
                var filter = new CommonFileDialogFilter();
                filter.DisplayName = "許可されたファイル";

                if (this.FileType.HasFlag(FileTypes.Excel))
                {
                    filter.Extensions.Add("xls");
                    filter.Extensions.Add("xlsx");
                    filter.Extensions.Add("xlsm");
                }
                if (this.FileType.HasFlag(FileTypes.CSV))
                {
                    filter.Extensions.Add("csv");
                }
                if (this.FileType.HasFlag(FileTypes.PDF))
                {
                    filter.Extensions.Add("pdf");
                }
                if (this.FileType.HasFlag(FileTypes.Text))
                {
                    filter.Extensions.Add("txt");
                }
                if (this.FileType.HasFlag(FileTypes.PowerPoint))
                {
                    filter.Extensions.Add("ppt");
                    filter.Extensions.Add("pptx");
                }
                if (this.FileType.HasFlag(FileTypes.Word))
                {
                    filter.Extensions.Add("doc");
                    filter.Extensions.Add("docx");
                }
                dlg.Filters.Add(filter);
            }
            else
            {
                dlg.Filters.Add(new CommonFileDialogFilter("すべてのファイル", "*.*"));
            }

            if (dlg.ShowDialog() == CommonFileDialogResult.Ok)
            {
                result = dlg.FileName;
            }

            return(await Task.FromResult(result));
        }