刚刚把LingosHook的代码合成在一起,除了Tag还不能显示外,该好的都好了。明天开始添加Tag的过滤显示功能,可能还要支持一个时间的过滤功能,还要counter的。。唉,越来越多~
新的版本中新增了Tag的功能,分离了词典结果和数据存储,最主要的是在处理对象间,已经处理和显示对象间添加一个Adapter--TriggerObject,这样有效分离了对象间的耦合。TriggerObject可以有效地替换常有的回调函数方式,这样便于理解,也不易出错了。
下面是Tag的管理界面。
下面是TriggerObject的头文件,一看就明白其意义和目的了。回头无聊了再画画关系图了~
class CTriggerObject
{
public:
CTriggerObject();
virtual ~CTriggerObject() {}
void AttachDictObject(CDictObject* obj);
void AttachDisplayObject(CDisplayObject* obj);
void AttachTagObject(CTagObject* obj);
public:
void OnHTMLTrace(const wxString& html);
void OnWordLoad(int wordid, const wxString& word);
void OnWordSave(int wordid, const wxString& word);
void OnWordUpdate(int wordid, const wxString& word);
void OnWordDataGet(const TWordData& data);
void OnWordFound(int wordid, const wxString& word);
void OnResultSave(const TWordResultMap& result);
void OnResultSave(int wordid, const CDictParser* dict, const CDictResult& result);
void OnResultGet(int wordid, const CDictParser* dict, const CDictResult& result);
void OnWordRemove(int wordid);
void OnWordResultGetOver(int wordid, const TWordData& data);
void OnTagLoad(int tagid, const CTagObject::TRecord& record);
void OnTagDefLoad(int tagid, const CTagObject::TRecord& record);
void OnTagInsert(int tag, const CTagObject::TRecord& record);
void OnTagUpdate(int tagid, const CTagObject::TRecord& record);
void OnTagRemove(int tagid);
void OnTagIndexInsert(int tagid, int wordid, const CTagObject::TRecord& record);
void OnTagIndexRemove(int tagid, int wordid, const CTagObject::TRecord& record);
void OnTagFound(int wordid);
void OnTagGet(int tagid, int wordid);
protected:
CDictObject* _objDict;
CDisplayObject* _objDisplay;
CTagObject* _objTag;
};