Skip to content

zh_CN_秋之盒开放框架API

Shunhong Zhang edited this page Apr 25, 2018 · 14 revisions

未编辑完成

本文档依照SDKV7版本进行编写

目录

3.1 选择窗口
3.2 消息窗口
3.3 加载窗口
3.4 在界面线程运行代码
3.5 获取秋之盒主界面窗口
3.6 获取秋之盒公共资源
3.7 获取主界面语言代码
3.8 显示调试窗口
3.9 重启秋之盒
3.10 关闭APP
3.11 刷新拓展模块列表
3.12 判断当前程序是否以管理员模式运行

1、主要命名空间说明

命名空间 简要说明 代表
A.O 存放开放框架共用的东西 Context抽象类,BuildInfo静态信息类
A.O.Extension 秋之盒标准拓展相关的接口和抽象类 AutumnBoxExtension
A.O.Internal 整个A.O的管理层,普通模块无法对其进行操作 FrameworkManager
A.O.Open 提供给拓展的所有API都在此处 OpenApi.Log,OpenApi.Gui
A.O.Script 秋之盒脚本拓展相关的借口和管理类 ABEScript

2、Context上下文

开放框架的所有API都需要传入Context作为首个参数,这个参数的主要作用在于验证API调用者身份 不过,所有秋之盒标准拓展都继承自Context抽象类,也就是说,你可以传this进去
示例:

//获取秋之盒主窗口,调用者是本模块
OpenApi.Gui.GetMainWindow(this);

3、界面接口

其实我更建议去阅读IGuiApi接口定义 以下所有静态函数均位于A.O.Open.OpenApi.Gui下 以下用O.G代称OpenApi.Gui

3.1 选择窗口

显示一个选择窗口 调用此API将堵塞至用户做出选择

var result = O.G.ShowChoiceBox(this,"标题","内容","左按钮文本(可选,默认取消)","右按钮文本(可选,默认确定)");

3.2 消息窗口

这个很好理解吧? 调用此API将堵塞至用户关闭消息窗口

O.G.ShowMessageBox(this,"标题","内容");

3.3 加载窗口

住:此处的ICompletable参数请自行阅读AutumnBox.Basic.FlowFramework源代码

O.G.ShowLoadingBox(this,可完成的对象);

3.4 在界面线程运行代码

拓展模块运行在非界面线程中,也就是说,在进行与界面相关操作时,会因线程不安全抛出异常,因此可以使用此API来实现在UI线程运行代码

O.G.RunOnUIThread(this,()=>{
    new Window().Show();
});

另外,你也可以使用标准拓展模块的保护方法,这样就无需传入Context
(其内部仍然是调用上面的API,只不过会自动传入this作为Context)

RunOnUIThread(()=>{
    new Window().Show();
});

3.5 获取秋之盒主界面窗口

var window = O.G.GetMainWindow(this);

3.6 获取秋之盒公共资源

此处获取的"公共资源"也就是秋之盒的资源词典中的资源
语言资源键值可查看中文语言资源

var appName = (string)O.G.GetPublicResouce(this,"AppName");
//appName: 秋之盒

如果你不想进行丑陋的显示转换,也可以使用同名的泛型方法

var appName = O.G.GetPublicResource<string>(this,"AppName");

3.7 获取主界面语言代码

var strCode = O.G.CurrentLanguageCode;
//中文环境下,strCode为zh-CN
//其它环境可自行搜索语言地区代码

3.8 显示调试窗口

O.G.ShowDebugWindow(this);

3.9 重启秋之盒

调用此函数,将会询问用户是否同意,如果用户不同意,则抛出UserDeniedException

O.G.RestartApp(this);

另外,你还可以尝试以管理员模式重启秋之盒

O.G.RestartAppAsAdmin(this);

3.10 关闭APP

同样的,会询问用户,用户不同意就抛出异常

O.G.ShutdownApp(this);

3.11 刷新拓展模块列表

此API效果不用我说了

O.G.RefreshExtensionList(this);

3.12 判断当前程序是否以管理员模式运行

var bl = O.G.IsRunAsAdmin(this);
//bl 如果为true,则说明当前程序正在以管理员模式运行
Clone this wiki locally