EgtExecutor 2.4a7 :
- correzione a ExeDuploResetLocked per Duplo swappato - in Duplo aggiunto richiamo ExeSetModified quando si modifica.
This commit is contained in:
+38
-5
@@ -708,6 +708,8 @@ ExeDuploNew( int nSouId)
|
||||
// Aggiorno info del duplicato
|
||||
pGeomDB->SetInfo( nNewId, GDB_SI_DUPSOU, nSouId) ;
|
||||
pGeomDB->RemoveInfo( nNewId, GDB_SI_DUPLIST) ;
|
||||
// Dichiaro progetto modificato
|
||||
ExeSetModified() ;
|
||||
|
||||
return nNewId ;
|
||||
}
|
||||
@@ -765,7 +767,11 @@ ExeDuploSetModified( int nSouId)
|
||||
if ( ! pGeomDB->ExistsInfo( nSouId, GDB_SI_DUPLIST))
|
||||
return true ;
|
||||
// Imposto il flag di modificato
|
||||
return pGeomDB->SetInfo( nSouId, GDB_SI_DUPMODIF, true) ;
|
||||
if ( ! pGeomDB->SetInfo( nSouId, GDB_SI_DUPMODIF, true))
|
||||
return false ;
|
||||
// Dichiaro progetto modificato
|
||||
ExeSetModified() ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -793,7 +799,11 @@ ExeDuploSetLocked( int nDupId)
|
||||
if ( ! ExeIsDuplo( nDupId))
|
||||
return false ;
|
||||
// Imposto il flag di bloccato
|
||||
return pGeomDB->SetInfo( nDupId, GDB_SI_DUPLOCKED, true) ;
|
||||
if ( ! pGeomDB->SetInfo( nDupId, GDB_SI_DUPLOCKED, true))
|
||||
return false ;
|
||||
// Dichiaro progetto modificato
|
||||
ExeSetModified() ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -802,10 +812,16 @@ ExeDuploResetLocked( int nDupId)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// Verifico sia nel gruppo base dei duplicati
|
||||
// Verifico sia nel gruppo base dei duplicati o scambiato con un gruppo da esso
|
||||
int nDuploBaseId = GetDuploBase( pGeomDB) ;
|
||||
if ( nDuploBaseId == GDB_ID_NULL || pGeomDB->GetParentId( nDupId) != nDuploBaseId)
|
||||
if ( nDuploBaseId == GDB_ID_NULL)
|
||||
return false ;
|
||||
int nDBaseId = GDB_ID_NULL ;
|
||||
if ( pGeomDB->GetParentId( nDupId) != nDuploBaseId) {
|
||||
if ( ! pGeomDB->GetInfo( nDupId, GDB_SI_BASE, nDBaseId) ||
|
||||
pGeomDB->GetParentId( nDBaseId) != nDuploBaseId)
|
||||
return false ;
|
||||
}
|
||||
// Verifico abbia un sorgente
|
||||
int nOrigId ;
|
||||
if ( ! pGeomDB->GetInfo( nDupId, GDB_SI_DUPSOU, nOrigId) || pGeomDB->GetGdbType( nOrigId) != GDB_TY_GROUP)
|
||||
@@ -822,9 +838,17 @@ ExeDuploResetLocked( int nDupId)
|
||||
if ( ! pGeomDB->GetInfo( nDupId, GDB_SI_DUPTOUPDATE, bToUpdate))
|
||||
bToUpdate = false ;
|
||||
pGeomDB->RemoveInfo( nDupId, GDB_SI_DUPTOUPDATE) ;
|
||||
if ( ! bToUpdate)
|
||||
if ( ! bToUpdate) {
|
||||
// Dichiaro progetto modificato
|
||||
ExeSetModified() ;
|
||||
return true ;
|
||||
}
|
||||
// Eseguo aggiornamento
|
||||
int nDStat = GDB_ST_ON ;
|
||||
if ( nDBaseId != GDB_ID_NULL) {
|
||||
pGeomDB->GetStatus( nDupId, nDStat) ;
|
||||
pGeomDB->GroupSwap( nDupId, nDBaseId, true, true) ;
|
||||
}
|
||||
pGeomDB->Erase( nDupId) ;
|
||||
int nNewId = pGeomDB->Copy( nOrigId, nDupId, nDuploBaseId) ;
|
||||
if ( nNewId == GDB_ID_NULL)
|
||||
@@ -836,6 +860,13 @@ ExeDuploResetLocked( int nDupId)
|
||||
pGeomDB->SetInfo( nNewId, GDB_SI_DUPSOU, nOrigId) ;
|
||||
pGeomDB->RemoveInfo( nNewId, GDB_SI_DUPLIST) ;
|
||||
pGeomDB->RemoveInfo( nNewId, GDB_SI_DUPMODIF) ;
|
||||
// Se necessario rieseguo swap al contrario
|
||||
if ( nDBaseId != GDB_ID_NULL) {
|
||||
pGeomDB->SetStatus( nNewId, nDStat) ;
|
||||
pGeomDB->GroupSwap( nNewId, nDBaseId, true, true) ;
|
||||
}
|
||||
// Dichiaro progetto modificato
|
||||
ExeSetModified() ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -908,6 +939,8 @@ ExeDuploUpdate( int nSouId)
|
||||
}
|
||||
// reset flag di modificato
|
||||
pGeomDB->RemoveInfo( nSouId, GDB_SI_DUPMODIF) ;
|
||||
// Dichiaro progetto modificato
|
||||
ExeSetModified() ;
|
||||
return bAllOk ;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user