modify key map
This commit is contained in:
parent
abebe9469d
commit
136fa15b3c
@ -16,7 +16,7 @@ define(
|
|||||||
var ProjectViewer = require('../widget/projectviewer');
|
var ProjectViewer = require('../widget/projectviewer');
|
||||||
var TTFManager = require('../widget/ttfmanager');
|
var TTFManager = require('../widget/ttfmanager');
|
||||||
var program = require('../widget/program');
|
var program = require('../widget/program');
|
||||||
var clipboard = require('../widget/clipboard');
|
var controller = require('../widget/controller/default');
|
||||||
|
|
||||||
var string = require('common/string');
|
var string = require('common/string');
|
||||||
|
|
||||||
@ -100,6 +100,7 @@ define(
|
|||||||
var list = project.add(name, program.ttfmanager.get());
|
var list = project.add(name, program.ttfmanager.get());
|
||||||
program.projectViewer.show(list);
|
program.projectViewer.show(list);
|
||||||
program.data.projectName = name;
|
program.data.projectName = name;
|
||||||
|
program.ttfmanager.setState('new');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -180,58 +181,18 @@ define(
|
|||||||
|
|
||||||
// 查看器
|
// 查看器
|
||||||
program.viewer = new GLYFViewer($('#glyf-list'));
|
program.viewer = new GLYFViewer($('#glyf-list'));
|
||||||
|
|
||||||
// 项目管理
|
// 项目管理
|
||||||
|
program.project = project;
|
||||||
program.projectViewer = new ProjectViewer($('#project-list'));
|
program.projectViewer = new ProjectViewer($('#project-list'));
|
||||||
|
|
||||||
// ttf管理
|
// ttf管理
|
||||||
program.ttfmanager = new TTFManager();
|
program.ttfmanager = new TTFManager();
|
||||||
|
|
||||||
|
controller.init(program);
|
||||||
|
|
||||||
program.viewer.on('del', function(e) {
|
// 加载项目
|
||||||
if (e.list) {
|
|
||||||
program.ttfmanager.removeGlyf(e.list);
|
|
||||||
}
|
|
||||||
}).on('copy', function(e) {
|
|
||||||
var list = program.ttfmanager.getGlyf(e.list);
|
|
||||||
clipboard.set(list, 'glyf');
|
|
||||||
}).on('cut', function(e) {
|
|
||||||
var list = program.ttfmanager.getGlyf(e.list);
|
|
||||||
clipboard.set(list, 'glyf');
|
|
||||||
program.ttfmanager.removeGlyf(e.list);
|
|
||||||
}).on('paste', function(e) {
|
|
||||||
var glyfList = clipboard.get('glyf');
|
|
||||||
if (glyfList && glyfList.length) {
|
|
||||||
program.ttfmanager.appendGlyf(glyfList, e.list);
|
|
||||||
}
|
|
||||||
}).on('undo', function(e) {
|
|
||||||
program.ttfmanager.undo();
|
|
||||||
}).on('redo', function(e) {
|
|
||||||
program.ttfmanager.redo();
|
|
||||||
});
|
|
||||||
|
|
||||||
program.projectViewer.on('open', function(e) {
|
|
||||||
var imported = project.get(e.projectName);
|
|
||||||
if (imported) {
|
|
||||||
if (program.ttfmanager.isChanged() && !window.confirm('是否放弃保存当前项目?')) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
program.ttfmanager.set(imported);
|
|
||||||
program.data.projectName = e.projectName;
|
|
||||||
program.viewer.focus();
|
|
||||||
}
|
|
||||||
}).on('del', function(e) {
|
|
||||||
if (e.projectName && window.confirm('是否删除项目?')) {
|
|
||||||
program.projectViewer.show(project.remove(e.projectName));
|
|
||||||
}
|
|
||||||
program.viewer.focus();
|
|
||||||
})
|
|
||||||
|
|
||||||
program.projectViewer.show(project.items());
|
program.projectViewer.show(project.items());
|
||||||
|
|
||||||
|
|
||||||
program.ttfmanager.on('change', function(e) {
|
|
||||||
program.viewer.show(e.ttf);
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
define(
|
define(
|
||||||
function(require) {
|
function(require) {
|
||||||
|
|
||||||
var storage = window.sessionStorage;
|
var storage = window.localStorage;
|
||||||
|
|
||||||
var storageName = 'clipboard.default';
|
var storageName = 'clipboard.default';
|
||||||
|
|
||||||
@ -40,12 +40,19 @@ define(
|
|||||||
if (null !== data) {
|
if (null !== data) {
|
||||||
data = JSON.parse(data);
|
data = JSON.parse(data);
|
||||||
if (data.type == type) {
|
if (data.type == type) {
|
||||||
storage.removeItem(storageName);
|
//storage.removeItem(storageName);
|
||||||
return data.data;
|
return data.data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清空
|
||||||
|
*/
|
||||||
|
clear: function() {
|
||||||
|
storage.removeItem(storageName);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
76
src/fonteditor/widget/controller/default.js
Normal file
76
src/fonteditor/widget/controller/default.js
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
/**
|
||||||
|
* @file default.js
|
||||||
|
* @author mengke01
|
||||||
|
* @date
|
||||||
|
* @description
|
||||||
|
* 默认的页面控制器
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
define(
|
||||||
|
function(require) {
|
||||||
|
|
||||||
|
var clipboard = require('../clipboard');
|
||||||
|
var lang = require('common/lang');
|
||||||
|
|
||||||
|
return {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化控制器
|
||||||
|
*
|
||||||
|
* @param {Object} program 项目组件
|
||||||
|
*/
|
||||||
|
init: function(program) {
|
||||||
|
program.viewer.on('del', function(e) {
|
||||||
|
if (e.list) {
|
||||||
|
program.ttfmanager.removeGlyf(e.list);
|
||||||
|
}
|
||||||
|
}).on('copy', function(e) {
|
||||||
|
var list = program.ttfmanager.getGlyf(e.list);
|
||||||
|
clipboard.set(list, 'glyf');
|
||||||
|
}).on('cut', function(e) {
|
||||||
|
var list = program.ttfmanager.getGlyf(e.list);
|
||||||
|
clipboard.set(list, 'glyf');
|
||||||
|
program.ttfmanager.removeGlyf(e.list);
|
||||||
|
}).on('paste', function(e) {
|
||||||
|
var glyfList = clipboard.get('glyf');
|
||||||
|
if (glyfList && glyfList.length) {
|
||||||
|
program.ttfmanager.appendGlyf(glyfList);
|
||||||
|
}
|
||||||
|
}).on('undo', function(e) {
|
||||||
|
program.ttfmanager.undo();
|
||||||
|
}).on('redo', function(e) {
|
||||||
|
program.ttfmanager.redo();
|
||||||
|
});
|
||||||
|
|
||||||
|
program.projectViewer.on('open', function(e) {
|
||||||
|
var imported = program.project.get(e.projectName);
|
||||||
|
if (imported) {
|
||||||
|
if (program.ttfmanager.isChanged() && !window.confirm('是否放弃保存当前项目?')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
program.ttfmanager.set(imported);
|
||||||
|
program.data.projectName = e.projectName;
|
||||||
|
program.viewer.focus();
|
||||||
|
}
|
||||||
|
}).on('del', function(e) {
|
||||||
|
if (e.projectName && window.confirm('是否删除项目?')) {
|
||||||
|
program.projectViewer.show(program.project.remove(e.projectName));
|
||||||
|
}
|
||||||
|
program.viewer.focus();
|
||||||
|
})
|
||||||
|
|
||||||
|
program.ttfmanager.on('change', function(e) {
|
||||||
|
program.viewer.show(e.ttf);
|
||||||
|
program.viewer.focus();
|
||||||
|
});
|
||||||
|
|
||||||
|
window.onbeforeunload = function() {
|
||||||
|
if (program.ttfmanager.isChanged()) {
|
||||||
|
return '是否放弃保存当前项目?';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
@ -16,8 +16,10 @@ define(
|
|||||||
var GLYF_ITEM_TPL = ''
|
var GLYF_ITEM_TPL = ''
|
||||||
+ '<div data-index="${index}" class="glyf-item ${compound} ${modify}">'
|
+ '<div data-index="${index}" class="glyf-item ${compound} ${modify}">'
|
||||||
+ '<i data-action="del" class="i-del" title="删除"></i>'
|
+ '<i data-action="del" class="i-del" title="删除"></i>'
|
||||||
+ '<svg class="glyf" viewbox="0 0 ${unitsPerEm} ${unitsPerEm}"><g transform="scale(1, -1) translate(0, -${descent}) scale(0.95, 0.95) "><path class="path" ${d}/></g></svg>'
|
+ '<svg class="glyf" viewbox="0 0 ${unitsPerEm} ${unitsPerEm}">'
|
||||||
+ '<div data-field="unicode" class="unicode" title="${unicode}">${unicode}</div><div data-field="name" class="name" title="${name}">${name}</div>'
|
+ '<g transform="scale(1, -1) translate(0, -${descent}) scale(0.95, 0.95) "><path class="path" ${d}/></g></svg>'
|
||||||
|
+ '<div data-field="unicode" class="unicode" title="${unicode}">${unicode}</div>'
|
||||||
|
+ '<div data-field="name" class="name" title="${name}">${name}</div>'
|
||||||
+ '</div>';
|
+ '</div>';
|
||||||
|
|
||||||
var keyMap = {
|
var keyMap = {
|
||||||
@ -93,16 +95,10 @@ define(
|
|||||||
|
|
||||||
|
|
||||||
var me = this;
|
var me = this;
|
||||||
|
me.downlistener = function(e) {
|
||||||
// 绑定键盘事件
|
// 阻止ctrl+A默认事件
|
||||||
me.listener = function(e) {
|
if (65 === e.keyCode && e.ctrlKey) {
|
||||||
|
e.preventDefault();
|
||||||
// 取消选中
|
|
||||||
if (27 === e.keyCode) {
|
|
||||||
e.stopPropagation();
|
|
||||||
me.main.children().removeClass('selected');
|
|
||||||
}
|
|
||||||
else if (65 === e.keyCode && e.ctrlKey) {
|
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
me.main.children().addClass('selected');
|
me.main.children().addClass('selected');
|
||||||
}
|
}
|
||||||
@ -116,6 +112,11 @@ define(
|
|||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
me.fire('redo');
|
me.fire('redo');
|
||||||
}
|
}
|
||||||
|
// 取消选中
|
||||||
|
else if (27 === e.keyCode) {
|
||||||
|
e.stopPropagation();
|
||||||
|
me.main.children().removeClass('selected');
|
||||||
|
}
|
||||||
// 其他操作
|
// 其他操作
|
||||||
else if (keyMap[e.keyCode] && (e.keyCode == 46 || e.ctrlKey)) {
|
else if (keyMap[e.keyCode] && (e.keyCode == 46 || e.ctrlKey)) {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
@ -211,13 +212,13 @@ define(
|
|||||||
|
|
||||||
GlyfViewer.prototype.focus = function() {
|
GlyfViewer.prototype.focus = function() {
|
||||||
if (!this.listening) {
|
if (!this.listening) {
|
||||||
document.body.addEventListener('keyup', this.listener, false);
|
document.body.addEventListener('keydown', this.downlistener);
|
||||||
this.listening = true;
|
this.listening = true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
GlyfViewer.prototype.blur = function() {
|
GlyfViewer.prototype.blur = function() {
|
||||||
document.body.removeEventListener('keyup', this.listener);
|
document.body.removeEventListener('keydown', this.downlistener);
|
||||||
this.listening = false;
|
this.listening = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -14,6 +14,18 @@ define(
|
|||||||
var pathAdjust = require('graphics/pathAdjust');
|
var pathAdjust = require('graphics/pathAdjust');
|
||||||
var History = require('editor/util/History');
|
var History = require('editor/util/History');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清除glyf编辑状态
|
||||||
|
*
|
||||||
|
* @param {Array} glyfList glyf列表
|
||||||
|
* @return {Array} glyf列表
|
||||||
|
*/
|
||||||
|
function clearGlyfTag(glyfList) {
|
||||||
|
glyfList.forEach(function(g) {
|
||||||
|
delete g.modify;
|
||||||
|
});
|
||||||
|
return glyfList;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 合并两个ttfObject,此处仅合并简单字形
|
* 合并两个ttfObject,此处仅合并简单字形
|
||||||
@ -119,6 +131,7 @@ define(
|
|||||||
* @return {this}
|
* @return {this}
|
||||||
*/
|
*/
|
||||||
Manager.prototype.addGlyf = function(glyf) {
|
Manager.prototype.addGlyf = function(glyf) {
|
||||||
|
glyf.modify = 'new';
|
||||||
this.ttf.glyf.push(glyf);
|
this.ttf.glyf.push(glyf);
|
||||||
this.fireChange(true);
|
this.fireChange(true);
|
||||||
return this;
|
return this;
|
||||||
@ -220,6 +233,9 @@ define(
|
|||||||
glyfList = glyfList.slice(l);
|
glyfList = glyfList.slice(l);
|
||||||
}
|
}
|
||||||
if (glyfList.length) {
|
if (glyfList.length) {
|
||||||
|
glyfList.forEach(function(g) {
|
||||||
|
g.modify = 'new';
|
||||||
|
});
|
||||||
Array.prototype.splice.apply(glyf, [glyf.length, 0].concat(glyfList));
|
Array.prototype.splice.apply(glyf, [glyf.length, 0].concat(glyfList));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -283,6 +299,18 @@ define(
|
|||||||
return !!this.changed;
|
return !!this.changed;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置状态
|
||||||
|
* @return {this}
|
||||||
|
*/
|
||||||
|
Manager.prototype.setState = function(state) {
|
||||||
|
if (state == 'new') {
|
||||||
|
this.changed = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Manager.prototype.clearGlyfTag = clearGlyfTag;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 注销
|
* 注销
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user