Changeset 76 in Sophya


Ignore:
Timestamp:
Feb 18, 1998, 4:38:24 PM (28 years ago)
Author:
ansari
Message:

ScDrawWdg et ScDrawer pour Histo2D CMV+Reza 18/02/98

Location:
trunk/SophyaPI/PI
Files:
2 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaPI/PI/Makefile

    r74 r76  
    33 
    44all: $(LIB)libPI.a
    5 $(LIB)libPI.a : $(OBJ)lut.o $(OBJ)piapplgen.o $(OBJ)piapplx.o $(OBJ)pibwdggen.o $(OBJ)pibwdgx.o $(OBJ)picmap.o $(OBJ)picmapgen.o $(OBJ)picmapx.o $(OBJ)picons.o $(OBJ)picontainergen.o $(OBJ)picontainerx.o $(OBJ)pidrawer.o $(OBJ)pidrawwin.o $(OBJ)pifilechogen.o $(OBJ)pifilechox.o $(OBJ)pigraphgen.o $(OBJ)pigraphps.o $(OBJ)pigraphuc.o $(OBJ)pigraphx.o $(OBJ)pihisto.o $(OBJ)piimage.o $(OBJ)pilistgen.o $(OBJ)pilistx.o $(OBJ)pimenubargen.o $(OBJ)pimenubarx.o $(OBJ)pimenugen.o $(OBJ)pimenux.o $(OBJ)pimsghandler.o $(OBJ)pintuple.o $(OBJ)pioptmenugen.o $(OBJ)pioptmenux.o $(OBJ)piperiodx.o $(OBJ)pipixmapgen.o $(OBJ)pipixmapx.o $(OBJ)piscdrawwdg.o $(OBJ)pistdwdggen.o $(OBJ)pistdwdgx.o $(OBJ)pistlist.o $(OBJ)piup.o $(OBJ)piwdggen.o $(OBJ)piwdgx.o $(OBJ)piwindowgen.o $(OBJ)piwindowx.o $(OBJ)pixtbase.o $(OBJ)psfile.o
     5$(LIB)libPI.a : $(OBJ)lut.o $(OBJ)piapplgen.o $(OBJ)piapplx.o $(OBJ)pibwdggen.o $(OBJ)pibwdgx.o $(OBJ)picmap.o $(OBJ)picmapgen.o $(OBJ)picmapx.o $(OBJ)picons.o $(OBJ)picontainergen.o $(OBJ)picontainerx.o $(OBJ)pidrawer.o $(OBJ)pidrawwin.o $(OBJ)pifilechogen.o $(OBJ)pifilechox.o $(OBJ)pigraphgen.o $(OBJ)pigraphps.o $(OBJ)pigraphuc.o $(OBJ)pigraphx.o $(OBJ)pihisto.o $(OBJ)pihisto2d.o $(OBJ)piimage.o $(OBJ)pilistgen.o $(OBJ)pilistx.o $(OBJ)pimenubargen.o $(OBJ)pimenubarx.o $(OBJ)pimenugen.o $(OBJ)pimenux.o $(OBJ)pimsghandler.o $(OBJ)pintuple.o $(OBJ)pioptmenugen.o $(OBJ)pioptmenux.o $(OBJ)piperiodx.o $(OBJ)pipixmapgen.o $(OBJ)pipixmapx.o $(OBJ)piscdrawwdg.o $(OBJ)pistdwdggen.o $(OBJ)pistdwdgx.o $(OBJ)pistlist.o $(OBJ)piup.o $(OBJ)piwdggen.o $(OBJ)piwdgx.o $(OBJ)piwindowgen.o $(OBJ)piwindowx.o $(OBJ)pixtbase.o $(OBJ)psfile.o
    66        $(AR) $(ARFLAGS)  $@ $?
    77ifeq ($(CXX),cxx)
     
    7979 pistdwdgx.h pistdwdggen.h piwindowx.h piwindowgen.h picontainerx.h \
    8080 picontainergen.h pidrawer.h pigraphuc.h
     81$(OBJ)pihisto2d.o: pihisto2d.cc pihisto2d.h \
     82 $(INC)histos2.h \
     83 $(INC)peida.h \
     84 $(INC)defs.h \
     85 $(INC)utils.h \
     86 $(INC)machine.h \
     87 $(INC)perrors.h \
     88 $(INC)exceptions.h \
     89 $(INC)peidainit.h \
     90 $(INC)fmath.h \
     91 $(INC)histos.h \
     92 $(INC)cvector.h \
     93 $(INC)matrix.h \
     94 $(INC)ppersist.h \
     95 $(INC)pclassids.h piscdrawwdg.h pisysdep.h \
     96 pibwdgx.h pibwdggen.h piwdgx.h piwdggen.h pimsghandler.h picmap.h \
     97 picmapx.h picmapgen.h pigraphx.h pigraphgen.h psfile.h pigraphps.h \
     98 pistdwdgx.h pistdwdggen.h piwindowx.h piwindowgen.h picontainerx.h \
     99 picontainergen.h pidrawer.h pigraphuc.h
    81100$(OBJ)piimage.o: piimage.cc piimage.h $(INC)cimage.h \
    82101 $(INC)rzimage.h \
  • trunk/SophyaPI/PI/piapplgen.cc

    r18 r76  
     1//  Classe de base d'objets application pour
     2//  les programmes graphiques interactives
     3//
     4//                  E.Aubourg , R. Ansari  96 - 98
     5// LAL (Orsay) / IN2P3-CNRS  DAPNIA/SPP (Saclay) / CEA
     6
     7//++
     8// Class        PIApplication
     9// Lib          PI
     10// include      piapplgen.h
     11//
     12//      Classe de base pour l'objet application. L'objet PIApplication
     13//      doit être créé avant la création des autres objets de PI.
     14//      La classe "PIApplication" a implémentation dépendante
     15//      du systeme utilisé (Mac, XWindow, ...). La classe "PIApplicationGen"
     16//      est la classe qui définit l'interface, et ne doit pas être instanciée
     17//      directement (Méthodes virtuelles pures). Les objets instanciés sont
     18//      de la classes "PIApplication" et le fichier entête correspondant est
     19//      "PIAPP_H" défini dans "pisysdep.h".
     20//--
     21//++
     22// Links        Parents
     23// PIMsgHandler
     24//--
     25//++
     26// Titre        Constructeur
     27//--
     28//++
     29// PIApplication(int sx=200, int sy=30, int narg=0, char *arg[]=NULL)
     30//      Constructeur. "sx,sy" est la taille de la fenêtre principale
     31//      (ou PIContainer) associée à l'application. Des arguments
     32//      optionnels, par exemple celle de la ligne de commande peuvent
     33//      être transmis à l'objet PIApplication. Dans le cas d'Unix/XWindow
     34//      par exemple, les options reconnues par la Xtoolkit peuvent
     35//      être passées à l'objet application.
     36//--
     37
     38//++
     39// Titre        Méthodes
     40//--
     41//++
     42// PIContainer*   MainWin()
     43//      Renvoie le pointeur de l'objet "PIContainer" associé à l'application.
     44// PIMenubar*   Menubar()
     45//      Renvoie le pointeur de l'objet "PIMenubar" associé à l'application.
     46// void AppendMenu(PIPDMenu *pdm)
     47//      Ajoute le "PIPDMenu *pdm" au Menubar de l'application. Le titre
     48//      du menu dans le menubar est le nom de l'objet menu.
     49// void Run() Stop
     50//      Démarre, arrête la boucle d'événements.
     51//--
     52
     53
    154#include "piapplgen.h"
    255
  • trunk/SophyaPI/PI/piapplx.h

    r75 r76  
    88class PIApplicationX : public PIApplicationGen {
    99public:
    10                   PIApplicationX(int sx=0, int sy=0,
    11                                  int narg=0, char *arg[]=NULL);
     10                  PIApplicationX(int sx=200, int sy=30, int narg=0, char *arg[]=NULL);
    1211
    1312  virtual         ~PIApplicationX();
  • trunk/SophyaPI/PI/picontainergen.cc

    r52 r76  
     1//  Classe de base pour les conteneurs de PIWdg pour
     2//  programmes graphiques interactives
     3//
     4//                  E.Aubourg , R. Ansari  96 - 98
     5// LAL (Orsay) / IN2P3-CNRS  DAPNIA/SPP (Saclay) / CEA
     6
    17#include "picontainergen.h"
    28
     9//++
     10// Class        PIContainer
     11// Lib          PI
     12// include      picontainergen.h
     13//
     14//      Classe conteneur gérant un ensemble d'objets "PIWdg". Cette classe
     15//      organise la hiérarchie des objets "PIWdg" et donc aussi des "PIMsgHandler",
     16//      contrôle la géométrie des objets "PIWdg" contenus, ainsi que leur
     17//      visibilité et activité. La classe "PIContainer" est une des
     18//      classes de PI qui ont une implementation dépendante du systeme utilisé
     19//      (Mac, XWindow, ...). La classe "PIContainerGen" est la classe qui
     20//      définit l'interface, et ne pas doit être instanciée directement
     21//      (Méthodes virtuelles pures). Les objets instanciés sont de la
     22//      classes "PIContainer" et le fichier entête correspondant est "PICONT_H"
     23//      défini dans "pisysdep.h"
     24//--
     25//++
     26// Links        Parents
     27// PIWdg
     28//--
     29//++
     30// Titre        Constructeur
     31//--
     32//++
     33// PIContainer(PIContainerGen *par, char *nom, int sx, int sy, int px, int py)
     34//      Création d'un objet "PIContainer" dans le conteneur parent "par", de
     35//      taille "sx,sy", se trouvant à la position "px,py" avec le nom "nom"
     36// long kind()
     37//      Renvoie le type de la classe de l'objet ("=PIContainerGen::ClassId") pour cette classe.
     38//--
     39//++
     40// Titre        Méthodes
     41//--
     42//++
     43// void Show()
     44//      Rend l'objet visible à l'écran. Tous les objets "PIWdg" contenus et qui sont dans
     45//      l'état actif sont visibles.
     46// void Hide()
     47//      Rend l'objet et tous les objets contenus invisibles.
     48// void  PSPrint(PSFile *psf, int ofx=0, int ofy=0)
     49//      Appelle la méthode "PSPrint()" pour tous les objets contenus.
     50// void  SetAutoDelChilds(bool ad = false)
     51//      Contrôle le comportement de l'objet conteneur vis à vis des objets
     52//      contenus lors de la destruction. si "ad=true", les objets contenus
     53//      sont détruits lors de l'appel du destructeur de l'objet conteneur.
     54//--
    355
    456#define NCHALGRP 4
  • trunk/SophyaPI/PI/piscdrawwdg.cc

    r72 r76  
    190190
    191191// Gestion affichage coordonnees du point
     192
     193
     194string   PIScDrawWdg::GetClickText(float x, float y)
     195// Donne le texte a afficher pour position x,y 
     196{
     197  char buff[128];
     198  sprintf(buff, "X= %g  Y= %g",  x, y);
     199  return((string)buff);
     200}
     201
     202
    192203void
    193204PIScDrawWdg::But1Press(int x, int y)
     
    232243  mPPos[0] = dx;  mPPos[1] = dy;
    233244  if ((mTxw == NULL) && (mTrlb == NULL)) return(false);
    234 
    235   char buff[128];
    236   sprintf(buff, "X= %g  Y= %g",  dx, dy);
     245 
     246  string ctxt =  GetClickText(dx, dy);
     247
    237248  if (mTxw)
    238     mTxw->SetLabel((string)buff);
     249    mTxw->SetLabel(ctxt);
    239250  if (mTrlb)
    240     mTrlb->SetLabel((string)buff);
     251    mTrlb->SetLabel(ctxt);
    241252  return(true);
    242253
  • trunk/SophyaPI/PI/piscdrawwdg.h

    r72 r76  
    5353   
    5454
    55   void               SetTextWin(PILabel * tw, bool trw=true, int tx=200, int ty=30);
     55  virtual string     GetClickText(float x, float y); // Donne le texte a afficher pour position x,y
     56
     57  void               SetTextWin(PILabel * tw, bool trw=true, int tx=300, int ty=30);
    5658
    5759  virtual void       But1Press(int x, int y);
  • trunk/SophyaPI/PI/piwdggen.cc

    r44 r76  
     1//  Classe de base pour les objets correspondant a une fenetre
     2//  dans les programmes graphiques interactives
     3//
     4//                  E.Aubourg , R. Ansari  96 - 98
     5// LAL (Orsay) / IN2P3-CNRS  DAPNIA/SPP (Saclay) / CEA
     6
    17#include <stdlib.h>
    28#include <stdio.h>
     
    612
    713#include "psfile.h"
     14
     15//++
     16// Class        PIWdg
     17// Lib          PI
     18// include      piwdggen.h
     19//
     20//      Classe de base pour tout objets correspondant à une fenêtre
     21//      à l'écran, ayant donc une représentation graphique et
     22//      pouvant jouer un rôle dans la hiérarchie des objets interactif.
     23//      *PIWdg* hérite de *PIMsgHandler*, avec une hiérarchie correspondant
     24//      par défaut à celles des PIWdg. La classe "PIWdg" est une des
     25//      classes de PI qui ont une implementation dépendante du systeme utilisé
     26//      (Mac, XWindow, ...). La classe "PIWdgGen" est la classe qui
     27//      définit l'interface, et ne doit pas être instanciée directement
     28//      (Méthodes virtuelles pures). Les objets instanciés sont de la
     29//      classes "PIWdg" et le fichier entête correspondant est "PIWDG_H"
     30//      défini dans "pisysdep.h"
     31//--
     32//++
     33// Links        Parents
     34// PIMsgHandler
     35//--
     36
     37//++
     38// Titre        Constructeur
     39//--
     40//++
     41// PIWdg(PIContainerGen *par, char *nom, int sx=10, int sy=10, int px=0, int py=0)
     42//      Création d'un objet contenu dans l'objet *PIContainer* "par", de
     43//      taille "sx,sy", se trouvant à la position "px,py" avec le nom "nom"
     44// long kind()
     45//      Renvoie le type de la classe de l'objet ("=PIWdgGen::ClassId") pour cette classe
     46//      de base. Doit être redéfinie par les classes dérivées.
     47//-- 
     48
     49
     50//++
     51// Titre        Taille, position
     52//--
     53//++
     54// void  PSPrint(PSFile *psf, int ofx=0, int ofy=0)
     55//      Méthode virtuelle qui doit être redéfinie pour chacune des classes filles.
     56//      produit une représentation graphique de l'objet en Postscript.
     57// SetSize(int sx, int sy)
     58//      Modifie la taille de l'objet.
     59// SetPos(int px, int py)
     60//      Modifie la position de l'objet.
     61// int  XSize()  YSize()
     62//      Renvoient la taille (X,Y) de l'objet.
     63// int  XPos()  YPos()
     64//      Renvoient la position (X,Y) de l'objet.
     65// void  GetScreenPos(int & spx, int & spy)
     66//      Renvoie la position de l'objet sur l'écran.
     67// void  SetBinding(PIBindingKind left, PIBindingKind top, PIBindingKind right, PIBindingKind bottom)
     68//      Permet de contrôler le comportement de l'objet en cas de changement de taille
     69//      du conteneur parent. La position de chaque bord peut être sans contrainte ("PIBK_free")
     70//      attachée à une distance fixe par rapport au bord opposé du conteneur ("PIBK_fixed"),
     71//      ou à une position proportionnelle à la taille du conteneur parent. ("PIBK_elastic")
     72//--
     73
     74//++
     75// Titre        Etat de l'objet
     76//      L'objet peut se trouver dans l'état actif ou inactif. Cet état est contrôlé par les
     77//      méthodes "Manage(), UnManage()". L'objet ne se trouve effectivement dans l'état
     78//      actif que si son conteneur parent est lui même actif.
     79//--
     80//++
     81// void Manage()  UnManage()
     82//      Change l'état de l'objet (actif, inactif)
     83// bool IfManaged()  IfVisible()
     84//      indique si l'objet est actif , visible 
     85//--
     86
     87//++
     88// Titre        Méthodes
     89//--
     90
     91//++
     92//
     93// void SetMsg(PIMessage msg = 0)
     94//      Modifie la valeur du message associé à l'objet.
     95// PIMessage  Msg()
     96//      Renvoie le message associé à l'objet.
     97// string  Nom()
     98//      Renvoie le nom associé à l'objet.
     99// PIWdg*  Parent()
     100//      Renvoie le conteneur parent de l'objet.
     101// void  SetUserData( void * p, int fg = 0)
     102//      Associe un pointeur de données à la disposition de l'utilisateur
     103//      ("void* p") à l'objet, ainsi qu'une valeur ("int fg")
     104// void* UserData()
     105//      Renvoie le pointeur de données user de l'objet. (NULL par défaut)
     106// int  UserFlag()
     107//      Renvoie la valeur "int" user de l'objet.
     108//--
     109
     110//++
     111// Titre        Gestion du copier/coller
     112//      L'ensemble des méthodes de gestion de copier/coller sont décrites ici. Les méthodes
     113//      "SelectionLost()", "ProvideSelection()", et "PasteSelection()" doivent être
     114//      redéfinies par les classes héritières de *PIWdg* implémentant la fonctionalité
     115//      copier/coller. Le mécanisme copier/coller entre objets d'une même application,
     116//      ainsi qu'entre différentes applications. Dans les opérations de copier/coller,
     117//      il existe un PIWdg ou une application source des données et un PIWdg ou
     118//      une application destinatire.
     119//--
     120//++
     121// bool  ClaimSelection(int typ=PICP_string)
     122//      Cette méthode doit être appelée par l'objet "PIWdg" source quand celui-ci veut
     123//      s'approprier la zone d'échange de données (Selection) pour le copier/coller. "typ" indique
     124//      le type de données que peut fournir l'objet. Le type "PICP_string" (suite de caractères)
     125//      est le seul type supporté actuellement. La valeur de retour est "true" si
     126//      la zone d'échange est attribué a l'objet. Cette méthode ne doit en principe pas
     127//      être redéfinie par les classes héritières de *PIWdg*.
     128// void  SelectionLost()
     129//      Cette méthode est appelée quand l'objet "PIWdg" source qui possede la zone d'échange
     130//      (Selection) perd celle-ci, suite par exemple à la demande d'un autre objet. Cette méthode
     131//      doit être redéfinies par les classes qui implémentent la fonctionalité et ne doit
     132//      doit pas être appelée directement.
     133// int  RequestSelection(int typ=PICP_string)
     134//      Cette méthode doit être appelée par l'objet "PIWdg" destinatire quand celui-ci souhaite
     135//      obtenir les données de la zone d'échange (Selection). "typ" indique les types de données
     136//      acceptables par l'objet. La valeur de retour indique le type qui sera fourni
     137//      (à l'appel de "PasteSelection()"). Cette méthode ne doit en principe pas
     138//      être redéfinie par les classes héritières de *PIWdg*.
     139// void* ProvideSelection(int& typ, int& len) 
     140//      Cette méthode est appelée quand l'objet "PIWdg" source, qui possede la zone d'échange
     141//      (Selection) doit  fournir les données correspondantes à la sélection. Renvoie le pointeur
     142//      de la zone mémoire correspondante, sa longueur ("len") et le type ("typ") des données.
     143//      cette zone mémoire appartient à l'objet, et ne doit être modifié tant que
     144//      la méthode "SelectionTransferEnd()" n'a été appelé.
     145// void  SelectionTransferEnd()
     146//      Cette méthode est appelé une fois que l'objet ou l'application destinataire
     147//      des données de sélection a fini de traiter l'opération de copie. l'objet PIWdg
     148//      source peut alors détruire ou modifier les données correspondantes à l'échange.
     149// void  PasteSelection(int typ, void *pdata, int l)
     150//      Cette méthode est appelée après l'appel à "RequestSelection()" pour l'objet
     151//      destinataire. "typ" indique le type des données dans "pdata", et "l" la longeur.
     152//      La zone mémoire "pdata" n'appartient pas à l'objet destinataire et ne doit pas
     153//      être modifié par celui-ci. Une copie doit être effectué si cesCette méthode  données devaient
     154//      être utilisées après la sortie de "PasteSelection()".
     155//--
    8156
    9157/* --Methode-- */
  • trunk/SophyaPI/PI/piwdggen.h

    r75 r76  
    7272
    7373//  Gestion de copier-coller
    74   virtual bool           ClaimSelection(int typ=PICP_string)            = 0;
    75   virtual void           SelectionLost()                                = 0;
    76   virtual int            RequestSelection(int typ=PICP_string)          = 0;
    77   virtual void*          ProvideSelection(int& typ, int& len)           = 0;
    78   virtual void           PasteSelection(int& typ, void *, int l)        = 0;
     74  virtual bool           ClaimSelection(unsigned int typ=PICP_string)                     = 0;
     75  virtual void           SelectionLost()                                                  = 0;
     76  virtual int            RequestSelection(unsigned int typ=PICP_string)                   = 0;
     77  virtual void*          ProvideSelection(unsigned int& typ, unsigned int& len)           = 0;
     78  virtual void           SelectionTransferEnd()                                           = 0;
     79  virtual void           PasteSelection(unsigned int typ, void *pdata, unsigned int l)    = 0;
    7980
    8081protected:
  • trunk/SophyaPI/PI/piwdgx.cc

    r75 r76  
    477477}
    478478
     479/* .................................................................*/
     480/* ................... Gestion de Copier/Coller ....................*/
     481/* .................................................................*/
     482
     483// Les Call-Backs Xt
    479484
    480485static Boolean forXt_ConvertSelection(Widget w, Atom* sel, Atom *targ, Atom* typ,
     
    486491                                 XtPointer value, unsigned long* len, int* format );
    487492
    488 static PIWdgX* curselwdg = NULL;
    489 static char* selval = NULL;
    490 
     493static PIWdgX* curselwdg = NULL;    // Le PIWdg qui possede la selection
     494static unsigned int curseltype = PICP_string; // Type de selcetion qu'il peut fournir
     495static unsigned int reqseltype = PICP_string; // Type de selection demande
     496static unsigned int provseltype = PICP_string; // Type de selection fourni
    491497
    492498/* Nouvelle-Fonction */
     
    496502if (*targ != XA_STRING)  return(FALSE);
    497503if (!curselwdg)  return(FALSE);
    498 int l;
    499 int styp = 1;
     504int l = 0;
     505int styp = reqseltype;
    500506*value = curselwdg->ProvideSelection(styp, l);
    501507*len=l;
    502508*typ = XA_STRING;
    503509*format = 8;
     510provseltype = (styp != 0) ? styp : PICP_string;
    504511return(TRUE);
    505512}
     
    509516{
    510517if (curselwdg)  curselwdg->SelectionLost();
    511 curselwdg = NULL;
     518curselwdg = NULL; curseltype = PICP_string;
    512519}
    513520
     
    515522void forXt_DoneSelection(Widget w, Atom* sel, Atom *targ)
    516523{
    517 if (selval)   delete selval;
    518 selval = NULL;
     524if (curselwdg)  curselwdg->SelectionTransferEnd();
    519525}
    520526
     
    523529                                 XtPointer value, unsigned long* len, int* format )
    524530{
    525 printf("forXt_SelectionValue()/Debug: %lx %lx - %lx - %d \n", (unsigned long)w,
    526        (unsigned long)usd, (unsigned long)value, (*len));
    527 int styp = 1;
     531printf("forXt_SelectionValue()/Debug: %lx %lx - %lx - %d (%d %d %d)\n", (unsigned long)w,
     532       (unsigned long)usd, (unsigned long)value, (*len), curseltype, reqseltype, provseltype);
    528533if ( (value != NULL) && (*len > 0) )
    529   ((PIWdgX*)usd)->PasteSelection(styp, (void*)value, (*len)) ;
     534  ((PIWdgX*)usd)->PasteSelection(provseltype, (void*)value, (*len)) ;
    530535}
    531536
     
    534539// Gestion de Copier/Coller
    535540/* --Methode-- */
    536 bool PIWdgX::ClaimSelection(int typ)
     541bool PIWdgX::ClaimSelection(unsigned int typ)
    537542// Pour prendre possession du buffer copier/coller
    538543{
     
    541546  printf("PIWdgX::ClaimSelection(%d) - OK  (Wdg= %lx)\n", typ, (unsigned long)this);
    542547  curselwdg = this;
     548  curseltype = (typ != 0) ? typ : PICP_string;
    543549  return (true);
    544550}
     
    546552  printf("PIWdgX::ClaimSelection() - Probleme (Wdg= %lx)\n", (unsigned long)this);
    547553  curselwdg = NULL;
     554  curseltype = PICP_string;
    548555  return (false);
    549556}
     
    556563  printf("PIWdgX::SelectionLost()  Ne fait rien !(Wdg= %lx - %lx) \n",
    557564        (unsigned long)this, (unsigned long)curselwdg);
    558   if (curselwdg == this)  curselwdg = NULL;
    559 }
    560 
    561 /* --Methode-- */
    562 int PIWdgX::RequestSelection(int typ)
     565}
     566
     567/* --Methode-- */
     568int PIWdgX::RequestSelection(unsigned int typ)
    563569{
    564570// Pour demander le contenu du buffer de copier/coller
    565571printf("PIWdgX::RequestSelection(%d) (Wdg= %lx - %lx) \n", typ, 
    566572        (unsigned long)this, (unsigned long)curselwdg);
     573reqseltype = (typ != 0) ? typ : PICP_string;
    567574XtGetSelectionValue(XtWdg(), XA_PRIMARY, XA_STRING, forXt_SelectionValue,
    568575                    (XtPointer)this, PIXGetLastEventTime());
    569 return(1);
    570 }
    571 
    572 
    573 /* --Methode-- */
    574 void* PIWdgX::ProvideSelection(int& typ, int& len)
     576return(reqseltype);
     577}
     578
     579static char* rs = NULL;
     580
     581/* --Methode-- */
     582void* PIWdgX::ProvideSelection(unsigned int& typ, unsigned int& len)
    575583// Le widget doit fournier une l zone memoire contenant la selection
    576584// en un type donne
    577585// Renvoie le pointeur de cette zone, sa taille et son typ
    578586{
    579 char *rs = new char[80];
    580 sprintf(rs, "Test-of-PIWdgX::ProvideSelection(%d)", typ);
     587rs = new char[80];
     588sprintf(rs, "Test-of-PIWdgX::ProvideSelection(%d)- %lx", typ,(long)rs);
    581589len = strlen(rs);
    582590return(rs);
     
    584592
    585593/* --Methode-- */
    586 void PIWdgX::PasteSelection(int& typ, void *buff, int l)
     594void PIWdgX::SelectionTransferEnd()
     595{
     596printf("PIWdgX::SelectionTransferEnd() %lx \n", (long)rs);
     597delete[] rs;
     598}
     599
     600
     601/* --Methode-- */
     602void PIWdgX::PasteSelection(unsigned int typ, void *buff, unsigned int l)
    587603{
    588604// Methode appele apres que le widget ait fait RequestSelection
     
    592608strncpy(mbuff, (char *)buff, l);
    593609mbuff[l] = '\0';
    594 printf("PIWdgX::PasteSelection() L=%d [%s] \n", l, mbuff);
     610printf("PIWdgX::PasteSelection(%d, %lx, %d) [%s] \n", typ, (long)buff, l, mbuff);
    595611delete[] mbuff;
    596612return;
  • trunk/SophyaPI/PI/piwdgx.h

    r75 r76  
    5656
    5757//  Gestion de copier-coller
    58   virtual bool           ClaimSelection(int typ=PICP_string);
     58  virtual bool           ClaimSelection(unsigned int typ=PICP_string);
    5959  virtual void           SelectionLost();
    60   virtual int            RequestSelection(int typ=PICP_string);
    61   virtual void*          ProvideSelection(int& typ, int& len);
    62   virtual void           PasteSelection(int& typ, void *, int l);
     60  virtual int            RequestSelection(unsigned int typ=PICP_string);
     61  virtual void*          ProvideSelection(unsigned int& typ, unsigned int& len);
     62  virtual void           SelectionTransferEnd();
     63  virtual void           PasteSelection(unsigned int typ, void *, unsigned int l);
    6364
    6465  inline SysDWdg XtWdg() const {return(sdw); };
  • trunk/SophyaPI/PI/piwindowgen.cc

    r44 r76  
     1//  Classe de base pour les fenêtre de premier niveau
     2//  dans les programmes graphiques interactives
     3//
     4//                  E.Aubourg , R. Ansari  96 - 98
     5// LAL (Orsay) / IN2P3-CNRS  DAPNIA/SPP (Saclay) / CEA
     6
    17#include "piwindowgen.h"
    28#include "psfile.h"
     9
     10//++
     11// Class        PIWindow
     12// Lib          PI
     13// include      piwindowgen.h
     14//
     15//      Classe de conteneur (dérivant de *PIContainer") spécialisée pour
     16//      la création des fenêtres de premier niveau, gérée par l'application
     17//      "WindowManager". La classe "PIWindow" a  implementation dépendante
     18//      du systeme utilisé (Mac, XWindow, ...). La classe "PIWindowGen" est
     19//      la classe qui définit l'interface, et ne pas doit être instanciée
     20//      directement (Méthodes virtuelles pures). Les objets instanciés sont
     21//      de la classes "PIWindow" et le fichier entête correspondant est
     22//      "PIWIN_H" défini dans "pisysdep.h"
     23//--
     24//++
     25// Links        Parents
     26// PIContainer
     27//--
     28//++
     29// Titre        Constructeur
     30//--
     31//++
     32// PIWindowGen(PIMsgHandler* par, char *nom, PIWindowKind k=PIWK_normal, int sx=10, int sy=10, int px=0, int py=0)
     33//      Création d'une fenêtre de haut niveau. La variable "PIWindowKind k"  contrôle
     34//      le comportement de l'objet vis à vis de l'application WindowManager. Le comportement
     35//      exacte, ainsi que l'apparence graphique dépend de la plateforme et du WindowManager
     36//      utilisés. "par" est le l'objet "PIMsgHandler" dont dépend la fenêtre, en général un objet
     37//      de la classe "PIApplication". "nom" désigne le nom, "sx,sy" la taille et
     38//      "px,py" la position de l'objet.
     39//      - "PIWK_normal" : fenêtre ordinaire
     40//      - "PIWK_floating" : fenêtre qui reste en avant plan
     41//      - "PIWK_dialog" : fenêtre de dialogue
     42//      - "PIWK_transient" : fenêtre apparaissant an avant plan, sans barre de contrôle
     43// long kind()
     44//      Renvoie le type de la classe de l'objet ("=PIWindowGen::ClassId") pour cette classe.
     45//--
     46
     47//++
     48// Titre        Méthodes
     49//--
     50//++
     51// void  AutoHideOnClose(bool ahc=true)
     52//      Contrôle le comportement par défaut de l'objet quand la fenêtre est fermée
     53//      à travers le WindowManager. si "ahc=true", "Hide()" est appelé.
     54//      Le message de l'objet avec le qualificatif "PIMsg_Closë est transmis
     55//      au "PIMsgHandler" parent.
     56// void  PSPrint(PSFile *psf, int ofx=0, int ofy=0)
     57//      Définit une nouvelle page et appelle la méthode "PSPrint()" pour tous les
     58//      objets "PIWdg" contenus dans la fenêtre.
     59//--
     60
    361
    462/* --Methode-- */
Note: See TracChangeset for help on using the changeset viewer.