@@ -501,6 +501,26 @@ QgsGrassModuleStandardOptions::QgsGrassModuleStandardOptions (
501
501
n = n.nextSibling ();
502
502
}
503
503
504
+ // Create list of flags
505
+ n = gDocElem .firstChild ();
506
+ while ( !n.isNull () )
507
+ {
508
+ QDomElement e = n.toElement ();
509
+ if ( !e.isNull () )
510
+ {
511
+ QString optionType = e.tagName ();
512
+ std::cout << " optionType = " << optionType.toLocal8Bit ().data () << std::endl;
513
+
514
+ if ( optionType == " flag" )
515
+ {
516
+ QString name = e.attribute (" name" ).trimmed ();
517
+ std::cout << " name = " << name.data () << std::endl;
518
+ mFlagNames .append ( name );
519
+ }
520
+ }
521
+ n = n.nextSibling ();
522
+ }
523
+
504
524
layout->addStretch ();
505
525
}
506
526
@@ -1139,15 +1159,18 @@ void QgsGrassModule::run()
1139
1159
QFileInfo fi ( exe );
1140
1160
if ( !fi.isExecutable () )
1141
1161
{
1162
+ QStringList usedFlagNames;
1163
+
1142
1164
// Set enviroment variables
1143
1165
for ( int i = 0 ; i < arguments.size (); i++ )
1144
1166
{
1145
1167
QString arg = arguments.at (i);
1146
1168
QString env;
1147
1169
if ( arg.at (0 ) == ' -' ) // flag
1148
1170
{
1149
- env = " GIS_FLAG_" + QString (arg.at (0 ).toUpper ())
1171
+ env = " GIS_FLAG_" + QString (arg.at (1 ).toUpper ())
1150
1172
+ " =1" ;
1173
+ usedFlagNames.append (arg.at (1 ));
1151
1174
}
1152
1175
else // option
1153
1176
{
@@ -1158,6 +1181,28 @@ void QgsGrassModule::run()
1158
1181
std::cerr << " set: " << env.ascii () << std::endl;
1159
1182
environment.append (env);
1160
1183
}
1184
+
1185
+ // Set remaining flags
1186
+ QStringList allFlagNames = mOptions ->flagNames ();
1187
+ for ( int i = 0 ; i < allFlagNames.size (); i++ )
1188
+ {
1189
+ bool used = false ;
1190
+ for ( int j = 0 ; j < usedFlagNames.size (); j++ )
1191
+ {
1192
+ if ( usedFlagNames.at (j) == allFlagNames.at (i) )
1193
+ {
1194
+ used = true ;
1195
+ break ;
1196
+ }
1197
+ }
1198
+ if ( used ) continue ;
1199
+ QString env = " GIS_FLAG_"
1200
+ + QString (allFlagNames.at (i).toUpper ())
1201
+ + " =0" ;
1202
+ std::cerr << " set: " << env.ascii () << std::endl;
1203
+ environment.append (env);
1204
+ }
1205
+
1161
1206
arguments.clear ();
1162
1207
arguments.append ( " @ARGS_PARSED@" );
1163
1208
}
0 commit comments