320d5cdf26
- aggiornamenti per cambio nome include di base - aggiustamento su Save.
178 lines
4.9 KiB
C++
178 lines
4.9 KiB
C++
//----------------------------------------------------------------------------
|
|
// EgalTech 2013-2014
|
|
//----------------------------------------------------------------------------
|
|
// File : SelectionDlg.cpp Data : 08.10.14 Versione : 1.5j1
|
|
// Contenuto : Implementazione della classe gestione dialogo selezione.
|
|
//
|
|
//
|
|
//
|
|
// Modifiche : 08.10.14 DS Creazione modulo.
|
|
//
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
//--------------------------- Include ----------------------------------------
|
|
#include "stdafx.h"
|
|
#include "TestEGrUtils.h"
|
|
#include "SelectDlg.h"
|
|
#include "resource.h"
|
|
#include "/EgtDev/Include/EgkGdbConst.h"
|
|
#include "/EgtDev/Include/EgkGeomDB.h"
|
|
#include "/EgtDev/Include/EGrScene.h"
|
|
#include "/EgtDev/Include/EgnStringUtils.h"
|
|
#include "/EgtDev/Include/EgtStringConverter.h"
|
|
#include "/EgtDev/Include/EgtNumCollection.h"
|
|
|
|
using namespace std ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
//----------------------------------------------------------------------------
|
|
CSelectDlg::CSelectDlg( IEGrScene* pScene) : CDialog( IDD_SELECT)
|
|
{
|
|
m_pScene = pScene ;
|
|
m_nCurrId = GDB_ID_NULL ;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
BOOL
|
|
CSelectDlg::OnInitDialog( void)
|
|
{
|
|
CDialog::OnInitDialog() ;
|
|
|
|
if ( m_pScene == nullptr) {
|
|
EndDialog( IDCANCEL) ;
|
|
return true ;
|
|
}
|
|
IGeomDB* pGDB = m_pScene->GetGeomDB() ;
|
|
if ( pGDB == nullptr) {
|
|
EndDialog( IDCANCEL) ;
|
|
return true ;
|
|
}
|
|
CListBox* pLB = (CListBox*) GetDlgItem( IDC_LIST) ;
|
|
if ( pLB == nullptr) {
|
|
EndDialog( IDCANCEL) ;
|
|
return true ;
|
|
}
|
|
|
|
// inserisco gli oggetti selezionati
|
|
INTVECTOR nIds ;
|
|
string sOut ;
|
|
m_pScene->GetSelectedObjs( nIds) ;
|
|
for ( size_t i = 0 ; i < nIds.size() ; ++ i) {
|
|
IGeoObj* pGeo = pGDB->GetGeoObj( nIds[i]) ;
|
|
if ( pGeo == nullptr)
|
|
continue ;
|
|
bool bSel = pGDB->IsSelectedObj( nIds[i]) ;
|
|
sOut = pGeo->GetTitle() + ( bSel ? "*" : "") + " (" + ToString( nIds[i]) + ")" ;
|
|
int nPos = pLB->AddString( stringtoW( sOut)) ;
|
|
if ( nPos != LB_ERR)
|
|
pLB->SetItemData( nPos, nIds[i]) ;
|
|
}
|
|
|
|
// imposto la selezione sul primo oggetto
|
|
pLB->SetCurSel( 0) ;
|
|
OnLBSelChange() ;
|
|
|
|
return TRUE ;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void
|
|
CSelectDlg::OnOK( void)
|
|
{
|
|
// imposto chiusura del dialogo
|
|
EndDialog( IDOK) ;
|
|
// smarco l'oggetto corrente
|
|
IGeomDB* pGDB = m_pScene->GetGeomDB() ;
|
|
if ( pGDB != nullptr) {
|
|
pGDB->ResetMark( m_nCurrId) ;
|
|
m_pScene->Draw() ;
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void
|
|
CSelectDlg::OnCancel( void)
|
|
{
|
|
// imposto chiusura del dialogo
|
|
EndDialog( IDCANCEL) ;
|
|
// smarco l'oggetto corrente
|
|
IGeomDB* pGDB = m_pScene->GetGeomDB() ;
|
|
if ( pGDB != nullptr) {
|
|
pGDB->ResetMark( m_nCurrId) ;
|
|
m_pScene->Draw() ;
|
|
}
|
|
// reset dell'oggetto corrente
|
|
m_nCurrId = GDB_ID_NULL ;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
BEGIN_MESSAGE_MAP( CSelectDlg, CDialog)
|
|
ON_LBN_SELCHANGE( IDC_LIST, OnLBSelChange)
|
|
ON_LBN_DBLCLK( IDC_LIST, OnLBDblClk)
|
|
END_MESSAGE_MAP()
|
|
|
|
//----------------------------------------------------------------------------
|
|
void
|
|
CSelectDlg::OnLBSelChange( void)
|
|
{
|
|
IGeomDB* pGDB = m_pScene->GetGeomDB() ;
|
|
if ( pGDB == nullptr)
|
|
return ;
|
|
CListBox* pLB = (CListBox*) GetDlgItem( IDC_LIST) ;
|
|
if ( pLB == nullptr)
|
|
return ;
|
|
|
|
// smarco l'oggetto corrente
|
|
pGDB->ResetMark( m_nCurrId) ;
|
|
|
|
// recupero l'Id del nuovo oggetto selezionato
|
|
int nSel = pLB->GetCurSel() ;
|
|
if ( nSel == LB_ERR) {
|
|
m_nCurrId = GDB_ID_NULL ;
|
|
m_pScene->Draw() ;
|
|
return ;
|
|
}
|
|
m_nCurrId = int( pLB->GetItemData( nSel)) ;
|
|
|
|
// evidenzio il nuovo oggetto selezionato
|
|
pGDB->SetMark( m_nCurrId) ;
|
|
m_pScene->Draw() ;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void
|
|
CSelectDlg::OnLBDblClk( void)
|
|
{
|
|
// imposto chiusura del dialogo
|
|
EndDialog( IDOK) ;
|
|
|
|
IGeomDB* pGDB = m_pScene->GetGeomDB() ;
|
|
if ( pGDB == nullptr) {
|
|
m_nCurrId = GDB_ID_NULL ;
|
|
return ;
|
|
}
|
|
CListBox* pLB = (CListBox*) GetDlgItem( IDC_LIST) ;
|
|
if ( pLB == nullptr) {
|
|
m_nCurrId = GDB_ID_NULL ;
|
|
return ;
|
|
}
|
|
|
|
// smarco l'oggetto corrente
|
|
pGDB->ResetMark( m_nCurrId) ;
|
|
m_pScene->Draw() ;
|
|
|
|
// recupero l'Id del nuovo oggetto selezionato
|
|
int nSel = pLB->GetCurSel() ;
|
|
if ( nSel == LB_ERR)
|
|
m_nCurrId = GDB_ID_NULL ;
|
|
else
|
|
m_nCurrId = int( pLB->GetItemData( nSel)) ;
|
|
}
|