Inherited from QObject,
Inherited by NULL
Friend class MainFrame,
Description
在XT架构中UIProxy为文档提供界面定制功能,界面代理的设计是为了降低应用层与界面层的耦合。在XT中每一个文档都有自己匹配的界面代理,它必须先通过XDocument的静态接口registerUIProxy注册之后才能使用。一般来说,为一个文档定制界面框架主要需要定制文档主视图(可以是用于3D渲染的GLDrawer,也可以是其他控件)、文档导航树模型(TreeModel)以及文档导航树右键菜单、主视图右键菜单(如GLContextMenu,可选项)。
UIProxy提供了一系列的接口函数以定制文档的界面交互方式。在打开或者导入文档时,XT会调用UIProxy的resetFrame接口重置文档的界面框架;在切换文档时,XT会调用updateFrame接口更新界面框架,在文档视图数据需要更新时,可调用接口updateDocView完成;用户从导航树上单击某个数据对象时,XT会调用listProperty接口列举该对象的属性表单,修改属性则通过接口changeProperty实现;用户导航树的右键菜单由接口setObjectContextMenu实现,双击事件由接口onObjectTreeEvent实现;对功能命令的可用性检查通过接口isCommandEnabled完成;onApplicationEvent接口负责处理属于该文档的应用事件;handleFrameAction接口负责处理面向该文档的框架命令;setWorkScene接口实现文档不同视图的切换(如三维渲染切换到曲线绘制,适用于文档有多个视图的场合,当前的视图类型存放在ViewData中);onUIResize接口实现对尺寸调整事件的响应以调整对文档框架各子控件的尺寸。开发者在定制自己的框架代理时需要重新实现上述接口。
Members
Public interface
MainFrame * m_pFrame
vector<QWidget*> * m_pDocViews
QWidget * m_pCurrentDocView
XTreeModel * m_pDocTreeMdl
XDocument * m_pDoc
XName m_strName
XPath m_strConfigFile
UIProxy(MainFrame * frame,XDocument * doc)
virtual ~UIProxy()
const char * getName() const
void setName(const char * name)
virtual void onCmdCommit()
virtual void activate()
virtual void deactivate()
virtual void onDocLoaded()
virtual void updateDocView(intptr_t updateFlag = 0)
virtual void onCurrentDocViewChange()
virtual bool onApplicationEvent(EventTypeID et, XWord param)
vector<QWidget*> * getDocViews()
int getDocViewCount()
QWidget * getCurrentDocView()
void setCurrentDocView(QWidget * w)
XTreeModel * getTreeModel()
XDocument * getDocument()
void registerEnumString()
virtual XRender * getRender()
virtual void onUIResize()
virtual void listProperty(TypeID type, const XItem * item, TypeID domainType)
virtual void changeProperty(const XItem * item, ulong cid, const QVariant * v)
virtual bool isCommandEnabled(ulong cid)