Changeset 2776 in Sophya
- Timestamp:
- May 27, 2005, 5:08:16 PM (20 years ago)
- Location:
- trunk/SophyaPI/PI
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PI/pibwdgx.cc
r2615 r2776 29 29 PIBaseWdgX::PIBaseWdgX(PIContainerGen *par, const char *nom, 30 30 int sx, int sy, int px, int py) 31 : PIBaseWdgGen(par, nom, sx, sy, px, py)31 : PIBaseWdgGen(par, nom, sx, sy, px, py) , bwx_finishDone(false) 32 32 33 33 { … … 36 36 Init(); 37 37 mWGrC = NULL; // PIGraphic (Contexte graphique) associe a la fenetre 38 finishDone = false; // FinishCreate() pas encore appele39 38 40 39 CreateXtWdg(nom, piXtBaseWidgetClass, NULL, sx, sy, px, py); … … 50 49 mPtrS = PI_CrossPointer; 51 50 SelPointerShape(); 52 // PIGraphic (Contexte graphique) associe a la fenetre 51 // ---------------------------------------------------------------------------- 52 // Reza: Fev/Mai 2005 - On doit s'assurer que le bon FinishCreate() est appele 53 // (table de fonction virtuelle mise a jour par les constructeurs successifs 54 // dans les classes heritieres 55 // et on gere le PIGraphic (Contexte graphique) associe a la fenetre 53 56 // Si pas cree par FinishCreate() 54 if (!mWGrC) mWGrC = new PIGraphicX(this); 57 if (finishDone) FinishCreate(); 58 else mWGrC = new PIGraphicX(this); 59 55 60 SetBackgroundColor(); 56 61 SetForegroundColor(); … … 75 80 { 76 81 // appele par la fenetre mere, apres XtRealize() 77 if (finishDone) { 78 fprintf(stderr, "BUG/PIBaseWdgX::FinishCreate() multiple call \n"); 79 return; 80 } 82 // Doit pouvoir etre appele de multiple fois 83 if (bwx_finishDone) return; 81 84 PIWdgX::FinishCreate(); 82 85 … … 101 104 if (!mWGrC) mWGrC = new PIGraphicX(this); 102 105 mWGrC->TerminateInit(); 106 bwx_finishDone = true; 103 107 } 104 108 -
trunk/SophyaPI/PI/pibwdgx.h
r1034 r2776 52 52 void Init(); 53 53 PIPointer mPtrS; 54 // pour s'assurer que le bon FinishCreate() est appele - pb lie aux tables de fonctions 55 // virtuelles des classes qui sont remplies au fur et a mesure des constructeurs 56 bool bwx_finishDone; 54 57 }; 55 58 -
trunk/SophyaPI/PI/picontainergen.cc
r2652 r2776 46 46 // Création d'un objet "PIContainer" dans le conteneur parent "par", de 47 47 // taille "sx,sy", se trouvant à la position "px,py" avec le nom "nom". 48 // Tous les widgets fils sont détruits (delete) par le destructeur49 // (voir "SetAutoDelChilds()").50 // Par défaut, le conteneur créé est visible (actif).48 // Peut controler la destruction des widgets fils (voir "SetAutoDelChilds()"). 49 // Le conteneur créé n'est pas visible (actif) par défaut. Il faut 50 // appeler "Show()". 51 51 // long kind() 52 52 // Renvoie le type de la classe de l'objet ("=PIContainerGen::ClassId") pour cette classe. … … 142 142 void PIContainerGen::Show() 143 143 { 144 Manage(); 144 145 stvis = true; 145 Manage(); 146 return; 146 FinishCreate(); 147 147 } 148 148 … … 200 200 void PIContainerGen::FinishCreate() 201 201 { 202 if (!stvis) return; 202 203 if (stfcr) return; 203 204 PIWdg::FinishCreate(); 204 int k; 205 for(k=0; k<NbChilds(); k++) GetChild(k)->FinishCreate(); 205 for(int k=0; k<NbChilds(); k++) GetChild(k)->FinishCreate(); 206 206 stfcr = true; 207 207 } -
trunk/SophyaPI/PI/picontainerx.cc
r2652 r2776 33 33 // Pour gerer le probleme de l'appel a FinishCreate() 34 34 // lorsque celui du parent est deja appele 35 if (finishDone) { 36 //DBG cout << " PIContainerX::PIContainerX/DBG - finishDone - Nom= " << nom << endl; 37 Manage(); 38 stfcr = true; 39 } 35 if (finishDone) FinishCreate(); 40 36 } 41 37 … … 59 55 // *************** Reza - Fev 2005 *************** 60 56 // Probleme lie a la table des fonctions virtuelles - voir ci-dessus 61 if (finishDone) { 62 //DBG cout << " PIContainerX::PIContainerX_Special/DBG - finishDone - Nom= " << nom << endl; 63 Manage(); 64 stfcr = true; 65 } 57 if (finishDone) FinishCreate(); 66 58 } 67 59 -
trunk/SophyaPI/PI/piimage.cc
r2652 r2776 9 9 #include <stdlib.h> 10 10 #include <stdio.h> 11 #include <iostream> 11 12 #include <string.h> 12 13 #include <ctype.h> … … 1619 1620 piimg->SetGloVWin(gimv, false); 1620 1621 piimg->SetCMapWin(cmapv, false); 1621 1622 1622 } 1623 1623 … … 1625 1625 PIImageNavigator::~PIImageNavigator() 1626 1626 { 1627 if (piimg) delete piimg; 1628 if (zoom) delete zoom; 1629 if (gimv) delete gimv; 1630 if (cmapv) delete cmapv; 1627 1631 } 1628 1632 -
trunk/SophyaPI/PI/pioptmenux.cc
r2615 r2776 63 63 mMen->SetMsgParent(this); 64 64 Manage(); 65 if (finishDone) FinishCreate(); 65 66 } 66 67 -
trunk/SophyaPI/PI/piwdgx.cc
r2615 r2776 223 223 { 224 224 // appele par la fenetre mere, apres XtRealize() 225 if (finishDone) { 226 fprintf(stderr, "BUG/PIWdgX::FinishCreate() multiple call \n"); 227 return; 228 } 225 // Doit pouvoir etre appele plusieurs fois 229 226 finishDone = true; 230 227 return;
Note:
See TracChangeset
for help on using the changeset viewer.