47 ClassImp(TGMdiMenuBar);
52 TGMdiMenuBar::TGMdiMenuBar(
const TGWindow *p,
int w,
int h) :
53 TGCompositeFrame(p, w, h, kHorizontalFrame)
55 fLHint =
new TGLayoutHints(kLHintsNormal);
56 fLeftHint =
new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 1, 1, 1, 1);
57 fBarHint =
new TGLayoutHints(kLHintsExpandX | kLHintsCenterY, 1, 1, 1, 1);
58 fRightHint =
new TGLayoutHints(kLHintsRight | kLHintsCenterY, 1, 2, 1, 1);
60 fLeft =
new TGCompositeFrame(
this, 10, 10, kHorizontalFrame);
61 fBar =
new TGMenuBar(
this, 1, 20, kHorizontalFrame);
62 fRight =
new TGCompositeFrame(
this, 10, 10, kHorizontalFrame);
64 AddFrame(fLeft, fLeftHint);
65 AddFrame(fBar, fBarHint);
66 AddFrame(fRight, fRightHint);
72 TGMdiMenuBar::~TGMdiMenuBar()
85 void TGMdiMenuBar::AddPopup(TGHotString *s, TGPopupMenu *menu, TGLayoutHints *l)
87 fBar->AddPopup(s, menu, l);
94 void TGMdiMenuBar::AddFrames(TGMdiTitleIcon *icon, TGMdiButtons *buttons)
98 TIter nextl(fLeft->GetList());
99 while ((el = (TGFrameElement *) nextl())) {
100 fLeft->HideFrame(el->fFrame);
102 TIter nextr(fRight->GetList());
103 while ((el = (TGFrameElement *) nextr())) {
104 fRight->HideFrame(el->fFrame);
107 icon->ReparentWindow(fLeft);
108 buttons->ReparentWindow(fRight);
109 fLeft->AddFrame(icon, fLHint);
110 fRight->AddFrame(buttons, fLHint);
116 void TGMdiMenuBar::RemoveFrames(TGMdiTitleIcon *icon, TGMdiButtons *buttons)
119 fLeft->RemoveFrame(icon);
120 fRight->RemoveFrame(buttons);
123 el = (TGFrameElement *)fLeft->GetList()->Last();
125 fLeft->ShowFrame(el->fFrame);
126 el = (TGFrameElement *)fRight->GetList()->Last();
128 fRight->ShowFrame(el->fFrame);
134 void TGMdiMenuBar::ShowFrames(TGMdiTitleIcon *icon, TGMdiButtons *buttons)
138 TIter nextl(fLeft->GetList());
139 while ((el = (TGFrameElement *) nextl())) {
140 fLeft->HideFrame(el->fFrame);
142 TIter nextr(fRight->GetList());
143 while ((el = (TGFrameElement *) nextr())) {
144 fRight->HideFrame(el->fFrame);
147 fLeft->ShowFrame(icon);
148 fRight->ShowFrame(buttons);
154 void TGMdiMenuBar::HideFrames(TGMdiTitleIcon *icon, TGMdiButtons *buttons)
157 fLeft->HideFrame(icon);
158 fRight->HideFrame(buttons);
162 el = (TGFrameElement *)fLeft->GetList()->Last();
164 fLeft->ShowFrame(el->fFrame);
165 el = (TGFrameElement *)fRight->GetList()->Last();
167 fRight->ShowFrame(el->fFrame);
173 void TGMdiMenuBar::SavePrimitive(std::ostream &out, Option_t *option )
176 out <<
" // MDI menu bar" << std::endl;
178 out <<
" TGMdiMenuBar *";
179 out << GetName() <<
" = new TGMdiMenuBar(" << fParent->GetName()
180 <<
"," << GetWidth() <<
"," << GetHeight() <<
");" << std::endl;
181 if (option && strstr(option,
"keep_names"))
182 out <<
" " << GetName() <<
"->SetName(\"" << GetName() <<
"\");" << std::endl;
186 out <<
" TGMenuBar *" << fBar->GetName() <<
" = " << GetName()
187 <<
"->GetMenuBar();" << std::endl;
190 TIter next(fBar->GetList());
192 while ((el = (TGFrameElement *)next())) {
193 el->fFrame->SavePrimitive(out, option);
194 el->fLayout->SavePrimitive(out, option);
195 out <<
");" << std::endl;