00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "TGuiBldHintsEditor.h"
00013 #include "TGuiBldHintsButton.h"
00014 #include "TGNumberEntry.h"
00015 #include "TGuiBldEditor.h"
00016 #include "TGLabel.h"
00017 #include "TG3DLine.h"
00018 #include "TGuiBldNameFrame.h"
00019 #include "TGuiBldGeometryFrame.h"
00020 #include "TRootGuiBuilder.h"
00021 #include "TGTableLayout.h"
00022
00023
00024
00025
00026
00027
00028
00029
00030 ClassImp(TGuiBldHintsEditor)
00031
00032
00033 class TGuiBldHintsManager : public TGVerticalFrame {
00034
00035 public:
00036 TGuiBldEditor *fEditor;
00037 TGNumberEntry *fColumns;
00038 TGNumberEntry *fRows;
00039 TGuiBldHintsEditor *fHints;
00040 TGMatrixLayout *fMatrix;
00041
00042 UInt_t fPadTop;
00043 UInt_t fPadBottom;
00044 UInt_t fPadLeft;
00045 UInt_t fPadRight;
00046
00047 public:
00048 TGuiBldHintsManager(const TGWindow *p, TGuiBldEditor *editor, TGuiBldHintsEditor *hints);
00049 virtual ~TGuiBldHintsManager() { }
00050 void ChangeSelected(TGFrame *frame);
00051 };
00052
00053
00054 TGuiBldHintsManager::TGuiBldHintsManager(const TGWindow *p, TGuiBldEditor *e,
00055 TGuiBldHintsEditor *hints) :
00056 TGVerticalFrame(p, 1, 1), fEditor(e), fHints(hints)
00057 {
00058
00059
00060 fEditDisabled = kEditDisable;
00061 SetCleanup(kDeepCleanup);
00062 fRows = 0;
00063 fColumns = 0;
00064
00065
00066
00067
00068 TGGroupFrame *fGroupFrame4066 = new TGGroupFrame(this, "Matrix layout");
00069 TGHorizontalFrame *f = new TGHorizontalFrame(fGroupFrame4066);
00070
00071 f->AddFrame(new TGLabel(f," Cols "), new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 2, 2, 2, 2));
00072 fColumns = new TGNumberEntry(f,0.0,4,-1,(TGNumberFormat::EStyle)5);
00073 f->AddFrame(fColumns, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 2, 2, 2, 2));
00074
00075 f->AddFrame(new TGLabel(f," Rows "), new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 2, 2, 2, 2));
00076 fRows = new TGNumberEntry(f,0.0,4,-1,(TGNumberFormat::EStyle)5);
00077 f->AddFrame(fRows, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 2, 2, 2, 2));
00078
00079 fGroupFrame4066->AddFrame(f, new TGLayoutHints(kLHintsExpandX | kLHintsCenterY, 2, 2, 2, 2));
00080
00081 TGTextButton *fAppButton = new TGTextButton(fGroupFrame4066, " Apply ");
00082 fGroupFrame4066->AddFrame(fAppButton, new TGLayoutHints(kLHintsExpandX | kLHintsCenterY, 5, 5, 2, 2));
00083
00084 AddFrame(fGroupFrame4066, new TGLayoutHints(kLHintsTop | kLHintsExpandX));
00085
00086 fAppButton->Connect("Clicked()", "TGuiBldHintsEditor", fHints, "MatrixLayout()");
00087
00088
00089 fRows->GetNumberEntry()->Connect("ReturnPressed()", "TGuiBldHintsEditor", fHints, "MatrixLayout()");
00090 fColumns->GetNumberEntry()->Connect("ReturnPressed()", "TGuiBldHintsEditor", fHints, "MatrixLayout()");
00091 fRows->SetLimits(TGNumberFormat::kNELLimitMin, 1);
00092 fColumns->SetLimits(TGNumberFormat::kNELLimitMin, 1);
00093
00094 fPadTop = 2;
00095 fPadBottom = 2;
00096 fPadLeft = 2;
00097 fPadRight = 2;
00098
00099 MapSubwindows();
00100 Resize();
00101 MapWindow();
00102 }
00103
00104
00105 void TGuiBldHintsManager::ChangeSelected(TGFrame *frame)
00106 {
00107
00108
00109 fMatrix = 0;
00110
00111 if (!frame) {
00112 UnmapWindow();
00113 fHints->fLayButton->SetEnabled(kFALSE);
00114 fHints->fLayButton->SetDown(kFALSE);
00115 fRows->SetNumber(0);
00116 fColumns->SetNumber(0);
00117 return;
00118 }
00119
00120 Bool_t enable = frame->InheritsFrom(TGCompositeFrame::Class()) &&
00121 !(frame->GetEditDisabled() & kEditDisableLayout);
00122
00123 if (!enable) {
00124 UnmapWindow();
00125 fHints->fLayButton->SetEnabled(kFALSE);
00126 fHints->fLayButton->SetDown(kFALSE);
00127 fRows->SetNumber(0);
00128 fColumns->SetNumber(0);
00129 } else {
00130 TGCompositeFrame *comp = (TGCompositeFrame*)frame;
00131 TGLayoutManager *lm = comp->GetLayoutManager();
00132
00133 if (!lm) {
00134 return;
00135 }
00136 Int_t n = comp->GetList()->GetEntries();
00137
00138 MapWindow();
00139 fHints->fLayButton->SetEnabled(kTRUE);
00140 fHints->fLayButton->SetDown(kFALSE);
00141
00142 if (lm->IsA() == TGVerticalLayout::Class()) {
00143 fRows->SetNumber(n);
00144 fColumns->SetNumber(1);
00145 } else if (lm->IsA() == TGHorizontalLayout::Class()) {
00146 fColumns->SetNumber(n);
00147 fRows->SetNumber(1);
00148 } else if (lm->IsA() == TGMatrixLayout::Class()) {
00149 fMatrix = (TGMatrixLayout*)lm;
00150
00151 fColumns->SetNumber(fMatrix->fColumns);
00152 fRows->SetNumber(fMatrix->fRows);
00153 }
00154 }
00155 DoRedraw();
00156 }
00157
00158
00159
00160 TGuiBldHintsEditor::TGuiBldHintsEditor(const TGWindow *p, TGuiBldEditor *e) :
00161 TGVerticalFrame(p, 1, 1), fEditor(e)
00162 {
00163
00164
00165 SetCleanup(kDeepCleanup);
00166
00167 fBuilder = (TRootGuiBuilder*)TRootGuiBuilder::Instance();
00168
00169 TGVerticalFrame *frame3 = new TGVerticalFrame(this,262,18,kVerticalFrame);
00170
00171
00172 TGHorizontalFrame *framez399 = new TGHorizontalFrame(frame3,123,40,kHorizontalFrame);
00173 fLayButton = new TGCheckButton(framez399,"");
00174 framez399->AddFrame(fLayButton, new TGLayoutHints(kLHintsLeft | kLHintsTop,0,1,2,2));
00175 TGLabel *framez401 = new TGLabel(framez399,"Layout subframes");
00176 framez399->AddFrame(framez401, new TGLayoutHints(kLHintsLeft | kLHintsCenterX | kLHintsTop,1,1,2,2));
00177
00178 frame3->AddFrame(framez399, new TGLayoutHints(kLHintsLeft | kLHintsCenterX | kLHintsTop,1,1,1,1));
00179
00180 fLayButton->Connect("Toggled(Bool_t)", "TGuiBldHintsEditor", this, "LayoutSubframes(Bool_t)");
00181
00182
00183
00184
00185 fPaddingFrame = new TGGroupFrame(frame3, "Padding");
00186 fPaddingFrame->SetLayoutManager(new TGTableLayout(fPaddingFrame, 2, 4));
00187
00188 fPaddingFrame->AddFrame(new TGLabel(fPaddingFrame,"Top "),
00189 new TGTableLayoutHints(0, 1, 0, 1,
00190 kLHintsRight | kLHintsCenterY, 0, 2, 2, 2));
00191 fPadTop = new TGNumberEntry(fPaddingFrame,0.0,4,-1,(TGNumberFormat::EStyle) 5);
00192 fPaddingFrame->AddFrame(fPadTop, new TGTableLayoutHints(1, 2, 0, 1,
00193 kLHintsLeft | kLHintsCenterY, 0, 0, 2, 2));
00194
00195 fPaddingFrame->AddFrame(new TGLabel(fPaddingFrame," Left "),
00196 new TGTableLayoutHints(2, 3, 0, 1,
00197 kLHintsRight | kLHintsCenterY, 2, 2, 2, 2));
00198 fPadLeft = new TGNumberEntry(fPaddingFrame,0.0,4,-1,(TGNumberFormat::EStyle) 5);
00199 fPaddingFrame->AddFrame(fPadLeft, new TGTableLayoutHints(3, 4, 0, 1,
00200 kLHintsLeft | kLHintsCenterY, 0, 0, 2, 2));
00201
00202 fPaddingFrame->AddFrame(new TGLabel(fPaddingFrame,"Bottom "),
00203 new TGTableLayoutHints(0, 1, 1, 2,
00204 kLHintsRight | kLHintsCenterY, 0, 2, 2, 2));
00205 fPadBottom = new TGNumberEntry(fPaddingFrame,0.0,4,-1,(TGNumberFormat::EStyle) 5);
00206 fPaddingFrame->AddFrame(fPadBottom, new TGTableLayoutHints(1, 2, 1, 2,
00207 kLHintsLeft | kLHintsCenterY, 0, 0, 2, 2));
00208
00209 fPaddingFrame->AddFrame(new TGLabel(fPaddingFrame," Right "),
00210 new TGTableLayoutHints(2, 3, 1, 2,
00211 kLHintsRight | kLHintsCenterY, 2, 2, 2, 2));
00212 fPadRight = new TGNumberEntry(fPaddingFrame,0.0,4,-1,(TGNumberFormat::EStyle) 5);
00213 fPaddingFrame->AddFrame(fPadRight, new TGTableLayoutHints(3, 4, 1, 2,
00214 kLHintsLeft | kLHintsCenterY, 0, 0, 2, 2));
00215
00216 frame3->AddFrame(fPaddingFrame, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 2, 2, 2));
00217
00218
00219 fHintsFrame = new TGGroupFrame(frame3,"Layout");
00220
00221 fHintsFrame->SetLayoutManager(new TGTableLayout(fHintsFrame, 4, 2));
00222
00223 fCbTop = new TGCheckButton(fHintsFrame, "Top");
00224 fHintsFrame->AddFrame(fCbTop, new TGTableLayoutHints(0, 1, 0, 1,
00225 kLHintsLeft | kLHintsCenterY, 5, 2, 2, 2));
00226
00227 fCbBottom = new TGCheckButton(fHintsFrame, "Bottom");
00228 fHintsFrame->AddFrame(fCbBottom, new TGTableLayoutHints(0, 1, 1, 2,
00229 kLHintsLeft | kLHintsCenterY, 5, 2, 2, 2));
00230
00231 fCbLeft = new TGCheckButton(fHintsFrame, "Left");
00232 fHintsFrame->AddFrame(fCbLeft, new TGTableLayoutHints(0, 1, 2, 3,
00233 kLHintsLeft | kLHintsCenterY, 5, 2, 2, 2));
00234
00235 fCbRight = new TGCheckButton(fHintsFrame, "Right");
00236 fHintsFrame->AddFrame(fCbRight, new TGTableLayoutHints(0, 1, 3, 4,
00237 kLHintsLeft | kLHintsCenterY, 5, 2, 2, 2));
00238
00239 fCbCenterX = new TGCheckButton(fHintsFrame, "Center in X");
00240 fHintsFrame->AddFrame(fCbCenterX, new TGTableLayoutHints(1, 2, 0, 1,
00241 kLHintsLeft | kLHintsCenterY, 9, 2, 2, 2));
00242
00243 fCbCenterY = new TGCheckButton(fHintsFrame, "Center in Y");
00244 fHintsFrame->AddFrame(fCbCenterY, new TGTableLayoutHints(1, 2, 1, 2,
00245 kLHintsLeft | kLHintsCenterY, 9, 2, 2, 2));
00246
00247 fCbExpandX = new TGCheckButton(fHintsFrame, "Expand in X");
00248 fHintsFrame->AddFrame(fCbExpandX, new TGTableLayoutHints(1, 2, 2, 3,
00249 kLHintsLeft | kLHintsCenterY, 9, 2, 2, 2));
00250
00251 fCbExpandY = new TGCheckButton(fHintsFrame, "Expand in Y");
00252 fHintsFrame->AddFrame(fCbExpandY, new TGTableLayoutHints(1, 2, 3, 4,
00253 kLHintsLeft | kLHintsCenterY, 9, 2, 2, 2));
00254
00255 frame3->AddFrame(fHintsFrame, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 2, 2, 2));
00256
00257 fHintsManager = new TGuiBldHintsManager(frame3, e, this);
00258 frame3->AddFrame(fHintsManager, new TGLayoutHints(kLHintsBottom | kLHintsExpandX,2,2,2,2));
00259 fHintsManager->UnmapWindow();
00260 AddFrame(frame3);
00261
00262 SetEditDisabled(1);
00263 Resize();
00264 MapSubwindows();
00265 MapWindow();
00266
00267 fCbTop->Connect("Clicked()", "TGButton", fCbBottom, "SetDown(=kFALSE)");
00268 fCbBottom->Connect("Clicked()", "TGButton", fCbTop, "SetDown(=kFALSE)");
00269 fCbRight->Connect("Clicked()", "TGButton", fCbLeft, "SetDown(=kFALSE)");
00270 fCbLeft->Connect("Clicked()", "TGButton", fCbRight, "SetDown(=kFALSE)");
00271
00272 fCbTop->Connect("Clicked()", "TGuiBldHintsEditor", this, "UpdateState()");
00273 fCbBottom->Connect("Clicked()", "TGuiBldHintsEditor", this, "UpdateState()");
00274 fCbRight->Connect("Clicked()", "TGuiBldHintsEditor", this, "UpdateState()");
00275 fCbLeft->Connect("Clicked()", "TGuiBldHintsEditor", this, "UpdateState()");
00276 fCbExpandX->Connect("Clicked()", "TGuiBldHintsEditor", this, "UpdateState()");
00277 fCbCenterX->Connect("Clicked()", "TGuiBldHintsEditor", this, "UpdateState()");
00278 fCbExpandY->Connect("Clicked()", "TGuiBldHintsEditor", this, "UpdateState()");
00279 fCbCenterY->Connect("Clicked()", "TGuiBldHintsEditor", this, "UpdateState()");
00280
00281 fPadTop->Connect("ValueSet(Long_t)", "TGuiBldHintsEditor", this, "UpdateState()");
00282 fPadLeft->Connect("ValueSet(Long_t)", "TGuiBldHintsEditor", this, "UpdateState()");
00283 fPadRight->Connect("ValueSet(Long_t)", "TGuiBldHintsEditor", this, "UpdateState()");
00284 fPadBottom->Connect("ValueSet(Long_t)", "TGuiBldHintsEditor", this, "UpdateState()");
00285
00286 fPadTop->GetNumberEntry()->Connect("ReturnPressed()", "TGuiBldHintsEditor", this, "UpdateState()");
00287 fPadLeft->GetNumberEntry()->Connect("ReturnPressed()", "TGuiBldHintsEditor", this, "UpdateState()");
00288 fPadRight->GetNumberEntry()->Connect("ReturnPressed()", "TGuiBldHintsEditor", this, "UpdateState()");
00289 fPadBottom->GetNumberEntry()->Connect("ReturnPressed()", "TGuiBldHintsEditor", this, "UpdateState()");
00290 }
00291
00292
00293
00294 void TGuiBldHintsEditor::ChangeSelected(TGFrame *frame)
00295 {
00296
00297
00298 if (!frame) {
00299 return;
00300 }
00301 TGFrameElement *fe = frame->GetFrameElement();
00302
00303 if (!fe) {
00304 return;
00305 }
00306
00307 fHintsManager->ChangeSelected(frame);
00308
00309 ULong_t lh = fe->fLayout->GetLayoutHints();
00310
00311 fCbCenterX->SetEnabled(kTRUE);
00312 fCbCenterY->SetEnabled(kTRUE);
00313 fCbExpandX->SetEnabled(!(frame->GetEditDisabled() & kEditDisableWidth));
00314 fCbExpandY->SetEnabled(!(frame->GetEditDisabled() & kEditDisableHeight));
00315 fClient->NeedRedraw(fCbExpandX);
00316 fClient->NeedRedraw(fCbExpandY);
00317
00318 fCbTop->SetEnabled(kTRUE);
00319 fCbRight->SetEnabled(kTRUE);
00320 fCbLeft->SetEnabled(kTRUE);
00321 fCbBottom->SetEnabled(kTRUE);
00322
00323 fCbCenterX->SetDown(lh & kLHintsCenterX);
00324 fCbCenterY->SetDown(lh & kLHintsCenterY);
00325 fCbExpandX->SetDown(lh & kLHintsExpandX);
00326 fCbExpandY->SetDown(lh & kLHintsExpandY);
00327
00328 fCbTop->SetDown(lh & kLHintsTop);
00329 fCbRight->SetDown(lh & kLHintsRight);
00330 fCbLeft->SetDown(lh & kLHintsLeft);
00331 fCbBottom->SetDown(lh & kLHintsBottom);
00332
00333 fPadTop->SetIntNumber(fe->fLayout->GetPadTop());
00334 fPadLeft->SetIntNumber(fe->fLayout->GetPadLeft());
00335 fPadRight->SetIntNumber(fe->fLayout->GetPadRight());
00336 fPadBottom->SetIntNumber(fe->fLayout->GetPadBottom());
00337 }
00338
00339
00340 void TGuiBldHintsEditor::UpdateState()
00341 {
00342
00343
00344 TGFrame *frame = fEditor->GetSelected();
00345
00346 if (!frame) {
00347 return;
00348 }
00349
00350 TGFrameElement *fe = frame->GetFrameElement();
00351
00352 if (!fe) {
00353 return;
00354 }
00355
00356 if (fLayButton->IsDown() &&
00357 ((gTQSender == fPadTop) || (gTQSender == fPadBottom) ||
00358 (gTQSender == fPadLeft) || (gTQSender == fPadRight))) {
00359 SetMatrixSep();
00360 return;
00361 }
00362
00363 ULong_t lh = fe->fLayout->GetLayoutHints();
00364
00365 if (fCbCenterX->IsDown()) {
00366 lh |= kLHintsCenterX;
00367 } else {
00368 lh &= ~kLHintsCenterX;
00369 }
00370
00371 if (fCbCenterY->IsDown()) {
00372 lh |= kLHintsCenterY;
00373 } else {
00374 lh &= ~kLHintsCenterY;
00375 }
00376
00377 if (fCbExpandX->IsDown()) {
00378 lh |= kLHintsExpandX;
00379 } else {
00380 lh &= ~kLHintsExpandX;
00381 }
00382
00383 if (fCbExpandY->IsDown()) {
00384 lh |= kLHintsExpandY;
00385 } else {
00386 lh &= ~kLHintsExpandY;
00387 }
00388
00389 if (fCbTop->IsDown()) {
00390 lh |= kLHintsTop;
00391 lh &= ~kLHintsBottom;
00392 } else {
00393 lh &= ~kLHintsTop;
00394 }
00395
00396 if (fCbBottom->IsDown()) {
00397 lh |= kLHintsBottom;
00398 lh &= ~kLHintsTop;
00399 } else {
00400 lh &= ~kLHintsBottom;
00401 }
00402
00403 if (fCbRight->IsDown()) {
00404 lh |= kLHintsRight;
00405 lh &= ~kLHintsLeft;
00406 } else {
00407 lh &= ~kLHintsRight;
00408 }
00409
00410 if (fCbLeft->IsDown()) {
00411 lh |= kLHintsLeft;
00412 lh &= ~kLHintsRight;
00413 } else {
00414 lh &= ~kLHintsLeft;
00415 }
00416
00417 if (fPadLeft->GetIntNumber() >=0) {
00418 fe->fLayout->SetPadLeft(fPadLeft->GetIntNumber());
00419 }
00420 if (fPadRight->GetIntNumber() >=0) {
00421 fe->fLayout->SetPadRight(fPadRight->GetIntNumber());
00422 }
00423 if (fPadTop->GetIntNumber() >=0) {
00424 fe->fLayout->SetPadTop(fPadTop->GetIntNumber());
00425 }
00426 if (fPadBottom->GetIntNumber() >=0) {
00427 fe->fLayout->SetPadBottom(fPadBottom->GetIntNumber());
00428 }
00429
00430 if (fe->fLayout->References() > 1) {
00431 TGLayoutHints *lh2 = new TGLayoutHints(*fe->fLayout);
00432 fe->fLayout->RemoveReference();
00433 lh2->AddReference();
00434 fe->fLayout = lh2;
00435 } else {
00436 fe->fLayout->SetLayoutHints(lh);
00437 }
00438
00439 fEditor->UpdateSelected(frame);
00440 }
00441
00442
00443 void TGuiBldHintsEditor::SetPosition()
00444 {
00445
00446
00447 if (!fEditor) {
00448 return;
00449 }
00450 TGFrame *frame = fEditor->GetSelected();
00451
00452 if (!frame) {
00453
00454 return;
00455 }
00456
00457 if ((fEditor->GetXPos() >= 0) && (fEditor->GetYPos() >= 0)) {
00458 frame->MoveResize(fEditor->GetXPos(), fEditor->GetYPos(),
00459 frame->GetWidth(), frame->GetHeight());
00460 fClient->NeedRedraw(frame, kTRUE);
00461 TGWindow *root = (TGWindow*)fClient->GetRoot();
00462 fClient->NeedRedraw(root, kTRUE);
00463 if (fBuilder) {
00464 fClient->NeedRedraw(fBuilder, kTRUE);
00465 }
00466 } else {
00467 fEditor->SetYPos(frame->GetY());
00468 fEditor->SetXPos(frame->GetX());
00469 }
00470 }
00471
00472
00473
00474 void TGuiBldHintsEditor::LayoutSubframes(Bool_t on)
00475 {
00476
00477
00478 if (!fEditor) {
00479 return;
00480 }
00481 TGFrame *frame = fEditor->GetSelected();
00482
00483 if (!frame) {
00484
00485 return;
00486 }
00487
00488 TGFrameElement *fe = frame->GetFrameElement();
00489
00490 if (!fe) {
00491
00492 return;
00493 }
00494
00495 Bool_t enable = frame->InheritsFrom(TGCompositeFrame::Class()) &&
00496 !(frame->GetEditDisabled() & kEditDisableLayout);
00497
00498 if (!on) {
00499 fPadTop->SetIntNumber(fHintsManager->fPadTop);
00500 fPadBottom->SetIntNumber(fHintsManager->fPadBottom);
00501 fPadLeft->SetIntNumber(fHintsManager->fPadLeft);
00502 fPadRight->SetIntNumber(fHintsManager->fPadRight);
00503
00504 ChangeSelected(frame);
00505 return;
00506 }
00507 if (!enable) {
00508 return;
00509 }
00510
00511 TGCompositeFrame *comp = (TGCompositeFrame*)frame;
00512 fHintsManager->fRows->SetState(kTRUE);
00513 fHintsManager->fColumns->SetState(kTRUE);
00514 comp->SetLayoutBroken(kFALSE);
00515
00516 if (!fHintsManager->fMatrix) {
00517 if (!(frame->GetParent()->GetEditDisabled() & kEditDisableLayout)) {
00518
00519 comp->Layout();
00520 } else {
00521 if (comp->GetLayoutManager()) {
00522 comp->GetLayoutManager()->Layout();
00523 } else {
00524 comp->Layout();
00525 }
00526 }
00527 return;
00528 }
00529
00530 MatrixLayout();
00531
00532 }
00533
00534
00535 void TGuiBldHintsEditor::SetMatrixSep()
00536 {
00537
00538
00539 TGFrame *frame = fEditor->GetSelected();
00540
00541 if (!frame) {
00542
00543 return;
00544 }
00545
00546 TGFrameElement *fe = frame->GetFrameElement();
00547
00548 if (!fe) {
00549
00550 return;
00551 }
00552
00553 Bool_t enable = frame->InheritsFrom(TGCompositeFrame::Class()) &&
00554 !(frame->GetEditDisabled() & kEditDisableLayout) &&
00555 ((TGCompositeFrame*)frame)->GetLayoutManager() &&
00556 ((TGCompositeFrame*)frame)->GetLayoutManager()->InheritsFrom(TGMatrixLayout::Class());
00557
00558 if (!enable) {
00559 return;
00560 }
00561
00562 TGNumberEntry *ne = (TGNumberEntry*)gTQSender;
00563 UInt_t sep = ne->GetIntNumber();
00564
00565 fPadTop->SetIntNumber(sep);
00566 fPadLeft->SetIntNumber(sep);
00567 fPadRight->SetIntNumber(sep);
00568 fPadBottom->SetIntNumber(sep);
00569 fLayButton->SetDown(kTRUE);
00570
00571 fHintsManager->fMatrix->fSep = sep;
00572 frame->SetLayoutBroken(kFALSE);
00573
00574 if (!(frame->GetParent()->GetEditDisabled() & kEditDisableLayout)) {
00575 frame->Resize();
00576 } else {
00577 fHintsManager->fMatrix->Layout();
00578 }
00579 fClient->NeedRedraw(frame, kTRUE);
00580 }
00581
00582
00583 void TGuiBldHintsEditor::MatrixLayout()
00584 {
00585
00586
00587 TGFrame *frame = fEditor->GetSelected();
00588
00589 if (!frame) {
00590
00591 return;
00592 }
00593
00594 TGFrameElement *fe = frame->GetFrameElement();
00595
00596 if (!fe) {
00597
00598 return;
00599 }
00600
00601 Bool_t enable = frame->InheritsFrom(TGCompositeFrame::Class()) &&
00602 !(frame->GetEditDisabled() & kEditDisableLayout);
00603
00604 if (!enable) {
00605 return;
00606 }
00607
00608 TGCompositeFrame *comp = (TGCompositeFrame*)frame;
00609
00610 UInt_t rows = fHintsManager->fRows->GetIntNumber();
00611 UInt_t cols = fHintsManager->fColumns->GetIntNumber();
00612 UInt_t sep = fPadTop->GetIntNumber();
00613
00614 fCbCenterX->SetEnabled(kFALSE);
00615 fCbCenterY->SetEnabled(kFALSE);
00616 fCbExpandX->SetEnabled(kFALSE);
00617 fCbExpandY->SetEnabled(kFALSE);
00618
00619 fCbTop->SetEnabled(kFALSE);
00620 fCbRight->SetEnabled(kFALSE);
00621 fCbLeft->SetEnabled(kFALSE);
00622 fCbBottom->SetEnabled(kFALSE);
00623
00624 fHintsManager->fPadTop = fPadTop->GetIntNumber();
00625 fHintsManager->fPadBottom = fPadBottom->GetIntNumber();
00626 fHintsManager->fPadLeft = fPadLeft->GetIntNumber();
00627 fHintsManager->fPadRight = fPadRight->GetIntNumber();
00628
00629 fPadTop->SetIntNumber(sep);
00630 fPadLeft->SetIntNumber(sep);
00631 fPadRight->SetIntNumber(sep);
00632 fPadBottom->SetIntNumber(sep);
00633
00634 fHintsManager->fRows->SetState(kTRUE);
00635 fHintsManager->fColumns->SetState(kTRUE);
00636
00637 comp->SetLayoutBroken(kFALSE);
00638
00639 fHintsManager->fMatrix = new TGMatrixLayout(comp, rows, cols, sep, 0);
00640 comp->SetLayoutManager(fHintsManager->fMatrix);
00641
00642 if (!(comp->GetParent()->GetEditDisabled() & kEditDisableLayout)) {
00643 comp->Layout();
00644 } else {
00645 fHintsManager->fMatrix->Layout();
00646 }
00647 fClient->NeedRedraw(comp, kTRUE);
00648 }