1 #ifndef __MODELTREEDIALOG_H__ 2 #define __MODELTREEDIALOG_H__ 3 4 class LDLMainModel; 5 class CUIWindowResizer; 6 class CUIColorButton; 7 class ModelWindow; 8 class TCAlert; 9 10 #include <CUI/CUIDialog.h> 11 #include <TCFoundation/TCStlIncludes.h> 12 #include <LDLoader/LDLFileLine.h> 13 #include <LDLib/LDModelTree.h> 14 15 typedef std::vector<HWND> HWndVector; 16 typedef std::map<UINT, LDLLineType> UIntLineTypeMap; 17 typedef std::map<LDLLineType, UINT> LineTypeUIntMap; 18 19 class ModelTreeDialog: public CUIDialog 20 { 21 public: 22 ModelTreeDialog(HINSTANCE hInstance, HWND hParentWindow); 23 void show(ModelWindow *modelWindow, HWND hParentWnd = NULL); 24 protected: 25 virtual LRESULT doClose(void); 26 27 virtual ~ModelTreeDialog(void); 28 virtual void dealloc(void); 29 HTREEITEM addLine(HTREEITEM parent, const LDModelTree *tree); 30 void addChildren(HTREEITEM parent, const LDModelTree *tree); 31 void fillTreeView(void); 32 void refreshTreeView(void); 33 void clearTreeView(void); 34 void setModel(LDLMainModel *model); 35 void setModelWindow(ModelWindow *modelWindow); 36 void modelAlertCallback(TCAlert *alert); 37 void setupLineCheck(UINT checkId, LDLLineType lineType); 38 void updateLineChecks(void); 39 void hideOptions(void); 40 void showOptions(void); 41 void adjustWindow(int widthDelta); 42 void swapWindowText(UCCHAR oldChar, UCCHAR newChar); 43 void selectFromHighlightPath(std::string path); 44 HTREEITEM getChild(HTREEITEM hParent, int index); 45 46 virtual BOOL doInitDialog(HWND /*hKbControl*/); 47 virtual LRESULT doNotify(int controlId, LPNMHDR notification); 48 virtual LRESULT doSize(WPARAM sizeType, int newWidth, int newHeight); 49 virtual LRESULT doCommand(int notifyCode, int commandId, 50 HWND control); 51 virtual LRESULT doTimer(UINT_PTR); 52 virtual void doOK(void); 53 54 BOOL doTreeCopy(void); 55 LRESULT doTreeKeyDown(LPNMTVKEYDOWN notification); 56 LRESULT doTreeCustomDraw(LPNMTVCUSTOMDRAW notification); 57 LRESULT doToggleOptions(void); 58 LRESULT doHighlightCheck(void); 59 LRESULT doSearchChange(void); 60 LRESULT doSearch(LDModelTree::SearchMode mode, bool updateFocus); 61 LRESULT doTreeItemExpanding(LPNMTREEVIEW notification); 62 LRESULT doLineCheck(UINT checkId, LDLLineType lineType); 63 LRESULT doTreeSelChanged(LPNMTREEVIEW notification); 64 LRESULT doHighlightColorChanged(void); 65 void highlightItem(HTREEITEM hItem); 66 void initStatusBar(void); 67 void updateStatusText(void); 68 LDModelTree* getItemTree(HTREEITEM hItem); 69 void addToolToTooltip(int controlId, const ucstring& tooltipText); 70 71 ModelWindow *m_modelWindow; 72 LDLMainModel *m_model; 73 LDModelTree *m_modelTree; 74 HWND m_hTreeView; 75 HWND m_hStatus; 76 HWND m_hTooltip; 77 CUIWindowResizer *m_resizer; 78 HWndVector m_lineChecks; 79 UIntLineTypeMap m_checkLineTypes; 80 LineTypeUIntMap m_checkIds; 81 bool m_optionsShown; 82 bool m_highlight; 83 bool m_clearing; 84 int m_optionsDelta; 85 //HWND m_hResizeGrip; 86 CUIColorButton *m_colorButton; 87 int m_highlightR; 88 int m_highlightG; 89 int m_highlightB; 90 std::string m_searchPath; 91 }; 92 93 #endif // __MODELTREEDIALOG_H__ 94