#include "TGuiBldEditor.h"
#include "TGuiBldHintsEditor.h"
#include "TGuiBldNameFrame.h"
#include "TGResourcePool.h"
#include "TGTab.h"
#include "TGLabel.h"
#include "TGButtonGroup.h"
#include "TGNumberEntry.h"
#include "TG3DLine.h"
#include "TGColorSelect.h"
#include "TGColorDialog.h"
ClassImp(TGuiBldEditor)
class TGuiBldGeometryFrame : public TGVerticalFrame {
private:
TGuiBldEditor *fEditor;
public:
TGuiBldGeometryFrame(const TGWindow *p, TGuiBldEditor *editor);
virtual ~TGuiBldGeometryFrame() { }
};
TGuiBldGeometryFrame::TGuiBldGeometryFrame(const TGWindow *p, TGuiBldEditor *editor) :
TGVerticalFrame(p, 1, 1)
{
fEditor = editor;
fEditDisabled = 1;
SetCleanup(kDeepCleanup);
TGCompositeFrame *f = new TGHorizontalFrame(this);
f->AddFrame(new TGLabel(f, "Geometry"), new TGLayoutHints(kLHintsNormal, 1, 1));
f->AddFrame(new TGHorizontal3DLine(f), new TGLayoutHints(kLHintsExpandX | kLHintsCenterY, 5, 5));
AddFrame(f, new TGLayoutHints(kLHintsTop | kLHintsExpandX));
TGCompositeFrame *frame826 = new TGCompositeFrame(this,275,69,kHorizontalFrame);
TGVerticalFrame *frame928 = new TGVerticalFrame(frame826,59,64,kVerticalFrame);
TGLabel *frame834 = new TGLabel(frame928," ");
frame928->AddFrame(frame834, new TGLayoutHints(kLHintsLeft | kLHintsCenterY,2,2,2,2));
TGLabel *frame833 = new TGLabel(frame928,"Width");
frame928->AddFrame(frame833, new TGLayoutHints(kLHintsLeft | kLHintsCenterY,5,3,2,2));
TGLabel *frame839 = new TGLabel(frame928,"Height");
frame928->AddFrame(frame839, new TGLayoutHints(kLHintsLeft | kLHintsCenterY,5,3,2,2));
frame826->AddFrame(frame928);
frame928->MoveResize(2,2,59,64);
TGVerticalFrame *frame24 = new TGVerticalFrame(frame826,68,67,kVerticalFrame);
TGLabel *frame25 = new TGLabel(frame24," ");
frame24->AddFrame(frame25, new TGLayoutHints(kLHintsLeft | kLHintsTop,0,0,1,0));
TGNumberEntry *frame26 = new TGNumberEntry(frame24, (Double_t) 0,5,-1,(TGNumberFormat::EStyle) 0);
frame24->AddFrame(frame26, new TGLayoutHints(kLHintsLeft | kLHintsTop,0,0,1,0));
TGNumberEntry *frame30 = new TGNumberEntry(frame24, (Double_t) 0,5,-1,(TGNumberFormat::EStyle) 0);
frame24->AddFrame(frame30, new TGLayoutHints(kLHintsLeft | kLHintsTop,0,0,1,0));
frame826->AddFrame(frame24);
frame24->MoveResize(65,2,68,67);
TGVerticalFrame *frame14 = new TGVerticalFrame(frame826,68,67,kVerticalFrame);
TGLabel *frame15 = new TGLabel(frame14,"Min");
frame14->AddFrame(frame15, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterX,0,0,1,0));
TGNumberEntry *frame16 = new TGNumberEntry(frame14, (Double_t) 0,5,-1,(TGNumberFormat::EStyle) 0);
frame14->AddFrame(frame16, new TGLayoutHints(kLHintsLeft | kLHintsTop,0,0,1,0));
TGNumberEntry *frame20 = new TGNumberEntry(frame14, (Double_t) 0,5,-1,(TGNumberFormat::EStyle) 0);
frame14->AddFrame(frame20, new TGLayoutHints(kLHintsLeft | kLHintsTop,0,0,1,0));
frame826->AddFrame(frame14);
frame14->MoveResize(137,2,68,67);
TGVerticalFrame *frame4 = new TGVerticalFrame(frame826,68,67,kVerticalFrame);
TGLabel *frame5 = new TGLabel(frame4,"Max");
frame4->AddFrame(frame5, new TGLayoutHints(kLHintsLeft | kLHintsTop | kLHintsCenterX,0,0,1,0));
TGNumberEntry *frame6 = new TGNumberEntry(frame4, (Double_t) 0,5,-1,(TGNumberFormat::EStyle) 0);
frame4->AddFrame(frame6, new TGLayoutHints(kLHintsLeft | kLHintsTop,0,0,1,0));
TGNumberEntry *frame10 = new TGNumberEntry(frame4, (Double_t) 0,5,-1,(TGNumberFormat::EStyle) 0);
frame4->AddFrame(frame10, new TGLayoutHints(kLHintsLeft | kLHintsTop,0,0,1,0));
frame826->AddFrame(frame4);
frame4->MoveResize(207,0,68,67);
AddFrame(frame826, new TGLayoutHints(kLHintsLeft | kLHintsTop,0,0,1,0));
MapSubwindows();
Resize();
}
class TGuiBldBorderFrame : public TGHorizontalFrame {
private:
enum EBldBorderFrameMode { kBldBorderNone, kBldBorderSunken,
kBldBorderPlain, kBldBorderRaised, kBldBorderDouble };
private:
TGuiBldEditor *fEditor;
TGFrame *fSelected;
TGButtonGroup *fBtnGroup;
TGColorSelect *fBgndFrame;
TGColorSelect *fFgndFrame;
public:
TGuiBldBorderFrame(const TGWindow *p, TGuiBldEditor *editor);
virtual ~TGuiBldBorderFrame() { }
void ChangeSelected(TGFrame*);
};
TGuiBldBorderFrame::TGuiBldBorderFrame(const TGWindow *p, TGuiBldEditor *editor) :
TGHorizontalFrame(p, 1, 1)
{
fEditor = editor;
fEditDisabled = 1;
fBgndFrame = 0;
fFgndFrame = 0;
SetCleanup(kDeepCleanup);
fBtnGroup = new TGButtonGroup(this,"Border Mode",kVerticalFrame | kFitWidth);
TGRadioButton *frame299 = new TGRadioButton(fBtnGroup," Sunken",kBldBorderSunken);
frame299->SetToolTipText("Set a sunken border of the frame");
TGRadioButton *frame302 = new TGRadioButton(fBtnGroup," Plain",kBldBorderPlain);
frame302->SetToolTipText("Set no border of the frame");
TGRadioButton *frame305 = new TGRadioButton(fBtnGroup," Raised",kBldBorderRaised);
frame305->SetState(kButtonDown);
frame305->SetToolTipText("Set a raised border of the frame");
TGCheckButton *check = new TGCheckButton(fBtnGroup," Double",kBldBorderDouble);
TQObject::Disconnect(check);
check->SetToolTipText("Set double border of the frame");
fBtnGroup->SetRadioButtonExclusive(kTRUE);
fBtnGroup->Resize(136,86);
AddFrame(fBtnGroup);
fBtnGroup->Connect("Pressed(Int_t)", "TGuiBldEditor", fEditor, "UpdateBorder(Int_t)");
check->Connect("Pressed()", "TGuiBldEditor", fEditor, "UpdateBorder(=4)");
check->Connect("Released()", "TGuiBldEditor", fEditor, "UpdateBorder(=5)");
}
void TGuiBldBorderFrame::ChangeSelected(TGFrame *frame)
{
if (!frame) {
return;
}
fSelected = frame;
UInt_t opt = fSelected->GetOptions();
fBtnGroup->SetButton(kBldBorderDouble, opt & kDoubleBorder);
fBtnGroup->SetButton(kBldBorderSunken, opt & kSunkenFrame);
fBtnGroup->SetButton(kBldBorderRaised, opt & kRaisedFrame);
fBtnGroup->SetButton(kBldBorderPlain, !(opt & kRaisedFrame) && !(opt & kSunkenFrame));
if (fBgndFrame) fBgndFrame->SetColor(fSelected->GetBackground());
if (fFgndFrame) fFgndFrame->SetColor(fSelected->GetForeground());
}
TGuiBldEditor::TGuiBldEditor(const TGWindow *p) : TGCompositeFrame(p, 1, 1)
{
fSelected = 0;
SetCleanup(kDeepCleanup);
fTab = new TGTab(this, 80, 40);
AddFrame(fTab, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
TGCompositeFrame *tabcont = fTab->AddTab("Style");
TGCompositeFrame *tablay = fTab->AddTab("Layout");
fLayoutId = 1;
fTab->Connect("Selected(Int_t)", "TGuiBldEditor", this, "TabSelected(Int_t)");
fNameFrame = new TGuiBldNameFrame(tabcont, this);
tabcont->AddFrame(fNameFrame, new TGLayoutHints(kLHintsNormal | kLHintsExpandX,5,5,2,2));
fHintsFrame = 0;
fHintsFrame = new TGuiBldHintsEditor(tablay, this);
tablay->AddFrame(fHintsFrame, new TGLayoutHints(kLHintsNormal | kLHintsExpandX,2,2,2,2));
fBorderFrame = new TGuiBldBorderFrame(tabcont, this);
tabcont->AddFrame(fBorderFrame, new TGLayoutHints(kLHintsCenterX,2,2,2,2));
MapSubwindows();
Resize(140, 357);
SetWindowName("Frame Property Editor");
SetEditDisabled(1);
fEmbedded = kFALSE;
}
TGuiBldEditor::~TGuiBldEditor()
{
}
void TGuiBldEditor::TabSelected(Int_t id)
{
if (id == fLayoutId) {
}
}
void TGuiBldEditor::Hide()
{
UnmapWindow();
}
void TGuiBldEditor::ChangeSelected(TGFrame *frame)
{
TGTabElement *tab = fTab->GetTabTab(fLayoutId);
if (!frame) {
fNameFrame->ChangeSelected(0);
tab->SetEnabled(kFALSE);
fClient->NeedRedraw(tab);
return;
}
fSelected = frame;
TGWindow *parent = (TGWindow*)fSelected->GetParent();
fNameFrame->ChangeSelected(fSelected);
Bool_t enable_layout = kFALSE;
enable_layout |= parent && !(parent->GetEditDisabled() & kEditDisableLayout);
enable_layout |= !(fSelected->GetEditDisabled() & kEditDisableLayout);
enable_layout |= parent && (parent->InheritsFrom(TGCompositeFrame::Class()) &&
!((TGCompositeFrame*)parent)->IsLayoutBroken());
enable_layout |= (fSelected->InheritsFrom(TGCompositeFrame::Class()) &&
!((TGCompositeFrame*)fSelected)->IsLayoutBroken());
if (enable_layout) {
fHintsFrame->ChangeSelected(fSelected);
if (tab) {
tab->SetEnabled(kTRUE);
fClient->NeedRedraw(tab);
}
} else {
fHintsFrame->ChangeSelected(0);
if (tab) {
fTab->SetTab(0);
tab->SetEnabled(kFALSE);
fClient->NeedRedraw(tab);
}
}
if (fBorderFrame) fBorderFrame->ChangeSelected(fSelected);
Emit("ChangeSelected(TGFrame*)", (long)fSelected);
Resize();
MapRaised();
}
void TGuiBldEditor::UpdateSelected(TGFrame *frame)
{
Emit("UpdateSelected(TGFrame*)", (long)frame);
}
void TGuiBldEditor::UpdateBorder(Int_t b)
{
if (!fSelected) return;
UInt_t opt = fSelected->GetOptions();
switch (b) {
case 1:
opt &= ~kRaisedFrame;
opt |= kSunkenFrame;
break;
case 2:
opt &= ~kSunkenFrame;
opt &= ~kRaisedFrame;
break;
case 3:
opt &= ~kSunkenFrame;
opt |= kRaisedFrame;
break;
case 4:
opt |= kDoubleBorder;
break;
case 5:
opt &= ~kDoubleBorder;
break;
default:
return;
}
fSelected->ChangeOptions(opt);
fClient->NeedRedraw(fSelected, kTRUE);
}
void TGuiBldEditor::UpdateBackground(Pixel_t col)
{
if (!fSelected) return;
fSelected->SetBackgroundColor(col);
fClient->NeedRedraw(fSelected, kTRUE);
}
void TGuiBldEditor::UpdateForeground(Pixel_t col)
{
if (!fSelected) return;
fSelected->SetForegroundColor(col);
fClient->NeedRedraw(fSelected, kTRUE);
}
void TGuiBldEditor::Reset()
{
fSelected = 0;
fNameFrame->Reset();
TGTabElement *tab = fTab->GetTabTab(fLayoutId);
fTab->SetTab(0);
tab->SetEnabled(kFALSE);
}
Last change: Wed Jun 25 08:46:24 2008
Last generated: 2008-06-25 08:46
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.