pymud 0.20.1.post1__tar.gz → 0.20.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. {pymud-0.20.1.post1/src/pymud.egg-info → pymud-0.20.2}/PKG-INFO +32 -21
  2. {pymud-0.20.1.post1 → pymud-0.20.2}/README.md +31 -20
  3. {pymud-0.20.1.post1 → pymud-0.20.2}/pyproject.toml +1 -1
  4. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud/extras.py +35 -28
  5. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud/logger.py +4 -2
  6. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud/objects.py +1 -1
  7. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud/protocol.py +3 -3
  8. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud/pymud.py +29 -9
  9. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud/session.py +212 -127
  10. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud/settings.py +7 -5
  11. {pymud-0.20.1.post1 → pymud-0.20.2/src/pymud.egg-info}/PKG-INFO +32 -21
  12. {pymud-0.20.1.post1 → pymud-0.20.2}/LICENSE.txt +0 -0
  13. {pymud-0.20.1.post1 → pymud-0.20.2}/setup.cfg +0 -0
  14. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud/__init__.py +0 -0
  15. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud/__main__.py +0 -0
  16. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud/dialogs.py +0 -0
  17. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud/main.py +0 -0
  18. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud/modules.py +0 -0
  19. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud/pkuxkx.py +0 -0
  20. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud.egg-info/SOURCES.txt +0 -0
  21. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud.egg-info/dependency_links.txt +0 -0
  22. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud.egg-info/entry_points.txt +0 -0
  23. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud.egg-info/requires.txt +0 -0
  24. {pymud-0.20.1.post1 → pymud-0.20.2}/src/pymud.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pymud
3
- Version: 0.20.1.post1
3
+ Version: 0.20.2
4
4
  Summary: a MUD Client written in Python
5
5
  Author-email: "newstart@pkuxkx" <crapex@hotmail.com>
6
6
  Maintainer-email: "newstart@pkuxkx" <crapex@hotmail.com>
@@ -737,12 +737,23 @@ Requires-Dist: prompt-toolkit
737
737
 
738
738
  ## 版本更新信息
739
739
 
740
+ ### 0.20.2 (2024-11-26)
741
+ + 功能调整: MTTS协商中,将256 Color明确写入协商回复。原先仅包含ANSI 和 TrueColor。推测武庙特殊颜色偶尔不正常与此有关(已测试无关)。
742
+ + 功能调整: 修复了纯文本正则处理,目前理论上支持所有ANSI控制代码的处置,以正确响应纯文本触发器。
743
+ + 功能调整: 修改了#var和#global的显示实现,提高了变量打印排列的整齐度和辨识度,以适应长值变量和复杂变量。
744
+ + 问题修复: 修复了单行颜色代码跨行无法显示问题。现在星宿毒草可以正常辨认颜色了。
745
+ + 功能调整: 调整了info/warning/error的显示处理,默认样式进行了修改。
746
+ + 功能新增: 新增菜单选项:打开/关闭美化,以便于更好的在触发器时复制出正确的内容(以前计算可能不准确)。
747
+ + 功能新增: 状态栏的分隔符可以通过本地设置取消了。在pymud.cfg的client中新增设置,将 status_divider 设置为 false 即可。
748
+ + 功能调整: 在pymud.cfg的client中可以支持将buffer_lines设置为0了,表示不清除缓存。
749
+ + 功能新增: 为状态栏显示函数增加了异常保护,再有status_maker出错的时候,状态栏会显示出错信息。
750
+
740
751
  ### 0.20.1 (2024-11-16)
741
752
  + 功能调整: 会话中触发器匹配实现进行部分调整,减少循环次数以提高响应速度
742
753
  + 功能调整: #test / #show 触发器测试功能调整,现在会对使能的和未使能的触发器均进行匹配测试。其中,#show 命令仅测试,而 #test 命令会导致触发器真正响应。
743
754
  + 功能新增: pymud对象新增了一个持续运行的1s的周期定时任务。该任务中会刷新页面显示。可以使用 session.application.addTimerTickCallback 和 session.application.removeTimerTickCallback 来注册和解除定时器回调。
744
755
 
745
- ## 0.20.0 (2024-08-25)
756
+ ### 0.20.0 (2024-08-25)
746
757
  + 功能调整: 将模块主入口函数从__main__.py中移动到main.py中,以使可以在当前目录下,可直接使用pymud,也可使用python -m pymud启动
747
758
  + 功能调整: 使用argsparser标准模块来配置命令行,可以使用 pymud -h 查看命令行具体参数及说明
748
759
  + 功能新增: 命令行参数增加指定启动目录的功能,参数为 -s, --startup_dir。即可以从任意目录通过指定脚本目录方式启动PyMUD了。
@@ -804,21 +815,21 @@ Requires-Dist: prompt-toolkit
804
815
  + 问题修复: 修复 #var 等命令中,若含有中文则等号位置不对齐的问题
805
816
  + 功能调整: 在 #tri 等命令中,当对象的 group 为空时,将不再显示 group 属性,减少无用信息
806
817
 
807
- ## 0.19.4 (2024-04-20)
818
+ ### 0.19.4 (2024-04-20)
808
819
  + 功能调整: info 现在 msg 恢复为可接受任何类型参数,不一定是 str
809
820
  + 功能调整: #var, #global 指令中,现在可以使用参数扩展了,例如 #var max_qi @qi
810
821
  + 功能调整: #var, #global 指令中,现在对字符串会先使用 eval 转换类型,转换失败时使用 str 类型。例如, #var myvar 1 时,myvar类型将为int
811
822
  + 功能调整: 变量替代时,会自动实现类型转化,当被替代变量值为非 str 类型时不会再报错
812
823
  + 问题修复: 修复之前从后向前选择时,无法复制的问题
813
824
 
814
- ## 0.19.3post2 (2024-04-05)
825
+ ### 0.19.3post2 (2024-04-05)
815
826
  + 问题修复: 一次发送多个命令时,发送顺序可能不正确的情况
816
827
  + 功能增加: 新增一个exec_async函数,是exec函数的异步形式。可以在其他会话中异步执行一段代码
817
828
  + 帮助完善: 帮助文档逻辑完善,已完成整个包的内置文档的编写和修改
