Changeset 2781 in Sophya for trunk/SophyaPI/PIext/basexecut.cc


Ignore:
Timestamp:
May 30, 2005, 10:00:17 AM (20 years ago)
Author:
ansari
Message:

1/ Separation de basexecut.cc en deux : commandes graphiques mises ds graphexecut.cc .h
2/ Finalisation commandes bargraph et textdrawer ds graphexecut.cc
3/ Adaptation piacmd.cc , suppression limite a 250 ds func2d et MAJ MAkefile et objlist.list

Reza 30 Mai 2005

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaPI/PIext/basexecut.cc

    r2755 r2781  
    1616#include "servnobjm.h"
    1717#include "nomgadapter.h"
    18 #include "piyfxdrw.h"
    19 #include "pibargraph.h"
    20 #include "pitxtdrw.h"
    2118
    2219#include "histos.h"
     
    5148
    5249
    53 /* Macro pour tester si flag normalized coordinate est present */
    54 #define _CkBoolNC_(_jk_) ((tokens.size()>_jk_) && (tokens[_jk_] == "true")) ? true : false;
    55 
    5650
    5751/* --Methode-- */
     
    6458  mpiac->LoadModule(tokens[0], tokens[1]);
    6559  }
    66 // >>>>>>>>>>> Fenetre graphique , changement d'attributs graphiques
    67 else if (kw == "zone") {
    68   while (tokens.size() < 2) tokens.push_back("1");
    69   int nx, ny;
    70   nx = ny = 1;
    71   nx = atoi(tokens[0].c_str());    ny = atoi(tokens[1].c_str());
    72   if (mImgApp) {
    73     mImgApp->LockMutex();  // <ZThread> global event loop synchronisation
    74     mImgApp->SetZone(nx, ny);
    75     mImgApp->UnlockMutex(true);  // <ZThread> global event loop synchronisation
    76   }
    77 
    78 else if (kw == "newwin") {
    79   int nx=1, ny=1;
    80   int sx=0, sy=0;
    81   //if(tokens.size() < 2) { cout << "Usage: newwin nx ny" << endl;  return(0); }
    82   if(tokens.size() > 0) nx = atoi(tokens[0].c_str());
    83   if(tokens.size() > 1) ny = atoi(tokens[1].c_str());
    84   if(tokens.size() > 3) {
    85     sx = atoi(tokens[2].c_str());
    86     sy = atoi(tokens[3].c_str());
    87   }
    88   if (mImgApp) {
    89     mImgApp->LockMutex();   // <ZThread> global event loop synchronisation
    90     mImgApp->CreateGraphWin(nx, ny, sx, sy);
    91     mImgApp->UnlockMutex(true); // <ZThread> global event loop synchronisation
    92   }
    93 
    94 else if (kw == "stacknext") {
    95   mImgApp->LockMutex();  // <ZThread> global event loop synchronisation
    96   mImgApp->StackWinNext();
    97   mImgApp->UnlockMutex(true);  // <ZThread> global event loop synchronisation
    98 }
    99 else if (kw == "graphicatt") {
    100   if (tokens.size() < 1) { cout << "Usage: graphicatt attributes_list (att=def->defaut)" << endl;  return(0); }
    101   string opts = tokens[0];
    102   if (tokens.size() > 1)
    103     for(unsigned int kt=1; kt<tokens.size(); kt++)  { opts += ' '; opts += tokens[kt]; }
    104   if (mImgApp) mImgApp->SetDefaultGraphicAttributes(opts);
    105   }
    106 else if (kw == "setaxesatt") {
    107   if (tokens.size() < 1) { cout << "Usage: setaxesatt attributes_list " << endl;  return(0); }
    108   string opts = tokens[0];
    109   if (tokens.size() > 1)
    110     for(unsigned int kt=1; kt<tokens.size(); kt++)  { opts += ' '; opts += tokens[kt]; }
    111   if (mImgApp) mImgApp->SetDefaultAxesAttributes(opts);
    112   }
    113 else if (kw == "setinsetlimits") {
    114   if (tokens.size() < 4) { cout << "Usage: setinsetlimits xmin xmax ymin ymax" << endl;  return(0); }
    115   double xmin = atof(tokens[0].c_str());
    116   double xmax = atof(tokens[1].c_str());
    117   double ymin = atof(tokens[2].c_str());
    118   double ymax = atof(tokens[3].c_str());
    119   mImgApp->SetInsetLimits(xmin, xmax, ymin, ymax);
    120   }
    121 else if (kw == "drpanel") {
    122   if (tokens.size() < 4) {
    123     cout << "Usage: drpanel xmin xmax ymin ymax [gratt] [name]" << endl; 
    124     return(0);
    125   }
    126   double xmin = atof(tokens[0].c_str());
    127   double xmax = atof(tokens[1].c_str());
    128   double ymin = atof(tokens[2].c_str());
    129   double ymax = atof(tokens[3].c_str());
    130   char buff[128];
    131   sprintf(buff, "axesnone xylimits=%g,%g,%g,%g ", xmin, xmax, ymin, ymax);
    132   string sop = buff;
    133   if (tokens.size() > 4) sop += tokens[4];
    134   string name;
    135   if (tokens.size() > 5) name = tokens[5];
    136   PIFuncDrawer* gdr = new PIFuncDrawer(NULL);
    137   mImgApp->DispScDrawer(gdr, name, sop);
    138 }
    139 else if (kw == "addtext") {
    140   if (tokens.size() < 3) {
    141     cout << "Usage: addtext x y txt [colfontatt] [fgnc]" << endl; 
    142     return(0);
    143   }
    144   double xp = atof(tokens[0].c_str());
    145   double yp = atof(tokens[1].c_str());
    146   string txt = tokens[2];
    147   string sop;
    148   if (tokens.size() > 3) sop = tokens[3];
    149   bool fgnc = _CkBoolNC_(4); 
    150   mImgApp->AddText(txt, xp, yp, sop, fgnc);
    151   }
    152 else if (kw == "addctext") {
    153   if (tokens.size() < 5) {
    154     cout << "Usage: addctext x y txt s_up s_dn [colfontatt] [updnfatt] [fgnc] " << endl; 
    155     return(0);
    156   }
    157   double xp = atof(tokens[0].c_str());
    158   double yp = atof(tokens[1].c_str());
    159   string sop;
    160   if (tokens.size() > 5) sop = tokens[5];
    161   string sopfss;
    162   if (tokens.size() > 6) sopfss = tokens[6];
    163   bool fgnc = _CkBoolNC_(7); 
    164   mImgApp->AddCompText(tokens[2], tokens[3], tokens[4], xp, yp, sop, sopfss, fgnc);
    165   }
    166 else if ((kw == "addline") || (kw == "addrect") || (kw == "addfrect") ||
    167          (kw == "addoval") || (kw == "addfoval") ||
    168          (kw == "addarrow") ) {
    169   if (tokens.size() < 4) {
    170     if ( (kw == "addoval") || (kw == "addfoval") )
    171       cout << "Usage  addoval/addfoval/addarrow xc yc dx dy [colatt] [fgnc]" << endl; 
    172     else
    173       cout << "Usage: addline/addrect/addfrect/addarrow x1 y1 x2 y2 [colatt] [fgnc]" << endl; 
    174     return(0);
    175   }
    176   double xp1 = atof(tokens[0].c_str());
    177   double yp1 = atof(tokens[1].c_str());
    178   double xp2 = atof(tokens[2].c_str());
    179   double yp2 = atof(tokens[3].c_str());
    180   string sop;
    181   if (tokens.size() > 4) sop = tokens[4];
    182   bool fgnc = _CkBoolNC_(5); 
    183   if (kw == "addline") mImgApp->AddLine(xp1, yp1, xp2, yp2, sop, false, fgnc);
    184   else if (kw == "addarrow") mImgApp->AddLine(xp1, yp1, xp2, yp2, sop, true, fgnc);
    185   else {
    186     bool fgfill = ((kw == "addrect") || (kw == "addoval")) ? false : true;
    187     if ( (kw == "addrect") || (kw == "addfrect") )
    188       mImgApp->AddRectangle(xp1, yp1, xp2, yp2, sop, fgfill, fgnc);
    189     else  mImgApp->AddOval(xp1, yp1, xp2, yp2, sop, fgfill, fgnc);
    190   }
    191 }
    192 else if ((kw == "addcirc") || (kw == "addfcirc")) {
    193   if (tokens.size() < 3) {
    194     cout << "Usage: addcirc/addfcirc xc yc r [colatt] [fgnc]" << endl; 
    195     return(0);
    196   }
    197   double xc = atof(tokens[0].c_str());
    198   double yc = atof(tokens[1].c_str());
    199   double rad = atof(tokens[2].c_str());
    200   string sop;
    201   if (tokens.size() > 3) sop = tokens[3];
    202   bool fgnc = _CkBoolNC_(4); 
    203   bool fgfill = (kw == "addcirc") ? false : true;
    204   mImgApp->AddCircle(xc, yc, rad, sop, fgfill, fgnc);
    205   }
    206 else if ((kw == "addarca") || (kw == "addfarca")) {
    207   if (tokens.size() < 5) {
    208     cout << "Usage: addarca/addfarca xc yc r a da [colatt] [fgnc]" << endl; 
    209     return(0);
    210   }
    211   double xc = atof(tokens[0].c_str());
    212   double yc = atof(tokens[1].c_str());
    213   double rad = atof(tokens[2].c_str());
    214   double ang = atof(tokens[3].c_str());
    215   double dang = atof(tokens[4].c_str());
    216   string sop;
    217   if (tokens.size() > 5) sop = tokens[5];
    218   bool fgnc = _CkBoolNC_(6); 
    219   bool fgfill = (kw == "addarca") ? false : true;
    220   mImgApp->AddArc(xc, yc, rad, ang, dang, sop, fgfill, fgnc);
    221   }
    222 else if (kw == "addmarker") {
    223   if (tokens.size() < 2) {
    224     cout << "Usage: addmarker x y [gratt] [fgnc]" << endl; 
    225     return(0);
    226   }
    227   double xm = atof(tokens[0].c_str());
    228   double ym = atof(tokens[1].c_str());
    229   string sop;
    230   if (tokens.size() > 2) sop = tokens[2];
    231   bool fgnc = _CkBoolNC_(3); 
    232   mImgApp->AddCircle(xm, ym, -1, sop, false, fgnc);
    233 }
    234 else if ((kw == "addarc") || (kw == "addfarc") ) {
    235   if (tokens.size() < 6) {
    236     cout << "Usage: addarc/addfarc x1 y1 x2 y2 x3 y3 [gratt] [fgnc]" << endl; 
    237     return(0);
    238   }
    239   double x1 = atof(tokens[0].c_str());
    240   double y1 = atof(tokens[1].c_str());
    241   double x2 = atof(tokens[2].c_str());
    242   double y2 = atof(tokens[3].c_str());
    243   double x3 = atof(tokens[4].c_str());
    244   double y3 = atof(tokens[5].c_str());
    245   string sop;
    246   if (tokens.size() > 6) sop = tokens[6];
    247   bool fgnc = _CkBoolNC_(7); 
    248   bool fgfill = (kw == "addarc") ? false : true;
    249   mImgApp->AddArc(x1, y1, x2, y2, x3, y3, sop, fgfill, fgnc);
    250 }
    251 else if ((kw == "addpoly") || (kw == "addfpoly")) {
    252   if (tokens.size() < 1) {
    253     cout << "Usage: addpoly/addfpoly 'x1,y1 x2,y2 x3,y3 ...' [gratt] [fgnc]" << endl; 
    254     return(0);
    255   }
    256   vector<string> sxy;
    257   vector<double> xpol, ypol;
    258   double xp, yp;
    259   FillVStringFrString(tokens[0], sxy);
    260   for(int jkk=0; jkk<sxy.size(); jkk++) {
    261     xp = yp = 0;
    262     if (sscanf(sxy[jkk].c_str(), "%lg,%lg", &xp, &yp) == 2) {
    263       xpol.push_back(xp);
    264       ypol.push_back(yp);
    265     }
    266   }
    267   string sop;
    268   if (tokens.size() > 1) sop = tokens[1];
    269   bool fgnc = _CkBoolNC_(2); 
    270   bool fgfill = (kw == "addpoly") ? false : true;
    271   mImgApp->AddPoly(xpol, ypol, sop, fgfill, fgnc);
    272   }
    273 
    274 
    275 else if ((kw == "settitle") || (kw == "addtitle")) {
    276   if (tokens.size() < 1) { cout << "Usage: settitle/addtitle TopTitle [BotTitle] [fontatt]" << endl;  return(0); }
    277   if(tokens.size()<2) tokens.push_back("");
    278   string gropt;
    279   if(tokens.size()>2) gropt = tokens[2];
    280   mImgApp->SetTitle(tokens[0], tokens[1], gropt);
    281 }
    282 
    283 else if ((kw == "setaxelabels") || (kw == "addaxelabels")) {
    284   if (tokens.size() < 2) { cout << "Usage: setaxelabels/addaxelabels xLabel yLabel [fontatt]" << endl;  return(0); }
    285   string gropt;
    286   if(tokens.size()>2) gropt = tokens[2];
    287   mImgApp->SetAxeLabels(tokens[0], tokens[1], gropt);
    288 }
    28960 
    29061// >>>>>>>>>>> Link dynamique de fonctions C++
     
    721492
    722493
    723 // >>>>>>>>>>>  Affichage des objets
    724 else if ( (kw == "disp") || (kw == "surf") || (kw == "imag") || (kw == "imagnav") ) {
    725   if (tokens.size() < 1) { cout << "Usage: disp/surf/imag/imagnav nameobj [opt]" << endl; return(0); }
    726   string opt = "next";
    727   if (tokens.size() > 1)  opt = tokens[1];
    728   if (kw == "disp") mObjMgr->DisplayObj(tokens[0], opt);
    729   else if (kw == "surf")  mObjMgr->DisplaySurf3D(tokens[0], opt);
    730   else if (kw == "imag")  mObjMgr->DisplayImage(tokens[0], opt, false);
    731   else if (kw == "imagnav")  mObjMgr->DisplayImage(tokens[0], opt, true);
    732   }
    733 
    734 else if (kw == "nt2d") {
    735   if (tokens.size() < 3) {
    736     cout << "Usage: nt2d nameobj varx vary [errx erry wt label opt]" << endl;
    737     return(0);
    738   }
    739   while (tokens.size() < 8) tokens.push_back("");
    740   string ph = "";
    741   mObjMgr->DisplayNT(tokens[0], tokens[1], tokens[2], ph, tokens[3], tokens[4], ph,
    742                      tokens[5], tokens[6], tokens[7], false);
    743   }
    744 else if (kw == "nt3d") {
    745   if (tokens.size() < 7) {
    746     cout << "Usage: nt3d nameobj varx vary varz [errx erry errz wt label opt]" << endl;
    747     return(0);
    748   }
    749   while (tokens.size() < 10) tokens.push_back("");
    750   mObjMgr->DisplayNT(tokens[0], tokens[1], tokens[2], tokens[3], tokens[4], tokens[5],
    751                      tokens[6], tokens[7], tokens[8], tokens[9], true);
    752   }
    753 else if (kw == "vecplot") {
    754   if (tokens.size() < 2) {
    755     cout << "Usage: vecplot nameVecX nameVecY [opt]" << endl;
    756     return(0);
    757   }
    758   while (tokens.size() < 3) tokens.push_back("");
    759   mObjMgr->DisplayVector(tokens[0], tokens[1], tokens[2]);
    760 }
    761 else if (kw == "bargraph") {
    762   if (tokens.size() < 2) {
    763     cout << "Usage: bargraph gr_opt v1 [v2 ...]" << endl;
    764     return(0);
    765   }
    766   PIBarGraph* bgd = new PIBarGraph;
    767   for(int k=1; k<tokens.size(); k++)
    768     bgd->AddBar(atof(tokens[k].c_str()));
    769   string grname = "BarGraph";
    770   mImgApp->DispScDrawer(bgd, grname, tokens[0]);
    771 }
    772 else if (kw == "textdrawer") {
    773   if (tokens.size() < 2) {
    774     cout << "Usage: textdrawer gr_opt line1 [line2 ...]" << endl;
    775     return(0);
    776   }
    777   PITextDrawer* txd = new PITextDrawer;
    778   for(int k=1; k<tokens.size(); k++)
    779     txd->AddLine(tokens[k]);
    780   string grname = "TextDrawer";
    781   tokens[0] += " inset";
    782   mImgApp->DispScDrawer(txd, grname, tokens[0]);
    783 }
    784 
    785 // Obsolete : ne pas virer SVP, cmv 26/7/99
    786 else if (kw == "gfd2d") {
    787   cout<<"----- gfd2d OBSOLETE: utilisez nt2d -----"<<endl;
    788   if(tokens.size()<2)
    789     {cout<<"Usage: gfd2d nomobj numvarx erreur=(x y xy) opt"<<endl;
    790      return(0);}
    791   string numvary = "";
    792   string err = "";
    793   string opt = "next";
    794   if(tokens.size()>2) err = tokens[2];
    795   if(tokens.size()>3) opt = tokens[3];
    796   mObjMgr->DisplayGFD(tokens[0],tokens[1],numvary,err,opt);
    797   }
    798 else if (kw == "gfd3d") {
    799   cout<<"----- gfd3d OBSOLETE: utilisez nt3d -----"<<endl;
    800   if(tokens.size()<3)
    801     {cout<<"Usage: gfd3d nameobj numvarx numvary erreur=(x y z xy xz yz xyz) opt"<<endl;
    802      return(0);}
    803   string err = "";
    804   string opt = "next";
    805   if(tokens.size()>3) err = tokens[3];
    806   if(tokens.size()>4) opt = tokens[4];
    807   mObjMgr->DisplayGFD(tokens[0],tokens[1],tokens[2],err,opt);
    808   }
    809 
    810494// >>>>>>>>>>>  Trace de fonctions
    811495else if ( (kw == "func") ) {
     
    1141825}
    1142826
    1143 // Fonction pour enregistrer le Help des Widgets et Windows de piapp
    1144 static void RegisterPIGraphicsHelp(PIACmd* piac);
    1145827
    1146828/* --Methode-- */
     
    1148830{
    1149831string kw, usage, grp;
     832//--------- Commandes du groupe modules externes
    1150833grp = "External Modules";
    1151834string gdesc = "Dynamic load (shared object modules) management command group";
     
    1171854mpiac->RegisterCommand(kw, usage, this, grp);
    1172855
    1173 grp = "Graphics";
    1174 gdesc = "Basic graphics and object display commands";
    1175 mpiac->AddHelpGroup(grp, gdesc);
    1176 kw = "zone";
    1177 usage = "To Divide the Graphic window \n  Usage: zone [nx=1 ny=1]";
    1178 usage += "\n  Related commands: newwin"; 
    1179 mpiac->RegisterCommand(kw, usage, this, grp);
    1180 kw = "newwin";
    1181 usage = "To Create a New Graphic window, with zones \n";
    1182 usage += "  Window size can be specified \n";
    1183 usage += "    Usage: newwin [nx ny [sizeX sizeY]] ";
    1184 usage += "\n  Related commands: zone"; 
    1185 mpiac->RegisterCommand(kw, usage, this, grp);
    1186 kw = "stacknext";
    1187 usage = "Displays the next widget on stack window \n  Usage: stacknext";
    1188 mpiac->RegisterCommand(kw, usage, this, grp);
    1189 
    1190 kw = "graphicatt";
    1191 usage = "To change default graphic options\n  Usage: graphicatt att_list\n";
    1192 usage += "att_list=def back to default values, Example: gratt 'red circlemarker5'";
    1193 usage += "\n ------------------ Graphic attribute list ------------------\n";
    1194 usage += ">> Colors: defcol black white grey red blue green yellow\n";
    1195 usage += "           magenta cyan turquoise navyblue orange siennared purple\n";
    1196 usage += "           limegreen gold violet violetred blueviolet darkviolet\n";
    1197 usage += "   or \"color=name\" \"fgcolor=name\" \"bgcolor=name\" ex: \"color=red\"\n";
    1198 usage += ">> Lines: defline normalline thinline thickline dashedline thindashedline\n";
    1199 usage += "          thickdashedline dottedline thindottedline thickdottedline\n";
    1200 usage += "   or \"line=type,width\"   ex: \"line=dotted,7\"\n";
    1201 usage += ">> Fonts:\n";
    1202 usage += "   > Att: deffontatt normalfont boldfont italicfont bolditalicfont \n";
    1203 usage += "           smallfont smallboldfont smallitalicfont smallbolditalicfont\n";
    1204 usage += "           bigfont bigboldfont bigitalicfont bigbolditalicfont\n";
    1205 usage += "           hugefont  hugeboldfont hugeitalicfont hugebolditalicfont\n";
    1206 usage += "   > Names: deffont courierfont helveticafont timesfont symbolfont \n";
    1207 usage += "   or \"font=name,type,size\"   ex: \"font=courrier,bolditalic,10\"\n";
    1208 usage += ">> Marker: dotmarker<T>  plusmarker<T>  crossmarker<T> circlemarker<T>\n";
    1209 usage += "           fcirclemarker<T> boxmarker<T> fboxmarker<T> trianglemarker<T>\n";
    1210 usage += "           ftrianglemarker<T>  starmarker<T>  fstarmarker<T>\n";
    1211 usage += "       with <T> = 1 3 5 7 .. 15 , Example fboxmarker5 , plusmarker9 ...\n";
    1212 usage += "   or \"marker=type,size\"   ex: \"marker=plus,10\"\n";
    1213 usage += ">> ArrowMarker: basicarrow<T>  trianglearrow<T>  ftrianglearrow<T>\n";
    1214 usage += "                arrowshapedarrow<T> farrowshapedarrow<T>\n";
    1215 usage += "       with <T> = 5 7 .. 15 , Example trianglearrow7 ...\n";
    1216 usage += "   or \"arrow=type,size\"   ex: \"arrow=arrowshaped,10\"\n";
    1217 usage += "------ Specific options for image displays:\n";
    1218 usage += ">> ColorTables: defcmap  grey32  invgrey32  colrj32  colbr32\n";
    1219 usage += "                grey128  invgrey128  colrj128  colbr128\n";
    1220 usage += "                red32cm  green32cm  blue32cm  yellow32cm\n";
    1221 usage += "                orange32cm cyan32cm violet32cm\n";
    1222 usage += "                midas_pastel midas_heat midas_rainbow3 midas_bluered\n";
    1223 usage += "                midas_bluewhite midas_redwhite\n";
    1224 usage += "                multicol16 multicol64\n";
    1225 usage += ">> revcmap : reverse colorMap\n";
    1226 usage += ">> ZoomFactors :  zoomxN   ex: zoomx1 zoomx2 zoomx3 ...\n";
    1227 usage += "                  zoom/N   ex: zoom/2 zoom/3 zoom/4 ...\n";
    1228 usage += ">> imagecenter=ix,iy : Position the image in widget\n";
    1229 usage += ">> lut=ltyp,min,max : Sets LUT type and min/max\n";
    1230 usage += "                      (ltyp=lin/log/sqrt/square)\n";
    1231 usage += ">> invx,invy,exchxy : image axes configuration\n";
    1232 usage += ">> for Axes / Axe labels / LogScale / xylimits / defdrrect\n";
    1233 usage += "       see setaxesatt command\n";
    1234 usage += "--- General purpose options:\n";
    1235 usage += ">> stat,stats / nsta,nstat,nostat,nostats : Toggle statistic display\n";
    1236 usage += ">> title,tit / notitle,notit -> Toggle automatic title display\n";
    1237 usage += ">> Choose display window: next same win stack inset\n";
    1238 usage += "\n"; 
    1239 usage += "   Related commands: setaxesatt setinsetlimits "; 
    1240 mpiac->RegisterCommand(kw, usage, this, grp);
    1241 
    1242 kw = "setaxesatt";
    1243 usage = "To set default axes attributes \n  Usage: setaxesatt att_list \n";
    1244 usage += "Color/Line/Font attributes and axes attributes \n";
    1245 usage += ">> Axes: axesnone stdaxes=defaxes=boxaxes boxaxesgrid \n";
    1246 usage += "         fineaxes fineaxesgrid centeredaxes finecenteredaxes \n";
    1247 usage += "         centeredaxesgrid finecenteredaxesgrid\n";
    1248 usage += "         axescenter=x0,y0 (only with centered axes, default \"axescenter=\")\n";
    1249 usage += "         grid nogrid labels nolabels  \n";
    1250 usage += "         ticks noticks minorticks nominorticks \n";
    1251 usage += "         extticks intticks extintticks \n";
    1252 usage += "         nbticks=X_NTicks,Y_NTicks  \n";
    1253 usage += "         tickslen=MajTickLenFrac,MinTickLenFrac \n";
    1254 usage += ">> Axe labels font size: fixedfontsize/autofontsize=fszf \n";
    1255 usage += "         autofontsize=fsizef: Font size computed automatically \n";
    1256 usage += "         fixedfontsize: Use font size attribute (BaseDrawer) \n";
    1257 usage += ">> Scale type: linx liny logx logy -> Lin/Log Scales for 2D plots \n";
    1258 usage += ">> xylimits=xmin,xmax,ymin,ymax  -> Forces X-Y limits in 2-D plots \n";
    1259 usage += ">> defdrrect=xmin,xmax,ymin,ymax -> Defines drawing rectangle 2-D plots \n";
    1260 usage += "          The rectangle is defined as a fraction of the widget size\n";
    1261 mpiac->RegisterCommand(kw, usage, this, grp);
    1262 
    1263 kw = "setinsetlimits";
    1264 usage = "Define the display rectangle for drawers added as insets \n";
    1265 usage += " over existing graphic objects - limits expressed as fraction \n"; 
    1266 usage += " graphic object size (0. .. 1.) Xmax at right, YMax top. ";
    1267 usage += " Usage: setinsetlimits xmin xmax ymin ymax";
    1268 usage += "\n  Related commands: graphicatt /inset"; 
    1269 mpiac->RegisterCommand(kw, usage, this, grp);
    1270 
    1271 kw = "drpanel";
    1272 usage = "Creates a new 2D drawing zone for addtext, addline \n";
    1273 usage += " Usage: drpanel xmin xmax ymin ymax [GrAtt] [Name]";
    1274 usage += "\n  Related commands: addtext addline addrect addcirc ..."; 
    1275 mpiac->RegisterCommand(kw, usage, this, grp);
    1276 
    1277 kw = "addtext";
    1278 usage = "Adds a text string to the current graphic object";
    1279 usage += "\n at the specified position (+ color/font/pos/dir attributes) ";
    1280 usage += "\n The Base/AxesDrawer is used to handle added text strings" ;
    1281 usage += "\n Alt<E> to remove the added element";
    1282 usage += "\n  Usage: addtext x y TextString [ColFontPosAtt] [fgnc=false/true]";
    1283 usage += "\n  (use quotes '' for multi word text strings) ";
    1284 usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
    1285 usage += "\n Text position/direction attribute: ";
    1286 usage += "\n      horizleft horizcenter horizright";
    1287 usage += "\n      vertbottom vertcenter verttop ";
    1288 usage += "\n      textdirhoriz textdirvertup textdirvertdown ";
    1289 usage += "\n  Related commands: addctext addline addarrow addrect addfrect";
    1290 usage += "\n      addcirc addfcirc addarc addfrac addpoly addfpoly settitle graphicatt"; 
    1291 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
    1292 
    1293 kw = "addctext";
    1294 usage = "Adds a composite text string with superscript and subscripts ";
    1295 usage += "\n at the specified position (+ color/font/pos/dir attributes) ";
    1296 usage += "\n  Usage: addctext x y Text sUp sDown [ColFontPosAtt] [UpDownFontAtt] [fgnc]";
    1297 usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
    1298 usage += "\n  Related commands: addtext addline addrect ...";
    1299 usage += "\n      (See command addtext and graphicatt for more details)"; 
    1300 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
    1301 
    1302 kw = "addline";
    1303 usage = "Adds a line to the current graphic object";
    1304 usage += "\n at the specified position (+ graphic attribute)";
    1305 usage += "\n The Base/AxesDrawer is used to handle added lines";
    1306 usage += "\n Alt<E> to remove the added element";
    1307 usage += "\n  Usage: addline x1 y1 x2 y2 [GraphicAtt] [fgnc=false/true]";
    1308 usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
    1309 usage += "\n  Related commands: addarrow addtext addrect addfrect ";
    1310 usage += "\n       addmarker addcirc addfcirc addarc addfarc addpoly addfpoly graphicatt"; 
    1311 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
    1312 
    1313 kw = "addarrow";
    1314 usage = "Adds an arrow to the current graphic object";
    1315 usage += "\n at the specified position (+ graphic attribute)";
    1316 usage += "\n The Base/AxesDrawer is used to handle added lines";
    1317 usage += "\n Alt<E> to remove the added element";
    1318 usage += "\n  Usage: addarrow x1 y1 x2 y2 [GraphicAtt] [fgnc=false/true]";
    1319 usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
    1320 usage += "\n  Related commands: addline addtext addrect addfrect ";
    1321 usage += "\n       addmarker addcirc addfcirc addarc addfarc addpoly addfpoly graphicatt"; 
    1322 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
    1323 kw = "addarrow_nc";
    1324 
    1325 kw = "addrect";
    1326 usage = "Adds a rectangle to the current graphic object";
    1327 usage += "\n between the specified positions (+ graphic attribute)";
    1328 usage += "\n The Base/AxesDrawer is used to handle added rectangle";
    1329 usage += "\n Alt<E> to remove added element";
    1330 usage += "\n  Usage: addrect x1 y1 x2 y2 [GraphicAtt] [fgnc=false/true]";
    1331 usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
    1332 usage += "\n  Related commands: addtext addline addarrow addfrect";
    1333 usage += "\n       addcirc addfcirc addarc addfarc addpoly addfpoly graphicatt"; 
    1334 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
    1335 
    1336 kw = "addfrect";
    1337 usage = "Adds a filled rectangle to the current graphic object";
    1338 usage += "\n between the specified positions (+ graphic attribute)";
    1339 usage += "\n The Base/AxesDrawer is used to handle added rectangle";
    1340 usage += "\n Alt<E> to remove added element";
    1341 usage += "\n  Usage: addfrect x1 y1 x2 y2 [GraphicAtt] [fgnc=false/true]";
    1342 usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
    1343 usage += "\n  Related commands: addtext addline addarrow addrect";
    1344 usage += "\n       addcirc addfcirc addpoly addfpoly graphicatt"; 
    1345 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
    1346 
    1347 kw = "addmarker";
    1348 usage = "Adds a marker to the current graphic object";
    1349 usage += "\n at the specified position (+ graphic attribute)";
    1350 usage += "\n The Base/AxesDrawer is used to handle added circles";
    1351 usage += "\n Alt<E> to remove added element";
    1352 usage += "\n  Usage: addmarker xpos ypos [GraphicAtt] [fgnc=false/true]";
    1353 usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
    1354 usage += "\n  Related commands: addtext addline addarrow addfrect addfrect";
    1355 usage += "\n       addcirc addfcirc addarc addfarc addpoly addfpoly graphicatt"; 
    1356 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
    1357 
    1358 kw = "addcirc";
    1359 usage = "Adds a circle to the current graphic object";
    1360 usage += "\n with the specified center and radius (+ graphic attribute)";
    1361 usage += "\n The Base/AxesDrawer is used to handle added circles";
    1362 usage += "\n Alt<E> to remove added element";
    1363 usage += "\n  Usage: addcirc xcenter ycenter radius [GraphicAtt] [fgnc=false/true]";
    1364 usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
    1365 usage += "\n  Related commands: addtext addline addarrow addfrect addfrect";
    1366 usage += "\n       addfcirc addarc addfarc addpoly addfpoly graphicatt"; 
    1367 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
    1368 
    1369 kw = "addfcirc";
    1370 usage = "Adds a filled circle to the current graphic object";
    1371 usage += "\n with the specified center and radius (+ graphic attribute)";
    1372 usage += "\n The Base/AxesDrawer is used to handle added circles";
    1373 usage += "\n Alt<E> to remove added element";
    1374 usage += "\n  Usage: addcirc xcenter ycenter radius [GraphicAtt] [fgnc=false/true]";
    1375 usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
    1376 usage += "\n  Related commands: addtext addline addarrow addfrect addfrect";
    1377 usage += "\n       addcirc addarc addfarc addpoly addfpoly graphicatt"; 
    1378 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
    1379 
    1380 kw = "addoval";
    1381 usage = "Adds an oval (ellipse) to the current graphic object";
    1382 usage += "\n centered on xc,yc - semi-axis ds,dy (+ graphic attribute)";
    1383 usage += "\n The Base/AxesDrawer is used to handle added rectangle";
    1384 usage += "\n Alt<E> to remove added element";
    1385 usage += "\n  Usage: addoval xc yc dx dy [GraphicAtt] [fgnc=false/true]";
    1386 usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
    1387 usage += "\n  Related commands: addfoval addline addarrow addfrect addcirc addfcirc";
    1388 usage += "\n       addcirc addfcirc addarc addfarc addpoly addfpoly graphicatt"; 
    1389 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
    1390 
    1391 kw = "addfoval";
    1392 usage = "Adds a filled oval (ellipse) to the current graphic object";
    1393 usage += "\n centered on xc,yc - semi-axis ds,dy (+ graphic attribute)";
    1394 usage += "\n The Base/AxesDrawer is used to handle added rectangle";
    1395 usage += "\n Alt<E> to remove added element";
    1396 usage += "\n  Usage: addfoval xc yc dx dy [GraphicAtt] [fgnc=false/true]";
    1397 usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
    1398 usage += "\n  Related commands: addoval addline addarrow addfrect addcirc addfcirc";
    1399 usage += "\n       addcirc addfcirc addarc addfarc addpoly addfpoly graphicatt"; 
    1400 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
    1401 
    1402 kw = "addarca";
    1403 usage = "Adds an arc to the current graphic object";
    1404 usage += "\n defined by the circle (center+radius), start angle and angular extension";
    1405 usage += "\n Angles are specified in degrees";
    1406 usage += "\n  Usage: addarca xc yc r a0deg dadeg [GraphicAtt] [fgnc=false/true]";
    1407 usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
    1408 usage += "\n  Related commands: addtext addline addfarca addarc ...";
    1409 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
    1410 
    1411 kw = "addfarca";
    1412 usage = "Adds a filled arc to the current graphic object";
    1413 usage += "\n defined by the circle (center+radius), start angle and angular extension";
    1414 usage += "\n Angles are specified in degrees";
    1415 usage += "\n  Usage: addfarca xc yc r a0deg dadeg [GraphicAtt] [fgnc=false/true]";
    1416 usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
    1417 usage += "\n  Related commands: addtext addline addarca addarc ...";
    1418 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
    1419 
    1420 kw = "addarc";
    1421 usage = "Adds an arc to the current graphic object";
    1422 usage += "\n defined by 3 points (+ graphic attribute)";
    1423 usage += "\n The Base/AxesDrawer is used to handle added arcs";
    1424 usage += "\n Alt<E> to remove the added element";
    1425 usage += "\n  Usage: addarc x1 y1 x2 y2 x3 y3 [GraphicAtt] [fgnc=false/true]";
    1426 usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
    1427 usage += "\n  Related commands: addtext addline addarrow addfrect addfrect";
    1428 usage += "\n       addcirc addfcirc addfarc addarca addpoly addfpoly graphicatt"; 
    1429 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
    1430 
    1431 kw = "addfarc";
    1432 usage = "Adds a filled arc to the current graphic object";
    1433 usage += "\n defined by 3 points (+ graphic attribute)";
    1434 usage += "\n The Base/AxesDrawer is used to handle added arcs";
    1435 usage += "\n Alt<E> to remove added element";
    1436 usage += "\n  Usage: addarc x1 y1 x2 y2 x3 y3 [GraphicAtt] [fgnc=false/true]";
    1437 usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
    1438 usage += "\n  Related commands: addtext addline addarrow addfrect addfrect";
    1439 usage += "\n       addcirc addfcirc addfarc addpoly addfpoly graphicatt"; 
    1440 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
    1441 
    1442 kw = "addpoly";
    1443 usage = "Adds a polyline/polygon to the current graphic object";
    1444 usage += "\n  Usage: addploy 'x1,y1 x2,y2 x3,y3 ...' [GraphicAtt] [fgnc=false/true]";
    1445 usage += "\n  Coordinates specified as pairs x,y in a single word (use simple or double quotes";
    1446 usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
    1447 usage += "\n  Related commands: addtext addline addarrow addfrect addfrect";
    1448 usage += "\n       addcirc addfcirc addfarc  graphicatt"; 
    1449 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
    1450 
    1451 kw = "addfpoly";
    1452 usage = "Adds a filled polygon to the current graphic object";
    1453 usage += "\n  Usage: addploy 'x1,y1 x2,y2 x3,y3 ...' [GraphicAtt] [fgnc=false/true]";
    1454 usage += "\n  Coordinates specified as pairs x,y in a single word (use simple or double quotes";
    1455 usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
    1456 usage += "\n  Related commands: addtext addline addarrow addfrect addfrect";
    1457 usage += "\n       addcirc addfcirc addfarc  graphicatt"; 
    1458 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
    1459 
    1460 kw = "settitle";
    1461 usage = "Set the title string (top title / bottom title) for the current graphic object";
    1462 usage += "\n  Usage: settitle TopTitle [BottomTitle] [fontAtt]";
    1463 usage += "\n  Related commands: addtext graphicatt"; 
    1464 mpiac->RegisterCommand(kw, usage, this, grp);
    1465 
    1466 kw = "addtitle";
    1467 usage = "Set the title string (top title / bottom title) \n";
    1468 usage += "   alias for settitle ";
    1469 mpiac->RegisterCommand(kw, usage, this, grp);
    1470 
    1471 kw = "setaxelabels";
    1472 usage = "Set the X and Y axis labels for the current 2D graphic object \n";
    1473 usage += "\n  Usage: setaxelabels xLabel yLabel [ColorFntAtt]";
    1474 usage += "\n  Related commands: settitle addtext graphicatt"; 
    1475 mpiac->RegisterCommand(kw, usage, this, grp);
    1476 
    1477 kw = "addaxelabels";
    1478 usage = "Set the X and Y axis labels for the current 2D graphic object";
    1479 usage += "   alias for setaxelabels ";
    1480 mpiac->RegisterCommand(kw, usage, this, grp);
    1481 
    1482 RegisterPIGraphicsHelp(mpiac);
    1483 
     856//------- Commandes FileIO
    1484857kw = "openfits";
    1485858usage = "Loads a FITS file into an appropriate object \n Usage: openfits filename";
     
    1542915mpiac->RegisterCommand(kw, usage, this, "FileIO");
    1543916
     917//------- Commandes gestion de repertoires et d'objets
    1544918kw = "mkdir";
    1545919usage = "Create a directory";
     
    1605979mpiac->RegisterCommand(kw, usage, this, "Object Management");
    1606980
     981//------- Commandes creation/manipulation d'objets
    1607982kw = "newh1d";
    1608983usage = "Creates a 1D histogramm \n Usage: newh1d name xmin xmax nbin";
     
    16671042mpiac->RegisterCommand(kw, usage, this, "Objects");
    16681043
    1669 kw = "disp";
    1670 usage = "Displays an object \n Usage: disp nameobj [graphic_attributes]";
    1671 usage += "\n  Related commands: surf nt2d nt3d vecplot"; 
    1672 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
    1673 kw = "imag";
    1674 usage = "Displays an object as an image \n Usage: imag nameobj [graphic_attributes]";
    1675 usage += "\n  Related commands: disp imagnav surf nt2d nt3d vecplot"; 
    1676 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
    1677 kw = "imagnav";
    1678 usage = "Displays an object as an image with the ImageNavigator viewer \n";
    1679 usage += "Usage: imagnav nameobj [graphic_attributes]";
    1680 usage += "\n  Related commands: disp imag surf nt2d nt3d vecplot"; 
    1681 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
    1682 kw = "surf";
    1683 usage = "Displays an object as a 3D surface \n Usage: surf nameobj [graphic_attributes]";
    1684 usage += "\n  Related commands: disp nt2d nt3d vecplot"; 
    1685 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
    1686 kw = "nt2d";
    1687 usage = "Displays Points (X-Y) [with error-bar / Weight / Label ] from an NTuple ";
    1688 usage += "\n Usage : nt2d nameobj varx vary [errx erry wt label graphic_attributes]";
    1689 usage += "\n  Related commands: disp  surf  nt3d  gfd2d vecplot"; 
    1690 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
    1691 kw = "nt3d";
    1692 usage = "Displays 3D-Points (X-Y-Z) [with error-bars / Weight / Label ] from an NTuple ";
    1693 usage += "\n Usage : nt3d nameobj varx vary varz [errx erry errz wt label graphic_attributes]";
    1694 usage += "\n  Related commands: disp  surf  nt2d gfd3d "; 
    1695 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
    1696 kw = "vecplot";
    1697 usage = "Displays Points (X-Y) with coordinates defined by two vectors ";
    1698 usage += "\n Usage : vecplot nameVecX nameVecY [graphic_attributes]";
    1699 usage += "\n  Related commands: disp nt2d "; 
    1700 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
    1701 kw = "bargraph";
    1702 usage = "Bar-Graph view of a sequence of values (test)";
    1703 usage += "\n Usage : bargraph graphic_attributes v1 [v2 v3 ...] ";
    1704 usage += "\n  Related commands: disp nt2d vecplot"; 
    1705 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
    1706 kw = "textdrawer";
    1707 usage = "Multi line text darwer (test)";
    1708 usage += "\n Usage : textdrawer graphic_attributes line1 [line2 line3 ...] ";
    1709 usage += "\n  Related commands: disp "; 
    1710 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
    1711 
    1712 // Ceci est maintenant obsolete, on garde pour info.
    1713 kw = "gfd2d";
    1714 usage = "Displays Points (X-Y) with error-bars from a GeneralFit Data ";
    1715 usage += "\n Usage : gfd2d nameobj numvarx erreur=(x y xy) [graphic_attributes]";
    1716 usage += "\n  Related commands: gfd3d nt2d nt3d ";
    1717 usage += "\n  ----- OBSOLETE: utilisez nt2d -----";
    1718 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
    1719 kw = "gfd3d";
    1720 usage = "Displays 3D-Points (X-Y-Z) with error-bars from a GeneralFit Data ";
    1721 usage += "\n Usage : gfd3d nameobj numvarx numvary erreur=(x y z xy xz yz xyz) [graphic_attributes]";
    1722 usage += "\n  Related commands: gfd2d nt2d nt3d "; 
    1723 usage += "\n  ----- OBSOLETE: utilisez nt3d -----";
    1724 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
    1725 
     1044//------- Commandes trace de fonctions
    17261045kw = "func";
    17271046usage = "Displays a function y=f(x) (Fills a vector with function values)";
     
    17451064mpiac->RegisterCommand(kw, usage, this, "Func Plot");
    17461065
     1066//------ Commandes trace d'expression
    17471067kw = "ObjectExpressions";
    17481068usage = "Any mathematical expression (math.h) with object variables can be used";
     
    19761296}
    19771297
    1978 /* Nouvelle-Fonction */
    1979 void RegisterPIGraphicsHelp(PIACmd* piac)
    1980 {
    1981 string kw,grp,usage;
    1982 
    1983 grp = "Graphics";
    1984 
    1985 kw = "PIImage";
    1986 usage = "Manages the display of a 2-D array (P2DArrayAdapter) as an image \n";
    1987 usage += "and controls a zoom widget, as well as a global image view widget \n";
    1988 usage += ">>>> Mouse controls : \n";
    1989 usage += "o Button-1: Display current coordinates and pixel value\n";
    1990 usage += "  Position the cursor an refresh the zoom widget\n";
    1991 usage += "o Button-2: Defines an image zone and positions the cursor \n";
    1992 usage += "o Button-3: Moves the viewed portion of the array inside the window \n";
    1993 usage += ">>>> Keyboard controls : \n";
    1994 usage += "o <Alt>R : Refresh display \n";
    1995 usage += "o <Alt>O : Shows the PIImageTools (image display parameter controls) \n";
    1996 usage += "o <Alt>G : Show the PIDrawerTools (Graphic attributes of overlayed graphics (Drawers)) \n";
    1997 usage += "o <Alt>D : Shows the drawer manipulation pop-up menu \n";
    1998 usage += "o <Alt>V : Copy/Paste / Text paste at the current cursor position \n";
    1999 usage += "o <Alt>C : Copy/Paste / Copies the selected regions content as text in the copy/paste buffer \n";
    2000 usage += "o <Alt>X : Show/Hide the Cut Window \n";
    2001 usage += "o <Alt>Z : Removes added graphic elements (handled by BaseDrawer - 0) \n";
    2002 usage += "o <Alt>E : Removes the last added graphic element \n";
    2003 usage += "o <Alt>+ or <Cntl>+ : Zoom in \n";
    2004 usage += "o <Alt>- or <Cntl>- : Zoom out \n";
    2005 usage += "o Cursor keys : Moves the image cursor \n";
    2006 piac->RegisterHelp(kw, usage, grp);
    2007 
    2008 kw = "PIScDrawWdg";
    2009 usage = "Manages display of 2-D drawers with interactive zoom \n";
    2010 usage += ">>>> Mouse controls : \n";
    2011 usage += "o Button-1: Display current coordinates \n";
    2012 usage += "o Button-2: Defines a rectangle for zoom \n";
    2013 usage += "o Button-3: Defines a rectangle for Text-Info (<Alt>I) \n";
    2014 usage += ">>>> Keyboard controls : \n";
    2015 usage += "o <Alt>R : Refresh display \n";
    2016 usage += "o <Alt>O : Displays a specific control window (default: PIDrawerTools) \n";
    2017 usage += "           (2-D histograms, contour plot ...) \n";
    2018 usage += "o <Alt>G : Show the PIDrawerTools (Graphic attributes of displayed Drawers) \n";
    2019 usage += "           Drawer 0 manages the axes, as well as the added text \n";
    2020 usage += "o <Alt>D : Shows the drawer manipulation pop-up menu \n";
    2021 usage += "o <Alt>V : Copy/Paste / Text paste at the current position \n";
    2022 usage += "o <Alt>Z : Removes added graphic elements (handled by BaseDrawer - 0) \n";
    2023 usage += "o <Alt>E : Removes the last added graphic element \n";
    2024 usage += "o <Alt>I : Shows (or updates) a text info window on the selected rectangle \n";
    2025 usage += "o <Alt>M : Activate/Deactivate a measurement cursor on Button-1\n";
    2026 usage += "o <Alt>L : Deactivate DX,DY print (see below)\n";
    2027 usage += ">>>> Mouse + Keyboard controls : \n";
    2028 usage += "o Button-1 + <Alt>K : Set (reset) the reference point for DX,DY print \n";
    2029 piac->RegisterHelp(kw, usage, grp);
    2030 
    2031 kw = "PIDraw3DWdg";
    2032 usage = "Manages display of 3-D objects (drawers)  \n";
    2033 usage += ">>>> Mouse controls : \n";
    2034 usage += "o Button-2: Rotates the observer (camera) around object \n";
    2035 usage += "o Shift-Button-2: Rotates object with camera fixed \n";
    2036 usage += "  The object rotation mode can be assigned to Button-2 with <Alt>S \n";
    2037 usage += "o Button-3: Zoom control (Camera distance And/Or view angle) \n";
    2038 usage += ">>>> Keyboard controls : \n";
    2039 usage += "o <Alt>R : Resets the 3-D view and refreshes the display \n";
    2040 usage += "o <Alt>O : Displays a specific control window (default: PIDrawerTools) \n";
    2041 usage += "           (2-D histograms, contour plot ...) \n";
    2042 usage += "o <Alt>G : Show the PIDrawerTools (Graphic attributes of displayed Drawers) \n";
    2043 usage += "           Drawer 0 manages the axes, as well as the added text \n";
    2044 usage += "o <Alt>D : Shows the drawer manipulation pop-up menu \n";
    2045 usage += "o <Alt>V : Copy/Paste / Text paste at the current position (Drawer 0)\n";
    2046 usage += "o <Alt>Z : Removes added graphic elements (handled by BaseDrawer - 0) \n";
    2047 usage += "o <Alt>E : Removes the last added graphic element \n";
    2048 usage += "o <Alt>A : Activate/Deactivate axes drawing \n";
    2049 usage += "o <Alt>S : Activate/Deactivate object rotation mode on Button-2 \n";
    2050 piac->RegisterHelp(kw, usage, grp);
    2051 
    2052 kw = "Windows";
    2053 usage = "Objects can be displayed in different windows, or overlayed on the \n";
    2054 usage += "previous display. The graphics attributes next,win,stack,same control \n";
    2055 usage += "the display window. \n";
    2056 usage += "o GraphicWindow : This is the default mode (gr_att=next)\n";
    2057 usage += "  Graphic windows can be divided int zones. Object is displayed \n";
    2058 usage += "  in the next available position, removing a previously displayed \n";
    2059 usage += "  widget if necessary \n";
    2060 usage += "o Window : An object is displayed in its own window (gr_att= win) \n";
    2061 usage += "o StackWindow : multpile widgets can be stacked in a StackWindow (gr_att= stack) \n";
    2062 usage += "  A single widget is displayed a any time. Different widgets in a StackWindow \n";
    2063 usage += "  can be displayed using the stacknext command, as well as the StackTools item \n";
    2064 usage += "  in the Tools menu (from Menubar). An automatic cyclic display mode can also \n";
    2065 usage += "  be activated using the StackTools menu (Blink) \n";
    2066 usage += "o Most objects can be also be displayed overlayed \n";
    2067 usage += "  on the last displayed widget (gr_att= same) \n";
    2068 usage += "o The overlay can be on a selected rectangle of the \n"; 
    2069 usage += "  last displayed widget (gr_att= inset) - See setinsetlimits\n";
    2070 usage += "\n  Related commands: newwin zone stacknext graphicatt setinsetlimits"; 
    2071 piac->RegisterHelp(kw, usage, grp);
    2072 
    2073 kw = "PIConsole";
    2074 usage = "Text output area and command editing window (console) \n";
    2075 usage += ">>>> Mouse controls : \n";
    2076 usage += "o Button-1: Rectangle selection for copy/paste \n";
    2077 usage += "o Button-2: Paste text in the command editing line \n";
    2078 usage += "o Button-3: activate display option menu \n";
    2079 usage += ">>>> Keyboard controls : \n";
    2080 usage += "o <Alt>O : activate display option menu   \n";
    2081 usage += "o <Alt>V : Paste text in the command editing line \n";
    2082 usage += "o <Alt>A : Selection of the whole window for copy \n";
    2083 usage += "o <Alt>L : Command history (List of command history buffer) \n";
    2084 usage += "o <Ctl>A : Command editing -> Goto the beginning of line \n";
    2085 usage += "o <Ctl>E : Command editing -> Goto the end of line \n";
    2086 usage += "o <Ctl>K : Command editing -> Clear to the end of line \n";
    2087 usage += "o <Ctl>C : Command editing -> Clear the line \n";
    2088 usage += "o Cursor left,right : Command editing -> Move cursor \n";
    2089 usage += "o Cursor Up,Down : recall command from history buffer \n";
    2090 usage += "o Backspace,Del : Command editing \n";
    2091 usage += "o <Return>,<Enter> : Execute command \n";
    2092 piac->RegisterHelp(kw, usage, grp);
    2093 }
Note: See TracChangeset for help on using the changeset viewer.