83 Create(Name, Description, Identifier, bGrid_System);
91 Create(pOwner, Name, Description, Identifier, bGrid_System);
106 void CSG_Parameters::_On_Construction(
void)
118 m_pGrid_System = NULL;
132 m_pOwner = Parameters.m_pOwner;
133 m_pTool = Parameters.m_pTool;
134 m_pManager = Parameters.m_pManager;
136 m_Callback = Parameters.m_Callback;
137 m_bCallback = Parameters.m_bCallback;
139 for(
int i=0; i<Parameters.m_nParameters; i++)
141 _Add(Parameters.m_Parameters[i]);
144 if( Parameters.m_pGrid_System )
149 return( m_nParameters == Parameters.m_nParameters );
172 if(
Create(Name, Description, Identifier, bGrid_System) )
189 m_pGrid_System = NULL;
193 m_References.
Clear();
225 m_pManager = pManager;
243 if( !m_pGrid_System )
268 m_pStack->m_pStack = pStack;
270 m_pManager = pManager;
272 if( bRestoreDefaults )
289 m_pManager = m_pStack->m_pManager;
323 m_Identifier = Identifier;
333 return( m_Identifier.
Cmp(Identifier) == 0 );
353 m_Description = Description;
363 CSG_String Reference(
"<b>" + Authors +
" (" + Year +
"):</b> " + Title +
". " + Where);
367 Reference +=
CSG_String::Format(
" <a href=\"%s\">%s</a>.", Link, Link_Text && *Link_Text ? Link_Text : Link);
372 m_References += Reference;
397 m_References.
Clear();
407 for(
int i=0; i<m_nParameters; i++)
436 return( _Add(pParameter) );
456 return( _Add_Value(ParentID, ID, Name, Description,
false, Type, Value, Minimum, bMinimum, Maximum, bMaximum) );
461 return( _Add_Value(ParentID, ID, Name, Description,
true, Type, Value, 0.0,
false, 0.0,
false) );
503 return( _Add_Range(ParentID, ID, Name, Description,
false, Range_Min, Range_Max, Minimum, bMinimum, Maximum, bMaximum) );
508 return( _Add_Range(ParentID, ID, Name, Description,
true, Range_Min, Range_Max, 0.0,
false, 0.0,
false) );
529 return( pParameter );
544 return( pParameter );
554 return( pParameter );
560 return( _Add_String(ParentID, ID, Name, Description,
false, String, bLongText, bPassword) );
565 return( _Add_String(ParentID, ID, Name, Description,
true, String, bLongText,
false) );
583 return( pParameter );
593 return( pParameter );
605 return( pParameter );
613 if( pInit && *pInit )
621 return( pParameter );
633 return( pParameter );
644 CSG_String Choices;
int Choice = 0, nChoices = 0;
646 #define ADD_METHOD(method, name) if( ((int)Methods & (int)method) != 0 ) { if( !Choices.is_Empty() ){ Choices += "|"; } Choices += CSG_String::Format("{%d}", (int)method); Choices += name; if( method == Default ) { Choice = nChoices; } nChoices++; }
648 ADD_METHOD(CSG_Grid_Resampling::NearestNeighbour,
_TL(
"Nearest Neighbour"));
652 ADD_METHOD(CSG_Grid_Resampling::Mean_Nodes ,
_TL(
"Mean Value"));
653 ADD_METHOD(CSG_Grid_Resampling::Mean_Cells ,
_TL(
"Mean Value (cell area weighted)"));
670 return( pParameter );
686 return( pParameter );
698 else if( bSystem_Dependent && m_pGrid_System )
712 return( pParameter );
720 ((
CSG_Parameter_Grid *)pParameter)->Add_Default(Value, Minimum, bMinimum, Maximum, bMaximum);
722 return( pParameter );
732 return( pParameter );
751 return( pParameter );
768 else if( bSystem_Dependent && m_pGrid_System )
782 return( pParameter );
792 return( pParameter );
811 return( pParameter );
846 return( pParameter );
871 return( pParameter );
881 return( pParameter );
889 return( pParameter );
904 return( pParameter );
914 return( pParameter );
924 return( pParameter );
937 return( pParameter );
947 return( pParameter );
955 return( pParameter );
968 return( pParameter );
978 return( pParameter );
986 return( pParameter );
1002 return( pParameter );
1011 CSG_Parameter * CSG_Parameters::_Add_Value(
const CSG_String &ParentID,
const CSG_String &ID,
const CSG_String &Name,
const CSG_String &Description,
bool bInformation,
TSG_Parameter_Type Type,
double Value,
double Minimum,
bool bMinimum,
double Maximum,
bool bMaximum)
1065 return( pParameter );
1069 CSG_Parameter * CSG_Parameters::_Add_Range(
const CSG_String &ParentID,
const CSG_String &ID,
const CSG_String &Name,
const CSG_String &Description,
bool bInformation,
double Default_Min,
double Default_Max,
double Minimum,
bool bMinimum,
double Maximum,
bool bMaximum)
1072 if( Default_Min > Default_Max )
1074 double d = Default_Min;
1075 Default_Min = Default_Max;
1092 return( pParameter );
1107 return( pParameter );
1117 #include <wx/debug.h>
1118 #include <wx/string.h>
1125 wxASSERT_MSG(!ID.
is_Empty() , wxString::Format(
"CSG_Parameter::_Add(): Parameter ID is empty!"));
1126 wxASSERT_MSG(!
Get_Parameter(ID), wxString::Format(
"CSG_Parameter::_Add(): Parameter ID \"%s\" is already in use!", ID.
c_str()));
1179 m_Parameters[m_nParameters++] = pParameter;
1183 return( pParameter );
1195 pSource->m_Constraint
1200 pParameter->
Assign(pSource);
1203 return( pParameter );
1214 if( i >= 0 && i < m_nParameters )
1216 return( m_Parameters[i] );
1232 if( m_Parameters && !ID.
is_Empty() )
1234 for(
int i=0; i<m_nParameters; i++)
1238 return( m_Parameters[i] );
1243 if( ID.
Find(
'.') > 0 )
1285 if( m_Parameters && iParameter >= 0 && iParameter < m_nParameters )
1289 for(m_nParameters--; iParameter<m_nParameters; iParameter++)
1291 m_Parameters[iParameter] = m_Parameters[iParameter + 1];
1305 for(iParameter=0; iParameter<pParent->m_nChildren; iParameter++)
1307 if( pParent->m_Children[iParameter] == pParameter )
1309 pParent->m_nChildren--;
1311 for( ; iParameter<pParent->m_nChildren; iParameter++)
1313 pParent->m_Children[iParameter] = pParent->m_Children[iParameter + 1];
1332 if( m_Parameters && Identifier.
Length() )
1334 for(
int i=0; i<m_nParameters; i++)
1336 if( !m_Parameters[i]->m_Identifier.
Cmp(Identifier) )
1349 if( m_nParameters > 0 )
1351 m_pGrid_System = NULL;
1353 for(
int i=0; i<m_nParameters; i++)
1355 delete(m_Parameters[i]);
1360 m_Parameters = NULL;
1381 m_Callback = Callback;
1383 for(
int i=0; i<m_nParameters; i++)
1400 bool bPrevious = m_bCallback;
1402 m_bCallback = bActive;
1404 for(
int i=0; i<m_nParameters; i++)
1412 return( bPrevious );
1416 bool CSG_Parameters::_On_Parameter_Changed(
CSG_Parameter *pParameter,
int Flags)
1418 if( m_Callback && m_bCallback )
1422 m_Callback(pParameter, Flags);
1523 if( m_Parameters[i]->is_DataObject() )
1527 else if( m_Parameters[i]->is_DataObject_List() )
1547 return( pSource && pSource !=
this &&
Create(*pSource) );
1553 if( !pSource || pSource ==
this )
1561 for(
int i=0; i<pSource->
Get_Count(); i++)
1577 if( !pSource || pSource ==
this )
1585 for(
int i=0; i<pSource->m_nParameters; i++)
1587 _Add(pSource->m_Parameters[i]);
1589 if( m_Parameters[i]->asParameters() )
1595 if( pSource->m_pGrid_System )
1600 return( m_nParameters == pSource->m_nParameters );
1616 if( m_Parameters[i]->Check(bSilent) == false )
1625 if( !bResult && !bSilent )
1634 bool CSG_Parameters::DataObjects_Create(
void)
1636 bool bResult =
true;
1638 for(
int i=0; bResult && i<
Get_Count(); i++)
1691 else if( m_pManager && !m_pManager->
Exists(pObject) )
1712 default : pObject = NULL ;
break;
1757 m_pManager->
Add(pObject);
1785 bool CSG_Parameters::DataObjects_Synchronize(
void)
1812 if( m_pManager && !m_pManager->Delete(pObject) )
1823 m_pManager->Add(pObject);
1839 for(
int j=0; j<P.
asList()->Get_Item_Count(); j++)
1845 m_pManager->Add(pObject);
1863 bool CSG_Parameters::DataObjects_Get_Projection(
CSG_Projection &Projection)
const
1873 p->
asParameters()->DataObjects_Get_Projection(Projection);
1894 return( Projection.
is_Okay() );
1898 bool CSG_Parameters::DataObjects_Set_Projection(
const CSG_Projection &Projection)
1913 p->
asParameters()->DataObjects_Set_Projection(Projection);
1945 bool bResult =
false;
1949 if( m_pGrid_System )
1984 bOptionsOnly ?
_TL(
"Options") :
_TL(
"Parameters")),
2014 else if( P.is_Parameters() )
2016 P.asParameters()->Set_History(MetaData,
true,
false);
2118 return( m_pGrid_System && m_pGrid_System->
asGrid_System() && m_pGrid_System->
Set_Value((
void *)&System) );
2152 if( pParameter && pParameter->
Serialize(*Data(i),
false) )
2205 while( Stream.
Read_Line(sLine) && sLine.
Cmp(
"[PARAMETER_ENTRIES_BEGIN]") );
2207 if( sLine.
Cmp(
"[PARAMETER_ENTRIES_BEGIN]") )
2213 while( Stream.
Read_Line(sLine) && sLine.
Cmp(
"[PARAMETER_ENTRIES_END]") )
2215 if( !sLine.
Cmp(
"[PARAMETER_ENTRY_BEGIN]")
2225 switch( sLine.
asInt() )
2252 while( Stream.
Read_Line(sLine) && sLine.
Cmp(
"[TEXT_ENTRY_END]") )
2260 Stream.
Read(&i,
sizeof(i));
2276 Stream.
Read(&d,
sizeof(d));
2277 Stream.
Read(&r,
sizeof(r));
2288 if( !sLine.
Cmp(
"[ENTRY_DATAOBJECT_CREATE]") )
2294 pParameter->
Set_Value(m_pManager ? m_pManager->Find(sLine) : NULL);
2303 while( Stream.
Read_Line(sLine) && sLine.
Cmp(
"[ENTRY_DATAOBJECTLIST_END]") )
2305 CSG_Data_Object *pObject = m_pManager ? m_pManager->Find(sLine) : NULL;