]> Creatis software - bbtk.git/commitdiff
*** empty log message ***
authorguigues <guigues>
Tue, 19 May 2009 10:19:23 +0000 (10:19 +0000)
committerguigues <guigues>
Tue, 19 May 2009 10:19:23 +0000 (10:19 +0000)
kernel/src/bbtkMessageManager.cxx
kernel/src/bbtkPackage.h
kernel/src/bbtkQtBlackBoxDialog.cxx
kernel/src/bbtkQtBlackBoxDialog.h
kernel/src/bbtkWidgetBlackBox.txx
kernel/src/bbtkWidgetBlackBoxWindow.h
kernel/src/bbtkWidgetBlackBoxWindow.txx
kernel/src/bbtkWx.cxx
kernel/src/bbtkWxBlackBox.cxx
kernel/src/bbtkWxBlackBox.h

index eae9e3b41d3d5bcc2a9154d009bd048aa8c0931b..4d673d4d029535b8aa885e525bd8b12361cb590b 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkMessageManager.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/12/08 12:54:27 $
-  Version:   $Revision: 1.14 $
+  Date:      $Date: 2009/05/19 10:19:23 $
+  Version:   $Revision: 1.15 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -86,10 +86,18 @@ namespace bbtk
     mMessageLevel[key] = 0;
     mMessageHelp[key] = "Data related messages";
     if (mMaxMessageLength<key.length()) mMaxMessageLength = key.length();
-    key = "wx";
+    key = "widget";
     mMessageLevel[key] = 0;
     mMessageHelp[key] = "Widgets related messages";
     if (mMaxMessageLength<key.length()) mMaxMessageLength = key.length();
+    key = "wx";
+    mMessageLevel[key] = 0;
+    mMessageHelp[key] = "wxWidgets related messages";
+    if (mMaxMessageLength<key.length()) mMaxMessageLength = key.length();
+    key = "qt";
+    mMessageLevel[key] = 0;
+    mMessageHelp[key] = "Qt related messages";
+    if (mMaxMessageLength<key.length()) mMaxMessageLength = key.length();
     key = "gui";
     mMessageLevel[key] = 0;
     mMessageHelp[key] = "Graphical user interface related messages";
index 9a1c46a9e43b0fa42b8f99246598077d3d1e9c01..f2876752077a213a472bfd495b8b7c5b48c78d24 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkPackage.h,v $
   Language:  C++
-  Date:      $Date: 2009/01/13 08:45:27 $
-  Version:   $Revision: 1.12 $
+  Date:      $Date: 2009/05/19 10:19:23 $
+  Version:   $Revision: 1.13 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -64,6 +64,13 @@ namespace bbtk
                                            const std::string& pkgname,
                                            const std::string& path);
 
+    /// NOTE : All the static methods below for package destruction
+    /// are not member because they can cause the package death 
+    /// and thus close the dynamic library from which it has been loaded.
+    /// If the dynamic lib which provides a function is closed while 
+    /// in the function: imagine the crash !
+    /// The principal method is Release
+
     /// UnLoads the package dynamic library 
     /// (if any and if the package is released)
     /// If doit == false then does not do it but just 
@@ -80,7 +87,8 @@ namespace bbtk
 
     /// "Releases" the package
     /// Signals the package that it can free its descriptors 
-    /// if they are no more used and frees and unloads the package 
+    /// if they are no more used 
+    /// then frees and unloads the package 
     /// if it is no more used (released)
     /// Note : Any non-weak pointer on the package must have been freed
     static void Release(Package::WeakPointer p);
index 06189d58395c76fb8589e0751a4c9fba1c029491..36b7834f80fd110212adfcd6a9c45d7fadab89f0 100644 (file)
@@ -49,7 +49,7 @@ namespace bbtk
     exec();
     //    Show(false);
     //SetReturnCode( wxDialog::ShowModal() ); 
-    bbClose();
+    bbDestroy();
   }
   //=========================================================================
 
@@ -64,10 +64,12 @@ namespace bbtk
   //=========================================================================
 
   //=========================================================================
-  void QtBlackBoxDialog::bbClose()
+  void QtBlackBoxDialog::bbDestroy()
   {
-    bbtkDebugMessage("qt",9,"QtBlackBoxDialog::bbClose()"<<std::endl);
+    bbtkDebugMessage("qt",9,"QtBlackBoxDialog::bbDestroy()"<<std::endl);
+    Parent::bbDestroy();
     //wxDialog::Destroy();
+    
   }
   //=========================================================================
 
