Skip to content

Commit

Permalink
feat(client): add SidePanel file directory (#554)
Browse files Browse the repository at this point in the history
* feat(client): add `SidePanel`  file directory

chore(client): upgrade dependent version
fix(client): `CherryMarkdown ` mounting
refactor(client): `menu` files

* chore(client):  v0.0.4

* feat(client): default size of the client window

chore(client): removed some toolbar features
chore(client): renamed the file name of the store
  • Loading branch information
RSS1102 committed Sep 1, 2023
1 parent 491cb0e commit d1e7d65
Show file tree
Hide file tree
Showing 20 changed files with 778 additions and 928 deletions.
2 changes: 2 additions & 0 deletions client/electron/main/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ const indexHtml = join(process.env.DIST, 'index.html');
async function createWindow() {
win = new BrowserWindow({
title: 'Cherry',
width: 1380,
height: 760,
icon: join(process.env.PUBLIC, 'favicon.ico'),
webPreferences: {
preload,
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -1,22 +1,11 @@
import { app, BrowserWindow, dialog, ipcMain, Menu, MenuItem, MenuItemConstructorOptions, shell } from "electron"
import packageInfo from "../../package.json"
import { BrowserWindow, dialog, ipcMain, Menu } from "electron"
import fs from "node:fs"

/**
* @description 监听文本是否改变
*/

ipcMain.on('is-text-change', () => {
const menu = Menu.getApplicationMenu();
const saveFileBtn = menu.getMenuItemById('save-file');
saveFileBtn.enabled = true
})


/**
* @description 新建文件
*/
const newFile = () => {
export const newFile = () => {
const win = BrowserWindow.getAllWindows()[0];
win.webContents.send('new_file')
}
Expand All @@ -25,10 +14,9 @@ const newFile = () => {
* @description 打开文件
* @param status -2 -1 读取文件失败; -3 取消读取; 1 读取成功
*/
const openFile = () => {
export const openFile = () => {
// 获取第一个窗口
const win = BrowserWindow.getAllWindows()[0];
// Show the open file dialog
dialog.showOpenDialog({
title: '打开*.md文件',
filters: [
Expand Down Expand Up @@ -57,7 +45,7 @@ const openFile = () => {
* @description 另存为...
* @description status -2 -1 读取文件失败; 0 取消读取; 1 读取成功
*/
const saveFileAs = () => {
export const saveFileAs = () => {
const win = BrowserWindow.getAllWindows()[0];
win.webContents.send('save-file-as')
}
Expand Down Expand Up @@ -87,11 +75,10 @@ ipcMain.on('save-file-as-info', async (event, arg: { data: string }) => {

})


/**
* @description 保存文件
*/
const saveFile = () => {
export const saveFile = () => {
// 询问是否有文件路径->如没有则调用另存为文件功能
const win = BrowserWindow.getAllWindows()[0];
win.webContents.send('save-file')
Expand All @@ -114,100 +101,3 @@ ipcMain.on('sava-file-type', (event, arg: { filePath: string, data: string }) =>
saveFileAs()
}
})



/**
* @description 版本信息
*/
const info = () => {
dialog.showMessageBox({
title: ' Cherry Noted',
type: 'info',
message: '一个桌面端Markdown Noted',
detail: `版本信息:${packageInfo.version}\n说明:测试版`,
noLink: true,
buttons: ['确定', '项目地址'],
}).then((res) => {
if (res.response === 1) {
shell.openExternal('https://github.com/Tencent/cherry-markdown')
}
})
}
/**
* @desc 判断是否为Mac
* @doc [process.platform](https://nodejs.org/api/process.html#processplatform)
*/
const isMac = process.platform === 'darwin';
/**
* @desc 判断是否为生产环境
*/
const isPackaged: boolean = app.isPackaged

const menuConfig: Array<MenuItemConstructorOptions | MenuItem> = [
{
label: '文件',
submenu: [
{
id: "new-file",
label: '新建文件',
click: () => newFile(),
},
{
id: "open-file",
label: '打开文件...',
click: () => openFile(),
},
{
id: "save-file-as",
label: '另存为...',
click: () => saveFileAs(),
},
{
id: "save-file",
label: '保存',
click: () => saveFile(),
enabled: false
},
{
id: "quit-close",
label: '退出',
role: isMac ? "quit" : 'close'
},

]
},
{
label: '编辑',
submenu: [
{
label: '在文件中查找',
enabled: false,
}
]
},
{
label: '其他',
submenu: [
{
label: '设置',
enabled: false,
},{
label: '检测版本更新',
enabled: false,
},{
label: '关于',
click: () => info(),
}
]
},
]

isPackaged ? [] : menuConfig.push({
label: "打开DevTools",
role: 'toggleDevTools'
})

export {
menuConfig
}
20 changes: 20 additions & 0 deletions client/electron/preload/menu/category/other.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { app, BrowserWindow, dialog, ipcMain, Menu, MenuItem, MenuItemConstructorOptions, shell } from "electron"
import packageInfo from "../../../../package.json"

/**
* @description 版本信息
*/
export const info = () => {
dialog.showMessageBox({
title: ' Cherry Noted',
type: 'info',
message: '一个桌面端Markdown Noted',
detail: `版本信息:${packageInfo.version}\n说明:测试版`,
noLink: true,
buttons: ['确定', '项目地址'],
}).then((res) => {
if (res.response === 1) {
shell.openExternal('https://github.com/Tencent/cherry-markdown')
}
})
}
10 changes: 10 additions & 0 deletions client/electron/preload/menu/category/view.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { BrowserWindow, ipcMain } from "electron";

/**
* @description 打开目录面板
*/
export const showDirectoryPanel = () => {
const win = BrowserWindow.getAllWindows()[0];
win.webContents.send('show-directory-panel')
return true
}
106 changes: 106 additions & 0 deletions client/electron/preload/menu/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
import { app, ipcMain, Menu, MenuItem, MenuItemConstructorOptions } from "electron"
import { showDirectoryPanel } from "./category/view";
import { newFile, openFile, saveFileAs, saveFile } from "./category/file";
import { info } from "./category/other";

// @description 监听文本是否改变
ipcMain.on('is-text-change', () => {
const menu = Menu.getApplicationMenu();
const saveFileBtn = menu.getMenuItemById('save-file');
saveFileBtn.enabled = true
})

/**
* @description 判断是否显示目录面板
*/
let isShowSidePanel = false

/**
* @desc 判断是否为Mac
* @doc [process.platform](https://nodejs.org/api/process.html#processplatform)
*/
const isMac = process.platform === 'darwin';
/**
* @desc 判断是否为生产环境
*/
const isPackaged: boolean = app.isPackaged

const menuConfig: Array<MenuItemConstructorOptions | MenuItem> = [
{
label: '文件',
submenu: [
{
id: "new-file",
label: '新建文件',
click: () => newFile(),
},
{
id: "open-file",
label: '打开文件...',
click: () => openFile(),
},
{
id: "save-file-as",
label: '另存为...',
click: () => saveFileAs(),
},
{
id: "save-file",
label: '保存',
click: () => saveFile(),
enabled: false
},
{
id: "quit-close",
label: '退出',
role: isMac ? "quit" : 'close'
},

]
},
{
label: '编辑',
submenu: [
{
label: '在文件中查找',
enabled: false,
}
]
},
{
label: '视图',
submenu: [
{
label: '目录',
click: () => showDirectoryPanel(),
enabled: true,
type: 'checkbox',
checked: !isShowSidePanel,
},
]
},
{
label: '其他',
submenu: [
{
label: '设置',
enabled: false,
}, {
label: '检测版本更新',
enabled: false,
}, {
label: '关于',
click: () => info(),
}
]
},
]

isPackaged ? [] : menuConfig.push({
label: "打开DevTools",
role: 'toggleDevTools'
})

export {
menuConfig
}
9 changes: 5 additions & 4 deletions client/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cherry-noted",
"version": "0.0.3",
"version": "0.0.4",
"main": "dist-electron/main/index.js",
"description": "cherry markdown editor in the Desktop.",
"author": "Cherry Oteam",
Expand All @@ -22,19 +22,20 @@
"build": "vue-tsc --noEmit && vite build && electron-builder"
},
"devDependencies": {
"@types/node": "^20.5.6",
"@vitejs/plugin-vue": "^4.1.0",
"electron": "^23.1.1",
"electron-builder": "^23.6.0",
"sass": "^1.62.0",
"typescript": "^5.0.2",
"vite": "^4.1.4",
"vite-plugin-electron": "^0.11.2",
"vite-plugin-electron": "0.14.0-beta.0",
"vite-plugin-electron-renderer": "^0.14.1",
"vue-tsc": "^1.2.0"
},
"dependencies": {
"cherry-markdown": "^0.8.18",
"pinia": "^2.1.3",
"cherry-markdown": "^0.8.24",
"pinia": "^2.1.6",
"tdesign-vue-next": "^1.3.0",
"vue": "^3.3.4"
}
Expand Down
6 changes: 4 additions & 2 deletions client/src/App.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<template>
<CherryMarkdown></CherryMarkdown>
<Home/>
</template>

<script setup lang="ts">
import CherryMarkdown from "./components/CherryMarkdown.vue"
import Home from "@/pages/home.vue"
</script>

Loading

0 comments on commit d1e7d65

Please sign in to comment.