ROOT logo
#ifndef ROOT_GEdit
#define ROOT_GEdit
#include "TList.h"
//#ifdef MARABOUVERS
//#include "HTCanvas.h"
#include "GrCanvas.h"
//#include "HistPresent.h"
//#else
//#include "TCanvas.h"
//#include "TRootCanvas.h"
//#endif
#include "TGraph.h"
#include "TCutG.h"
#include <TGMenu.h>
#include <TGWindow.h>
#include <iostream>

using std::cout;
using std::endl;

class HprEditCommands;
class TGToolBar;
class TGHorizontal3DLine;
class TGVertical3DLine;
class TGDockableFrame;
class HTPad;
class GEdit : public TGFrame {

private:
#ifdef MARABOUVERS
//   HistPresent    *fHistPresent;
#endif
//   HTCanvas        *fParent;
   GrCanvas        *fParent;
	TPad            *fPad;
   TGPopupMenu     *fEditMenu;
   TRootCanvas     *fRootCanvas;      //! dont stream
   HprEditCommands *fEditCommands;    //! dont stream
   HprEditCommands *fModifyCommands;  //! dont stream
   TList           *fGObjectGroups;   // compound graphic objects
   TString        fRootFileName;
   TString        fPictureName;
   Double_t       fEditGridX;
   Double_t       fEditGridY;
   Double_t       fVisibleGridX;
   Double_t       fVisibleGridY;
   Int_t          fUseEditGrid;
   Bool_t         fInsertMacrosAsGroup;
   Bool_t         fCommonRotate;         //! dont stream
   UInt_t         fOrigWw;
   UInt_t         fOrigWh;
//  from TRootCanvas
   Int_t          fFeynmanPhi1;
   Int_t          fFeynmanPhi2;
   TGToolBar           *fToolBar;            // icon button toolbar
   TGHorizontal3DLine  *fToolBarSep;         // toolbar separator
   TGLayoutHints       *fMainFrameLayout;    // layout for main frame
   TGVertical3DLine    *fVertical1;          // toolbar vertical separator
   TGVertical3DLine    *fVertical2;          // toolbar vertical separator
   TGHorizontal3DLine  *fHorizontal1;        // toolbar sepatator
   TGLayoutHints       *fVertical1Layout;    // layout hints for separator
   TGLayoutHints       *fVertical2Layout;    // layout hints for separator
   TGLayoutHints       *fHorizontal1Layout;  // layout hints for separator
   TGLayoutHints		  *fToolBarLayout;
	TGDockableFrame     *fToolDock;           // dockable frame holding the toolbar
   TGLayoutHints       *fDockLayout;         // layout hints for dockable frame widget
   const TGPicture     *fIconPic;            // icon picture

public:
   GEdit() {};
   GEdit(GrCanvas * parent);
//   GEdit(HTCanvas * parent);
   void Constructor();
   virtual ~GEdit();
   void RecursiveRemove(TObject * obj);
	void    ObjCreated(Int_t, Int_t, TObject *obj) {fPad = (TPad*)obj;};
	void    ObjMoved(Int_t, Int_t, TObject *) { };

   Bool_t   SloppyInside(TCutG * cut, Double_t x, Double_t y);
   Double_t MinElement(Int_t n, Double_t * x);
   Double_t MaxElement(Int_t n, Double_t * x);
   void SetAllArrowSizes(TList *list, Double_t size,  Bool_t abs);
   void SetAllCurlySizes(TList *list, Double_t wl, Double_t amp, Bool_t abs);
   void SetAllTextSizes(TList *list, Double_t size, Bool_t abs);

   void     BuildMenu();
   void     HandleMenu(Int_t id);
   void     InitEditCommands();
   void     ModifyObjects();
   void     ModifyTexts();
   void     ModifyCurlyLines();
   void     ModifyCurlyArcs();
   void     ModifyArrows();
   void     ModifyArcs();
   void     ModifyEllipses();
   void     ModifyMarkers();
   void     ModifyPaves();
   void     ModifyPads();
   void     ModifyGraphs();
   void     ListAllObjects();

   Double_t GetEditGridX() {return fEditGridX;};
   Double_t GetEditGridY() {return fEditGridY;};
   Double_t GetVisibleGridX() {return fVisibleGridX;};
   void     PutObjectsOnGrid(TList* list = 0);
   Double_t PutOnGridX(Double_t);
   Double_t PutOnGridY(Double_t);
   Double_t GetVisibleGridY() {return fVisibleGridY;};
   void    SetEditGrid(Double_t x, Double_t y, Double_t xvis, Double_t yvis);
   void    SetEditGridX(Double_t x) {fEditGridX = x;};
   void    SetEditGridY(Double_t y) {fEditGridY = y;};
   void    SetVisibleGridX(Double_t x) {fVisibleGridX = x;};
   void    SetVisibleGridY(Double_t y) {fVisibleGridY = y;};
   void    SetUseEditGrid(Bool_t use = kTRUE);
   Int_t   GetUseEditGrid() {return fUseEditGrid;};
   void    DrawEditGrid(Bool_t visible);
   void    RemoveEditGrid();
   void    RemoveControlGraphs();
   void    RemoveParallelGraphs();
   void    RemoveTSplineXsPolyLines();
   void    DrawTSplineXsParallelGraphs();
   void    DrawControlGraphs();
   void    SetVisibilityOfEnclosingCuts(Bool_t visible);
   void    PushPictureToBg();

