====== IMainFrame ====== **//Inherited from//** [[class::xlistener|XListener]], **//Inherited by//** NULL **//Friend class//** NULL **//Description//** IMainFrame是XT框架的接口类,它负责监听来自程序底层的消息并对消息作出相应的反应。它提供的接口包括:获取文档;获取命令管理器;响应应用事件;启动命令;执行命令;响应错误信息等。 **//Public interface//** * virtual XDocument * [[imainframe#getdocument|getDocument]](int index) = 0 * virtual XDocument * [[imainframe#getcurrentdocument|getCurrentDocument]]() = 0 * virtual void [[imainframe#setcurrentdocument|setCurrentDocument]](XDocument * doc) = 0 * virtual void [[imainframe#closedocument|closeDocument]](XDocument * doc, bool bCloseDocWindow = true) = 0 * virtual XDocument * [[imainframe#newdocument|newDocument]](const char * docType) = 0 * virtual UIProxy * [[imainframe#newinstance|newInstance]](const char * schemeName) = 0 * virtual const char * [[imainframe#getcurrentschemename|getCurrentSchemeName]]() = 0 * virtual const char * [[imainframe#getclipboardtext|getClipboardText]]() = 0 * virtual XPicker * [[imainframe#getpicker|getPicker]]() = 0 * virtual void [[imainframe#launchcommand|launchCommand]](int cid,const CmdParam * param = 0) = 0 * virtual void [[imainframe#nextcommand|nextCommand]](ulong cid = 0) = 0 * virtual CommandManager * [[imainframe#getcommandmanager|getCommandManager]]() = 0 * virtual ICommandWindow * [[imainframe#getcommandwindow|getCommandWindow]]() = 0 * virtual bool [[imainframe#handleframeaction|handleFrameAction]](int cid, XWord param = XWord()) = 0 * virtual void [[imainframe#onapplicationevent|onApplicationEvent]](EventTypeID et, XWord param = XWord()) = 0 * virtual bool [[imainframe#rungpucalculation|runGPUCalculation]](const char * gcmd, const void * gin, void * gout) = 0 * virtual void [[imainframe#inform|inform]](const char * msg, bool bWarning = false) = 0 * virtual void [[imainframe#message|message]](const char * info,...) = 0 * virtual void [[imainframe#error|error]](ErrorCode e) = 0 * virtual RunMode [[imainframe#getrunmode|getRunMode]]() = 0 * virtual void [[imainframe#about|about]]() = 0 * virtual void [[imainframe#onsetting|onSetting]]() = 0 * virtual int [[imainframe#askquestion|askQuestion]](const char * title,const char * q, bool bEnableCancel) =0 * virtual int [[imainframe#monitorprocess|monitorProcess]](const char * exe, const char * param, const char * title = 0, bool bSilent = false, const char * workdir = 0) = 0 * virtual int [[imainframe#startthread|startThread]](const char * name, ThreadFunc func,XWord param, bool bAsync) = 0 * virtual void [[imainframe#quitthread|quitThread]](const char * name) = 0 * virtual bool [[imainframe#isthreadrunning|isThreadRunning]](const char * name) = 0 * virtual int [[imainframe#startthreadprocess|startThreadProcess]](ThreadData * tdata, const char * exe, LabelVarSection * param, ProcessOutputFunc outputFunc) = 0 * virtual void [[imainframe#notifythreadevent|notifyThreadEvent]](ThreadData * tdata, EventTypeID et, XWord param = XWord(), bool bFlushImmediatly = false) = 0 * virtual void [[imainframe#flushthreadevents|flushThreadEvents]](ThreadData * tdata) = 0 * virtual void [[imainframe#setpicktype|setPickType]](TypeID type) = 0 * virtual bool [[imainframe#isdockvisible|isDockVisible]](TypeID dock) = 0 * virtual void [[imainframe#loadmodule|loadModule]](const char * modules, const char * proxys = "") = 0 * virtual ErrorCode [[imainframe#executescript|executeScript]](const char * script,const char * param, bool bCheckParam = false) = 0 * virtual bool [[imainframe#executecommand|executeCommand]](ICommand * cmd) = 0 * virtual ErrorCode [[imainframe#executebatch|executeBatch]](const char * batch_file) = 0 * virtual void [[imainframe#updateaction|updateAction]](ulong cid, bool bUpdateGroup = false, bool bUpdateEnable = false) = 0 * virtual void [[imainframe#setactionenable|setActionEnable]](ulong cid, bool bEnable) = 0 * virtual void [[imainframe#refreshview|refreshView]]() = 0 * virtual void [[imainframe#previewdialog|previewDialog]](const char * xml) = 0 * virtual void [[imainframe#updatetreeview|updateTreeView]](TreeNode * tItem, bool bRecursive = true) = 0 ---- {{anchor:getdocument}} **virtual XDocument * getDocument(int index) = 0** *function: 获取第index个文档 *parameters: - [i]int index: 文档序号 *return value: 文档指针 {{anchor:getcurrentdocument}} **virtual XDocument * getCurrentDocument() = 0** *function: 获取当前文档 *parameters: NULL *return value: 文档指针 {{anchor:setcurrentdocument}} **virtual void setCurrentDocument(XDocument * doc) = 0** *function: 设置当前文档 *parameters: - [i]XDocument * doc: 文档指针 *return value: 无 {{anchor:closedocument}} **virtual void closeDocument(XDocument * doc, bool bCloseDocWindow = true) = 0** *function: 关闭文档 *parameters: - [i]XDocument * doc: 文档指针 - [i] bool bCloseDocWindow = true: 是否关闭对应的文档窗口 *return value: 无 {{anchor:newdocument}} **virtual XDocument * newDocument(const char * docType) = 0** *function: 新建文档,文档对应的界面代理也会一同构建 *parameters: - [i]const char * docType: 文档类型字符串 *return value: 新建的文档指针 {{anchor:newinstance}} **virtual UIProxy * newInstance(const char * schemeName) = 0** *function: 新建应用实例,应用实例包含文档和对应的界面代理,如实例名没有定义或者相关的动态库没有导入,新建实例会失败 *parameters: - [i]const char * schemeName: 实例名,该实例名必须在配置文件中已定义 *return value: 新建实例的界面代理指针 {{anchor:getcurrentschemename}} **virtual const char * getCurrentSchemeName() = 0** *function: 获取当前文档所属的实例名 *parameters: NULL *return value: 当前文档所属的实例名字符串 {{anchor:getclipboardtext}} **virtual const char * getClipboardText() = 0** *function: 获取剪贴板字符串 *parameters: NULL *return value: 剪贴板内容字符串 {{anchor:getpicker}} **virtual XPicker * getPicker() = 0** *function: 获取选择器 *parameters: NULL *return value: 选择器指针 {{anchor:launchcommand}} **virtual void launchCommand(int cid,const CmdParam * param = 0) = 0** *function: 启动ID为cid的命令,并将命令按照参数param初始化。 *parameters: - [i]int cid: 命令的内部整型ID,它需要由命令管理器通过命令名获取 - [i]const CmdParam * param = 0: 指定命令参数的初始值,如为0,使用命令的默认参数值 *return value: 无 {{anchor:nextcommand}} **virtual void nextCommand(ulong cid = 0) = 0** *function: 启动命令序列中的下一个命令 *parameters: - [i]ulong cid = 0: 指定下一个命令的ID,如为0,则执行命令序列的第一个命令 *return value: 无 {{anchor:getcommandmanager}} **virtual CommandManager * getCommandManager() = 0** *function: 获取命令管理器 *parameters: NULL *return value: 命令管理器指针 {{anchor:getcommandwindow}} **virtual ICommandWindow * getCommandWindow() = 0** *function: 获取命令对话框窗口指针 *parameters: NULL *return value: 命令对话框窗口指针 {{anchor:onapplicationevent}} **virtual void onApplicationEvent(EventTypeID et, XWord param = XWord()) = 0** *function: 同步响应应用事件 *parameters: - [i]EventTypeID et: 事件类型 - [i] XWord param : 事件参数 *return value: 无 {{anchor:rungpucalculation}} **virtual bool runGPUCalculation(const char * gcmd, const void * gin, void * gout) = 0** *function: 运行GPU计算程序 *parameters: - [i]const char * gcmd: GPU计算命令 - [i] const void * gin: GPU计算输入 - [i] void * gout: GPU计算输出 *return value: 成功计算返回true,否则返回false {{anchor:inform}} **virtual void inform(const char * msg, bool bWarning = false) = 0** *function: 向用户显示通知 *parameters: - [i]const char * msg: 通知内容 - [i] bool bWarning = false: 是否为警告 *return value: 无 {{anchor:message}} **virtual void message(const char * info,...) = 0** *function: 在消息对话框显示消息 *parameters: - [i]const char * info: 格式化消息字符串 - [i]...: 消息参数 *return value: 无 {{anchor:error}} **virtual void error(ErrorCode e) = 0** *function: 处理错误 *parameters: - [i]ErrorCode e: 错误代码 *return value: 无 {{anchor:getrunmode}} **virtual RunMode getRunMode() = 0** *function: 获取框架运行模式 *parameters: NULL *return value: 框架运行模式 {{anchor:askquestion}} **virtual int askQuestion(const char * title,const char * q, bool bEnableCancel) =0** *function: 弹出问题对话框,让用户交互选择下一步选项(一般为是、否、取消) *parameters: - [i]const char * title: 问题对话框标题 - [i]const char * q: 问题 - [i] bool bEnableCancel: 是否允许取消选项 *return value: 返回用户的选择码(0对应是,1对应否,2对应取消) {{anchor:monitorprocess}} **virtual int monitorProcess(const char * exe, const char * param, const char * title = 0, bool bSilent = false, const char * workdir = 0) = 0** *function: 启动一个新的进程执行可执行程序并显示进度条监控它的运行过程 *parameters: - [i]const char * exe: 可执行程序路径 - [i] const char * param: 可执行程序命令行参数 - [i] const char * title = 0: 进度条窗口标题 - [i] bool bSilent = false: 是否静默方式执行 - [i] const char * workdir = 0: 可执行程序执行时的工作目录 *return value: 当程序正常执行结束,返回0;当程序被中断退出,返回73;当程序执行错误退出,返回错误码 {{anchor:startthread}} **virtual int startThread(const char * name, ThreadFunc func,XWord param, bool bAsync) = 0** *function: 启动名称为name的线程,该线程执行函数func,参数为param *parameters: - [i]const char * name: 线程名 - [i] ThreadFunc func: 线程要执行的函数 - [i]XWord param: 线程的输入参数 - [i] bool bAsync: 是否异步 *return value: 成功启动返回0,否则返回非0值 {{anchor:quitthread}} **virtual void quitThread(const char * name) = 0** *function: 中止名为name的线程 *parameters: - [i]const char * name: 线程名 *return value: 无 {{anchor:isthreadrunning}} **virtual bool isThreadRunning(const char * name) = 0** *function: 判断名为name的线程是否在运行 *parameters: - [i]const char * name: 线程名 *return value: 如线程在运行返回true,否则返回false {{anchor:startthreadprocess}} **virtual int startThreadProcess(ThreadData * tdata, const char * exe, LabelVarSection * param, ProcessOutputFunc outputFunc) = 0** *function: 在线程内部启动exe进程 *parameters: - [i]ThreadData * tdata: 线程上下文 - [i] const char * exe: 进程exe路径 - [i] LabelVarSection * param: 进程参数 - [i] ProcessOutputFunc outputFunc: 进程输出回调函数 *return value: 成功启动返回0,否则返回错误码 {{anchor:notifythreadevent}} **virtual void notifyThreadEvent(ThreadData * tdata, EventTypeID et, XWord param = XWord(), bool bFlushImmediatly = false) = 0** *function: 向线程事件序列添加事件消息 *parameters: - [i]ThreadData * tdata: 线程上下文 - [i] EventTypeID et: 事件类型 - [i] XWord param = XWord(): 事件参数 - [i] bool bFlushImmediatly = false) = 0: 是否即时发送 *return value: 无 {{anchor:flushthreadevents}} **virtual void flushThreadEvents(ThreadData * tdata) = 0** *function: 向线程发送事件队列中所有消息 *parameters: - [i]ThreadData * tdata: 线程上下文 *return value: 无 {{anchor:setpicktype}} **virtual void setPickType(TypeID type) = 0** *function: 设置选择器的选择对象类型 *parameters: - [i]TypeID type: 选择对象类型ID *return value: 无 {{anchor:isdockvisible}} **virtual bool isDockVisible(TypeID dock) = 0** *function: 判断窗口坞是否可见 *parameters: - [i]TypeID dock: 窗口坞类型 *return value: 窗口坞可见返回true,否则返回false {{anchor:loadmodule}} **virtual void loadModule(const char * modules) = 0** *function: 载入模块 *parameters: - [i]const char * modules: 模块名,可导入多个模块,模块名之间以;分割 *return value: 无 {{anchor:executescript}} **virtual ErrorCode executeScript(const char * script,const char * param, bool bCheckParam = false) = 0** *function: 执行脚本 *parameters: - [i]const char * script: 命令字符串 - [i]const char * param: 参数字符串 - [i] bool bCheckParam = false: 是否检查参数 *return value: 成功执行返回true,否则返回false {{anchor:executecommand}} **virtual bool executeCommand(ICommand * cmd) = 0** *function: 执行命令 *parameters: - [i]ICommand * cmd: 命令指针 *return value: 成功执行返回true,否则返回false {{anchor:executebatch}} **virtual ErrorCode executeBatch(const char * batch_file) = 0** *function: 执行脚本文件 *parameters: - [i]const char * batch_file: 脚本文件名 *return value: 返回错误码,如成功之下返回0 {{anchor:updateaction}} **virtual void updateAction(ulong cid, bool bUpdateGroup = false, bool bUpdateEnable = false) = 0** *function: 更新命令入口控件状态 *parameters: - [i]ulong cid: 入口控件所对应的命令ID - [i] bool bUpdateGroup = false: 是否更新入口控件所属的组(如果已定义组) - [i] bool bUpdateEnable = false: 是否检查更新可用/不可用 *return value: 无 {{anchor:setactionenable}} **virtual void setActionEnable(ulong cid, bool bEnable) = 0** *function: 设置ID为cid的命令所对应的入口控件是否可用 *parameters: - [i]ulong cid: 入口控件所对应的命令ID - [i] bool bEnable: 是否可用 *return value: 无 {{anchor:refreshview}} **virtual void refreshView() = 0** *function: 更新当前文档的所有视图 *parameters: NULL *return value: 无 {{anchor:previewdialog}} **virtual void previewDialog(const char * xml) = 0** *function: 预览对话框 *parameters: - [i]const char * xml: 对话框配置文件 *return value: 无 {{anchor:updatetreeview}} **virtual void updateTreeView(TreeNode * tItem, bool bRecursive = true) = 0** *function: 更新对象树指定节点 *parameters: - [i]TreeNode * tItem: 对象树节点 - [i] bool bRecursive = true: 是否递归更新 *return value: 无