| 1 | #include "sopnamsp.h"
 | 
|---|
| 2 | #include "piacmd.h"
 | 
|---|
| 3 | 
 | 
|---|
| 4 | #include <stdio.h>
 | 
|---|
| 5 | #include <stdlib.h>
 | 
|---|
| 6 | #include <math.h>
 | 
|---|
| 7 | 
 | 
|---|
| 8 | #include "graphexecut.h"
 | 
|---|
| 9 | 
 | 
|---|
| 10 | #include "strutilxx.h"
 | 
|---|
| 11 | 
 | 
|---|
| 12 | #include "pistdimgapp.h"
 | 
|---|
| 13 | #include "nobjmgr.h"
 | 
|---|
| 14 | 
 | 
|---|
| 15 | #include "nomgadapter.h"
 | 
|---|
| 16 | #include "piyfxdrw.h"
 | 
|---|
| 17 | #include "pibargraph.h"
 | 
|---|
| 18 | #include "pitxtdrw.h"
 | 
|---|
| 19 | 
 | 
|---|
| 20 | 
 | 
|---|
| 21 | 
 | 
|---|
| 22 | /* --Methode-- */
 | 
|---|
| 23 | PIAGraphicExecutor::PIAGraphicExecutor(PIACmd* piac, NamedObjMgr* omg, PIStdImgApp* app)
 | 
|---|
| 24 | {
 | 
|---|
| 25 | mpiac = piac;
 | 
|---|
| 26 | mObjMgr = omg; 
 | 
|---|
| 27 | mImgApp = app;
 | 
|---|
| 28 | RegisterCommands();
 | 
|---|
| 29 | }
 | 
|---|
| 30 | 
 | 
|---|
| 31 | PIAGraphicExecutor::~PIAGraphicExecutor()
 | 
|---|
| 32 | {
 | 
|---|
| 33 | }
 | 
|---|
| 34 | 
 | 
|---|
| 35 | 
 | 
|---|
| 36 | /* Macro pour tester si flag normalized coordinate est present */
 | 
|---|
| 37 | #define _CkBoolNC_(_jk_) ((tokens.size()>_jk_) && (tokens[_jk_] == "true")) ? true : false;
 | 
|---|
| 38 | 
 | 
|---|
| 39 | 
 | 
|---|
| 40 | /* --Methode-- */
 | 
|---|
| 41 | int PIAGraphicExecutor::Execute(string& kw, vector<string>& tokens, string& toks)
 | 
