source: Sophya/trunk/SophyaPI/PIext/pisiadw.cc@ 621

Last change on this file since 621 was 584, checked in by ercodmgr, 26 years ago

Modifs pour SOPHYA , TMatrix, PixelMap, ... Reza 17/11/99

File size: 7.2 KB
Line 
1#include "machdefs.h"
2#include <stdlib.h>
3#include <stdio.h>
4#include <string.h>
5
6#include <typeinfo>
7
8#include "perrors.h"
9#include "ctimer.h"
10
11#include "nbmath.h"
12
13#include "pistdimgapp.h"
14#include "nobjmgr.h"
15#include "servnobjm.h"
16
17
18
19/* ........................................................... */
20/* Classe ObjMgrWind interface de gestion d'objets nommes */
21/* ........................................................... */
22
23/* --Methode-- */
24ObjMgrWind::ObjMgrWind(PIStdImgApp *par)
25: PIWindow((PIMsgHandler *)par, "objmgr", PIWK_dialog,
26 400, 300, 250, 250)
27{
28int i;
29dap = par;
30
31int bsx, bsy;
32int tsx, tsy;
33int spx, spy;
34// On definit la taille a partir de la taille par defaut des composantes
35PIApplicationPrefCompSize(bsx, bsy);
36spx = bsx/4; spy = bsy/4;
37tsx = 4.0*bsx+3*spx; tsy = 6*bsy+7*spy;
38SetSize(tsx,tsy);
39dirlist = new PIOptMenu(this, "dirlist", 2.5*bsx, bsy, spx+0.25*bsx, spy);
40dirlist->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
41objlist = new PIList(this, "objlist", 3*bsx, tsy-3*spy-bsy, spx, 2*spy+bsy);
42objlist->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
43// objlist->SetBorderWidth(2);
44
45int py = spy;
46int px = 2*spx+3*bsx;
47mBut[0] = new PIButton(this, "SetCurDir", 10, bsx, bsy, px, py); py += (bsy+spy);
48mBut[1] = new PIButton(this, "Display", 20, bsx, bsy, px, py); py += (bsy+spy);
49mBut[2] = new PIButton(this, "Print", 30, bsx, bsy, px, py); py += (bsy+spy);
50mBut[3] = new PIButton(this, "SavePPF", 40, bsx, bsy, px, py); py += (bsy+spy);
51mBut[4] = new PIButton(this, "Delete", 50, bsx, bsy, px, py); py += (bsy+spy);
52mBut[5] = new PIButton(this, "Dismiss", 90, bsx, bsy, px, py); py += (bsy+spy);
53
54for(i=0; i<6; i++)
55 mBut[i]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
56
57// FinishCreate(); pas necessaire ?
58}
59
60/* --Methode-- */
61ObjMgrWind::~ObjMgrWind()
62{
63int i;
64delete dirlist;
65delete objlist;
66for(i=0; i<6; i++) delete mBut[i];
67}
68
69/* --Methode-- */
70void ObjMgrWind::Show()
71{
72dap->SetBlocked();
73string cdir;
74dap->ObjMgr()->GetCurrentDir(cdir);
75cdir = '/' + cdir;
76dirlist->SetValueStr(cdir);
77dap->ObjMgr()->UpdateObjMgrWindow(dirlist->GetValue()-30000);
78PIWindow::Show();
79return;
80}
81
82/* --Methode-- */
83void ObjMgrWind::Process(PIMessage msg, PIMsgHandler* /*sender*/, void* /*data*/)
84{
85
86 // PIMessage ssg = ModMsg(msg);
87msg = UserMsg(msg);
88if (msg == 90) {
89 dap->SetReady();
90 this->Hide();
91 return;
92 }
93else if (msg >= 30000) {
94 dap->ObjMgr()->UpdateObjMgrWindow(msg-30000);
95 return;
96 }
97else if (msg == 10) {
98 string cdir = dirlist->GetValueStr();
99 dap->ObjMgr()->SetCurrentDir(cdir);
100 return;
101 }
102
103string nom = "";
104if ( (msg == 20) || (msg == 30) || (msg == 40) || (msg == 50) ) {
105 string sel = objlist->GetSelectionStr();
106 // size_t p = sel.find_first_not_of(" \t");
107 // if (p<0) p = 0;
108 size_t l = sel.length();
109 size_t q = sel.find_first_of(" \t");
110 if (q > l) q = l;
111 nom = dirlist->GetValueStr() + '/' + sel.substr(0, q);
112 }
113
114NamedObjMgr* om = dap->ObjMgr();
115if (om == NULL) return;
116if (nom.length() < 1) return;
117
118switch (msg)
119 {
120 case 20:
121 om->DisplayObj(nom);
122 break;
123 case 30:
124 om->PrintObj(nom);
125 break;
126 case 40:
127 if (dap->mPpfout) om->SaveObj(nom, *(dap->mPpfout), false);
128 break;
129 case 50:
130 om->DelObj(nom);
131 objlist->DeleteItemMsg(objlist->GetSelection());
132 // dap->ObjMgr()->UpdateObjMgrWindow(dirlist->GetValue()-30000);
133 break;
134
135 default:
136 // printf("DEBUG/ObjMgrW::Process %d %d \n", (int)msg, (int)ssg);
137 break;
138 }
139
140return;
141}
142
143
144/* ........................................................... */
145/* Classe PPInMgrWind interface de gestion d'objets nommes */
146/* ........................................................... */
147
148/* --Methode-- */
149PPInMgrWind::PPInMgrWind(PIStdImgApp *par)
150: PIWindow((PIMsgHandler *)par, "PPF-FileManager", PIWK_dialog,
151 400, 300, 250, 250)
152{
153int i;
154dap = par;
155
156int bsx, bsy;
157int tsx, tsy;
158int spx, spy;
159// On definit la taille a partir de la taille par defaut des composantes
160PIApplicationPrefCompSize(bsx, bsy);
161spx = bsx/4; spy = bsy/3;
162bsx *= 1.25;
163ttx = tsx = 3*bsx+8*spx; tty = tsy = 7*bsy+5*spy;
164SetSize(tsx,tsy);
165
166mLab[0] = new PILabel(this, "filename", tsx-spx, bsy-spy, spx/2, spy/2);
167mLab[0]->SetLabel("");
168mLab[0]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic,PIBK_elastic);
169mLab[0]->SetBorderWidth(1);
170
171polx = spx/2; poly = bsy+1.5*spy;
172tolx = tsx-spx; toly = tsy-2*bsy-5*spy;
173int py = tsy-2*spy-bsy;
174int px = 2*spx;
175mBut[0] = new PIButton(this, "Read", 2500, bsx, bsy, px, py); px += (bsx+2*spx);
176mBut[1] = new PIButton(this, "ReadAll", 2600, bsx, bsy, px, py); px += (bsx+2*spx);
177mBut[2] = new PIButton(this, "Close", 2700, bsx, bsy, px, py); px += (bsx+2*spx);
178
179for(i=0; i<3; i++)
180 mBut[i]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
181
182objlist = NULL;
183mLab[1] = NULL;
184mPin = NULL;
185
186// FinishCreate(); pas necessaire
187}
188
189/* --Methode-- */
190PPInMgrWind::~PPInMgrWind()
191{
192int i;
193if (objlist) delete objlist;
194delete mLab[0];
195for(i=0; i<3; i++) delete mBut[i];
196}
197
198/* --Methode-- */
199void PPInMgrWind::SetFile(string flnm)
200{
201char strg[128];
202char* nom;
203char noms[32];
204int i, cid, key, ln;
205
206bool ok = true;
207#ifdef SANS_EVOLPLANCK
208TRY {
209 mPin = new PInPersist(flnm);
210} CATCH(merr)
211 { printf("ObjMgrWind::SetFile Exception= %ld (%s) \n", (long)merr, PeidaExc(merr));
212 ok = false; } ENDTRY;
213#else
214try {
215 mPin = new PInPersist(flnm);
216 }
217catch (IOExc iox) {
218 cerr << "ObjMgrWind::SetFile/Error Exception - Msg= " << iox.Msg() << endl;
219 ok = false;
220 }
221#endif
222
223if (!ok) { mPin = NULL; dap->SetReady(); return; }
224
225if (mPin->NbTags() < 1) {
226 delete mPin; mPin = NULL;
227 string no="";
228 dap->ObjMgr()->ReadObj(flnm,no);
229 return;
230}
231if (objlist) delete objlist;
232SetSize(ttx,tty);
233mLab[0]->SetLabel(flnm);
234objlist = new PIList(this, "infileobjlist", tolx, toly, polx, poly);
235objlist->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
236objlist->SetBorderWidth(2);
237
238
239#ifdef SANS_EVOLPLANCK
240for(i=0; i<mPin->NbTags(); i++) {
241 key = mPin->TagKey(i, cid, ln); // $CHECK$ non-const & reference initialized to temporary, car int -> long&
242 if (ln <= 0) nom = "?";
243 else { strncpy(noms, mPin->TagName(i).c_str(), 31); noms[31] = '\0'; nom = noms; }
244 sprintf(strg, "%s (T=%s, Key=%d)", nom, dap->ObjMgr()->GetServiceObj()->PClassIdToClassName(cid), key);
245 // sprintf(strg, "%s (T=%s, Key=%d)", nom, " DataObject ?", key); Attention SANS_EVOLPLANCK
246 objlist->AppendItem(strg, 5000+i);
247}
248#else
249string tn;
250for(i=0; i<mPin->NbTags(); i++) {
251 tn = mPin->GetTagName(i);
252 objlist->AppendItem(tn.c_str(), 5000+i);
253}
254#endif
255
256}
257
258/* --Methode-- */
259void PPInMgrWind::Show()
260{
261if (mPin == NULL) return;
262dap->SetBlocked();
263PIWindow::Show();
264return;
265}
266
267/* --Methode-- */
268void PPInMgrWind::Process(PIMessage msg, PIMsgHandler* /*sender*/, void* /*data*/)
269{
270
271int sel;
272msg = UserMsg(msg);
273
274if (msg == 2700) {
275 delete mPin; mPin = NULL;
276 delete objlist; objlist = NULL;
277 dap->SetReady();
278 this->Hide();
279 return;
280}
281
282NamedObjMgr* om = dap->ObjMgr();
283switch (msg)
284 {
285 case 2500:
286 sel = (PIMessage)objlist->GetSelection() - 5000;
287 if (sel >= 0) om->ReadObj((*mPin), sel);
288 break;
289 case 2600:
290 om->ReadObj((*mPin), -1);
291 dap->SetReady();
292 this->Hide();
293 break;
294
295 default:
296 break;
297 }
298
299return;
300}
Note: See TracBrowser for help on using the repository browser.