#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

// -----------------------------------------------------------------------------
//
// HSUDialogFrame
//
// -----------------------------------------------------------------------------

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.