818
829
  + 注: 由于我没弄太明白 readthedocs.io 网站对于读取github源代码的逻辑,目前只能通过新发布正式版本的形式来使 readthedocs.io 网站的文档中的类参考自动更新。
819
830
  + 问题修复: 修复退出程序时的小bug
820
831
 
821
- ## 0.19.2post2 (2024-03-24)
832
+ ### 0.19.2post2 (2024-03-24)
822
833
  + 错误修复:订正部分错别字、错误帮助、错别格式
823
834
  + 系统完善:完善帮助体系,按reST格式重写所有有关的docstring
824
835
  + 功能调整:session.exec_command / exec_command_async / exec 系列命令调整,现在可以在exec时带变量参数了。例如 session.exec("dazuo @dzpt"),直接调用 dzpt的变量值
@@ -832,14 +843,14 @@ Requires-Dist: prompt-toolkit
832
843
  + 帮助完善: 帮助文档逻辑完善
833
844
  + 实现调整: 改用官方示例的task清除方式,每个任务结束后清除
834
845
 
835
- ## 0.19.1 (2024-03-06)
846
+ ### 0.19.1 (2024-03-06)
836
847
  + 功能新增: 新增鼠标启用禁用功能,以适用于ssh远程情况下的复制功能。F2快捷键可以切换状态。当鼠标禁用时,底部状态栏右侧会显示“鼠标已禁用状态”
837
848
  + 功能新增: 新增快捷键F1会直接通过浏览器打开帮助网址 https://pymud.readthedocs.io/
838
849
  + 功能新增: 新增默认快捷键F3=#ig, F4=#cls, F11=#close, F12=#exit。此几个快捷键通过配置文件进行配置,可以自行定义或修改。F1、F2为写死的系统功能。
839
850
  + 功能调整: 将除#session之外的所有其他#命令实现统一到Session类中实现,这些命令均支持通过Session.exec_command运行
840
851
  + 功能调整: python -m pymud init时,创建的pymud.cfg文件增加了keys字典
841
852
 
842
- ## 0.19.0 (2024-03-01)
853
+ ### 0.19.0 (2024-03-01)
843
854
  + 实现调整: session.info/warning/error处理多行时,会给每一行加上同样颜色
844
855
  + 功能新增: 初次运行时,可以使用python -m pymud init来初始化环境,自动创建目录并在该目录中建立配置文件和样例脚本文件
845
856
  + 实现调整: 将缓冲清除行数的实现调整到SessionBuffer中,减少代码耦合并进一步降低内存占用
@@ -849,7 +860,7 @@ Requires-Dist: prompt-toolkit
849
860
  + 实现调整: 调整COPY-RAW模式复制,即使仅选中行中的部分内容,也自动识别整行(多行模式也是整个多行)
850
861
  + 功能新增: Settings中新增keys字典,用于定义快捷键。可定义快捷键参见prompt_toolkit中Keys的定义。其值为可在session.exec_command运行支持的所有内容。该字典内容可以被pymud.cfg所覆盖。
851
862
 
852
- ## 0.18.4post4 (2024-02-23)
863
+ ### 0.18.4post4 (2024-02-23)
853
864
  + 功能新增:新增Settings.client["buffer_lines"],表示保留的缓冲行数(默认5000)。当Session内容缓冲行数达到该值2倍时(10000行),将截取一半(5000行),后一半内容进行保留,前一半丢弃。此功能是为了减少长时挂机的内存消耗和响应时间。
854
865
  + 功能修复:解决在显示美化(Settings.client["beautify"])打开之后,复制部分文字不能正确判断起始终止的问题。
855
866
  + 功能调整:修改缓冲行数判断逻辑,加快客户端判断响应速度。
@@ -857,21 +868,21 @@ Requires-Dist: prompt-toolkit
857
868
  + 功能调整:将帮助窗口中的链接改到帮助网址: https://pymud.readthedocs.org
858
869
  + 问题修复:修复了随包提供的pkuxkx.py样例脚本中的几处错误
859
870
 
860
- ## 0.18.3 (2024-02-07)
871
+ ### 0.18.3 (2024-02-07)
861
872
  + 功能调整:原#unload时通过调用__del__来实现卸载的时间不可控,现将模块卸载改为调用unload函数。若需卸载时人工清除有关定时器、触发器等,请在Configuration类下新增unload函数(参数仅self),并在其中进行实现
862
873
  + 功能新增:新增会话Variable和全局Global的删除接口。可以通过session.delVariable(name)删除一个变量,可以通过session.delGlobal(name)来删除一个全局Global变量
863
874
 
864
- ## 0.18.2 (2024-02-06)
875
+ ### 0.18.2 (2024-02-06)
865
876
  + 问题修复:修改了定时器实现,以避免出现递归调用超限异常
866
877
  + 问题修复:修改了参数替代时的默认值,从None改为字符串"None",以避免替代时报None异常
867
878
 
868
- ## 0.18.1 (2024-02-05)
879
+ ### 0.18.1 (2024-02-05)
869
880
  + 问题修复:统一处置了task.cancel的参数和create_task的name属性,以适应更低版本的python环境(低至3.7)
870
881
  + 实现调整:为解决同步/异步执行问题,在CodeLine和CodeBlock的实现中,会通过调用命令来判断是否使用同步模式(默认为异步)。#gag、#replace为强制同步,#wa为强制异步。当同时存在时,同步失效,异步执行。
871
882
  + 实现调整:将%line、%raw的访问传递到触发器内部的执行中,避免同步异步问题。
872
883
  + 新增文档:将帮助文档添加到本项目,帮助文档自动同步到 pymud.readthedocs.org (文档内容暂未更新)
873
884
 
874
- ## 0.18.0 (2024-01-24)
885
+ ### 0.18.0 (2024-01-24)
875
886
  + 问题修复:修复了delTrigger/delAlias等等无法删除对象的问题
876
887
  + 功能调整:delTrigger等函数,修改为既可以接受Trigger对象本身,也可以接受其id。其他类似
877
888
  + 功能增加:增加了delTriggers(注意,带s)等函数,可以删除多个指定对象。可接受列表、元组等可迭代对象,并且其内容既可以为对象本身,也可以为id。
@@ -890,13 +901,13 @@ Requires-Dist: prompt-toolkit
890
901
  + 功能调整:从菜单里点击创建会话时,会自动以登录名为本会话创建id变量
