# Progress

**Progress** 对象可用于显示和控制标准 Directory Opus 进度指示器对话框。此对象可从 [**Command**](https://chaoses-ib.gitbook.io/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-3/readme.zh/command.zh)**.progress** 属性获取。使用 **Progress** 对象的基本步骤如下：

1. 初始化基本属性。
2. 调用 **Init** 方法创建对话框（这会创建对话框，但不会将其显示给用户）。
3. 准备就绪后，调用 **Show** 方法使对话框可见。
4. 调用适当的方法初始化进度条的状态（通过设置文件总数、总字节大小等）。
5. 随着操作的进行，使用诸如 **StepFiles** 和 **StepBytes** 之类的 方法推进进度条。
6. 如果适用，使用 **GetAbortState** 轮询 *Abort* 和其它控制按钮的状态。
7. 操作完成后，调用 **Hide** 方法并销毁对象。

| 属性名称  | 返回类型   | 描述                                                                                                             |
| ----- | ------ | -------------------------------------------------------------------------------------------------------------- |
| abort | *bool* | 在调用 **Init** 之前，设置为 **True** 表示 *Abort* 按钮应可用，或设置为 **False** 以禁用它。                                             |
| bytes | *bool* | 在调用 **Init** 之前，设置为 **True** 表示对话框应以字节而不是整个文件列表进度。                                                             |
| delay | *bool* | 在调用 **Init** 之前，设置为 **True** 表示在调用 **Show** 方法后，对话框应延迟一段时间才会出现。延迟由用户在配置中配置。                                    |
| full  | *bool* | 在调用 **Init** 之前，设置为 **True** 以启用具有两个单独进度条（一个用于文件，一个用于字节）的“全尺寸”进度指示器。                                           |
| owned | *bool* | 在调用 **Init** 之前，设置为 **True** 表示对话框应由其父窗口拥有（父窗口在对话框通过 **Init** 方法创建时给出）。                                        |
| pause | *bool* | 在调用 **Init** 之前，设置为 **True** 表示 *Pause* 按钮应可用。                                                                 |
| skip  | *bool* | 在调用 **Init** 之前，设置为 **True** 表示 *Skip* 按钮应可用。（这仅意味着 *Skip* 按钮可以启用。你仍然必须稍后调用 **EnableSkip** 以实际启用它；通常每个文件调用一次）。 |

| 方法名称               | **参数**                                                                                                                                       | 返回类型     | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| AddFiles           | <p>\<int:count><br><<a href="filesize.zh"><strong>FileSize</strong></a>:bytes></p>                                                           | *none*   | 将指定数量的文件添加到操作总数。*bytes* 参数是可选的 - 在“全尺寸”进度指示器中，这使你能够将操作的总字节大小添加进去。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ClearAbortState    | *none*                                                                                                                                       | *none*   | <p>清除三个“控制”按钮（<em>Abort</em> / <em>Pause</em> / <em>Skip</em>）的状态，以便在调用 <strong>GetAbortState</strong> 时不再将其注册为已单击。<br>如果你只想清除 <em>Skip</em> 状态，你通常应该在调用 <strong>EnableSkip</strong> 的过程中清除它。这样你就可以避免在调用 <strong>GetAbortState</strong> 和 <strong>ClearAbortState</strong> 之间，意外清除其它状态之一。实际上，很少有情况下需要调用 <strong>ClearAbortState</strong>。</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| EnableSkip         | <p>\*<*bool:enable><br>*<*bool:delay><br>*<\*bool:clear></p>                                                                                 | *none*   | <p>启用进度对话框的 <em>Skip</em> 按钮。要使 <strong>EnableSkip</strong> 工作，你必须在进度对话框通过 <strong>Init</strong> 方法创建之前将 <strong>skip</strong> 属性设置为 <strong>True</strong>。<br><strong>enable</strong>: 如果为 <strong>True</strong>，则应启用 <em>Skip</em> 按钮；否则，应禁用它。<br><strong>delay</strong>（可选，默认情况下为 <strong>True</strong>）：如果为 <strong>True</strong>，则启用 <em>Skip</em> 按钮之前会有短暂的延迟，并且在延迟期间暂时禁用它；否则，更改会立即生效。请参阅下文了解为什么延迟通常是好主意。<br><strong>clear</strong>（可选，默认情况下为 <strong>True</strong>）：如果为 <strong>True</strong>，则将清除用户按下 <em>Skip</em> 的任何记录，这样 <strong>GetAbortState</strong> 就不再返回 "<strong>s</strong>"。如果进度对话框刚刚移至新项目，你通常希望这样做。<br>如果你支持 <em>Skip</em> 按钮，你通常应该每个文件调用 <strong>EnableSkip</strong> 一次，就在调用 <strong>SetName</strong> 和类似方法之后。当你以这种方式使用时，你通常希望 <strong>delay</strong> 和 <strong>clear</strong> 都为 <strong>True</strong>，否则，针对一个文件的 <em>Skip</em> 按钮的点击可能会影响随后的文件。例如，如果一个文件需要很长时间，但就在用户厌烦等待并点击 <em>Skip</em> 时完成，则延迟和清除状态可确保不必要的点击无害。</p>                                                                                                                                                                                                               |
| FinishFile         | *none*                                                                                                                                       | *none*   | 完成当前文件。如果当前文件的字节大小已设置，则总进度将按任何剩余字节推进。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| GetAbortState      | <p>\<bool:autoPause><br>\<string:wanted><br>\<bool:simple></p>                                                                               | *string* | <p>轮询三个“控制”按钮的状态。这将返回一个 <em>string</em>，指示三个按钮中的哪一个（如果有）已被用户单击。按钮状态由返回字符串中的以下字母表示：</p><p><strong>a</strong> - Abort<br><strong>p</strong> - Pause<br><strong>s</strong> - Skip</p><p>如果没有任何状态适用，则返回空字符串。<br><strong>autoPause</strong>（可选，默认情况下为 <strong>False</strong>）：如果为 <strong>True</strong>，则会自动为你处理暂停。调用 <strong>GetAbortState(True)</strong> 会在暂停时阻塞，并且只有在取消暂停后才会返回；永远不会返回 "<strong>p</strong>" 状态。（注意，单击 <em>Skip</em> 或 <em>Abort</em> 会隐式取消暂停操作）。<br><strong>wanted</strong>（可选）：如果你只想检查一两个状态，请传递一个包含其字母的字符串。例如，<strong>GetAbortState(True,"ap")</strong> 将测试 <em>Abort</em> 和 <em>Pause</em> 状态，但不会测试 <em>Skip</em> 状态。如果没有给出参数或参数为空字符串，则将检查所有状态。<br><strong>simple</strong>（可选，默认情况下为 <strong>True</strong>）：如果为 <strong>True</strong>，则结果字符串最多包含一个字母，表示最重要的状态。如果为 <strong>False</strong>，则可以同时指示多个状态。例如，如果依次单击 <em>Skip</em> 然后 <em>Pause</em>，并且脚本没有清除 <em>Skip</em> 状态，则 <strong>GetAbortState(False,"",False)</strong> 将返回 "<strong>ps</strong>"，而 <strong>GetAbortState(False)</strong> 将只返回 "<strong>p</strong>"。<br>要清除三个按钮的状态，请调用 <strong>ClearAbortState</strong> 方法。要清除 <em>Skip</em> 按钮的状态，请使用 <strong>EnableSkip</strong> 方法。</p> |
| Hide               | *none*                                                                                                                                       | *none*   | 隐藏进度指示器对话框。对话框对象本身仍然有效，如果需要，可以使用 **Show** 方法重新显示它。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| HideFileByteCounts | \*<\*bool:show>                                                                                                                              | *none*   | 隐藏或显示进度对话框中的 *"XX bytes / YY bytes"* 字符串。如果进度不指示字节数（例如，当它指示百分比时），你可以使用它来隐藏字符串。将 *show* 参数传递 **True** 以显示字符串，传递 **False** 以隐藏它。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| Init               | <p><<a href="tab.zh"><strong>Tab</strong></a>:parent><br>or <<a href="lister.zh"><strong>文件窗口</strong></a>:parent></p><p>\<string:title></p> | *none*   | <p>初始化对话框。此方法会导致实际对话框创建，但它不会显示，直到调用 <strong>Show</strong> 方法。在调用此方法之前必须设置上面显示的基本属性 - 一旦对话框创建，就不能再更改它们。<br><em>parent</em> 参数可以是 <a href="tab.zh"><strong>Tab</strong></a> 或 <a href="lister.zh"><strong>文件窗口</strong></a> - 这将控制对话框居中显示在哪个窗口上，以及如果 <strong>owned</strong> 属性设置为 <strong>True</strong>，则控制对话框由哪个窗口拥有（始终显示在顶部）。如果没有提供父级，则对话框将不会与任何特定窗口关联。<br><em>title</em> 参数指定对话框的窗口标题。</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| InitFileSize       | *none*                                                                                                                                       | *none*   | 将当前文件的字节计数重置为零。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Restart            | *none*                                                                                                                                       | *none*   | 将总已完成的文件和字节计数重置为零。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| SetBytesProgress   | <[**FileSize**](https://chaoses-ib.gitbook.io/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-3/readme.zh/filesize.zh):bytes>        | *none*   | 设置总已完成的字节计数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| SetFileSize        | <[**FileSize**](https://chaoses-ib.gitbook.io/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-3/readme.zh/filesize.zh):bytes>        | *none*   | 设置当前文件的大小。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| SetFiles           | \<int:count>                                                                                                                                 | *none*   | 设置文件的总数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| SetFilesProgress   | \<int:count>                                                                                                                                 | *none*   | 设置总已完成的文件计数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| SetFromTo          | <p>\<string:header><br>\<string:from><br>\<string:to></p>                                                                                    | *none*   | <p>设置对话框顶部显示源和目标的操作文本。<em>header</em> 参数指的是通常显示 <em>From:</em> 的字符串 - 这使你能够在该术语不适用于你的操作的情况下更改它。<em>from</em> 参数是源路径，而 <em>to</em> 参数（如果有）是目标路径。请注意，如果你指定目标路径，则始终会在其后附加 <em>To:</em> 标题。<br>如果你完全省略 <em>to</em> 参数（不只是传递空字符串），则目标行将变为空白，包括 <em>To:</em> 标题。如果希望第二行有时使用，有时不使用，请使用这种方法。如果你永远不希望第二行有任何内容，请使用 <strong>SetStatus</strong> 方法，因为它不会为额外的行添加空格。</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| SetName            | \<string:name>                                                                                                                               | *none*   | 设置当前文件的名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| SetPercentProgress | \<int:percent>                                                                                                                               | *none*   | 将当前进度设置为百分比（从 0 到 100）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| SetStatus          | \<string:status>                                                                                                                             | *none*   | <p>设置对话框顶部状态行中显示的文本。<br>这将设置单行状态消息，而 <strong>SetFromTo</strong> 可以用于在两行上指示源和目标路径。</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| SetTitle           | \<string:title>                                                                                                                              | *none*   | 设置对话框的标题。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| SetType            | \<string:type>                                                                                                                               | *none*   | 设置当前项目的类型 - *file* 或 *dir*。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Show               | *none*                                                                                                                                       | *none*   | 显示进度指示器对话框。在使用 **Init** 方法创建对话框后，调用此方法。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| SkipFile           | \<bool:complete>                                                                                                                             | *none*   | 跳过当前文件。将 *complete* 参数设置为 **True** 表示该文件应计为“已完成”，或设置为 **False** 表示该文件应计为“已跳过”。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| StepBytes          | <[**FileSize**](https://chaoses-ib.gitbook.io/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-3/readme.zh/filesize.zh):bytes>        | *none*   | 将字节进度指示器推进指定的字节数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| StepFiles          | \<int:count>                                                                                                                                 | *none*   | 将文件进度指示器推进指定的文件数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
