diff --git a/src/renderer/components/StatusBarMenu.vue b/src/renderer/components/StatusBarMenu.vue
index 5b6078b8..ade00cd8 100644
--- a/src/renderer/components/StatusBarMenu.vue
+++ b/src/renderer/components/StatusBarMenu.vue
@@ -10,7 +10,7 @@
{{menu.title}}
-
+
-
+
@@ -47,7 +48,7 @@ export default defineComponent({
const list = ref(getMenus(props.position))
const showList = ref(true)
- const handleItemClick = (item: MenuItem) => {
+ const handleItemClick = (item: MenuItem & { type: 'normal' }) => {
if (item.disabled) {
return
}
@@ -142,15 +143,20 @@ export default defineComponent({
border-radius: var(--g-border-radius);
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
+
+ &.has-checked li.normal {
+ padding-left: 20px;
+ }
}
.list li.normal {
- padding: 4px .8em;
+ padding: 4px 12px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
display: flex;
justify-content: space-between;
+ align-items: center;
border-radius: var(--g-border-radius);
&:hover {
@@ -173,6 +179,13 @@ export default defineComponent({
display: none;
}
+ .checked-icon {
+ position: absolute;
+ width: 12px;
+ height: 12px;
+ transform: translateX(-14px) translateY(-2px) scaleX(0.8);
+ }
+
.menu-item-sub-title {
font-size: 12px;
color: var(--g-color-50);
diff --git a/src/renderer/components/SvgIcon.vue b/src/renderer/components/SvgIcon.vue
index cb474fef..36ceb446 100644
--- a/src/renderer/components/SvgIcon.vue
+++ b/src/renderer/components/SvgIcon.vue
@@ -41,6 +41,7 @@ export default defineComponent({
'text-width-solid': '',
'keyboard-solid': '',
'columns-solid': '',
+ 'check-solid': '',
}
const name = props.name!
diff --git a/src/renderer/plugins/status-bar-repository-switch.ts b/src/renderer/plugins/status-bar-repository-switch.ts
index 1b8e803a..e8faea2b 100644
--- a/src/renderer/plugins/status-bar-repository-switch.ts
+++ b/src/renderer/plugins/status-bar-repository-switch.ts
@@ -55,6 +55,7 @@ export default {
type: 'normal',
title: name,
tips: path,
+ checked: currentRepo && currentRepo.name === name && currentRepo.path === path,
onClick: () => choose({ name, path })
}
})
diff --git a/src/renderer/plugins/status-bar-view.ts b/src/renderer/plugins/status-bar-view.ts
index 1d2a5c3d..576e8cf8 100644
--- a/src/renderer/plugins/status-bar-view.ts
+++ b/src/renderer/plugins/status-bar-view.ts
@@ -1,19 +1,15 @@
import type { Plugin } from '@fe/context'
import { FLAG_DISABLE_XTERM } from '@fe/support/args'
import { getKeysLabel } from '@fe/core/command'
-import type { MsgPath } from '@share/i18n'
export default {
name: 'status-bar-view',
register: ctx => {
- const t = ctx.i18n.t
- const toggleTitle = (flag: boolean, title: MsgPath) => (flag ? t('status-bar.view.hide') : t('status-bar.view.show')) + t(title)
-
ctx.statusBar.tapMenus(menus => {
menus['status-bar-view'] = {
id: 'status-bar-view',
position: 'left',
- title: t('status-bar.view.view'),
+ title: ctx.i18n.t('status-bar.view.view'),
list: []
}
})
@@ -26,39 +22,51 @@ export default {
{
id: 'toggle-side',
type: 'normal',
- title: toggleTitle(ctx.store.state.showSide, 'status-bar.view.side-bar'),
+ title: ctx.i18n.t('status-bar.view.side-bar'),
+ checked: ctx.store.state.showSide,
subTitle: getKeysLabel('layout.toggle-side'),
onClick: () => ctx.layout.toggleSide()
},
{
id: 'toggle-editor',
type: 'normal',
- title: toggleTitle(ctx.store.state.showEditor, 'status-bar.view.editor'),
+ checked: ctx.store.state.showEditor,
+ title: ctx.i18n.t('status-bar.view.editor'),
subTitle: getKeysLabel('layout.toggle-editor'),
onClick: () => ctx.layout.toggleEditor()
},
{
id: 'toggle-view',
type: 'normal',
- title: toggleTitle(ctx.store.state.showView, 'status-bar.view.preview'),
+ checked: ctx.store.state.showView,
+ title: ctx.i18n.t('status-bar.view.preview'),
subTitle: getKeysLabel('layout.toggle-view'),
onClick: () => ctx.layout.toggleView()
},
...(!FLAG_DISABLE_XTERM ? [{
id: 'toggle-xterm',
type: 'normal' as any,
- title: toggleTitle(ctx.store.state.showXterm, 'status-bar.view.xterm'),
+ checked: ctx.store.state.showXterm,
+ title: ctx.i18n.t('status-bar.view.xterm'),
subTitle: getKeysLabel('layout.toggle-xterm'),
onClick: () => ctx.layout.toggleXterm()
}] : []),
{ type: 'separator' },
{
- id: 'toggle-wrap',
+ id: 'word-wrap',
type: 'normal',
- title: t('status-bar.view.toggle-wrap'),
+ checked: ctx.store.state.wordWrap === 'on',
+ title: ctx.i18n.t('status-bar.view.word-wrap'),
subTitle: getKeysLabel('editor.toggle-wrap'),
onClick: () => ctx.editor.toggleWrap()
},
+ {
+ id: 'typewriter-mode',
+ type: 'normal',
+ checked: ctx.store.state.typewriterMode,
+ title: ctx.i18n.t('status-bar.view.typewriter-mode'),
+ onClick: () => ctx.editor.toggleTypewriterMode()
+ },
]
})
} else {
diff --git a/src/renderer/services/status-bar.ts b/src/renderer/services/status-bar.ts
index aa7ff076..4b6d9a4d 100644
--- a/src/renderer/services/status-bar.ts
+++ b/src/renderer/services/status-bar.ts
@@ -10,6 +10,7 @@ export type MenuItem = {
subTitle?: string;
disabled?: boolean;
hidden?: boolean;
+ checked?: boolean;
onClick?: (item: MenuItem) => void;
} | { type: 'separator' }
diff --git a/src/share/i18n/languages/en.ts b/src/share/i18n/languages/en.ts
index 69e54a91..936a719d 100644
--- a/src/share/i18n/languages/en.ts
+++ b/src/share/i18n/languages/en.ts
@@ -186,13 +186,12 @@ const data = {
'status-bar': {
'view': {
'view': 'View',
- 'show': 'Show ',
- 'hide': 'Hide ',
- 'xterm': 'Terminal',
- 'preview': 'Preview',
- 'editor': 'Editor',
- 'side-bar': 'Side Bar',
- 'toggle-wrap': 'Toggle Wrap'
+ 'xterm': 'Show Terminal',
+ 'preview': 'Show Preview',
+ 'editor': 'Show Editor',
+ 'side-bar': 'Show Side Bar',
+ 'word-wrap': 'Word Wrap',
+ 'typewriter-mode': 'Typewriter Mode',
},
'setting': 'Setting',
'repo': {
diff --git a/src/share/i18n/languages/zh-CN.ts b/src/share/i18n/languages/zh-CN.ts
index aea8b089..aea6ea27 100644
--- a/src/share/i18n/languages/zh-CN.ts
+++ b/src/share/i18n/languages/zh-CN.ts
@@ -187,13 +187,12 @@ const data: BaseLanguage = {
'status-bar': {
'view': {
'view': '视图',
- 'show': '显示',
- 'hide': '隐藏',
- 'xterm': '终端',
- 'preview': '预览',
- 'editor': '编辑',
- 'side-bar': '侧栏',
- 'toggle-wrap': '切换换行'
+ 'xterm': '显示终端',
+ 'preview': '显示预览',
+ 'editor': '显示编辑',
+ 'side-bar': '显示侧栏',
+ 'word-wrap': '文本换行',
+ 'typewriter-mode': '打字机模式',
},
'setting': '设置',
'repo': {