]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/tcl/windows/global_window.tcl
creaMaracasVisu Library
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / tcl / windows / global_window.tcl
1 namespace eval global_window {
2
3     # public interface
4     namespace export \
5         show \
6         active_controls \
7         show_params  \
8         en_quant     \
9         en_planes    \
10         en_3D        \
11         en_subtract  \
12         en_ibrw      \
13         en_params    \
14         en_save      \
15         en_load      \
16         en_open      \
17         en_help      \
18         en_rotate    \
19         en_bright    \
20         en_pan       \
21         en_zoom      \
22         en_clear     \
23         en_intensity \
24         en_linear    \
25         en_area      \
26         en_back      \
27         en_excel     \
28         en_wizard    \
29         im1         \
30         im2
31     
32     # variables
33     variable widgets
34
35     # Loaded button images
36     variable images
37
38         # Parameters dialog visible?
39     variable show_params -1
40
41         # Button enable/disable values
42     variable en_quant     0x000001
43     variable en_planes    0x000002
44     variable en_3D        0x000004
45     variable en_subtract  0x000008
46     variable en_ibrw      0x000010
47     variable en_params    0x000020
48     variable en_save      0x000040
49     variable en_load      0x000080
50     variable en_open      0x000100
51     variable en_help      0x000200
52     variable en_rotate    0x000400
53     variable en_bright    0x000800
54     variable en_pan       0x001000
55     variable en_zoom      0x002000
56     variable en_clear     0x004000
57     variable en_intensity 0x008000
58     variable en_linear    0x010000
59     variable en_area      0x020000
60     variable en_back      0x040000
61     variable en_excel     0x080000
62     variable en_wizard    0x100000
63
64         # Windows id values
65     variable sh_none    0x01
66     variable sh_data    0x02
67     variable sh_ibrw    0x04
68     variable sh_3D_mpr  0x08
69     variable sh_3D_mip  0x10
70     variable sh_3D_sur  0x20
71     variable sh_3D_qua  0x40
72
73     variable window_shown
74
75 }
76
77 proc global_window::reset { } {
78
79     # For programming facilities
80     upvar global_window::widgets widgets
81
82     set widgets(base)              "."
83     set widgets(toolBar)           ".frToolBar"
84     set widgets(toolsAllData)      ".frToolBar.frTAllData"
85     set widgets(toolsData)         ".frToolBar.frTData"
86     set widgets(toolsState)        ".frToolBar.frState"
87     set widgets(toolsMouse)        ".frToolBar.frMouse"
88     set widgets(toolsProfil)       ".frToolBar.frProfil"
89     set widgets(toolsHelp)         ".frToolBar.frHelp"
90     set widgets(work)              ".frWork"
91     set widgets(btnChooseDataPath) ".frToolBar.frTAllData.btnChooseDataPath"
92     set widgets(btnLoadExperiment) ".frToolBar.frTAllData.btnLoadExperiment"
93     set widgets(btnSaveExperiment) ".frToolBar.frTAllData.btnSaveExperiment"
94     set widgets(btnSaveExcel)      ".frToolBar.frTAllData.btnSaveExcel"
95     set widgets(btnParam)          ".frToolBar.frTAllData.btnParam"
96     set widgets(btnWizard)         ".frToolBar.frTAllData.btnWizard"
97     set widgets(btnIbrw)           ".frToolBar.frTData.btnIbrw"
98     set widgets(btnSubtract)       ".frToolBar.frTData.btnSubtract"
99     set widgets(btnBack)           ".frToolBar.frState.btnBack"
100     set widgets(btn3D)             ".frToolBar.frState.btn3D"
101     set widgets(btnPlanes)         ".frToolBar.frState.btnPlanes"
102     set widgets(btnQuant)          ".frToolBar.frState.btnQuant"
103     set widgets(btnRotate)         ".frToolBar.frMouse.btnRotate"
104     set widgets(btnBright)         ".frToolBar.frMouse.btnBright"
105     set widgets(btnPan)            ".frToolBar.frMouse.btnPan"
106     set widgets(btnZoom)           ".frToolBar.frMouse.btnZoom"
107     set widgets(btnClear)          ".frToolBar.frProfil.btnClear"
108     set widgets(btnIntensity)      ".frToolBar.frProfil.btnIntensity"
109     set widgets(btnLinear)         ".frToolBar.frProfil.btnLinear"
110     set widgets(btnArea)           ".frToolBar.frProfil.btnArea"
111     set widgets(btnHelp)           ".frToolBar.frHelp.btnHelp"
112
113 }
114
115 proc global_window::show { imgpath } {
116
117     # For programming facilities
118     upvar global_window::widgets widgets
119     upvar global_window::images            images
120     upvar global_window::im1               im1
121     upvar global_window::im2               im2
122     upvar global_window::data_loaded       data_loaded
123     upvar global_window::window_shown      window_shown
124
125     set data_loaded 0
126     set window_shown 0
127
128     # Images
129     set images(connect)      [ image create photo -file "$imgpath/connect.gif" ]
130     set images(loadexp)      [ image create photo -file "$imgpath/loadexp.gif" ]
131     set images(save)         [ image create photo -file "$imgpath/save.gif" ]
132     set images(excel)        [ image create photo -file "$imgpath/excel.gif" ]
133     set images(params)       [ image create photo -file "$imgpath/params.gif" ]
134     set images(wizard)       [ image create photo -file "$imgpath/wizard.gif" ]
135     set images(back)         [ image create photo -file "$imgpath/back.gif" ]
136     set images(imagebrowser) [ image create photo -file "$imgpath/imagebrowser.gif" ]
137     set images(subtract)     [ image create photo -file "$imgpath/subtract.gif" ]
138     set images(triD)         [ image create photo -file "$imgpath/3D.gif" ]
139     set images(plans)        [ image create photo -file "$imgpath/plans.gif" ]
140     set images(quant)        [ image create photo -file "$imgpath/quant.gif" ]
141     set images(rotate)       [ image create photo -file "$imgpath/rotate.gif" ]
142     set images(bright)       [ image create photo -file "$imgpath/bright.gif" ]
143     set images(pan)          [ image create photo -file "$imgpath/pan.gif" ]
144     set images(zoom)         [ image create photo -file "$imgpath/zoom.gif" ]
145     set images(clear)        [ image create photo -file "$imgpath/clear.gif" ]
146     set images(intensity)    [ image create photo -file "$imgpath/intensity.gif" ]
147     set images(linear)       [ image create photo -file "$imgpath/linear.gif" ]
148     set images(area)         [ image create photo -file "$imgpath/area.gif" ]
149     set images(help)         [ image create photo -file "$imgpath/help.gif" ]
150     set images(extract)      [ image create photo -file "$imgpath/extract.gif" ]
151     set images(del_axis)     [ image create photo -file "$imgpath/del_axis.gif" ]
152     set images(add)          [ image create photo -file "$imgpath/add.gif" ]
153     set images(continue)     [ image create photo -file "$imgpath/continue.gif" ]
154     set im1                  [ image create photo -file "$imgpath/redgreen.gif" ]
155     set im2                  [ image create photo -file "$imgpath/redblue.gif" ]
156
157     loadParams_dll "params.dat"
158     
159     global_window::create $imgpath
160      data_browser::create $widgets(work) 0x1
161     image_browser::create $widgets(work) 0x2
162              u_3D::create $widgets(work) 0x4
163     planes_window::create $widgets(work) 0x8
164
165     global_window::positionate
166
167 }
168
169 proc global_window::create { imgpath } {
170
171     # For programming facilities
172     upvar global_window::widgets     widgets
173     upvar global_window::images      images
174     upvar global_window::en_help     en_help
175     upvar global_window::en_quant    en_quant
176     upvar global_window::en_planes   en_planes
177     upvar global_window::en_3D       en_3D
178     upvar global_window::en_subtract en_subtract
179     upvar global_window::en_ibrw     en_ibrw
180     upvar global_window::en_params   en_params
181     upvar global_window::en_save     en_save
182     upvar global_window::en_load     en_load
183     upvar global_window::en_open     en_open
184     upvar global_window::en_excel    en_excel
185     upvar global_window::en_wizard   en_wizard
186  
187     global_window::reset
188
189     # toplevel...
190     wm focusmodel       $widgets(base) passive
191     wm geometry         $widgets(base) 912x564+16+108
192     wm minsize          $widgets(base) 50 50
193     wm overrideredirect $widgets(base) 0
194     wm resizable        $widgets(base) 1 1
195     wm deiconify        $widgets(base)
196     wm title            $widgets(base) "$string_table::str_maracas_title"
197
198     # frames
199     frame $widgets(toolBar)      -borderwidth 1 -height 1 -relief flat -width 1
200     frame $widgets(toolsAllData) -borderwidth 2 -height 1 -relief groove -width 1
201     frame $widgets(toolsData)    -borderwidth 2 -height 1 -relief groove -width 1
202     frame $widgets(toolsState)   -borderwidth 2 -height 1 -relief groove -width 1
203     frame $widgets(toolsMouse)   -borderwidth 2 -height 1 -relief groove -width 1
204     frame $widgets(toolsProfil)  -borderwidth 2 -height 1 -relief groove -width 1
205     frame $widgets(toolsHelp)    -borderwidth 2 -height 1 -relief groove -width 1
206     frame $widgets(work)         -borderwidth 1 -height 1 -relief flat -width 1
207
208     # buttons
209     button $widgets(btnChooseDataPath) -relief flat -image $images(connect)      -command "global_window::cb_open_data"
210     button $widgets(btnLoadExperiment) -relief flat -image $images(loadexp)      -command "global_window::open_data"
211     button $widgets(btnSaveExperiment) -relief flat -image $images(save)         -command "global_window::save_data"
212     button $widgets(btnSaveExcel)      -relief flat -image $images(excel)        -command "global_window::save_data_as_excel"
213     button $widgets(btnParam)          -relief flat -image $images(params)       -command "global_window::cb_load_params"
214     button $widgets(btnWizard)         -relief flat -image $images(wizard)       -command "global_window::show_wizard"
215     button $widgets(btnBack)           -relief flat -image $images(back)         -command "global_window::back"
216     button $widgets(btnIbrw)           -relief flat -image $images(imagebrowser) -command "global_window::cb_image_browse"
217     button $widgets(btnSubtract)       -relief flat -image $images(subtract)     -command "global_window::subtract"
218     button $widgets(btn3D)             -relief flat -image $images(triD)         -command "global_window::start_3D"
219     button $widgets(btnPlanes)         -relief flat -image $images(plans)        -command "global_window::show_planes"
220     button $widgets(btnQuant)          -relief flat -image $images(quant)        -command "global_window::do_quant"
221     button $widgets(btnClear)                       -image $images(clear)        -command "global_window::clear"
222     button $widgets(btnHelp)           -relief flat -image $images(help)         -command "help_wnd::show_about $imgpath"
223                 
224     radiobutton $widgets(btnRotate)    -indicatoron 0 -variable left_button -value 1 -relief flat -image $images(rotate)    -command "global_window::set_mouse_left_events 0x4"
225     radiobutton $widgets(btnPan)       -indicatoron 0 -variable left_button -value 2 -relief flat -image $images(pan)       -command "global_window::set_mouse_left_events 0x2"
226     radiobutton $widgets(btnIntensity) -indicatoron 0 -variable left_button -value 3 -relief flat -image $images(intensity) -command "global_window::set_mouse_left_events 0x1"
227
228     radiobutton $widgets(btnBright) -indicatoron 0 -variable right_button -value 1 -relief flat -image $images(bright)    -command "global_window::set_mouse_right_events 0x8"
229     radiobutton $widgets(btnZoom)   -indicatoron 0 -variable right_button -value 2 -relief flat -image $images(zoom)      -command "global_window::set_mouse_right_events 0x4"
230     radiobutton $widgets(btnLinear) -indicatoron 0 -variable right_button -value 3 -relief flat -image $images(linear)    -command "global_window::set_mouse_right_events 0x2"
231     radiobutton $widgets(btnArea)   -indicatoron 0 -variable right_button -value 4 -relief flat -image $images(area)      -command "global_window::set_mouse_right_events 0x1"
232
233     bind $widgets(btnChooseDataPath) <Enter> { if { [ string compare [ %W cget -state ] "normal" ] == 0 } { %W configure -relief raised } }
234     bind $widgets(btnLoadExperiment) <Enter> { if { [ string compare [ %W cget -state ] "normal" ] == 0 } { %W configure -relief raised } }
235     bind $widgets(btnSaveExperiment) <Enter> { if { [ string compare [ %W cget -state ] "normal" ] == 0 } { %W configure -relief raised } }
236     bind $widgets(btnSaveExcel)      <Enter> { if { [ string compare [ %W cget -state ] "normal" ] == 0 } { %W configure -relief raised } }
237     bind $widgets(btnParam)          <Enter> { if { [ string compare [ %W cget -state ] "normal" ] == 0 } { %W configure -relief raised } }
238     bind $widgets(btnWizard)         <Enter> { if { [ string compare [ %W cget -state ] "normal" ] == 0 } { %W configure -relief raised } }
239     bind $widgets(btnBack)           <Enter> { if { [ string compare [ %W cget -state ] "normal" ] == 0 } { %W configure -relief raised } }
240     bind $widgets(btnIbrw)           <Enter> { if { [ string compare [ %W cget -state ] "normal" ] == 0 } { %W configure -relief raised } }
241     bind $widgets(btnSubtract)       <Enter> { if { [ string compare [ %W cget -state ] "normal" ] == 0 } { %W configure -relief raised } }
242     bind $widgets(btn3D)             <Enter> { if { [ string compare [ %W cget -state ] "normal" ] == 0 } { %W configure -relief raised } }
243     bind $widgets(btnPlanes)         <Enter> { if { [ string compare [ %W cget -state ] "normal" ] == 0 } { %W configure -relief raised } }
244     bind $widgets(btnQuant)          <Enter> { if { [ string compare [ %W cget -state ] "normal" ] == 0 } { %W configure -relief raised } }
245     bind $widgets(btnRotate)         <Enter> { if { [ string compare [ %W cget -state ] "normal" ] == 0 } { %W configure -relief raised } }
246     bind $widgets(btnHelp)           <Enter> { if { [ string compare [ %W cget -state ] "normal" ] == 0 } { %W configure -relief raised } }
247
248     bind $widgets(btnChooseDataPath) <Leave> { %W configure -relief flat }
249     bind $widgets(btnLoadExperiment) <Leave> { %W configure -relief flat }
250     bind $widgets(btnSaveExperiment) <Leave> { %W configure -relief flat }
251     bind $widgets(btnSaveExcel)      <Leave> { %W configure -relief flat }
252     bind $widgets(btnParam)          <Leave> { %W configure -relief flat }
253     bind $widgets(btnWizard)         <Leave> { %W configure -relief flat }
254     bind $widgets(btnBack)           <Leave> { %W configure -relief flat }
255     bind $widgets(btnIbrw)           <Leave> { %W configure -relief flat }
256     bind $widgets(btnSubtract)       <Leave> { %W configure -relief flat }
257     bind $widgets(btn3D)             <Leave> { %W configure -relief flat }
258     bind $widgets(btnPlanes)         <Leave> { %W configure -relief flat }
259     bind $widgets(btnQuant)          <Leave> { %W configure -relief flat }
260     bind $widgets(btnRotate)         <Leave> { %W configure -relief flat }
261     bind $widgets(btnHelp)           <Leave> { %W configure -relief flat }
262
263         bind $widgets(base) <Destroy> "global_window::DestroyWindow %W"
264
265     global_window::controls 0
266
267 }
268
269 proc global_window::DestroyWindow { widget } {
270
271     # For programming facilities
272     upvar global_window::widgets widgets
273
274         if { [ string compare $widget $widgets(base) ] == 0 } {
275
276                 freeAllMaracasInterfaces_dll
277
278         }
279
280 }
281
282 proc global_window::positionate { } {
283
284     # For programming facilities
285     upvar global_window::widgets     widgets
286     upvar global_window::show_params show_params
287
288     set show_params -1
289
290     pack $widgets(toolBar)           -anchor n  -expand 0 -fill both -side top
291     pack $widgets(toolsAllData)      -anchor nw -expand 0 -fill none -side left
292     pack $widgets(btnChooseDataPath) -anchor nw -expand 0 -fill none -side left
293     pack $widgets(btnLoadExperiment) -anchor nw -expand 0 -fill none -side left
294     pack $widgets(btnSaveExperiment) -anchor nw -expand 0 -fill none -side left
295     pack $widgets(btnSaveExcel)      -anchor nw -expand 0 -fill none -side left
296     pack $widgets(btnParam)          -anchor nw -expand 0 -fill none -side left
297     pack $widgets(btnWizard)         -anchor nw -expand 0 -fill none -side left
298     pack $widgets(toolsData)         -anchor nw -expand 0 -fill none -side left
299     pack $widgets(btnIbrw)           -anchor nw -expand 0 -fill none -side left
300     pack $widgets(btnSubtract)       -anchor nw -expand 0 -fill none -side left
301     pack $widgets(toolsState)        -anchor nw -expand 0 -fill none -side left
302     pack $widgets(btnBack)           -anchor nw -expand 0 -fill none -side left
303     pack $widgets(btn3D)             -anchor nw -expand 0 -fill none -side left
304     pack $widgets(btnPlanes)         -anchor nw -expand 0 -fill none -side left
305     pack $widgets(btnQuant)          -anchor nw -expand 0 -fill none -side left
306     pack $widgets(toolsMouse)        -anchor nw -expand 0 -fill none -side left
307     pack $widgets(btnRotate)         -anchor nw -expand 0 -fill none -side left
308     pack $widgets(btnBright)         -anchor nw -expand 0 -fill none -side left
309     pack $widgets(btnPan)            -anchor nw -expand 0 -fill none -side left
310     pack $widgets(btnZoom)           -anchor nw -expand 0 -fill none -side left
311     pack $widgets(toolsProfil)       -anchor nw -expand 0 -fill none -side left
312     pack $widgets(btnClear)          -anchor nw -expand 0 -fill none -side left
313     pack $widgets(btnIntensity)      -anchor nw -expand 0 -fill none -side left
314     pack $widgets(btnLinear)         -anchor nw -expand 0 -fill none -side left
315     pack $widgets(btnArea)           -anchor nw -expand 0 -fill none -side left
316     pack $widgets(toolsHelp)         -anchor nw -expand 0 -fill none -side left
317     pack $widgets(btnHelp)           -anchor nw -expand 0 -fill none -side left
318     pack $widgets(work)              -anchor n  -expand 1 -fill both -side top
319
320 }
321
322 proc global_window::forget { } {
323
324     # For programming facilities
325     upvar global_window::widgets widgets
326
327     pack forget $widgets(work)
328     pack forget $widgets(btnHelp)
329     pack forget $widgets(toolsHelp)
330     pack forget $widgets(btnArea)
331     pack forget $widgets(btnLinear)
332     pack forget $widgets(btnIntensity)
333     pack forget $widgets(btnClear)
334     pack forget $widgets(toolsProfil)
335     pack forget $widgets(btnZoom)
336     pack forget $widgets(btnPan)
337     pack forget $widgets(btnBright)
338     pack forget $widgets(btnRotate)
339     pack forget $widgets(toolsMouse)
340     pack forget $widgets(btnQuant)
341     pack forget $widgets(btnPlanes)
342     pack forget $widgets(btn3D)
343     pack forget $widgets(btnBack)
344     pack forget $widgets(toolsState)
345     pack forget $widgets(btnSubtract)
346     pack forget $widgets(btnIbrw)
347     pack forget $widgets(toolsData)
348     pack forget $widgets(btnWizard)
349     pack forget $widgets(btnParam)
350     pack forget $widgets(btnLoadExperiment)
351     pack forget $widgets(btnSaveExcel)
352     pack forget $widgets(btnSaveExperiment)
353     pack forget $widgets(btnChooseDataPath)
354     pack forget $widgets(toolsAllData)
355     pack forget $widgets(toolBar)
356
357 }
358
359 proc global_window::get_active_controls { } {
360
361     # For programming facilities
362     upvar global_window::widgets      widgets
363     upvar global_window::en_quant     en_quant    
364     upvar global_window::en_planes    en_planes   
365     upvar global_window::en_3D        en_3D       
366     upvar global_window::en_subtract  en_subtract 
367     upvar global_window::en_ibrw      en_ibrw     
368     upvar global_window::en_params    en_params   
369     upvar global_window::en_save      en_save     
370     upvar global_window::en_load      en_load     
371     upvar global_window::en_open      en_open     
372     upvar global_window::en_help      en_help     
373     upvar global_window::en_rotate    en_rotate   
374     upvar global_window::en_bright    en_bright   
375     upvar global_window::en_pan       en_pan      
376     upvar global_window::en_zoom      en_zoom     
377     upvar global_window::en_clear     en_clear    
378     upvar global_window::en_intensity en_intensity
379     upvar global_window::en_linear    en_linear   
380     upvar global_window::en_area      en_area     
381     upvar global_window::en_back      en_back
382     upvar global_window::en_excel     en_excel
383     upvar global_window::en_wizard    en_wizard
384
385         set ret 0
386     if { [ string compare [ $widgets(btnQuant)          cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_quant     ] }
387     if { [ string compare [ $widgets(btnPlanes)         cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_planes    ] }
388     if { [ string compare [ $widgets(btn3D)             cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_3D        ] }
389     if { [ string compare [ $widgets(btnSubtract)       cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_subtract  ] }
390     if { [ string compare [ $widgets(btnIbrw)           cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_ibrw      ] }
391     if { [ string compare [ $widgets(btnParam)          cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_params    ] }
392     if { [ string compare [ $widgets(btnSaveExperiment) cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_save      ] }
393     if { [ string compare [ $widgets(btnLoadExperiment) cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_load      ] }
394     if { [ string compare [ $widgets(btnChooseDataPath) cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_open      ] }
395     if { [ string compare [ $widgets(btnHelp)           cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_help      ] }
396     if { [ string compare [ $widgets(btnRotate)         cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_rotate    ] }
397     if { [ string compare [ $widgets(btnBright)         cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_bright    ] }
398     if { [ string compare [ $widgets(btnPan)            cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_pan       ] }
399     if { [ string compare [ $widgets(btnZoom)           cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_zoom      ] }
400     if { [ string compare [ $widgets(btnClear)          cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_clear     ] }
401     if { [ string compare [ $widgets(btnIntensity)      cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_intensity ] }
402     if { [ string compare [ $widgets(btnLinear)         cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_linear    ] }
403     if { [ string compare [ $widgets(btnArea)           cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_area      ] }
404     if { [ string compare [ $widgets(btnBack)           cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_back      ] }
405     if { [ string compare [ $widgets(btnSaveExcel)      cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_excel     ] }
406     if { [ string compare [ $widgets(btnWizard)         cget -state ] "normal" ] == 0 } { set ret [ expr $ret | $en_wizard    ] }
407
408         return $ret
409
410 }
411
412 proc global_window::active_controls { mask } {
413
414     # For programming facilities
415     upvar global_window::widgets      widgets
416     upvar global_window::en_quant     en_quant    
417     upvar global_window::en_planes    en_planes   
418     upvar global_window::en_3D        en_3D       
419     upvar global_window::en_subtract  en_subtract 
420     upvar global_window::en_ibrw      en_ibrw     
421     upvar global_window::en_params    en_params   
422     upvar global_window::en_save      en_save     
423     upvar global_window::en_load      en_load     
424     upvar global_window::en_open      en_open     
425     upvar global_window::en_help      en_help     
426     upvar global_window::en_rotate    en_rotate   
427     upvar global_window::en_bright    en_bright   
428     upvar global_window::en_pan       en_pan      
429     upvar global_window::en_zoom      en_zoom     
430     upvar global_window::en_clear     en_clear    
431     upvar global_window::en_intensity en_intensity
432     upvar global_window::en_linear    en_linear   
433     upvar global_window::en_area      en_area     
434     upvar global_window::en_back      en_back
435     upvar global_window::en_excel     en_excel
436     upvar global_window::en_wizard    en_wizard
437
438     if { ( $mask & $en_quant     ) == $en_quant     } { $widgets(btnQuant)          configure -state normal } else { $widgets(btnQuant)          configure -state disabled -relief flat }
439     if { ( $mask & $en_planes    ) == $en_planes    } { $widgets(btnPlanes)         configure -state normal } else { $widgets(btnPlanes)         configure -state disabled -relief flat }
440     if { ( $mask & $en_3D        ) == $en_3D        } { $widgets(btn3D)             configure -state normal } else { $widgets(btn3D)             configure -state disabled -relief flat }
441     if { ( $mask & $en_subtract  ) == $en_subtract  } { $widgets(btnSubtract)       configure -state normal } else { $widgets(btnSubtract)       configure -state disabled -relief flat }
442     if { ( $mask & $en_ibrw      ) == $en_ibrw      } { $widgets(btnIbrw)           configure -state normal } else { $widgets(btnIbrw)           configure -state disabled -relief flat }
443     if { ( $mask & $en_params    ) == $en_params    } { $widgets(btnParam)          configure -state normal } else { $widgets(btnParam)          configure -state disabled -relief flat }
444     if { ( $mask & $en_save      ) == $en_save      } { $widgets(btnSaveExperiment) configure -state normal } else { $widgets(btnSaveExperiment) configure -state disabled -relief flat }
445     if { ( $mask & $en_load      ) == $en_load      } { $widgets(btnLoadExperiment) configure -state normal } else { $widgets(btnLoadExperiment) configure -state disabled -relief flat }
446     if { ( $mask & $en_open      ) == $en_open      } { $widgets(btnChooseDataPath) configure -state normal } else { $widgets(btnChooseDataPath) configure -state disabled -relief flat }
447     if { ( $mask & $en_help      ) == $en_help      } { $widgets(btnHelp)           configure -state normal } else { $widgets(btnHelp)           configure -state disabled -relief flat }
448     if { ( $mask & $en_rotate    ) == $en_rotate    } { $widgets(btnRotate)         configure -state normal } else { $widgets(btnRotate)         configure -state disabled -relief flat }
449     if { ( $mask & $en_bright    ) == $en_bright    } { $widgets(btnBright)         configure -state normal } else { $widgets(btnBright)         configure -state disabled -relief flat }
450     if { ( $mask & $en_pan       ) == $en_pan       } { $widgets(btnPan)            configure -state normal } else { $widgets(btnPan)            configure -state disabled -relief flat }
451     if { ( $mask & $en_zoom      ) == $en_zoom      } { $widgets(btnZoom)           configure -state normal } else { $widgets(btnZoom)           configure -state disabled -relief flat }
452     if { ( $mask & $en_clear     ) == $en_clear     } { $widgets(btnClear)          configure -state normal } else { $widgets(btnClear)          configure -state disabled -relief flat }
453     if { ( $mask & $en_intensity ) == $en_intensity } { $widgets(btnIntensity)      configure -state normal } else { $widgets(btnIntensity)      configure -state disabled -relief flat }
454     if { ( $mask & $en_linear    ) == $en_linear    } { $widgets(btnLinear)         configure -state normal } else { $widgets(btnLinear)         configure -state disabled -relief flat }
455     if { ( $mask & $en_area      ) == $en_area      } { $widgets(btnArea)           configure -state normal } else { $widgets(btnArea)           configure -state disabled -relief flat }
456     if { ( $mask & $en_back      ) == $en_back      } { $widgets(btnBack)           configure -state normal } else { $widgets(btnBack)           configure -state disabled -relief flat }
457     if { ( $mask & $en_excel     ) == $en_excel     } { $widgets(btnSaveExcel)      configure -state normal } else { $widgets(btnSaveExcel)      configure -state disabled -relief flat }
458     if { ( $mask & $en_wizard    ) == $en_wizard    } { $widgets(btnWizard)         configure -state normal } else { $widgets(btnWizard)         configure -state disabled -relief flat }
459
460 }
461
462 proc global_window::cb_load_params { } {
463
464     # For programming facilities
465     upvar global_window::widgets      widgets
466     upvar global_window::sh_none      sh_none
467     upvar global_window::sh_data      sh_data
468     upvar global_window::sh_ibrw      sh_ibrw
469     upvar global_window::sh_3D_mpr    sh_3D_mpr
470     upvar global_window::sh_3D_mip    sh_3D_mip
471     upvar global_window::sh_3D_sur    sh_3D_sur
472     upvar global_window::sh_3D_qua    sh_3D_qua
473     upvar global_window::window_shown window_shown
474     upvar global_window::show_params  show_params
475
476     set ac_ctrls [ global_window::get_active_controls ]
477
478     set p [ params_dll ]
479     array set arrB $p
480     set p [ dlg_params::show $widgets(work) $p ]
481     array set arrP $p
482     if { $p != "" } {
483
484         setParams_dll $p
485         saveParams_dll "params.dat"
486
487         # Recalculate axes, if an
488         u_surf::reload_axis [ expr ( $arrB(e_mask_size) != $arrP(e_mask_size) ) || ( $arrB(e_coef_cell_max_int) != $arrP(e_coef_cell_max_int) ) ] [ expr ( $arrB(e_axis_discret_step) != $arrP(e_axis_discret_step) ) ]
489         planes_window::reload_axis [ expr ( $arrB(e_mask_size) != $arrP(e_mask_size) ) || ( $arrB(e_coef_cell_max_int) != $arrP(e_coef_cell_max_int) ) ] [ expr ( $arrB(e_axis_discret_step) != $arrP(e_axis_discret_step) ) ]
490
491     }
492     global_window::active_controls $ac_ctrls
493
494 }
495
496 proc global_window::cb_open_data { } {
497
498     # For programming facilities
499     upvar global_window::data_loaded_from_disk data_loaded_from_disk
500
501     busy hold .
502     update
503
504     planes_window::forget
505     u_3D::forget
506     image_browser::forget
507     data_browser::forget
508     data_browser::set_data
509     set data_loaded_from_disk 0
510     data_browser::positionate
511
512     busy release .
513     update
514
515 }
516
517 proc global_window::cb_image_browse { } {
518
519     busy hold .
520     update
521
522     planes_window::forget
523     u_3D::forget
524     image_browser::forget
525     data_browser::forget
526     image_browser::set_data
527     image_browser::positionate
528
529     busy release .
530     update
531
532 }
533
534 proc global_window::start_3D { } {
535
536     busy hold .
537     update
538
539     planes_window::forget
540     u_3D::forget
541     image_browser::forget
542     data_browser::forget
543     u_3D::set_data
544     u_3D::positionate
545
546     busy release .
547     update
548
549 }
550
551 proc global_window::show_planes { } {
552
553     busy hold .
554     update
555
556     planes_window::forget
557     u_3D::forget
558     image_browser::forget
559     data_browser::forget
560     planes_window::set_data
561     planes_window::positionate
562
563     busy release .
564     update
565
566 }
567
568 proc global_window::do_quant { } {
569
570     planes_window::do_quant
571
572 }
573
574 proc global_window::subtract { } {
575
576     # For programming facilities
577     upvar global_window::widgets widgets
578
579     set sub_data [ data_browser::get_subdata ]
580     
581     if { [ llength $sub_data ] == 2 } {
582     
583         set sub_info [ subtract::show $widgets(work) [ lindex $sub_data 0 ] [ lindex $sub_data 1 ] ]
584         busy hold .
585         update
586
587         if { [ lindex $sub_info 0 ] == 12 } {
588
589             subtractSeries_dll [ lindex $sub_data 0 ] [ lindex $sub_data 1 ] [ lindex $sub_info 2 ] [ lindex $sub_info 1 ]
590
591         } elseif { [ lindex $sub_info 0 ] == 21 } {
592
593             subtractSeries_dll [ lindex $sub_data 1 ] [ lindex $sub_data 2 ] [ lindex $sub_info 2 ] [ lindex $sub_info 1 ]
594
595         }
596         busy release .
597         update
598     
599     }
600
601 }
602
603 proc global_window::save_data_as_excel { } {
604
605     # For programming facilities
606     upvar global_window::widgets widgets
607
608     set fileName "exp_$data_browser::sel_study\_$data_browser::sel_serie\.xls"
609
610     array set arr [ params_dll -1 ]
611     set fileName [                                                \
612         tk_getSaveFile                                            \
613         -initialdir $arr(e_installation_directory)                 \
614         -initialfile $fileName                                    \
615         -parent $widgets(work)                                    \
616         -filetypes { { {Excel Files} {.xls} } { {All files} * } } \
617         -defaultextension dat                                     \
618         -title $string_table::str_choose_a_file                   \
619     ]
620
621     if { $fileName != "" } {
622
623         busy hold .
624         update
625         set res [ saveAsExcel_dll $fileName ]
626         busy release .
627         update
628
629     }
630
631 }
632
633 proc global_window::save_data { } {
634
635     # For programming facilities
636     upvar global_window::widgets widgets
637
638     set fileName "exp_$data_browser::sel_study\_$data_browser::sel_serie\.dat"
639     set filetext "axis.txt"
640     set fileraw "vol.raw"
641
642     array set arr [ params_dll ]
643     set fileName [                                               \
644         tk_getSaveFile                                           \
645         -initialdir $arr(e_installation_directory)                \
646         -initialfile $fileName                                   \
647         -parent $widgets(work)                                   \
648         -filetypes { { {Data Files} {.dat} } { {All files} * } } \
649         -defaultextension dat                                    \
650         -title $string_table::str_choose_a_file                  \
651     ]
652
653 #    set fileraw [                                               \
654 #        tk_getSaveFile                                           \
655 #        -initialdir $arr(e_installation_directory)                \
656 #        -initialfile $fileraw                                   \
657 #        -parent $widgets(work)                                   \
658 #        -filetypes { { {Raw volumes} {.raw} } } \
659 #        -defaultextension raw                                    \
660 #        -title $string_table::str_choose_a_file                  \
661 #    ]
662
663     set filetext "iamnotforyouruse.txt"
664 #    set filetext [                                               \
665 #        tk_getSaveFile                                           \
666 #        -initialdir $arr(e_installation_directory)                \
667 #        -initialfile $filetext                                   \
668 #        -parent $widgets(work)                                   \
669 #        -filetypes { { {Text Files} {.txt} } } \
670 #        -defaultextension txt                                    \
671 #        -title $string_table::str_choose_a_file                  \
672 #    ]
673
674     if { $fileName != "" } {
675
676         busy hold .
677         update
678         set res [ SaveExperiment_dll $fileName ]
679 #        saveVolumeAsRaw_dll $fileraw
680         busy release .
681         update
682
683
684     }
685
686 }
687
688 proc global_window::open_data { } {
689
690     # For programming facilities
691     upvar global_window::widgets widgets
692     upvar global_window::data_loaded_from_disk data_loaded_from_disk
693
694     array set arr [ params_dll -1 ]
695     set fileName [                                               \
696         tk_getOpenFile                                           \
697         -initialdir $arr(e_installation_directory)                \
698         -parent $widgets(work)                                   \
699         -filetypes { { {Data Files} {.dat} } { {All files} * } } \
700         -defaultextension dat                                    \
701         -title $string_table::str_choose_a_file                  \
702     ]
703
704     if { $fileName != "" } {
705
706         busy hold .
707         update
708         set res [ loadExperiment_dll $fileName ]
709         set data_loaded_from_disk 1
710         busy release .
711         update
712         array set ser_data [ seriedata_dll [ getStudy_dll ] [ getSerie_dll ] ]
713         global_window::set_window_title "$ser_data(ID_Patient_Name) - [ getStudy_dll ]/[ getSerie_dll ]"
714         global_window::show_planes
715
716     }
717
718 }
719
720 proc global_window::set_mouse_left_events { mask } {
721
722     image_browser::set_mouse_left_events $mask
723     u_mpr::set_mouse_left_events $mask
724     u_mip::set_mouse_left_events $mask
725     u_surf::set_mouse_left_events $mask
726     planes_window::set_mouse_left_events $mask
727
728 }
729
730 proc global_window::set_mouse_right_events { mask } {
731
732     image_browser::set_mouse_right_events $mask
733     u_mpr::set_mouse_right_events $mask
734     u_mip::set_mouse_right_events $mask
735     u_surf::set_mouse_right_events $mask
736     planes_window::set_mouse_right_events $mask
737
738 }
739
740 proc global_window::clear { } {
741
742     image_browser::clear
743 #    planes_window::clear
744
745 }
746
747 proc global_window::show_wizard { } {
748
749     # For programming facilities
750     upvar global_window::widgets widgets
751
752     wizardpostaxis::show $widgets(work)
753     wizardpostcontour::show $widgets(work)
754
755 }
756
757 proc global_window::invoke_buttons { mask } {
758
759     # For programming facilities
760     upvar global_window::widgets widgets
761     upvar global_window::en_quant          en_quant    
762     upvar global_window::en_planes         en_planes   
763     upvar global_window::en_3D             en_3D       
764     upvar global_window::en_subtract       en_subtract 
765     upvar global_window::en_ibrw           en_ibrw     
766     upvar global_window::en_params         en_params   
767     upvar global_window::en_save           en_save     
768     upvar global_window::en_load           en_load     
769     upvar global_window::en_open           en_open     
770     upvar global_window::en_help           en_help     
771     upvar global_window::en_rotate         en_rotate   
772     upvar global_window::en_bright         en_bright   
773     upvar global_window::en_pan            en_pan      
774     upvar global_window::en_zoom           en_zoom     
775     upvar global_window::en_clear          en_clear    
776     upvar global_window::en_intensity      en_intensity
777     upvar global_window::en_linear         en_linear   
778     upvar global_window::en_area           en_area     
779
780     if { ( $mask & $en_quant     ) == $en_quant     } { $widgets(btnQuant)          invoke }
781     if { ( $mask & $en_planes    ) == $en_planes    } { $widgets(btnPlanes)         invoke }
782     if { ( $mask & $en_3D        ) == $en_3D        } { $widgets(btn3D)             invoke }
783     if { ( $mask & $en_subtract  ) == $en_subtract  } { $widgets(btnSubtract)       invoke }
784     if { ( $mask & $en_ibrw      ) == $en_ibrw      } { $widgets(btnIbrw)           invoke }
785     if { ( $mask & $en_params    ) == $en_params    } { $widgets(btnParam)          invoke }
786     if { ( $mask & $en_save      ) == $en_save      } { $widgets(btnSaveExperiment) invoke }
787     if { ( $mask & $en_load      ) == $en_load      } { $widgets(btnLoadExperiment) invoke }
788     if { ( $mask & $en_open      ) == $en_open      } { $widgets(btnChooseDataPath) invoke }
789     if { ( $mask & $en_help      ) == $en_help      } { $widgets(btnHelp)           invoke }
790     if { ( $mask & $en_rotate    ) == $en_rotate    } { $widgets(btnRotate)         invoke }
791     if { ( $mask & $en_bright    ) == $en_bright    } { $widgets(btnBright)         invoke }
792     if { ( $mask & $en_pan       ) == $en_pan       } { $widgets(btnPan)            invoke }
793     if { ( $mask & $en_zoom      ) == $en_zoom      } { $widgets(btnZoom)           invoke }
794     if { ( $mask & $en_clear     ) == $en_clear     } { $widgets(btnClear)          invoke }
795     if { ( $mask & $en_intensity ) == $en_intensity } { $widgets(btnIntensity)      invoke }
796     if { ( $mask & $en_linear    ) == $en_linear    } { $widgets(btnLinear)         invoke }
797     if { ( $mask & $en_area      ) == $en_area      } { $widgets(btnArea)           invoke }
798
799 }
800
801 proc global_window::deselect_buttons { } {
802
803     # For programming facilities
804     upvar global_window::widgets widgets
805
806     $widgets(btnRotate)    deselect
807     $widgets(btnBright)    deselect
808     $widgets(btnPan)       deselect
809     $widgets(btnZoom)      deselect
810     $widgets(btnIntensity) deselect
811     $widgets(btnLinear)    deselect
812     $widgets(btnArea)      deselect
813
814 }
815
816 proc global_window::set_window_title { title } {
817
818     # For programming facilities
819     upvar global_window::widgets widgets
820
821     wm title $widgets(base) "$string_table::str_maracas_title - $title"
822
823 }
824
825 proc global_window::back { } {
826
827     # For programming facilities
828     upvar global_window::data_loaded_from_disk data_loaded_from_disk
829
830     if { [ image_browser::back ] == 1 } {
831
832         global_window::cb_open_data
833
834     } elseif { [ u_3D::back ] == 1 } {
835
836         busy hold .
837         update
838
839         if { $data_loaded_from_disk == 1 } {
840
841             set data_browser::sel_study [ getStudy_dll ]
842             set data_browser::sel_serie [ getSerie_dll ]
843             image_browser::set_data
844         
845         }
846         
847         planes_window::forget
848         u_3D::forget
849         image_browser::forget
850         data_browser::forget
851         image_browser::positionate
852
853         busy release .
854         update
855
856     } elseif { [ planes_window::back ] == 1 } {
857
858         busy hold .
859         update
860
861         if { $data_loaded_from_disk == 1 } {
862         
863             image_browser::set_data2
864             u_3D::set_data
865             
866         }
867         planes_window::forget
868         u_3D::forget
869         image_browser::forget
870         data_browser::forget
871         u_3D::positionate
872         u_3D::controls 2
873
874         busy release .
875         update
876
877     }
878
879 }
880
881 proc global_window::controls { { id -1 } } {
882         
883     if { $id == -1 } {
884         global_window::active_controls 0
885     } else {
886
887         global_window::active_controls [  \
888             expr                          \
889             $global_window::en_params   | \
890             $global_window::en_load     | \
891             $global_window::en_open     | \
892             $global_window::en_help     | \
893             0
894         ]
895
896     }
897
898 }
899
900 # EOF - global_window.tcl