00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "TGuiBldEditor.h"
00013 #include "TGuiBldHintsEditor.h"
00014 #include "TGuiBldNameFrame.h"
00015 #include "TGResourcePool.h"
00016 #include "TGTab.h"
00017 #include "TGLabel.h"
00018 #include "TGButtonGroup.h"
00019 #include "TGNumberEntry.h"
00020 #include "TG3DLine.h"
00021 #include "TGColorSelect.h"
00022 #include "TGColorDialog.h"
00023 #include "TGuiBldGeometryFrame.h"
00024 #include "TRootGuiBuilder.h"
00025 #include "TGuiBldDragManager.h"
00026 #include "TGFrame.h"
00027
00028 ClassImp(TGuiBldGeometryFrame)
00029
00030
00031 TGuiBldGeometryFrame::TGuiBldGeometryFrame(const TGWindow *p, TGuiBldEditor *ed)
00032 : TGVerticalFrame(p, 1, 1)
00033 {
00034
00035
00036 fEditor = ed;
00037 fBuilder = (TRootGuiBuilder*)TRootGuiBuilder::Instance();
00038 fDragManager = (TGuiBldDragManager *)gDragManager;
00039 fSelected = fEditor->GetSelected();
00040 fEditDisabled = 1;
00041 SetCleanup(kDeepCleanup);
00042
00043 TGGroupFrame *fGroupFrame = new TGGroupFrame(this, "Size");
00044
00045 TGHorizontalFrame *hf = new TGHorizontalFrame(fGroupFrame);
00046
00047 hf->AddFrame(new TGLabel(hf, " Width "), new TGLayoutHints(kLHintsLeft |
00048 kLHintsCenterY, 2, 2, 2, 2));
00049 fNEWidth = new TGNumberEntry(hf, 0.0, 4, -1, (TGNumberFormat::EStyle)5);
00050 hf->AddFrame(fNEWidth, new TGLayoutHints(kLHintsLeft | kLHintsCenterY,
00051 2, 2, 2, 2));
00052
00053 hf->AddFrame(new TGLabel(hf, " Height "), new TGLayoutHints(kLHintsLeft |
00054 kLHintsCenterY, 2, 2, 2, 2));
00055 fNEHeight = new TGNumberEntry(hf, 0.0, 4, -1, (TGNumberFormat::EStyle)5);
00056 hf->AddFrame(fNEHeight, new TGLayoutHints(kLHintsLeft | kLHintsCenterY,
00057 2, 2, 2, 2));
00058
00059 fGroupFrame->AddFrame(hf, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY,
00060 0, 0, 5, 0));
00061
00062 AddFrame(fGroupFrame, new TGLayoutHints(kLHintsExpandX | kLHintsTop));
00063
00064 fNEWidth->GetNumberEntry()->Connect("ReturnPressed()", "TGuiBldGeometryFrame",
00065 this, "ResizeSelected()");
00066 fNEWidth->Connect("ValueSet(Long_t)", "TGuiBldGeometryFrame", this,
00067 "ResizeSelected()");
00068 fNEHeight->GetNumberEntry()->Connect("ReturnPressed()", "TGuiBldGeometryFrame",
00069 this, "ResizeSelected()");
00070 fNEHeight->Connect("ValueSet(Long_t)", "TGuiBldGeometryFrame", this,
00071 "ResizeSelected()");
00072
00073 if (!fSelected) {
00074 fNEWidth->SetNumber(0);
00075 fNEHeight->SetNumber(0);
00076 }
00077 else {
00078 fNEWidth->SetNumber(fSelected->GetWidth());
00079 fNEHeight->SetNumber(fSelected->GetHeight());
00080 }
00081 }
00082
00083
00084 void TGuiBldGeometryFrame::ResizeSelected()
00085 {
00086
00087
00088 if (!fEditor)
00089 return;
00090
00091 fSelected = fEditor->GetSelected();
00092
00093 if (!fSelected)
00094 return;
00095
00096 Int_t w = fNEWidth->GetIntNumber();
00097 Int_t h = fNEHeight->GetIntNumber();
00098
00099 if ((w > 0) && (h > 0)) {
00100 fSelected->MoveResize(fSelected->GetX(), fSelected->GetY(), w, h);
00101 fClient->NeedRedraw(fSelected, kTRUE);
00102 TGWindow *root = (TGWindow*)fClient->GetRoot();
00103 fClient->NeedRedraw(root, kTRUE);
00104 fDragManager->DrawGrabRectangles(fSelected);
00105 if (fBuilder) {
00106 fClient->NeedRedraw(fBuilder, kTRUE);
00107 }
00108 } else {
00109 fNEWidth->SetNumber(fSelected->GetWidth());
00110 fNEHeight->SetNumber(fSelected->GetHeight());
00111 }
00112 }
00113
00114
00115 void TGuiBldGeometryFrame::ChangeSelected(TGFrame *frame)
00116 {
00117
00118
00119 if (!frame) {
00120 fNEWidth->SetNumber(0);
00121 fNEHeight->SetNumber(0);
00122 } else {
00123 fNEWidth->SetNumber(frame->GetWidth());
00124 fNEHeight->SetNumber(frame->GetHeight());
00125 }
00126 }
00127
00128