#include "MainWnd.h" #include "ui_MainWnd.h" #include #include #include // ------------------------------------------------------------------------- bool MainWnd:: _LoadPlugins( ) { // // Clear states // this->m_Plugins.UnloadAll( ); // this->m_BaseClasses.clear( ); // this->m_SegmentationClasses.clear( ); // this->m_SegmentationFilterClasses.clear( ); // this->m_MeshFilterClasses.clear( ); // // Read file and load plugins // std::ifstream in( this->m_PluginsConfigurationFile.c_str( ) ); // if( !in ) // return( false ); // this->m_LastOpenedFile = this->m_PluginsConfigurationFile; // std::string line, actual_section = ""; // std::getline( in, line ); // while( !( in.eof( ) ) ) // { // std::string clean_line = line; // clean_line.erase( // std::remove_if( clean_line.begin( ), clean_line.end( ), isspace ), // clean_line.end( ) // ); // if( clean_line[ 0 ] != '#' ) // { // if( // clean_line != "sectionplugins" && // clean_line != "sectionbase_classes" && // clean_line != "sectionsegmentation_classes" && // clean_line != "sectionsegmentation_filter_classes" && // clean_line != "sectionmesh_filter_classes" // ) // { // if( clean_line != "" ) // { // if( actual_section == "sectionplugins" ) // { // if( !( this->m_Plugins.Load( clean_line ) ) ) // { // QMessageBox::warning( // this, // tr( "Ignoring plugin" ), // tr( clean_line.c_str( ) ) // ); // } // fi // } // else // { // std::string name = // clean_line.substr( clean_line.find_last_of( ":" ) + 1 ); // if( actual_section == "sectionbase_classes" ) // this->m_BaseClasses[ name ] = clean_line; // else if( actual_section == "sectionsegmentation_classes" ) // this->m_SegmentationClasses[ name ] = clean_line; // else if( actual_section == "sectionsegmentation_filter_classes" ) // this->m_SegmentationFilterClasses[ name ] = clean_line; // else if( actual_section == "sectionmesh_filter_classes" ) // this->m_MeshFilterClasses[ name ] = clean_line; // } // fi // } // fi // } // else if( clean_line != "" ) // { // if( clean_line[ 0 ] != '#' ) // actual_section = clean_line; // } // fi // } // fi // std::getline( in, line ); // } // elihw // in.close( ); // // Check classes existence // if( !( this->_CheckClassesInPlugins( this->m_BaseClasses ) ) ) // { // QMessageBox::critical( // this, // tr( "Could not load all base plugins." ), // tr( "Could not load all base plugins... Closing application!" ) // ); // std::exit( 1 ); // } // fi // // Needed object from plugins // this->_AddPluginActions( // this->m_SegmentationClasses, this->m_UI->menuSegmentInputImage, // SLOT( _triggered_actionSegmentImage( ) ) // ); // this->_AddPluginActions( // this->m_SegmentationFilterClasses, this->m_UI->menuFilterSegmentedImage, // SLOT( _triggered_actionFilterSegmentation( ) ) // ); // this->_AddPluginActions( // this->m_MeshFilterClasses, this->m_UI->menuProcessMesh, // SLOT( _triggered_actionProcessMesh( ) ) // ); // // Historic objects } // ------------------------------------------------------------------------- bool MainWnd:: _CheckClassesInPlugins( const TStringMap& classes ) { // bool r = true; // TStringMap::const_iterator cIt = classes.begin( ); // for( ; cIt != classes.end( ); ++cIt ) // { // TPluginObject* o = this->m_Plugins.CreateObject( cIt->second ); // if( o != NULL ) // delete o; // else // r &= false; // } // rof // return( r ); } // ------------------------------------------------------------------------- void MainWnd:: _AddPluginActions( const TStringMap& classes, QMenu* menu, const char* method ) { // TStringMap::const_iterator clIt = classes.begin( ); // for( ; clIt != classes.end( ); ++clIt ) // { // QAction* action = menu->addAction( QString( clIt->first.c_str( ) ) ); // QObject::connect( action, SIGNAL( triggered( ) ), this, method ); // } // rof } // eof - $RCSfile$