891
902
  + 当前已知问题:由于同步/异步执行问题,在SimpleTrigger中,#gag和#replace的执行结果会很奇怪,可能会隐藏和替换掉非触发行。可行的办法为在onSuccess里,调用session.replace进行处理。
892
903
 
893
- ## 0.17.4 (2024-01-08)
904
+ ### 0.17.4 (2024-01-08)
894
905
  + 问题修复:修复了DotDict在dump时出现错误的问题
895
906
  + 问题修复:修改了reconnect的实现方式,修复了断开重连时报错的问题
896
907
  + 功能增加:为Session增加两个事件属性,分别为event_connected和event_disconnected,接受一个带有session参数的函数,在连接和连接断开时触发。
897
908
  + 功能调整:调整了时间显示格式,只显示到秒,不显示毫秒数。
898
909
 
899
- ## 0.17.3 (2024-01-02)
910
+ ### 0.17.3 (2024-01-02)
900
911
  + 问题修复:修复了原有的#repeat功能。命令行#repeat/#rep可以重复输入上一次命令(这个基本没用,主要是我在远程连接时,手机上没有方向键...)
901
912
  + 问题修复:修改定时器的实现方式,真正修复了定时器每reload后会新增一个的bug。
902
913
  + 功能增加:命令行使用#tri, #ali, #cmd, #ti时,除了接受on/off参数外,增加了del参数,可以删除对应的触发器、别名、命令、定时器。例如:#ti tm_test del 可以删除id为“tm_test”的定时器。
@@ -904,7 +915,7 @@ Requires-Dist: prompt-toolkit
904
915
  + 功能调整:调整了Timer和SimpleTimer在#timer时的显示格式。
905
916
  + 实现调整:调整了Session.clean实现中各对象清理的顺序,将任务清除移到了最后。
906
917
 
907
- ## 0.17.2post4 (2023-12-29)
918
+ ### 0.17.2post4 (2023-12-29)
908
919
  + 功能修改:会话菜单 "显示/隐藏命令" 和 "打开/关闭自动重连" 操作后,增加在当前会话中提示状态信息。
909
920
  + 功能修改:Timer实现进行修改,以确保一个定时器仅创建一个任务。
910
921
  + 功能调整:Timer对象在复位Session对象时,也同时复位。目的是确保reload时不重新创建定时器任务。
@@ -913,7 +924,7 @@ Requires-Dist: prompt-toolkit
913
924
  + 问题修复:修复会话特定脚本模块会被其他会话加载的bug。
914
925
  + 问题修复:修复定时器Timer中的bug。
915
926
 
916
- ## 0.17.1post1 (2023-12-27)
927
+ ### 0.17.1post1 (2023-12-27)
917
928
  本版对模块功能进行了整体调整,支持加载/卸载/重载/预加载多个模块,具体内容如下:
918
929
  + 当模块中存在名为Configuration类时,以主模块形式加载,即:自动创建该Configuration类的实例(与原脚本相同)
919
930
  + 当模块中不存在名为Configuration类时,以子模块形式加载,即:仅加载该模块,但不会创建Configuration的实例
@@ -954,7 +965,7 @@ Requires-Dist: prompt-toolkit
954
965
  + 功能修改:auto_reconnect设定目前对正常/异常断开均有效。若设置为True,当连接断开后15s后自动重连
955
966
  + 功能修改:会话菜单下增加“打开/关闭自动重连”子菜单,可以动态切换自动重连是否打开。
956
967
 
957
- ## 0.17.0 (2023-12-24)
968
+ ### 0.17.0 (2023-12-24)
958
969
  + 功能修改:调整修改GMCP数据的wildcards处理方式,恢复为eval,其余不变。(回滚0.16.2版更改)
959
970
  + 功能修改:将本地pymud.cfg文件的读取默认编码调整为utf8,以避免加载出现问题
960
971
  + 问题修复:sessions.py中,修复系统command与会话command重名的问题(这次才发现)
@@ -980,7 +991,7 @@ Requires-Dist: prompt-toolkit
980
991
  + 功能修改:所有匹配类对象的匹配模式patterns支持动态修改,涉及Alias,Trigger,Command。修改方式为直接对其patterns属性赋值。如tri.patterns = aNewPattern
981
992
  + 功能修改:连接/断开连接时刻都会在提示中增加时刻信息,而不论是否异常。
982
993
 
983
- ## 0.16.2 (2023-12-19)
994
+ ### 0.16.2 (2023-12-19)
984
995
  + 功能修改:归一化#命令和非#命令处理,使session.exec_command、exec_command_async、exec_command_after均可以处理#命令,例如session.exec_command("#save")。同时,也可以在命令行使用#all发送#命令,如"#all #save"此类
985
996
  + 功能修改:调整脚本加载与变量自动加载的顺序。当前为连接自动加载时,首先加载变量,然后再加载脚本。目的是使脚本的变化可以覆盖加载的变量内容,而不是反向覆盖。
