Skip to content

Commit f0f3a89

Browse files
authored
[222_84] 极简模式:隐藏模式工具栏、焦点工具栏 (#3292)
1 parent 90c5f0e commit f0f3a89

6 files changed

Lines changed: 131 additions & 1 deletion

File tree

TeXmacs/plugins/lang/dic/en_US/zh_CN.scm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -861,6 +861,7 @@
861861
("fn" "字符")
862862
("focus dependent icons" "焦点工具栏")
863863
("focus mode" "专注模式")
864+
("simplest mode" "极简模式")
864865
("focus" "焦点")
865866
("fold all fields" "折叠全部区域")
866867
("fold comments" "折叠所有批注")

TeXmacs/progs/kernel/texmacs/tm-modes.scm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,7 @@
278278
(spell-mode% (== (get-input-mode) 3))
279279
(complete-mode% (== (get-input-mode) 4))
280280
(remote-control-mode% (== remote-control-flag? #t))
281+
(simplest-mode% (and (not (visible-icon-bar? 1)) (not (visible-icon-bar? 2))))
281282
(focus-mode% (not (visible-header?)))
282283
(in-cyrillic-jcuken% (cyrillic-input-method? "jcuken") in-cyrillic%)
283284
(in-cyrillic-translit% (cyrillic-input-method? "translit") in-cyrillic%)

TeXmacs/progs/texmacs/menus/main-menu.scm

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,20 @@
106106
("Focus mode" (toggle-focus-mode)))
107107

108108
(tm-menu (texmacs-popup-menu)
109-
(:require (focus-mode?))
109+
(:require (and (focus-mode?) (not (simplest-mode?))))
110110
(link focus-popup-menu)
111111
---
112112
(former))
113113

114+
(menu-bind simplest-popup-menu
115+
("Simplest mode" (toggle-simplest-mode)))
116+
117+
(tm-menu (texmacs-popup-menu)
118+
(:require (simplest-mode?))
119+
(link simplest-popup-menu)
120+
---
121+
(former))
122+
114123
(tm-menu (texmacs-popup-menu)
115124
("Smart paste" (kbd-magic-paste))
116125
("Paste special" (interactive-paste-special))

TeXmacs/progs/texmacs/menus/view-menu.scm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@
115115
---)
116116
("Full screen mode" (toggle-full-screen-edit-mode))
117117
("Focus mode" (toggle-focus-mode))
118+
("Simplest mode" (toggle-simplest-mode))
118119
("Presentation mode" (toggle-full-screen-mode))
119120
("Show panorama" (toggle-panorama-mode))
120121
("Show all slides" (toggle-slideshow-mode))

TeXmacs/progs/texmacs/texmacs/tm-view.scm

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,26 @@
143143
(tm-define (toggle-focus-mode)
144144
(:synopsis "Toggle focus mode.")
145145
(:check-mark "v" focus-mode?)
146+
(if (and (not (focus-mode?)) (simplest-mode?))
147+
(toggle-simplest-mode))
146148
(toggle-visible-header))
147149

150+
(define saved-simplest-state '(#t #t))
151+
152+
(tm-define (toggle-simplest-mode)
153+
(:synopsis "Toggle simplest mode.")
154+
(:check-mark "v" simplest-mode?)
155+
(if (and (not (simplest-mode?)) (focus-mode?))
156+
(toggle-focus-mode))
157+
(if (simplest-mode?)
158+
(begin
159+
(show-icon-bar 1 (car saved-simplest-state))
160+
(show-icon-bar 2 (cadr saved-simplest-state)))
161+
(begin
162+
(set! saved-simplest-state (list (visible-icon-bar? 1) (visible-icon-bar? 2)))
163+
(show-icon-bar 1 #f)
164+
(show-icon-bar 2 #f))))
165+
148166
(define saved-informative-flags "default")
149167

150168
(tm-define (toggle-full-screen-mode)

devel/222_84.md

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# [222_84] 极简模式:隐藏模式工具栏、焦点工具栏,保留菜单栏
2+
3+
## 相关文档
4+
- [x_y.md](x_y.md) - 开发文档模板
5+
6+
## 任务相关的代码文件
7+
- `TeXmacs/progs/texmacs/menus/view-menu.scm` - 查看菜单定义
8+
- `TeXmacs/progs/texmacs/texmacs/tm-view.scm` - 视图状态切换函数
9+
- `TeXmacs/progs/kernel/texmacs/tm-modes.scm` - 模式状态定义
10+
- `TeXmacs/progs/texmacs/menus/main-menu.scm` - 右键菜单定义
11+
- `src/Texmacs/Window/tm_frame.cpp` - C++ 层工具栏显示控制
12+
- `src/Plugins/Qt/qt_tm_widget.cpp` - Qt 层 UI 可见性控制
13+
14+
## 如何测试
15+
1. 启动 Mogan
16+
2. 点击 `查看` 菜单,确认有 `极简模式` 选项
17+
3. 点击 `极简模式`,确认模式工具栏、焦点工具栏被隐藏,菜单栏保留
18+
4. 在编辑区域右键,确认有 `极简模式` 选项可退出
19+
5. 退出极简模式后,确认之前被隐藏的 UI 元素恢复显示
20+
6. 进入极简模式后,再进入专注模式,然后退出专注模式,确认不再是极简模式
21+
- 点击 `极简模式`,确认模式工具栏、焦点工具栏被隐藏
22+
- 点击 `Focus mode`,确认菜单栏被隐藏(此时极简模式自动退出)
23+
- 退出 `Focus mode`,确认菜单栏恢复显示
24+
- 确认模式工具栏、焦点工具栏保持显示(不是极简模式)
25+
26+
## 如何提交
27+
```bash
28+
# 提交前执行的最少测试步骤
29+
xmake build mogan
30+
./build/mogan
31+
```
32+
33+
## 2026/05/08 第一步:定义极简模式状态与切换函数
34+
35+
### What
36+
在 Scheme 层定义极简模式的状态判断和切换函数。
37+
38+
### Why
39+
参考专注模式(`toggle-focus-mode`)的实现方式,极简模式需要:
40+
1. 一个状态变量/函数判断当前是否处于极简模式
41+
2. 一个切换函数进入/退出极简模式
42+
3. 保存进入极简模式前的 UI 状态,以便退出时恢复
43+
44+
### How
45+
1.`tm-modes.scm` 中定义 `simplest-mode?`
46+
- 极简模式状态 = 模式工具栏隐藏 且 焦点工具栏隐藏
47+
-`(simplest-mode% (and (not (visible-icon-bar? 1)) (not (visible-icon-bar? 2))))`
48+
49+
2.`tm-view.scm` 中实现 `toggle-simplest-mode`
50+
- 需要保存进入极简模式前的状态(模式工具栏、焦点工具栏的可见性)
51+
- 使用 `saved-simplest-state` 变量存储二元组 `(mode-visible? focus-visible?)`
52+
- 进入极简模式时:
53+
- 保存当前状态
54+
- 调用 `(show-icon-bar 1 #f)``(show-icon-bar 2 #f)` 隐藏两个工具栏
55+
- 退出极简模式时:
56+
- 根据保存的状态恢复两个工具栏
57+
58+
## 2026/05/08 第二步:在查看菜单和右键菜单中添加入口
59+
60+
### What
61+
在查看菜单中添加 `极简模式` 选项,并在右键菜单中添加退出入口。
62+
63+
### Why
64+
参考专注模式的交互方式:
65+
- 专注模式在 `查看` 菜单中有 `Focus mode` 入口
66+
- 进入专注模式后,右键菜单会出现 `Focus mode` 选项用于退出
67+
68+
### How
69+
1.`view-menu.scm``view-menu` 中,在 `Focus mode` 下方添加 `极简模式` 菜单项:
70+
```scheme
71+
("极简模式" (toggle-simplest-mode))
72+
```
73+
74+
2.`main-menu.scm``texmacs-popup-menu` 中,参照 `focus-popup-menu` 的实现,添加 `simplest-popup-menu`
75+
```scheme
76+
(menu-bind simplest-popup-menu
77+
("极简模式" (toggle-simplest-mode)))
78+
79+
(tm-menu (texmacs-popup-menu)
80+
(:require (simplest-mode?))
81+
(link simplest-popup-menu)
82+
---
83+
(former))
84+
```
85+
注意:需要处理与 `focus-popup-menu` 的共存逻辑,确保两个模式都能正确显示右键菜单。
86+
87+
## 2026/05/08 第三步:处理模式共存与边界情况
88+
89+
### What
90+
处理极简模式与专注模式、全屏模式等其他模式的共存逻辑。
91+
92+
### Why
93+
如果用户同时开启了专注模式和极简模式,退出其中一个时可能会意外恢复 UI 元素。
94+
95+
### How
96+
- 专注模式只控制菜单栏,极简模式控制模式工具栏+焦点工具栏:
97+
- 两者控制不同的 UI 元素,可以完全共存
98+
- 进入极简模式时,如果专注模式已开启,菜单栏保持隐藏状态
99+
- 退出极简模式时,只恢复工具栏,不影响菜单栏
100+
- 退出专注模式时,只恢复菜单栏,不影响工具栏

0 commit comments

Comments
 (0)