   void    InsertArc();
   void    InsertPad();
   void    InsertAxis();
   void    InsertCurlyArrow();
   void    FeynmanDiagMenu();
   void    InsertTSplineX();
   void    WritePrimitives();
   static void RestoreAxisAtts(TPad * pad);
   void    DefineBox();
   void    DefinePolygone();
   Int_t   ExtractGObjectsE();
   Int_t   MarkGObjects();
   Int_t   ExtractGObjects(Bool_t markonly = kFALSE);
   void    InsertGObjects(const char * fname = 0);
   void    DeleteObjects();
   void    WriteGObjects();
   void    ReadGObjects();
   void    ShowGallery();
//   void    ShiftObjects(TList * list, Double_t xshift, Double_t yshift);
   void    InsertTextBox();
   void    InsertText(Bool_t);
   void    InsertTextF(){InsertText(kTRUE);};
   void    InsertTextK(){InsertText(kFALSE);};
   void    InsertFunction();
   static  HTPad*   GetEmptyPad();
   void    WarnBox(const Char_t *text, TRootCanvas *win = NULL);
   Bool_t  QuestionBox(const Char_t *text, TRootCanvas *win = NULL);
   void    ZoomIn();
   void    ZoomOut();
   void    UnZoom();
   void    SaveDefaults();
   void    RestoreDefaults();

   void     ShowToolBar(Bool_t show = kTRUE);
   void     AdjustSize();
   void     ExecuteAdjustSize(Int_t how = 0);
   Bool_t   ProcessMessage(Long_t msg, Long_t parm1, Long_t);

//   void    MyClose();
   ClassDef(GEdit,0)  //Graphics canvas
};

#endif
 GEdit.h:1
 GEdit.h:2
 GEdit.h:3
 GEdit.h:4
 GEdit.h:5
 GEdit.h:6
 GEdit.h:7
 GEdit.h:8
 GEdit.h:9
 GEdit.h:10
 GEdit.h:11
 GEdit.h:12
 GEdit.h:13
 GEdit.h:14
 GEdit.h:15
 GEdit.h:16
 GEdit.h:17
 GEdit.h:18
 GEdit.h:19
 GEdit.h:20
 GEdit.h:21
 GEdit.h:22
 GEdit.h:23
 GEdit.h:24
 GEdit.h:25
 GEdit.h:26
 GEdit.h:27
 GEdit.h:28
 GEdit.h:29
 GEdit.h:30
 GEdit.h:31
 GEdit.h:32
 GEdit.h:33
 GEdit.h:34
 GEdit.h:35
 GEdit.h:36
 GEdit.h:37
 GEdit.h:38
 GEdit.h:39
 GEdit.h:40
 GEdit.h:41
 GEdit.h:42
 GEdit.h:43
 GEdit.h:44
 GEdit.h:45
 GEdit.h:46
 GEdit.h:47
 GEdit.h:48
 GEdit.h:49
 GEdit.h:50
 GEdit.h:51
 GEdit.h:52
 GEdit.h:53
 GEdit.h:54
 GEdit.h:55
 GEdit.h:56
 GEdit.h:57
 GEdit.h:58
 GEdit.h:59
 GEdit.h:60
 GEdit.h:61
 GEdit.h:62
 GEdit.h:63
 GEdit.h:64
 GEdit.h:65
 GEdit.h:66
 GEdit.h:67
 GEdit.h:68
 GEdit.h:69
 GEdit.h:70
 GEdit.h:71
 GEdit.h:72
 GEdit.h:73
 GEdit.h:74
 GEdit.h:75
 GEdit.h:76
 GEdit.h:77
 GEdit.h:78
 GEdit.h:79
 GEdit.h:80
 GEdit.h:81
 GEdit.h:82
 GEdit.h:83
 GEdit.h:84
 GEdit.h:85
 GEdit.h:86
 GEdit.h:87
 GEdit.h:88
 GEdit.h:89
 GEdit.h:90
 GEdit.h:91
 GEdit.h:92
 GEdit.h:93
 GEdit.h:94
 GEdit.h:95
 GEdit.h:96
 GEdit.h:97
 GEdit.h:98
 GEdit.h:99
 GEdit.h:100
 GEdit.h:101
 GEdit.h:102
 GEdit.h:103
 GEdit.h:104
 GEdit.h:105
 GEdit.h:106
 GEdit.h:107
 GEdit.h:108
 GEdit.h:109
 GEdit.h:110
 GEdit.h:111
 GEdit.h:112
 GEdit.h:113
 GEdit.h:114
 GEdit.h:115
 GEdit.h:116
 GEdit.h:117
 GEdit.h:118
 GEdit.h:119
 GEdit.h:120
 GEdit.h:121
 GEdit.h:122
 GEdit.h:123
 GEdit.h:124
 GEdit.h:125
 GEdit.h:126
 GEdit.h:127
 GEdit.h:128
 GEdit.h:129
 GEdit.h:130
 GEdit.h:131
 GEdit.h:132
 GEdit.h:133
 GEdit.h:134
 GEdit.h:135
 GEdit.h:136
 GEdit.h:137
 GEdit.h:138
 GEdit.h:139
 GEdit.h:140
 GEdit.h:141
 GEdit.h:142
 GEdit.h:143
 GEdit.h:144
 GEdit.h:145
 GEdit.h:146
 GEdit.h:147
 GEdit.h:148
 GEdit.h:149
 GEdit.h:150
 GEdit.h:151
 GEdit.h:152
 GEdit.h:153
 GEdit.h:154
 GEdit.h:155
 GEdit.h:156
 GEdit.h:157
 GEdit.h:158
 GEdit.h:159
 GEdit.h:160
 GEdit.h:161
 GEdit.h:162
 GEdit.h:163
 GEdit.h:164
 GEdit.h:165
 GEdit.h:166
 GEdit.h:167
 GEdit.h:168