EgtExecutor 2.4a5 :
- aggiunte funzioni Exe/Lua DuploSetLocked, DuploResetLocked e DuploGetLocked.
This commit is contained in:
@@ -773,6 +773,77 @@ ExeDuploGetModified( int nSouId, bool& bModif)
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeDuploSetLocked( int nDupId)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// Verifico sia un duplo
|
||||
if ( ! ExeIsDuplo( nDupId))
|
||||
return false ;
|
||||
// Imposto il flag di bloccato
|
||||
return pGeomDB->SetInfo( nDupId, GDB_SI_DUPLOCKED, true) ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeDuploResetLocked( int nDupId)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// Verifico sia nel gruppo base dei duplicati
|
||||
int nDuploBaseId = GetDuploBase( pGeomDB) ;
|
||||
if ( nDuploBaseId == GDB_ID_NULL || pGeomDB->GetParentId( nDupId) != nDuploBaseId)
|
||||
return false ;
|
||||
// Verifico abbia un sorgente
|
||||
int nOrigId ;
|
||||
if ( ! pGeomDB->GetInfo( nDupId, GDB_SI_DUPSOU, nOrigId) || pGeomDB->GetGdbType( nOrigId) != GDB_TY_GROUP)
|
||||
return false ;
|
||||
// Verifico bloccaggio
|
||||
bool bLocked ;
|
||||
if ( ! pGeomDB->GetInfo( nDupId, GDB_SI_DUPLOCKED, bLocked))
|
||||
bLocked = false ;
|
||||
pGeomDB->RemoveInfo( nDupId, GDB_SI_DUPLOCKED) ;
|
||||
if ( ! bLocked)
|
||||
return true ;
|
||||
// Verifico necessità di aggiornamento
|
||||
bool bToUpdate ;
|
||||
if ( ! pGeomDB->GetInfo( nDupId, GDB_SI_DUPTOUPDATE, bToUpdate))
|
||||
bToUpdate = false ;
|
||||
pGeomDB->RemoveInfo( nDupId, GDB_SI_DUPTOUPDATE) ;
|
||||
if ( ! bToUpdate)
|
||||
return true ;
|
||||
// Eseguo aggiornamento
|
||||
pGeomDB->Erase( nDupId) ;
|
||||
int nNewId = pGeomDB->Copy( nOrigId, nDupId, nDuploBaseId) ;
|
||||
if ( nNewId == GDB_ID_NULL)
|
||||
return false ;
|
||||
int nBaseId ;
|
||||
if ( pGeomDB->GetInfo( nOrigId, GDB_SI_BASE, nBaseId) &&
|
||||
pGeomDB->GetGdbType( nBaseId) == GDB_TY_GROUP)
|
||||
*pGeomDB->GetGroupFrame( nNewId) = *pGeomDB->GetGroupFrame( nBaseId) ;
|
||||
pGeomDB->SetInfo( nNewId, GDB_SI_DUPSOU, nOrigId) ;
|
||||
pGeomDB->RemoveInfo( nNewId, GDB_SI_DUPLIST) ;
|
||||
pGeomDB->RemoveInfo( nNewId, GDB_SI_DUPMODIF) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeDuploGetLocked( int nDupId, bool& bLocked)
|
||||
{
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, false)
|
||||
// Verifico sia un duplo
|
||||
if ( ! ExeIsDuplo( nDupId))
|
||||
return false ;
|
||||
// Recupero il flag di bloccato
|
||||
if ( ! pGeomDB->GetInfo( nDupId, GDB_SI_DUPLOCKED, bLocked))
|
||||
bLocked = false ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool
|
||||
ExeDuploUpdate( int nSouId)
|
||||
@@ -804,6 +875,13 @@ ExeDuploUpdate( int nSouId)
|
||||
return false ;
|
||||
// eseguo gli aggiornamenti
|
||||
for ( int nCopyId : vnRef) {
|
||||
// se bloccato, non eseguo aggiornamento
|
||||
bool bLocked ;
|
||||
if ( pGeomDB->GetInfo( nCopyId, GDB_SI_DUPLOCKED, bLocked) && bLocked) {
|
||||
pGeomDB->SetInfo( nCopyId, GDB_SI_DUPTOUPDATE, true) ;
|
||||
continue ;
|
||||
}
|
||||
// aggiorno
|
||||
pGeomDB->Erase( nCopyId) ;
|
||||
int nNewId = pGeomDB->Copy( nSouId, nCopyId, nDuploBaseId) ;
|
||||
if ( nNewId == GDB_ID_NULL) {
|
||||
|
||||
Binary file not shown.
@@ -488,6 +488,55 @@ LuaDuploGetModified( lua_State* L)
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaDuploSetLocked( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nDupId
|
||||
int nDupId ;
|
||||
LuaCheckParam( L, 1, nDupId)
|
||||
LuaClearStack( L) ;
|
||||
// blocco il duplicato (non modificabile)
|
||||
bool bOk = ExeDuploSetLocked( nDupId) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaDuploResetLocked( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nDupId
|
||||
int nDupId ;
|
||||
LuaCheckParam( L, 1, nDupId)
|
||||
LuaClearStack( L) ;
|
||||
// sblocco il duplicato (ritorna copia esatta dell'originale)
|
||||
bool bOk = ExeDuploResetLocked( nDupId) ;
|
||||
// restituisco il risultato
|
||||
LuaSetParam( L, bOk) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaDuploGetLocked( lua_State* L)
|
||||
{
|
||||
// 1 parametro : nDupId
|
||||
int nDupId ;
|
||||
LuaCheckParam( L, 1, nDupId)
|
||||
LuaClearStack( L) ;
|
||||
// recupero lo stato di blocco del duplicato
|
||||
bool bLocked ;
|
||||
bool bOk = ExeDuploGetLocked( nDupId, bLocked) ;
|
||||
// restituisco il risultato
|
||||
if ( bOk)
|
||||
LuaSetParam( L, bLocked) ;
|
||||
else
|
||||
LuaSetParam( L) ;
|
||||
return 1 ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
static int
|
||||
LuaDuploUpdate( lua_State* L)
|
||||
@@ -569,6 +618,9 @@ LuaInstallGdbPartLayer( LuaMgr& luaMgr)
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDuploList", LuaDuploList) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDuploSetModified", LuaDuploSetModified) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDuploGetModified", LuaDuploGetModified) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDuploSetLocked", LuaDuploSetLocked) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDuploResetLocked", LuaDuploResetLocked) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDuploGetLocked", LuaDuploGetLocked) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDuploUpdate", LuaDuploUpdate) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtIsDuplo", LuaIsDuplo) ;
|
||||
bOk = bOk && luaMgr.RegisterFunction( "EgtDuploGetOriginal", LuaDuploGetOriginal) ;
|
||||
|
||||
Reference in New Issue
Block a user