//--------------------------------------------------------- CWKSP_Data_Item::~CWKSP_Data_Item(void) { for(int i=m_Views.GetCount()-1; i>=0; i--) { ((CVIEW_Base *)m_Views[i])->Do_Destroy(); } //----------------------------------------------------- if( m_pObject ) { CSG_Data_Object *pObject = m_pObject; m_pObject = NULL; MSG_General_Add(wxString::Format(wxT("%s: %s..."), _TL("Close"), pObject->Get_Name()), true, true); SG_Get_Data_Manager().Delete(pObject); MSG_General_Add(_TL("okay"), false, false, SG_UI_MSG_STYLE_SUCCESS); } }
//--------------------------------------------------------- bool CWKSP_Module_Manager::Open(const wxChar *File_Name) { CWKSP_Module_Library *pLibrary; //----------------------------------------------------- if( SG_File_Cmp_Extension(File_Name, wxT("mlb")) || SG_File_Cmp_Extension(File_Name, wxT("dll")) || SG_File_Cmp_Extension(File_Name, wxT("so" )) ) { MSG_General_Add(wxString::Format(wxT("%s: %s..."), LNG("[MSG] Load library"), File_Name), true, true); //------------------------------------------------- for(int i=0; i<Get_Count(); i++) { if( SG_STR_CMP(File_Name, Get_Library(i)->Get_File_Name()) == 0 ) { MSG_Error_Add(wxString::Format(wxT("%s\n%s"), File_Name, LNG("[ERR] Library has already been loaded")), true); MSG_General_Add(LNG("[MSG] has already been loaded"), false); return( false ); } } //------------------------------------------------- pLibrary = new CWKSP_Module_Library(File_Name); if( pLibrary->is_Valid() ) { Add_Item(pLibrary); MSG_General_Add(LNG("[MSG] okay"), false, false, SG_UI_MSG_STYLE_SUCCESS); return( true ); } delete(pLibrary); MSG_General_Add(LNG("[MSG] failed"), false, false, SG_UI_MSG_STYLE_FAILURE); } return( false ); }
//--------------------------------------------------------- bool CWKSP_Module_Manager::On_Command(int Cmd_ID) { switch( Cmd_ID ) { default: return( CWKSP_Base_Manager::On_Command(Cmd_ID) ); case ID_CMD_MODULES_OPEN: Open(); break; case ID_CMD_MODULES_SEARCH: { CWKSP_Base_Item *pItem = g_pModule_Ctrl->Search_Item(_TL("Run Tool"), WKSP_ITEM_Module); if( pItem && pItem->GetId().IsOk() && pItem->Get_Type() == WKSP_ITEM_Module ) { ((CWKSP_Module *)pItem)->Execute(true); } } break; case ID_CMD_MODULES_SAVE_DOCS: { wxString Path; if( DLG_Directory(Path, _TL("Create Tool Description Files")) ) { MSG_General_Add(wxString::Format(SG_T("%s..."), _TL("Create Tool Description Files")), true, true); SG_Get_Module_Library_Manager().Get_Summary(&Path); MSG_General_Add(_TL("okay"), false, false, SG_UI_MSG_STYLE_SUCCESS); } } break; } return( true ); }
//--------------------------------------------------------- bool CData_Source_PgSQL::Source_Open(CData_Source_PgSQL_Data *pData, bool bDialog) { static wxString Username = "******", Password = "******"; if( bDialog ) { if( !DLG_Login(Username, Password) ) { return( false ); } pData->Set_Username(Username); pData->Set_Password(Password); } //----------------------------------------------------- MSG_General_Add(wxString::Format("%s: %s...", _TL("Connect to Database"), pData->Get_Server().c_str()), true, true); RUN_MODULE(DB_PGSQL_Get_Connection, false, // CGet_Connection SET_PARAMETER("PG_HOST", pData->Get_Host ()) && SET_PARAMETER("PG_PORT", pData->Get_Port ()) && SET_PARAMETER("PG_NAME", pData->Get_DBName ()) && SET_PARAMETER("PG_USER", pData->Get_Username()) && SET_PARAMETER("PG_PWD" , pData->Get_Password()) ); if( bResult ) { MSG_General_Add(_TL("okay"), false, false, SG_UI_MSG_STYLE_SUCCESS); return( true ); } MSG_General_Add(_TL("failed"), false, false, SG_UI_MSG_STYLE_FAILURE); return( false ); }
//--------------------------------------------------------- void CWKSP_Module_Manager::_Make_HTML_Docs(void) { CSG_Parameters Options(NULL, LNG("Create HTML Documentation"), LNG("")); Options.Add_FilePath(NULL, "DIR", LNG("Choose Documentation Folder"), LNG(""), NULL, NULL, true, true); if( !DLG_Parameters(&Options) ) { return; } //----------------------------------------------------- bool bDirectory; CSG_File Stream_Module, Stream_Lib, Stream_Libs, Stream_List; wxString LibName, Directory, Main, s; wxFileName FileName; MSG_General_Add(wxString::Format(wxT("%s..."), LNG("Creating module documentation files")), true, true); bDirectory = wxDirExists(Options("DIR")->asString()); Directory = bDirectory ? Options("DIR")->asString() : SG_File_Get_Path(g_pSAGA->Get_App_Path()).c_str(); //----------------------------------------------------- FileName.AssignDir (Directory); FileName.SetExt (wxT("html")); FileName.SetName (wxT("index")); Stream_Libs.Open(FileName.GetFullPath().c_str(), SG_FILE_W, false); Stream_Libs.Printf(SG_T("<html><head><title>SAGA - System for Automated Geoscientific Analyses</title></head><body>")); Stream_Libs.Printf(SG_T("<h1><a href=\"http://www.saga-gis.org\">SAGA - System for Automated Geoscientific Analyses</a></h1>")); Stream_Libs.Printf(SG_T("<h2>%s</h2>\n<ul>\n"), LNG("Module Library Descriptions")); Main = FileName.GetFullPath(); //----------------------------------------------------- for(int i=0; i<Get_Count() && PROGRESSBAR_Set_Position(i, Get_Count()); i++) { LibName = SG_File_Get_Name(Get_Library(i)->Get_File_Name(), false).c_str(); FileName.AssignDir (bDirectory ? Directory.c_str() : SG_File_Get_Path(Get_Library(i)->Get_File_Name()).c_str()); FileName.AppendDir (LibName); FileName.SetExt (wxT("html")); if( wxDirExists(FileName.GetPath()) || wxMkdir(FileName.GetPath()) ) { //--------------------------------------------- // create a frame FileName.SetName(wxT("index")); if( Stream_Lib.Open(FileName.GetFullPath().c_str(), SG_FILE_W, false) ) { if( Stream_Libs.is_Open() ) { s = Get_FilePath_Relative(Directory.c_str(), FileName.GetFullPath().c_str()).c_str(); if( s[0] == '\\' ) s = s.AfterFirst('\\'); if(s[0]=='/') s = s.AfterFirst('/'); Stream_Libs.Printf(wxT("<li><a href=\"%s\">%s</a></li>\n"), s.c_str(), Get_Library(i)->Get_Name().c_str()); } Stream_Lib.Printf(SG_T("<html><head><title>SAGA - System for Automated Geoscientific Analyses</title></head>")); Stream_Lib.Printf(SG_T("<frameset cols=\"200,*\" frameborder=\"0\" framespacing=\"0\" border=\"0\">")); Stream_Lib.Printf(SG_T(" <frame frameborder=\"0\" noresize src=\"modules.html\" name=\"MODULES\">")); Stream_Lib.Printf(SG_T(" <frame frameborder=\"0\" noresize src=\"%s.html\" name=\"CONTENT\">") , LibName.c_str()); Stream_Lib.Printf(SG_T("</frameset></html>")); } //--------------------------------------------- // write the modules if( bDirectory ) s = wxT("./../index"); else s = Get_FilePath_Relative(Main.c_str(), FileName.GetFullPath().c_str()).c_str(); if( s[0] == '\\' ) s = s.AfterFirst('\\'); if(s[0]=='/') s = s.AfterFirst('/'); FileName.SetName(wxT("modules")); Stream_List.Open(FileName.GetFullPath().c_str(), SG_FILE_W, false); Stream_List.Printf(SG_T("<body bgcolor=\"#CCCCCC\">")); Stream_List.Printf(SG_T("<b><a target=\"_top\" href=\"http://www.saga-gis.org\">SAGA</a></b><hr>")); Stream_List.Printf(SG_T("<b><a target=\"_top\" href=\"%s.html\">%s</a></b><hr>"), s.c_str(), LNG("Library Overview")); Stream_List.Printf(SG_T("<b><a target=\"CONTENT\" href=\"%s.html\">%s</a></b><hr><ul>"), LibName.c_str(), Get_Library(i)->Get_Name().c_str()); FileName.SetName(LibName); if( Stream_Lib.Open(FileName.GetFullPath().c_str(), SG_FILE_W, false) ) { Stream_Lib.Printf(wxT("%s<hr><ul>"), Get_Library(i)->Get_Description().c_str()); for(int j=0; j<Get_Library(i)->Get_Count(); j++) { FileName.SetName(wxString::Format(wxT("%s_%02d"), LibName.c_str(), Get_Library(i)->Get_Module(j)->Get_Index())); if( Stream_Module.Open(FileName.GetFullPath().c_str(), SG_FILE_W, false) ) { Stream_Module.Printf(wxT("%s"), Get_Library(i)->Get_Module(j)->Get_Description().c_str()); Stream_Lib .Printf(wxT("<li><a target=\"CONTENT\" href=\"%s\">%s</a></li>"), FileName.GetFullName().c_str(), Get_Library(i)->Get_Module(j)->Get_Name().c_str()); Stream_List.Printf(wxT("<li><a target=\"CONTENT\" href=\"%s\">%s</a></li>"), FileName.GetFullName().c_str(), Get_Library(i)->Get_Module(j)->Get_Name().c_str()); } } } } } //----------------------------------------------------- if( Stream_Libs.is_Open() ) { Stream_Libs.Printf(wxT("</ul>")); } PROCESS_Set_Okay(true); MSG_General_Add(LNG("okay"), false, false, SG_UI_MSG_STYLE_SUCCESS); }
//--------------------------------------------------------- int Callback(TSG_UI_Callback_ID ID, CSG_UI_Parameter &Param_1, CSG_UI_Parameter &Param_2) { int Result, *iArray; Result = 1; //----------------------------------------------------- switch( ID ) { default: Result = 0; break; /////////////////////////////////////////////////////// // // // // // // /////////////////////////////////////////////////////// //----------------------------------------------------- case CALLBACK_PROCESS_GET_OKAY: Result = PROCESS_Get_Okay(Param_1.True); break; //----------------------------------------------------- case CALLBACK_PROCESS_SET_OKAY: Result = PROCESS_Set_Okay(Param_1.True); break; //----------------------------------------------------- case CALLBACK_PROCESS_SET_PROGRESS: Result = PROGRESSBAR_Set_Position(Param_1.Number, Param_2.Number); break; //----------------------------------------------------- case CALLBACK_PROCESS_SET_READY: STATUSBAR_Set_Text(_TL("ready")); Result = PROGRESSBAR_Set_Position(0); break; //----------------------------------------------------- case CALLBACK_PROCESS_SET_TEXT: STATUSBAR_Set_Text(Param_1.String.c_str()); break; /////////////////////////////////////////////////////// // // // // // // /////////////////////////////////////////////////////// //----------------------------------------------------- case CALLBACK_STOP_EXECUTION: if( g_pModule && g_pModule->is_Executing() ) { Result = g_pModule->Execute(Param_1.True) ? 1 : 0; } else if( g_pModule && g_pModule->is_Interactive() ) { Result = g_pModule->Execute(Param_1.True) ? 1 : 0; } break; /////////////////////////////////////////////////////// // // // // // // /////////////////////////////////////////////////////// //----------------------------------------------------- case CALLBACK_MESSAGE_ADD: iArray = (int *)Param_2.Pointer; MSG_General_Add (Param_1.String.c_str(), iArray[0] != 0, iArray[0] != 0, (TSG_UI_MSG_STYLE)iArray[1]); break; //----------------------------------------------------- case CALLBACK_MESSAGE_ADD_ERROR: MSG_Error_Add (Param_1.String.c_str(), true); break; //----------------------------------------------------- case CALLBACK_MESSAGE_ADD_EXECUTION: iArray = (int *)Param_2.Pointer; MSG_Execution_Add (Param_1.String.c_str(), iArray[0] != 0, iArray[0] != 0, (TSG_UI_MSG_STYLE)iArray[1]); break; /////////////////////////////////////////////////////// // // // // // // /////////////////////////////////////////////////////// //----------------------------------------------------- case CALLBACK_DLG_MESSAGE: DLG_Message_Show(Param_1.String.c_str(), Param_2.String.c_str()); break; //----------------------------------------------------- case CALLBACK_DLG_CONTINUE: Result = DLG_Message_Confirm(Param_1.String.c_str(), Param_2.String.c_str()); break; //----------------------------------------------------- case CALLBACK_DLG_ERROR: Result = DLG_Message_Show_Error(Param_1.String.c_str(), Param_2.String.c_str()); break; /////////////////////////////////////////////////////// // // // // // // /////////////////////////////////////////////////////// //----------------------------------------------------- case CALLBACK_DLG_PARAMETERS: Result = DLG_Parameters((CSG_Parameters *)Param_1.Pointer, Param_2.String.c_str()) ? 1 : 0; break; /////////////////////////////////////////////////////// // // // // // // /////////////////////////////////////////////////////// //----------------------------------------------------- case CALLBACK_DATAOBJECT_ADD: Result = g_pData->Add((CSG_Data_Object *)Param_1.Pointer) ? 1 : 0; if( Result && Param_2.True ) { g_pData->Show((CSG_Data_Object *)Param_1.Pointer, false); } break; //----------------------------------------------------- case CALLBACK_DATAOBJECT_UPDATE: Result = g_pData->Update((CSG_Data_Object *)Param_1.Pointer, (CSG_Parameters *)Param_2.Pointer) ? 1 : 0; break; //----------------------------------------------------- case CALLBACK_DATAOBJECT_SHOW: Result = g_pData->Show((CSG_Data_Object *)Param_1.Pointer, (int)Param_2.Number) ? 1 : 0; break; //----------------------------------------------------- case CALLBACK_DATAOBJECT_ASIMAGE: Result = g_pData->asImage((CSG_Data_Object *)Param_1.Pointer, (CSG_Grid *)Param_2.Pointer) ? 1 : 0; break; //----------------------------------------------------- case CALLBACK_DATAOBJECT_COLORS_GET: Result = g_pData->Get_Colors((CSG_Data_Object *)Param_1.Pointer, (CSG_Colors *)Param_2.Pointer) ? 1 : 0; break; //----------------------------------------------------- case CALLBACK_DATAOBJECT_COLORS_SET: Result = g_pData->Set_Colors((CSG_Data_Object *)Param_1.Pointer, (CSG_Colors *)Param_2.Pointer) ? 1 : 0; break; //----------------------------------------------------- case CALLBACK_DATAOBJECT_PARAMS_GET: Result = g_pData->Get_Parameters((CSG_Data_Object *)Param_1.Pointer, (CSG_Parameters *)Param_2.Pointer) ? 1 : 0; break; //----------------------------------------------------- case CALLBACK_DATAOBJECT_PARAMS_SET: Result = g_pData->Set_Parameters((CSG_Data_Object *)Param_1.Pointer, (CSG_Parameters *)Param_2.Pointer) ? 1 : 0; break; //----------------------------------------------------- case CALLBACK_ODBC_UPDATE: Result = g_pData_Source->Update_ODBC_Source(Param_1.String.c_str()) ? 1 : 0; break; /////////////////////////////////////////////////////// // // // // // // /////////////////////////////////////////////////////// //----------------------------------------------------- case CALLBACK_GUI_GET_WINDOW: Param_1.Pointer = MDI_Get_Frame(); break; /////////////////////////////////////////////////////// // // // // // // /////////////////////////////////////////////////////// //----------------------------------------------------- } return( Result ); }
//--------------------------------------------------------- void CData_Source_PgSQL::Table_Drop(const wxTreeItemId &Item) { CData_Source_PgSQL_Data *pData = Item.IsOk() ? (CData_Source_PgSQL_Data *)GetItemData(Item) : NULL; if( pData == NULL ) return; wxString Name = GetItemText(Item); switch( pData->Get_Type() ) { //----------------------------------------------------- case TYPE_GRID: if( DLG_Message_Confirm(wxString::Format("%s [%s]", _TL("Do you really want to delete this raster band"), Name.c_str()), _TL("Raster Band Deletion")) ) { MSG_General_Add(wxString::Format("%s: [%s] %s...", _TL("Deleting raster band"), pData->Get_Server().c_str(), Name.c_str()), true, true); CSG_String Table = pData->Get_Value().BeforeFirst(':'); CSG_String rid = pData->Get_Value().AfterFirst (':'); CSG_String SQL = "DELETE FROM \"" + Table + "\" WHERE " + rid + ";"; RUN_MODULE(DB_PGSQL_Execute_SQL, false, SET_PARAMETER("CONNECTION", pData->Get_Server()) && SET_PARAMETER("SQL" , SQL) ); if( bResult ) { Delete(Item); MSG_General_Add(_TL("okay"), false, false, SG_UI_MSG_STYLE_SUCCESS); } else { MSG_General_Add(_TL("failed"), false, false, SG_UI_MSG_STYLE_FAILURE); } } break; //----------------------------------------------------- default: if( DLG_Message_Confirm(wxString::Format("%s [%s]", _TL("Do you really want to delete the table"), pData->Get_Value().c_str()), _TL("Table Deletion")) ) { MSG_General_Add(wxString::Format("%s: [%s] %s...", _TL("Deleting table"), pData->Get_Server().c_str(), pData->Get_Value().c_str()), true, true); RUN_MODULE(DB_PGSQL_Table_Drop, false, // CTable_Drop SET_PARAMETER("CONNECTION", pData->Get_Server()) && SET_PARAMETER("TABLES" , pData->Get_Value()) ); if( bResult ) { Delete(Item); MSG_General_Add(_TL("okay"), false, false, SG_UI_MSG_STYLE_SUCCESS); } else { MSG_General_Add(_TL("failed"), false, false, SG_UI_MSG_STYLE_FAILURE); } } break; } }
//--------------------------------------------------------- bool CWKSP_Project::_Save(const wxString &FileName, bool bSaveModified, bool bUpdateMenu) { int i, j; wxString ProjectDir, oldFileName(m_File_Name); CSG_MetaData Project, *pNode; CWKSP_Table_Manager *pTables; CWKSP_Shapes_Manager *pShapes; CWKSP_TIN_Manager *pTINs; CWKSP_PointCloud_Manager *pPointClouds; CWKSP_Grid_Manager *pGrids; //----------------------------------------------------- m_File_Name = FileName; if( bSaveModified && !g_pData->Save_Modified() ) { m_File_Name = oldFileName; return( false ); } //----------------------------------------------------- ProjectDir = SG_File_Get_Path(&FileName).w_str(); Project.Set_Name ("SAGA_PROJECT"); Project.Add_Property("VERSION", SAGA_VERSION); //----------------------------------------------------- pNode = Project.Add_Child("DATA"); if( (pTables = g_pData->Get_Tables()) != NULL ) { for(i=0; i<pTables->Get_Count(); i++) { _Save_Data(*pNode, ProjectDir, pTables->Get_Data(i)->Get_Object(), pTables->Get_Data(i)->Get_Parameters() ); } } if( (pTINs = g_pData->Get_TINs()) != NULL ) { for(i=0; i<pTINs->Get_Count(); i++) { _Save_Data(*pNode, ProjectDir, pTINs->Get_Data(i)->Get_Object(), pTINs->Get_Data(i)->Get_Parameters() ); } } if( (pPointClouds = g_pData->Get_PointClouds()) != NULL ) { for(i=0; i<pPointClouds->Get_Count(); i++) { _Save_Data(*pNode, ProjectDir, pPointClouds->Get_Data(i)->Get_Object(), pPointClouds->Get_Data(i)->Get_Parameters() ); } } if( (pShapes = g_pData->Get_Shapes()) != NULL ) { for(j=0; j<pShapes->Get_Count(); j++) { for(i=0; i<pShapes->Get_Shapes_Type(j)->Get_Count(); i++) { _Save_Data(*pNode, ProjectDir, pShapes->Get_Shapes_Type(j)->Get_Data(i)->Get_Object(), pShapes->Get_Shapes_Type(j)->Get_Data(i)->Get_Parameters() ); } } } if( (pGrids = g_pData->Get_Grids()) != NULL ) { for(j=0; j<pGrids->Get_Count(); j++) { for(i=0; i<pGrids->Get_System(j)->Get_Count(); i++) { _Save_Data(*pNode, ProjectDir, ((CWKSP_Data_Item *)pGrids->Get_System(j)->Get_Item(i))->Get_Object(), ((CWKSP_Data_Item *)pGrids->Get_System(j)->Get_Item(i))->Get_Parameters() ); } } } //----------------------------------------------------- if( g_pMaps->Get_Count() > 0 ) { pNode = Project.Add_Child("MAPS"); for(i=0; i<g_pMaps->Get_Count(); i++) { _Save_Map(*pNode, ProjectDir, g_pMaps->Get_Map(i)); } } //----------------------------------------------------- if( Project.Save(&FileName) ) { m_File_Name = FileName; if( bUpdateMenu ) g_pData->Get_Menu_Files()->Recent_Add(SG_DATAOBJECT_TYPE_Undefined, FileName); MSG_General_Add(_TL("Project has been saved."), true, true, SG_UI_MSG_STYLE_SUCCESS); _Set_Project_Name(); PROGRESSBAR_Set_Position(0); return( true ); } m_File_Name.Clear(); if( bUpdateMenu ) g_pData->Get_Menu_Files()->Recent_Del(SG_DATAOBJECT_TYPE_Undefined, FileName); MSG_General_Add(_TL("Could not save project."), true, true, SG_UI_MSG_STYLE_FAILURE); PROGRESSBAR_Set_Position(0); return( false ); }
//--------------------------------------------------------- bool CWKSP_Project::_Load(const wxString &FileName, bool bAdd, bool bUpdateMenu) { if( wxFileExists(FileName) && !bAdd && g_pData->Get_Count() > 0 ) { switch( DLG_Message_YesNoCancel(_TL("Close all data sets"), _TL("Load Project")) ) { case 0: if( !g_pData->Close(true) ) return( false ); break; case 2: return( false ); } } //------------------------------------------------- MSG_General_Add_Line(); MSG_General_Add(wxString::Format("%s: %s", _TL("Load project"), FileName), true, true); //------------------------------------------------- bool bSuccess = false; CSG_MetaData Project, *pNode; if( _Compatibility_Load_Data(FileName) ) { bSuccess = true; } else if( !wxFileExists(FileName) ) { MSG_Error_Add(_TL("file does not exist." ), true, true, SG_UI_MSG_STYLE_FAILURE); } else if( !Project.Load(&FileName) ) { MSG_Error_Add(_TL("could not read project file." ), true, true, SG_UI_MSG_STYLE_FAILURE); } else if( Project.Get_Name().CmpNoCase("SAGA_PROJECT") ) { MSG_Error_Add(_TL("invalid project file." ), true, true, SG_UI_MSG_STYLE_FAILURE); } else if( (pNode = Project.Get_Child("DATA")) == NULL || pNode->Get_Children_Count() <= 0 ) { MSG_Error_Add(_TL("no data entries in project file."), true, true, SG_UI_MSG_STYLE_FAILURE); } else if( !_Load_DBConnections(*pNode) ) { MSG_Error_Add(_TL("could not connect to database." ), true, true, SG_UI_MSG_STYLE_FAILURE); } else { int i; CSG_String Version(Project.Get_Property("VERSION")); bSuccess = true; //------------------------------------------------- g_pData->Get_Menu_Files()->Set_Update(false); for(i=0; i<pNode->Get_Children_Count(); i++) { _Load_Data(*pNode->Get_Child(i), SG_File_Get_Path(&FileName).w_str(), true , Version); } for(i=0; i<pNode->Get_Children_Count(); i++) { _Load_Data(*pNode->Get_Child(i), SG_File_Get_Path(&FileName).w_str(), false, Version); } g_pData->Get_Menu_Files()->Set_Update(true); //------------------------------------------------- g_pSAGA_Frame->Freeze(); if( (pNode = Project.Get_Child("MAPS")) != NULL && pNode->Get_Children_Count() > 0 ) { for(int j=0; j<pNode->Get_Children_Count(); j++) { _Load_Map(*pNode->Get_Child(j), SG_File_Get_Path(&FileName).w_str()); } } switch( g_pData->Get_Parameter("PROJECT_MAP_ARRANGE")->asInt() ) { case 1: g_pSAGA_Frame->Tile(wxHORIZONTAL); break; case 2: g_pSAGA_Frame->Tile(wxVERTICAL ); break; } g_pSAGA_Frame->Thaw(); } //----------------------------------------------------- if( bSuccess ) { if( bUpdateMenu ) { g_pData->Get_Menu_Files()->Recent_Add(SG_DATAOBJECT_TYPE_Undefined, FileName); } MSG_General_Add(_TL("Project has been successfully loaded."), true, true, SG_UI_MSG_STYLE_SUCCESS); m_File_Name = FileName; _Set_Project_Name(); return( true ); } if( bUpdateMenu ) { g_pData->Get_Menu_Files()->Recent_Del(SG_DATAOBJECT_TYPE_Undefined, FileName); } MSG_General_Add(_TL("Could not load project."), true, true, SG_UI_MSG_STYLE_FAILURE); return( false ); }