// @(#)root/ged:$Id$ // Author: Carsten Hof 16/08/04 /************************************************************************* * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers. * * All rights reserved. * * * * For the licensing terms see $ROOTSYS/LICENSE. * * For the list of contributors see $ROOTSYS/README/CREDITS. * *************************************************************************/ #ifndef ROOT_TH1Editor #define ROOT_TH1Editor #include "TGedFrame.h" class TH1; class TGComboBox; class TGNumberEntry; class TGCheckButton; class TGButtonGroup; class TGHButtonGroup; class TString; class TGRadioButton; class TGDoubleHSlider; class TGHSlider; class TGTextEntry; class TGNumberEntryField; class TGTextButton; class TH1Editor : public TGedFrame { protected: TH1 *fHist; ///< histogram object Bool_t fSameOpt; ///< flag for option "same" TGCompositeFrame *fBin; ///< Contains the Binning Widgets Int_t fTitlePrec; ///< font precision level TGTextEntry *fTitle; ///< histogram title input field TGHButtonGroup *fDimGroup; ///< Radiobuttongroup to change 2D <-> 3D-Plot TGRadioButton *fDim; ///< 2D-Plot RadioButton TGRadioButton *fDim0; ///< 3D-Plot RadioButton TGLayoutHints *fDimlh; ///< layout hints for 2D-Plot RadioButton TGLayoutHints *fDim0lh; ///< layout hints for 3D-Plot RadioButton TGComboBox *fTypeCombo; ///< histogram type combo box TGComboBox *fCoordsCombo; ///< Coordinate System combo box TGComboBox *fErrorCombo; ///< Error combo box TGCheckButton *fHistOnOff; ///< Draw a simple histogram with default options TGCheckButton *fAddMarker; ///< Draw a Marker on top of each bin TGCheckButton *fAddB; ///< Draw a Bar Chart TGCheckButton *fAddBar; ///< Bar Option TGCheckButton *fAdd; ///< Activate more Options TGCheckButton *fMakeHBar; ///< Draw Horizontal Bar Chart TGCheckButton *fAddSimple; ///< Draw a simple histogram (==HIST draw option) TGNumberEntry *fBarWidth; ///< Change the Bar Width TGNumberEntry *fBarOffset; ///< Change the Bar Offset TGComboBox *fAddCombo; ///< Add Lines, Bars, Fill TGComboBox *fPercentCombo; ///< Percentage of the Bar which is drawn in a different color TGCompositeFrame *f3; ///< Contains Histogram Type TGCompositeFrame *f6; ///< Contains the Add-ComboBox (Style) TGCompositeFrame *f7; ///< Contains the Marker OnOff CheckBox TGCompositeFrame *f8; ///< Contains the Bar Chart CheckBox TGCompositeFrame *f9; ///< Contains the Bar Option CheckBox TGCompositeFrame *f10; ///< Contains the Bar Option Title TGCompositeFrame *f11; ///< Contains the Bar Width/Offset NumberEntries TGCompositeFrame *f12; ///< Contains fPercentCombo, fMakeHBar TGCompositeFrame *f15; ///< Contains outer line CheckBox TGCompositeFrame *fBinCont; ///< Contains the Rebin Widgets for case 1 TGCompositeFrame *fBinCont1; ///< Contains the Rebin Widgets for case 2 TGHSlider *fBinSlider; ///< Slider to set rebinning integer value TGHSlider *fBinSlider1; ///< Slider to set rebinning integer value for ntuple histogram TGNumberEntryField *fBinNumberEntry; ///< Label which shows the rebinned bin number TGNumberEntryField *fBinNumberEntry1; ///< Label which shows the rebinned bin number for ntuple histogram TGHSlider *fBinOffsetSld; ///< Add an offset to the origin of the histogram TGNumberEntryField *fOffsetNumberEntry;///< Shows the offset to the origin of the histogram TGDoubleHSlider *fSlider; ///< Slider to set x-axis range TGNumberEntryField *fSldMin; ///< Contains the minimum value of the x-Axis TGNumberEntryField *fSldMax; ///< Contains the maximum value of the x-Axis TGCheckButton *fDelaydraw; ///< Delayed drawing of the new axis range TGTextButton *fApply; ///< Apply-Button to accept the rebinned histogram TGTextButton *fCancel; ///< Cancel-Button to reprobate the rebinned histogram static TGComboBox *BuildHistTypeComboBox(TGFrame *parent, Int_t id); // builts the Type ComboBox static TGComboBox *BuildHistCoordsComboBox(TGFrame *parent, Int_t id); // builts the Coordinate ComboBox static TGComboBox *BuildHistErrorComboBox(TGFrame *parent, Int_t id); // builts the Error ComboBox static TGComboBox *BuildHistAddComboBox(TGFrame *parent, Int_t id); // builts the Add ComboBox static TGComboBox *BuildPercentComboBox(TGFrame *parent, Int_t id); // builts the ComboBox for setting the Bar options bar1,..., bar4 virtual void ConnectSignals2Slots(); // connect the signals to the slots void CreateBinTab(); // Creates the Bin Tab (part of the SetGedEditor) private: Bool_t fMake; // Veto Variable Bool_t fMakeB; // avoid execution of Bar Slots Int_t fPx1old, // save the coordinates of the "virtual box" in delay draw mode (2D Plot) fPy1old, fPx2old, fPy2old; Float_t fP1NDCold[3], // save the coordinates of the "virtual box" in delay draw mode fP2NDCold[3], fP3NDCold[3], fP4NDCold[3]; Float_t fP1old[3], // save the coordinates of the "virtual box" in delay draw mode (3D plot) fP2old[3], fP3old[3], fP4old[3], fP5old[3], fP6old[3], fP7old[3], fP8old[3]; TH1 *fBinHist; // Cloned histogram for rebin Double_t fOldOffset; // save the old offset of the histogram TString GetHistTypeLabel(); // Get the Histogram Type = String which contains the Histogram Draw Option TString GetHistCoordsLabel(); // Get the histogram coordinate system (CYL, SPH, PSR, ..) TString GetHistErrorLabel(); // Get the histogram Error type (E1, .., E4) TString GetHistAddLabel(); // Get the histogram addon (smooth line, simple line, ..) void ChangeErrorCombo(Int_t i); public: TH1Editor(const TGWindow *p = nullptr, Int_t width = 140, Int_t height = 30, UInt_t options = kChildFrame, Pixel_t back = GetDefaultFrameBackground()); ~TH1Editor() override; Bool_t AcceptModel(TObject* model) override; void SetModel(TObject* obj) override; virtual void DoTitle(const char *text); virtual void DoAddMarker(Bool_t on); virtual void DoAddBar(Bool_t); virtual void DoAddB(Bool_t); virtual void DoAddSimple(Bool_t on); virtual void DoHistSimple(); virtual void DoHistComplex(); virtual void DoHistChanges(); virtual void DoHistView(); virtual void DoBarOffset(); virtual void DoBarWidth(); virtual void DoPercent(); virtual void DoHBar(Bool_t on); virtual void DoSliderMoved(); virtual void DoSliderPressed(); virtual void DoSliderReleased(); virtual void DoAxisRange(); virtual void DoBinMoved(Int_t number); virtual void DoBinReleased(); virtual void DoBinPressed(); virtual void DoBinLabel(); virtual void DoBinReleased1(); virtual void DoBinMoved1(); virtual void DoBinLabel1(); virtual void DoOffsetMoved(Int_t num); virtual void DoOffsetReleased(); virtual void DoOffsetPressed(); virtual void DoBinOffset(); virtual void DoApply(); virtual void DoCancel(); virtual void PaintBox3D(Float_t *p1, Float_t *p2,Float_t *p3, Float_t *p4); Int_t* Dividers(Int_t n); void RecursiveRemove(TObject* obj) override; ClassDefOverride(TH1Editor,0) // TH1 editor }; #endif