| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- #nop vim: set filetype=tt:;
- /*
- 本文件属于 PaoTin++ 的一部分。
- PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
- 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
- */
- #var lib_option[META] {
- {NAME} {全局选项管理}
- {DESC} {为全局选项提供了一个储存位置,并提供一些实用的 API。}
- {AUTHOR} {担子炮}
- };
- #func {lib_option.Init} {
- #class lib/option open;
- #var gOptions {};
- #class lib/option close;
- #return {true};
- };
- #alias {option.Define} {
- #local option {%1};
- #local type {%2};
- #local meaning {%3};
- #local default {%4};
- #if { "$gOptions[$option]" != "" } {
- errLog 选项「$option」已存在,请检查代码。;
- #return;
- };
- #local types {Bool};
- #if { "$type" != "{$types}" } {
- errLog 不能识别的选项类型: 「$type」,目前仅支持选项类型:{$types};
- #return;
- };
- #if { "$type" == "Bool" && "$default" != "{true|false}" } {
- errLog Bool 型的选项值只能是 true 或者 false。;
- #return;
- };
- #var gOptions[$option] {
- {name} {$option}
- {type} {$type}
- {meaning} {$meaning}
- {value} {$default}
- };
- };
- #alias {option.List} {
- #echo {};
- #echo {<128>%+20s %+10s %+30s %+20s} {选项名称} {选项类型} {选项含义} {选项当前值};
- #draw Yellow scroll line 1 1 1 83;
- #local option {};
- #foreach {*gOptions[]} {option} {
- #echo {%+20s %+10s %+30s %+20s}
- {$gOptions[$option][name]}
- {$gOptions[$option][type]}
- {$gOptions[$option][meaning]}
- {$gOptions[$option][value]};
- };
- #echo {};
- };
- #func {option.Get} {
- #local {option} {%1};
- #if { "$gOptions[$option]" == "" } {
- errLog 不存在选项「$option」,请先定义后再使用。;
- #return {};
- };
- #return {$gOptions[$option][value]};
- };
- #func {option.Set} {
- #local {option} {%1};
- #local {value} {%2};
- #local old {$gOptions[$option][value]};
- #if { "$old" == "" } {
- errLog 不存在选项「$option」,请先定义后再使用。;
- #return {};
- };
- #var {gOptions[$option][value]} {$value};
- #return {$old};
- };
- #func {option.IsEnable} {
- #local option {%1};
- #local value {@option.Get{$option}};
- #if { "$value" == "true" } {
- #return 1;
- };
- #else {
- #return 0;
- };
- };
- #func {option.IsDisable} {
- #local option {%1};
- #local value {@option.Get{$option}};
- #if { "$value" == "false" } {
- #return 1;
- };
- #else {
- #return 0;
- };
- };
- #alias {option.Set} {
- #local {option} {%1};
- #local {value} {%2};
- #local _ {@option.Set{$option;{$value}}};
- };
- #func {option.Toggle} {
- #local {option} {%1};
- #local value {@option.Get{$option}};
- #if { "$value" == "true" } {
- option.Disable $option;
- infoLog <160>选项「<130>$option<160>」 <110>已禁用。<070>;
- };
- #elseif { "$value" == "false" } {
- option.Enable $option;
- infoLog <160>选项「<130>$option<160>」 <120>已启用。<070>;
- };
- #return {$value};
- };
- #alias {option.Toggle} {
- #local {option} {%1};
- #local _ {@option.Toggle{$option}};
- };
- #alias {option.Enable} {
- #local {option} {%1};
- option.Set $option {true};
- };
- #alias {option.Disable} {
- #local {option} {%1};
- option.Set $option {false};
- };
|