自己动手DIY macos下的绘图软件Pencil之原生菜单
自从进入到Nodejs这个生态后,体验到了更多的可能性。
Pencil是我从Linux时代就开始用的免费开源的原型/流程图软件,它之前版本是基于Firefox的XUL生态开发的,其作者从15年开始基于Electron生态开发新的版本,并于17年发布。
https://www.cnblogs.com/x3d/archive/2012/08/01/2617946.html
原版界面:

新版界面:

最近这一年,有很多要画流程图的需求,但找了一圈发现没有简单趁手的工具,就还是得继续依赖Pencil。
Pencil的UI个人品味感觉很一般,而在Mac下居然没有原生的菜单,这就让我知道Electron支持原生菜单的这颗心很不爽,学要以之致用,终于忍不住从Github上clone了代码自己来DIY一番。
js代码主要居然是加载基于html的script标签加载,而没有用纯粹的js以及模块式管理稍微有点出乎意料。
整个分析下来,可以发挥的地方主要有两点:一是菜单,包括主菜单和右键菜单,改为原生控件;另一个是语言包国际化。
语言包,则使用 Electron 的国际化方案,但Pencil本身没有建立i18n机制,那就意味着所有涉及语言翻译的地方,代码都得修改。
菜单相关的代码部分,它是构建了一套模拟的菜单组件,便于统一技术栈,基本思路是保留主体方法框架,替换其中逻辑代码即可。
在改动代码的过程中,最大的问题是要理解作者的思维方式,他这里有一定偏差,应用的入口虽然是js,但他又基于html去进行js的加载管理,而通过html加载的js的运行环境是在浏览器中,在对象访问过程中,原本的electron.Menu语境要改成remote.Menu才能访问到,其它对象也都要加上remote.。
菜单原本效果:

菜单初步调整的效果如下:



做完这件事,突然似乎有点明白无码科技在研发主线产品的同时,不断产出一些“无关”产品的情景了。
另外,一个人如何提升自己的厚重感呢,无非是用点心,积累、记录。
用了四年的MBP,换了一下起泡的电池和快要烧坏的芯片,就花费掉了一部小米8的价钱,真为小米不值,下一次就买小米笔记本吧。
自己动手DIY macos下的绘图软件Pencil之原生菜单的更多相关文章
- macOS 下安装SDKMAN 软件开发工具包管理器
SDKMAN 软件开发工具包管理器的安装非常简单,只需要打开终端,执行: $ curl -s "https://get.sdkman.io" | bash 就OK了,输出类似如下: ...
- AutoCAD 2019 for mac 非常好用的CAD三维设计绘图软件
macOS下用什么cad软件?mac在哪下载cad软件? AutoCAD 2019 for mac 是一款非常好用的CAD三维设计绘图软件,可应用三维建模.CAD.渲染.动画.视觉特效和数字图像. A ...
- gnuplot: 一种更为简洁的曲线,柱状图绘图软件
gnuplot: 一种更为简洁的曲线,柱状图绘图软件 gnuplot: 一种更为简洁的曲线,柱状图绘图软件 Zhong Xiewei Wed Jun 25 gnuplot简单介绍 关于gnuplot的 ...
- 如何在redhat下安装办公软件(openoffice)
在redhat的client版本中自带有办公软件libreoffice,而在server版的redhat中却没有自带的办公软件,那么,如何在redhat的server版下安装办公软件呢? 方法一:配置 ...
- Linux 下如何安装软件?
http://zhidao.baidu.com/link?url=OkQCOZtVMXhasC8x9zFTZOumsFKf0WW25Ckr2wBF1xO08EsjrBpnMaTBlIAUYdxZ408 ...
- 一款好用的绘图软件gnuplot
漂亮的图片在一篇报告中是必不可少的.这里推荐一款绘图软件Gnuplot. Gnuplot是一种免费分发的绘图工具,可以移植到各种主流平台,无论是在Linux还是在Windows都易于安装使用.最新的版 ...
- Mac 设计师必备的设计绘图软件 推荐与下载
Mac设计师必备的设计绘图软件,为广大设计师推荐一些Mac上实用且强大的软件,使用好的软件,事半功倍,设计出精美的作品. Mac上优秀的设计类软件非常多,绝对不止这几款软件,看看以下内容,希望对你有帮 ...
- macOS下MySQL 8.0 安装与配置教程
一.前言 1.本教程主要内容 适用Homebrew安装MySQL MySQL 8.0 基础适用于配置 MySQL shell管理常用语法示例(用户.权限等) MySQL字符编码配置 MySQL远程访问 ...
- macOS下appstore提示未能完成该操作的解决办法
macOS下App Store下载软件,提示:未能完成该操作.(com.apple.commerce.client 错误 500.) 解决办法: 在终端输入 defaults write com.ap ...
随机推荐
- H5图片压缩上传
1.所用到技术 HTML5 API:filereader.canvas 以及 formdata 目前来说,HTML5的各种新API都在移动端的webkit上得到了较好的实现.本次使用到的FileRea ...
- 初识 阿里云 SSL 证书申请
去你尼玛的大QQ ,一个 SSL 证书,花了我一整天时间,特意在此记载,为后面的小伙伴参考 最近在开发小程序,小程序规定要使用 https 协议,那我能怎么办?去申请啊,傻逼 阿里云的 SSL 证书申 ...
- Android的系统属性:build.propSystemProperties
获取build.prop的键值信息: String sn = SystemProperties.get(SN_INFO); 其中key值为: public static final String SN ...
- 嵌入式单片机STM32应用技术(课本)
目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...
- C#中#region和#endregion的用法
一.用法说明 #region 说明 Program1 #endregion 二.作用 (1)注释其中间的代码段 (2)折叠中间的代码块(折叠后的说明文字为#region后面的说明)
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第5章编程练习2
#include <iostream>using namespace std;const int MAXSIZE=100;int main(){ int a[MAXSIZE]; int s ...
- 检测版本更新,iOS
检测版本更新的方法. //检查新版本 更新 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, ), ^ ...
- jdk各种包安装方式
大家都知道,现在JAVA的发展可谓是如日中天,它覆盖面非常广泛,小到个人PC,大到商业应用都能见到它的身影.以前它是由SUN公司来维护的,现在已经归属到甲骨文旗下了. 今天我们来学习一下Java JD ...
- poj3273 Monthly Expense(二分搜索)
https://vjudge.net/problem/POJ-3273 认真审题,代码仔细!!ans的初值应该是1 #include<iostream> #include<cstdi ...
- 问题7:JavaScript 常用正则示例
1. trim功能(清除字符串两端空格) String.prototype.trim = function() { return this.replace(/(^\s+)|(\s+$)/g, ''); ...