Skip to content

Commit

Permalink
- 新增 加入最近打开的文件
Browse files Browse the repository at this point in the history
- 新增 打开文件所在文件夹,一般情况下还会选中它。(有用户说不好找文件的位置)
- 优化 替换系统的提示框,为内部消息提示。
- 修复 Mac/Linux 标题栏文件名显示为路径的问题
  • Loading branch information
topcss committed Aug 14, 2018
1 parent 2320daf commit 0e8762b
Show file tree
Hide file tree
Showing 9 changed files with 171 additions and 27 deletions.
6 changes: 4 additions & 2 deletions bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,13 @@
"tests"
],
"devDependencies": {
"seajs": "^3.0.0"
"seajs": "^3.0.0",
"bootbox.js": "bootbox#^4.4.0"
},
"dependencies": {
"kityminder-editor": "git://github.com/NaoTu/kityminder-editor#master",
"kityminder-core": "^1.4.45"
"kityminder-core": "^1.4.45",
"bootbox.js": "bootbox#^4.4.0"
},
"overrides": {
"jquery": {
Expand Down
5 changes: 4 additions & 1 deletion doc/Dev.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,4 +80,7 @@ https://nodejs.org/api/fs.html#fs_fs_exists_path_callback
https://segmentfault.com/q/1010000006187286?_ea=1042220

mac 编译
/Users/apple/.npm-global/lib/node_modules/electron-packager/cli.js ./ DesktopNaotu --platform=darwin --arch=x64 --out=../OutApp --icon=favicon.icns --app-version=1.6.15 --ignore="(.git|node_modules|screenshot|doc|src|bower_components|electron-packager)" --overwrite --prune
/Users/apple/.npm-global/lib/node_modules/electron-packager/cli.js ./ DesktopNaotu --platform=darwin --arch=x64 --out=../OutApp --icon=favicon.icns --app-version=1.6.15 --ignore="(.git|node_modules|screenshot|doc|src|bower_components|electron-packager)" --overwrite --prune

## 加入msg插件
bower install bootbox --save
7 changes: 7 additions & 0 deletions doc/History.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@

## 更新记录

### 1.0.1 / 2018-8-14

- 新增 加入最近打开的文件
- 新增 打开文件所在文件夹,一般情况下还会选中它。(有用户说不好找文件的位置)
- 优化 替换系统的提示框,为内部消息提示。
- 修复 Mac/Linux 标题栏文件名显示为路径的问题

### 1.0.0 / 2018-5-28

- 显示当前编辑文件的名称
Expand Down
8 changes: 6 additions & 2 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ const gulp = require('gulp'),
run = require('run-sequence'),
wiredep = require('wiredep').stream,
connect = require('gulp-connect'),
mainBowerFiles = require('gulp-main-bower-files');
mainBowerFiles = require('gulp-main-bower-files'),
babel = require('gulp-babel'),
gutil = require('gulp-util');

gulp.task('clean-dist', () => {
return del(['dist/**/*'], { force: true });
Expand Down Expand Up @@ -67,7 +69,9 @@ gulp.task('copy-js-vendor', function () {
.pipe(gulp.dest('dist/js'));

return gulp.src([
// "bower_components/jquery/dist/jquery.min.js",
"bower_components/jquery/dist/jquery.min.js",
"bower_components/bootstrap/dist/js/bootstrap.min.js",
"bower_components/bootbox.js/bootbox.js",
"bower_components/angular/angular.min.js",
"bower_components/angular-bootstrap/ui-bootstrap-tpls.js",
"bower_components/codemirror/lib/codemirror.js",
Expand Down
19 changes: 8 additions & 11 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,23 +1,20 @@
{
"name": "desktopnaotu",
"version": "1.0.0",
"version": "1.0.1",
"description": "桌面版脑图",
"main": "main.js",
"scripts": {
"start": "gulp default && electron main.js",
"packwin32": "electron-packager ./ DesktopNaotu --platform=win32 --arch=ia32 --out=../OutApp --icon=favicon.ico --version=1.6.15 --ignore=\"(.git|node_modules|screenshot|doc|src|bower_components|electron-packager)\" --overwrite --prune",
"packwin64": "electron-packager ./ DesktopNaotu --platform=win32 --arch=x64 --out=../OutApp --icon=favicon.ico --version=1.6.15 --ignore=\"(.git|node_modules|screenshot|doc|src|bower_components|electron-packager)\" --overwrite --prune",
"packosx": "electron-packager ./ DesktopNaotu --platform=darwin --arch=x64 --out=../OutApp --icon=favicon.icns --version=1.6.15 --ignore=\"(.git|node_modules|screenshot|doc|src|bower_components|electron-packager)\" --overwrite --prune",
"packlinux": "electron-packager ./ DesktopNaotu --platform=linux --arch=x64 --out=../OutApp --icon=favicon.png --version=1.6.15 --ignore=\"(.git|node_modules|screenshot|doc|src|bower_components|electron-packager)\" --overwrite --prune"
"packwin32": "electron-packager ./ DesktopNaotu --platform=win32 --arch=ia32 --out=../OutApp --icon=favicon.ico --electron-version=2.0.2 --app-version=1.0.0 --ignore=\"(.git|node_modules|screenshot|doc|src|bower_components|electron-packager)\" --overwrite --prune",
"packwin64": "electron-packager ./ DesktopNaotu --platform=win32 --arch=x64 --out=../OutApp --icon=favicon.ico --electron-version=2.0.2 --app-version=1.0.0 --ignore=\"(.git|node_modules|screenshot|doc|src|bower_components|electron-packager)\" --overwrite --prune",
"packosx": "electron-packager ./ DesktopNaotu --platform=darwin --arch=x64 --out=../OutApp --icon=favicon.icns --electron-version=2.0.2 --app-version=1.0.0 --ignore=\"(.git|node_modules|screenshot|doc|src|bower_components|electron-packager)\" --overwrite --prune",
"packlinux": "electron-packager ./ DesktopNaotu --platform=linux --arch=x64 --out=../OutApp --icon=favicon.png --electron-version=2.0.2 --app-version=1.0.0 --ignore=\"(.git|node_modules|screenshot|doc|src|bower_components|electron-packager)\" --overwrite --prune"
},
"repository": {
"type": "git",
"url": "git+https://github.com/NaoTu/DesktopNaotu.git"
},
"keywords": [
"mind",
"naotu"
],
"keywords": ["mind", "naotu"],
"author": "'Jack' <'[email protected]'>",
"license": "MIT",
"bugs": {
Expand All @@ -26,7 +23,7 @@
"homepage": "https://github.com/NaoTu/DesktopNaotu#readme",
"devDependencies": {
"del": "^2.2.2",
"electron": "^1.4.5",
"electron": "^2.0.x",
"electron-packager": "^12.1.0",
"electron-prebuilt": "^1.4.5",
"grunt": "^1.0.1",
Expand Down Expand Up @@ -55,4 +52,4 @@
"jshint": "^2.9.5",
"npm": "^6.1.0"
}
}
}
132 changes: 123 additions & 9 deletions src/js/common.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
var defaultPath = null, isSutoSave = true;
var fs = require('fs'),
{ shell } = require('electron'),
{ dialog } = require('electron').remote,
{ dialog, Menu } = require('electron').remote,
{ app } = require('electron').remote,
{ BrowserWindow } = require('electron').remote,
{ BrowserWindow, Menu, MenuItem } = require('electron').remote,
ver = require('../version'),
http = require('http'),
path = require('path');

$(function () {
bootbox.setLocale("zh_CN");
});

function readFile(fileName) {
if (!fileName) return;

Expand All @@ -19,25 +23,34 @@ function readFile(fileName) {

showFileName(fileName);
});

saveRecords(defaultPath);
}

function writeFile(fileName, content) {
if (!fileName) return;

fs.writeFile(fileName, content, function (err) {
if (err) {
alert("An error ocurred creating the file " + err.message)
bootbox.alert("An error ocurred creating the file " + err.message)
} else {
showFileName(fileName);
}
});

saveRecords(fileName);
}

function newDialog() {
if (hasData()) {
if (confirm('新建文件会覆盖当前文件,是否继续?')) {
initRoot();
}
bootbox.confirm({
message: '新建文件会覆盖当前文件,是否继续?',
callback: function (result) {
if (result) {
initRoot();
}
}
});
} else {
initRoot();
}
Expand All @@ -52,6 +65,7 @@ function hasData() {

function initRoot() {
defaultPath = null;
getAppInstance().setTitle('桌面版脑图');
editor.minder.importJson({ "root": { "data": { "text": "中心主题" } }, "template": "filetree", "theme": "fresh-blue" });
editor.minder.select(minder.getRoot(), true);
}
Expand All @@ -71,6 +85,14 @@ function openDialog() {
);
}

function openFileInFolder() {
if (defaultPath != null) {
shell.showItemInFolder(defaultPath);
} else {
bootbox.alert("您当前还未打开任何文件。");
}
}

function saveDialog() {
if (!defaultPath) {
defaultPath = getDefaultPath();
Expand Down Expand Up @@ -177,10 +199,10 @@ function checkVersion() {
var oldVer = ver.version.slice(0, 3).join(', ');

if (newVer != oldVer) {
alert('检测到新版本,请下载新版本。');
bootbox.alert('检测到新版本,请下载新版本。');
shell.openExternal("https://github.com/NaoTu/DesktopNaotu");
} else {
alert('当前没有可用的更新。');
bootbox.alert('当前没有可用的更新。');
}

});
Expand Down Expand Up @@ -315,12 +337,104 @@ function getUserDataDir() {

function showFileName(fileName) {
if (fileName != undefined) {
var title = fileName.substring(fileName.lastIndexOf('\\') + 1) + ' - 桌面版脑图';
var index = fileName.lastIndexOf('\\') > -1 ? fileName.lastIndexOf('\\') : fileName.lastIndexOf('/');
var title = fileName.substring(index + 1) + ' - 桌面版脑图';

getAppInstance().setTitle(title);
}
}

function getAppInstance() {
return BrowserWindow.getAllWindows()[0];
}

function clearRecently() {
var recentlyPath = path.join(getUserDataDir(), '/recently.json');
fs.writeFileSync(recentlyPath, JSON.stringify([]));

// 更新菜单
updateMenus();
}

function saveRecords(filePath) {
var recentlyPath = path.join(getUserDataDir(), '/recently.json');
var time = new Date().format("yyyy-MM-dd hh:mm:ss");

fs.exists(recentlyPath, function (result) {
if (!result) {// 不存在,则创建
fs.writeFileSync(recentlyPath, JSON.stringify([{ 'time': time, 'path': filePath }]));
} else {// 存在,则读取
var list = JSON.parse(fs.readFileSync(recentlyPath));

// 查重
var items = [], selected = null;
for (var i = 0; i < list.length; i++) {
var item = list[i];
if (item.path == filePath) {
selected = item;
} else {
items.push(item);
}
}

if (selected == null) {
items.splice(0, 0, { 'time': time, 'path': filePath });
} else {// 在原来的清单中,则更新
selected.time = time;
items.splice(0, 0, selected);
}

// 更新列表
fs.writeFileSync(recentlyPath, JSON.stringify(items));
}
});

// 更新菜单
updateMenus();
}

function updateMenus() {

var recentlyPath = path.join(getUserDataDir(), '/recently.json');

fs.exists(recentlyPath, function (result) {
if (result) {// 存在,则读取

// 深度复制
var menus = $.extend(true, [], template);

var list = JSON.parse(fs.readFileSync(recentlyPath));

for (var i = 0; i < Math.min(list.length, 5); i++) {// 只显示最近5次
var item = list[i];

// 追加到菜单
menus[0].submenu[4].submenu.splice(menus[0].submenu[4].submenu.length - 2, 0, {
label: item.path,
click: openRecently
});
}

// 更新菜单
var menu = Menu.buildFromTemplate(menus);
Menu.setApplicationMenu(menu);

} else {
var menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);
}
});
}

function openRecently(item) {
var path = item.label;
if (path) {
fs.exists(path, function (result) {
if (result) {// 存在,则读取
readFile(path);
} else {
bootbox.alert("文件路径不存在");
}
});
}
}
17 changes: 17 additions & 0 deletions src/js/menu-bar.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,23 @@ var template = [{
click: openDialog
},
{ type: 'separator' },
{
label: '在文件夹中打开文件(&L)',
accelerator: 'CmdOrCtrl+Shift+O',
click: openFileInFolder
},
{
label: '打开最近的文件(&R)',
submenu: [
{ type: 'separator' },
{
id: 1,
label: '清除最近打开记录',
click: clearRecently
}
]
},
{ type: 'separator' },
{
label: '保存(&S)',
accelerator: 'CmdOrCtrl+S',
Expand Down
2 changes: 1 addition & 1 deletion src/js/open-file.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ body.ondrop = function (e) {
e.preventDefault();
var file = e.dataTransfer.files[0];
if (!file.name.toLowerCase().endsWith(".km")) {
alert("加载文件失败!只允许打开.km格式的文件!")
bootbox.alert("加载文件失败!只允许打开.km格式的文件!")
return false;
}

Expand Down
2 changes: 1 addition & 1 deletion version.js
Original file line number Diff line number Diff line change
@@ -1 +1 @@
exports.version = [1, 0, 0, 290];
exports.version = [1, 0, 1, 321];

0 comments on commit 0e8762b

Please sign in to comment.