diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart index d089c9b2..79b6426e 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart @@ -492,7 +492,7 @@ class SZh extends S { @override String sureDelete(Object name) { - return '确定删除[$name]?'; + return '确定删除 [$name]?'; } @override @@ -1078,7 +1078,7 @@ class SZhTw extends SZh { @override String sureDelete(Object name) { - return '確定刪除[$name]?'; + return '確定刪除 [$name]?'; } @override diff --git a/README.md b/README.md index 45f19c0d..69f29902 100644 --- a/README.md +++ b/README.md @@ -30,8 +30,7 @@ Especially thanks to dartss - [x] `Docker & Pkg` Manager - [x] Status charts - [x] `Ping` and etc. -- [x] i18n (English, 简体中文, Deutsch) - - Welcome contribution :), [How to contribute?](#l10n-guide) +- [x] Localization ( English, 简体中文, Deutsch, 繁體中文. [How to contribute?](#l10n-guide)) - [x] Desktop support diff --git a/README_zh.md b/README_zh.md index ea6469f8..d1d316bc 100644 --- a/README_zh.md +++ b/README_zh.md @@ -30,8 +30,7 @@ - [x] `Docker & 包` 管理器 - [x] 状态图表 - [x] `Ping` 和 更多 -- [x] 本地化 ( English, 简体中文, Deutsch ) - - 欢迎贡献 :),[怎么贡献?](#l10n) +- [x] 本地化 ( English, 简体中文, Deutsch, 繁體中文。 [如何贡献?](#l10n-guide)) - [x] 桌面端支持 diff --git a/lib/data/model/app/menu.dart b/lib/data/model/app/menu.dart index 62d9a74f..c46e7a5d 100644 --- a/lib/data/model/app/menu.dart +++ b/lib/data/model/app/menu.dart @@ -51,7 +51,7 @@ enum DockerMenuType { static List items(bool running) { if (running) { - return [stop, restart, rm, logs]; + return [stop, restart, rm, logs, terminal]; } else { return [start, rm, logs]; } diff --git a/lib/data/provider/docker.dart b/lib/data/provider/docker.dart index c5667bad..0e161884 100644 --- a/lib/data/provider/docker.dart +++ b/lib/data/provider/docker.dart @@ -163,14 +163,6 @@ class DockerProvider extends BusyProvider { return null; } - Future logs(String id) async { - setBusyState(); - final cmd = _wrap('docker logs $id'); - final result = await client!.run(cmd); - setBusyState(false); - return result.string; - } - // judge whether to use DOCKER_HOST / sudo String _wrap(String cmd) { final dockerHost = dockerStore.getDockerHost(hostId!); diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 002dea88..433e4f90 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -152,7 +152,7 @@ "start": "开始", "stop": "停止", "success": "成功", - "sureDelete": "确定删除[{name}]?", + "sureDelete": "确定删除 [{name}]?", "sureDirEmpty": "请确保文件夹为空", "sureNoPwd": "确认使用无密码?", "sureToDeleteServer": "你确定要删除服务器 [{server}] 吗?", diff --git a/lib/l10n/app_zh_tw.arb b/lib/l10n/app_zh_tw.arb index 9e912c8c..54d61960 100644 --- a/lib/l10n/app_zh_tw.arb +++ b/lib/l10n/app_zh_tw.arb @@ -152,7 +152,7 @@ "start": "開始", "stop": "停止", "success": "成功", - "sureDelete": "確定刪除[{name}]?", + "sureDelete": "確定刪除 [{name}]?", "sureDirEmpty": "請確保文件夾為空", "sureNoPwd": "確認使用無密碼?", "sureToDeleteServer": "你確定要刪除服務器 [{server}] 嗎?", diff --git a/lib/view/page/docker.dart b/lib/view/page/docker.dart index f35d1a5a..6dbeb907 100644 --- a/lib/view/page/docker.dart +++ b/lib/view/page/docker.dart @@ -3,7 +3,6 @@ import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:provider/provider.dart'; import 'package:toolbox/core/extension/navigator.dart'; import 'package:toolbox/core/route.dart'; -import 'package:toolbox/core/utils/misc.dart'; import 'package:toolbox/view/page/ssh.dart'; import 'package:toolbox/view/widget/input_field.dart'; @@ -154,7 +153,7 @@ class _DockerManagePageState extends State { context.pop(); final result = await _docker.run(cmd); if (result != null) { - showSnackBar(context, Text(getErrMsg(result) ?? _s.unknownError)); + showSnackBar(context, Text(result.message ?? _s.unknownError)); } }, child: Text(_s.run), @@ -176,13 +175,6 @@ class _DockerManagePageState extends State { return 'docker run -itd --name $name $suffix'; } - String? getErrMsg(DockerErr err) { - switch (err.type) { - default: - return err.message; - } - } - void onSubmitted() { if (_textController.text == '') { showRoundDialog( @@ -308,7 +300,7 @@ class _DockerManagePageState extends State { if (result != null) { showSnackBar( context, - Text(getErrMsg(result) ?? _s.unknownError), + Text(result.message ?? _s.unknownError), ); } }, @@ -354,24 +346,25 @@ class _DockerManagePageState extends State { } Widget _buildEditHost() { - if (_docker.items!.isNotEmpty || _docker.images!.isNotEmpty) { - return placeholder; + final children = []; + if (_docker.items!.isEmpty && _docker.images!.isEmpty) { + children.add(Padding( + padding: const EdgeInsets.fromLTRB(17, 17, 17, 0), + child: Text( + _s.dockerEmptyRunningItems, + textAlign: TextAlign.center, + ), + )); } - return Padding( - padding: const EdgeInsets.fromLTRB(17, 17, 17, 0), - child: Column( - children: [ - Text( - _s.dockerEmptyRunningItems, - textAlign: TextAlign.center, - ), - TextButton( - onPressed: () => _showEditHostDialog(), - child: Text(_s.dockerEditHost), - ) - ], + children.add( + TextButton( + onPressed: _showEditHostDialog, + child: Text(_s.dockerEditHost), ), ); + return Column( + children: children, + ); } Future _showEditHostDialog() async { @@ -483,6 +476,7 @@ class _DockerManagePageState extends State { case DockerMenuType.rm: showRoundDialog( context: context, + title: Text(_s.attention), child: Text(_s.sureDelete(dItem.name)), actions: [ TextButton( @@ -505,19 +499,13 @@ class _DockerManagePageState extends State { _docker.restart(dItem.containerId); break; case DockerMenuType.logs: - final logs = await _docker.logs(dItem.containerId); - showRoundDialog( - context: context, - child: SingleChildScrollView( - child: Text(logs), + AppRoute( + SSHPage( + spi: widget.spi, + initCmd: 'docker logs ${dItem.containerId}', ), - actions: [ - TextButton( - onPressed: () => copy2Clipboard(logs), - child: Text(_s.copy), - ) - ], - ); + 'Docker logs', + ).go(context); break; case DockerMenuType.terminal: AppRoute( diff --git a/lib/view/page/ssh.dart b/lib/view/page/ssh.dart index 84333648..7656d055 100644 --- a/lib/view/page/ssh.dart +++ b/lib/view/page/ssh.dart @@ -288,6 +288,9 @@ class _SSHPageState extends State { ), ); } + if (children.isEmpty) { + return; + } _menuController.show( context: context, contextMenuBuilder: (context) { @@ -343,7 +346,7 @@ class _SSHPageState extends State { _listen(session.stderr); if (widget.initCmd != null) { - _terminal.write(widget.initCmd!); + _terminal.textInput(widget.initCmd!); _terminal.keyInput(TerminalKey.enter); }