|---|
| 42 | {
 | 
|---|
| 43 | // >>>>>>>>>>> Fenetre graphique , changement d'attributs graphiques 
 | 
|---|
| 44 | if (kw == "zone") {
 | 
|---|
| 45 |   while (tokens.size() < 2) tokens.push_back("1");
 | 
|---|
| 46 |   int nx, ny;
 | 
|---|
| 47 |   nx = ny = 1;
 | 
|---|
| 48 |   nx = atoi(tokens[0].c_str());    ny = atoi(tokens[1].c_str());
 | 
|---|
| 49 |   if (mImgApp) { 
 | 
|---|
| 50 |     mImgApp->LockMutex();  // <ZThread> global event loop synchronisation 
 | 
|---|
| 51 |     mImgApp->SetZone(nx, ny);
 | 
|---|
| 52 |     mImgApp->UnlockMutex(true);  // <ZThread> global event loop synchronisation 
 | 
|---|
| 53 |   }
 | 
|---|
| 54 | }  
 | 
|---|
| 55 | else if (kw == "newwin") {
 | 
|---|
| 56 |   int nx=1, ny=1;
 | 
|---|
| 57 |   int sx=0, sy=0;
 | 
|---|
| 58 |   //if(tokens.size() < 2) { cout << "Usage: newwin nx ny" << endl;  return(0); }
 | 
|---|
| 59 |   if(tokens.size() > 0) nx = atoi(tokens[0].c_str());
 | 
|---|
| 60 |   if(tokens.size() > 1) ny = atoi(tokens[1].c_str());
 | 
|---|
| 61 |   if(tokens.size() > 3) { 
 | 
|---|
| 62 |     sx = atoi(tokens[2].c_str());
 | 
|---|
| 63 |     sy = atoi(tokens[3].c_str());
 | 
|---|
| 64 |   }
 | 
|---|
| 65 |   if (mImgApp) { 
 | 
|---|
| 66 |     mImgApp->LockMutex();   // <ZThread> global event loop synchronisation 
 | 
|---|
| 67 |     mImgApp->CreateGraphWin(nx, ny, sx, sy);
 | 
|---|
| 68 |     mImgApp->UnlockMutex(true); // <ZThread> global event loop synchronisation 
 | 
|---|
| 69 |   }
 | 
|---|
| 70 | }  
 | 
|---|
| 71 | else if (kw == "stacknext") { 
 | 
|---|
| 72 |   mImgApp->LockMutex();  // <ZThread> global event loop synchronisation 
 | 
|---|
| 73 |   mImgApp->StackWinNext(); 
 | 
|---|
| 74 |   mImgApp->UnlockMutex(true);  // <ZThread> global event loop synchronisation 
 | 
|---|
| 75 | }
 | 
|---|
| 76 | else if (kw == "graphicatt") {
 | 
|---|
| 77 |   if (tokens.size() < 1) { cout << "Usage: graphicatt attributes_list (att=def->defaut)" << endl;  return(0); }
 | 
|---|
| 78 |   string opts = tokens[0];
 | 
|---|
| 79 |   if (tokens.size() > 1) 
 | 
|---|
| 80 |     for(unsigned int kt=1; kt<tokens.size(); kt++)  { opts += ' '; opts += tokens[kt]; }
 | 
|---|
| 81 |   if (mImgApp) mImgApp->SetDefaultGraphicAttributes(opts);
 | 
|---|
| 82 |   }
 | 
|---|
| 83 | else if (kw == "setaxesatt") {
 | 
|---|
| 84 |   if (tokens.size() < 1) { cout << "Usage: setaxesatt attributes_list " << endl;  return(0); }
 | 
|---|
| 85 |   string opts = tokens[0];
 | 
|---|
| 86 |   if (tokens.size() > 1) 
 | 
|---|
| 87 |     for(unsigned int kt=1; kt<tokens.size(); kt++)  { opts += ' '; opts += tokens[kt]; }
 | 
|---|
| 88 |   if (mImgApp) mImgApp->SetDefaultAxesAttributes(opts);
 | 
|---|
| 89 |   }
 | 
|---|
| 90 | else if (kw == "setinsetlimits") {
 | 
|---|
| 91 |   if (tokens.size() < 4) { cout << "Usage: setinsetlimits xmin xmax ymin ymax" << endl;  return(0); }
 | 
|---|
| 92 |   double xmin = atof(tokens[0].c_str());
 | 
|---|
| 93 |   double xmax = atof(tokens[1].c_str());
 | 
|---|
| 94 |   double ymin = atof(tokens[2].c_str());
 | 
|---|
| 95 |   double ymax = atof(tokens[3].c_str());
 | 
|---|
| 96 |   mImgApp->SetInsetLimits(xmin, xmax, ymin, ymax);
 | 
|---|
| 97 |   }
 | 
|---|
| 98 | else if (kw == "drpanel") {
 | 
|---|
| 99 |   if (tokens.size() < 4) { 
 | 
|---|
| 100 |     cout << "Usage: drpanel xmin xmax ymin ymax [gratt] [name]" << endl;  
 | 
|---|
| 101 |     return(0); 
 | 
|---|
| 102 |   }
 | 
|---|
| 103 |   double xmin = atof(tokens[0].c_str());
 | 
|---|
| 104 |   double xmax = atof(tokens[1].c_str());
 | 
|---|
| 105 |   double ymin = atof(tokens[2].c_str());
 | 
|---|
| 106 |   double ymax = atof(tokens[3].c_str());
 | 
|---|
| 107 |   char buff[128];
 | 
|---|
| 108 |   sprintf(buff, "axesnone xylimits=%g,%g,%g,%g ", xmin, xmax, ymin, ymax);
 | 
|---|
| 109 |   string sop = buff;
 | 
|---|
| 110 |   if (tokens.size() > 4) sop += tokens[4];
 | 
|---|
| 111 |   string name;
 | 
|---|
| 112 |   if (tokens.size() > 5) name = tokens[5];
 | 
|---|
| 113 |   PIFuncDrawer* gdr = new PIFuncDrawer(NULL);
 | 
|---|
| 114 |   mImgApp->DispScDrawer(gdr, name, sop); 
 | 
|---|
| 115 | }
 | 
|---|
| 116 | //---- Ajout d'elements graphiques
 | 
|---|
| 117 | else if (kw == "addtext") {
 | 
|---|
| 118 |   if (tokens.size() < 3) { 
 | 
|---|
| 119 |     cout << "Usage: addtext x y txt [colfontatt] [fgnc]" << endl;  
 | 
|---|
| 120 |     return(0); 
 | 
|---|
| 121 |   }
 | 
|---|
| 122 |   double xp = atof(tokens[0].c_str());
 | 
|---|
| 123 |   double yp = atof(tokens[1].c_str());
 | 
|---|
| 124 |   string txt = tokens[2];
 | 
|---|
| 125 |   string sop;
 | 
|---|
| 126 |   if (tokens.size() > 3) sop = tokens[3];
 | 
|---|
| 127 |   bool fgnc = _CkBoolNC_(4);  
 | 
|---|
| 128 |   mImgApp->AddText(txt, xp, yp, sop, fgnc);
 | 
|---|
| 129 |   }
 | 
|---|
| 130 | else if (kw == "addctext") {
 | 
|---|
| 131 |   if (tokens.size() < 5) { 
 | 
|---|
| 132 |     cout << "Usage: addctext x y txt s_up s_dn [colfontatt] [updnfatt] [fgnc] " << endl;  
 | 
|---|
| 133 |     return(0); 
 | 
|---|
| 134 |   }
 | 
|---|
| 135 |   double xp = atof(tokens[0].c_str());
 | 
|---|
| 136 |   double yp = atof(tokens[1].c_str());
 | 
|---|
| 137 |   string sop;
 | 
|---|
| 138 |   if (tokens.size() > 5) sop = tokens[5];
 | 
|---|
| 139 |   string sopfss;
 | 
|---|
| 140 |   if (tokens.size() > 6) sopfss = tokens[6];
 | 
|---|
| 141 |   bool fgnc = _CkBoolNC_(7);  
 | 
|---|
| 142 |   mImgApp->AddCompText(tokens[2], tokens[3], tokens[4], xp, yp, sop, sopfss, fgnc);
 | 
|---|
| 143 |   }
 | 
|---|
| 144 | else if ((kw == "addline") || (kw == "addrect") || (kw == "addfrect") ||
 | 
|---|
| 145 |          (kw == "addoval") || (kw == "addfoval") || 
 | 
|---|
| 146 |          (kw == "addarrow") ) {
 | 
|---|
| 147 |   if (tokens.size() < 4) { 
 | 
|---|
| 148 |     if ( (kw == "addoval") || (kw == "addfoval") )
 | 
|---|
| 149 |       cout << "Usage  addoval/addfoval/addarrow xc yc dx dy [colatt] [fgnc]" << endl;  
 | 
|---|
| 150 |     else 
 | 
|---|
| 151 |       cout << "Usage: addline/addrect/addfrect/addarrow x1 y1 x2 y2 [colatt] [fgnc]" << endl;  
 | 
|---|
| 152 |     return(0); 
 | 
|---|
| 153 |   }
 | 
|---|
| 154 |   double xp1 = atof(tokens[0].c_str());
 | 
|---|
| 155 |   double yp1 = atof(tokens[1].c_str());
 | 
|---|
| 156 |   double xp2 = atof(tokens[2].c_str());
 | 
|---|
| 157 |   double yp2 = atof(tokens[3].c_str());
 | 
|---|
| 158 |   string sop;
 | 
|---|
| 159 |   if (tokens.size() > 4) sop = tokens[4];
 | 
|---|
| 160 |   bool fgnc = _CkBoolNC_(5);  
 | 
|---|
| 161 |   if (kw == "addline") mImgApp->AddLine(xp1, yp1, xp2, yp2, sop, false, fgnc);
 | 
|---|
| 162 |   else if (kw == "addarrow") mImgApp->AddLine(xp1, yp1, xp2, yp2, sop, true, fgnc);
 | 
|---|
| 163 |   else { 
 | 
|---|
| 164 |     bool fgfill = ((kw == "addrect") || (kw == "addoval")) ? false : true;
 | 
|---|
| 165 |     if ( (kw == "addrect") || (kw == "addfrect") )
 | 
|---|
| 166 |       mImgApp->AddRectangle(xp1, yp1, xp2, yp2, sop, fgfill, fgnc);
 | 
|---|
| 167 |     else  mImgApp->AddOval(xp1, yp1, xp2, yp2, sop, fgfill, fgnc);
 | 
|---|
| 168 |   }
 | 
|---|
| 169 | }
 | 
|---|
| 170 | else if ((kw == "addcirc") || (kw == "addfcirc")) {
 | 
|---|
| 171 |   if (tokens.size() < 3) { 
 | 
|---|
| 172 |     cout << "Usage: addcirc/addfcirc xc yc r [colatt] [fgnc]" << endl;  
 | 
|---|
| 173 |     return(0); 
 | 
|---|
| 174 |   }
 | 
|---|
| 175 |   double xc = atof(tokens[0].c_str());
 | 
|---|
| 176 |   double yc = atof(tokens[1].c_str());
 | 
|---|
| 177 |   double rad = atof(tokens[2].c_str());
 | 
|---|
| 178 |   string sop;
 | 
|---|
| 179 |   if (tokens.size() > 3) sop = tokens[3];
 | 
|---|
| 180 |   bool fgnc = _CkBoolNC_(4);  
 | 
|---|
| 181 |   bool fgfill = (kw == "addcirc") ? false : true;
 | 
|---|
| 182 |   mImgApp->AddCircle(xc, yc, rad, sop, fgfill, fgnc);
 | 
|---|
| 183 |   }
 | 
|---|
| 184 | else if ((kw == "addarca") || (kw == "addfarca")) {
 | 
|---|
| 185 |   if (tokens.size() < 5) { 
 | 
|---|
| 186 |     cout << "Usage: addarca/addfarca xc yc r a da [colatt] [fgnc]" << endl;  
 | 
|---|
| 187 |     return(0); 
 | 
|---|
| 188 |   }
 | 
|---|
| 189 |   double xc = atof(tokens[0].c_str());
 | 
|---|
| 190 |   double yc = atof(tokens[1].c_str());
 | 
|---|
| 191 |   double rad = atof(tokens[2].c_str());
 | 
|---|
| 192 |   double ang = atof(tokens[3].c_str());
 | 
|---|
| 193 |   double dang = atof(tokens[4].c_str());
 | 
|---|
| 194 |   string sop;
 | 
|---|
| 195 |   if (tokens.size() > 5) sop = tokens[5];
 | 
|---|
| 196 |   bool fgnc = _CkBoolNC_(6);  
 | 
|---|
| 197 |   bool fgfill = (kw == "addarca") ? false : true;
 | 
|---|
| 198 |   mImgApp->AddArc(xc, yc, rad, ang, dang, sop, fgfill, fgnc);
 | 
|---|
| 199 |   }
 | 
|---|
| 200 | else if (kw == "addmarker") {
 | 
|---|
| 201 |   if (tokens.size() < 2) { 
 | 
|---|
| 202 |     cout << "Usage: addmarker x y [gratt] [fgnc]" << endl;  
 | 
|---|
| 203 |     return(0); 
 | 
|---|
| 204 |   }
 | 
|---|
| 205 |   double xm = atof(tokens[0].c_str());
 | 
|---|
| 206 |   double ym = atof(tokens[1].c_str());
 | 
|---|
| 207 |   string sop;
 | 
|---|
| 208 |   if (tokens.size() > 2) sop = tokens[2];
 | 
|---|
| 209 |   bool fgnc = _CkBoolNC_(3);  
 | 
|---|
| 210 |   mImgApp->AddCircle(xm, ym, -1, sop, false, fgnc);
 | 
|---|
| 211 | }
 | 
|---|
| 212 | else if ((kw == "addarc") || (kw == "addfarc") ) {
 | 
|---|
| 213 |   if (tokens.size() < 6) { 
 | 
|---|
| 214 |     cout << "Usage: addarc/addfarc x1 y1 x2 y2 x3 y3 [gratt] [fgnc]" << endl;  
 | 
|---|
| 215 |     return(0); 
 | 
|---|
| 216 |   }
 | 
|---|
| 217 |   double x1 = atof(tokens[0].c_str());
 | 
|---|
| 218 |   double y1 = atof(tokens[1].c_str());
 | 
|---|
| 219 |   double x2 = atof(tokens[2].c_str());
 | 
|---|
| 220 |   double y2 = atof(tokens[3].c_str());
 | 
|---|
| 221 |   double x3 = atof(tokens[4].c_str());
 | 
|---|
| 222 |   double y3 = atof(tokens[5].c_str());
 | 
|---|
| 223 |   string sop;
 | 
|---|
| 224 |   if (tokens.size() > 6) sop = tokens[6];
 | 
|---|
| 225 |   bool fgnc = _CkBoolNC_(7);  
 | 
|---|
| 226 |   bool fgfill = (kw == "addarc") ? false : true;
 | 
|---|
| 227 |   mImgApp->AddArc(x1, y1, x2, y2, x3, y3, sop, fgfill, fgnc);
 | 
|---|
| 228 | }
 | 
|---|
| 229 | else if ((kw == "addpoly") || (kw == "addfpoly")) {
 | 
|---|
| 230 |   if (tokens.size() < 1) { 
 | 
|---|
| 231 |     cout << "Usage: addpoly/addfpoly 'x1,y1 x2,y2 x3,y3 ...' [gratt] [fgnc]" << endl;  
 | 
|---|
| 232 |     return(0); 
 | 
|---|
| 233 |   }
 | 
|---|
| 234 |   vector<string> sxy;
 | 
|---|
| 235 |   vector<double> xpol, ypol;
 | 
|---|
| 236 |   double xp, yp;
 | 
|---|
| 237 |   FillVStringFrString(tokens[0], sxy);
 | 
|---|
| 238 |   for(int jkk=0; jkk<sxy.size(); jkk++) {
 | 
|---|
| 239 |     xp = yp = 0;
 | 
|---|
| 240 |     if (sscanf(sxy[jkk].c_str(), "%lg,%lg", &xp, &yp) == 2) { 
 | 
|---|
| 241 |       xpol.push_back(xp); 
 | 
|---|
| 242 |       ypol.push_back(yp);
 | 
|---|
| 243 |     }
 | 
|---|
| 244 |   }
 | 
|---|
| 245 |   string sop;
 | 
|---|
| 246 |   if (tokens.size() > 1) sop = tokens[1];
 | 
|---|
| 247 |   bool fgnc = _CkBoolNC_(2);  
 | 
|---|
| 248 |   bool fgfill = (kw == "addpoly") ? false : true;
 | 
|---|
| 249 |   mImgApp->AddPoly(xpol, ypol, sop, fgfill, fgnc);
 | 
|---|
| 250 |   }
 | 
|---|
| 251 | 
 | 
|---|
| 252 | 
 | 
|---|
| 253 | else if ((kw == "settitle") || (kw == "addtitle")) {
 | 
|---|
| 254 |   if (tokens.size() < 1) { cout << "Usage: settitle/addtitle TopTitle [BotTitle] [fontatt]" << endl;  return(0); }
 | 
|---|
| 255 |   if(tokens.size()<2) tokens.push_back("");
 | 
|---|
| 256 |   string gropt;
 | 
|---|
| 257 |   if(tokens.size()>2) gropt = tokens[2];
 | 
|---|
| 258 |   mImgApp->SetTitle(tokens[0], tokens[1], gropt);
 | 
|---|
| 259 | }
 | 
|---|
| 260 | 
 | 
|---|
| 261 | else if ((kw == "setaxelabels") || (kw == "addaxelabels")) {
 | 
|---|
| 262 |   if (tokens.size() < 2) { cout << "Usage: setaxelabels/addaxelabels xLabel yLabel [fontatt]" << endl;  return(0); }
 | 
|---|
| 263 |   string gropt;
 | 
|---|
| 264 |   if(tokens.size()>2) gropt = tokens[2];
 | 
|---|
| 265 |   mImgApp->SetAxeLabels(tokens[0], tokens[1], gropt);
 | 
|---|
| 266 | }
 | 
|---|
| 267 |   
 | 
|---|
| 268 | // >>>>>>>>>>>  Affichage des objets 
 | 
|---|
| 269 | else if ( (kw == "disp") || (kw == "surf") || (kw == "imag") || (kw == "imagnav") ) {
 | 
|---|
| 270 |   if (tokens.size() < 1) { cout << "Usage: disp/surf/imag/imagnav nameobj [opt]" << endl; return(0); }
 | 
|---|
| 271 |   string opt = "next";
 | 
|---|
| 272 |   if (tokens.size() > 1)  opt = tokens[1];
 | 
|---|
| 273 |   if (kw == "disp") mObjMgr->DisplayObj(tokens[0], opt);
 | 
|---|
| 274 |   else if (kw == "surf")  mObjMgr->DisplaySurf3D(tokens[0], opt);
 | 
|---|
| 275 |   else if (kw == "imag")  mObjMgr->DisplayImage(tokens[0], opt, false);
 | 
|---|
| 276 |   else if (kw == "imagnav")  mObjMgr->DisplayImage(tokens[0], opt, true);
 | 
|---|
| 277 |   }
 | 
|---|
| 278 | 
 | 
|---|
| 279 | else if (kw == "nt2d") {
 | 
|---|
| 280 |   if (tokens.size() < 3) { 
 | 
|---|
| 281 |     cout << "Usage: nt2d nameobj varx vary [errx erry wt label opt]" << endl; 
 | 
|---|
| 282 |     return(0); 
 | 
|---|
| 283 |   }
 | 
|---|
| 284 |   while (tokens.size() < 8) tokens.push_back("");
 | 
|---|
| 285 |   string ph = "";
 | 
|---|
| 286 |   mObjMgr->DisplayNT(tokens[0], tokens[1], tokens[2], ph, tokens[3], tokens[4], ph, 
 | 
|---|
| 287 |                      tokens[5], tokens[6], ph, false, tokens[7], false);
 | 
|---|
| 288 |   }
 | 
|---|
| 289 | else if ((kw == "nt2dcn")||(kw == "nt2dci")) {
 | 
|---|
| 290 |   if (tokens.size() < 4) { 
 | 
|---|
| 291 |     cout << "Usage: nt2dcn nameobj color varx vary [errx erry wt label opt]" << endl; 
 | 
|---|
| 292 |     return(0); 
 | 
|---|
| 293 |   }
 | 
|---|
| 294 |   while (tokens.size() < 9) tokens.push_back("");
 | 
|---|
| 295 |   string ph = "";
 | 
|---|
| 296 |   bool colidx = false;
 | 
|---|
| 297 |   if (kw == "nt2dci")  colidx = true;
 | 
|---|
| 298 |   mObjMgr->DisplayNT(tokens[0], tokens[2], tokens[3], ph, tokens[4], tokens[5], ph, 
 | 
|---|
| 299 |                      tokens[6], tokens[7], tokens[1], colidx, tokens[8], false);
 | 
|---|
| 300 |   }
 | 
|---|
| 301 | else if (kw == "nt3d") {
 | 
|---|
| 302 |   if (tokens.size() < 7) { 
 | 
|---|
| 303 |     cout << "Usage: nt3d nameobj varx vary varz [errx erry errz wt label opt]" << endl; 
 | 
|---|
| 304 |     return(0); 
 | 
|---|
| 305 |   }
 | 
|---|
| 306 |   while (tokens.size() < 10) tokens.push_back("");
 | 
|---|
| 307 |   string ph = "";
 | 
|---|
| 308 |   mObjMgr->DisplayNT(tokens[0], tokens[1], tokens[2], tokens[3], tokens[4], tokens[5],
 | 
|---|
| 309 |                      tokens[6], tokens[7], tokens[8], ph, false, tokens[9], true);
 | 
|---|
| 310 |   }
 | 
|---|
| 311 | else if (kw == "vecplot") {
 | 
|---|
| 312 |   if (tokens.size() < 2) { 
 | 
|---|
| 313 |     cout << "Usage: vecplot nameVecX nameVecY [opt]" << endl;
 | 
|---|
| 314 |     return(0); 
 | 
|---|
| 315 |   }
 | 
|---|
| 316 |   while (tokens.size() < 3) tokens.push_back("");
 | 
|---|
| 317 |   mObjMgr->DisplayVector(tokens[0], tokens[1], tokens[2]);
 | 
|---|
| 318 | }
 | 
|---|
| 319 | else if (kw == "bargraph") return BarGraph(kw, tokens);
 | 
|---|
| 320 | else if (kw == "textdrawer") return TextDrawer(kw, tokens);
 | 
|---|
| 321 | 
 | 
|---|
| 322 | // Obsolete : ne pas virer SVP, cmv 26/7/99
 | 
|---|
| 323 | else if (kw == "gfd2d") {
 | 
|---|
| 324 |   cout<<"----- gfd2d OBSOLETE: utilisez nt2d -----"<<endl;
 | 
|---|
| 325 |   if(tokens.size()<2)
 | 
|---|
| 326 |     {cout<<"Usage: gfd2d nomobj numvarx erreur=(x y xy) opt"<<endl;
 | 
|---|
| 327 |      return(0);}
 | 
|---|
| 328 |   string numvary = "";
 | 
|---|
| 329 |   string err = "";
 | 
|---|
| 330 |   string opt = "next";
 | 
|---|
| 331 |   if(tokens.size()>2) err = tokens[2];
 | 
|---|
| 332 |   if(tokens.size()>3) opt = tokens[3];
 | 
|---|
| 333 |   mObjMgr->DisplayGFD(tokens[0],tokens[1],numvary,err,opt);
 | 
|---|
| 334 |   }
 | 
|---|
| 335 | else if (kw == "gfd3d") {
 | 
|---|
| 336 |   cout<<"----- gfd3d OBSOLETE: utilisez nt3d -----"<<endl;
 | 
|---|
| 337 |   if(tokens.size()<3)
 | 
|---|
| 338 |     {cout<<"Usage: gfd3d nameobj numvarx numvary erreur=(x y z xy xz yz xyz) opt"<<endl;
 | 
|---|
| 339 |      return(0);}
 | 
|---|
| 340 |   string err = "";
 | 
|---|
| 341 |   string opt = "next";
 | 
|---|
| 342 |   if(tokens.size()>3) err = tokens[3];
 | 
|---|
| 343 |   if(tokens.size()>4) opt = tokens[4];
 | 
|---|
| 344 |   mObjMgr->DisplayGFD(tokens[0],tokens[1],tokens[2],err,opt);
 | 
|---|
| 345 |   }
 | 
|---|
| 346 | 
 | 
|---|
| 347 | 
 | 
|---|
| 348 | else  { 
 | 
|---|
| 349 |   cerr << "PIAGraphicExecutor::Do() Erreur - Commande " << kw << " inconuue ! " << endl;    
 | 
|---|
| 350 |   return(-1);
 | 
|---|
| 351 |   }
 | 
|---|
| 352 | 
 | 
|---|
| 353 | return(0);
 | 
|---|
| 354 | }
 | 
