// @(#)root/fitpanel:$Id$ // Author: Ilka Antcheva, Lorenzo Moneta, David Gonzalez Maline 03/10/06 /************************************************************************* * Copyright (C) 1995-2006, 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_TFitParametersDialog #define ROOT_TFitParametersDialog #include "TGWidget.h" #include "TGFrame.h" enum EFPDialogBound { kFPDBounded, kFPDNoneBounded }; /// Enumeration specifying if parameters /// have been modified by the user enum EFPDialogChange { kFPDNoChange, kFPDChange }; class TF1; class TGNumberEntry; class TGTextEntry; class TGCheckButton; class TGTextButton; class TGTripleHSlider; class TGNumberEntryField; class TVirtualPad; class TFitParametersDialog : public TGTransientFrame { protected: TF1 *fFunc; ///< function passed to this dialog TVirtualPad *fFpad; ///< pad where the function is drawn Bool_t fHasChanges; ///< kTRUE if function was redrawn; Bool_t fImmediateDraw; ///< kTRUE if function is updated on run-time Int_t *fRetCode; ///< address to store return code Int_t fNP; ///< number of function parameters Double_t fRangexmin; ///< min function range Double_t fRangexmax; ///< max function range Double_t *fPmin; ///< min limits of patameters range Double_t *fPmax; ///< max limits of patameters range Double_t *fPval; ///< original patameters' values Double_t *fPerr; ///< original patameters' errors Double_t *fPstp; ///< original patameters' step TGCompositeFrame *fContNam; ///< container of parameter names TGCompositeFrame *fContVal; ///< container of parameter values TGCompositeFrame *fContFix; ///< container of fix settings TGCompositeFrame *fContBnd; ///< container of bound settings TGCompositeFrame *fContSld; ///< container of sliders TGCompositeFrame *fContMin; ///< container of min range values TGCompositeFrame *fContMax; ///< container of max range values TGCompositeFrame *fContStp; ///< container of step values TGCompositeFrame *fContErr; ///< container of error values TGTextEntry **fParNam; ///< parameter names TGCheckButton **fParBnd; ///< bound setting switch TGCheckButton **fParFix; ///< fix setting switch TGNumberEntry **fParVal; ///< parameter values TGNumberEntryField **fParMin; ///< min range values TGNumberEntryField **fParMax; ///< max range values TGNumberEntry **fParStp; ///< step values TGTripleHSlider **fParSld; ///< triple sliders TGNumberEntryField **fParErr; ///< error values TGCheckButton *fUpdate; ///< immediate update switch TGTextButton *fApply; ///< Apply button TGTextButton *fReset; ///< Reset button TGTextButton *fOK; ///< OK button TGTextButton *fCancel; ///< Cancel button TList fTextEntries; ///< list of text entries used for keyboard navigation void DisconnectSlots(); public: TFitParametersDialog(const TGWindow *p, const TGWindow *main, TF1 *func, TVirtualPad *pad, Int_t *ret_code = nullptr); ~TFitParametersDialog() override; void CloseWindow() override; virtual void DoApply(); virtual void DoCancel(); virtual void DoOK(); virtual void DoParFix(Bool_t on); virtual void DoParBound(Bool_t on); virtual void DoParMaxLimit(); virtual void DoParMinLimit(); virtual void DoParStep(); virtual void DoParValue(); virtual void DoReset(); virtual void DoSlider(); virtual void DrawFunction(); virtual void HandleButtons(Bool_t update); virtual void HandleShiftTab(); virtual void HandleTab(); virtual Bool_t HasChanges() { return fHasChanges; } protected: void SetParameters(); ClassDefOverride(TFitParametersDialog, 0) // Fit function parameters dialog }; #endif