Changeset 106 in Sophya


Ignore:
Timestamp:
May 12, 1998, 7:13:34 PM (27 years ago)
Author:
ansari
Message:

1/ Optimisation LUT et P2DArrAdapter 2/ CheckItem et PullDownMenu comme
elements des Menus, 3/Possibilite de rajouter et de supprimer des Menus
dans le MenuBar
4/ Possibilite de rendre non-sensible (Sensitive/Unsensitive) les PIWdg
5/ Debut de commentaires de pistdwdg Reza 12/05/98

Location:
trunk/SophyaPI/PI
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaPI/PI/lut.cc

    r73 r106  
    1414/* --Methode-- */
    1515
    16 LUT::LUT(float min, float max, int ncol, int typ)
     16LUT::LUT(float min, float max, unsigned short ncol, int typ, int ntable)
    1717{
    1818int nlev;
     
    2020bornes=NULL; 
    2121nlev = ncol-2;
    22 if (nlev < 0)  nlev = 0;
     22if (nlev < 1)  nlev = 1;
    2323bornes = new float[nlev+1];
    2424
     
    2626type = typ;  nLevel = nlev;
    2727SetLut(min, max, typ);
     28table = NULL; 
     29ComputeTable(ntable);
    2830return;
    2931}
     
    3436if (type<0)  return;
    3537delete[] bornes;
     38delete[] table;
    3639}
    3740
     
    8487
    8588/* --Methode-- */
    86 int LUT::Apply(float x)
     89unsigned short LUT::Apply(float x)
    8790{
    8891int i;
     
    9194return(nLevel+1);
    9295}
     96
     97/* --Methode-- */
     98void LUT::ComputeTable(int nt)
     99{
     100if (nt < 0) nt = 16*(nLevel+2);
     101else if (nt < (nLevel+2))  nt = (nLevel+2);
     102table = new unsigned short [nt-2];
     103tablebinwidth = (Max()-Min())/(nt-2);
     104float x = Min()+0.5*tablebinwidth;
     105for(int i=0; i<nt-2; i++)  { table[i] = Apply(x); x += tablebinwidth; }
     106}
  • trunk/SophyaPI/PI/lut.h

    r73 r106  
    1818{
    1919public:
    20 
    21   int type;
    22   int nLevel;
    23   float * bornes;
    2420 
    25   LUT(float min, float max, int ncol=16, int typ=kLutType_Lin);
     21  LUT(float min, float max, unsigned short ncol=16, int typ=kLutType_Lin, int ntable=-1);
    2622  ~LUT();
    2723  void SetLut(float min, float max, int typ=0);
    2824  void Print();
    29   int Apply(float x);
     25  unsigned short Apply(float x);
     26  inline unsigned short ApplyFast(float x)
     27    {
     28    if (x < Min())  return(0);
     29    if (x >= Max() )  return(nLevel+1); 
     30    int k = (x-Min())/tablebinwidth;
     31    return(table[k]);
     32    }
    3033
    3134  inline float Min() { return(bornes[0]); };
     
    3336  inline int Type() { return(type); };
    3437  inline int NCol() { return(nLevel+2); };
     38
     39protected:
     40  void ComputeTable(int nt);
     41
     42  int type;
     43  int nLevel;
     44  float * bornes;
     45  unsigned short * table;
     46  float tablebinwidth;
     47
    3548};
    3649
  • trunk/SophyaPI/PI/parradapter.cc

    r105 r106  
    273273    for(j=ofy; j<ofy+npy; j++)
    274274      for(i=ofx; i<ofx+npx; i++)
    275         { *pp = (unsigned char) lut->Apply(
     275        { *pp = (unsigned char) lut->ApplyFast(
    276276                this->Value(j*sgnX+offX, i*sgnY+offY)); 
    277277           pp++; }
     
    285285          for(k=0; k<zmm; k++)
    286286            vpx += this->Value( (j+l)*sgnX+offX, (i+k)*sgnY+offY);
    287         *pp = (unsigned char) lut->Apply(vpx/fv);
     287        *pp = (unsigned char) lut->ApplyFast(vpx/fv);
    288288        pp++;
    289289        }
     
    292292    for(j=ofy; j<ofy+npy; j++)
    293293      for(i=ofx; i<ofx+npx; i++)  {
    294         ucp = (unsigned char) lut->Apply(this->Value(j*sgnX+offX, i*sgnY+offY));
     294        ucp = (unsigned char) lut->ApplyFast(this->Value(j*sgnX+offX, i*sgnY+offY));
    295295        for(l=0; l<zm; l++)  {
    296296          pp = pix+((j-ofy)*zm+l)*nppx+((i-ofx)*zm);
     
    304304    for(j=ofy; j<ofy+npy; j++)
    305305      for(i=ofx; i<ofx+npx; i++)
    306         { *pp = (unsigned char) lut->Apply(
     306        { *pp = (unsigned char) lut->ApplyFast(
    307307                this->Value(i*sgnX+offX, j*sgnY+offY)); 
    308308           pp++; }
     
    316316          for(k=0; k<zmm; k++)
    317317            vpx += this->Value( (i+k)*sgnX+offX, (j+l)*sgnY+offY);
    318         *pp = (unsigned char) lut->Apply(vpx/fv);
     318        *pp = (unsigned char) lut->ApplyFast(vpx/fv);
    319319        pp++;
    320320        }
     
    323323    for(j=ofy; j<ofy+npy; j++)
    324324      for(i=ofx; i<ofx+npx; i++)  {
    325         ucp = (unsigned char) lut->Apply(this->Value(i*sgnX+offX, j*sgnY+offY));
     325        ucp = (unsigned char) lut->ApplyFast(this->Value(i*sgnX+offX, j*sgnY+offY));
    326326        for(l=0; l<zm; l++)  {
    327327          pp = pix+((j-ofy)*zm+l)*nppx+((i-ofx)*zm);
  • trunk/SophyaPI/PI/piapplgen.cc

    r92 r106  
    7575}
    7676
     77//++
     78// void SetReady()
     79//      Modifie l'état global de l'application - Pssage à l'état normal,
     80//      prêt à traiter les actions utilisateur.
     81// void SetBusy()
     82//      Passage en mode de calcul - La souris prend la forme de la montre
     83//      pour la fenêtre principale
     84// void SetBlocked()
     85//      Passge en mode bloqué. La barre de menu devient insensible
     86// int GetState()
     87//      Renvoie l'état global de l'application "(kReadyState, kBusyState, kBlockedState)".
     88//--
    7789void PIApplicationGen::SetReady()
    7890{
  • trunk/SophyaPI/PI/piapplx.cc

    r92 r106  
    115115  Display * mdsp;
    116116  mState = kReadyState;
     117  Menubar()->SetSensitive();
    117118  mdsp = XtDisplay (topwdg->XtWdg());
    118119  XDefineCursor(mdsp, XtWindow(topwdg->XtWdg()), a_curs[0]);
     
    128129  Display * mdsp;
    129130  mState = kBusyState;
     131  Menubar()->SetSensitive();
    130132  mdsp = XtDisplay (topwdg->XtWdg());
    131133//  if ( XtIsRealized(topwdg->XtWdg()) )
     
    143145  Display * mdsp;
    144146  mState = kBlockedState;
     147  Menubar()->SetUnSensitive();
    145148  mdsp = XtDisplay (topwdg->XtWdg());
    146149  XDefineCursor(mdsp, XtWindow(topwdg->XtWdg()), a_curs[1]);
  • trunk/SophyaPI/PI/picons.cc

    r104 r106  
    877877// Le traitement du scroll-bar
    878878else if ((ModMsg(msg) == PIMsg_DataChanged) && (UserMsg(msg) == msgScb) ) {
    879   off = (int)data;
     879  off = * ((int *)data);
    880880//  printf(" PIConsole::Process() From ScrollBar : Off=%d \n ", off);
    881881  SetDispOffset(off);
  • trunk/SophyaPI/PI/piimage.cc

    r104 r106  
    618618if (zmx < 1)  zmx = 1;
    619619zmgv = zmx;
    620 if (zmx > 1)  zmx = -zmx; 
     620if (zmx > 1)  zmx = -zmx;
    621621gpixm = img->ComputePixmap(lut, 0, 0, zmx, xwsz, ywsz, gpixm, &xsgpxm, &ysgpxm);
     622printf("DEBUG-ComputeGloVPixmap()  %d-%d , (%d,%d) , %d-%d \n", xwsz, ywsz, zmx, zmy, xsgpxm, ysgpxm);
    622623return;
    623624}
  • trunk/SophyaPI/PI/pimenubargen.h

    r2 r106  
    1515                                   
    1616  virtual void      AppendMenu(PIPDMenu *pdm)=0;
     17  virtual void      RemoveMenu(PIPDMenu *pdm)=0;
     18  virtual void      SetSensitivity(PIPDMenu *pdm, bool sens=true)=0;
     19  virtual bool      IsSensitive(PIPDMenu *pdm)=0;
    1720
    1821  virtual long      kind() {return ClassId; }
  • trunk/SophyaPI/PI/pimenubarx.cc

    r56 r106  
    6666}
    6767
     68/* --Methode-- */
     69void PIMenubarX::RemoveMenu(PIPDMenu *pdm)
     70{
     71int i,j;
     72for(i=0; i<mNItem; i++)
     73  if ( mMbb[i].pdm == pdm ) {
     74    XtDestroyWidget(mMbb[i].itb);
     75    for(j=i; j<mNItem-1; j++) mMbb[j] = mMbb[j+1];
     76    mNItem--;  break; 
     77    }
     78return;
     79}
     80
     81/* --Methode-- */
     82void PIMenubarX::SetSensitivity(PIPDMenu *pdm, bool sens)
     83{
     84int i;
     85for(i=0; i<mNItem; i++)
     86  if ( mMbb[i].pdm == pdm ) {
     87    if (sens) XtSetSensitive(mMbb[i].itb, TRUE);
     88    else XtSetSensitive(mMbb[i].itb, FALSE);
     89    break; 
     90    }
     91return;
     92}
     93
     94/* --Methode-- */
     95bool PIMenubarX::IsSensitive(PIPDMenu *pdm)
     96{
     97int i;
     98for(i=0; i<mNItem; i++)
     99  if ( mMbb[i].pdm == pdm ) {
     100    if (XtIsSensitive(mMbb[i].itb) == TRUE)  return(true);
     101    else return(false);
     102    break;
     103    }
     104return(false);
     105}
  • trunk/SophyaPI/PI/pimenubarx.h

    r2 r106  
    1212class PIMenubarX : public PIMenubarGen {
    1313 public:
    14                 PIMenubarX(PIApplicationGen* par, char* nom);
    15                 ~PIMenubarX();
    16 virtual void    AppendMenu(PIPDMenu *pdm);
     14                    PIMenubarX(PIApplicationGen* par, char* nom);
     15                    ~PIMenubarX();
     16
     17  virtual void      AppendMenu(PIPDMenu *pdm);
     18  virtual void      RemoveMenu(PIPDMenu *pdm);
     19  virtual void      SetSensitivity(PIPDMenu *pdm, bool sens=true);
     20  virtual bool      IsSensitive(PIPDMenu *pdm);
    1721
    1822 protected:
  • trunk/SophyaPI/PI/pimenugen.h

    r37 r106  
    66
    77enum PIMenuType { k_PopupMenu = 1, k_PulldownMenu = 2 };
     8
    89
    910class PIMenuGen : public PIWdg {
     
    1516                                   
    1617  virtual void    AppendItem(char* nom, PIMessage msg, char* sc=NULL)=0;
     18  virtual void    AppendCheckItem(char* nom, PIMessage msg, char* sc=NULL)=0;
     19  virtual void    AppendPDMenu(PIMenuGen *pdm, char* sc=NULL)=0;
    1720
    1821  virtual void    DeleteItem(char *nom)=0;
     
    2023  virtual void    DeleteItemNum(int n)=0;
    2124
    22   virtual void    CheckItem(char *nom, bool st=false)=0;
    23   virtual void    CheckItemMsg(PIMessage msg, bool st=false)=0;
    24   virtual void    CheckItemNum(int n, bool st=false)=0;
     25  virtual void    SetSensitivity(char *nom, bool sens=true)=0;
     26  virtual void    SetSensitivityMsg(PIMessage msg, bool sens=true)=0;
     27  virtual void    SetSensitivityNum(int n, bool sens=true)=0;
     28
     29  virtual bool    IsSensitive(char *nom)=0;
     30  virtual bool    IsSensitiveMsg(PIMessage msg)=0;
     31  virtual bool    IsSensitiveNum(int n)=0;
     32
     33  virtual void    SetState(char *nom, bool st=false)=0;
     34  virtual void    SetStateMsg(PIMessage msg, bool st=false)=0;
     35  virtual void    SetStateNum(int n, bool st=false)=0;
     36 
     37  virtual bool    GetState(char *nom)=0;
     38  virtual bool    GetStateMsg(PIMessage msg)=0;
     39  virtual bool    GetStateNum(int n)=0;
    2540
    2641  virtual void    Show()=0;
     
    2944
    3045  virtual long    kind() {return ClassId; }
     46  virtual PIMenuType MType() { return  mMTyp; }
    3147
    3248protected:
  • trunk/SophyaPI/PI/pimenux.cc

    r80 r106  
    11#include<stdio.h>
     2#include<iostream.h>
    23
    34#include "pimenux.h"
     
    1516// La fonction suivante permet de bypasser ce probleme- Le createur d'application
    1617// X doit donc appeler la fonction ci-dessous pour initialiser menuXTopWdg
    17 //                                               Reza /411/97
     18//                                               Reza 4/11/97
    1819static SysDWdg menuXTopWdg = NULL;
    1920void SetTopWdgForMenuX(SysDWdg mtw) {
     
    2627
    2728// Fonction prive (CallBack)
    28 static void menub_action(Widget w, XtPointer *usd, XtPointer *calld);
     29static void menu_action(Widget w, XtPointer usd, XtPointer calld);
     30static void menu_toggle_action(Widget w, XtPointer usd, XmToggleButtonCallbackStruct* calld);
    2931
    3032/* Nouvelle-Fonction */
    31 void  menub_action(Widget /*w*/, XtPointer *usd, XtPointer* /*calld*/)
     33void  menu_action(Widget /*w*/, XtPointer usd, XtPointer /*calld*/)
    3234{
    3335PIMenuX *pim;
     
    3638cusd = ( _pimxit_ *)usd ;
    3739pim = (PIMenuX *) (cusd->pmen);
    38 
    3940// pim->Hide();
    40 pim->Send(cusd->msg, PIMsg_Click, (void *)pim->ItemNameWdg(cusd->itb));
     41pim->Send(cusd->msg, PIMsg_Click );
    4142#ifdef DEBUG_PIMenuX
    42 printf("%%%Debug_menub_action: Msg= %d  %lx\n", (int)cusd->msg, (long)pim);
     43printf("%%%Debug_menu_action: Msg= %d  %lx\n", (int)cusd->msg, (long)pim);
    4344#endif
    4445return;
    4546}
     47
     48// Variable globale pour Toggle Item's  Send(..., ..., data);
     49static bool toggmenbut = false;
     50
     51/* Nouvelle-Fonction */
     52void  menu_toggle_action(Widget /*w*/, XtPointer usd, XmToggleButtonCallbackStruct* calld)
     53{
     54PIMenuX *pim;
     55_pimxit_ *cusd;
     56
     57cusd = ( _pimxit_ *)usd ;
     58pim = (PIMenuX *) (cusd->pmen);
     59if (calld->set == True)  cusd->togstate = toggmenbut = true;
     60else  cusd->togstate = toggmenbut = false;
     61pim->Send(cusd->msg, PIMsg_DataChanged, (void *)(&toggmenbut));
     62return;
     63}
     64
     65
    4666
    4767#define NBITEMB  10
     
    7898void PIMenuX::AppendItem(char* nom, PIMessage msg, char* sc)
    7999{
    80 AddItem(nom, msg, false, sc);
     100AddItem(nom, msg, 0, sc, NULL);
     101}
     102
     103/* --Methode-- */
     104void PIMenuX::AppendCheckItem(char* nom, PIMessage msg, char* sc)
     105{
     106AddItem(nom, msg, 1, sc, NULL);
     107}
     108
     109/* --Methode-- */
     110void PIMenuX::AppendPDMenu(PIMenuGen *pdm, char* sc)
     111{
     112if (pdm->MType() !=  k_PulldownMenu) {
     113  cerr << "PIMenuX::AppendPDMenu()/Erreur: PullDownMenu PIPDMenu seulement ... " << endl;
     114  return;
     115  }
     116AddItem(NULL, pdm->Msg(), 2, sc, (PIMenuX*)pdm);
    81117}
    82118
     
    84120void PIMenuX::DeleteItem(char *nom)
    85121{
    86 
    87 for(int i=0; i<mNItem; i++)
    88   if (strcmp(ItemName(i), nom) == 0) 
    89     { DeleteItemNum(i);  break; }
    90 
    91 return;
     122DeleteItemNum(GetNumItem(nom));
    92123}
    93124
     
    95126void PIMenuX::DeleteItemMsg(PIMessage msg)
    96127{
    97 for(int i=0; i<mNItem; i++)
    98   if (mBut[i].msg == msg) 
    99     { DeleteItemNum(i);  break; }
    100 
    101 return;
    102 }
    103 
     128DeleteItemNum(GetNumItemMsg(msg));
     129}
     130
     131/* --Methode-- */
     132void PIMenuX::SetSensitivity(char *nom, bool sens)
     133{
     134SetSensitivityNum(GetNumItem(nom), sens);
     135}
     136
     137/* --Methode-- */
     138void PIMenuX::SetSensitivityMsg(PIMessage msg, bool sens)
     139{
     140SetSensitivityNum(GetNumItemMsg(msg), sens);
     141}
     142
     143/* --Methode-- */
     144bool PIMenuX::IsSensitive(char *nom)
     145{
     146return(IsSensitiveNum(GetNumItem(nom)) );
     147}
     148
     149/* --Methode-- */
     150bool PIMenuX::IsSensitiveMsg(PIMessage msg)
     151{
     152return(IsSensitiveNum(GetNumItemMsg(msg)) );
     153}
     154
     155/* --Methode-- */
     156bool PIMenuX::IsSensitiveNum(int n)
     157{
     158if ((n < 0) || (n >= mNItem))  return(false);
     159if (XtIsSensitive(mBut[n].itb) == TRUE)  return(true);
     160else return(false);
     161}
     162
     163/* --Methode-- */
     164void PIMenuX::SetSensitivityNum(int n, bool sens)
     165{
     166if ((n < 0) || (n >= mNItem))  return;
     167if (sens) XtSetSensitive(mBut[n].itb, TRUE);
     168else XtSetSensitive(mBut[n].itb, FALSE);
     169}
    104170
    105171/* --Methode-- */
     
    108174if ((n < 0) || (n >= mNItem))  return;
    109175XtDestroyWidget(mBut[n].itb);
    110 for(int i=n; i<mNItem-1; i++) 
    111   { 
     176for(int i=n; i<mNItem-1; i++)
     177  {
    112178  String cbckn;
    113   if (mBut[i+1].togg)  cbckn = XmNvalueChangedCallback;
    114   else cbckn = XmNactivateCallback;
    115   XtRemoveCallback(mBut[i+1].itb, cbckn,
    116                    (XtCallbackProc)menub_action, (XtPointer)(mBut+i+1));
    117   mBut[i] = mBut[i+1];
    118   XtAddCallback(mBut[i].itb, cbckn,
    119                 (XtCallbackProc)menub_action, (XtPointer)(mBut+i));
     179  XtCallbackProc cbproc;
     180  if (mBut[i+1].toggpdm < 2) {
     181    if (mBut[i+1].toggpdm == 1)    // ToggleItem
     182      { cbckn = XmNvalueChangedCallback;  cbproc = (XtCallbackProc)menu_toggle_action; }
     183    else { cbckn = XmNactivateCallback;  cbproc = menu_action; }
     184
     185    XtRemoveCallback(mBut[i+1].itb, cbckn, cbproc, (XtPointer)(mBut+i+1));
     186    mBut[i] = mBut[i+1];
     187    XtAddCallback(mBut[i].itb, cbckn, cbproc, (XtPointer)(mBut+i));
     188    }
     189  else mBut[i] = mBut[i+1];
    120190  }
    121191mNItem--;
     
    124194
    125195/* --Methode-- */
    126 void PIMenuX::CheckItem(char *nom, bool st)
    127 {
    128 
    129 for(int i=0; i<mNItem; i++)
    130   if (strcmp(ItemName(i), nom) == 0) 
    131     { CheckItemNum(i, st);  break; }
    132 
     196void PIMenuX::SetState(char *nom, bool st)
     197{
     198SetStateNum(GetNumItem(nom), st);
     199}
     200
     201/* --Methode-- */
     202void PIMenuX::SetStateMsg(PIMessage msg, bool st)
     203{
     204SetStateNum(GetNumItemMsg(msg), st);
     205}
     206
     207/* --Methode-- */
     208void PIMenuX::SetStateNum(int n, bool st)
     209{
     210if ((n < 0) || (n >= mNItem))  return;
     211if (mBut[n].toggpdm != 1 ) return;  // Pas un toggle-item
     212Arg warg[2];
     213if (st) XtSetArg(warg[0],XmNset, True);
     214else XtSetArg(warg[0],XmNset, False);
     215XtSetValues(mBut[n].itb, warg, 1);
     216mBut[n].togstate = st;
    133217return;
    134218}
    135219
    136220/* --Methode-- */
    137 void PIMenuX::CheckItemMsg(PIMessage msg, bool st)
    138 {
    139 for(int i=0; i<mNItem; i++)
    140   if (mBut[i].msg == msg) 
    141     { CheckItemNum(i, st);  break; }
    142 
    143 return;
    144 }
    145 
    146 /* --Methode-- */
    147 void PIMenuX::CheckItemNum(int n, bool /*st*/)
    148 {
    149 printf("PIMenuX::CheckItemNum(%d,bool) Error/ Not yet implemented \n", n);
    150 return;
    151 }
     221bool PIMenuX::GetState(char *nom)
     222{
     223return( GetStateNum(GetNumItem(nom)) );
     224}
     225
     226/* --Methode-- */
     227bool PIMenuX::GetStateMsg(PIMessage msg)
     228{
     229return( GetStateNum(GetNumItemMsg(msg)) );
     230}
     231
     232/* --Methode-- */
     233bool PIMenuX::GetStateNum(int n)
     234{
     235if ((n < 0) || (n >= mNItem))  return(false);
     236if (mBut[n].toggpdm != 1 ) return(false);
     237return(mBut[n].togstate);
     238}
     239
    152240
    153241/* --Methode-- */
     
    234322
    235323/* --Methode-- */
    236 void PIMenuX::AddItem(char* nom, PIMessage msg, bool tog, char* sc)
     324void PIMenuX::AddItem(const char* nom, PIMessage msg, int tog, char* sc, PIMenuX *pdm)
    237325{
    238326_pimxit_ *buto;
    239327SysDWdgClass wdgcl;
    240328String cbckn;
    241 
    242 
    243 if (mNItem >= mNItemMax)
    244   {
     329XtCallbackProc cbproc;
     330Arg  warg[2];
     331int n=0;
     332
     333
     334if (mNItem >= mNItemMax)  {
    245335  buto = mBut;
    246336  mNItemMax += NBITEMB;
    247337  mBut = new _pimxit_[mNItemMax];
    248   for(int i=0; i<mNItem; i++)   
    249     {
    250     if (buto[i].togg)  cbckn = XmNvalueChangedCallback;
    251     else cbckn = XmNactivateCallback;
    252     XtRemoveCallback(buto[i].itb, cbckn,
    253                      (XtCallbackProc)menub_action, (XtPointer)(buto+i));
    254     mBut[i] = buto[i];
    255     XtAddCallback(mBut[i].itb, cbckn,
    256                  (XtCallbackProc) menub_action, (XtPointer)(mBut+i));
     338  for(int i=0; i<mNItem; i++)    {
     339    if (buto[i].toggpdm < 2) {  // Pas de Cascade Menu
     340      if (buto[i].toggpdm == 1)  // ToggleItem
     341        { cbckn = XmNvalueChangedCallback;  cbproc = (XtCallbackProc)menu_toggle_action; }
     342      else { cbckn = XmNactivateCallback;  cbproc = menu_action; }
     343      XtRemoveCallback(buto[i].itb, cbckn, cbproc, (XtPointer)(buto+i));
     344      mBut[i] = buto[i];
     345      XtAddCallback(mBut[i].itb, cbckn, cbproc, (XtPointer)(mBut+i));
     346      }
     347    else mBut[i] = buto[i];
    257348    }
    258 
    259349  delete[] buto;
    260350  }
    261351
    262 if (tog)
    263   {
    264   cbckn = XmNvalueChangedCallback;
    265   wdgcl = xmToggleButtonWidgetClass;
    266   }
    267 else
    268   {
    269   cbckn = XmNactivateCallback;
    270   wdgcl = xmPushButtonWidgetClass;
    271   }
    272 
    273 mBut[mNItem].itb = XtCreateManagedWidget(nom, wdgcl, this->XtWdg(), NULL, 0) ;
    274 XtAddCallback(mBut[mNItem].itb, cbckn,
    275               (XtCallbackProc)menub_action, (XtPointer)(mBut+mNItem));
     352if (tog < 2) {  // Pas de Cascade Menu
     353  if (tog == 1) {   // Toggle-Item
     354    cbckn = XmNvalueChangedCallback;  cbproc = (XtCallbackProc)menu_toggle_action;
     355    wdgcl = xmToggleButtonWidgetClass; 
     356    XtSetArg(warg[0],XmNset, False); n = 1; }
     357  else {
     358    cbckn = XmNactivateCallback;  cbproc = menu_action;
     359    wdgcl = xmPushButtonWidgetClass;  n = 0; }
     360
     361  mBut[mNItem].itb = XtCreateManagedWidget(nom, wdgcl, this->XtWdg(), warg, n) ;
     362  XtAddCallback(mBut[mNItem].itb, cbckn, cbproc, (XtPointer)(mBut+mNItem));
     363  }
     364else {    // Creation Cascade-Menu
     365  XtSetArg(warg[0], XmNsubMenuId, pdm->XtWdg());
     366  mBut[mNItem].itb = XtCreateManagedWidget(pdm->Nom().c_str(), xmCascadeButtonWidgetClass,
     367                                           XtWdg(), warg, 1) ;
     368  pdm->SetMsgParent(this);
     369  }
     370
    276371if (sc)  // Raccourci clavier
    277372  {
    278373  char acc[16];
    279   int n=0;
    280   Arg warg[2];
    281374  XmString xmstr;
    282375
     
    295388mBut[mNItem].pmen = this;
    296389mBut[mNItem].msg = msg;
    297 mBut[mNItem].togg = tog;
     390mBut[mNItem].toggpdm = tog;
     391mBut[mNItem].togstate = false;
    298392mNItem++;
    299393return;
     
    302396
    303397
    304 /* --Methode-- */
     398/* --Methode--
    305399void PIMenuX::Check()
    306400{
    307401printf("#Debug_CHECK: %d %d %d %d \n",XSize(), YSize(), XPos(), YPos() ); 
    308402for(int i=0; i<mNItem; i++)
    309   printf("##Debug_CHECK: %d %d %ld %lx %lx %lx \n", i, (int)mBut[i].togg,
     403  printf("##Debug_CHECK: %d %d %ld %lx %lx %lx \n", i, (int)mBut[i].toggpdm,
    310404         (long) mBut[i].msg, (long) mBut[i].itb,
    311405         (long) mBut[i].pmen, long (mBut+i));
    312406return;
    313407}
    314 
    315 /* --Methode-- A virer
    316 void PIMenuX::AppendCheckItem(char* nom, PIMessage msg)
    317 {
    318 AddItem(nom, msg, true);
    319 }
    320408*/
    321409
    322 /* --Methode--   A virer
    323 void PIMenuX::SetItem(int n, bool st)
    324 {
    325 if ((n < 0) || (n >= mNItem))  return;
    326 if (mBut[n].togg)  // C'est un toggle Bouton !
    327   {
    328   Arg  wargs[2];
    329   int n=0;
    330   if (st)  XtSetArg(wargs[n],XmNset,TRUE); 
    331   else XtSetArg(wargs[n],XmNset,FALSE); 
    332   n++;
    333   XtSetValues(mBut[n].itb, wargs, n); 
    334   }
    335 return;
    336 }
    337 */
    338410
    339411
  • trunk/SophyaPI/PI/pimenux.h

    r37 r106  
    1212PIMenuX *pmen;
    1313PIMessage msg;
    14 bool togg;
     14int toggpdm;      // 0= Normal Item, 1, Toggle Item,  2= PDMenu
     15bool togstate;    // true , false pour toggle items 
    1516};
    1617
     
    2324                                   
    2425  virtual void    AppendItem(char* nom, PIMessage msg, char* sc=NULL);
     26  virtual void    AppendCheckItem(char* nom, PIMessage msg, char* sc=NULL);
     27  virtual void    AppendPDMenu(PIMenuGen *pdm, char* sc=NULL);
    2528
    2629  virtual void    DeleteItem(char *nom);
     
    2831  virtual void    DeleteItemNum(int n);
    2932
    30   virtual void    CheckItem(char *nom, bool st=false);
    31   virtual void    CheckItemMsg(PIMessage msg, bool st=false);
    32   virtual void    CheckItemNum(int n, bool st=false);
     33  virtual void    SetSensitivity(char *nom, bool sens=true);
     34  virtual void    SetSensitivityMsg(PIMessage msg, bool sens=true);
     35  virtual void    SetSensitivityNum(int n, bool sens=true);
     36
     37  virtual bool    IsSensitive(char *nom);
     38  virtual bool    IsSensitiveMsg(PIMessage msg);
     39  virtual bool    IsSensitiveNum(int n);
     40
     41  virtual void    SetState(char *nom, bool st=false);
     42  virtual void    SetStateMsg(PIMessage msg, bool st=false);
     43  virtual void    SetStateNum(int n, bool st=false);
     44 
     45  virtual bool    GetState(char *nom);
     46  virtual bool    GetStateMsg(PIMessage msg);
     47  virtual bool    GetStateNum(int n);
    3348
    3449  virtual void    Show();
     
    4560
    4661protected:
    47         void      AddItem(char* nom, PIMessage msg, bool tog, char* sc=NULL);
    48         void      Check();
     62        void      AddItem(const char* nom, PIMessage msg, int tog, char* sc, PIMenuX *pdm);
    4963
    5064int mNItem, mNItemMax;
  • trunk/SophyaPI/PI/pistdwdggen.cc

    r30 r106  
    11#include "pistdwdggen.h"
    22
     3/************* PILabelGen ************/
    34
    4 /************* PILabelGen ************/
     5//++
     6// Class        PILabel
     7// Lib          PI
     8// include      pistdwdggen.h
     9//
     10//      Composant graphique simple permettant d'afficher une étiquette (texte).
     11//      "PILabelGen" définit l'interface (classe virtuelle pure). Les objets
     12//      instanciés doivent être de la classe "PILabel" déclaré dans le fichier
     13//      entête "PISTDWDG_H".
     14//--
     15//++
     16// Links        Parents
     17// PIWdg
     18//--
     19
     20//++
     21// Titre        Constructeur, méthodes
     22//--
     23//++
     24// PILabel(PIContainerGen* par, char* nom, int sx=10, int sy=10, int px=0, int py=0)
     25//      Création d'un objet PILabel ayant un contenu (étiquette) identique à "nom".
     26// SetLabel(string const& lab)
     27//      Modifie l'étiquette affichée par l'objet
     28//--
     29
     30
     31
    532
    633PILabelGen::PILabelGen(PIContainerGen *par, char *nom,
     
    1340
    1441/************* PIButtonGen ************/
     42//++
     43// Class        PIButton
     44// Lib          PI
     45// include      pistdwdggen.h
     46//
     47//      Composant graphique de type bouton .
     48//      "PIButtonGen" définit l'interface (classe virtuelle pure). Les objets
     49//      instanciés doivent être de la classe "PIButton" déclaré dans le fichier
     50//      entête "PISTDWDG_H". Lors de l'activation, le message de l'objet complété
     51//      par le modifier "PIMsg_Click" est envoyé ("Send()"). Le champ "data"
     52//      contient le pointeur "NULL".
     53//--
     54//++
     55// Links        Parents
     56// PIWdg
     57//--
     58
     59//++
     60// Titre        Constructeur, méthodes
     61//--
     62//++
     63// PIButton(PIContainerGen* par, char* nom, PIMessage msg = PIMsg_Click, int sx=10, int sy=10, int px=0, int py=0)
     64//      Création d'un objet PIButton avec une étiquette identique à "nom".
     65// SetLabel(string const& lab)
     66//      Modifie l'étiquette affichée par l'objet bouton.
     67//--
     68
     69
    1570
    1671PIButtonGen::PIButtonGen(PIContainerGen *par, char *nom, PIMessage msg,
  • trunk/SophyaPI/PI/pistdwdgx.cc

    r104 r106  
    251251static void toggb_action(Widget w, XtPointer *usd, XmToggleButtonCallbackStruct* calld);
    252252
     253//  Variable globale d'etat de checkbox pour Send(...)
     254static bool toggb_state = false;
     255
    253256/* Nouvelle-Fonction */
    254257void  toggb_action(Widget , XtPointer *usd, XmToggleButtonCallbackStruct* calld)
     
    258261if (calld->set == True)   picb->mSt = true;
    259262else picb->mSt = false;
    260 picb->Send(picb->Msg(), PIMsg_DataChanged, (void *)(picb->mSt));
     263toggb_state = picb->mSt;
     264picb->Send(picb->Msg(), PIMsg_DataChanged, (void *)(&toggb_state));
    261265return;
    262266}
     
    291295Arg warg[2];
    292296mSt = st;
    293 XtSetArg(warg[0],XmNset, mSt);
     297if (st) XtSetArg(warg[0],XmNset, True);
     298else XtSetArg(warg[0],XmNset, False);
    294299XtSetValues(XtWdg(), warg, 1);
    295300return;
     
    309314static void scale_action(Widget w, XtPointer *usd,
    310315                         XmScaleCallbackStruct *calld);
    311 
     316// Variable globale pour contenir valeur de Scale a l'appel de Send;
     317static int scale_value=0;
     318 
    312319void  scale_action(Widget, XtPointer *usd,
    313320                         XmScaleCallbackStruct *calld)
     
    317324pis = (PIScale *) usd ;
    318325pis->CBSetVal(calld->value);
    319 pis->Send(pis->Msg(), PIMsg_DataChanged, (void *)calld->value);
     326scale_value = calld->value;
     327pis->Send(pis->Msg(), PIMsg_DataChanged, (void *)(&scale_value));
    320328return;
    321329}
     
    417425static void scrollbar_drag(Widget w, XtPointer *usd,
    418426                           XmScrollBarCallbackStruct *calld);
     427// Variable globale pour contenir valeur de Scale a l'appel de Send;
     428static int scroll_value=0;
    419429
    420430void  scrollbar_action(Widget, XtPointer *usd,
     
    425435pis = (PIScrollBar *) usd ;
    426436pis->CBSetVal(calld->value);
    427 pis->Send(pis->Msg(), PIMsg_DataChanged, (void *)calld->value);
     437scroll_value = calld->value;
     438pis->Send(pis->Msg(), PIMsg_DataChanged, (void *)(&scroll_value));
    428439return;
    429440}
     
    436447pis = (PIScrollBar *) usd ;
    437448pis->CBSetVal(calld->value);
    438 pis->Send(pis->Msg(), PIMsg_Drag, (void *)calld->value);
     449scroll_value = calld->value;
     450pis->Send(pis->Msg(), PIMsg_Drag, (void *)(&scroll_value));
    439451return;
    440452}
  • trunk/SophyaPI/PI/pitestapp.cc

    r105 r106  
    22#include <stdio.h>
    33
     4/*  Ceci est un programme test des differents composants de PI : PEIDA Interactif */
     5/*                 Reza ,  96-98                                                  */
     6
     7 
    48#include "pisysdep.h"
    59
     
    812#include PIMENU_H
    913#include PIOPTMENU_H
    10 // #include PIMENUBAR_H
    1114#include PISTDWDG_H
    1215#include PIBWDG_H
    13 
    1416#include PIPIXMAP_H
    15 
    1617#include PIFILECHO_H
     18#include PILIST_H
    1719
    1820#include "ex_dessin.h"
    1921#include "sc_sample.h"
    2022#include "piimage.h"
    21 
    22 #include PILIST_H
     23#include "pimgadapter.h"
     24
    2325
    2426#include "fitsimage.h"
    2527
    26 #include <X11/Xlib.h>
    2728
    2829int SysBeep(int n)
     
    3132return(0);
    3233}
    33 /*
    34 class PITestWindow : public PIWindow {
    35 public:
    36         PITestWindow(PIMsgHandler *par);
    37         ~PITestWindow() {}
    38 
    39     PIText text;
    40     PIButton bouton;
    41     PIButton bouton2, bouton3;
    42     PILabel label;
    43     PIScale scl;
    44     PIPUMenu  * menu;
    45 
    46 };
    47 */
    4834
    4935class PITestApp : public PIApplication {
     
    5541
    5642//    PIMenubar * menb;
    57     PIPDMenu  *m[3];
     43    PIPDMenu  *m[5];
     44    PIPDMenu  *mc[2];
    5845    PICheckBox * ckb;
    5946    PIText * text;
    6047    PIButton * bouton;
    6148    PIButton * bouton2, * bouton3, * bouton4, *bouton5;
     49    PIButton * bouton11, * bouton12, * bouton13,* bouton14 ,* bouton15 ;
    6250    PILabel * label;
    6351    PIScale * scl;
     
    6856    PILabel  * labimg;
    6957    ScSample * scs;
     58    bool stnewmen[2];
    7059
    7160};
     
    9786
    9887PITestApp::PITestApp(int sx, int sy)
    99 : PIApplication(sx, sy)
     88: PIApplication(550, 450)
    10089{
    10190char ans[128];
     
    111100   m[1]->AppendItem("Coller", 10202);
    112101   m[1]->AppendItem("Couper", 10203);
     102   m[1]->AppendCheckItem("Check It", 10205);
     103   mc[0] = new PIPDMenu(m[1], "Cascade");
     104   mc[0]->AppendItem("EdeCas-1", 10221);
     105   mc[0]->AppendItem("EdeCas-2", 10222);
     106   mc[0]->AppendItem("EdeCas-3", 10223);
     107   m[1]->AppendPDMenu(mc[0]);
     108
    113109   m[2] = new PIPDMenu((PIMsgHandler *)Menubar(),"Operation");
    114110   m[2]->AppendItem("AddItem", 10301);
    115111   m[2]->AppendItem("DelItemName", 10302);
    116112   m[2]->AppendItem("DelItemMsg", 10303);
     113
     114   m[3] = new PIPDMenu((PIMsgHandler *)Menubar(),"Special");
     115   m[3]->AppendItem("Spec-Opt1", 10401);
     116   m[3]->AppendItem("Spec-Opt2", 10402);
     117   m[3]->AppendItem("Spec-Cascade", 10403);
     118   mc[1] = new PIPDMenu(m[3], "Spec-Cascade");
     119   mc[1]->AppendItem("Spec-Cas-1", 10441);
     120   mc[1]->AppendItem("Spec-Cas-2", 10442);
     121   mc[1]->AppendItem("Spec-Cas-3", 10443);
     122   m[3]->AppendPDMenu(mc[1]);
     123   m[3]->AppendCheckItem("Checkable", 10414);
     124
     125   m[4] = new PIPDMenu((PIMsgHandler *)Menubar(),"AddMenu2");
     126   m[4]->AppendItem("option-A", 10501);
     127   m[4]->AppendItem("option-B", 10502);
     128   m[4]->AppendItem("option-C", 10503);
    117129
    118130   AppendMenu(m[0]);
     
    135147  labimg = new PILabel(this->MainWin(), "PixelValue", 250, 20, 10, 320);
    136148
     149  int psx, psy;
     150  PrefCompSz(psx, psy);
     151  cout << " Creation bouton 11 -14 avec Sx,Sy= " << psx << " , " << psy << endl;
     152
     153  bouton11 = new PIButton(this->MainWin(), "AddMen-1", 1133, psx*1.5, psy, 20, 360);
     154  bouton11 = new PIButton(this->MainWin(), "AddMen-2", 1233, psx*1.5, psy, 40+psx*1.5, 360);
     155  stnewmen[0] = stnewmen[1] = false;
     156  bouton13 = new PIButton(this->MainWin(), "Ready/Bloc", 1333, psx*1.5, psy, 60+psx*3, 360);
     157  bouton14 = new PIButton(this->MainWin(), "TS-ExBWdg", 1433, psx*1.5, psy, 80+psx*4.5, 360);
     158  bouton15 = new PIButton(this->MainWin(), "TS-MenuIt", 1533, psx*1.5, psy, 100+psx*6, 360);
     159
    137160//  XSync(PIXDisplay(), FALSE);
    138161//  printf("Creation PIPUMenu DoIt-1... \n");   gets(ans);
     
    169192
    170193  opt = new PIOptMenu(this->MainWin(), pum[0], 90, 25, 110, 150);
    171   opt->SetValueStr("Sqrt");
     194  string ops = "Sqrt";
     195  opt->SetValueStr(ops);
    172196  opt2 = new PIOptMenu(this->MainWin(), pum[1], 90, 25, 150, 200);
    173197
    174198  opt3 = new PIOptMenu(this->MainWin(), pum[0], 80, 25, 110, 250);
    175   opt3->SetValueStr("Linear");
     199  ops = "Linear";
     200  opt3->SetValueStr(ops);
    176201 
    177202}
     
    187212  delete bouton4;
    188213  delete bouton5;
     214  delete bouton11;
     215  delete bouton12;
     216  delete bouton13;
     217  delete bouton14;
     218  delete bouton15;
    189219  delete scl;
    190220  delete menu;
    191   delete m[0]; delete m[1]; delete m[2];
     221  delete m[0]; delete m[1]; delete m[2]; delete m[3]; delete m[4];
     222  delete mc[0]; delete mc[1];
    192223  delete opt;
    193224  delete opt2;
     
    228259  sprintf(truc,"< %ld - %d (%d)>",msg,x++, (int)((PIWdgGen *)sender)->kind());
    229260  this->label->SetLabel(truc);
    230   sprintf(truc,"[%d] Msg= %ld (%d-%d) Kind=(%d)  Data= (%d - %lx)",x, msg, (int)UserMsg(msg),
    231          (int)ModMsg(msg), (int)((PIWdgGen *)sender)->kind(), (int)data, (long)data);
     261  sprintf(truc,"[%d] Msg= %ld (%d-%d) Kind=(%d)  Data= (%ld - %lx)",x, msg, (int)UserMsg(msg),
     262         (int)ModMsg(msg), (int)((PIWdgGen *)sender)->kind(), (long)data, (long)data);
    232263  puts(truc);
    233264
    234265  if (ModMsg(msg) == PIMsg_Active)
    235266    {  printf("Process: Setting active ImageWindow (%lx) \n", (long)sender);
    236     cur = (PIImage *)data; return;}
     267    cur = (PIImage *)sender; return;}
    237268
    238269  if (ModMsg(msg) == PIMsg_Close)
     
    276307    }
    277308
     309  if ( (msg == 1133) || (msg == 1233) )  {  // On ajoute ou on enleve un  menu du menu-bar
     310    int idxmen = (msg-1133)/100;
     311    cout << " Add/Remove Menu idxmen= " << idxmen << " Bool= "
     312         << Menubar()->IsSensitive(m[idxmen+3])  << " ( " << stnewmen[idxmen] << ")" << endl;
     313    if ( Menubar()->IsSensitive(m[idxmen+3]) )
     314      { Menubar()->RemoveMenu(m[idxmen+3]); stnewmen[idxmen] = false; }
     315    else  { Menubar()->AppendMenu(m[idxmen+3]); stnewmen[idxmen] = true; }
     316  }
     317
     318  if (msg == 1333) {  // Changement de sensibilite de Menu-Bar (par SetBusy())
     319    cout << " SetSens() Menubar,  State= " <<  GetState()  << endl;
     320    if (GetState() != kReadyState)  SetReady();
     321    else  SetBlocked();
     322  }
     323
     324  if (msg == 1533) {  // Changement de sensibilite de  Cascade
     325    cout << " ChangeSensitivity()  Cascade Bool= " <<  m[1]->IsSensitive("Cascade")  << endl;
     326    if (m[1]->IsSensitive("Cascade") )  m[1]->SetSensitivity("Cascade", false);
     327    else  m[1]->SetSensitivity("Cascade", true);
     328  }
     329
     330  if (msg == 1433) {  // Changement de sensibilite de
     331   
     332  }
    278333//  if (msg == 555)   (this->menu)->Show();
    279334
    280   if (msg == 10105)  scb->SetSize(atoi(((char *)text->GetText().c_str())));
     335  if (msg == 10105)  scb->SetSlSize(atoi(((char *)text->GetText().c_str())));
    281336  if (msg == 10104)  Stop();
    282337  if (msg == 10101)  { pfc->AcceptNewFile(false); pfc->Show(); }
    283338  if (msg == 10103)  { pfc->AcceptNewFile(true); pfc->Show(); }
     339
     340  if ((msg == 10205) || (msg == 166))  { // CheckItem Menu  or checkbox
     341    cout << "PITestApp::Process CheckItem/Box Menu (" << msg
     342         << ") State=" <<  *((bool *)data) << endl;
     343  }
    284344
    285345  if (msg == 10301) 
     
    303363
    304364
    305   if ((msg > 9000) && data) printf("PITestApp::MenubarReturn: %s \n", (char *)data);
     365  if (msg > 9000) printf("PITestApp::MenubarReturn: %d --> %lx \n", msg, (long)data);
    306366  if (msg == 5000) 
    307367    {
     
    318378        pimg[nimg]->SetZoomWin(zoom);
    319379        pimg[nimg]->SetTextWin(labimg);
    320         pimg[nimg]->SetImage(img[nimg]);
     380        pimg[nimg]->SetImage(new RzImageAdapter(img[nimg], true) );
    321381        pimg[nimg]->Apply();
    322382        imgw[nimg]->Show();
     
    327387
    328388  if ((msg / 100) == 56)
    329     printf("PITestApp::Process(%d) : %s \n", (int)msg, (char *)data);
     389    printf("PITestApp::Process(%d) : %lx \n", (int)msg, (long)data);
     390
     391  if (msg == 8811) printf("PITestApp::Process(8811) ScrollBar( %d ) \n", *( (int*)data) );
    330392
    331393}
     
    339401
    340402  wp2 = new PIWindow(app, "Window-2", PIWK_normal,  400, 200, 250, 250);
    341   ExBWdg bw(wp2, "BWdg", 150, 150, 10, 40);
    342   bw.SetBinding(PIBK_fixed,PIBK_elastic,PIBK_elastic,PIBK_fixed);
    343   ExBWdg bw2(wp2, "BWdg2", 180, 180, 200, 10);
    344   bw.SetBinding(PIBK_elastic,PIBK_elastic,PIBK_elastic,PIBK_elastic);
     403  exb1 = new ExBWdg(wp2, "BWdg", 150, 150, 10, 40);
     404  exb1->SetBinding(PIBK_fixed,PIBK_elastic,PIBK_elastic,PIBK_fixed);
     405  exb2 = new ExBWdg(wp2, "BWdg2", 180, 180, 200, 10);
     406  exb2->SetBinding(PIBK_elastic,PIBK_elastic,PIBK_elastic,PIBK_elastic);
    345407
    346408  wp4 = new PIWindow(app, "Window-4", PIWK_dialog,  200, 200, 350, 350);
  • trunk/SophyaPI/PI/piwdggen.cc

    r76 r106  
    7777//      méthodes "Manage(), UnManage()". L'objet ne se trouve effectivement dans l'état
    7878//      actif que si son conteneur parent est lui même actif.
    79 //--
    80 //++
    81 // void Manage()  UnManage()
     79//      L'objet peut aussi être affichés, mais insensible aux actions utilisateur
     80//      (clavier, souris, ...). Cette sensibilité est controlée par les
     81//      méthodes  "SetSensitive(), SetUnSensitive()".
     82//--
     83//++
     84// void  Manage()  UnManage()
    8285//      Change l'état de l'objet (actif, inactif)
    83 // bool IfManaged()  IfVisible()
     86// bool  IfManaged()  IfVisible()
    8487//      indique si l'objet est actif , visible 
     88// void  SetSensitive() SetUnSensitive()
     89//      Rend l'objet sensible/ insensible aux actions utilisateurs (clavier, souris, ...)
     90//      L'état visuel de l'objet peut être modifié en conséquence.
     91// bool  IfSensitive()
     92//      indique si l'objet est répond aux sollicitations utilisateur.
    8593//--
    8694
     
    9098
    9199//++
    92 //
    93100// void SetMsg(PIMessage msg = 0)
    94101//      Modifie la valeur du message associé à l'objet.
     
    118125//      une application destinatire.
    119126//--
     127
    120128//++
    121129// bool  ClaimSelection(int typ=PICP_string)
  • trunk/SophyaPI/PI/piwdggen.h

    r88 r106  
    6464  virtual void           GetScreenPos(int & spx, int & spy);
    6565
     66// Pour activer, desactiver un composant graphique (PIWdg)
    6667  virtual void           Manage()=0;
    6768  virtual void           UnManage()=0;
    6869  virtual bool           IfManaged()=0;
    6970  virtual bool           IsVisible()=0;
     71
     72//  Pour rendre un composant graphique (PIWdg) sensible/insensible
     73//  aux actions utilisateur (souris, clavier, ...)
     74  virtual void           SetSensitive()=0;
     75  virtual void           SetUnSensitive()=0;
     76  virtual bool           IfSensitive()=0;
    7077
    7178  virtual void           PSPrint(PSFile *psf, int ofx=0, int ofy=0);
  • trunk/SophyaPI/PI/piwdgx.cc

    r90 r106  
    227227}
    228228
     229/* --Methode-- */
     230void PIWdgX::SetSensitive()
     231{
     232XtSetSensitive(XtWdg(), TRUE);
     233}
     234
     235/* --Methode-- */
     236void PIWdgX::SetUnSensitive()
     237{
     238XtSetSensitive(XtWdg(), FALSE);
     239}
     240
     241/* --Methode-- */
     242bool PIWdgX::IfSensitive()
     243{
     244if (XtIsSensitive(XtWdg()) == TRUE)  return(true);
     245else return(false);
     246}
    229247
    230248/* --Methode-- */
  • trunk/SophyaPI/PI/piwdgx.h

    r90 r106  
    5555  virtual bool   IsVisible();
    5656
     57  virtual void           SetSensitive();
     58  virtual void           SetUnSensitive();
     59  virtual bool           IfSensitive();
     60
    5761//  Gestion de copier-coller
    5862  virtual bool           ClaimSelection(unsigned int typ=PICP_string);
Note: See TracChangeset for help on using the changeset viewer.