|---|
| 355 | 
 | 
|---|
| 356 | /* --Methode-- */
 | 
|---|
| 357 | bool PIAGraphicExecutor::IsThreadable(string const & keyw)
 | 
|---|
| 358 | {
 | 
|---|
| 359 |   return false; 
 | 
|---|
| 360 | }
 | 
|---|
| 361 | 
 | 
|---|
| 362 | 
 | 
|---|
| 363 | /* --Methode-- */
 | 
|---|
| 364 | void PIAGraphicExecutor::RegisterCommands()
 | 
|---|
| 365 | {
 | 
|---|
| 366 | string kw, usage, grp;
 | 
|---|
| 367 | 
 | 
|---|
| 368 | RegisterPIGraphicsHelp(mpiac);
 | 
|---|
| 369 | 
 | 
|---|
| 370 | grp = "Graphics";
 | 
|---|
| 371 | string gdesc = "Basic graphics and object display commands";
 | 
|---|
| 372 | mpiac->AddHelpGroup(grp, gdesc);
 | 
|---|
| 373 | kw = "zone";
 | 
|---|
| 374 | usage = "To Divide the Graphic window \n  Usage: zone [nx=1 ny=1]";
 | 
|---|
| 375 | usage += "\n  Related commands: newwin";  
 | 
|---|
| 376 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 377 | kw = "newwin";
 | 
|---|
| 378 | usage = "To Create a New Graphic window, with zones \n";
 | 
|---|
| 379 | usage += "  Window size can be specified \n";
 | 
|---|
| 380 | usage += "    Usage: newwin [nx ny [sizeX sizeY]] ";
 | 
|---|
| 381 | usage += "\n  Related commands: zone";  
 | 
|---|
| 382 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 383 | kw = "stacknext";
 | 
|---|
| 384 | usage = "Displays the next widget on stack window \n  Usage: stacknext";
 | 
|---|
| 385 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 386 | 
 | 
|---|
| 387 | kw = "graphicatt";
 | 
|---|
| 388 | usage = "To change default graphic options\n  Usage: graphicatt att_list\n";
 | 
|---|
| 389 | usage += "att_list=def back to default values, Example: gratt 'red circlemarker5'";
 | 
|---|
| 390 | usage += "\n ------------------ Graphic attribute list ------------------\n";
 | 
|---|
| 391 | usage += ">> Colors: defcol black white grey red blue green yellow\n";
 | 
|---|
| 392 | usage += "           magenta cyan turquoise navyblue orange siennared purple\n";
 | 
|---|
| 393 | usage += "           limegreen gold violet violetred blueviolet darkviolet\n";
 | 
|---|
| 394 | usage += "   or \"color=name\" \"fgcolor=name\" \"bgcolor=name\" ex: \"color=red\"\n";
 | 
|---|
| 395 | usage += ">> Lines: defline normalline thinline thickline dashedline thindashedline\n";
 | 
|---|
| 396 | usage += "          thickdashedline dottedline thindottedline thickdottedline\n";
 | 
|---|
| 397 | usage += "   or \"line=type,width\"   ex: \"line=dotted,7\"\n";
 | 
|---|
| 398 | usage += ">> Fonts:\n";
 | 
|---|
| 399 | usage += "   > Att: deffontatt normalfont boldfont italicfont bolditalicfont \n";
 | 
|---|
| 400 | usage += "           smallfont smallboldfont smallitalicfont smallbolditalicfont\n";
 | 
|---|
| 401 | usage += "           bigfont bigboldfont bigitalicfont bigbolditalicfont\n";
 | 
|---|
| 402 | usage += "           hugefont  hugeboldfont hugeitalicfont hugebolditalicfont\n";
 | 
|---|
| 403 | usage += "   > Names: deffont courierfont helveticafont timesfont symbolfont \n";
 | 
|---|
| 404 | usage += "   or \"font=name,type,size\"   ex: \"font=courrier,bolditalic,10\"\n";
 | 
|---|
| 405 | usage += ">> Marker: dotmarker<T>  plusmarker<T>  crossmarker<T> circlemarker<T>\n";
 | 
|---|
| 406 | usage += "           fcirclemarker<T> boxmarker<T> fboxmarker<T> trianglemarker<T>\n";
 | 
|---|
| 407 | usage += "           ftrianglemarker<T>  starmarker<T>  fstarmarker<T>\n";
 | 
|---|
| 408 | usage += "       with <T> = 1 3 5 7 .. 15 , Example fboxmarker5 , plusmarker9 ...\n";
 | 
|---|
| 409 | usage += "   or \"marker=type,size\"   ex: \"marker=plus,10\"\n";
 | 
|---|
| 410 | usage += ">> ArrowMarker: basicarrow<T>  trianglearrow<T>  ftrianglearrow<T>\n";
 | 
|---|
| 411 | usage += "                arrowshapedarrow<T> farrowshapedarrow<T>\n";
 | 
|---|
| 412 | usage += "       with <T> = 5 7 .. 15 , Example trianglearrow7 ...\n";
 | 
|---|
| 413 | usage += "   or \"arrow=type,size\"   ex: \"arrow=arrowshaped,10\"\n";
 | 
|---|
| 414 | usage += "------ Specific options for image displays:\n";
 | 
|---|
| 415 | usage += ">> ColorTables: defcmap  grey32  invgrey32  colrj32  colbr32\n";
 | 
|---|
| 416 | usage += "                grey128  invgrey128  colrj128  colbr128\n";
 | 
|---|
| 417 | usage += "                red32cm  green32cm  blue32cm  yellow32cm\n";
 | 
|---|
| 418 | usage += "                orange32cm cyan32cm violet32cm\n";
 | 
|---|
| 419 | usage += "                midas_pastel midas_heat midas_rainbow3 midas_bluered\n";
 | 
|---|
| 420 | usage += "                midas_bluewhite midas_redwhite\n";
 | 
|---|
| 421 | usage += "                multicol16 multicol64\n";
 | 
|---|
| 422 | usage += ">> revcmap : reverse colorMap\n";
 | 
|---|
| 423 | usage += ">> ZoomFactors :  zoomxN   ex: zoomx1 zoomx2 zoomx3 ...\n";
 | 
|---|
| 424 | usage += "                  zoom/N   ex: zoom/2 zoom/3 zoom/4 ...\n";
 | 
|---|
| 425 | usage += ">> imagecenter=ix,iy : Position the image in widget\n";
 | 
|---|
| 426 | usage += ">> lut=ltyp,min,max : Sets LUT type and min/max\n";
 | 
|---|
| 427 | usage += "                   (ltyp=lin/log/sqrt/square)\n";
 | 
|---|
| 428 | usage += ">> autolut=alt[,ns[,min,max]] : AutoLut method selection \n";
 | 
|---|
| 429 | usage += "                   (alt=minmax/meansig/hispeak/histail)\n";
 | 
|---|
| 430 | usage += ">> invx,invy,exchxy : image axes configuration\n";
 | 
|---|
| 431 | usage += "--- General purpose options:\n";
 | 
|---|
| 432 | usage += ">> stat,stats / nsta,nstat,nostat,nostats : Toggle statistic display\n";
 | 
|---|
| 433 | usage += ">> title,tit / notitle,notit -> Toggle automatic title display\n";
 | 
|---|
| 434 | usage += ">> Choose display window: next same win stack inset\n";
 | 
|---|
| 435 | usage += ">> for Axes / Axe labels / LogScale / xylimits / defdrrect\n";
 | 
|---|
| 436 | usage += "       see setaxesatt command\n";
 | 
|---|
| 437 | usage += "\n";  
 | 
|---|
| 438 | usage += "   Related commands: setaxesatt setinsetlimits ";  
 | 
|---|
| 439 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 440 | 
 | 
|---|
| 441 | kw = "setaxesatt";
 | 
|---|
| 442 | usage = "To set default axes attributes \n  Usage: setaxesatt att_list \n";
 | 
|---|
| 443 | usage += "Color/Line/Font attributes and axes attributes \n";
 | 
|---|
| 444 | usage += ">> Axes: axesnone stdaxes=defaxes=boxaxes boxaxesgrid \n";
 | 
|---|
| 445 | usage += "         fineaxes fineaxesgrid centeredaxes finecenteredaxes \n"; 
 | 
|---|
| 446 | usage += "         centeredaxesgrid finecenteredaxesgrid\n"; 
 | 
|---|
| 447 | usage += "         axescenter=x0,y0 (only with centered axes, default \"axescenter=\")\n"; 
 | 
|---|
| 448 | usage += "         grid nogrid labels nolabels  \n"; 
 | 
|---|
| 449 | usage += "         ticks noticks minorticks nominorticks \n"; 
 | 
|---|
| 450 | usage += "         extticks intticks extintticks \n"; 
 | 
|---|
| 451 | usage += "         nbticks=X_NTicks,Y_NTicks  \n"; 
 | 
|---|
| 452 | usage += "         tickslen=MajTickLenFrac,MinTickLenFrac \n"; 
 | 
|---|
| 453 | usage += ">> Axe labels font size: fixedfontsize/autofontsize=fszf \n";
 | 
|---|
| 454 | usage += "         autofontsize=fsizef: Font size computed automatically \n";
 | 
|---|
| 455 | usage += "         fixedfontsize: Use font size attribute (BaseDrawer) \n";
 | 
|---|
| 456 | usage += ">> Scale type: linx liny logx logy -> Lin/Log Scales for 2D plots \n";
 | 
|---|
| 457 | usage += ">> xylimits=xmin,xmax,ymin,ymax  -> Forces X-Y limits in 2-D plots \n";
 | 
|---|
| 458 | usage += ">> defdrrect=xmin,xmax,ymin,ymax -> Defines drawing rectangle 2-D plots \n";
 | 
|---|
| 459 | usage += "          The rectangle is defined as a fraction of the widget size\n";
 | 
|---|
| 460 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 461 | 
 | 
|---|
| 462 | kw = "setinsetlimits";
 | 
|---|
| 463 | usage = "Define the display rectangle for drawers added as insets \n";
 | 
|---|
| 464 | usage += " over existing graphic objects - limits expressed as fraction \n";  
 | 
|---|
| 465 | usage += " graphic object size (0. .. 1.) Xmax at right, YMax top \n ";
 | 
|---|
| 466 | usage += " Usage: setinsetlimits xmin xmax ymin ymax";
 | 
|---|
| 467 | usage += "\n  Related commands: graphicatt /inset";  
 | 
|---|
| 468 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 469 | 
 | 
|---|
| 470 | kw = "drpanel";
 | 
|---|
| 471 | usage = "Creates a new 2D drawing zone for addtext, addline \n";
 | 
|---|
| 472 | usage += " Usage: drpanel xmin xmax ymin ymax [GrAtt] [Name]";
 | 
|---|
| 473 | usage += "\n  Related commands: addtext addline addrect addcirc ...";  
 | 
|---|
| 474 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 475 | 
 | 
|---|
| 476 | kw = "addtext";
 | 
|---|
| 477 | usage = "Adds a text string to the current graphic object";
 | 
|---|
| 478 | usage += "\n at the specified position (+ color/font/pos/dir attributes) ";
 | 
|---|
| 479 | usage += "\n The Base/AxesDrawer is used to handle added text strings" ;
 | 
|---|
| 480 | usage += "\n Alt<E> to remove the added element";
 | 
|---|
| 481 | usage += "\n  Usage: addtext x y TextString [ColFontPosAtt] [fgnc=false/true]";
 | 
|---|
| 482 | usage += "\n  (use quotes '' for multi word text strings) ";
 | 
|---|
| 483 | usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
 | 
|---|
| 484 | usage += "\n Text position/direction attribute: "; 
 | 
|---|
| 485 | usage += "\n      horizleft horizcenter horizright";
 | 
|---|
| 486 | usage += "\n      vertbottom vertcenter verttop ";
 | 
|---|
| 487 | usage += "\n      textdirhoriz textdirvertup textdirvertdown ";
 | 
|---|
| 488 | usage += "\n  Related commands: addctext addline addarrow addrect addfrect";
 | 
|---|
| 489 | usage += "\n      addcirc addfcirc addarc addfrac addpoly addfpoly settitle graphicatt";  
 | 
|---|
| 490 | mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 | 
|---|
| 491 | 
 | 
|---|
| 492 | kw = "addctext";
 | 
|---|
| 493 | usage = "Adds a composite text string with superscript and subscripts ";
 | 
|---|
| 494 | usage += "\n at the specified position (+ color/font/pos/dir attributes) ";
 | 
|---|
| 495 | usage += "\n  Usage: addctext x y Text sUp sDown [ColFontPosAtt] [UpDownFontAtt] [fgnc]";
 | 
|---|
| 496 | usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
 | 
|---|
| 497 | usage += "\n  Related commands: addtext addline addrect ...";
 | 
|---|
| 498 | usage += "\n      (See command addtext and graphicatt for more details)";  
 | 
|---|
| 499 | mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 | 
|---|
| 500 | 
 | 
|---|
| 501 | kw = "addline";
 | 
|---|
| 502 | usage = "Adds a line to the current graphic object";
 | 
|---|
| 503 | usage += "\n at the specified position (+ graphic attribute)";
 | 
|---|
| 504 | usage += "\n The Base/AxesDrawer is used to handle added lines"; 
 | 
|---|
| 505 | usage += "\n Alt<E> to remove the added element";
 | 
|---|
| 506 | usage += "\n  Usage: addline x1 y1 x2 y2 [GraphicAtt] [fgnc=false/true]";
 | 
|---|
| 507 | usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
 | 
|---|
| 508 | usage += "\n  Related commands: addarrow addtext addrect addfrect ";
 | 
|---|
| 509 | usage += "\n       addmarker addcirc addfcirc addarc addfarc addpoly addfpoly graphicatt";  
 | 
|---|
| 510 | mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 | 
|---|
| 511 | 
 | 
|---|
| 512 | kw = "addarrow";
 | 
|---|
| 513 | usage = "Adds an arrow to the current graphic object";
 | 
|---|
| 514 | usage += "\n at the specified position (+ graphic attribute)";
 | 
|---|
| 515 | usage += "\n The Base/AxesDrawer is used to handle added lines"; 
 | 
|---|
| 516 | usage += "\n Alt<E> to remove the added element";
 | 
|---|
| 517 | usage += "\n  Usage: addarrow x1 y1 x2 y2 [GraphicAtt] [fgnc=false/true]";
 | 
|---|
| 518 | usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
 | 
|---|
| 519 | usage += "\n  Related commands: addline addtext addrect addfrect ";
 | 
|---|
| 520 | usage += "\n       addmarker addcirc addfcirc addarc addfarc addpoly addfpoly graphicatt";  
 | 
|---|
| 521 | mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 | 
|---|
| 522 | kw = "addarrow_nc";
 | 
|---|
| 523 | 
 | 
|---|
| 524 | kw = "addrect";
 | 
|---|
| 525 | usage = "Adds a rectangle to the current graphic object";
 | 
|---|
| 526 | usage += "\n between the specified positions (+ graphic attribute)";
 | 
|---|
| 527 | usage += "\n The Base/AxesDrawer is used to handle added rectangle"; 
 | 
|---|
| 528 | usage += "\n Alt<E> to remove added element";
 | 
|---|
| 529 | usage += "\n  Usage: addrect x1 y1 x2 y2 [GraphicAtt] [fgnc=false/true]";
 | 
|---|
| 530 | usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
 | 
|---|
| 531 | usage += "\n  Related commands: addtext addline addarrow addfrect";
 | 
|---|
| 532 | usage += "\n       addcirc addfcirc addarc addfarc addpoly addfpoly graphicatt";  
 | 
|---|
| 533 | mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 | 
|---|
| 534 | 
 | 
|---|
| 535 | kw = "addfrect";
 | 
|---|
| 536 | usage = "Adds a filled rectangle to the current graphic object";
 | 
|---|
| 537 | usage += "\n between the specified positions (+ graphic attribute)";
 | 
|---|
| 538 | usage += "\n The Base/AxesDrawer is used to handle added rectangle"; 
 | 
|---|
| 539 | usage += "\n Alt<E> to remove added element";
 | 
|---|
| 540 | usage += "\n  Usage: addfrect x1 y1 x2 y2 [GraphicAtt] [fgnc=false/true]";
 | 
|---|
| 541 | usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
 | 
|---|
| 542 | usage += "\n  Related commands: addtext addline addarrow addrect";
 | 
|---|
| 543 | usage += "\n       addcirc addfcirc addpoly addfpoly graphicatt";  
 | 
|---|
| 544 | mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 | 
|---|
| 545 | 
 | 
|---|
| 546 | kw = "addmarker";
 | 
|---|
| 547 | usage = "Adds a marker to the current graphic object";
 | 
|---|
| 548 | usage += "\n at the specified position (+ graphic attribute)";
 | 
|---|
| 549 | usage += "\n The Base/AxesDrawer is used to handle added circles"; 
 | 
|---|
| 550 | usage += "\n Alt<E> to remove added element";
 | 
|---|
| 551 | usage += "\n  Usage: addmarker xpos ypos [GraphicAtt] [fgnc=false/true]";
 | 
|---|
| 552 | usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
 | 
|---|
| 553 | usage += "\n  Related commands: addtext addline addarrow addfrect addfrect";
 | 
|---|
| 554 | usage += "\n       addcirc addfcirc addarc addfarc addpoly addfpoly graphicatt";  
 | 
|---|
| 555 | mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 | 
|---|
| 556 | 
 | 
|---|
| 557 | kw = "addcirc";
 | 
|---|
| 558 | usage = "Adds a circle to the current graphic object";
 | 
|---|
| 559 | usage += "\n with the specified center and radius (+ graphic attribute)";
 | 
|---|
| 560 | usage += "\n The Base/AxesDrawer is used to handle added circles"; 
 | 
|---|
| 561 | usage += "\n Alt<E> to remove added element";
 | 
|---|
| 562 | usage += "\n  Usage: addcirc xcenter ycenter radius [GraphicAtt] [fgnc=false/true]";
 | 
|---|
| 563 | usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
 | 
|---|
| 564 | usage += "\n  Related commands: addtext addline addarrow addfrect addfrect";
 | 
|---|
| 565 | usage += "\n       addfcirc addarc addfarc addpoly addfpoly graphicatt";  
 | 
|---|
| 566 | mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 | 
|---|
| 567 | 
 | 
|---|
| 568 | kw = "addfcirc";
 | 
|---|
| 569 | usage = "Adds a filled circle to the current graphic object";
 | 
|---|
| 570 | usage += "\n with the specified center and radius (+ graphic attribute)";
 | 
|---|
| 571 | usage += "\n The Base/AxesDrawer is used to handle added circles"; 
 | 
|---|
| 572 | usage += "\n Alt<E> to remove added element";
 | 
|---|
| 573 | usage += "\n  Usage: addcirc xcenter ycenter radius [GraphicAtt] [fgnc=false/true]";
 | 
|---|
| 574 | usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
 | 
|---|
| 575 | usage += "\n  Related commands: addtext addline addarrow addfrect addfrect";
 | 
|---|
| 576 | usage += "\n       addcirc addarc addfarc addpoly addfpoly graphicatt";  
 | 
|---|
| 577 | mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 | 
|---|
| 578 | 
 | 
|---|
| 579 | kw = "addoval";
 | 
|---|
| 580 | usage = "Adds an oval (ellipse) to the current graphic object";
 | 
|---|
| 581 | usage += "\n centered on xc,yc - semi-axis ds,dy (+ graphic attribute)";
 | 
|---|
| 582 | usage += "\n The Base/AxesDrawer is used to handle added rectangle"; 
 | 
|---|
| 583 | usage += "\n Alt<E> to remove added element";
 | 
|---|
| 584 | usage += "\n  Usage: addoval xc yc dx dy [GraphicAtt] [fgnc=false/true]";
 | 
|---|
| 585 | usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
 | 
|---|
| 586 | usage += "\n  Related commands: addfoval addline addarrow addfrect addcirc addfcirc";
 | 
|---|
| 587 | usage += "\n       addcirc addfcirc addarc addfarc addpoly addfpoly graphicatt";  
 | 
|---|
| 588 | mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 | 
|---|
| 589 | 
 | 
|---|
| 590 | kw = "addfoval";
 | 
|---|
| 591 | usage = "Adds a filled oval (ellipse) to the current graphic object";
 | 
|---|
| 592 | usage += "\n centered on xc,yc - semi-axis ds,dy (+ graphic attribute)";
 | 
|---|
| 593 | usage += "\n The Base/AxesDrawer is used to handle added rectangle"; 
 | 
|---|
| 594 | usage += "\n Alt<E> to remove added element";
 | 
|---|
| 595 | usage += "\n  Usage: addfoval xc yc dx dy [GraphicAtt] [fgnc=false/true]";
 | 
|---|
| 596 | usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
 | 
|---|
| 597 | usage += "\n  Related commands: addoval addline addarrow addfrect addcirc addfcirc";
 | 
|---|
| 598 | usage += "\n       addcirc addfcirc addarc addfarc addpoly addfpoly graphicatt";  
 | 
|---|
| 599 | mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 | 
|---|
| 600 | 
 | 
|---|
| 601 | kw = "addarca";
 | 
|---|
| 602 | usage = "Adds an arc to the current graphic object";
 | 
|---|
| 603 | usage += "\n defined by the circle (center+radius), start angle and angular extension";
 | 
|---|
| 604 | usage += "\n Angles are specified in degrees";
 | 
|---|
| 605 | usage += "\n  Usage: addarca xc yc r a0deg dadeg [GraphicAtt] [fgnc=false/true]";
 | 
|---|
| 606 | usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
 | 
|---|
| 607 | usage += "\n  Related commands: addtext addline addfarca addarc ...";
 | 
|---|
| 608 | mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 | 
|---|
| 609 | 
 | 
|---|
| 610 | kw = "addfarca";
 | 
|---|
| 611 | usage = "Adds a filled arc to the current graphic object";
 | 
|---|
| 612 | usage += "\n defined by the circle (center+radius), start angle and angular extension";
 | 
|---|
| 613 | usage += "\n Angles are specified in degrees";
 | 
|---|
| 614 | usage += "\n  Usage: addfarca xc yc r a0deg dadeg [GraphicAtt] [fgnc=false/true]";
 | 
|---|
| 615 | usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
 | 
|---|
| 616 | usage += "\n  Related commands: addtext addline addarca addarc ...";
 | 
|---|
| 617 | mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 | 
|---|
| 618 | 
 | 
|---|
| 619 | kw = "addarc";
 | 
|---|
| 620 | usage = "Adds an arc to the current graphic object";
 | 
|---|
| 621 | usage += "\n defined by 3 points (+ graphic attribute)";
 | 
|---|
| 622 | usage += "\n The Base/AxesDrawer is used to handle added arcs"; 
 | 
|---|
| 623 | usage += "\n Alt<E> to remove the added element";
 | 
|---|
| 624 | usage += "\n  Usage: addarc x1 y1 x2 y2 x3 y3 [GraphicAtt] [fgnc=false/true]";
 | 
|---|
| 625 | usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
 | 
|---|
| 626 | usage += "\n  Related commands: addtext addline addarrow addfrect addfrect";
 | 
|---|
| 627 | usage += "\n       addcirc addfcirc addfarc addarca addpoly addfpoly graphicatt";  
 | 
|---|
| 628 | mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 | 
|---|
| 629 | 
 | 
|---|
| 630 | kw = "addfarc";
 | 
|---|
| 631 | usage = "Adds a filled arc to the current graphic object";
 | 
|---|
| 632 | usage += "\n defined by 3 points (+ graphic attribute)";
 | 
|---|
| 633 | usage += "\n The Base/AxesDrawer is used to handle added arcs"; 
 | 
|---|
| 634 | usage += "\n Alt<E> to remove added element";
 | 
|---|
| 635 | usage += "\n  Usage: addarc x1 y1 x2 y2 x3 y3 [GraphicAtt] [fgnc=false/true]";
 | 
|---|
| 636 | usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
 | 
|---|
| 637 | usage += "\n  Related commands: addtext addline addarrow addfrect addfrect";
 | 
|---|
| 638 | usage += "\n       addcirc addfcirc addfarc addpoly addfpoly graphicatt";  
 | 
|---|
| 639 | mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 | 
|---|
| 640 | 
 | 
|---|
| 641 | kw = "addpoly";
 | 
|---|
| 642 | usage = "Adds a polyline/polygon to the current graphic object";
 | 
|---|
| 643 | usage += "\n  Usage: addploy 'x1,y1 x2,y2 x3,y3 ...' [GraphicAtt] [fgnc=false/true]";
 | 
|---|
| 644 | usage += "\n  Coordinates specified as pairs x,y in a single word (use simple or double quotes";
 | 
|---|
| 645 | usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
 | 
|---|
| 646 | usage += "\n  Related commands: addtext addline addarrow addfrect addfrect";
 | 
|---|
| 647 | usage += "\n       addcirc addfcirc addfarc  graphicatt";  
 | 
|---|
| 648 | mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 | 
|---|
| 649 | 
 | 
|---|
| 650 | kw = "addfpoly";
 | 
|---|
| 651 | usage = "Adds a filled polygon to the current graphic object";
 | 
|---|
| 652 | usage += "\n  Usage: addploy 'x1,y1 x2,y2 x3,y3 ...' [GraphicAtt] [fgnc=false/true]";
 | 
|---|
| 653 | usage += "\n  Coordinates specified as pairs x,y in a single word (use simple or double quotes";
 | 
|---|
| 654 | usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
 | 
|---|
| 655 | usage += "\n  Related commands: addtext addline addarrow addfrect addfrect";
 | 
|---|
| 656 | usage += "\n       addcirc addfcirc addfarc  graphicatt";  
 | 
|---|
| 657 | mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 | 
|---|
| 658 | 
 | 
|---|
| 659 | kw = "settitle";
 | 
|---|
| 660 | usage = "Set the title string (top title / bottom title) for the current graphic object";
 | 
|---|
| 661 | usage += "\n  Usage: settitle TopTitle [BottomTitle] [fontAtt]";
 | 
|---|
| 662 | usage += "\n  Related commands: addtext graphicatt";  
 | 
|---|
| 663 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 664 | 
 | 
|---|
| 665 | kw = "addtitle";
 | 
|---|
| 666 | usage = "Set the title string (top title / bottom title) \n";
 | 
|---|
| 667 | usage += "   alias for settitle ";
 | 
|---|
| 668 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 669 | 
 | 
|---|
| 670 | kw = "setaxelabels";
 | 
|---|
| 671 | usage = "Set the X and Y axis labels for the current 2D graphic object \n";
 | 
|---|
| 672 | usage += "\n  Usage: setaxelabels xLabel yLabel [ColorFntAtt]";
 | 
|---|
| 673 | usage += "\n  Related commands: settitle addtext graphicatt";  
 | 
|---|
| 674 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 675 | 
 | 
|---|
| 676 | kw = "addaxelabels";
 | 
|---|
| 677 | usage = "Set the X and Y axis labels for the current 2D graphic object";
 | 
|---|
| 678 | usage += "   alias for setaxelabels ";
 | 
|---|
| 679 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 680 | 
 | 
|---|
| 681 | grp = "Obj. Display";
 | 
|---|
| 682 | kw = "disp";
 | 
|---|
| 683 | usage = "Displays an object \n Usage: disp nameobj [graphic_attributes]";
 | 
|---|
| 684 | usage += "\n  Related commands: surf nt2d nt3d vecplot";  
 | 
|---|
| 685 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 686 | kw = "imag";
 | 
|---|
| 687 | usage = "Displays an object as an image \n Usage: imag nameobj [graphic_attributes]";
 | 
|---|
| 688 | usage += "\n  Related commands: disp imagnav surf nt2d nt3d vecplot";  
 | 
|---|
| 689 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 690 | kw = "imagnav";
 | 
|---|
| 691 | usage = "Displays an object as an image with the ImageNavigator viewer \n";
 | 
|---|
| 692 | usage += "Usage: imagnav nameobj [graphic_attributes]";
 | 
|---|
| 693 | usage += "\n  Related commands: disp imag surf nt2d nt3d vecplot";  
 | 
|---|
| 694 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 695 | kw = "surf";
 | 
|---|
| 696 | usage = "Displays an object as a 3D surface \n Usage: surf nameobj [graphic_attributes]";
 | 
|---|
| 697 | usage += "\n  Related commands: disp nt2d nt3d vecplot";  
 | 
|---|
| 698 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 699 | kw = "nt2d";
 | 
|---|
| 700 | usage = "Displays Points (X-Y) [with error-bar / Weight / Label ] from an NTuple ";
 | 
|---|
| 701 | usage += "\n Usage : nt2d nameobj varx vary [errx erry wt label graphic_attributes]";
 | 
|---|
| 702 | usage += "\n  Related commands: disp surf nt2dcn nt2dci nt3d  gfd2d vecplot";  
 | 
|---|
| 703 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 704 | kw = "nt2dcn";
 | 
|---|
| 705 | usage = "Displays Points (X-Y) [with error-bar / Weight / Label ] from an NTuple ";
 | 
|---|
| 706 | usage = "   with colors specified by a column content (as color names) ";
 | 
|---|
| 707 | usage += "\n Usage : nt2dcn nameobj color varx vary [errx erry wt label graphic_attributes]";
 | 
|---|
| 708 | usage += "\n  Related commands: disp  surf  nt2d nt2dci nt3d  gfd2d vecplot";  
 | 
|---|
| 709 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 710 | kw = "nt2dci";
 | 
|---|
| 711 | usage = "Displays Points (X-Y) [with error-bar / Weight / Label ] from an NTuple ";
 | 
|---|
| 712 | usage = "   with colors specified by a column content (as color index) ";
 | 
|---|
| 713 | usage += "\n Usage : nt2dci nameobj color varx vary [errx erry wt label graphic_attributes]";
 | 
|---|
| 714 | usage += "\n  Related commands: disp  surf  nt2d nt2dci nt3d  gfd2d vecplot";  
 | 
|---|
| 715 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 716 | kw = "nt3d";
 | 
|---|
| 717 | usage = "Displays 3D-Points (X-Y-Z) [with error-bars / Weight / Label ] from an NTuple ";
 | 
|---|
| 718 | usage += "\n Usage : nt3d nameobj varx vary varz [errx erry errz wt label graphic_attributes]";
 | 
|---|
| 719 | usage += "\n  Related commands: disp  surf  nt2d gfd3d ";  
 | 
|---|
| 720 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 721 | kw = "vecplot";
 | 
|---|
| 722 | usage = "Displays Points (X-Y) with coordinates defined by two vectors ";
 | 
|---|
| 723 | usage += "\n Usage : vecplot nameVecX nameVecY [graphic_attributes]";
 | 
|---|
| 724 | usage += "\n  Related commands: disp nt2d ";  
 | 
|---|
| 725 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 726 | 
 | 
|---|
| 727 | kw = "bargraph";
 | 
|---|
| 728 | usage = "Bar-Graph view of a sequence of values ";
 | 
|---|
| 729 | usage += "\n Usage: bargraph ValueVarName [gr_opt]  ";
 | 
|---|
| 730 | usage += "\n    or  bargraph ValueVarName LabelVarName ColPosVarName [gr_opt] ";
 | 
|---|
| 731 | usage += "\n  ValueVarName,LabelVarName,ColPosVarName are PIACmd interpreter "; 
 | 
|---|
| 732 | usage += "\n     variable name (vectors) ";
 | 
|---|
| 733 | usage += "\n - ValueVarName: Sequence of values to be represented";
 | 
|---|
| 734 | usage += "\n - LabelVarName: Corresponding labels";
 | 
|---|
| 735 | usage += "\n - ColPosVarName: Corresponding colors or color,position pairs ";
 | 
|---|
| 736 | usage += "\n Use a dash (-) or ! as placeholder for LabelVarName/ColPosVarName";
 | 
|---|
| 737 | usage += "\n Specific graphic options: fill/nofill packfrac=value ";
 | 
|---|
| 738 | usage += "\n    horizontalbars/verticalbars  barvaluelabel/nobarvaluelabel";
 | 
|---|
| 739 | usage += "\n Related commands: disp nt2d vecplot ...";  
 | 
|---|
| 740 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 741 | kw = "textdrawer";
 | 
|---|
| 742 | usage = "Multi line text darwer ";
 | 
|---|
| 743 | usage += "\n Usage : textdrawer LinesVarName AttVarName [gr_opt] ";
 | 
|---|
| 744 | usage += "\n  LinesVarName,AttVarName are PIACmd interpreter variables"; 
 | 
|---|
| 745 | usage += "\n - LinesVarName: Lines to be displayed";
 | 
|---|
| 746 | usage += "\n - AttVarName: Corresponding font/marker/color attributes";
 | 
|---|
| 747 | usage += "\n Use a dash (-) or ! as placeholder for AttVarName";
 | 
|---|
| 748 | usage += "\n Specific graphic options: frame/noframe";
 | 
|---|
| 749 | usage += "\n Related commands: disp ... ";  
 | 
|---|
| 750 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 751 | 
 | 
|---|
| 752 | 
 | 
|---|
| 753 | // Ceci est maintenant obsolete, on garde pour info.
 | 
|---|
| 754 | kw = "gfd2d";
 | 
|---|
| 755 | usage = "Displays Points (X-Y) with error-bars from a GeneralFit Data ";
 | 
|---|
| 756 | usage += "\n Usage : gfd2d nameobj numvarx erreur=(x y xy) [graphic_attributes]";
 | 
|---|
| 757 | usage += "\n  Related commands: gfd3d nt2d nt3d ";
 | 
|---|
| 758 | usage += "\n  ----- OBSOLETE: utilisez nt2d -----";
 | 
|---|
| 759 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 760 | kw = "gfd3d";
 | 
|---|
| 761 | usage = "Displays 3D-Points (X-Y-Z) with error-bars from a GeneralFit Data ";
 | 
|---|
| 762 | usage += "\n Usage : gfd3d nameobj numvarx numvary erreur=(x y z xy xz yz xyz) [graphic_attributes]";
 | 
|---|
| 763 | usage += "\n  Related commands: gfd2d nt2d nt3d ";  
 | 
|---|
| 764 | usage += "\n  ----- OBSOLETE: utilisez nt3d -----";
 | 
|---|
| 765 | mpiac->RegisterCommand(kw, usage, this, grp);
 | 
|---|
| 766 | 
 | 
|---|
| 767 | }
 | 