index 34df2647b94440bc1e96312fefdfa048f4bc1f66..a9d6202f027413604e5f091e5981f658da8fc945 100644 (file)
@@ -32,7 +32,7 @@ namespace bbtk
     ~QtBlackBoxDialog();
     void bbShow();
     void bbHide();
-    void bbClose();
+    void bbDestroy();
     bool bbIsDialog() { return true; }
   };
   //=========================================================================
index 1abdaad92f81ad694410b80c9fc9ccd974c94137..2aeb1783de0d188113b47349f13e75b8da9b3da7 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkWidgetBlackBox.txx,v $
   Language:  C++
-  Date:      $Date: 2009/05/14 14:43:34 $
-  Version:   $Revision: 1.3 $
+  Date:      $Date: 2009/05/19 10:19:23 $
+  Version:   $Revision: 1.4 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -79,10 +79,16 @@ namespace bbtk
   void WidgetBlackBox<T>::bbUserFinalizeProcessing()
   {
     bbtkDebugMessage("widget",9,"==> WidgetBlackBox::bbUserFinalizeProcessing() ["<<bbGetFullName()<<"]"<<std::endl);
-    if (bbGetWindow()) {
-      bbGetWindow()->bbClose();
-      bbSetWindow(0);
-    }
+    if (bbGetWindow()) 
+      {
+       if (GetUseCount()==0)
+         {
+           if (bbGetWindow()->bbIsShown()) DecNbWindowsShown();
+           DecNbWindowsAlive();
+         }
+       bbGetWindow()->bbDestroy();
+       bbSetWindow(0);
+      }
     bbtkDebugMessage("widget",9,"<== WidgetBlackBox::bbUserFinalizeProcessing() ["<<bbGetFullName()<<"]"<<std::endl);
   }
   //=========================================================================
@@ -223,7 +229,7 @@ namespace bbtk
     bbtkDebugMessageInc("widget",1,"=> WidgetBlackBox::bbCloseWindow() ["
                        <<bbGetFullName()<<"]"<<std::endl);
 
-    if (bbGetWindow()!=0) bbGetWindow()->bbClose();
+    if (bbGetWindow()!=0) bbGetWindow()->bbDestroy();
 
     bbtkDebugMessageDec("widget",2,"<= WidgetBlackBox::bbCloseWindow() ["
                        <<bbGetFullName()<<"]"<<std::endl);
index 5fea07c22874d78dcb778b44f3f0b7eb5954f631..04344ad7fcbd0d50befa48520fe5a289ca7f0ec0 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkWidgetBlackBoxWindow.h,v $
   Language:  C++
-  Date:      $Date: 2009/04/08 07:56:11 $
-  Version:   $Revision: 1.1 $
+  Date:      $Date: 2009/05/19 10:19:23 $
+  Version:   $Revision: 1.2 $
 ========================================================================*/
 
 
@@ -68,7 +68,7 @@ namespace bbtk
     virtual ~WidgetBlackBoxWindow();
     virtual void bbShow();
     virtual void bbHide();
-    virtual void bbClose();
+    virtual void bbDestroy();
     bool bbIsShown() { return mShown; }
     virtual WidgetBlackBoxPointer bbGetBlackBox() { return mBox.lock(); }
     //virtual wxDialog* bbGetDialog() { return 0; } 
index 2c7c2668bd75e69c52fde73e9b0c4ccc0b0d8303..aee878575f2f0af8ae148fd51a109ef16bbe04f1 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkWidgetBlackBoxWindow.txx,v $
   Language:  C++
-  Date:      $Date: 2009/04/08 07:56:11 $
-  Version:   $Revision: 1.1 $
+  Date:      $Date: 2009/05/19 10:19:23 $
+  Version:   $Revision: 1.2 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -67,9 +67,9 @@ namespace bbtk
                     "WidgetBlackBoxWindow::~WidgetBlackBoxWindow() "
                     <<this<<std::endl);
     bbHide();
-    mBox.lock()->DecNbWindowsAlive();
     if (!mBox.expired())
       {
+       mBox.lock()->DecNbWindowsAlive();
        mBox.lock()->bbSetWindow(0);
       }
   }
