source: trunk/WIDGET/AUTOUR_de_XXX/xspecifiedessin.pro @ 2

Last change on this file since 2 was 2, checked in by opalod, 22 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 7.1 KB
Line 
1PRO xspecifiedessin_event, event
2   widget_control, event.top, get_uvalue = topid
3   widget_control, topid, get_uvalue = top_uvalue
4   widget_control, event.id, get_uvalue = uval
5   if n_elements(uval) EQ 0 then return
6   case uval of
7      'cancel':widget_control, event.top, /destroy
8      'default':BEGIN
9         exextra = definedefaultextra(top_uvalue.nomvariable)
10         widget_control, widget_info(event.top,find_by_uname='min'), set_value = strtrim(exextra.min, 1)
11         widget_control, widget_info(event.top,find_by_uname='max'), set_value = strtrim(exextra.max, 1)
12         widget_control, widget_info(event.top,find_by_uname='int'), set_value = strtrim(exextra.inter, 1)
13         widget_control, widget_info(event.top,find_by_uname='palnum'), set_value = strtrim(exextra.lct, 1)
14         widget_control, widget_info(event.top,find_by_uname='autres'), set_value = ''
15      END
16      'palcol':BEGIN
17         ind = fix(strmid(event.value, 0, strpos(event.value, '-')))
18         widget_control, widget_info(event.top,find_by_uname='palnum'), set_value = strtrim(ind, 1)
19      END
20      'pzoom':BEGIN
21         widget_control, widget_info(event.top,find_by_uname='pzoom'), get_value = pzoom
22         pzoom = long(pzoom[0])
23         pmaxid = widget_info(event.top,find_by_uname='pmax')
24         widget_control, pmaxid, get_value = pmax
25         pmax = long(pmax[0])
26         if pzoom GT pmax then widget_control, pmaxid, set_value = strtrim(pzoom, 1)
27      END
28      'ok':BEGIN
29         widget_control, widget_info(event.top,find_by_uname='min'), get_value = min
30         min = float(min[0])
31         widget_control, widget_info(event.top,find_by_uname='max'), get_value = max
32         max = float(max[0])
33         widget_control, widget_info(event.top,find_by_uname='int'), get_value = int
34         int = float(int[0])
35         widget_control, widget_info(event.top,find_by_uname='palnum'), get_value = palnum
36         palnum = long(palnum[0])
37         widget_control, widget_info(event.top,find_by_uname='autres'), get_value = autres
38         autres = autres[0]
39;
40         exextra = {min:min, max:max, inter:int, lct:palnum}
41         if autres NE '' then rien = execute('exextra = get_extra('+autres+', _extra = exextra)')
42;
43; si on fait un pltz
44;
45         if top_uvalue.name EQ 'pltz' then begin
46            widget_control, widget_info(event.top,find_by_uname='pzoom'), get_value = pzoom
47            pzoom = long(pzoom[0])
48            pmaxid = widget_info(event.top,find_by_uname='pmax')
49            widget_control, pmaxid, get_value = pmax
50            pmax = long(pmax[0])
51            if pzoom GT pmax then pmax = pzoom
52; si pmax n''est pas la valeur par defaut alors il faut changer la
53; boite utiliseee ds le pltz
54            if pmax NE 200 then BEGIN
55               commande = top_uvalue.commande
56; on recupere la fin de la boite
57               pos2 = strpos(commande, ']', rstrpos(commande, 'boite'))
58; on change la derniere valeur de la boite
59               pos1 = rstrpos(commande, ',', pos2)
60               top_uvalue.commande = strmid(commande, 0, pos1+1)+strtrim(pmax, 1)+strmid(commande, pos2)
61;               ENDELSE
62            ENDIF
63            exextra = mixstru({profmax:pmax, zoom: pzoom}, exextra)
64         ENDIF
65         widget_control, topid, set_uvalue = mixstru({exextra:exextra}, top_uvalue)
66         widget_control, event.top, /destroy
67         widgetdessine, topid, commande = top_uvalue.commande
68      END
69      ELSE:
70   endcase
71
72   return
73end
74;----------------------------------------------------------------
75PRO xspecifiedessin, parent, _extra = ex
76   widget_control, parent, get_uvalue = top_uvalue
77   base = widget_base(/column, title = 'Specification du Dessin', uvalue = parent)
78; base1 pour specifier le min, le max et l''intervalle
79   base1 = widget_base(base, /row, /frame)
80   rien = widget_label(base1, value = 'Min')
81   rien = widget_text(base1, value = strtrim(top_uvalue.exextra.min, 1), /editable, xsize = 5, uname = 'min', uvalue = 'min')
82   rien = widget_label(base1, value = 'Max')
83   rien = widget_text(base1, value = strtrim(top_uvalue.exextra.max, 1), /editable, xsize = 5, uname = 'max', uvalue = 'max')
84   rien = widget_label(base1, value = 'Int')
85   rien = widget_text(base1, value = strtrim(top_uvalue.exextra.inter, 1), /editable, xsize = 5, uname = 'int', uvalue = 'int')
86; base2 por specifier la palette de couleur (soit par numero soit ds
87; un menu deroulant)
88   base2 = widget_base(base, /row, /frame)
89   rien = widget_label(base2, value = 'Pal Number')
90   rien = widget_text(base2, value = strtrim(top_uvalue.exextra.lct, 1), /editable, xsize = 3, uname = 'palnum', uvalue = 'palnum')
91   lct,  get_name = nomcouleur
92   nbrligne = 30
93   nbrlist = n_elements(nomcouleur)/nbrligne
94   nomcouleur = strtrim(sindgen(n_elements(nomcouleur)), 1)+'- '+nomcouleur
95   nomcouleur = '0\'+nomcouleur
96   nomcouleur = ['1\palette de couleur', nomcouleur]
97   if nbrlist GT 1 then for i = 1,nbrlist do $
98    nomcouleur = [nomcouleur[0:nbrligne*i-1+i], '1\ ', nomcouleur[nbrligne*i+i:n_elements(nomcouleur)-1]]
99   rien = cw_pdmenu(base2,nomcouleur, /RETURN_NAME , uvalue = 'palcol', uname = 'palcol')
100; si on est en train de faire un graph pour pltz on raoute un widget
101; pour specifier la profmax et la profzoom
102   if top_uvalue.name EQ 'pltz' then BEGIN
103      base4pltz = widget_base(base, /row, /frame)
104      rien = widget_label(base4pltz, value = 'Prof max')
105; il faut retrouver la prof max de la boite utiliseee pour faire le pltz
106      posboite = strpos(top_uvalue.commande, '[', rstrpos(top_uvalue.commande, 'boite'))
107      boite = strmid(top_uvalue.commande, posboite $
108                     , strpos(top_uvalue.commande, ']', posboite )-posboite+1)
109      boite = str_sep(boite, ',')
110      if n_elements(boite) EQ 4 then pmax = 200 ELSE pmax = long(boite[n_elements(boite)-1])
111      pmax = strtrim(pmax, 1)
112; on declare le widget:
113      rien = widget_text(base4pltz, value = pmax, /editable, xsize = 4, uname = 'pmax', uvalue = 'pmax')
114      rien = widget_label(base4pltz, value = 'Prof Zoom')
115      if chkstru(top_uvalue.exextra, 'zoom') then pzoom = top_uvalue.exextra.zoom[0] $
116      ELSE pzoom = pmax
117      rien = widget_text(base4pltz, value = strtrim(pzoom, 1), /editable, xsize = 4, uname = 'pzoom', uvalue = 'pzoom')
118
119   endif
120   
121; baseavantfin pour passer tous les mots cles possibles...
122; widget text contennant les autres mots cles passe ds top_uvalue.exextra
123; en reste-t-il? si oui, il faut les mettres sous forme de string
124   restekeywd = extractstru(top_uvalue.exextra, ['min', 'max', 'inter', 'lct', 'zoom', 'profmax'])
125   if size(restekeywd, /type) EQ 8 then autres = strkeywd(restekeywd) ELSE autres = ''
126   baseavantfin = widget_base(base, /row, /frame)
127   rien = widget_label(baseavantfin, value = 'Autres mots cles')
128   rien = widget_text(baseavantfin, value = autres, /editable, uname = 'autres', uvalue = 'autres')
129; basefin pour en finir, trois boutons: Default/OK/Cancel
130   basefin = widget_base(base, /row, /frame, /align_center)
131   rien = widget_button(basefin,value='Default', uvalue = 'default')
132   rien = widget_button(basefin,value='OK', uvalue = 'ok')
133   rien = widget_button(basefin,value='Cancel', uvalue = 'cancel')
134
135;
136   widget_control,base,/realize
137   xmanager,'xspecifiedessin',base, /no_block
138;
139   return
140end
Note: See TracBrowser for help on using the repository browser.