#include #include #include #include class TMyFrame { RQ_OBJECT() private: TGMainFrame *fMain; TGCompositeFrame *fSF; TGCompositeFrame *fSF1001; TGVerticalFrame *fV1; TGCanvas *fTreeView; TGListTree *fLt; TGVerticalFrame *fV2; TGCanvas *fCanvas; TGTab *fTab; TGCompositeFrame *fFT1; TGGroupFrame *fFT1G1; TGGroupFrame *fFT1G2; TGCompositeFrame *fFT2; TGGroupFrame *fFT2G1; TList *fTrash; public: TMyFrame(const TGWindow *vWindow, UInt_t vWidth, UInt_t vHeight); virtual ~TMyFrame(); // Slots void FCloseWindow(); // ClassDef(TMyFrame,0) //TMyFrame }; //ClassImp(TMyFrame); //----------------------------------------------------------------------// TMyFrame::TMyFrame(const TGWindow *vWindow, UInt_t vWidth, UInt_t vHeight) { fTrash = new TList; TGLayoutHints *vHints; fMain = new TGMainFrame(vWindow, vWidth, vHeight); fMain->Connect("CloseWindow()", "TMyFrame", this, "FCloseWindow()"); vHints = new TGLayoutHints(kLHintsTop | kLHintsExpandX | kLHintsExpandY); fTrash->Add(vHints); fSF = new TGCompositeFrame(fMain,10,10); fMain->AddFrame(fSF, vHints); fSF1001 = new TGCompositeFrame(fSF,0,0, kHorizontalFrame); fV1 = new TGVerticalFrame(fSF1001, 10, 10, kFixedWidth); fV2 = new TGVerticalFrame(fSF1001, 10, 10); // Create tree fTreeView = new TGCanvas(fV1, 10,10, kSunkenFrame | kDoubleBorder); fLt = new TGListTree(fTreeView->GetViewPort(), 10,10, kHorizontalFrame, fMain->GetWhitePixel()); fLt->Associate(fMain); // fLt->SetAutoTips(); //?? fTreeView->SetContainer(fLt); fLt->SetCanvas(fTreeView); fTreeView->Resize(200,200); vHints = new TGLayoutHints(kLHintsExpandX | kLHintsExpandY); fTrash->Add(vHints); fV1->AddFrame(fTreeView, vHints); // Create tabs in canvas fCanvas = new TGCanvas(fV2, 10, 10, 0); fTab = new TGTab(fCanvas, 20, 20); fTab->Associate(fMain); //? fCanvas->SetContainer(fTab); TGCompositeFrame *vTabFrame; // Tab 1 vTabFrame = fTab->AddTab("Tab 1"); fFT1 = new TGCompositeFrame(vTabFrame, 20, 20, kVerticalFrame); vHints = new TGLayoutHints(kLHintsTop | kLHintsLeft); fTrash->Add(vHints); vTabFrame->AddFrame(fFT1, vHints); vHints = new TGLayoutHints(kLHintsTop | kLHintsLeft); fTrash->Add(vHints); fFT1G1 = new TGGroupFrame(fFT1, "GroupFrame 1 for Tab 1", kFixedWidth | kFixedHeight | kVerticalFrame); fFT1->AddFrame(fFT1G1, vHints); fFT1G1->Resize(300,80); vHints = new TGLayoutHints(kLHintsTop | kLHintsLeft); fTrash->Add(vHints); fFT1G2 = new TGGroupFrame(fFT1, "GroupFrame 2 for Tab 1", kFixedWidth | kFixedHeight | kVerticalFrame); fFT1->AddFrame(fFT1G2, vHints); fFT1G2->Resize(300,200); // Tab 2 vTabFrame = fTab->AddTab("Tab 2"); fFT2 = new TGCompositeFrame(vTabFrame, 20, 20, kVerticalFrame); vHints = new TGLayoutHints(kLHintsExpandX | kLHintsExpandY); fTrash->Add(vHints); vTabFrame->AddFrame(fFT2, vHints); vHints = new TGLayoutHints(kLHintsTop | kLHintsLeft); fTrash->Add(vHints); fFT2G1 = new TGGroupFrame(fFT2, "GroupFrame for Tab 2", kFixedSize | kVerticalFrame); fFT2->AddFrame(fFT2G1, vHints); fFT2G1->Resize(300,100); vHints = new TGLayoutHints(kLHintsExpandX | kLHintsExpandY); fTrash->Add(vHints); fV2->AddFrame(fCanvas, vHints); fV1->Resize(fCanvas->GetDefaultWidth()+100, fV1->GetDefaultHeight()); vHints = new TGLayoutHints(kLHintsLeft | kLHintsExpandY); fTrash->Add(vHints); fSF1001->AddFrame(fV1, vHints); TGVSplitter *vSplitter = new TGVSplitter(fSF1001); vSplitter->SetFrame(fV1, kTRUE); vHints = new TGLayoutHints(kLHintsLeft | kLHintsExpandY); fTrash->Add(vSplitter); fTrash->Add(vHints); fSF1001->AddFrame(vSplitter, vHints); vHints = new TGLayoutHints(kLHintsRight | kLHintsExpandX | kLHintsExpandY); fTrash->Add(vHints); fSF1001->AddFrame(fV2, vHints); fSF1001->Resize(500, 250); fSF->AddFrame(fSF1001, vHints); // Main settings fMain->SetWindowName("TabTest"); fMain->MapSubwindows(); fMain->Resize(fMain->GetDefaultSize()); fMain->SetWMPosition(140,120); fMain->MapWindow(); }//Constructor //----------------------------------------------------------------------// TMyFrame::~TMyFrame() { delete fFT2G1; delete fFT2; delete fFT1G1; delete fFT1G2; delete fFT1; delete fTab;delete fCanvas; delete fV2; delete fTreeView; delete fLt; delete fV1; delete fSF1001; delete fSF; delete fMain; fTrash->Delete(); delete fTrash; }//Destructor //----------------------------------------------------------------------// void TMyFrame::FCloseWindow() { delete this; }//FCloseWindow //----------------------------------------------------------------------// void guitab() { new TMyFrame(gClient->GetRoot(), 400, 220); }