diff --git a/src/fonteditor/ttf/main.js b/src/fonteditor/ttf/main.js index 156b749..38c9560 100644 --- a/src/fonteditor/ttf/main.js +++ b/src/fonteditor/ttf/main.js @@ -16,7 +16,7 @@ define( var ProjectViewer = require('../widget/projectviewer'); var TTFManager = require('../widget/ttfmanager'); var program = require('../widget/program'); - var clipboard = require('../widget/clipboard'); + var controller = require('../widget/controller/default'); var string = require('common/string'); @@ -100,6 +100,7 @@ define( var list = project.add(name, program.ttfmanager.get()); program.projectViewer.show(list); program.data.projectName = name; + program.ttfmanager.setState('new'); } } @@ -180,58 +181,18 @@ define( // 查看器 program.viewer = new GLYFViewer($('#glyf-list')); + // 项目管理 + program.project = project; program.projectViewer = new ProjectViewer($('#project-list')); + // ttf管理 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.ttfmanager.on('change', function(e) { - program.viewer.show(e.ttf); - }); - } }; diff --git a/src/fonteditor/widget/clipboard.js b/src/fonteditor/widget/clipboard.js index ac11e27..71b14ec 100644 --- a/src/fonteditor/widget/clipboard.js +++ b/src/fonteditor/widget/clipboard.js @@ -10,7 +10,7 @@ define( function(require) { - var storage = window.sessionStorage; + var storage = window.localStorage; var storageName = 'clipboard.default'; @@ -40,12 +40,19 @@ define( if (null !== data) { data = JSON.parse(data); if (data.type == type) { - storage.removeItem(storageName); + //storage.removeItem(storageName); return data.data; } } return null; + }, + + /** + * 清空 + */ + clear: function() { + storage.removeItem(storageName); } }; diff --git a/src/fonteditor/widget/controller/default.js b/src/fonteditor/widget/controller/default.js new file mode 100644 index 0000000..66fcb37 --- /dev/null +++ b/src/fonteditor/widget/controller/default.js @@ -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 '是否放弃保存当前项目?'; + } + }; + } + }; + } +); diff --git a/src/fonteditor/widget/glyfviewer.js b/src/fonteditor/widget/glyfviewer.js index 98a032d..53172bb 100644 --- a/src/fonteditor/widget/glyfviewer.js +++ b/src/fonteditor/widget/glyfviewer.js @@ -16,8 +16,10 @@ define( var GLYF_ITEM_TPL = '' + '