You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
2.9 KiB
125 lines
2.9 KiB
4 weeks ago
|
const { readFileSync } = require('fs');
|
||
|
|
||
|
/** 包名 */
|
||
|
const PACKAGE_NAME = 'ccc-png-auto-compress';
|
||
|
|
||
|
/**
|
||
|
* i18n
|
||
|
* @param {string} key
|
||
|
* @returns {string}
|
||
|
*/
|
||
|
const translate = (key) => Editor.T(`${PACKAGE_NAME}.${key}`);
|
||
|
|
||
|
/** 扩展名 */
|
||
|
const EXTENSION_NAME = translate('name');
|
||
|
|
||
|
// 注册面板
|
||
|
Editor.Panel.extend({
|
||
|
|
||
|
/** HTML */
|
||
|
template: readFileSync(Editor.url(`packages://${PACKAGE_NAME}/panel.setting/index.html`), 'utf8'),
|
||
|
|
||
|
/** 样式 */
|
||
|
style: readFileSync(Editor.url(`packages://${PACKAGE_NAME}/panel.setting/index.css`), 'utf8'),
|
||
|
|
||
|
/**
|
||
|
* 当面板渲染成功后触发
|
||
|
*/
|
||
|
ready() {
|
||
|
// 创建 Vue 实例
|
||
|
const app = new window.Vue({
|
||
|
|
||
|
/**
|
||
|
* 挂载目标
|
||
|
* @type {string | Element}
|
||
|
*/
|
||
|
el: this.shadowRoot,
|
||
|
|
||
|
/**
|
||
|
* 数据对象
|
||
|
*/
|
||
|
data: {
|
||
|
// 多语言文本
|
||
|
titleLabel: translate('setting'),
|
||
|
repositoryLabel: translate('repository'),
|
||
|
applyLabel: translate('apply'),
|
||
|
// 配置
|
||
|
enabled: false,
|
||
|
excludeFolders: '',
|
||
|
excludeFiles: '',
|
||
|
// 参数
|
||
|
minQuality: 40,
|
||
|
maxQuality: 80,
|
||
|
colors: 256,
|
||
|
speed: 3,
|
||
|
// 按钮状态
|
||
|
isProcessing: false,
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 实例函数
|
||
|
* @type {{ [key: string]: Function }}
|
||
|
*/
|
||
|
methods: {
|
||
|
|
||
|
/**
|
||
|
* 应用按钮回调
|
||
|
* @param {*} event
|
||
|
*/
|
||
|
onApplyBtnClick(event) {
|
||
|
this.saveConfig();
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 读取配置
|
||
|
*/
|
||
|
readConfig() {
|
||
|
Editor.Ipc.sendToMain(`${PACKAGE_NAME}:read-config`, (error, config) => {
|
||
|
if (error || !config) return;
|
||
|
for (const key in config) {
|
||
|
const value = config[key];
|
||
|
if (Array.isArray(value)) {
|
||
|
this[key] = value.join(',').replace(/,/g, ',\n');
|
||
|
} else {
|
||
|
this[key] = value;
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 保存配置
|
||
|
*/
|
||
|
saveConfig() {
|
||
|
if (this.isProcessing) return;
|
||
|
this.isProcessing = true;
|
||
|
// 配置
|
||
|
const excludeFolders = this.excludeFolders.split(',').map(value => value.trim()),
|
||
|
excludeFiles = this.excludeFiles.split(',').map(value => value.trim()),
|
||
|
config = {
|
||
|
enabled: this.enabled,
|
||
|
excludeFolders,
|
||
|
excludeFiles,
|
||
|
// 参数
|
||
|
minQuality: this.minQuality,
|
||
|
maxQuality: this.maxQuality,
|
||
|
colors: this.colors,
|
||
|
speed: this.speed,
|
||
|
};
|
||
|
// 发消息给主进程保存配置
|
||
|
Editor.Ipc.sendToMain(`${PACKAGE_NAME}:save-config`, config, () => {
|
||
|
this.isProcessing = false;
|
||
|
});
|
||
|
},
|
||
|
|
||
|
},
|
||
|
|
||
|
});
|
||
|
|
||
|
// 读取配置
|
||
|
app.readConfig();
|
||
|
|
||
|
}
|
||
|
|
||
|
});
|