@@ -93,7 +93,7 @@ namespace bbtk
   template <class W>
   void WidgetBlackBoxWindow<W>::bbHide()
   {
-    if (!bbIsShown()) return;
+    if ((!bbIsShown())||(mBox.expired())) return;
     bbtkDebugMessage("widget",9,"WidgetBlackBoxWindow::bbHide() ["
                     <<mBox.lock()->bbGetName()<<"]"<<std::endl);
     mBox.lock()->DecNbWindowsShown();
@@ -103,10 +103,14 @@ namespace bbtk
 
   //=========================================================================
   template <class W>
-  void WidgetBlackBoxWindow<W>::bbClose()
+  void WidgetBlackBoxWindow<W>::bbDestroy()
   {
-    bbtkDebugMessage("widget",9,"WidgetBlackBoxWindow::bbClose() [" 
+    if (mBox.expired()) return;
+    bbtkDebugMessage("widget",9,"WidgetBlackBoxWindow::bbDestroy() [" 
                     <<mBox.lock()->bbGetName()<<"]"<<std::endl);
+    bbHide();
+    mBox.lock()->DecNbWindowsAlive();
+    mBox.lock()->bbSetWindow(0);
   }
   //=========================================================================
 
index a15bb866cc7e47b13804a78a658641e5127a9159..820a60f043c4721c2cd718d28053ac6ea28099e5 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkWx.cxx,v $
   Language:  C++
-  Date:      $Date: 2009/04/08 07:56:11 $
-  Version:   $Revision: 1.13 $
+  Date:      $Date: 2009/05/19 10:19:23 $
+  Version:   $Revision: 1.14 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -134,7 +134,8 @@ namespace bbtk
                  _T("TOP BBTK FRAME (YOU SHOULD NOT SEE ME !!)"));
     top->Hide();
 
-    Wx::SetTopWindow(top);
+    //if (mgTopWindowParent==0) 
+      Wx::SetTopWindow(top);
   }
   //=========================================================================
 
@@ -142,7 +143,8 @@ namespace bbtk
   void Wx::DestroyTopWindowIfNeeded()
   {
     if ( (mgNbWindowsAlive==0) && 
-        (mgAutoDestroyTopWindow) )
+        (mgAutoDestroyTopWindow) &&
+        (mgTopWindow != 0))
       {
        bbtkDebugMessage("wx",1,"  --> Destructing bbtk top window"<<std::endl);
        mgTopWindow->Close();
@@ -258,7 +260,7 @@ namespace bbtk
     bbtkDebugMessage("wx",2,"* Number of windows shown = "<<mgNbWindowsShown
                     <<std::endl);
 
-    DestroyTopWindowIfNeeded();
+    //   DestroyTopWindowIfNeeded();
 
     // BBTKWXSIG
     mgWxSignal();
@@ -306,14 +308,14 @@ namespace bbtk
        bbtkDebugMessage("wx",2,
                         "Wx::BusyCursor::BusyCursor() : creating new cursor"
                         <<std::endl);
-       mCursor = new wxBusyCursor; 
+       //mCursor = new wxBusyCursor; 
     }
   }
   Wx::BusyCursor::~BusyCursor()
   {
     if (mCursor)
       { 
-       delete mCursor;
+       //delete mCursor;
        bbtkDebugMessage("wx",2,
                         "Wx::BusyCursor::~BusyCursor() : deleting cursor"<<std::endl);
       }
index 245a07412fa108ca4b135e4a0e10e5246ac51a18..d543faa5df26920e6cfc82f2ea1ff5442b333860 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkWxBlackBox.cxx,v $
   Language:  C++
-  Date:      $Date: 2009/05/14 14:43:34 $
-  Version:   $Revision: 1.39 $
+  Date:      $Date: 2009/05/19 10:19:23 $
+  Version:   $Revision: 1.40 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -105,7 +105,7 @@ namespace bbtk
     Parent::bbShow();
     Show(false);
     SetReturnCode( wxDialog::ShowModal() ); 
-    bbClose();
+    bbDestroy();
   }
   //=========================================================================
 
@@ -119,9 +119,9 @@ namespace bbtk
   //=========================================================================
 
   //=========================================================================
-  void WxBlackBoxDialog::bbClose()
+  void WxBlackBoxDialog::bbDestroy()
   {
-    bbtkDebugMessage("wx",9,"WxBlackBoxDialog::bbClose()"<<std::endl);
+    bbtkDebugMessage("wx",9,"WxBlackBoxDialog::bbDestroy()"<<std::endl);
     wxDialog::Destroy();
   }
   //=========================================================================