|---|
| 768 | 
 | 
|---|
| 769 | 
 | 
|---|
| 770 | /* --Methode-- */
 | 
|---|
| 771 | void PIAGraphicExecutor::RegisterPIGraphicsHelp(PIACmd* piac)
 | 
|---|
| 772 | // Methode pour enregistrer le Help des Widgets et Windows de piapp 
 | 
|---|
| 773 | {
 | 
|---|
| 774 | string kw,grp,usage;
 | 
|---|
| 775 | 
 | 
|---|
| 776 | grp = "Graphics";
 | 
|---|
| 777 | 
 | 
|---|
| 778 | kw = "PIImage";
 | 
|---|
| 779 | usage = "Manages the display of a 2-D array (P2DArrayAdapter) as an image \n";
 | 
|---|
| 780 | usage += "and controls a zoom widget, as well as a global image view widget \n";
 | 
|---|
| 781 | usage += ">>>> Mouse controls : \n";
 | 
|---|
| 782 | usage += "o Button-1: Display current coordinates and pixel value\n";
 | 
|---|
| 783 | usage += "  Position the cursor an refresh the zoom widget\n";
 | 
|---|
| 784 | usage += "o Button-2: Defines an image zone and positions the cursor \n";
 | 
|---|
| 785 | usage += "o Button-3: Moves the viewed portion of the array inside the window \n";
 | 
|---|
| 786 | usage += ">>>> Keyboard controls : \n";
 | 
|---|
| 787 | usage += "o <Alt>R : Refresh display \n";
 | 
|---|
| 788 | usage += "o <Alt>O : Shows the PIImageTools (image display parameter controls) \n";
 | 
|---|
| 789 | usage += "o <Alt>G : Show the PIDrawerTools (Graphic attributes of overlayed graphics (Drawers)) \n";
 | 
|---|
| 790 | usage += "o <Alt>D : Shows the drawer manipulation pop-up menu \n";
 | 
|---|
| 791 | usage += "o <Alt>V : Copy/Paste / Text paste at the current cursor position \n";
 | 
|---|
| 792 | usage += "o <Alt>C : Copy/Paste / Copies the selected regions content as text in the copy/paste buffer \n";
 | 
|---|
| 793 | usage += "o <Alt>X : Show/Hide the Cut Window \n";
 | 
|---|
| 794 | usage += "o <Alt>Z : Removes added graphic elements (handled by BaseDrawer - 0) \n";
 | 
|---|
| 795 | usage += "o <Alt>E : Removes the last added graphic element \n";
 | 
|---|
| 796 | usage += "o <Alt>+ or <Cntl>+ : Zoom in \n";
 | 
|---|
| 797 | usage += "o <Alt>- or <Cntl>- : Zoom out \n";
 | 
|---|
| 798 | usage += "o Cursor keys : Moves the image cursor \n";
 | 
|---|
| 799 | piac->RegisterHelp(kw, usage, grp);
 | 
|---|
| 800 | 
 | 
|---|
| 801 | kw = "PIScDrawWdg";
 | 
|---|
| 802 | usage = "Manages display of 2-D drawers with interactive zoom \n";
 | 
|---|
| 803 | usage += ">>>> Mouse controls : \n";
 | 
|---|
| 804 | usage += "o Button-1: Display current coordinates \n";
 | 
|---|
| 805 | usage += "o Button-2: Defines a rectangle for zoom \n";
 | 
|---|
| 806 | usage += "o Button-3: Defines a rectangle for Text-Info (<Alt>I) \n";
 | 
|---|
| 807 | usage += ">>>> Keyboard controls : \n";
 | 
|---|
| 808 | usage += "o <Alt>R : Refresh display \n";
 | 
|---|
| 809 | usage += "o <Alt>O : Displays a specific control window (default: PIDrawerTools) \n";
 | 
|---|
| 810 | usage += "           (2-D histograms, contour plot ...) \n";
 | 
|---|
| 811 | usage += "o <Alt>G : Show the PIDrawerTools (Graphic attributes of displayed Drawers) \n";
 | 
|---|
| 812 | usage += "           Drawer 0 manages the axes, as well as the added text \n";
 | 
|---|
| 813 | usage += "o <Alt>D : Shows the drawer manipulation pop-up menu \n";
 | 
|---|
| 814 | usage += "o <Alt>V : Copy/Paste / Text paste at the current position \n";
 | 
|---|
| 815 | usage += "o <Alt>Z : Removes added graphic elements (handled by BaseDrawer - 0) \n";
 | 
|---|
| 816 | usage += "o <Alt>E : Removes the last added graphic element \n";
 | 
|---|
| 817 | usage += "o <Alt>I : Shows (or updates) a text info window on the selected rectangle \n";
 | 
|---|
| 818 | usage += "o <Alt>M : Activate/Deactivate a measurement cursor on Button-1\n";
 | 
|---|
| 819 | usage += "o <Alt>L : Deactivate DX,DY print (see below)\n";
 | 
|---|
| 820 | usage += ">>>> Mouse + Keyboard controls : \n";
 | 
|---|
| 821 | usage += "o Button-1 + <Alt>K : Set (reset) the reference point for DX,DY print \n";
 | 
|---|
| 822 | piac->RegisterHelp(kw, usage, grp);
 | 
|---|
| 823 | 
 | 
|---|
| 824 | kw = "PIDraw3DWdg";
 | 
|---|
| 825 | usage = "Manages display of 3-D objects (drawers)  \n";
 | 
|---|
| 826 | usage += ">>>> Mouse controls : \n";
 | 
|---|
| 827 | usage += "o Button-2: Rotates the observer (camera) around object \n";
 | 
|---|
| 828 | usage += "o Shift-Button-2: Rotates object with camera fixed \n";
 | 
|---|
| 829 | usage += "  The object rotation mode can be assigned to Button-2 with <Alt>S \n";
 | 
|---|
| 830 | usage += "o Button-3: Zoom control (Camera distance And/Or view angle) \n";
 | 
|---|
| 831 | usage += ">>>> Keyboard controls : \n";
 | 
|---|
| 832 | usage += "o <Alt>R : Resets the 3-D view and refreshes the display \n";
 | 
|---|
| 833 | usage += "o <Alt>O : Displays a specific control window (default: PIDrawerTools) \n";
 | 
|---|
| 834 | usage += "           (2-D histograms, contour plot ...) \n";
 | 
|---|
| 835 | usage += "o <Alt>G : Show the PIDrawerTools (Graphic attributes of displayed Drawers) \n";
 | 
|---|
| 836 | usage += "           Drawer 0 manages the axes, as well as the added text \n";
 | 
|---|
| 837 | usage += "o <Alt>D : Shows the drawer manipulation pop-up menu \n";
 | 
|---|
| 838 | usage += "o <Alt>V : Copy/Paste / Text paste at the current position (Drawer 0)\n";
 | 
|---|
| 839 | usage += "o <Alt>Z : Removes added graphic elements (handled by BaseDrawer - 0) \n";
 | 
|---|
| 840 | usage += "o <Alt>E : Removes the last added graphic element \n";
 | 
|---|
| 841 | usage += "o <Alt>A : Activate/Deactivate axes drawing \n";
 | 
|---|
| 842 | usage += "o <Alt>S : Activate/Deactivate object rotation mode on Button-2 \n";
 | 
|---|
| 843 | piac->RegisterHelp(kw, usage, grp);
 | 
|---|
| 844 | 
 | 
|---|
| 845 | kw = "Windows";
 | 
|---|
| 846 | usage = "Objects can be displayed in different windows, or overlayed on the \n";
 | 
|---|
| 847 | usage += "previous display. The graphics attributes next,win,stack,same control \n";
 | 
|---|
| 848 | usage += "the display window. \n";
 | 
|---|
| 849 | usage += "o GraphicWindow : This is the default mode (gr_att=next)\n";
 | 
|---|
| 850 | usage += "  Graphic windows can be divided int zones. Object is displayed \n";
 | 
|---|
| 851 | usage += "  in the next available position, removing a previously displayed \n";
 | 
|---|
| 852 | usage += "  widget if necessary \n";
 | 
|---|
| 853 | usage += "o Window : An object is displayed in its own window (gr_att= win) \n";
 | 
|---|
| 854 | usage += "o StackWindow : multpile widgets can be stacked in a StackWindow (gr_att= stack) \n";
 | 
|---|
| 855 | usage += "  A single widget is displayed a any time. Different widgets in a StackWindow \n";
 | 
|---|
| 856 | usage += "  can be displayed using the stacknext command, as well as the StackTools item \n";
 | 
|---|
| 857 | usage += "  in the Tools menu (from Menubar). An automatic cyclic display mode can also \n";
 | 
|---|
| 858 | usage += "  be activated using the StackTools menu (Blink) \n";
 | 
|---|
| 859 | usage += "o Most objects can be also be displayed overlayed \n";
 | 
|---|
| 860 | usage += "  on the last displayed widget (gr_att= same) \n";
 | 
|---|
| 861 | usage += "  or by specifying a widget name samew=Widgetname \n";
 | 
|---|
| 862 | usage += "o The widget/window name can be specified (gr_att wname=Name) \n";
 | 
|---|
| 863 | usage += "o The overlay can be on a selected rectangle of the last \n";  
 | 
|---|
| 864 | usage += "  displayed widget (gr_att: inset  or inset=fxmin,fxmax,fymin,fymax) \n";
 | 
|---|
| 865 | usage += "\n  Related commands: newwin zone stacknext graphicatt setinsetlimits";  
 | 
|---|
| 866 | piac->RegisterHelp(kw, usage, grp);
 | 
|---|
| 867 | 
 | 
|---|
| 868 | kw = "PIConsole";
 | 
|---|
| 869 | usage = "Text output area and command editing window (console) \n";
 | 
|---|
| 870 | usage += ">>>> Mouse controls : \n";
 | 
|---|
| 871 | usage += "o Button-1: Rectangle selection for copy/paste \n";
 | 
|---|
| 872 | usage += "o Button-2: Paste text in the command editing line \n";
 | 
|---|
| 873 | usage += "o Button-3: activate display option menu \n";
 | 
|---|
| 874 | usage += ">>>> Keyboard controls : \n";
 | 
|---|
| 875 | usage += "o <Alt>O : activate display option menu   \n";
 | 
|---|
| 876 | usage += "o <Alt>V : Paste text in the command editing line \n";
 | 
|---|
| 877 | usage += "o <Alt>A : Selection of the whole window for copy \n";
 | 
|---|
| 878 | usage += "o <Alt>L : Command history (List of command history buffer) \n";
 | 
|---|
| 879 | usage += "o <Ctl>A : Command editing -> Goto the beginning of line \n";
 | 
|---|
| 880 | usage += "o <Ctl>E : Command editing -> Goto the end of line \n";
 | 
|---|
| 881 | usage += "o <Ctl>K : Command editing -> Clear to the end of line \n";
 | 
|---|
| 882 | usage += "o <Ctl>C : Command editing -> Clear the line \n";
 | 
|---|
| 883 | usage += "o Cursor left,right : Command editing -> Move cursor \n";
 | 
|---|
| 884 | usage += "o Cursor Up,Down : recall command from history buffer \n";
 | 
|---|
| 885 | usage += "o Backspace,Del : Command editing \n";
 | 
|---|
| 886 | usage += "o <Return>,<Enter> : Execute command \n";
 | 
|---|
| 887 | piac->RegisterHelp(kw, usage, grp);
 | 
|---|
| 888 | }
 | 
