From 40b39757a6f9d5056bc08a59081ed19d0406837f Mon Sep 17 00:00:00 2001 From: guigues Date: Mon, 28 Jan 2008 15:08:53 +0000 Subject: [PATCH] *** empty log message *** --- kernel/CMakeLists.txt | 9 +++ kernel/bbtk_config_build.xml.in | 15 +++++ kernel/cmake/BBTKConfigurePackage_doc.cmake | 62 +++---------------- kernel/cmake/BBTKCreatePackageBBdoc.cmake | 41 ++++++++++++ .../BBTKCreatePackageIncludeScript.cmake | 11 ++++ kernel/src/bbtkExecuter.cxx | 48 +++++++++++--- kernel/src/bbtkExecuter.h | 21 +++++-- kernel/src/bbtkInterpreter.cxx | 36 +++++++++-- kernel/src/bbtkInterpreter.h | 6 +- kernel/src/bbtkUtilities.h | 13 +++- kernel/src/bbtkVirtualExec.h | 10 ++- packages/wx/bbs/boxes/bbDoubleSlider.bbs | 13 ++-- packages/wx/doc/bbdoc/CMakeLists.txt | 2 + 13 files changed, 202 insertions(+), 85 deletions(-) create mode 100644 kernel/bbtk_config_build.xml.in create mode 100644 kernel/cmake/BBTKCreatePackageBBdoc.cmake create mode 100644 packages/wx/doc/bbdoc/CMakeLists.txt diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index df64591..dfc9517 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -16,3 +16,12 @@ IF(BUILD_APPLICATIONS) ENDIF(BUILD_APPLICATIONS) #----------------------------------------------------------------------------- + +#----------------------------------------------------------------------------- +# bbtk_config.xml for the build tree +CONFIGURE_FILE( + ${CMAKE_CURRENT_SOURCE_DIR}/bbtk_config_build.xml.in + ${BBTK_BIN_PATH}/bbtk_config.xml + @ONLY IMMEDIATE + ) +#----------------------------------------------------------------------------- diff --git a/kernel/bbtk_config_build.xml.in b/kernel/bbtk_config_build.xml.in new file mode 100644 index 0000000..1ff142b --- /dev/null +++ b/kernel/bbtk_config_build.xml.in @@ -0,0 +1,15 @@ + + + Sets the search directories in the build tree + + + . + @PROJECT_BINARY_DIR@/@BBTK_BBS_INSTALL_PATH@ + + @BBTK_BIN_PATH@ + + @BBTK_DATA_ROOT@ + + . + + diff --git a/kernel/cmake/BBTKConfigurePackage_doc.cmake b/kernel/cmake/BBTKConfigurePackage_doc.cmake index 56e6e54..f6ff5ae 100644 --- a/kernel/cmake/BBTKConfigurePackage_doc.cmake +++ b/kernel/cmake/BBTKConfigurePackage_doc.cmake @@ -28,6 +28,8 @@ ENDIF(NOT BBTK_CORE_PACKAGE) #---------------------------------------------------------------------------- +#---------------------------------------------------------------------------- +# Doxygen #---------------------------------------------------------------------------- IF(BUILD_bbtk_DOC_DOXYGEN) SET(BBTK_PACKAGE_DOXYGEN_DOC_INSTALL_PATH @@ -42,58 +44,8 @@ ENDIF(BUILD_bbtk_DOC_DOXYGEN) #---------------------------------------------------------------------------- # bbdoc #--------------------------------------------------------------------------- -IF(BUILD_bbtk_DOC_BBTK_PACKAGE) - - # MARK_AS_ADVANCED( bbdoc_PATH ) - - FILE(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/doc/packages) - FILE(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/doc/packages/${BBTK_PACKAGE_NAME}) - - - IF(WIN32) - IF(CMAKE_GENERATOR STREQUAL "Visual Studio 6") - SET(bbdoc_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/$(IntDir)/bbdoc.exe) - ELSE(CMAKE_GENERATOR STREQUAL "Visual Studio 6") - SET(bbdoc_EXECUTABLE $(SolutionDir)/bin/$(OutDir)/bbdoc.exe) - ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 6") - ELSE(WIN32) - SET(bbdoc_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/bbdoc) - ENDIF(WIN32) - - # NEVER USE CONFIGURATION FILE BUT ALWAYS BUILD WITH THE JUST COMPILED LIBS - # NOT THE INSTALLED ONES ! - # IF(-bbtk_USE_CONFIGURATION_FILE) - # just pass the package name, not the full path name! - # and pass the option '1' to bbdoc to use config file - # SET(bbdoc_INPUT ${BBTK_PACKAGE_NAME} 1) - # ELSE(-bbtk_USE_CONFIGURATION_FILE) - - - - IF(WIN32) - IF(CMAKE_GENERATOR STREQUAL "Visual Studio 6") - SET(bbdoc_INPUT ${EXECUTABLE_OUTPUT_PATH}/$(IntDir)/${BBTK_PACKAGE_NAME}) - ELSE(CMAKE_GENERATOR STREQUAL "Visual Studio 6") - SET(bbdoc_INPUT $(SolutionDir)/bin/$(OutDir)/${BBTK_PACKAGE_NAME}) - ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 6") - ELSE(WIN32) - SET(bbdoc_INPUT ${LIBRARY_OUTPUT_PATH}/${BBTK_PACKAGE_NAME}) - ENDIF(WIN32) - # ENDIF(-bbtk_USE_CONFIGURATION_FILE) - - - ADD_CUSTOM_COMMAND( - OUTPUT ${PROJECT_BINARY_DIR}/doc/packages/${BBTK_PACKAGE_NAME}/${BBTK_PACKAGE_NAME}.html - COMMAND - ${bbdoc_EXECUTABLE} ${bbdoc_INPUT} ${PROJECT_BINARY_DIR}/doc/packages/${BBTK_PACKAGE_NAME}/${BBTK_PACKAGE_NAME}.html - DEPENDS - bb${BBTK_PACKAGE_NAME} - ${bbdoc_EXECUTABLE} - ) - - ADD_CUSTOM_TARGET(${BBTK_PACKAGE_NAME}.html ALL - DEPENDS ${PROJECT_BINARY_DIR}/doc/packages/${BBTK_PACKAGE_NAME}/${BBTK_PACKAGE_NAME}.html) - -ENDIF(BUILD_bbtk_DOC_BBTK_PACKAGE) - - +IF(BUILD_bbtk_DOC_PACKAGE) + SUBDIRS(bbdoc) + #MESSAGE(ERROR "TT") +ENDIF(BUILD_bbtk_DOC_PACKAGE) +#--------------------------------------------------------------------------- diff --git a/kernel/cmake/BBTKCreatePackageBBdoc.cmake b/kernel/cmake/BBTKCreatePackageBBdoc.cmake new file mode 100644 index 0000000..cd79e02 --- /dev/null +++ b/kernel/cmake/BBTKCreatePackageBBdoc.cmake @@ -0,0 +1,41 @@ +MACRO(BBTK_CREATE_PACKAGE_BBDOC PACKAGE_NAME) + + # Create file make_doc_${PACKAGE_NAME}.bbs + SET(OUTPUT_PATH ${BBTK_BBS_INSTALL_PATH}) + SET(OUTPUT_FILE ${PROJECT_BINARY_DIR}/${OUTPUT_PATH}/make_doc_${PACKAGE_NAME}.bbs) + SET(DOC_OUTPUT ${BBTK_DOC_INSTALL_PATH}/packages/bbdoc/${PACKAGE_NAME}/index.html) + FILE(WRITE + "${OUTPUT_FILE}" + "#-----------------------------------------\n" + "# Generates the html doc for package '${PACKAGE_NAME}'\n" + "# Automatically generated by cmake (macro BBTK_CREATE_PACKAGE_BBDOC)\n") + FILE(APPEND + "${OUTPUT_FILE}" + "#-----------------------------------------\n" + "include ${PACKAGE_NAME}\n" + "include ${PACKAGE_NAME}-appli\n" + "#-----------------------------------------\n" + "graph workspace 0 0 ${DOC_OUTPUT} ${BBTK_DOCUMENT_SCRIPTS_OUTPUT_PATH}/header.html \"Package ${PACKAGE_NAME} documentation\"\n" + ) + + ADD_CUSTOM_COMMAND( + OUTPUT ${DOC_OUTPUT} + COMMAND + # tth + ${BBTK_BBI} ${OUTPUT_FILE} + # ARGS + # ${OUTPUT_FILE} + # DEPENDS ${PACKAGE_NAME} + ) + ADD_CUSTOM_TARGET(${PACKAGE_NAME}_index.html ALL + DEPENDS ${DOC_OUTPUT} + ) + # Install +# INSTALL( +# FILES ${CMAKE_CURRENT_BINARY_DIR}/${TEX_FILE}.html +# DESTINATION ${CMAKE_INSTALL_PREFIX}/${BBTK_DOC_INSTALL_PATH}/${TEX_FILE} +# ) + + +ENDMACRO(BBTK_CREATE_PACKAGE_BBDOC NAME) + diff --git a/kernel/cmake/BBTKCreatePackageIncludeScript.cmake b/kernel/cmake/BBTKCreatePackageIncludeScript.cmake index 3e3dd61..26fb8d5 100644 --- a/kernel/cmake/BBTKCreatePackageIncludeScript.cmake +++ b/kernel/cmake/BBTKCreatePackageIncludeScript.cmake @@ -23,6 +23,12 @@ MACRO(BBTK_CREATE_PACKAGE_INCLUDE_SCRIPT BBTK_PACKAGE_NAME BBTK_PACKAGE_BB "#-----------------------------------------\n" "include ${BBTK_PACKAGE_NAME}/${bbs}\n" ) + CONFIGURE_FILE( + ${CMAKE_CURRENT_SOURCE_DIR}/${bbs} + ${PROJECT_BINARY_DIR}/${BBTK_BBS_INSTALL_PATH}/${BBTK_PACKAGE_NAME}/${bbs} + COPYONLY + ) + ENDFOREACH(bbs) FILE(APPEND "${OUTPUT_FILE}" @@ -59,6 +65,11 @@ MACRO(BBTK_CREATE_PACKAGE_INCLUDE_SCRIPT BBTK_PACKAGE_NAME BBTK_PACKAGE_BB "include ${BBTK_PACKAGE_NAME}/${bbs}\n" "endefine\n" ) + CONFIGURE_FILE( + ${CMAKE_CURRENT_SOURCE_DIR}/${bbs} + ${PROJECT_BINARY_DIR}/${BBTK_BBS_INSTALL_PATH}/${BBTK_PACKAGE_NAME}/${bbs} + COPYONLY + ) ENDFOREACH(bbs) FILE(APPEND "${OUTPUT_FILE}" diff --git a/kernel/src/bbtkExecuter.cxx b/kernel/src/bbtkExecuter.cxx index ddda38a..891b6aa 100644 --- a/kernel/src/bbtkExecuter.cxx +++ b/kernel/src/bbtkExecuter.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkExecuter.cxx,v $ $ Language: C++ - Date: $Date: 2008/01/22 15:02:00 $ - Version: $Revision: 1.1 $ + Date: $Date: 2008/01/28 15:08:53 $ + Version: $Revision: 1.2 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -104,12 +104,12 @@ namespace bbtk mRoot = new ComplexBlackBoxDescriptor("workspace"); //,f); mRoot->AddToAuthor("bbi (internal)"); mRoot->AddToDescription("User's workspace"); - mCurrent.push_back(CBBDefinition(mRoot,"user")); + mOpenDefinition.push_back(CBBDefinition(mRoot,"user")); // Register it into the user package mPackage->RegisterBlackBox(mRoot); // Insert the user package in the factory InsertPackage(mPackage); - + mOpenPackage.push_back(mPackage); bbtkDebugDecTab("Core",9); } @@ -119,6 +119,31 @@ namespace bbtk mPackage->ChangeBlackBoxName( mRoot->GetTypeName(), n ); } + void Executer::BeginPackage (const std::string &name) + { + bbtkDebugMessageInc("Core",9,"Executer::BeginPackage(\""<GetPackage(name); + } + catch (Exception e) + { + p = new Package(name, + "", + "", + "", + BBTK_STRINGIFY_SYMBOL(BBTK_VERSION)); + InsertPackage(p); + } + mOpenPackage.push_back(p); + } + + void Executer::EndPackage() + { + if (mOpenPackage.size()>1) mOpenPackage.pop_back(); + } void Executer::Define (const std::string &name, const std::string &pack, @@ -130,7 +155,7 @@ namespace bbtk ComplexBlackBoxDescriptor* b = new ComplexBlackBoxDescriptor(name); b->SetScriptFileName(scriptfilename); - mCurrent.push_back( CBBDefinition( b, pack ) ); + mOpenDefinition.push_back( CBBDefinition( b, pack ) ); bbtkDebugDecTab("Core",9); } @@ -141,8 +166,11 @@ namespace bbtk <GetTypeName()<<"\")" <0) + { try { p = GetGlobalFactory()->GetPackage(pname); @@ -156,10 +184,14 @@ namespace bbtk BBTK_STRINGIFY_SYMBOL(BBTK_VERSION)); InsertPackage(p); } - + } + else + { + p = mOpenPackage.back(); + } p->RegisterBlackBox(Current()); - mCurrent.pop_back(); + mOpenDefinition.pop_back(); } diff --git a/kernel/src/bbtkExecuter.h b/kernel/src/bbtkExecuter.h index 5477c91..8604aff 100644 --- a/kernel/src/bbtkExecuter.h +++ b/kernel/src/bbtkExecuter.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkExecuter.h,v $ $ Language: C++ - Date: $Date: 2008/01/22 16:55:04 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/01/28 15:08:53 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -64,6 +64,12 @@ namespace bbtk /// Sets the mode of dialog of the executer for Root inputs void SetDialogMode(DialogModeType t) { mDialogMode = t; } + /// Starts a package block + void BeginPackage (const std::string &name ); + + /// Ends a package block + void EndPackage (); + /// Starts the definition of a new ComplexBlackBox in package pack /// scriptfilename is the file from which the def is read void Define (const std::string &name, @@ -147,10 +153,11 @@ namespace bbtk private: /// Gets the current working black box - ComplexBlackBoxDescriptor* Current() { return mCurrent.back().box; } + ComplexBlackBoxDescriptor* Current() + { return mOpenDefinition.back().box; } /// Returns true when we are inside a define/endefine block - // bool InDefinitionBlock() { return (mCurrent.size()>1); } + // bool InDefinitionBlock() { return (mOpenDefinition.size()>1); } //================================================================== // ATTRIBUTES @@ -177,7 +184,11 @@ namespace bbtk /// The stack of current working ComplexBlackBox /// (is a stack for nested definitions) /// only contains the root when outside a define/endefine block - std::deque mCurrent; + std::deque mOpenDefinition; + + /// The stack of current working package + /// (is a stack for nested definitions) + std::deque mOpenPackage; /// flag which is true when we are inside a Define/EndDefine block // bool mDefineFlag; diff --git a/kernel/src/bbtkInterpreter.cxx b/kernel/src/bbtkInterpreter.cxx index 921c278..ca1bd89 100644 --- a/kernel/src/bbtkInterpreter.cxx +++ b/kernel/src/bbtkInterpreter.cxx @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkInterpreter.cxx,v $ $ Language: C++ - Date: $Date: 2008/01/28 10:50:54 $ - Version: $Revision: 1.5 $ + Date: $Date: 2008/01/28 15:08:53 $ + 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 @@ -99,6 +99,22 @@ Interpreter* Interpreter::mGlobalInterpreter = NULL; info.help = "Executes the black box of name (and connected boxes if needed). If the special keyword 'freeze' is given then freezes any further execution command. 'unfreeze' reverts to normal execution mode."; mCommandDict[info.keyword] = info; + info.keyword = "package"; + info.argmin = 1; + info.argmax = 1; + info.code = cPackage; + info.syntax = "package "; + info.help = "Begins the definition of a package."; + mCommandDict[info.keyword] = info; + + info.keyword = "endpackage"; + info.argmin = 0; + info.argmax = 0; + info.code = cEndPackage; + info.syntax = "endpackage"; + info.help = "Ends the definition of a package."; + mCommandDict[info.keyword] = info; + info.keyword = "define"; info.argmin = 1; info.argmax = 2; @@ -420,6 +436,14 @@ void Interpreter::InterpretLine( const std::string& line, bool &insideComment ) mExecuter->Connect(left,right,left2,right2); break; + case cPackage : + mExecuter->BeginPackage(words[1]); + break; + + case cEndPackage : + mExecuter->EndPackage(); + break; + case cDefine : if (mFileName.size()>0) { @@ -427,7 +451,7 @@ void Interpreter::InterpretLine( const std::string& line, bool &insideComment ) } if (words.size()==2) { - mExecuter->Define(words[1],"user",filename); + mExecuter->Define(words[1],"",filename); } else { @@ -709,7 +733,7 @@ void Interpreter::SplitLine ( const std::string& str, std::vector& // bbtkDebugMessageInc("Interpreter",9,"Interpreter::SwitchToFile( \"" < script_paths; std::string libname; // full path library name std::string pkgname; // e.g. .bbs @@ -726,7 +750,7 @@ void Interpreter::SplitLine ( const std::string& str, std::vector& bool foundFile = false; std::string::size_type slash_position = name.find_last_of("/\\"); - if (slash_position != std::string::npos) + if (false) //slash_position != std::string::npos) { // ------------------------------------- check user supplied location fullnameGiven = true; libname = Utilities::ExpandLibName(name, verbose); @@ -768,7 +792,7 @@ void Interpreter::SplitLine ( const std::string& str, std::vector& path = currentDir; } - libname = Utilities::MakePkgnameFromPath(path, pkgname); + libname = Utilities::MakePkgnameFromPath(path, name); //pkgname); // Check if library exists if ( ! Utilities::FileExists(libname) ) { diff --git a/kernel/src/bbtkInterpreter.h b/kernel/src/bbtkInterpreter.h index bc60dd3..52ec574 100644 --- a/kernel/src/bbtkInterpreter.h +++ b/kernel/src/bbtkInterpreter.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkInterpreter.h,v $ $ Language: C++ - Date: $Date: 2008/01/28 10:50:54 $ - Version: $Revision: 1.3 $ + Date: $Date: 2008/01/28 15:08:53 $ + 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 @@ -48,6 +48,8 @@ namespace bbtk cDelete, cConnect, cExec, + cPackage, + cEndPackage, cDefine, cEndDefine, cInput, diff --git a/kernel/src/bbtkUtilities.h b/kernel/src/bbtkUtilities.h index 2e771a9..0a184b7 100644 --- a/kernel/src/bbtkUtilities.h +++ b/kernel/src/bbtkUtilities.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkUtilities.h,v $ Language: C++ - Date: $Date: 2008/01/28 09:12:49 $ - Version: $Revision: 1.4 $ + Date: $Date: 2008/01/28 15:08:53 $ + 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 @@ -286,7 +286,14 @@ namespace bbtk if (c != '/' && c != '\\') libname += ConfigurationFile::GetInstance().Get_file_separator (); libname += pkgname; - libname += ".bbs"; + int l = libname.size(); + if (l>4) + { + if (libname.substr(l-4, 4) != ".bbs") + { + libname = libname + ".bbs"; + } +} return libname; } diff --git a/kernel/src/bbtkVirtualExec.h b/kernel/src/bbtkVirtualExec.h index 2edbd0e..85e0798 100644 --- a/kernel/src/bbtkVirtualExec.h +++ b/kernel/src/bbtkVirtualExec.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkVirtualExec.h,v $ $ Language: C++ - Date: $Date: 2008/01/22 16:55:04 $ - Version: $Revision: 1.2 $ + Date: $Date: 2008/01/28 15:08:53 $ + Version: $Revision: 1.3 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -70,6 +70,12 @@ namespace bbtk /// Sets the mode of dialog of the executer for Root inputs virtual void SetDialogMode(DialogModeType t) = 0; + /// Starts a package block + virtual void BeginPackage (const std::string &name ) = 0; + + /// Ends a package block + virtual void EndPackage () = 0; + /// Starts the definition of a new ComplexBlackBox in package pack /// scriptfilename is the file from which the def is read virtual void Define (const std::string &name, diff --git a/packages/wx/bbs/boxes/bbDoubleSlider.bbs b/packages/wx/bbs/boxes/bbDoubleSlider.bbs index d532e75..7fe08c6 100644 --- a/packages/wx/bbs/boxes/bbDoubleSlider.bbs +++ b/packages/wx/bbs/boxes/bbDoubleSlider.bbs @@ -1,8 +1,13 @@ define DoubleSlider description "test object" author "laurent.guigues at creatis.insa-lyon.fr" - new Slider s1 - new Slider s2 - new Split s -# connect .. +new Slider slider1 +new Slider slider2 +new Split main + +connect slider1.Widget main.Widget1 +connect slider2.Widget main.Widget2 + +exec main +output Widget main.Widget "Widget" endefine diff --git a/packages/wx/doc/bbdoc/CMakeLists.txt b/packages/wx/doc/bbdoc/CMakeLists.txt new file mode 100644 index 0000000..16518fb --- /dev/null +++ b/packages/wx/doc/bbdoc/CMakeLists.txt @@ -0,0 +1,2 @@ +INCLUDE(${BBTK_DIR}/BBTKCreatePackageBBdoc.cmake) +BBTK_CREATE_PACKAGE_BBDOC(${BBTK_PACKAGE_NAME}) -- 2.45.1