From 79713e1a7348283b4480a3b183118652967f897f Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Mon, 10 Mar 2014 11:39:52 +0000 Subject: [PATCH] TestEgr 1.5c2 : - visualizzazione nome e info negli alberi degli oggetti - gestione apertura file all'inizio conseguente a doppio click in shell. --- GeomDBTree.cpp | 7 ++++++- TestEGr.cpp | 9 ++++++++- TestEGr.rc | Bin 21954 -> 21954 bytes TestEGrDlg.cpp | 32 +++++++++++++++++++++++++++++--- TestEGrDlg.h | 4 +++- 5 files changed, 46 insertions(+), 6 deletions(-) diff --git a/GeomDBTree.cpp b/GeomDBTree.cpp index d5647b7..4e411ec 100644 --- a/GeomDBTree.cpp +++ b/GeomDBTree.cpp @@ -90,7 +90,12 @@ CTestEGrDlg::InsertGroupOnTree( int nId, HTREEITEM hParent) if ( nId == GDB_ID_ROOT) hGroup = hParent ; else { - string sGroup = "Group " + ToString( nId) ; + string sGroup ; + string sName ; + if ( m_pGeomDB->GetName( nId, sName)) + sGroup += sName + " (Group " + ToString( nId) +")" ; + else + sGroup = "Group " + ToString( nId) ; hGroup = m_Tree.InsertItem( stringtoW( sGroup), ICO_GROUP, ICO_GROUP, hParent) ; if ( hGroup == nullptr || m_Tree.SetItemData( hGroup, nId) == 0) return false ; diff --git a/TestEGr.cpp b/TestEGr.cpp index eb517c4..dfa0a84 100644 --- a/TestEGr.cpp +++ b/TestEGr.cpp @@ -109,8 +109,15 @@ CTestEGrApp::InitInstance( void) LOG_INFO( &logger, GetEGkVersion()) LOG_INFO( &logger, GetEGrVersion()) + // gestione linea di comando + string sFileToOpen ; + CCommandLineInfo cmdInfo ; + ParseCommandLine( cmdInfo) ; + if ( cmdInfo.m_nShellCommand == CCommandLineInfo::FileOpen) + sFileToOpen = WtoA( cmdInfo.m_strFileName) ; + // Dialog interface - CTestEGrDlg dlg( &logger) ; + CTestEGrDlg dlg( sFileToOpen, &logger) ; m_pMainWnd = &dlg ; dlg.DoModal() ; diff --git a/TestEGr.rc b/TestEGr.rc index ba68d3d73f8854c8c5c5bfae35c1102dc415a8fd..1c35f54a7aff8c0925577044259ac33cdf27df34 100644 GIT binary patch delta 80 zcmX@Kn(@$T#tjCNj7FOcCC!LoadIcon( IDR_MAINFRAME) ; + // eventuale file da caricare all'avvio + m_sFileToOpen = sFileToOpen ; // memorizzo il puntatore al logger m_pLogger = pLogger ; // inizializzazioni varie @@ -223,6 +225,12 @@ CTestEGrDlg::OnInitDialog( void) // preparo il Tree PrepareTree() ; + // eventuale apertura di file all'avvio + if ( ! m_sFileToOpen.empty()) { + if ( ! FileOpen( m_sFileToOpen)) + AfxMessageBox( L"Error loading file (look at Log file)", MB_ICONSTOP|MB_OK) ; + } + return TRUE ; // return TRUE unless you set the focus to a control } @@ -563,10 +571,21 @@ CTestEGrDlg::OnFileOpen( void) if ( dlg.DoModal() != IDOK) return ; - // recupero la path del file e ne salvo il direttorio + // recupero la path del file string sFilePath = WtoA( dlg.GetPathName()) ; if ( sFilePath.empty()) return ; + + // carico il file + if ( ! FileOpen( sFilePath)) + AfxMessageBox( L"Error loading file (look at Log file)", MB_ICONSTOP|MB_OK) ; +} + +//---------------------------------------------------------------------------- +bool +CTestEGrDlg::FileOpen( const std::string& sFilePath) +{ + // divido in nome e direttorio e salvo quest'ultimo string sFileDir ; string sFileName ; SplitLast( sFilePath, "\\", sFileDir, sFileName) ; @@ -584,7 +603,7 @@ CTestEGrDlg::OnFileOpen( void) m_pGeomDB->Init() ; // carico il file if ( ! m_pGeomDB->Load( sFilePath)) - AfxMessageBox( L"Error loadinf file (look at Log file)", MB_ICONSTOP|MB_OK) ; + return false ; // visualizzo con zoom all PerformanceCounter Counter ; Counter.Start() ; @@ -595,6 +614,8 @@ CTestEGrDlg::OnFileOpen( void) ::OutInfo( sOut) ; // aggiorno l'albero delle entità LoadTree() ; + + return true ; } //---------------------------------------------------------------------------- @@ -647,6 +668,11 @@ CTestEGrDlg::OnFileExec( void) SplitLast( sFilePath, "\\", sFileDir, sFileName) ; if ( ! sFileDir.empty()) WritePrivateProfileStringUtf8( "General", "LastTscDir", sFileDir.c_str(), AfxGetApp()->m_pszProfileName) ; + // inserisco il nome del file nel titolo della finestra + SetWindowText( stringtoW( ( sFileName + " - EgalTech TestEGr"))) ; + // emetto info + string sInfo = "Exec File = " + sFilePath ; + LOG_INFO( m_pLogger, sInfo.c_str()) // esecuzione script pSceExec->SetScene( m_View.GetScene()) ; diff --git a/TestEGrDlg.h b/TestEGrDlg.h index 586f273..f0d89f7 100644 --- a/TestEGrDlg.h +++ b/TestEGrDlg.h @@ -24,7 +24,7 @@ class IGeoObj ; class CTestEGrDlg : public CDialog { public : - CTestEGrDlg( ILogger* pLogger = nullptr, CWnd* pParent = nullptr) ; + CTestEGrDlg( const std::string& sFileToOpen, ILogger* pLogger = nullptr, CWnd* pParent = nullptr) ; ~CTestEGrDlg( void) ; void OutInfo( const std::string& sOut, bool bLog = true) ; bool GetSceneInfo( std::string& sInfo) @@ -58,6 +58,7 @@ class CTestEGrDlg : public CDialog bool ReshapeDlgItem( int nID, int nFlag, int nW, int nH) ; bool GetWindowRect( CWnd* pWnd, CRect& rect) ; void OutData( const std::string& sOut, bool bLog = false) ; + bool FileOpen( const std::string& sFilePath) ; bool PrepareTree( void) ; bool LoadTree( void) ; bool InsertGroupOnTree( int nId, HTREEITEM hParent) ; @@ -70,6 +71,7 @@ class CTestEGrDlg : public CDialog IGeomDB* m_pGeomDB ; ILogger* m_pLogger ; TestEgrView m_View ; + std::string m_sFileToOpen ; HICON m_hIcon ; CTreeCtrl m_Tree ; CImageList* m_pImgList ;