|---|
| 889 | 
 | 
|---|
| 890 | /* --Methode-- */
 | 
|---|
| 891 | int PIAGraphicExecutor::BarGraph(string& keyw, vector<string>& tokens)
 | 
|---|
| 892 | {
 | 
|---|
| 893 |   //PAS necessaire pour le moment-- if (kw != "bargraph") return 2;
 | 
|---|
| 894 |   if (tokens.size() < 1) { 
 | 
|---|
| 895 |     cout << "Usage: bargraph ValueVarName [gr_opt]" << endl;
 | 
|---|
| 896 |     cout << "   or  bargraph ValueVarName LabelVarName ColPosVarName [gr_opt]" << endl;
 | 
|---|
| 897 |     return(0); 
 | 
|---|
| 898 |   }
 | 
|---|
| 899 |   PIBarGraph* bgd = NULL; 
 | 
|---|
| 900 |   vector<string> barvals;
 | 
|---|
| 901 |   string gropt;
 | 
|---|
| 902 |   if (!mpiac->GetVar(tokens[0], barvals)) {
 | 
|---|
| 903 |     cout << "bargraph/Error: No variable with name " << tokens[0] << endl;
 | 
|---|
| 904 |     return(1);
 | 
|---|
| 905 |   }
 | 
|---|
| 906 |   if (tokens.size() < 3) {   
 | 
|---|
| 907 |     bgd = new PIBarGraph;
 | 
|---|
| 908 |     for(int k=0; k<barvals.size(); k++)
 | 
|---|
| 909 |       bgd->AddBar(atof(barvals[k].c_str()));
 | 
|---|
| 910 |     if (tokens.size() > 1)  gropt = tokens[1]; 
 | 
|---|
| 911 |   }
 | 
|---|
| 912 |   else {
 | 
|---|
| 913 |     vector<string> barlabs;
 | 
|---|
| 914 |     if (!mpiac->GetVar(tokens[1], barlabs)) {
 | 
|---|
| 915 |       cout << "bargraph/Warning: No variable with name "  << tokens[1] 
 | 
|---|
| 916 |            << " using Values as labels " << endl;
 | 
|---|
| 917 |       barlabs = barvals;
 | 
|---|
| 918 |     }
 | 
|---|
| 919 |     vector<string> barcols;
 | 
|---|
| 920 |     if (!mpiac->GetVar(tokens[2], barcols)) {
 | 
|---|
| 921 |       cout << "bargraph/Warning: No variable with name "  << tokens[1] 
 | 
|---|
| 922 |            << " using default attributes " << endl;
 | 
|---|
| 923 |       for(int kad=0; kad<barvals.size(); kad++) barcols.push_back("");
 | 
|---|
| 924 |     }
 | 
|---|
| 925 |     if ( (barvals.size() != barlabs.size()) || 
 | 
|---|
| 926 |          (barvals.size() != barcols.size()) ) {
 | 
|---|
| 927 |       cout << "bargraph/Error: Variables " << tokens[0] << "," << tokens[1]
 | 
|---|
| 928 |            << "," << tokens[2] << " have different sizes" << endl;
 | 
|---|
| 929 |       return(1);      
 | 
|---|
| 930 |     }
 | 
|---|
| 931 |     bgd = new PIBarGraph;
 | 
|---|
| 932 |     // Synchronisation necessaire a cause de PIGraphicAtt qui peuvent faire appel a des fontes (Pb Serveur X)
 | 
|---|
| 933 |     mImgApp->LockMutex();   // <ZThread> global event loop synchronisation 
 | 
|---|
| 934 |     for(int k=0; k<barvals.size(); k++) {
 | 
|---|
| 935 |       double id = k+1;
 | 
|---|
| 936 |       size_t p = barcols[k].find(',');
 | 
|---|
| 937 |       vector<string> sgra;
 | 
|---|
| 938 |       if (p < barcols[k].length()-1) {
 | 
|---|
| 939 |         mImgApp->ParseDisplayOption(barcols[k].substr(0, p), sgra);
 | 
|---|
| 940 |         id = atof(barcols[k].substr(p+1).c_str());
 | 
|---|
| 941 |       }
 | 
|---|
| 942 |       else  mImgApp->ParseDisplayOption(barcols[k], sgra);
 | 
|---|
| 943 |       PIGraphicAtt gracol(sgra);
 | 
|---|
| 944 |       bgd->AddBar(id, atof(barvals[k].c_str()), barlabs[k], gracol.GetColor());
 | 
|---|
| 945 |     }
 | 
|---|
| 946 |     mImgApp->UnlockMutex(true); // <ZThread> global event loop synchronisation 
 | 
|---|
| 947 |     if (tokens.size() > 3)  gropt = tokens[3]; 
 | 
|---|
| 948 |   }
 | 
|---|
| 949 |   string grname = "BarGraph";
 | 
|---|
| 950 |   mImgApp->DispScDrawer(bgd, grname, gropt); 
 | 
|---|
| 951 |   return 0;
 | 
|---|
| 952 | }
 | 
