]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/tcl/windows/u_3D.tcl
creaMaracasVisu Library
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / tcl / windows / u_3D.tcl
1 namespace eval u_3D {
2
3     # public interface
4     namespace export        \
5         create              \
6         positionate         \
7         forget
8     
9     # variables
10     variable base ""
11
12     variable tools .tools
13     variable work  .work3D
14
15     variable btnMPR  .tools.btnMPR
16     variable btnMIP  .tools.btnMIP
17     variable btnSurf .tools.btnSurf
18     variable local_id
19
20     variable axis_shown
21     variable shown
22
23 }
24
25 proc u_3D::create { parent id } {
26
27     # For programming facilities
28     upvar u_3D::base    base
29     upvar u_3D::tools   tools
30     upvar u_3D::work    work
31     upvar u_3D::btnMPR  btnMPR
32     upvar u_3D::btnMIP  btnMIP
33     upvar u_3D::btnSurf btnSurf
34     upvar u_3D::local_id  local_id
35     upvar u_3D::shown     shown
36
37     set shown 0
38
39     set local_id $id
40
41     set base    "$parent"
42     set tools   "$parent$tools"
43     set work    "$parent$work"
44     set btnMPR  "$parent$btnMPR"
45     set btnMIP  "$parent$btnMIP"
46     set btnSurf "$parent$btnSurf"
47
48     # frames
49     frame $tools -borderwidth 0 -height 75 -relief flat -width 125
50     frame $work  -borderwidth 0 -height 75 -relief flat -width 125
51
52     # buttons
53     radiobutton $btnMPR  -indicatoron 0 -text mpr  -variable u3dtype -value 1 -command { u_3D::set_vis $u3dtype }
54     radiobutton $btnMIP  -indicatoron 0 -text mip  -variable u3dtype -value 2 -command { u_3D::set_vis $u3dtype }
55     radiobutton $btnSurf -indicatoron 0 -text surf -variable u3dtype -value 3 -command { u_3D::set_vis $u3dtype }
56     
57     # sub-windows
58     u_mpr::create  $work
59     u_mip::create  $work
60     u_surf::create $work
61
62 }
63
64 proc u_3D::positionate { } {
65
66     # For programming facilities
67     upvar u_3D::base    base
68     upvar u_3D::tools   tools
69     upvar u_3D::work    work
70     upvar u_3D::btnMPR  btnMPR
71     upvar u_3D::btnMIP  btnMIP
72     upvar u_3D::btnSurf btnSurf
73     upvar u_3D::local_id  local_id
74     upvar u_3D::shown     shown
75
76     set shown 1
77
78     set global_window::window_shown $local_id
79
80     pack $tools   -anchor center -expand 0 -fill x    -side top
81     pack $btnMPR  -anchor nw     -expand 0 -fill none -side left
82     pack $btnMIP  -anchor nw     -expand 0 -fill none -side left
83     pack $btnSurf -anchor nw     -expand 0 -fill none -side left
84     pack $work    -anchor center -expand 1 -fill both -side top
85
86     $btnMPR  deselect
87     $btnMIP  deselect
88     $btnSurf deselect
89     $btnSurf  invoke
90
91 }
92
93 proc u_3D::forget { } {
94
95     # For programming facilities
96     upvar u_3D::base    base
97     upvar u_3D::tools   tools
98     upvar u_3D::work    work
99     upvar u_3D::btnMPR  btnMPR
100     upvar u_3D::btnMIP  btnMIP
101     upvar u_3D::btnSurf btnSurf
102     upvar u_3D::shown     shown
103
104     set shown 0
105
106     pack forget $work
107     pack forget $btnSurf
108     pack forget $btnMIP
109     pack forget $btnMPR
110     pack forget $tools
111
112 }
113
114 proc u_3D::set_data { } {
115
116     # For programming facilities
117     upvar u_3D::base    base
118     upvar u_3D::tools   tools
119     upvar u_3D::work    work
120     upvar u_3D::btnMPR  btnMPR
121     upvar u_3D::btnMIP  btnMIP
122     upvar u_3D::btnSurf btnSurf
123     upvar u_3D::local_id  local_id
124     upvar u_3D::axis_shown axis_shown
125
126     set global_window::data_loaded [ expr $global_window::data_loaded | $local_id ]
127
128     set axis_shown 0
129     set data [ image_browser::get_data ]
130     if { $data != "" } {
131
132                 InitExperiment_dll $data
133         u_mpr::set_data
134         u_mip::set_data
135         u_surf::set_data
136
137     } else {
138     
139         set axis_shown 1
140         u_mpr::set_data
141         u_mip::set_data
142         u_surf::set_data
143         u_surf::load_axes
144     
145     }
146
147     $btnMPR  deselect
148     $btnMIP  deselect
149     $btnSurf deselect
150     $btnSurf  invoke
151
152 }
153
154 proc u_3D::set_vis { typ } {
155
156     # For programming facilities
157     upvar u_3D::base    base
158     upvar u_3D::tools   tools
159     upvar u_3D::work    work
160     upvar u_3D::btnMPR  btnMPR
161     upvar u_3D::btnMIP  btnMIP
162     upvar u_3D::btnSurf btnSurf
163     upvar u_3D::axis_shown axis_shown
164
165     u_mpr::forget
166     u_mip::forget
167     u_surf::forget
168
169     if { $typ == 1 } {
170
171         u_mpr::positionate
172         u_3D::controls 1
173         global_window::deselect_buttons
174         global_window::invoke_buttons [ expr \
175             $global_window::en_clear  | \
176             $global_window::en_rotate | \
177             $global_window::en_zoom     \
178         ]
179
180     } elseif { $typ == 2 } {
181
182         u_mip::positionate
183         u_3D::controls 0
184         global_window::deselect_buttons
185         global_window::invoke_buttons [ expr \
186             $global_window::en_clear  | \
187             $global_window::en_rotate | \
188             $global_window::en_zoom     \
189         ]
190
191     } elseif { $typ == 3 } {
192
193         u_surf::positionate
194         
195         if { $axis_shown == 0 } {
196
197             u_3D::controls 0
198
199         } else {
200
201             u_3D::controls 2
202
203         }
204         global_window::deselect_buttons
205         global_window::invoke_buttons [ expr \
206             $global_window::en_clear  | \
207             $global_window::en_rotate | \
208             $global_window::en_zoom     \
209         ]
210
211     }
212
213 }
214
215 proc u_3D::back { } {
216
217     # For programming facilities
218     upvar u_3D::shown     shown
219
220     set ret $shown
221     set shown 0
222
223     return $ret
224
225 }
226
227 proc u_3D::controls { { id -1 } } {
228
229     if { $id == -1 } {
230
231         global_window::active_controls 0
232
233     } else {
234
235         if { $id == 0 } {
236
237             global_window::active_controls [   \
238                 expr                           \
239                 $global_window::en_params    | \
240                 $global_window::en_save      | \
241                 $global_window::en_load      | \
242                 $global_window::en_open      | \
243                 $global_window::en_help      | \
244                 $global_window::en_rotate    | \
245                 $global_window::en_pan       | \
246                 $global_window::en_zoom      | \
247                 $global_window::en_back      | \
248                 0
249             ]
250
251         } elseif { $id == 1 } {
252
253             global_window::active_controls [   \
254                 expr                           \
255                 $global_window::en_params    | \
256                 $global_window::en_save      | \
257                 $global_window::en_load      | \
258                 $global_window::en_open      | \
259                 $global_window::en_help      | \
260                 $global_window::en_rotate    | \
261                 $global_window::en_bright    | \
262                 $global_window::en_pan       | \
263                 $global_window::en_zoom      | \
264                 $global_window::en_back      | \
265                 0
266             ]
267
268         } elseif { $id == 2 } {
269
270             global_window::active_controls [   \
271                 expr                           \
272                 $global_window::en_planes    | \
273                 $global_window::en_params    | \
274                 $global_window::en_save      | \
275                 $global_window::en_load      | \
276                 $global_window::en_open      | \
277                 $global_window::en_help      | \
278                 $global_window::en_rotate    | \
279                 $global_window::en_bright    | \
280                 $global_window::en_pan       | \
281                 $global_window::en_zoom      | \
282                 $global_window::en_back      | \
283                 $global_window::en_wizard    | \
284                 0
285             ]
286
287         }
288
289     }
290
291 }
292
293 # EOF - u_3D.tcl