Просмотр исходного кода

feat(option): 当 option 发生改变时发射事件

dzp 1 год назад
Родитель
Сommit
3c74a07f5d

+ 0 - 1
framework/log.tin

@@ -40,7 +40,6 @@ PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #var gLog[PATH]         {$gLog[PATH]/$path};
     #var gLog[initialled]   {true};
 
-    load-lib option;
     option.Define {DebugLog}        {Bool}  {是否开启调试日志}          {false};
     option.Define {DebugLogEcho}    {Bool}  {是否显示调试日志}          {false};
     option.Define {DebugTags}       {Slist} {记录调试日志的 tag 列表}   {};

+ 3 - 0
framework/main.tin

@@ -189,6 +189,9 @@ PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
     #nop 事件驱动编程框架;
     load-module lib/event;
 
+    load-lib option;
+    option.Define {DisableOutput} {Bool} {是否禁止向服务器发送命令} {false};
+
     #nop 提供 TinTin++ 命令行自动补全功能。;
     load-lib tab-completion;
 

+ 1 - 9
mud/pkuxkx/etc/ui-settings.extra.tin

@@ -71,15 +71,7 @@
 };
 
 #nop 热键绑定;
-#list global-key-bindings create {
-    {{key}{\cd}     {meaning}{命令行智能切换}                   {action}{cli.SmartToggle}}
-    {{key}{\co\cd}  {meaning}{禁止/允许命令和触发}              {action}{xtt.ToggleDisableCommands}}
-    {{key}{\cos}    {meaning}{禁止/允许状态栏更新}              {action}{prompt.ToggleSwitch}}
-    {{key}{\cob}    {meaning}{禁止/允许界面宽字符美化}          {action}{beautify.ToggleSwitch}}
-    {{key}{\col}    {meaning}{查看选项列表}                     {action}{option.List}}
-    {{key}{\cod}    {meaning}{开启/关闭调试模式}                {action}{option.Toggle DebugLog}}
-    {{key}{\coD}    {meaning}{开启/关闭调试日志}                {action}{option.Toggle DebugLogEcho}}
-    {{key}{\coe}    {meaning}{开启/关闭命令发送回显}            {action}{option.Toggle EchoCommand}}
+#list global-key-bindings add {
     {{key}{\com}    {meaning}{禁止/允许屏蔽他人移动信息}        {action}{option.Toggle GagMove}}
     {{key}{\cog}    {meaning}{开启/关闭 GMCP 调试信息}          {action}{option.Toggle GMCPDebug}}
     {{key}{\coM}    {meaning}{开启/关闭地图调试模式}            {action}{option.Toggle MapDebug; look}}

+ 7 - 2
plugins/lib/option.tin

@@ -16,6 +16,8 @@ VAR {全局选项字典}  gOptions    {};
 
 load-lib storage;
 
+event.Define {option/changed} {无参} {$MODULE} {选项已更新。本事件只会唤醒和选项名称相对应的钩子};
+
 #func {lib_option.Init} {
     #var gOptions {@storage.GetGlobal{global-options}};
     #return {true};
@@ -130,8 +132,11 @@ load-lib storage;
         #return {};
     };
 
-    #var {gOptions[$option][value]} {$value};
-    storage.SetGlobal {global-options} {$gOptions};
+    #if { "$old[value]" !== "$value" } {
+        #var {gOptions[$option][value]} {$value};
+        storage.SetGlobal {global-options} {$gOptions};
+        event.Emit {option/changed} {option/changed/$option};
+    };
 
     #return {$old[value]};
 };

+ 0 - 3
plugins/lib/xtintin/cmds.tin

@@ -433,9 +433,6 @@ PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 
 
 VAR {用 VAR 关键字定义的 PaoTin++ 变量清单,包含其中文含义} gPaoTinVars {};
 
-load-lib option;
-option.Define {DisableOutput} {Bool} {是否禁止向服务器发送命令} {false};
-
 ///=== {
 // ## xtt.Send <命令> [<参数> ...]
 //    向服务器发送命令。如果命令拦截总开关被打开,则不会真的向服务器发送。