From: guigues Date: Thu, 24 Jul 2008 14:37:04 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: r0.6.0~5 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=97b08ef9b0c2a60c4d1f619f6bfef2996afdcab3;p=bbtk.git *** empty log message *** --- diff --git a/kernel/appli/CMakeLists.txt b/kernel/appli/CMakeLists.txt index f2e4ae1..4b2878f 100644 --- a/kernel/appli/CMakeLists.txt +++ b/kernel/appli/CMakeLists.txt @@ -6,6 +6,7 @@ ENDIF(WIN32) # The BlackBox Interpreter SUBDIRS(bbi) +SUBDIRS(bbI) # Black box code generator from xml SUBDIRS(bbfy) diff --git a/kernel/doc/bbtkWebSite/bbtk-make-index.sh.in b/kernel/doc/bbtkWebSite/bbtk-make-index.sh.in index 6028095..8674fd1 100755 --- a/kernel/doc/bbtkWebSite/bbtk-make-index.sh.in +++ b/kernel/doc/bbtkWebSite/bbtk-make-index.sh.in @@ -12,7 +12,7 @@ BIN=$(echo ${TMP#*/}|rev) echo "> cd ${BIN}/../@BBTK_BBDOC_REL_PATH@" cd ${BIN}/../@BBTK_BBDOC_REL_PATH@ -echo "> ${BIN}/bbi ./make-index" -${BIN}/bbi ./make-index +echo "> ${BIN}/bbi -N -q ./make-index" +${BIN}/bbi -N -q ./make-index echo "** Done ! **" diff --git a/kernel/src/bbtkBlackBox.cxx b/kernel/src/bbtkBlackBox.cxx index b651c09..49321ee 100644 --- a/kernel/src/bbtkBlackBox.cxx +++ b/kernel/src/bbtkBlackBox.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkBlackBox.cxx,v $ Language: C++ -Date: $Date: 2008/07/23 11:46:10 $ -Version: $Revision: 1.22 $ +Date: $Date: 2008/07/24 14:37:05 $ +Version: $Revision: 1.23 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See doc/license.txt or @@ -147,8 +147,7 @@ namespace bbtk "=> BlackBox::bbExecute() [" < Object::InsertInPackageList(\"" + <GetObjectName()<<"\" ["< w(p); + mgPackageList.insert(w); + } + //======================================================================= + //======================================================================= void Object::RemoveFromObjectList(WeakPointer p) @@ -164,8 +176,34 @@ namespace bbtk + void Object::ReleasePackages() + { + bbtkDebugMessage("object",1,"##> Object::ReleasePackages()"<use_count() != 0) + { + // Object::Pointer p(i->lock()); + Package::WeakPointer w(i->lock()->GetThisPointer()); + Package::Release(w); + /* + if (p->GetObjectName().find(name) != std::string::npos ) + { + std::cout << n << "/" << mgObjectList.size() << " "; + PrintObjectInfo(p); + m += p->GetObjectSize(); + n++; + } + */ + } + } - + } + @@ -180,6 +218,8 @@ namespace bbtk //======================================================================= StaticInitTime::~StaticInitTime() { + Object::ReleasePackages(); + if (PrintObjectListInfo) { std::cout << std::endl diff --git a/kernel/src/bbtkObject.h b/kernel/src/bbtkObject.h index 089afbb..2d8eb5e 100644 --- a/kernel/src/bbtkObject.h +++ b/kernel/src/bbtkObject.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkObject.h,v $ Language: C++ - Date: $Date: 2008/07/23 11:46:11 $ - Version: $Revision: 1.5 $ + Date: $Date: 2008/07/24 14:37:05 $ + Version: $Revision: 1.6 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See doc/license.txt or @@ -52,6 +52,9 @@ namespace bbtk static void InsertInObjectList(Pointer); static void RemoveFromObjectList(WeakPointer); + static void InsertInPackageList(Pointer); + static void ReleasePackages(); + static void PrintObjectListInfo(const std::string& name); // static void PrintObjectInfo(const std::string& name); static void PrintObjectInfo(const Pointer& o); @@ -120,6 +123,7 @@ namespace bbtk private: typedef std::set > ObjectListType; static ObjectListType mgObjectList; + static ObjectListType mgPackageList; WeakPointer mThisPointer; Pointer mThisPointerLocked; @@ -190,7 +194,7 @@ protected: \ static bool PrintObjectListInfo; private: - static bbtk::Object mObject; + static bbtk::Object mObject; }; diff --git a/kernel/src/bbtkPackage.h b/kernel/src/bbtkPackage.h index 5dccf50..78d98cc 100644 --- a/kernel/src/bbtkPackage.h +++ b/kernel/src/bbtkPackage.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkPackage.h,v $ Language: C++ - Date: $Date: 2008/05/21 12:50:11 $ - Version: $Revision: 1.9 $ + Date: $Date: 2008/07/24 14:37:05 $ + Version: $Revision: 1.10 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See doc/license.txt or @@ -330,6 +330,7 @@ namespace bbtk VERSION, \ BBTK_STRINGIFY_SYMBOL(BBTK_VERSION) \ ); \ + bbtk::Object::InsertInPackageList( NAME ## GetPackagePointer() ); \ return NAME ## GetPackagePointer(); \ } \ BBTK_PACKAGE_EXPORT const std::string& \ diff --git a/kernel/src/bbtkSystem.h b/kernel/src/bbtkSystem.h index f9f22eb..e1857d1 100644 --- a/kernel/src/bbtkSystem.h +++ b/kernel/src/bbtkSystem.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkSystem.h,v $ Language: C++ - Date: $Date: 2008/04/23 08:34:06 $ - Version: $Revision: 1.4 $ + Date: $Date: 2008/07/24 14:37:05 $ + Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -119,7 +119,7 @@ // ---------------------------------------------------------------------------- // wx headers // ---------------------------------------------------------------------------- -#include "bbtkWx.h" +//#include "bbtkWx.h" /* #ifdef _USE_WXWIDGETS_ diff --git a/kernel/src/bbtkWx.cxx b/kernel/src/bbtkWx.cxx index aa05db7..ec1327f 100644 --- a/kernel/src/bbtkWx.cxx +++ b/kernel/src/bbtkWx.cxx @@ -2,39 +2,147 @@ #include "bbtkWx.h" #include "bbtkMessageManager.h" -#include -//#include namespace bbtk { + //========================================================================= + class WxApp; + //========================================================================= + //========================================================================= + static WxApp* mgWxApp = 0; static wxWindow* mgTopWindow = 0; + static wxWindow* mgTopWindowParent = 0; + static bool mgAutoDestroyTopWindow = true; static int mgNbWindowsAlive = 0; static int mgNbWindowsShown = 0; - static bool mgAutoDestroyTopWindow = true; + //========================================================================= + //========================================================================= // BBTKWXSIG static Wx::Signal_type mgWxSignal; // \BBTKWXSIG + //========================================================================= + + //========================================================================= + // The wxApp class which is used when no user wxApp was created + class WxApp : public wxApp + { + public: + bool OnInit( ); + int OnExit() { return true; } + }; + //========================================================================= + IMPLEMENT_APP_NO_MAIN(WxApp); + //========================================================================= + bool WxApp::OnInit( ) + { + wxApp::OnInit(); +#ifdef __WXGTK__ + //See http://www.wxwindows.org/faqgtk.htm#locale + setlocale(LC_NUMERIC, "C"); +#endif + return true; + } + //========================================================================= + + //========================================================================= + void Wx::CreateWxAppIfNeeded() + { + if (wxApp::GetInstance()==0) + { + if (mgWxApp != 0) + { + bbtkGlobalError("Wx::CreateWxAppIfNeeded() : INTERNAL ERROR ! (wxApp::GetInstance()==0) && (mgWxApp != 0)"); + } + bbtkDebugMessage("wx",1," --> Creating bbtk wxApp"< Destructing bbtk WxApp"< Creating bbtk top window"<Hide(); + Wx::SetTopWindow(top); - mgAutoDestroyTopWindow = autodestroy; } //========================================================================= - + + //========================================================================= + void Wx::DestroyTopWindowIfNeeded() + { + if ( (mgNbWindowsAlive==0) && + (mgAutoDestroyTopWindow) ) + { + bbtkDebugMessage("wx",1," --> Destructing bbtk top window"<Close(); + mgTopWindow = 0; + + DestroyWxAppIfNeeded(); + } + } + //========================================================================= + + //========================================================================= + void Wx::LoopUntilAllWindowsClose() + { + int i = 0; + while (mgTopWindow != 0) + { + if (i % 100 == 0) + { + bbtkDebugMessage("wx",2,"Wx::Loop "< Destructing top window"<Close(); - mgTopWindow = 0; - } - // BBTKWXSIG + + DestroyTopWindowIfNeeded(); + // BBTKWXSIG mgWxSignal(); // \BBTKWXSIG } @@ -123,13 +226,9 @@ namespace bbtk mgNbWindowsShown--; bbtkDebugMessage("wx",2,"* Number of windows shown = "< Destructing top window"<Close(); - mgTopWindow = 0; - } + + DestroyTopWindowIfNeeded(); + // BBTKWXSIG mgWxSignal(); // \BBTKWXSIG @@ -166,6 +265,29 @@ namespace bbtk } //========================================================================= + + //========================================================================= + Wx::BusyCursor::BusyCursor() + { + if (TopWindowExists()) + { + bbtkDebugMessage("wx",2, + "Wx::BusyCursor::BusyCursor()"< #include // \BBTKWXSIG +//=========================================================================== namespace bbtk { + //================================================================== /// Global wx handlers (cursor...) @@ -57,17 +63,28 @@ namespace bbtk typedef Signal_type::slot_function_type Slot_function_type; // \BBTKWXSIG + /* static void ResetCursor(); static void BeginBusyCursor(); static void EndBusyCursor(); + */ + + static void LoopUntilAllWindowsClose(); + + class BusyCursor + { + public: + BusyCursor(); + ~BusyCursor(); + }; + + static void SetTopWindowParent(wxWindow*); + static void SetAutoDestroyTopWindow(bool); - static void CreateTopWindow(wxWindow* parent=0, bool autodestroy=true); /// Returns the creation time parent of all bbtk windows /// (window can be reparented after creation) static wxWindow* GetTopWindow(); static bool TopWindowExists(); - - static void AutoDestroyTopWindow(bool); static void IncNbWindowsAlive(); static void DecNbWindowsAlive(); @@ -82,7 +99,15 @@ namespace bbtk // BBTKWXSIG static void AddSignalObserver(Slot_function_type); // \BBTKWXSIG + private: + + static void CreateWxAppIfNeeded(); + static void DestroyWxAppIfNeeded(); + + static void CreateTopWindowIfNeeded(); + static void DestroyTopWindowIfNeeded(); + /// Sets the creation time parent of all bbtk windows static void SetTopWindow(wxWindow*); }; // struct Wx @@ -90,6 +115,8 @@ namespace bbtk + +#ifdef _USE_WXWIDGETS_ //================================================================== /// Conversion std::string to wxString inline wxString std2wx(const std::string& s){ @@ -119,41 +146,10 @@ namespace bbtk return s2; } //================================================================== - +#endif // EO _USE_WXWIDGETS } // namespace bbtk - -#else // _USE_WXWIDGETS - - -namespace bbtk -{ - - struct BBTK_EXPORT Wx - { - static void ResetCursor() {} - static void BeginBusyCursor() {} - static void EndBusyCursor() {} - static void CreateInvisibleTopWindow() {} - static wxWindow* GetTopWindow() { return 0; } - static void SetTopWindow(wxWindow*) {} - static void IncNbWindowsAlive() {} - static void DecNbWindowsAlive() {} - static int GetNbWindowsAlive() { return 0; } - static bool IsSomeWindowAlive() { return false; } - - static void IncNbWindowsShown() {} - static void DecNbWindowsShown() {} - static int GetNbWindowsShown() { return 0; } - static bool IsSomeWindowShown() { return false; } - }; // struct Wx - -} // namespace bbtk - - - -#endif // EO _USE_WXWIDGETS #endif // EO __bbtkWx_h_INCLUDED__ diff --git a/kernel/src/bbtkWxBlackBox.cxx b/kernel/src/bbtkWxBlackBox.cxx index 2625675..de81d49 100644 --- a/kernel/src/bbtkWxBlackBox.cxx +++ b/kernel/src/bbtkWxBlackBox.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkWxBlackBox.cxx,v $ Language: C++ - Date: $Date: 2008/07/23 11:46:11 $ - Version: $Revision: 1.24 $ + Date: $Date: 2008/07/24 14:37:06 $ + Version: $Revision: 1.25 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -145,7 +145,7 @@ namespace bbtk <bbGetFullName()<<"]"<Add (mWxGUICommand, 0, wxALL | wxGROW, 5); - // Creates the parent window of all bbtk windows as a child of this - Wx::CreateTopWindow(this,true); + // Set the parent window of all bbtk windows as a child of this + bbtk::Wx::SetTopWindowParent(this); + // Top Window Auto Destroys when no more black box window alive + // : this is the default + // bbtk::Wx::SetAutoDestroyTopWindow(true); // Add the method OnWxSignal as a Wx::Signal observer bbtkAddWxSignalObserver(WxGUIConsole::OnWxSignal); @@ -412,7 +415,7 @@ namespace bbtk // Overloaded Show method to handle bbtk::Wx::TopWindow auto-destruction bool WxGUIConsole::Show(bool show) { - Wx::AutoDestroyTopWindow(!show); + bbtk::Wx::SetAutoDestroyTopWindow(!show); return wxFrame::Show(show); } //================================================================ diff --git a/kernel/src/bbtkWxGUIScriptingInterface.cxx b/kernel/src/bbtkWxGUIScriptingInterface.cxx index 8a6ebfb..da3d644 100644 --- a/kernel/src/bbtkWxGUIScriptingInterface.cxx +++ b/kernel/src/bbtkWxGUIScriptingInterface.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkWxGUIScriptingInterface.cxx,v $ Language: C++ - Date: $Date: 2008/07/23 11:46:11 $ - Version: $Revision: 1.14 $ + Date: $Date: 2008/07/24 14:37:06 $ + Version: $Revision: 1.15 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -216,8 +216,8 @@ namespace bbtk // m_mgr.AddPane(mwxButtonRun, // wxAuiPaneInfo().Name(wxT("button_run_content"))); - // Creates the parent window of all bbtk windows as a child of this - Wx::CreateTopWindow(this); + // parent window of all bbtk windows will be a child of this + Wx::SetTopWindowParent(this); // Add the method OnWxSignal as a Wx::Signal observer //bbtkAddWxSignalObserver(WxGUIPackageBrowser2Window::OnWxSignal); diff --git a/kernel/src/bbtkWxGUITextEditor.cxx b/kernel/src/bbtkWxGUITextEditor.cxx index 128f530..a2b9931 100644 --- a/kernel/src/bbtkWxGUITextEditor.cxx +++ b/kernel/src/bbtkWxGUITextEditor.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkWxGUITextEditor.cxx,v $ Language: C++ - Date: $Date: 2008/07/23 11:46:11 $ - Version: $Revision: 1.14 $ + Date: $Date: 2008/07/24 14:37:06 $ + Version: $Revision: 1.15 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -668,8 +668,8 @@ namespace bbtk SetSizer(sizer); - // Creates the parent window of all bbtk windows as a child of this - Wx::CreateTopWindow(this); + // parent window of all bbtk windows will be a child of this + Wx::SetTopWindowParent(this); // Add the method OnWxSignal as a Wx::Signal observer //bbtkAddWxSignalObserver(WxGUITextEditorWindow::OnWxSignal); diff --git a/packages/std/src/bbstdExecSystemCommand.cxx b/packages/std/src/bbstdExecSystemCommand.cxx index 883a808..1e8ee9e 100755 --- a/packages/std/src/bbstdExecSystemCommand.cxx +++ b/packages/std/src/bbstdExecSystemCommand.cxx @@ -31,7 +31,7 @@ namespace bbstd { ccommand=bbGetInputIn().substr(pos1,pos2-pos1); } - for (int i=0 ; i < ccommand.length() ; i++) + for (unsigned int i=0 ; i < ccommand.length() ; i++) { if (ccommand[i]==39) { diff --git a/packages/wx/src/bbwxDirectorySelector.cxx b/packages/wx/src/bbwxDirectorySelector.cxx index 4ac2edb..680bf63 100644 --- a/packages/wx/src/bbwxDirectorySelector.cxx +++ b/packages/wx/src/bbwxDirectorySelector.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxDirectorySelector.cxx,v $ Language: C++ - Date: $Date: 2008/04/18 12:59:52 $ - Version: $Revision: 1.4 $ + Date: $Date: 2008/07/24 14:37:06 $ + Version: $Revision: 1.5 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -25,6 +25,7 @@ #include "bbwxDirectorySelector.h" +#include "bbtkWx.h" #include "bbwxPackage.h" #include diff --git a/packages/wx/src/bbwxFileSelector.cxx b/packages/wx/src/bbwxFileSelector.cxx index 0c6c66a..033749c 100644 --- a/packages/wx/src/bbwxFileSelector.cxx +++ b/packages/wx/src/bbwxFileSelector.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbwxFileSelector.cxx,v $ Language: C++ - Date: $Date: 2008/06/26 07:37:11 $ - Version: $Revision: 1.3 $ + Date: $Date: 2008/07/24 14:37:06 $ + Version: $Revision: 1.4 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -26,6 +26,7 @@ #include "bbwxFileSelector.h" #include "bbwxPackage.h" +#include "bbtkWx.h" #include