source: trunk/SRC/ToBeReviewed/HOPE/rh_alldomains.pro @ 163

Last change on this file since 163 was 163, checked in by navarro, 18 years ago

header improvements : type of parameters and keywords, default values, spell checking + idldoc assistant (IDL online_help)

  • Property svn:keywords set to Id
File size: 6.2 KB
Line 
1;+
2; @file_comments
3;
4;
5; @categories
6;
7;
8; @param TOPID
9;
10;
11; @param SELECTED
12;
13;
14; @returns
15;
16;
17; @uses
18;
19;
20; @restrictions
21;
22;
23; @examples
24;
25;
26; @history
27;
28;
29; @version
30; $Id$
31;
32; @todo seb
33;
34;-
35PRO rh_alldomains, topid, selected
36;
37  compile_opt idl2, strictarrsubs
38;
39
40   widget_control, topid, get_uvalue=top_uvalue
41   widget_control, topid, update=0
42;
43   selectedline=(*top_uvalue[1, findline(top_uvalue, 'linetype')])[selected]
44;
45; we get the size of the dimenstion id of this section
46;
47   dimvar = *top_uvalue[1, findline(top_uvalue, 'dimvar')]
48   typedim = *top_uvalue[1, findline(top_uvalue, 'typedim')]
49   dimlist = *top_uvalue[1, findline(top_uvalue, 'dimlist')]
50   sizedim = *top_uvalue[1, findline(top_uvalue, 'sizedim')]
51;
52; buttons to select type of line : odd, even or odd-even
53;
54   linechoicebase=widget_info(topid,find_by_uname = 'linechoicebase')
55   id = widget_info(linechoicebase,find_by_uname = 'linechoice')
56   IF id NE 0 THEN widget_control, id, /destroy
57   choice = ''
58   if (where(selectedline EQ 'odd'))[0] NE -1 then choice = [choice, 'odd']
59   if (where(selectedline EQ 'even'))[0] NE -1 then choice = [choice, 'even']
60   if (where(selectedline EQ 'odd-even'))[0] NE -1 then choice = [choice, 'odd-even']
61   choice = choice[1:n_elements(choice)-1]
62   nothing = cw_bgroup(linechoicebase,choice, /row,/exclusive, /return_name, uname = 'linechoice', uvalue = {name:'linechoice'})
63   widget_control, nothing, set_value = 0
64   sensitive = bytarr(3)
65   sensitive[where(['odd', 'even', 'odd-even'] eq choice[0])] = 1
66;
67;  odd points domain
68;
69   basedomainodd=widget_info(topid,find_by_uname = 'basedomainodd')
70   id = widget_info(basedomainodd,find_by_uname = 'title')
71   IF id NE 0 THEN widget_control, id, /destroy
72   oddsecchoice = where(selectedline EQ 'odd')
73   if oddsecchoice[0] NE -1 then BEGIN
74      oddsecchoice = selected[oddsecchoice]
75      nothing=widget_label(basedomainodd, value = 'Domain of the odd points', uname = 'title')
76      IF n_elements(oddsecchoice) GT 1 THEN BEGIN
77         selecteddim = dimvar[*, oddsecchoice]
78         sorteddim = selecteddim
79         FOR i = 0, n_elements(oddsecchoice)-1 DO $
80          sorteddim[*, i] = selecteddim[sortdim(typedim[selecteddim[*, i]]), i]
81         zdim = sorteddim[2, *]
82         sizedims = sizedim[zdim]
83         sortedzdim = sort(sizedims)
84         sizedims = sizedims[sortedzdim]
85         oddsecchoice = oddsecchoice[sortedzdim]
86         nothing=widget_droplist(basedomainodd,title = 'number of levels', value = strtrim(sizedims, 2), uvalue = {name:'oddsecchoice'}, uname='oddsecchoice')
87      ENDIF
88      domainpart, top_uvalue, basedomainodd, oddsecchoice[0]
89      widget_control, basedomainodd, set_uvalue = oddsecchoice
90   ENDIF ELSE BEGIN
91      nothing=widget_label(basedomainodd, value = ' ', uname = 'title')
92      domainpart, top_uvalue, basedomainodd, /destroy
93      widget_control, basedomainodd, set_uvalue = -1
94   ENDELSE
95   widget_control, basedomainodd, sensitive = sensitive[0]
96;
97;  even points domain
98;
99   basedomaineven=widget_info(topid,find_by_uname = 'basedomaineven')
100   id = widget_info(basedomaineven,find_by_uname = 'title')
101   IF id NE 0 THEN widget_control, id, /destroy
102   evensecchoice = where(selectedline EQ 'even')
103   if evensecchoice[0] NE -1 then BEGIN
104      evensecchoice = selected[evensecchoice]
105      nothing=widget_label(basedomaineven, value = 'Domain of the even points', uname = 'title')
106      IF n_elements(evensecchoice) GT 1 THEN BEGIN
107         selecteddim = dimvar[*, evensecchoice]
108         sorteddim = selecteddim
109         FOR i = 0, n_elements(evensecchoice)-1 DO $
110          sorteddim[*, i] = selecteddim[sortdim(typedim[selecteddim[*, i]]), i]
111         zdim = sorteddim[2, *]
112         sizedims = sizedim[zdim]
113         sortedzdim = sort(sizedims)
114         sizedims = sizedims[sortedzdim]
115         evensecchoice = evensecchoice[sortedzdim]
116         nothing=widget_droplist(basedomaineven,title = 'number of levels', value = strtrim(sizedims, 2), uvalue = {name:'evensecchoice'}, uname='evensecchoice')
117      ENDIF
118      domainpart, top_uvalue, basedomaineven, evensecchoice[0]
119      widget_control, basedomaineven, set_uvalue = evensecchoice
120   ENDIF ELSE BEGIN
121      domainpart, top_uvalue, basedomaineven, /destroy
122      nothing=widget_label(basedomaineven, value = ' ', uname = 'title')
123      widget_control, basedomaineven, set_uvalue = -1
124   ENDELSE
125   widget_control, basedomaineven, sensitive = sensitive[1]
126;
127;  odd-even points domain
128;
129   basedomainoddeven=widget_info(topid,find_by_uname = 'basedomainodd-even')
130   id = widget_info(basedomainoddeven,find_by_uname = 'title')
131   IF id NE 0 THEN widget_control, id, /destroy
132   oddevensecchoice = where(selectedline EQ 'odd-even')
133   if oddevensecchoice[0] NE -1 then BEGIN
134      oddevensecchoice = selected[oddevensecchoice]
135      nothing=widget_label(basedomainoddeven, value = 'Domain of the odd-even points', uname = 'title')
136      IF n_elements(oddevensecchoice) GT 1 THEN BEGIN
137         selecteddim = dimvar[*, oddevensecchoice]
138         sorteddim = selecteddim
139         FOR i = 0, n_elements(oddevensecchoice)-1 DO $
140          sorteddim[*, i] = selecteddim[sortdim(typedim[selecteddim[*, i]]), i]
141         zdim = sorteddim[2, *]
142         sizedims = sizedim[zdim]
143         sortedzdim = sort(sizedims)
144         sizedims = sizedims[sortedzdim]
145         oddevensecchoice = oddevensecchoice[sortedzdim]
146         nothing=widget_droplist(basedomainoddeven,title = 'number of levels', value = strtrim(sizedims, 2), uvalue = {name:'odd-evensecchoice'}, uname='odd-evensecchoice')
147      ENDIF
148      domainpart, top_uvalue, basedomainoddeven, oddevensecchoice[0]
149      widget_control, basedomainoddeven, set_uvalue = oddevensecchoice
150   ENDIF ELSE BEGIN
151      domainpart, top_uvalue, basedomainoddeven, /destroy
152      nothing=widget_label(basedomainoddeven, value = ' ', uname = 'title')
153      widget_control, basedomainoddeven, set_uvalue = -1
154   ENDELSE
155   widget_control, basedomainoddeven, sensitive = sensitive[2]
156;
157   case (where(sensitive EQ 1))[0] of
158      0:*top_uvalue[1, findline(top_uvalue, 'selected')] = oddsecchoice[0]
159      1:*top_uvalue[1, findline(top_uvalue, 'selected')] = evensecchoice[0]
160      2:*top_uvalue[1, findline(top_uvalue, 'selected')] = oddevensecchoice[0]
161   endcase
162;
163   widget_control, topid, update=1
164   return
165end
Note: See TracBrowser for help on using the repository browser.