开始
紧接着的是配置文件,先前使用的是CustomFs.ahk
的前身,实在简陋。
现在我们已经实现的完善的配置文件语法,那么使用它吧!
先看看之前的配置文件吧:
# **除末尾外不要有空行**
groupPath:A_ScriptDir\group
group:
-default
-history
-test
-temp
hisPath:A_ScriptDir\group\history
defaultSave:A_ScriptDir\group\default
noBgc:0
useRandomColor:0
guiBgc:62B0A7
guiTRP:100
showMask:0
maskBgc:000000
maskTRP:100
staticBG:1
pasteIST:0
tip:0
autoSave:1
historyLimit:100
trayClick:1
clipHK:!`
cancelHK:Esc
clearAllHK:!Esc
lastHK:!1
对比现在的:
# 配置文件
group : @./my.txt # 声明一个数组,键名是names,子项是目录名
groupRoot : $A_ScriptDir$\group # 分组根目录
hisPath : $groupRoot$\history # 自动保存目录
defaultSave : $groupRoot$\default # 默认保存目录
# colors
noBgc : 0 # 透明背景
useRandomColor : 0 # 随机背景色(不推荐)
guiBgc : 62B0A7
guiTRP : 100
maskBgc : 000000
maskTRP : 100
# settings
showMask : 0
staticBG : 1 # 显示静态背景
pasteIST : 0 # 立即贴图(不能调整)
tip : 0
autoSave : 1 # 自动保存
historyLimit : 100
trayClick : 1
# hotkeys,只要是Hotkey()可以识别的都行
clipHK : !``
lastHK : !1
cancelHK : Esc
clearAllHK : !Esc
实现
迁移起来十分简单,因为我们需要修改此文件,所以引入的是EX
版本。
cfs := CustomFSEx.Of('./config.txt')
现在可以使用了!
当然不可能这么简单,我们还需要在此基础上封装一下,因为CustomFs的api需要手动写键名,容易出错。
像下面,存入到变量中就好很多。
同时,做一些额外工作,如新建文件夹、修复不合理的配置项。
Meta := {
name: 'MeowPaste'
}
class Configuration {
__New(cfs) {
this.noBgc := cfs.Get('noBgc', false)
this.guiBgc := cfs.Get('guiBgc', 'abcabc')
this.useRandomBgc := cfs.Get('useRandomColor', false)
this.guiTransparent := cfs.Get('guiTRP', 150)
this.maskBgc := cfs.Get('maskBgc', '000000')
this.maskInitTransparent := cfs.Get('maskTRP', 100)
this.showMask := cfs.Get('showMask', false)
this.showStaticBg := cfs.Get('staticBG', true)
this.pasteInstantly := cfs.Get('pasteIST', false)
this.withTip := cfs.Get('tip', false)
this.clickCount := cfs.Get('trayClick', 1)
this.clipHK := cfs.Get('clipHK', '!``')
this.cancelHK := cfs.Get('cancelHK', 'Esc')
this.clearAllHK := cfs.Get('clearAllHK', '!Esc')
this.lastHK := cfs.Get('lastHK', '!1')
this.autoSave := cfs.Get('autoSave', true)
this.historyLimit := cfs.Get('historyLimit', 100)
this.guiOption := '+AlwaysOnTop +ToolWindow -Caption +Border'
this.groupRoot := cfs.Get('groupRoot', Path.Join(A_ScriptDir, 'group'))
this.historyPath := cfs.Get('hisPath', Path.Join(this.groupRoot, 'history'))
this.defaultSavePath := cfs.Get('defaultSave', Path.Join(this.groupRoot, 'group\default'))
this.groupsList := cfs.Get('group').names
this._Fix()
this._EnsureDirectoryExists()
}
_Fix() {
if !this.pasteInstantly && this.noBgc
this.showMask := true
if this.historyLimit < 1
this.autoSave := false
}
_EnsureDirectoryExists() {
for v in := Array(_r := this.groupRoot, this.hisPath, this.defaultSavePath) {
if !DirExist(v) {
DirCreate(v)
logger.Warn('创建文件夹 ' v)
}
}
for v in this.groupsList {
if !DirExist(_r '\' v) {
DirCreate(_r '\' v)
logger.Warn('创建分组文件夹 ' v)
}
}
}
}