|---|
| 953 | 
 | 
|---|
| 954 | /* --Methode-- */
 | 
|---|
| 955 | int PIAGraphicExecutor::TextDrawer(string& keyw, vector<string>& tokens)
 | 
|---|
| 956 | {
 | 
|---|
| 957 |   if (tokens.size() < 2) { 
 | 
|---|
| 958 |     cout << "Usage: textdrawer TextLinesVarName AttVarName [gr_opt]" << endl;
 | 
|---|
| 959 |     return(0); 
 | 
|---|
| 960 |   }
 | 
|---|
| 961 |   vector<string> txtlines;
 | 
|---|
| 962 |   if (!mpiac->GetVar(tokens[0], txtlines)) {
 | 
|---|
| 963 |     cout << "textdrawer/Error: No variable with name" << tokens[0] << endl;
 | 
|---|
| 964 |     return(1);
 | 
|---|
| 965 |   }
 | 
|---|
| 966 |   vector<string> lineatt;
 | 
|---|
| 967 |   if (!mpiac->GetVar(tokens[1], lineatt)) {
 | 
|---|
| 968 |     cout << "textdrawer/Warning: No variable with name" << tokens[1] 
 | 
|---|
| 969 |          << " using default attributes " << endl;
 | 
|---|
| 970 |     for(int kad=0; kad<txtlines.size(); kad++) lineatt.push_back("");    
 | 
|---|
| 971 |   }
 | 
|---|
| 972 |   if ( (txtlines.size() != lineatt.size()) ) { 
 | 
|---|
| 973 |     cout << "textdrawer/Error: Variables " << tokens[0] << "," << tokens[1]
 | 
|---|
| 974 |          << " have different sizes" << endl;
 | 
|---|
| 975 |     return(1);      
 | 
|---|
| 976 |   }
 | 
|---|
| 977 |   PITextDrawer* txd = new PITextDrawer;
 | 
|---|
| 978 |   // Synchronisation necessaire a cause de PIGraphicAtt qui peuvent faire appel a des fontes (Pb Serveur X)
 | 
|---|
| 979 |   mImgApp->LockMutex();   // <ZThread> global event loop synchronisation 
 | 
|---|
| 980 |   for(int k=0; k<txtlines.size(); k++) {
 | 
|---|
| 981 |     vector<string> sgra;
 | 
|---|
| 982 |     mImgApp->ParseDisplayOption(lineatt[k], sgra);
 | 
|---|
| 983 |     PIGraphicAtt gra(sgra);
 | 
|---|
| 984 |     txd->AddLine(txtlines[k], gra);
 | 
|---|
| 985 |   }
 | 
|---|
| 986 |   mImgApp->UnlockMutex(true); // <ZThread> global event loop synchronisation 
 | 
|---|
| 987 |   string grname = "TextDrawer";
 | 
|---|
| 988 |   string gropt = "inset ";
 | 
|---|
| 989 |   if (tokens.size() > 2)  gropt += tokens[2]; 
 | 
|---|
| 990 |   mImgApp->DispScDrawer(txd, grname, gropt); 
 | 
|---|
| 991 |   return 0;
 | 
|---|
| 992 | }
 | 
|---|