// @(#)root/gpad:$Name:  $:$Id: TControlBar.cxx,v 1.2 2002/03/21 08:50:30 brun Exp $
// Author: Nenad Buncic   20/02/96

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

/////////////////////////////////////////////////////////////////////////
//                                                                     //
//   ControlBar is fully user configurable tool which provides fast    //
// access to frequently used operations. User can choose between       //
// buttons and drawnbuttons (let's say icons) and assign to them his   //
// own actions (let's say ROOT or C++ commands).                       //
//
// The macro belows shows an example of controlbar.
// To execute an item, click with the left mouse button.
// To see the HELP of a button, click on the right mouse button.
//
//{
//   gROOT.Reset("a");
//   TControlBar bar("vertical");
//   bar.AddButton("Help to run demos",".x demoshelp.C",
//                 "Explains how to run the demos");
//   bar.AddButton("framework",        ".x framework.C",
//                 "An Example of Object Oriented User Interface");
//   bar.AddButton("hsimple",          ".x hsimple.C",
//                 "An Example Creating Histograms/Ntuples on File");
//   bar.AddButton("hsum",             ".x hsum.C",
//                 "Filling histograms and some graphics options");
//   bar.AddButton("canvas",           ".x canvas.C",
//                 "Canvas and Pad Management");
//   bar.AddButton("formula1",         ".x formula1.C",
//                 "Simple Formula and Functions");
//   bar.AddButton("fillrandom",       ".x fillrandom.C",
//                 "Histograms with Random Numbers from a Function");
//   bar.AddButton("fit1",             ".x fit1.C",
//                 "A Simple Fitting Example");
//   bar.AddButton("h1draw",           ".x h1draw.C",
//                 "Drawing Options for 1D Histograms");
//   bar.AddButton("graph",            ".x graph.C",
//                 "Examples of a simple graph");
//   bar.AddButton("tornado",          ".x tornado.C",
//                 "Examples of 3-D PolyMarkers");
//   bar.AddButton("shapes",           ".x shapes.C",
//                 "The Geometry Shapes");
//   bar.AddButton("atlasna49",        ".x atlasna49.C",
//                 "Creating and Viewing Geometries");
//   bar.AddButton("file_layout",      ".x file.C",
//                 "The ROOT file format");
//   bar.AddButton("tree_layout",      ".x tree.C",
//                 "The Tree Data Structure");
//   bar.AddButton("ntuple1",          ".x ntuple1.C",
//                 "Ntuples and Selections");
//   bar.AddButton("run benchmarks",   ".x benchmarks.C",
//                 "Runs all the ROOT benchmarks");
//   bar.AddButton("rootmarks",        ".x rootmarks.C",
//                 "Prints an estimated ROOTMARKS for your machine");
//   bar.AddButton("edit_hsimple",     ".!ved hsimple.C &",
//                 "Invokes the text editor on file hsimple.C");
//   bar.AddButton("Close Bar",        "gROOT.Reset("a")",
//                 "Close ControlBar");
//   bar.Show();
//   gROOT.SaveContext();
//}
//
//
/*

*/
//
//
//                                                                     //
/////////////////////////////////////////////////////////////////////////

#include "TControlBar.h"
#include "TGuiFactory.h"
#include "TList.h"
#include "TStyle.h"


ClassImp(TControlBar)

//_______________________________________________________________________
 TControlBar::TControlBar() : TControlBarButton()
{
    fControlBarImp = 0;
    fOrientation   = 0;
    fButtons       = 0;
    fNoroc         = 1;
}


//_______________________________________________________________________
 TControlBar::TControlBar(const char *orientation, const char *title)
            : TControlBarButton(title, "", "", "button")

{
    Initialize(-999, -999);
    SetOrientation( orientation );
}

//_______________________________________________________________________
 TControlBar::TControlBar(const char *orientation, const char *title, Int_t x, Int_t y)
            : TControlBarButton(title, "", "", "button")

{
    Int_t xs = (Int_t)(x*gStyle->GetScreenFactor());
    Int_t ys = (Int_t)(y*gStyle->GetScreenFactor());
    Initialize(xs, ys);
    SetOrientation( orientation );
}

//_______________________________________________________________________
 TControlBar::~TControlBar()
{
    delete fControlBarImp;

    if( fButtons )
        fButtons->Delete();

    fButtons       = 0;
    fControlBarImp = 0;
}


//_______________________________________________________________________
 void TControlBar::AddButton(TControlBarButton &button)
{
    AddButton( &button );
}


//_______________________________________________________________________
 void TControlBar::AddButton(TControlBarButton *button)
{
    if( fButtons && button )
        fButtons->Add( button );
}


//_______________________________________________________________________
 void TControlBar::AddButton(const char *label, const char *action, const char *hint, const char *type)
{
    TControlBarButton *button = new TControlBarButton( label, action, hint, type );
    AddButton( button );
}


//_______________________________________________________________________
 void TControlBar::AddControlBar(TControlBar &controlBar)
{
    AddControlBar( &controlBar );
}


//_______________________________________________________________________
 void TControlBar::AddControlBar(TControlBar *controlBar)
{
    if( fButtons && controlBar )
        fButtons->Add( controlBar );
}


//_______________________________________________________________________
 void TControlBar::AddSeparator()
{

}


//_______________________________________________________________________
 void TControlBar::Create()
{
    if( fControlBarImp )
        fControlBarImp->Create();
}


//_______________________________________________________________________
 void TControlBar::Hide()
{
    if( fControlBarImp )
        fControlBarImp->Hide();
}


//_______________________________________________________________________
 void TControlBar::Initialize(Int_t x, Int_t y)
{
   if (x == -999)
      fControlBarImp = gGuiFactory->CreateControlBarImp( this, GetName() );
   else
      fControlBarImp = gGuiFactory->CreateControlBarImp( this, GetName(), x, y );

    fButtons       = new TList();
    fNoroc         = 1;
}


//_______________________________________________________________________
 void TControlBar::SetOrientation(const char *o)
{
    fOrientation = kVertical;

    if( *o ) {
        if( !strcasecmp( o, "vertical" ) )
            fOrientation = kVertical;
        else if( !strcasecmp( o, "horizontal" ) )
            fOrientation = kHorizontal;
        else
            Error( "SetOrientation", "Unknown orientation: '%s' !n\tt(choice of: %s, %s)",
                    o, "vertical", "horizontal" );
    }
}


//_______________________________________________________________________
 void TControlBar::SetOrientation(Int_t o)
{
    fOrientation = kVertical;

    if( ( o == kVertical ) || ( o == kHorizontal ) )
        fOrientation = o;
    else
        Error( "SetOrientation", "Unknown orientation: %d !n\tt(choice of: %d, %d)",
                o, kVertical, kHorizontal );
}


//_______________________________________________________________________
 void TControlBar::Show()
{
    if( fControlBarImp )
        fControlBarImp->Show();
}


ROOT page - Class index - Top of the page

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.