| //===-- TVFrame.h - Main window class for llvm-tv ----------------*- C++ -*-==// |
| // |
| // The gui for llvm-tv. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef TVFRAME_H |
| #define TVFRAME_H |
| |
| #include "TVSnapshotList.h" |
| #include "TVWindowIDs.h" |
| #include "wx/wx.h" |
| #include "wx/listctrl.h" |
| #include "wx/splitter.h" |
| #include "wx/treectrl.h" |
| #include "wx/notebook.h" |
| #include "ItemDisplayer.h" |
| #include <string> |
| #include <vector> |
| |
| /// TVTreeCtrl - A specialization of wxTreeCtrl that displays a list of LLVM |
| /// Modules and Functions from a snapshot |
| /// |
| class TVFrame; |
| class TVTreeCtrl : public wxTreeCtrl { |
| TVFrame *myFrame; |
| public: |
| TVTreeCtrl::TVTreeCtrl(wxWindow *parent, TVFrame *frame, const wxWindowID id, |
| const wxPoint& pos = wxDefaultPosition, |
| const wxSize& size = wxDefaultSize, |
| long style = wxTR_HIDE_ROOT | wxTR_DEFAULT_STYLE |
| | wxSUNKEN_BORDER); |
| virtual ~TVTreeCtrl() { } |
| void AddSnapshotsToTree(TVSnapshotList*); |
| void updateSnapshotList(TVSnapshotList*); |
| void OnSelChanged(wxTreeEvent &event); |
| TVTreeItemData *GetSelectedItemData (); |
| |
| DECLARE_EVENT_TABLE(); |
| }; |
| |
| ///==---------------------------------------------------------------------==/// |
| |
| /// TVNotebook - The class which is responsible for the "tab view" |
| /// containing visualizers, which appears on the right-hand side |
| /// of the main LLVM-TV window. |
| /// |
| class TVNotebook : public wxNotebook { |
| std::vector<ItemDisplayer *> displayers; |
| TVTreeItemData *selectedItem; |
| |
| void displaySelectedItemOnPage (int page); |
| public: |
| TVNotebook (wxWindow *_parent) |
| : wxNotebook (_parent, LLVM_TV_NOTEBOOK) { } |
| void OnSelChanged (wxNotebookEvent &event); |
| bool AddItemDisplayer (ItemDisplayer *displayWidget); |
| void SetSelectedItem (TVTreeItemData *newSelectedItem); |
| DECLARE_EVENT_TABLE () |
| }; |
| |
| ///==---------------------------------------------------------------------==/// |
| |
| /// TVFrame - The main application window for LLVM-TV, which is responsible |
| /// for displaying the tree view, tab view, status bar, and menu bar. |
| /// |
| class TVApplication; |
| class TVFrame : public wxFrame { |
| TVApplication *myApp; |
| |
| wxSplitterWindow *splitterWindow; // divides this into left & right sides |
| TVTreeCtrl *myTreeCtrl; // left side - displays tree view of module |
| TVNotebook *notebook; // right side - tab views w/ item displayers |
| |
| void Resize(); |
| public: |
| TVFrame (TVApplication *app, const char *title); |
| void OnExit (wxCommandEvent &event); |
| void CallGraphView (wxCommandEvent &event); |
| void CFGView (wxCommandEvent &event); |
| void BUDSView (wxCommandEvent &event); |
| void TDDSView (wxCommandEvent &event); |
| void LocalDSView (wxCommandEvent &event); |
| void CodeView (wxCommandEvent &event); |
| void OnAbout (wxCommandEvent &event); |
| void OnHelp (wxCommandEvent &event); |
| void OnOpen (wxCommandEvent &event); |
| void OnRefresh (wxCommandEvent &event); |
| void CreateTree(long style, std::vector<TVSnapshot>&); |
| void refreshSnapshotList (); |
| void initializeSnapshotListAndView (); |
| void updateDisplayedItem (TVTreeItemData *newlyDisplayedItem); |
| |
| DECLARE_EVENT_TABLE (); |
| }; |
| |
| #endif // TVFRAME_H |