123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /**
- * 主要写creator菜单的功能扩展
- * auto zhuangzhuang
- * 借鉴的simple_code编辑器功能
- */
- const { ipcMain,ipcRenderer } = require('electron');
- const MainUtil = require('./main-util');
- /** 包名 */
- const PACKAGE_NAME = require('../package.json').name;
- /** 菜单对照表 取巧了 */
- const MENU_PANEL_TYPE = {"创建节点":"layerMenu","新建":"assetsLayer","create":"layerMenu","new":"assetsLayer"};
- const CCCMENU = {
- /**
- * 读取扩展逻辑文件
- */
- init(){
- this.menuCfgs = {}
- //默认给资源菜单添加
- let menuCfg = {
- layerMenu:[
- { type: 'separator' },
- { label : "绑定脚本", enabled:true, cmd: "cmdCreaorSciprt"},
- ],
- assetsLayer : [
- { type: 'separator' },
- { label : "自动生成模板", enabled:true, cmd: "cmdCreatePopLayer"},
- { label : "自定义模板", enabled:true, cmd: "cmdCreateLayer"},
- ],
- }
- this.menuCfgs["cc-widget-to-code"] = menuCfg;
- // hook 菜单
- if (!Editor.Menu[`__${PACKAGE_NAME}__`]) {
- Editor.Menu[`__${PACKAGE_NAME}__`] = true;
- Editor.Menu = this.hookMenu(Editor.Menu, this.hookMenuFunc.bind(this));
- }
- },
- hookMenu(orginMenu, hookFunc) {
- const menu = function () {
- hookFunc(...arguments);
- return new orginMenu(...arguments);
- };
- let menuProps = Object.getOwnPropertyNames(orginMenu);
- for (let prop of menuProps) {
- const object = Object.getOwnPropertyDescriptor(orginMenu, prop);
- if (object.writable) {
- menu[prop] = orginMenu[prop];
- }
- }
- menu.prototype = orginMenu.prototype;
- return menu;
- },
- hookMenuFunc(template)
- {
- const firstMenu = template[0];
- //Editor.log(firstMenu)
- let menuType = MENU_PANEL_TYPE[firstMenu.label];
- for (const id in this.menuCfgs)
- {
- let menuCfg = this.menuCfgs[id];
- if(!menuCfg) continue;
- let list = menuCfg[menuType];
- if(!list) continue;
- for (let i = 0; i < list.length; i++)
- {
- const item = list[i];
- if(item.type != 'separator'){
- this.applyItem(item,[item.label],firstMenu.params);
- }
- template.push(item);
- }
- }
- },
- applyItem(item,parnetPaths,args){
- if(item.submenu){
- for (let n = 0; n < item.submenu.length; n++)
- {
- let sub_item = item.submenu[n];
- let paths = JSON.parse( JSON.stringify(parnetPaths) )
- paths.push(sub_item.label)
- this.applyItem(sub_item,paths)
- }
- }else {
- if(item.message == null){
- let paths = JSON.parse( JSON.stringify(parnetPaths) )
- let toArgs = item.params || {label:item.label,paths,args:args||{}}
- item.click = ()=>{
- Editor.Ipc.sendToMain(`${PACKAGE_NAME}:${item.cmd}`, toArgs);
- };
- }else{
- let paths = JSON.parse( JSON.stringify(parnetPaths) )
- item.params = item.params || {label:item.label,paths,args:args||{}}
- }
- }
- },
- }
-
- module.exports = CCCMENU;
|