diff --git a/marketch.sketchplugin/Contents/Sketch/export.cocoascript b/marketch.sketchplugin/Contents/Sketch/export.cocoascript index a070b3a..bc1d16c 100644 --- a/marketch.sketchplugin/Contents/Sketch/export.cocoascript +++ b/marketch.sketchplugin/Contents/Sketch/export.cocoascript @@ -71,6 +71,7 @@ var Marketch = function(){ Marketch.prototype = { /** + * @param expConfig.symbols {boolean} 是否导出所有的 Symbol * @param expConfig.layer {boolean} 是否导出图层为图片 * @param expConfig.artboard {string} 导出画板选项: selected|page|all * @param expConfig.saveSource {boolean} 是否保存sketch源文件 @@ -90,18 +91,6 @@ Marketch.prototype = { //预览需要根据是否导出图层为图片选项决定是否显示导出按钮 this.sketchData.exportEveryLayer = expConfig.layer; - //从所有画板中过滤出symbol - loopObj = doc.pages().objectEnumerator(); - while(loopVar = loopObj.nextObject()){ - var artloops = loopVar.artboards().objectEnumerator(); - while(artboard = artloops.nextObject()){ - // 不导出前缀为 - 且不为 symbol 的图层 - if(artboard.className() == 'MSSymbolMaster'){ - this.allArtboards.addObject(artboard); - } - } - } - //导出选中画板 if(expConfig.artboard == 'selected'){ loopObj = ctx.selection.objectEnumerator(); @@ -139,6 +128,20 @@ Marketch.prototype = { } } + // 导出所有的 Symbol + if (expConfig.symbols) { + loopObj = doc.pages().objectEnumerator(); + while (loopVar = loopObj.nextObject()) { + var artloops = loopVar.artboards().objectEnumerator(); + while (artboard = artloops.nextObject()) { + // 不导出前缀为 '-' 且不为 Symbol 的图层 + if (artboard.className() == 'MSSymbolMaster') { + this.allArtboards.addObject(artboard); + } + } + } + } + //画板不存在 if(this.allArtboards.count() == 0){ util.showTips({content:I18N.NOARTBOARD}); diff --git a/marketch.sketchplugin/Contents/Sketch/util.cocoascript b/marketch.sketchplugin/Contents/Sketch/util.cocoascript index e6cf23d..e77309a 100644 --- a/marketch.sketchplugin/Contents/Sketch/util.cocoascript +++ b/marketch.sketchplugin/Contents/Sketch/util.cocoascript @@ -159,6 +159,7 @@ var util = { 'SELECTEDARTBOARD': '当前选中的画板', 'ARTBOARDONPAGE': '当前页面上的全部画板', 'ALLARTBOARD': '所有画板(会比较慢)', + 'EXPORTSYMBOLS': '导出所有的 Symbol', 'SCALEARTBOARD': '画板导出2倍大小', 'EXPORTEVERYLAYER': '把每个图层作为图片导出', 'SAVESKETCHSOURCE': '保存sketch源文件', @@ -202,6 +203,7 @@ var util = { 'SELECTEDARTBOARD': 'Selected Artboard(s)', 'ARTBOARDONPAGE': 'Artboards on Current Page', 'ALLARTBOARD': 'All Artboards', + 'EXPORTSYMBOLS': 'Export all Symbol', 'SCALEARTBOARD': 'Scale all Artboards as 2x', 'EXPORTEVERYLAYER': 'Export all layers as image', 'SAVESKETCHSOURCE': 'Save Sketch file', diff --git a/marketch.sketchplugin/Contents/Sketch/zip.cocoascript b/marketch.sketchplugin/Contents/Sketch/zip.cocoascript index 3447011..7ceba3f 100644 --- a/marketch.sketchplugin/Contents/Sketch/zip.cocoascript +++ b/marketch.sketchplugin/Contents/Sketch/zip.cocoascript @@ -44,7 +44,8 @@ ExportAsZip.prototype = { layer: expConfig.layer, artboard: artboardType, saveSource: expConfig.saveSource, - scale2x: expConfig.scale2x + scale2x: expConfig.scale2x, + symbols: expConfig.symbols }); zipResult = util.zipFile(marketch.tmpPath.basePath, exportPath); @@ -69,6 +70,7 @@ ExportAsZip.prototype = { var altWin = COSAlertWindow.new(); var items = [I18N.SELECTEDARTBOARD, I18N.ARTBOARDONPAGE, I18N.ALLARTBOARD]; var comboBox = NSComboBox.alloc().initWithFrame(NSMakeRect(0,0,200,25)); + var symbolsBox = NSButton.alloc().initWithFrame(NSMakeRect(0,0,250,14)); var scaleBox = NSButton.alloc().initWithFrame(NSMakeRect(0,0,250,14)); var exportBox = NSButton.alloc().initWithFrame(NSMakeRect(0,0,250,14)); var sourceBox = NSButton.alloc().initWithFrame(NSMakeRect(0,0,250,14)); @@ -81,6 +83,10 @@ ExportAsZip.prototype = { comboBox.addItemsWithObjectValues(items); comboBox.selectItemAtIndex(2); + symbolsBox.setTitle(I18N.EXPORTSYMBOLS); + symbolsBox.setButtonType(NSSwitchButton); + symbolsBox.setState(false); + scaleBox.setTitle(I18N.SCALEARTBOARD); scaleBox.setButtonType(NSSwitchButton); scaleBox.setState(true); @@ -94,6 +100,7 @@ ExportAsZip.prototype = { sourceBox.setState(false); altWin.addAccessoryView(comboBox); + altWin.addAccessoryView(symbolsBox); altWin.addAccessoryView(scaleBox); altWin.addAccessoryView(exportBox); altWin.addAccessoryView(sourceBox); @@ -103,6 +110,8 @@ ExportAsZip.prototype = { button: altWin.runModal(), //需要导出的画板返回值为索引 artboard: comboBox.indexOfSelectedItem(), + //是否导出所有的 Symbol + symbols: symbolsBox.state(), //画板导出2x图 scale2x: scaleBox.state(), //是否导出每个图层的图片