@@ -129,6 +129,8 @@ namespace bbtk
   //=========================================================================
   WxBlackBoxDialog::~WxBlackBoxDialog()
   {
+    bbtkDebugMessage("wx",9,"WxBlackBoxDialog::~WxBlackBoxDialog()"
+                    <<std::endl);
   }
   //=========================================================================
 
@@ -178,6 +180,8 @@ namespace bbtk
   //=========================================================================
   WxBlackBoxFrame::~WxBlackBoxFrame()
   {
+    bbtkDebugMessage("wx",9,"WxBlackBoxFrame::~WxBlackBoxFrame()"
+                    <<std::endl);
   }
   //=========================================================================
 
@@ -215,10 +219,10 @@ namespace bbtk
   //=========================================================================
 
   //=========================================================================
-  void WxBlackBoxFrame::bbClose()
+  void WxBlackBoxFrame::bbDestroy()
   {
-    bbtkDebugMessage("wx",9,"WxBlackBoxFrame::bbClose()"<<std::endl);
-    wxFrame::Close();
+    bbtkDebugMessage("wx",9,"WxBlackBoxFrame::bbDestroy()"<<std::endl);
+    wxFrame::Destroy();
   }
   //=========================================================================
 
@@ -254,23 +258,30 @@ namespace bbtk
   //=========================================================================
   WxBlackBoxWidgetEventHandler::~WxBlackBoxWidgetEventHandler()
   {
+  bbtkDebugMessage("wx",9,
+                    "WxBlackBoxWidgetEventHandler::~WxBlackBoxWidgetEventHandler() ["
+               <<std::endl);
+
+
+    Disconnect (  mWindow->GetId() );
+
     if (mBox.expired()) return;
     bbtkDebugMessage("wx",9,
                     "WxBlackBoxWidgetEventHandler::~WxBlackBoxWidgetEventHandler() ["
                     <<mBox.lock()->bbGetFullName()<<"]"<<std::endl);
-     mBox.lock()->bbSetWidgetEventHandler(0);   
+
+    mBox.lock()->bbSetWidgetEventHandler(0);   
   }
   //=========================================================================
 
   //=========================================================================
   void WxBlackBoxWidgetEventHandler::OnWindowDestroy(wxWindowDestroyEvent&)
   {
+   bbtkDebugMessage("wx",9,"WxBlackBoxWidgetEventHandler::OnWindowDestroy() []"<<std::endl);
     if (mBox.expired()) return;
-    bbtkDebugMessage("wx",9,"WxBlackBoxWidgetEventHandler::OnWindowDestroy() ["
+    bbtkDebugMessage("wx",9,"WxBlackBoxWidgetEventHandler::OnWindowDestroy() alive ["
                     <<mBox.lock()->bbGetFullName()<<"]"<<std::endl);
     mBox.lock()->bbSetOutputWidget(0);
-    // LGSIGNAL
-    //    mBox.lock()->bbSetModifiedStatus();
   }
   //=========================================================================
 
@@ -308,6 +319,13 @@ namespace bbtk
   //=========================================================================
   void WxBlackBox::bbUserFinalizeProcessing()
   {
+    bbtkDebugMessage("wx",9,"WxBlackBox::bbUserFinalizeProcessing()"<<std::endl);
+    if (bbGetWidgetEventHandler()!=0)
+      {
+       bbtkDebugMessage("wx",9,"Deleting Widget Event Handler"<<std::endl);
+       delete bbGetWidgetEventHandler();
+      }
+    
   }
   //==================================================================    
 
index 7c9db44300ea4d3e09786e367db368c8625c3c43..b93adeb4553c841ced0a3509a9cab8183ef9e287 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkWxBlackBox.h,v $
   Language:  C++
-  Date:      $Date: 2009/05/14 14:43:34 $
-  Version:   $Revision: 1.27 $
+  Date:      $Date: 2009/05/19 10:19:23 $
+  Version:   $Revision: 1.28 $
 ========================================================================*/
 
 
@@ -160,7 +160,7 @@ namespace bbtk
     ~WxBlackBoxDialog();
     void bbShow();  
     void bbHide();
-    void bbClose();
+    void bbDestroy();
     bool IsDialog() { return true; }
     bool IsFrame() { return false; }
     wxDialog* bbGetDialog() { return this; } 
@@ -179,7 +179,7 @@ namespace bbtk
     ~WxBlackBoxFrame();
     void bbShow();
     void bbHide();
-    void bbClose();
+    void bbDestroy();
     bool IsDialog() { return false; }
     bool IsFrame() { return true; }
     wxFrame* bbGetFrame() { return this; }