986
997
  + 功能修改:会话变量保存和加载可以配置是否打开,默认为打开。见Settings.client["var_autosave] 和 Settings.client["var_autoload"]。同理,该配置可以被本地pymud.cfg所覆盖
@@ -989,7 +1000,7 @@ Requires-Dist: prompt-toolkit
989
1000
  + 功能修改:增加GMCP默认处理。当未使用GMCPTrigger对对应的GMCP消息进行处理时,默认使用[GMCP] name: value的形式输出GMCP收到的消息,以便于个人脚本调试。
990
1001
  + 功能修改:修改GMCP数据的处理方式从eval修改为json.load,其余不变。
991
1002
 
992
- ## 0.16.1.post2 (2023-12-12)
1003
+ ### 0.16.1.post2 (2023-12-12)
993
1004
  + 问题修复:修复__init__.py中的__all__变量为字符串
994
1005
  + 功能增加:可以加载自定义Settings。在执行python -m pymud时,会自动从当前目录读取pymud.cfg文件。使用json格式将配置信息写在该文件中即可。支持模块中settings.py里的sessions, client, server, styles, text字段内容。
995
1006
  + 功能增加:增加全局变量集,可以使用session.setGlobal和session.getGlobal进行访问,以便于跨session通信。也可以使用#global在命令行访问
@@ -1010,5 +1021,5 @@ Requires-Dist: prompt-toolkit
1010
1021
  + 功能修改:CodeLine的执行运行处理修改为不删除中间的多余空白
1011
1022
  + 问题修复:修改github项目地址为原pymud地址
1012
1023
 
1013
- ## 0.15.8 (2023-12-05)
1014
- 首次发布到pip,增加模块使用
1024
+ ### 0.15.8 (2023-12-05)
1025
+ 首次发布到pip
@@ -31,12 +31,23 @@
31
31
 
32
32
  ## 版本更新信息
33
33
 
34
+ ### 0.20.2 (2024-11-26)
35
+ + 功能调整: MTTS协商中,将256 Color明确写入协商回复。原先仅包含ANSI 和 TrueColor。推测武庙特殊颜色偶尔不正常与此有关(已测试无关)。
36
+ + 功能调整: 修复了纯文本正则处理,目前理论上支持所有ANSI控制代码的处置,以正确响应纯文本触发器。
37
+ + 功能调整: 修改了#var和#global的显示实现,提高了变量打印排列的整齐度和辨识度,以适应长值变量和复杂变量。
38
+ + 问题修复: 修复了单行颜色代码跨行无法显示问题。现在星宿毒草可以正常辨认颜色了。
39
+ + 功能调整: 调整了info/warning/error的显示处理,默认样式进行了修改。
40
+ + 功能新增: 新增菜单选项:打开/关闭美化,以便于更好的在触发器时复制出正确的内容(以前计算可能不准确)。
41
+ + 功能新增: 状态栏的分隔符可以通过本地设置取消了。在pymud.cfg的client中新增设置,将 status_divider 设置为 false 即可。
42
+ + 功能调整: 在pymud.cfg的client中可以支持将buffer_lines设置为0了,表示不清除缓存。
43
+ + 功能新增: 为状态栏显示函数增加了异常保护,再有status_maker出错的时候,状态栏会显示出错信息。
44
+
34
45
  ### 0.20.1 (2024-11-16)
35
46
  + 功能调整: 会话中触发器匹配实现进行部分调整,减少循环次数以提高响应速度
36
47
  + 功能调整: #test / #show 触发器测试功能调整,现在会对使能的和未使能的触发器均进行匹配测试。其中,#show 命令仅测试,而 #test 命令会导致触发器真正响应。
37
48
  + 功能新增: pymud对象新增了一个持续运行的1s的周期定时任务。该任务中会刷新页面显示。可以使用 session.application.addTimerTickCallback 和 session.application.removeTimerTickCallback 来注册和解除定时器回调。
38
49
 
39
- ## 0.20.0 (2024-08-25)
50
+ ### 0.20.0 (2024-08-25)
40
51
  + 功能调整: 将模块主入口函数从__main__.py中移动到main.py中,以使可以在当前目录下,可直接使用pymud,也可使用python -m pymud启动
41
52
  + 功能调整: 使用argsparser标准模块来配置命令行,可以使用 pymud -h 查看命令行具体参数及说明
42
53
  + 功能新增: 命令行参数增加指定启动目录的功能,参数为 -s, --startup_dir。即可以从任意目录通过指定脚本目录方式启动PyMUD了。
@@ -98,21 +109,21 @@
98
109
  + 问题修复: 修复 #var 等命令中,若含有中文则等号位置不对齐的问题
99
110
  + 功能调整: 在 #tri 等命令中,当对象的 group 为空时,将不再显示 group 属性,减少无用信息
100
111
 
101
- ## 0.19.4 (2024-04-20)
112
+ ### 0.19.4 (2024-04-20)
102
113
  + 功能调整: info 现在 msg 恢复为可接受任何类型参数,不一定是 str
103
114
  + 功能调整: #var, #global 指令中,现在可以使用参数扩展了,例如 #var max_qi @qi
104
115
  + 功能调整: #var, #global 指令中,现在对字符串会先使用 eval 转换类型,转换失败时使用 str 类型。例如, #var myvar 1 时,myvar类型将为int
105
116
  + 功能调整: 变量替代时,会自动实现类型转化,当被替代变量值为非 str 类型时不会再报错
106
117
  + 问题修复: 修复之前从后向前选择时,无法复制的问题
107
118
 
108
- ## 0.19.3post2 (2024-04-05)
119
+ ### 0.19.3post2 (2024-04-05)
109
120
  + 问题修复: 一次发送多个命令时,发送顺序可能不正确的情况
110
121
  + 功能增加: 新增一个exec_async函数,是exec函数的异步形式。可以在其他会话中异步执行一段代码
111
122
  + 帮助完善: 帮助文档逻辑完善,已完成整个包的内置文档的编写和修改
112
123
  + 注: 由于我没弄太明白 readthedocs.io 网站对于读取github源代码的逻辑,目前只能通过新发布正式版本的形式来使 readthedocs.io 网站的文档中的类参考自动更新。
113
124
  + 问题修复: 修复退出程序时的小bug
114
125
 
115
- ## 0.19.2post2 (2024-03-24)
126
+ ### 0.19.2post2 (2024-03-24)
116
127
  + 错误修复:订正部分错别字、错误帮助、错别格式
117
128
  + 系统完善:完善帮助体系,按reST格式重写所有有关的docstring
118
129
  + 功能调整:session.exec_command / exec_command_async / exec 系列命令调整,现在可以在exec时带变量参数了。例如 session.exec("dazuo @dzpt"),直接调用 dzpt的变量值
@@ -126,14 +137,14 @@
126
137
  + 帮助完善: 帮助文档逻辑完善
127
138
  + 实现调整: 改用官方示例的task清除方式,每个任务结束后清除
128
139
 
129
- ## 0.19.1 (2024-03-06)
140
+ ### 0.19.1 (2024-03-06)
130
141
  + 功能新增: 新增鼠标启用禁用功能,以适用于ssh远程情况下的复制功能。F2快捷键可以切换状态。当鼠标禁用时,底部状态栏右侧会显示“鼠标已禁用状态”
131
142
  + 功能新增: 新增快捷键F1会直接通过浏览器打开帮助网址 https://pymud.readthedocs.io/
132
143
  + 功能新增: 新增默认快捷键F3=#ig, F4=#cls, F11=#close, F12=#exit。此几个快捷键通过配置文件进行配置,可以自行定义或修改。F1、F2为写死的系统功能。
133
144
  + 功能调整: 将除#session之外的所有其他#命令实现统一到Session类中实现,这些命令均支持通过Session.exec_command运行
134
145
  + 功能调整: python -m pymud init时,创建的pymud.cfg文件增加了keys字典
135
146
 
136
- ## 0.19.0 (2024-03-01)
147
+ ### 0.19.0 (2024-03-01)
137
148
  + 实现调整: session.info/warning/error处理多行时,会给每一行加上同样颜色
138
149
  + 功能新增: 初次运行时,可以使用python -m pymud init来初始化环境,自动创建目录并在该目录中建立配置文件和样例脚本文件
139
150
  + 实现调整: 将缓冲清除行数的实现调整到SessionBuffer中,减少代码耦合并进一步降低内存占用
@@ -143,7 +154,7 @@
143
154
  + 实现调整: 调整COPY-RAW模式复制,即使仅选中行中的部分内容,也自动识别整行(多行模式也是整个多行)
144
155
  + 功能新增: Settings中新增keys字典,用于定义快捷键。可定义快捷键参见prompt_toolkit中Keys的定义。其值为可在session.exec_command运行支持的所有内容。该字典内容可以被pymud.cfg所覆盖。
145
156
 
146
- ## 0.18.4post4 (2024-02-23)
157
+ ### 0.18.4post4 (2024-02-23)
147
158
  + 功能新增:新增Settings.client["buffer_lines"],表示保留的缓冲行数(默认5000)。当Session内容缓冲行数达到该值2倍时(10000行),将截取一半(5000行),后一半内容进行保留,前一半丢弃。此功能是为了减少长时挂机的内存消耗和响应时间。
148
159
  + 功能修复:解决在显示美化(Settings.client["beautify"])打开之后,复制部分文字不能正确判断起始终止的问题。
149
160
  + 功能调整:修改缓冲行数判断逻辑,加快客户端判断响应速度。
@@ -151,21 +162,21 @@
151
162
  + 功能调整:将帮助窗口中的链接改到帮助网址: https://pymud.readthedocs.org
152
163
  + 问题修复:修复了随包提供的pkuxkx.py样例脚本中的几处错误
153
164
 
154
- ## 0.18.3 (2024-02-07)
165
+ ### 0.18.3 (2024-02-07)
155
166
  + 功能调整:原#unload时通过调用__del__来实现卸载的时间不可控,现将模块卸载改为调用unload函数。若需卸载时人工清除有关定时器、触发器等,请在Configuration类下新增unload函数(参数仅self),并在其中进行实现
156
167
  + 功能新增:新增会话Variable和全局Global的删除接口。可以通过session.delVariable(name)删除一个变量,可以通过session.delGlobal(name)来删除一个全局Global变量
157
168
 
158
- ## 0.18.2 (2024-02-06)
169
+ ### 0.18.2 (2024-02-06)
159
170
  + 问题修复:修改了定时器实现,以避免出现递归调用超限异常
160
171
  + 问题修复:修改了参数替代时的默认值,从None改为字符串"None",以避免替代时报None异常
161
172
 
162
- ## 0.18.1 (2024-02-05)
173
+ ### 0.18.1 (2024-02-05)
163
174
  + 问题修复:统一处置了task.cancel的参数和create_task的name属性,以适应更低版本的python环境(低至3.7)
164
175
  + 实现调整:为解决同步/异步执行问题,在CodeLine和CodeBlock的实现中,会通过调用命令来判断是否使用同步模式(默认为异步)。#gag、#replace为强制同步,#wa为强制异步。当同时存在时,同步失效,异步执行。
165
176
  + 实现调整:将%line、%raw的访问传递到触发器内部的执行中,避免同步异步问题。
166
177
  + 新增文档:将帮助文档添加到本项目,帮助文档自动同步到 pymud.readthedocs.org (文档内容暂未更新)
167
178
 
168
- ## 0.18.0 (2024-01-24)
179
+ ### 0.18.0 (2024-01-24)
169
180
  + 问题修复:修复了delTrigger/delAlias等等无法删除对象的问题
170
181
  + 功能调整:delTrigger等函数,修改为既可以接受Trigger对象本身,也可以接受其id。其他类似
171
182
  + 功能增加:增加了delTriggers(注意,带s)等函数,可以删除多个指定对象。可接受列表、元组等可迭代对象,并且其内容既可以为对象本身,也可以为id。
@@ -184,13 +195,13 @@
184
195
  + 功能调整:从菜单里点击创建会话时,会自动以登录名为本会话创建id变量
185
196
  + 当前已知问题:由于同步/异步执行问题,在SimpleTrigger中,#gag和#replace的执行结果会很奇怪,可能会隐藏和替换掉非触发行。可行的办法为在onSuccess里,调用session.replace进行处理。
186
197
 
187
- ## 0.17.4 (2024-01-08)
198
+ ### 0.17.4 (2024-01-08)
188
199
  + 问题修复:修复了DotDict在dump时出现错误的问题
189
200
  + 问题修复:修改了reconnect的实现方式,修复了断开重连时报错的问题
190
201
  + 功能增加:为Session增加两个事件属性,分别为event_connected和event_disconnected,接受一个带有session参数的函数,在连接和连接断开时触发。
191
202
  + 功能调整:调整了时间显示格式,只显示到秒,不显示毫秒数。
192
203
 
193
- ## 0.17.3 (2024-01-02)
204
+ ### 0.17.3 (2024-01-02)
194
205
  + 问题修复:修复了原有的#repeat功能。命令行#repeat/#rep可以重复输入上一次命令(这个基本没用,主要是我在远程连接时,手机上没有方向键...)
195
206
  + 问题修复:修改定时器的实现方式,真正修复了定时器每reload后会新增一个的bug。
196
207
  + 功能增加:命令行使用#tri, #ali, #cmd, #ti时,除了接受on/off参数外,增加了del参数,可以删除对应的触发器、别名、命令、定时器。例如:#ti tm_test del 可以删除id为“tm_test”的定时器。
@@ -198,7 +209,7 @@
198
209
  + 功能调整:调整了Timer和SimpleTimer在#timer时的显示格式。
199
210
  + 实现调整:调整了Session.clean实现中各对象清理的顺序,将任务清除移到了最后。
200
211
 
201
- ## 0.17.2post4 (2023-12-29)
212
+ ### 0.17.2post4 (2023-12-29)
202
213
  + 功能修改:会话菜单 "显示/隐藏命令" 和 "打开/关闭自动重连" 操作后,增加在当前会话中提示状态信息。
203
214
  + 功能修改:Timer实现进行修改,以确保一个定时器仅创建一个任务。
204
215
  + 功能调整:Timer对象在复位Session对象时,也同时复位。目的是确保reload时不重新创建定时器任务。
@@ -207,7 +218,7 @@
207
218
  + 问题修复:修复会话特定脚本模块会被其他会话加载的bug。
208
219
  + 问题修复:修复定时器Timer中的bug。
209
220
 
210
- ## 0.17.1post1 (2023-12-27)
221
+ ### 0.17.1post1 (2023-12-27)
211
222
  本版对模块功能进行了整体调整,支持加载/卸载/重载/预加载多个模块,具体内容如下:
212
223
  + 当模块中存在名为Configuration类时,以主模块形式加载,即:自动创建该Configuration类的实例(与原脚本相同)
213
224
  + 当模块中不存在名为Configuration类时,以子模块形式加载,即:仅加载该模块,但不会创建Configuration的实例
@@ -248,7 +259,7 @@
248
259
  + 功能修改:auto_reconnect设定目前对正常/异常断开均有效。若设置为True,当连接断开后15s后自动重连
249
260
  + 功能修改:会话菜单下增加“打开/关闭自动重连”子菜单,可以动态切换自动重连是否打开。
250
261
 
251
- ## 0.17.0 (2023-12-24)
262
+ ### 0.17.0 (2023-12-24)
252
263
  + 功能修改:调整修改GMCP数据的wildcards处理方式,恢复为eval,其余不变。(回滚0.16.2版更改)
253
264
  + 功能修改:将本地pymud.cfg文件的读取默认编码调整为utf8,以避免加载出现问题
254
265
  + 问题修复:sessions.py中,修复系统command与会话command重名的问题(这次才发现)
@@ -274,7 +285,7 @@
274
285
  + 功能修改:所有匹配类对象的匹配模式patterns支持动态修改,涉及Alias,Trigger,Command。修改方式为直接对其patterns属性赋值。如tri.patterns = aNewPattern
275
286
  + 功能修改:连接/断开连接时刻都会在提示中增加时刻信息,而不论是否异常。
276
287
 
277
- ## 0.16.2 (2023-12-19)
288
+ ### 0.16.2 (2023-12-19)
278
289
  + 功能修改:归一化#命令和非#命令处理,使session.exec_command、exec_command_async、exec_command_after均可以处理#命令,例如session.exec_command("#save")。同时,也可以在命令行使用#all发送#命令,如"#all #save"此类
279
290
  + 功能修改:调整脚本加载与变量自动加载的顺序。当前为连接自动加载时,首先加载变量,然后再加载脚本。目的是使脚本的变化可以覆盖加载的变量内容,而不是反向覆盖。
280
291
  + 功能修改:会话变量保存和加载可以配置是否打开,默认为打开。见Settings.client["var_autosave] 和 Settings.client["var_autoload"]。同理,该配置可以被本地pymud.cfg所覆盖
@@ -283,7 +294,7 @@
283
294
  + 功能修改:增加GMCP默认处理。当未使用GMCPTrigger对对应的GMCP消息进行处理时,默认使用[GMCP] name: value的形式输出GMCP收到的消息,以便于个人脚本调试。
284
295
  + 功能修改:修改GMCP数据的处理方式从eval修改为json.load,其余不变。
285
296
 
286
- ## 0.16.1.post2 (2023-12-12)
297
+ ### 0.16.1.post2 (2023-12-12)
287
298
  + 问题修复:修复__init__.py中的__all__变量为字符串
288
299
  + 功能增加:可以加载自定义Settings。在执行python -m pymud时,会自动从当前目录读取pymud.cfg文件。使用json格式将配置信息写在该文件中即可。支持模块中settings.py里的sessions, client, server, styles, text字段内容。
289
300
  + 功能增加:增加全局变量集,可以使用session.setGlobal和session.getGlobal进行访问,以便于跨session通信。也可以使用#global在命令行访问
@@ -304,5 +315,5 @@
304
315
  + 功能修改:CodeLine的执行运行处理修改为不删除中间的多余空白
305
316
  + 问题修复:修改github项目地址为原pymud地址
306
317
 
307
- ## 0.15.8 (2023-12-05)
308
- 首次发布到pip,增加模块使用
318
+ ### 0.15.8 (2023-12-05)
319
+ 首次发布到pip
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
 
3
3
  name = "pymud" # Required
4
- version = "0.20.1post1" # Required
4
+ version = "0.20.2" # Required
5
5
  description = "a MUD Client written in Python" # Optional
6
6
  readme = "README.md" # Optional
7
7
  requires-python = ">=3.7"
@@ -40,6 +40,8 @@ from prompt_toolkit.layout.controls import (
40
40
  )
41
41
  from prompt_toolkit.layout.processors import (
42
42
  Processor,
43
+ TransformationInput,
44
+ Transformation
43
45
  )
44
46
  from prompt_toolkit.lexers import Lexer
45
47
  from prompt_toolkit.mouse_events import MouseEvent, MouseEventType
@@ -64,10 +66,11 @@ class MudFormatProcessor(Processor):
64
66
  self.FULL_BLOCKS = set("▂▃▅▆▇▄█")
65
67
  self.SINGLE_LINES = set("┌└├┬┼┴╭╰─")
66
68
  self.DOUBLE_LINES = set("╔╚╠╦╪╩═")
67
- self.START_COLOR_REGX = re.compile(r"^\[[\d;]+m")
68
- self.COLOR_REGX = re.compile(r"\[[\d;]+m")
69
+ self.ALL_COLOR_REGX = re.compile(r"(?:\[[\d;]+m)+")
70
+ self.AVAI_COLOR_REGX = re.compile(r"(?:\[[\d;]+m)+(?!$)")
69
71
  self._color_start = ""
70
72
  self._color_correction = False
73
+ self._color_line_index = 0
71
74
 
72
75
  def width_correction(self, line: str) -> str:
73
76
  new_str = []
@@ -91,48 +94,52 @@ class MudFormatProcessor(Processor):
91
94
  def tab_correction(self, line: str):
92
95
  return line.replace("\t", " " * Settings.client["tabstop"])
93
96
 
94
- def color_correction(self, line: str):
95
- # 注:发现processer处理并非自上而下逐行处理的,因此不能使用这种颜色校正方式。
96
- if self._color_correction:
97
- other = self.COLOR_REGX.findall(line)
98
-
99
- line = f"{self._color_start}{line}"
100
- logging.debug(f"已校正增加颜色标志 {self._color_start}: {line}")
101
-
102
- if other:
103
- self._color_correction = False
104
- self._color_start = ""
105
- logging.debug(f"颜色校正结束: {line}")
106
- else:
107
- color = self.START_COLOR_REGX.findall(line)
108
- if color:
109
- other = self.COLOR_REGX.findall(line)
110
- if len(other) == 1:
111
- self._color_correction = True
112
- self._color_start = color[0]
113
- logging.debug(f"获取到一个颜色开头 {color[0]}: {line}")
114
-
115
- return line
116
-
117
97
  def line_correction(self, line: str):
118
98
  # 处理\r符号(^M)
119
99
  line = self.return_correction(line)
120
100
  # 处理Tab(\r)符号(^I)
121
101
  line = self.tab_correction(line)
122
- # 处理颜色跨行问题。发现processer处理并非自上而下逐行处理的,因此不能使用这种颜色校正方式。
123
- # line = self.color_correction(line)
102
+
124
103
  # 美化(解决中文英文在Console中不对齐的问题)
125
104
  if Settings.client["beautify"]:
126
105
  line = self.width_correction(line)
127
106
 
128
107
  return line
129
108
 
130
- def apply_transformation(self, transformation_input):
109
+ def apply_transformation(self, transformation_input: TransformationInput):
131
110
  # 准备(先还原为str)
132
111
  line = fragment_list_to_text(transformation_input.fragments)
112
+
113
+ # 颜色校正
114
+ thislinecolors = len(self.AVAI_COLOR_REGX.findall(line))
115
+ if thislinecolors == 0:
116
+ lineno = transformation_input.lineno - 1
117
+ while lineno > 0:
118
+ lastline = transformation_input.document.lines[lineno]
119
+ allcolors = self.ALL_COLOR_REGX.findall(lastline)
120
+
121
+ if len(allcolors) == 0:
122
+ lineno = lineno - 1
123
+
124
+ elif len(allcolors) == 1:
125
+ colors = self.AVAI_COLOR_REGX.findall(lastline)
126
+
127
+ if len(colors) == 1:
128
+ line = f"{colors[0]}{line}"
129
+ break
130
+
131
+ else:
132
+ break
133
+
134
+ else:
135
+ break
136
+
137
+ # 其他校正
133
138
  line = self.line_correction(line)
139
+
134
140
  # 处理ANSI标记(生成FormmatedText)
135
141
  fragments = to_formatted_text(ANSI(line))
142
+
136
143
  return Transformation(fragments)
137
144
 
138
145
  class SessionBuffer(Buffer):
@@ -16,7 +16,7 @@ class Logger:
16
16
  :param raw: 记录带ANSI标记的原始内容,还是记录纯文本内容,默认为True,即记录带ANSI标记的原始内容。
17
17
  """
18
18
 
19
- _esc_regx = re.compile(r"\x1b\[[\d;]+[abcdmz]", flags = re.IGNORECASE)
19
+ # _esc_regx = re.compile(r"\x1b\[[\d;]+[abcdmz]", flags = re.IGNORECASE)
20
20
 
21
21
  def __init__(self, name, mode = 'a', encoding = "utf-8", errors = "ignore", raw = False):
22
22
  self._name = name
@@ -147,7 +147,9 @@ class Logger:
147
147
  newline = True
148
148
 
149
149
  if not self._raw:
150
- data = self._esc_regx.sub("", data)
150
+ from .session import Session
151
+ data = Session.PLAIN_TEXT_REGX.sub("", data)
152
+ #data = self._esc_regx.sub("", data)
151
153
 
152
154
  self._stream.write(data)
153
155
 
@@ -609,7 +609,7 @@ class MatchObject(BaseObject):
609
609
 
610
610
  if state.result == self.SUCCESS:
611
611
  self.event.set()
612
-
612
+
613
613
  self.state = state
614
614
  return state
615
615
 
@@ -475,7 +475,7 @@ class MudClientProtocol(Protocol):
475
475
  self._mtts_index += 1
476
476
  self.log.debug('回复第二次MTTS子协商: IAC SB TTYPE IS "XTERM" IAC SE')
477
477
  elif self._mtts_index == 2:
478
- # 第三次收到,回复客户端终端支持的标准功能,此处默认设置775(支持ANSI, VT100, UTF-8, TRUECOLOR, MNES),后续功能完善后再更改
478
+ # 第三次收到,回复客户端终端支持的标准功能,此处默认设置783(支持ANSI, VT100, UTF-8, 256 COLORS, TRUECOLOR, MNES),后续功能完善后再更改
479
479
  # 根据完善的终端模拟功能,修改终端标准
480
480
  # 1 "ANSI" Client supports all common ANSI color codes.
481
481
  # 2 "VT100" Client supports all common VT100 codes.
@@ -489,9 +489,9 @@ class MudClientProtocol(Protocol):
489
489
  # 512 "MNES" Client supports the Mud New Environment Standard for information exchange.
490
490
  # 1024 "MSLP" Client supports the Mud Server Link Protocol for clickable link handling.
491
491
  # 2048 "SSL" Client supports SSL for data encryption, preferably TLS 1.3 or higher.
492
- self.session.write(IAC + SB + TTYPE + IS + b"MTTS 775" + IAC + SE)
492
+ self.session.write(IAC + SB + TTYPE + IS + b"MTTS 783" + IAC + SE)
493
493
  self._mtts_index += 1
494
- self.log.debug('回复第三次MTTS子协商: IAC SB TTYPE IS "MTTS 775" IAC SE')
494
+ self.log.debug('回复第三次MTTS子协商: IAC SB TTYPE IS "MTTS 783" IAC SE')
495
495
  else:
496
496
  self.log.warning(f'收到第{self._mtts_index + 1}次(正常为3次)的MTTS子协商, 将不予应答')
497
497
  else:
@@ -229,7 +229,8 @@ class PyMudApp:
229
229
  content = HSplit(
230
230
  [
231
231
  self.console,
232
- Window(char = "—", height = 1),
232
+ ConditionalContainer(content = Window(char = "—", height = 1), filter = Settings.client["status_divider"]),
233
+ #Window(char = "—", height = 1),
233
234
  Window(content = self.statusView, height = Settings.client["status_height"]),
234
235
  ]
235
236
  ),
@@ -241,7 +242,7 @@ class PyMudApp:
241
242
  content = VSplit(
242
243
  [
243
244
  self.console,
244
- Window(char = "|", width = 1),
245
+ ConditionalContainer(content = Window(char = "|", width = 1), filter = Settings.client["status_divider"]),
245
246
  Window(content = self.statusView, width = Settings.client["status_width"]),
246
247
  ]
247
248
  ),
@@ -311,12 +312,14 @@ class PyMudApp:
311
312
  MenuItem(Settings.text["closesession"], handler = self.act_close_session),
312
313
  MenuItem(Settings.text["autoreconnect"], handler = self.act_autoreconnect),
313
314
  MenuItem("-", disabled=True),
314
- MenuItem(Settings.text["echoinput"], handler = self.act_echoinput),
315
315
  MenuItem(Settings.text["nosplit"], handler = self.act_nosplit),
316
+ MenuItem(Settings.text["echoinput"], handler = self.act_echoinput),
317
+ MenuItem(Settings.text["beautify"], handler = self.act_beautify),
316
318
  MenuItem(Settings.text["copy"], handler = self.act_copy),
317
319
  MenuItem(Settings.text["copyraw"], handler = self.act_copyraw),
318
320
  MenuItem(Settings.text["clearsession"], handler = self.act_clearsession),
319
321
  MenuItem("-", disabled=True),
322
+
320
323
  MenuItem(Settings.text["reloadconfig"], handler = self.act_reload),
321
324
  ]
322
325
  ),
@@ -484,6 +487,7 @@ class PyMudApp:
484
487
 
485
488
  ``注意: 复制的内容仅存在于运行环境的剪贴板中。若使用ssh远程,该复制命令不能访问本地剪贴板。``
486
489
  """
490
+
487
491
  b = self.consoleView.buffer
488
492
  if b.selection_state:
489
493
  cur1, cur2 = b.selection_state.original_cursor_position, b.document.cursor_position
@@ -501,7 +505,8 @@ class PyMudApp:
501
505
  line = self.mudFormatProc.line_correction(b.document.current_line)
502
506
  start = max(0, scol)
503
507
  end = min(ecol, len(line))
504
- line_plain = re.sub(r"\x1b\[[\d;]+[abcdmz]", "", line, flags = re.IGNORECASE).replace("\r", "").replace("\x00", "")
508
+ #line_plain = re.sub(r"\x1b\[[0-9;]*[a-zA-Z]", "", line, flags = re.IGNORECASE).replace("\r", "").replace("\x00", "")
509
+ line_plain = Session.PLAIN_TEXT_REGX.sub("", line).replace("\r", "").replace("\x00", "")
505
510
  #line_plain = re.sub("\x1b\\[[^mz]+[mz]", "", line).replace("\r", "").replace("\x00", "")
506
511
  selection = line_plain[start:end]
507
512
  self.app.clipboard.set_text(selection)
@@ -513,7 +518,8 @@ class PyMudApp:
513
518
  lines = []
514
519
  for row in range(srow, erow + 1):
515
520
  line = b.document.lines[row]
516
- line_plain = re.sub(r"\x1b\[[\d;]+[abcdmz]", "", line, flags = re.IGNORECASE).replace("\r", "").replace("\x00", "")
521
+ #line_plain = re.sub(r"\x1b\[[0-9;]*[a-zA-Z]", "", line, flags = re.IGNORECASE).replace("\r", "").replace("\x00", "")
522
+ line_plain = Session.PLAIN_TEXT_REGX.sub("", line).replace("\r", "").replace("\x00", "")
517
523
  lines.append(line_plain)
518
524
 
519
525
  self.app.clipboard.set_text("\n".join(lines))
@@ -733,6 +739,13 @@ class PyMudApp:
733
739
  new_sess = list(self.sessions.keys())[0]
734
740
  self.activate_session(new_sess)
735
741
 
742
+ def act_beautify(self):
743
+ "菜单: 打开/关闭美化显示"
744
+ val = not Settings.client["beautify"]
745
+ Settings.client["beautify"] = val
746
+ if self.current_session:
747
+ self.current_session.info(f"显示美化已{'打开' if val else '关闭'}!")
748
+
736
749
  def act_echoinput(self):
737
750
  "菜单: 显示/隐藏输入指令"
738
751
  val = not Settings.client["echo_input"]
@@ -879,7 +892,10 @@ class PyMudApp:
879
892
 
880
893
  def get_statusbar_right_text(self):
881
894
  "状态栏右侧内容"
882
- con_str, mouse_support, tri_status = "", "", ""
895
+ con_str, mouse_support, tri_status, beautify = "", "", "", ""
896
+ if not Settings.client["beautify"]:
897
+ beautify = "美化已关闭 "
898
+
883
899
  if not self._mouse_support:
884
900
  mouse_support = "鼠标已禁用 "
885
901
 
@@ -909,13 +925,17 @@ class PyMudApp:
909
925
  else:
910
926
  con_str = "已连接:{:.0f}秒".format(sec)
911
927
 
912
- return "{}{}{} {} {} ".format(mouse_support, tri_status, con_str, Settings.__appname__, Settings.__version__)
928
+ return "{}{}{}{} {} {} ".format(beautify, mouse_support, tri_status, con_str, Settings.__appname__, Settings.__version__)
913
929
 
914
930
  def get_statuswindow_text(self):
915
931
  "状态窗口: status_maker 的内容"
916
932
  text = ""
917
- if self.current_session:
918
- text = self.current_session.get_status()
933
+
934
+ try:
935
+ if self.current_session:
936
+ text = self.current_session.get_status()
937
+ except Exception as e:
938
+ text = f"{e}"
919
939
 
920
940
  return text
921
941