30
30
// }
31
31
//
32
32
33
+ #include "TList.h"
34
+ #include "TGLabel.h"
35
+ #include "TGButton.h"
36
+ #include "TGText.h"
37
+ #include "TGFileDialog.h"
38
+ #include "TGTextEntry.h"
39
+
33
40
///////////////////////////////////////////////////////////////////////////
34
41
// //
35
42
// Input Dialog Widget //
@@ -41,7 +48,6 @@ class InputDialog {
41
48
private :
42
49
TGTransientFrame * fDialog ; // transient frame, main dialog window
43
50
TGTextEntry * fTE ; // text entry widget containing
44
- TList * fWidgets ; // keep track of widgets to be deleted in dtor
45
51
char * fRetStr ; // address to store return string
46
52
47
53
public :
@@ -54,29 +60,23 @@ InputDialog::~InputDialog()
54
60
{
55
61
// Cleanup dialog.
56
62
57
- fWidgets -> Delete ();
58
- delete fWidgets ;
59
-
60
- delete fTE ;
61
- delete fDialog ;
63
+ fDialog -> DeleteWindow (); // cleanup and delete fDialog
62
64
}
63
65
64
66
InputDialog ::InputDialog (const char * prompt , const char * defval , char * retstr )
65
67
{
66
68
// Create simple input dialog.
67
69
68
- fWidgets = new TList ;
69
-
70
- TGWindow * main = gClient -> GetRoot ();
70
+ const TGWindow * main = gClient -> GetRoot ();
71
71
fDialog = new TGTransientFrame (main , main , 10 , 10 );
72
+ fDialog -> SetCleanup (kDeepCleanup );
72
73
73
74
// command to be executed by buttons and text entry widget
74
75
char cmd [128 ];
75
76
sprintf (cmd , "{long r__ptr=0x%lx; ((InputDialog*)r__ptr)->ProcessMessage($MSG,$PARM1,$PARM2);}" , (Long_t )this );
76
77
77
78
// create prompt label and textentry widget
78
79
TGLabel * label = new TGLabel (fDialog , prompt );
79
- fWidgets -> Add (label );
80
80
81
81
TGTextBuffer * tbuf = new TGTextBuffer (256 ); //will be deleted by TGtextEntry
82
82
tbuf -> AddText (0 , defval );
@@ -87,8 +87,6 @@ InputDialog::InputDialog(const char *prompt, const char *defval, char *retstr)
87
87
88
88
TGLayoutHints * l1 = new TGLayoutHints (kLHintsTop | kLHintsLeft , 5 , 5 , 5 , 0 );
89
89
TGLayoutHints * l2 = new TGLayoutHints (kLHintsTop | kLHintsLeft , 5 , 5 , 5 , 5 );
90
- fWidgets -> Add (l1 );
91
- fWidgets -> Add (l2 );
92
90
93
91
fDialog -> AddFrame (label , l1 );
94
92
fDialog -> AddFrame (fTE , l2 );
@@ -97,31 +95,24 @@ InputDialog::InputDialog(const char *prompt, const char *defval, char *retstr)
97
95
TGHorizontalFrame * hf = new TGHorizontalFrame (fDialog , 60 , 20 , kFixedWidth );
98
96
TGLayoutHints * l3 = new TGLayoutHints (kLHintsCenterY | kLHintsExpandX , 5 , 5 , 0 , 0 );
99
97
100
- // put hf as last in list to be deleted
101
- fWidgets -> Add (l3 );
102
-
103
98
// create OK and Cancel buttons in their own frame (hf)
104
99
UInt_t nb = 0 , width = 0 , height = 0 ;
105
100
TGTextButton * b ;
106
101
107
102
b = new TGTextButton (hf , "&Ok" , cmd , 1 );
108
- fWidgets -> Add (b );
109
103
b -> Associate (fDialog );
110
104
hf -> AddFrame (b , l3 );
111
105
height = b -> GetDefaultHeight ();
112
106
width = TMath ::Max (width , b -> GetDefaultWidth ()); ++ nb ;
113
107
114
108
b = new TGTextButton (hf , "&Cancel" , cmd , 2 );
115
- fWidgets -> Add (b );
116
109
b -> Associate (fDialog );
117
110
hf -> AddFrame (b , l3 );
118
111
height = b -> GetDefaultHeight ();
119
112
width = TMath ::Max (width , b -> GetDefaultWidth ()); ++ nb ;
120
113
121
114
// place button frame (hf) at the bottom
122
115
TGLayoutHints * l4 = new TGLayoutHints (kLHintsBottom | kLHintsCenterX , 0 , 0 , 5 , 5 );
123
- fWidgets -> Add (l4 );
124
- fWidgets -> Add (hf );
125
116
126
117
fDialog -> AddFrame (hf , l4 );
127
118
0 commit comments