#pragma implementation
#include "hsudialogframe.h"
#include "TMath.h"
#include "TGWidget.h"
ClassImp(HSUDialogFrame);
ClassImp(HSUDialogLabel);
#define SAFE_DELETE(A) { if(A != NULL) { delete A; A = NULL; }}
#define ALONE_LABEL_PART 0.3
TGLayoutHints g_FrameLayoutHintsLabel(kLHintsLeft | kLHintsTop);
TGLayoutHints g_FrameLayoutHintsWidget(kLHintsLeft);
HSUDialogFrame::HSUDialogFrame(const TGWindow* p)
: TGHorizontalFrame(p, 10, 10, 0)
{
m_pLabel = NULL;
m_pWidget = NULL;
m_pActive = NULL;
}
void HSUDialogFrame::Init(const Char_t *pLabel, TGFrame *pWidget,
HSUActiveWidget *pActive)
{
m_pWidget = pWidget;
m_pActive = pActive;
if(pLabel != NULL)
{
m_pLabel = new HSUDialogLabel(this, pLabel);
m_pLabel->SetTextJustify(kTextLeft | kTextCenterY);
AddFrame(m_pLabel, &g_FrameLayoutHintsLabel);
}
if(m_pWidget != NULL)
AddFrame(m_pWidget, &g_FrameLayoutHintsWidget);
}
HSUDialogFrame::~HSUDialogFrame()
{
SAFE_DELETE(m_pLabel);
SAFE_DELETE(m_pWidget);
}
UInt_t HSUDialogFrame::GetLabelWidth(void) const
{
if(m_pLabel == NULL)
{
if(m_pWidget == NULL)
return 0;
return (UInt_t)(m_pWidget->GetDefaultWidth() * ALONE_LABEL_PART);
}
if(m_pWidget != NULL)
return m_pLabel->GetDefaultWidth();
return (UInt_t)(m_pLabel->GetDefaultWidth() * ALONE_LABEL_PART);
}
UInt_t HSUDialogFrame::GetWidgetWidth(void) const
{
if(m_pLabel == NULL)
{
if(m_pWidget == NULL)
return 0;
return (UInt_t)(m_pWidget->GetDefaultWidth()
* (1.0 - ALONE_LABEL_PART));
}
if(m_pWidget != NULL)
return m_pWidget->GetDefaultWidth();
return (UInt_t)(m_pLabel->GetDefaultWidth() * (1.0 - ALONE_LABEL_PART));
return (UInt_t)(m_pLabel->GetDefaultWidth() * (1.0 - ALONE_LABEL_PART));
}
UInt_t HSUDialogFrame::GetWidgetHeight(void) const
{
if(m_pWidget != NULL)
{
return TMath::Max(m_pWidget->GetDefaultHeight(),
m_pWidget->GetHeight());
}
else
{
if(m_pLabel != NULL)
return m_pLabel->GetDefaultHeight();
}
return 1;
}
void HSUDialogFrame::SetSize(UInt_t uiLabel, UInt_t uiWidget)
{
UInt_t uiH = GetWidgetHeight();
if(m_pLabel != NULL)
{
if(m_pWidget != NULL)
{
m_pLabel->Resize(uiLabel + 15, uiH);
m_pWidget->Resize(uiWidget + 5, uiH);
}
else
m_pLabel->Resize(uiLabel + uiWidget + 20, uiH);
}
else
{
if(m_pWidget != NULL)
m_pWidget->Resize(uiLabel + uiWidget + 20, uiH);
}
Resize(uiLabel + uiWidget + 15, uiH);
}
Last change: Sat May 22 13:12:40 2010
Last generated: 2010-05-22 13:12
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.