Changeset 76 in Sophya
- Timestamp:
- Feb 18, 1998, 4:38:24 PM (28 years ago)
- Location:
- trunk/SophyaPI/PI
- Files:
-
- 2 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PI/Makefile
r74 r76 3 3 4 4 all: $(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)pi image.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.o5 $(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 6 6 $(AR) $(ARFLAGS) $@ $? 7 7 ifeq ($(CXX),cxx) … … 79 79 pistdwdgx.h pistdwdggen.h piwindowx.h piwindowgen.h picontainerx.h \ 80 80 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 81 100 $(OBJ)piimage.o: piimage.cc piimage.h $(INC)cimage.h \ 82 101 $(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 1 54 #include "piapplgen.h" 2 55 -
trunk/SophyaPI/PI/piapplx.h
r75 r76 8 8 class PIApplicationX : public PIApplicationGen { 9 9 public: 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); 12 11 13 12 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 1 7 #include "picontainergen.h" 2 8 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 //-- 3 55 4 56 #define NCHALGRP 4 -
trunk/SophyaPI/PI/piscdrawwdg.cc
r72 r76 190 190 191 191 // Gestion affichage coordonnees du point 192 193 194 string 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 192 203 void 193 204 PIScDrawWdg::But1Press(int x, int y) … … 232 243 mPPos[0] = dx; mPPos[1] = dy; 233 244 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 237 248 if (mTxw) 238 mTxw->SetLabel( (string)buff);249 mTxw->SetLabel(ctxt); 239 250 if (mTrlb) 240 mTrlb->SetLabel( (string)buff);251 mTrlb->SetLabel(ctxt); 241 252 return(true); 242 253 -
trunk/SophyaPI/PI/piscdrawwdg.h
r72 r76 53 53 54 54 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); 56 58 57 59 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 1 7 #include <stdlib.h> 2 8 #include <stdio.h> … … 6 12 7 13 #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 //-- 8 156 9 157 /* --Methode-- */ -
trunk/SophyaPI/PI/piwdggen.h
r75 r76 72 72 73 73 // 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; 79 80 80 81 protected: -
trunk/SophyaPI/PI/piwdgx.cc
r75 r76 477 477 } 478 478 479 /* .................................................................*/ 480 /* ................... Gestion de Copier/Coller ....................*/ 481 /* .................................................................*/ 482 483 // Les Call-Backs Xt 479 484 480 485 static Boolean forXt_ConvertSelection(Widget w, Atom* sel, Atom *targ, Atom* typ, … … 486 491 XtPointer value, unsigned long* len, int* format ); 487 492 488 static PIWdgX* curselwdg = NULL; 489 static char* selval = NULL; 490 493 static PIWdgX* curselwdg = NULL; // Le PIWdg qui possede la selection 494 static unsigned int curseltype = PICP_string; // Type de selcetion qu'il peut fournir 495 static unsigned int reqseltype = PICP_string; // Type de selection demande 496 static unsigned int provseltype = PICP_string; // Type de selection fourni 491 497 492 498 /* Nouvelle-Fonction */ … … 496 502 if (*targ != XA_STRING) return(FALSE); 497 503 if (!curselwdg) return(FALSE); 498 int l ;499 int styp = 1;504 int l = 0; 505 int styp = reqseltype; 500 506 *value = curselwdg->ProvideSelection(styp, l); 501 507 *len=l; 502 508 *typ = XA_STRING; 503 509 *format = 8; 510 provseltype = (styp != 0) ? styp : PICP_string; 504 511 return(TRUE); 505 512 } … … 509 516 { 510 517 if (curselwdg) curselwdg->SelectionLost(); 511 curselwdg = NULL; 518 curselwdg = NULL; curseltype = PICP_string; 512 519 } 513 520 … … 515 522 void forXt_DoneSelection(Widget w, Atom* sel, Atom *targ) 516 523 { 517 if (selval) delete selval; 518 selval = NULL; 524 if (curselwdg) curselwdg->SelectionTransferEnd(); 519 525 } 520 526 … … 523 529 XtPointer value, unsigned long* len, int* format ) 524 530 { 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; 531 printf("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); 528 533 if ( (value != NULL) && (*len > 0) ) 529 ((PIWdgX*)usd)->PasteSelection( styp, (void*)value, (*len)) ;534 ((PIWdgX*)usd)->PasteSelection(provseltype, (void*)value, (*len)) ; 530 535 } 531 536 … … 534 539 // Gestion de Copier/Coller 535 540 /* --Methode-- */ 536 bool PIWdgX::ClaimSelection( int typ)541 bool PIWdgX::ClaimSelection(unsigned int typ) 537 542 // Pour prendre possession du buffer copier/coller 538 543 { … … 541 546 printf("PIWdgX::ClaimSelection(%d) - OK (Wdg= %lx)\n", typ, (unsigned long)this); 542 547 curselwdg = this; 548 curseltype = (typ != 0) ? typ : PICP_string; 543 549 return (true); 544 550 } … … 546 552 printf("PIWdgX::ClaimSelection() - Probleme (Wdg= %lx)\n", (unsigned long)this); 547 553 curselwdg = NULL; 554 curseltype = PICP_string; 548 555 return (false); 549 556 } … … 556 563 printf("PIWdgX::SelectionLost() Ne fait rien !(Wdg= %lx - %lx) \n", 557 564 (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-- */ 568 int PIWdgX::RequestSelection(unsigned int typ) 563 569 { 564 570 // Pour demander le contenu du buffer de copier/coller 565 571 printf("PIWdgX::RequestSelection(%d) (Wdg= %lx - %lx) \n", typ, 566 572 (unsigned long)this, (unsigned long)curselwdg); 573 reqseltype = (typ != 0) ? typ : PICP_string; 567 574 XtGetSelectionValue(XtWdg(), XA_PRIMARY, XA_STRING, forXt_SelectionValue, 568 575 (XtPointer)this, PIXGetLastEventTime()); 569 return(1); 570 } 571 572 573 /* --Methode-- */ 574 void* PIWdgX::ProvideSelection(int& typ, int& len) 576 return(reqseltype); 577 } 578 579 static char* rs = NULL; 580 581 /* --Methode-- */ 582 void* PIWdgX::ProvideSelection(unsigned int& typ, unsigned int& len) 575 583 // Le widget doit fournier une l zone memoire contenant la selection 576 584 // en un type donne 577 585 // Renvoie le pointeur de cette zone, sa taille et son typ 578 586 { 579 char *rs = new char[80];580 sprintf(rs, "Test-of-PIWdgX::ProvideSelection(%d) ", typ);587 rs = new char[80]; 588 sprintf(rs, "Test-of-PIWdgX::ProvideSelection(%d)- %lx", typ,(long)rs); 581 589 len = strlen(rs); 582 590 return(rs); … … 584 592 585 593 /* --Methode-- */ 586 void PIWdgX::PasteSelection(int& typ, void *buff, int l) 594 void PIWdgX::SelectionTransferEnd() 595 { 596 printf("PIWdgX::SelectionTransferEnd() %lx \n", (long)rs); 597 delete[] rs; 598 } 599 600 601 /* --Methode-- */ 602 void PIWdgX::PasteSelection(unsigned int typ, void *buff, unsigned int l) 587 603 { 588 604 // Methode appele apres que le widget ait fait RequestSelection … … 592 608 strncpy(mbuff, (char *)buff, l); 593 609 mbuff[l] = '\0'; 594 printf("PIWdgX::PasteSelection( ) L=%d [%s] \n", l, mbuff);610 printf("PIWdgX::PasteSelection(%d, %lx, %d) [%s] \n", typ, (long)buff, l, mbuff); 595 611 delete[] mbuff; 596 612 return; -
trunk/SophyaPI/PI/piwdgx.h
r75 r76 56 56 57 57 // Gestion de copier-coller 58 virtual bool ClaimSelection( int typ=PICP_string);58 virtual bool ClaimSelection(unsigned int typ=PICP_string); 59 59 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); 63 64 64 65 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 1 7 #include "piwindowgen.h" 2 8 #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 3 61 4 62 /* --Methode-- */
Note:
See TracChangeset
for help on using the changeset viewer.