56 myCustomAction(customAction) {
63 myCustomAction(customAction),
71 myCustomAction(customAction) {
73 if (prefixToRemove.size() > 0) {
74 const auto pos = customAction.find(prefixToRemove);
75 if (pos != std::string::npos) {
96 return myCustomAction;
137 if (function ==
"setupAndStart") {
139 }
else if (function ==
"finish") {
141 }
else if ((function ==
"leftClick") || (function ==
"leftClickData")) {
143 }
else if (function ==
"leftClickControl") {
145 }
else if (function ==
"leftClickShift") {
147 }
else if (function ==
"rightClick") {
149 }
else if (function ==
"rightClickControl") {
151 }
else if (function ==
"rightClickShift") {
153 }
else if (function ==
"leftClickOffset") {
155 }
else if (function ==
"typeKey") {
157 }
else if (function ==
"moveElementHorizontal") {
159 }
else if (function ==
"moveElementVertical") {
161 }
else if (function ==
"moveElement") {
163 }
else if (function ==
"focusOnFrame") {
165 }
else if (function ==
"contextualMenuOperation") {
167 }
else if (function ==
"protectElements") {
169 }
else if (function ==
"waitDeleteWarning") {
171 }
else if (function ==
"modifyAttribute") {
173 }
else if (function ==
"modifyAttributeOverlapped") {
175 }
else if (function ==
"modifyBoolAttribute") {
177 }
else if (function ==
"modifyBoolAttributeOverlapped") {
179 }
else if (function ==
"modifyColorAttribute") {
181 }
else if (function ==
"modifyColorAttributeOverlapped") {
183 }
else if (function ==
"modifyVClassDialog_NoDisallowAll") {
185 }
else if (function ==
"modifyVClassDialogOverlapped_NoDisallowAll") {
187 }
else if (function ==
"modifyVClassDialog_DisallowAll") {
189 }
else if (function ==
"modifyVClassDialogOverlapped_DisallowAll") {
191 }
else if (function ==
"modifyVClassDialog_Cancel") {
193 }
else if (function ==
"modifyVClassDialogOverlapped_Cancel") {
195 }
else if (function ==
"modifyVClassDialog_Reset") {
197 }
else if (function ==
"modifyVClassDialogOverlapped_Reset") {
199 }
else if (function ==
"modifyVTypeDialogAttribute") {
201 }
else if (function ==
"createConnection") {
203 }
else if (function ==
"createCrossing") {
205 }
else if (function ==
"modifyCrossingDefaultValue") {
207 }
else if (function ==
"modifyCrossingDefaultBoolValue") {
209 }
else if (function ==
"crossingClearEdges") {
211 }
else if (function ==
"crossingInvertEdges") {
213 }
else if (function ==
"createConnectionConflict") {
215 }
else if (function ==
"createConnectionYield") {
217 }
else if (function ==
"saveConnectionEdit") {
219 }
else if (function ==
"fixCrossings") {
221 }
else if (function ==
"fixStoppingPlace") {
223 }
else if (function ==
"fixRoute") {
225 }
else if (function ==
"createTLS") {
227 }
else if (function ==
"createTLSOverlapped") {
229 }
else if (function ==
"copyTLS") {
231 }
else if (function ==
"joinTSL") {
233 }
else if (function ==
"disJoinTLS") {
235 }
else if (function ==
"deleteTLS") {
237 }
else if (function ==
"modifyTLSTable") {
239 }
else if (function ==
"resetSingleTLSPhases") {
241 }
else if (function ==
"resetAllTLSPhases") {
243 }
else if (function ==
"pressTLSPhaseButton") {
245 }
else if (function ==
"addDefaultPhase") {
247 }
else if (function ==
"addDuplicatePhase") {
249 }
else if (function ==
"addRedPhase") {
251 }
else if (function ==
"addYellowPhase") {
253 }
else if (function ==
"addGreenPhase") {
255 }
else if (function ==
"addGreenPriorityPhase") {
257 }
else if (function ==
"tlsDeletePhase") {
259 }
else if (function ==
"tlsMoveUp") {
261 }
else if (function ==
"tlsMoveDown") {
263 }
else if (function ==
"tlsCleanStates") {
265 }
else if (function ==
"tlsAddStates") {
267 }
else if (function ==
"tlsGroupSignal") {
269 }
else if (function ==
"tlsUngroupSignal") {
271 }
else if (function ==
"checkParameters") {
273 }
else if (function ==
"checkParametersOverlapped") {
275 }
else if (function ==
"checkDoubleParameters") {
277 }
else if (function ==
"checkDoubleParametersOverlapped") {
279 }
else if (function ==
"changeEditMode") {
281 }
else if (function ==
"changeSupermode") {
283 }
else if (function ==
"changeMode") {
285 }
else if (function ==
"changeElement") {
287 }
else if (function ==
"changePlan") {
289 }
else if (function ==
"computeJunctions") {
291 }
else if (function ==
"computeJunctionsVolatileOptions") {
293 }
else if (function ==
"joinJunctions") {
295 }
else if (function ==
"selectAdditionalChild") {
297 }
else if (function ==
"createRectangledShape") {
299 }
else if (function ==
"createSquaredShape") {
301 }
else if (function ==
"createLineShape") {
303 }
else if (function ==
"createMeanData") {
305 }
else if (function ==
"deleteMeanData") {
307 }
else if (function ==
"copyMeanData") {
309 }
else if (function ==
"saveExistentFile") {
311 }
else if (function ==
"checkUndoRedo") {
313 }
else if (function ==
"delete") {
315 }
else if (function ==
"selection") {
317 }
else if (function ==
"selectNetworkItems") {
319 }
else if (function ==
"lockSelection") {
321 }
else if (function ==
"selectionRectangle") {
323 }
else if (function ==
"createDataSet") {
325 }
else if (function ==
"createDataInterval") {
327 }
else if (function ==
"openAboutDialog") {
329 }
else if (function ==
"loadFile") {
331 }
else if (function ==
"saveNewFile") {
333 }
else if (function ==
"saveFileAs") {
335 }
else if (function ==
"saveUnifiedFileAs") {
337 }
else if (function ==
"reloadFile") {
339 }
else if (function ==
"selectEdgeType") {
341 }
else if (function ==
"createNewEdgeType") {
343 }
else if (function ==
"overwritingAccept") {
345 }
else if (function ==
"overwritingCancel") {
347 }
else if (function ==
"overwritingAbort") {
349 }
else if (function ==
"overwritingApplyToAll") {
351 }
else if (function ==
"undo") {
353 }
else if (function ==
"redo") {
355 }
else if (function ==
"quit") {
357 }
else if (function.size() > 0) {
358 std::cout <<
"Function " + function +
" not implemented in InternalTestStep" << std::endl;
365 FXSelector messageID,
Category category,
366 const std::string& description) :
367 myTestSystem(testSystem),
368 myMessageType(messageType),
369 myMessageID(messageID),
370 myCategory(category),
371 myDescription(description) {
378 Category category, FXEvent* event,
const bool updateView,
379 const std::string& description) :
380 myTestSystem(testSystem),
381 myMessageType(messageType),
382 myCategory(category),
383 myUpdateView(updateView),
384 myDescription(description),
392 const std::string& description) :
393 myTestSystem(testSystem),
396 myDescription(description),
397 myDialogArgument(dialogArgument) {
485 if (rowText.find(
"netedit.setupAndStart") != std::string::npos) {
486 return "setupAndStart";
487 }
else if (rowText.find(
"netedit.finish") != std::string::npos) {
489 }
else if (rowText.compare(0, 8,
"netedit.") != 0) {
493 std::string functionName;
495 std::string rowStr = rowText;
497 if (rowText.empty() || (rowText.front() ==
'(') || (rowText.back() !=
')')) {
498 writeError(
"parseStep", 0,
"function(arguments)");
502 while (rowStr.size() > 0) {
503 if (rowStr.front() ==
'(') {
506 functionName.push_back(rowStr.front());
507 rowStr.erase(rowStr.begin());
511 functionName = functionName.substr(8);
513 if (rowStr.size() < 2) {
514 writeError(
"parseStep", 0,
"function(arguments)");
518 rowStr.erase(rowStr.begin());
531 bool inQuotes =
false;
532 for (
size_t i = 0; i < arguments.length(); ++i) {
533 char c = arguments[i];
534 if (c ==
'\"' || c ==
'\'') {
536 inQuotes = !inQuotes;
537 current.push_back(c);
538 }
else if (c ==
',' && !inQuotes) {
540 if (!current.empty()) {
542 size_t start = current.find_first_not_of(
" \t");
543 size_t end = current.find_last_not_of(
" \t");
544 myArguments.push_back(current.substr(start, end - start + 1));
552 if (!current.empty()) {
553 size_t start = current.find_first_not_of(
" \t");
554 size_t end = current.find_last_not_of(
" \t");
555 myArguments.push_back(current.substr(start, end - start + 1));
559 writeError(
"parseArguments", 0,
"<\"argument\", \"argument\">");
569 std::cout <<
"TestFunctions: Netedit opened successfully" << std::endl;
570 std::cout <<
"Finding reference" << std::endl;
571 std::cout <<
"TestFunctions: 'reference.png' found. Position: " <<
583 std::cout <<
"TestFunctions: Netedit closed successfully" << std::endl;
590 writeError(
"leftClick", 0,
"<reference, position>");
606 writeError(
"leftClickOffset", 0,
"<reference, position, int, int>");
624 writeError(
"moveElementHorizontal", 0,
"<reference, position, radius>");
634 buildMouseDragDrop(position, radius.getRight(), 0, position, radius.getLeft(), 0,
"");
645 writeError(
"moveElementVertical", 0,
"<reference, position, radius>");
655 buildMouseDragDrop(position, radius.getRight(), 0, position, 0, radius.getDown(),
"");
666 writeError(
"moveElement", 0,
"<reference, position, radius>");
676 buildMouseDragDrop(position, radius.getRight(), 0, position, radius.getRight(), radius.getDown(),
"");
678 buildMouseDragDrop(position, radius.getRight(), radius.getDown(), position, radius.getLeft(), radius.getDown(),
"");
679 buildMouseDragDrop(position, radius.getLeft(), radius.getDown(), position, radius.getLeft(), radius.getUp(),
"");
709 writeError(
"contextualMenuOperation", 0,
"<reference, position, contextualMenuOperations>");
717 for (
int i = 0; i < contextualMenu.getMainMenuPosition(); i++) {
723 if (contextualMenu.getSubMenuAPosition() > 0) {
724 for (
int i = 0; i < contextualMenu.getSubMenuAPosition(); i++) {
731 if (contextualMenu.getSubMenuBPosition() > 0) {
732 for (
int i = 0; i < contextualMenu.getSubMenuBPosition(); i++) {
775 writeError(
"modifyAttribute", overlappedTabs,
"<int/attributeEnum, \"string\">");
786 writeError(
"modifyBoolAttribute", overlappedTabs,
"<int/attributeEnum>");
797 writeError(
"modifyColorAttribute", overlappedTabs,
"<int/attributeEnum>");
813 writeError(
"modifyVClassDialog_NoDisallowAll", overlappedTabs,
"<int/attributeEnum, int/attributeEnum>");
829 writeError(
"modifyVClassDialog_DisallowAll", overlappedTabs,
"<int/attributeEnum, int/attributeEnum>");
848 writeError(
"modifyVClassDialog_Cancel", overlappedTabs,
"<int/attributeEnum, int/attributeEnum>");
866 writeError(
"modifyVClassDialog_Reset", overlappedTabs,
"<int/attributeEnum, int/attributeEnum>");
886 writeError(
"modifyVTypeDialogAttribute", 0,
"<str, int/attributeEnum, str>");
893 if (operation ==
"open") {
897 std::cout << value << std::endl;
901 for (
int i = 0; i < tabs; i++) {
908 for (
const char c : value) {
915 if (operation ==
"close") {
928 writeError(
"createConnection", 0,
"<reference, position, position>");
960 writeError(
"modifyCrossingDefaultValue", 0,
"<int, value>");
972 writeError(
"modifyCrossingDefaultBoolValue", 0,
"<int>");
1061 writeError(
"createTLS", overlappedTabs,
"<>");
1120 writeError(
"modifyTLSTable", 0,
"<row, int/attributeEnum, \"string\">");
1130 std::cout << text << std::endl;
1138 writeError(
"resetSingleTLSPhases", 0,
"<bool>");
1152 writeError(
"resetAllTLSPhases", 0,
"<bool>");
1166 writeError(
"pressTLSPhaseButton", 0,
"<int/attributeEnum>");
1176 writeError(
"addPhase" + type, 0,
"<int/attributeEnum>");
1182 if (type ==
"default") {
1184 }
else if (type ==
"duplicate") {
1186 }
else if (type ==
"red") {
1188 }
else if (type ==
"yellow") {
1190 }
else if (type ==
"green") {
1192 }
else if (type ==
"priorityGreen") {
1194 }
else if (type ==
"deletePhase") {
1196 }
else if (type ==
"moveUp") {
1198 }
else if (type ==
"moveDown") {
1208 writeError(
"pressTLSButton" + type, 0,
"<>");
1212 if (type ==
"cleanStates") {
1214 }
else if (type ==
"addStates") {
1216 }
else if (type ==
"groupSignal") {
1218 }
else if (type ==
"ungroupSignal") {
1228 writeError(
"checkParameters", overlappedTabs,
"<int/attributeEnum>");
1252 writeError(
"checkDoubleParameters", overlappedTabs,
"<int/attributeEnum>");
1276 writeError(
"changeEditMode", 0,
"<int/attributeEnum>");
1280 if (
myArguments[0] ==
"netedit.attrs.modes.network.grid") {
1282 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.junctionShape") {
1284 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.spreadVehicle") {
1286 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.showDemandElements") {
1288 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.selectLane") {
1290 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.showConnections") {
1292 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.hideConnetions") {
1294 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.showSubAdditionals") {
1296 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.showTAZElements") {
1298 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.automaticSelectJunctions") {
1300 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.applyAllPhases") {
1302 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.mergingJunction") {
1304 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.showBubbles") {
1306 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.moveElevation") {
1308 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.chainMode") {
1310 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.twoWayMode") {
1313 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.grid") {
1315 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.junctionShape") {
1317 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.spreadVehicle") {
1319 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.showNonInspected") {
1321 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.showShapes") {
1323 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.showAllTrips") {
1325 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.showPersonPlans") {
1327 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.lockPerson") {
1329 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.showContainerPlans") {
1331 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.lockContainer") {
1333 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.showOverlappedRoutes") {
1336 }
else if (
myArguments[0] ==
"netedit.attrs.modes.data.junctionShape") {
1338 }
else if (
myArguments[0] ==
"netedit.attrs.modes.data.showAdditionals") {
1340 }
else if (
myArguments[0] ==
"netedit.attrs.modes.data.showShapes") {
1342 }
else if (
myArguments[0] ==
"netedit.attrs.modes.data.showDemandElements") {
1344 }
else if (
myArguments[0] ==
"netedit.attrs.modes.data.TAZRelDrawingMode") {
1346 }
else if (
myArguments[0] ==
"netedit.attrs.modes.data.TAZFill") {
1348 }
else if (
myArguments[0] ==
"netedit.attrs.modes.data.TAZRelOnlyFrom") {
1350 }
else if (
myArguments[0] ==
"netedit.attrs.modes.data.TAZRelOnlyTo") {
1367 if (savingType ==
"network") {
1369 }
else if (savingType ==
"additionals") {
1371 }
else if (savingType ==
"demands") {
1373 }
else if (savingType ==
"datas") {
1375 }
else if (savingType ==
"meanDatas") {
1377 }
else if (savingType ==
"sumoConfig") {
1379 }
else if (savingType ==
"neteditConfig") {
1391 writeError(
"checkUndoRedo", 0,
"<referencePosition>");
1393 const int numUndoRedos = 9;
1413 writeError(
"selection", 0,
"<selection operation>");
1418 if (selectionType ==
"default") {
1420 }
else if (selectionType ==
"save") {
1422 }
else if (selectionType ==
"load") {
1424 }
else if (selectionType ==
"add") {
1426 }
else if (selectionType ==
"remove") {
1428 }
else if (selectionType ==
"keep") {
1430 }
else if (selectionType ==
"replace") {
1432 }
else if (selectionType ==
"clear") {
1434 }
else if (selectionType ==
"invert") {
1436 }
else if (selectionType ==
"invertData") {
1438 }
else if (selectionType ==
"delete") {
1444 for (
int i = 0; i < numTabs; i++) {
1447 if (selectionType ==
"save") {
1450 }
else if (selectionType ==
"load") {
1464 writeError(
"selectNetworkItems", 0,
"<element/int, \"attribute\", \"value\">");
1476 for (
const char c :
"Network elements") {
1480 std::cout <<
"Network elements" << std::endl;
1486 for (
const char c : element) {
1490 std::cout << element << std::endl;
1496 for (
const char c : attribute) {
1500 std::cout << attribute << std::endl;
1506 for (
const char c : value) {
1510 std::cout << value << std::endl;
1520 writeError(
"lockSelection", 0,
"<element/int, \"attribute\", \"value\">");
1566 writeError(
"selectionRectangle", 0,
"<viewPosition, viewPosition>");
1582 writeError(
"createDataSet", 0,
"<dataSetId>");
1587 std::cout << dataSetId << std::endl;
1591 for (
int i = 0; i < 2; i++) {
1597 for (
const char c : dataSetId) {
1611 writeError(
"createDataInterval", 0,
"<begin, end>");
1617 std::cout << begin << std::endl;
1618 std::cout << end << std::endl;
1622 for (
int i = 0; i < 6; i++) {
1630 for (
const char c : begin) {
1636 for (
const char c : end) {
1663 writeError(
"loadFile", 0,
"<referencePosition, type, file, extension, extensionIndex>");
1672 std::string workingDirectory = FXSystem::getCurrentDirectory().text();
1673 const auto sandboxDirectory = std::getenv(
"TEXTTEST_SANDBOX");
1674 if (sandboxDirectory) {
1675 workingDirectory = sandboxDirectory;
1678 if (type ==
"neteditConfig") {
1680 }
else if (type ==
"sumoConfig") {
1682 }
else if (type ==
"netconvertConfig") {
1684 }
else if (type ==
"network") {
1686 }
else if (type ==
"trafficLights") {
1688 }
else if (type ==
"edgeTypes") {
1690 }
else if (type ==
"additional") {
1692 }
else if (type ==
"demand") {
1694 }
else if (type ==
"data") {
1696 }
else if (type ==
"meanData") {
1699 WRITE_ERRORF(
"Invalid type '%' used in function loadFile", type);
1702 std::cout << file <<
"." << extension << std::endl;
1713 writeError(
"saveNewFile", 0,
"<referencePosition, type, extension, extensionIndex>");
1722 std::string workingDirectory = FXSystem::getCurrentDirectory().text();
1723 const auto sandboxDirectory = std::getenv(
"TEXTTEST_SANDBOX");
1724 if (sandboxDirectory) {
1725 workingDirectory = sandboxDirectory;
1728 if (type ==
"neteditConfig") {
1730 file =
"netedit_B." + extension;
1731 }
else if (type ==
"sumoConfig") {
1733 file =
"sumo_B." + extension;
1734 }
else if (type ==
"netconvertConfig") {
1736 file =
"netconvert_B." + extension;
1737 }
else if (type ==
"network") {
1739 file =
"input_net_B." + extension;
1740 }
else if (type ==
"trafficLights") {
1742 file =
"trafficlights_B." + extension;
1743 }
else if (type ==
"edgeTypes") {
1745 file =
"input_edgetypes_B." + extension;
1747 WRITE_ERRORF(
"Invalid type '%' used in function loadFile", type);
1750 std::cout << file << std::endl;
1761 writeError(
"saveFileAs", 0,
"<referencePosition, type, extension, extensionIndex>");
1770 std::string workingDirectory = FXSystem::getCurrentDirectory().text();
1771 const auto sandboxDirectory = std::getenv(
"TEXTTEST_SANDBOX");
1772 if (sandboxDirectory) {
1773 workingDirectory = sandboxDirectory;
1776 if (type ==
"neteditConfig") {
1778 file =
"netedit_B." + extension;
1779 }
else if (type ==
"sumoConfig") {
1781 file =
"sumo_B." + extension;
1782 }
else if (type ==
"network") {
1784 file =
"input_net_B." + extension;
1785 }
else if (type ==
"joinedJunctions") {
1787 file =
"joinedjunctions_B." + extension;
1788 }
else if (type ==
"trafficLights") {
1790 file =
"trafficlights_B." + extension;
1791 }
else if (type ==
"edgeTypes") {
1793 file =
"edgetypes_B." + extension;
1794 }
else if (type ==
"jupedsim") {
1796 file =
"jupedsims_B." + extension;
1797 }
else if (type ==
"additional") {
1798 file =
"input_additionals_B." + extension;
1800 }
else if (type ==
"demand") {
1801 file =
"input_routes_B." + extension;
1803 }
else if (type ==
"data") {
1804 file =
"input_datas_B." + extension;
1806 }
else if (type ==
"meanData") {
1807 file =
"input_meandatas_B." + extension;
1810 WRITE_ERRORF(
"Invalid type '%' used in function loadFile", type);
1813 std::cout << file << std::endl;
1824 writeError(
"saveUnifiedFileAs", 0,
"<referencePosition, type, extension, extensionIndex>");
1833 std::string workingDirectory = FXSystem::getCurrentDirectory().text();
1834 const auto sandboxDirectory = std::getenv(
"TEXTTEST_SANDBOX");
1835 if (sandboxDirectory) {
1836 workingDirectory = sandboxDirectory;
1839 if (type ==
"additional") {
1841 file =
"input_additionals_B." + extension;;
1842 }
else if (type ==
"demand") {
1844 file =
"input_routes_B." + extension;
1845 }
else if (type ==
"data") {
1847 file =
"input_datas_B." + extension;
1848 }
else if (type ==
"meanData") {
1850 file =
"input_meandatas_B." + extension;
1852 WRITE_ERRORF(
"Invalid type '%' used in function loadFile", type);
1855 std::cout << file << std::endl;
1866 writeError(
"reloadFile", 0,
"<referencePosition, type, bool>");
1872 if (type ==
"neteditConfig") {
1874 }
else if (type ==
"sumoConfig") {
1876 }
else if (type ==
"network") {
1878 }
else if (type ==
"edgeTypes") {
1880 }
else if (type ==
"trafficLights") {
1882 }
else if (type ==
"additional") {
1884 }
else if (type ==
"demand") {
1886 }
else if (type ==
"data") {
1888 }
else if (type ==
"meanData") {
1891 WRITE_ERRORF(
"Invalid type '%' used in function reloadFile", type);
1916 writeError(
"createNewEdgeType", 0,
"<bool>");
1970 writeError(
"undo", 0,
"<referencePosition, int>");
1981 writeError(
"redo", 0,
"<referencePosition, int>");
1997 if (supermode ==
"network") {
1999 }
else if (supermode ==
"demand") {
2001 }
else if (supermode ==
"data") {
2004 writeError(
"supermode", 0,
"<network/demand/data>");
2024 if (mode ==
"inspect") {
2026 }
else if (mode ==
"delete") {
2028 }
else if (mode ==
"select") {
2030 }
else if (mode ==
"move") {
2032 }
else if ((mode ==
"createEdge") || (mode ==
"edgeData")) {
2034 }
else if ((mode ==
"trafficLight") || (mode ==
"type") || (mode ==
"TLS")) {
2036 }
else if ((mode ==
"connection") || (mode ==
"container")) {
2038 }
else if ((mode ==
"prohibition") || (mode ==
"containerPlan")) {
2040 }
else if ((mode ==
"crossing") || (mode ==
"route") || (mode ==
"edgeRelData")) {
2042 }
else if ((mode ==
"additional") || (mode ==
"stop")) {
2044 }
else if ((mode ==
"wire") || (mode ==
"routeDistribution")) {
2046 }
else if ((mode ==
"taz") || (mode ==
"TAZ") || (mode ==
"TAZRelData")) {
2048 }
else if ((mode ==
"shape") || (mode ==
"person")) {
2050 }
else if ((mode ==
"decal") || (mode ==
"typeDistribution")) {
2052 }
else if (mode ==
"personPlan") {
2054 }
else if (mode ==
"vehicle") {
2056 }
else if (mode ==
"meanData") {
2059 writeError(
"changeMode", 0,
"<inspect/delete/select/move...>");
2069 writeError(
"changeElement", 0,
"<\"frame\", \"string\">");
2075 if (frame ==
"additionalFrame") {
2077 }
else if (frame ==
"shapeFrame") {
2079 }
else if (frame ==
"vehicleFrame") {
2081 }
else if (frame ==
"routeFrame") {
2083 }
else if (frame ==
"personFrame") {
2085 }
else if (frame ==
"containerFrame") {
2087 }
else if (frame ==
"personPlanFrame") {
2089 }
else if (frame ==
"containerPlanFrame") {
2091 }
else if (frame ==
"stopFrame") {
2093 }
else if (frame ==
"meanDataFrame") {
2096 WRITE_ERRORF(
"Invalid frame '%' used in function changeElement", frame);
2100 std::cout << element << std::endl;
2104 for (
int i = 0; i < numTabs; i++) {
2108 for (
const char c : element) {
2124 writeError(
"changePlan", 0,
"<\"type\", \"plan\", true/false>");
2131 if ((type !=
"person") && (type !=
"container")) {
2132 WRITE_ERRORF(
"invalid plan type '%' used in changePlan()", type);
2144 for (
int i = 0; i < numTabs; i++) {
2148 for (
const char c : plan) {
2152 std::cout << plan << std::endl;
2174 writeError(
"computeJunctionsVolatileOptions", 0,
"<yes/no/esc>");
2181 if (dialogArgument ==
"yes") {
2183 }
else if (dialogArgument ==
"no") {
2208 writeError(
"selectAdditionalChild", 0,
"<int, int>");
2215 for (
int i = 0; i < tabs; i++) {
2219 for (
int i = 0; i < downs; i++) {
2237 writeError(
"createRectangledShape", 0,
"<viewPosition, sizeX, sizeY, true/false>");
2255 writeError(
"createSquaredShape", 0,
"<viewPosition, size, true/false>");
2274 writeError(
"createLineShape", 0,
"<viewPosition, sizeX, sizeY, true/false>");
2353 if (argument ==
"True") {
2355 }
else if (argument ==
"False") {
2365 if (argument ==
"True") {
2375 if (argument.size() < 2) {
2377 }
else if ((argument.front() != argument.back()) || ((argument.front() !=
'\'') && ((argument.front() !=
'\"')))) {
2387 std::string argumentParsed;
2388 for (
int i = 1; i < ((int)argument.size() - 1); i++) {
2389 argumentParsed.push_back(argument[i]);
2391 return argumentParsed;
2397 auto start = std::find_if_not(str.begin(), str.end(), isspace);
2398 auto end = std::find_if_not(str.rbegin(), str.rend(), isspace).base();
2400 return std::string(start, end);
2409 if (overlapping > 0) {
2410 WRITE_ERRORF(
"Invalid internal testStep function '%Ovelapped', requires '%' arguments ", function, expected);
2412 WRITE_ERRORF(
"Invalid internal testStep function '%', requires '%' arguments ", function, expected);
2426 const int sizeX,
const int sizeY,
const bool close,
2427 const bool line)
const {
2429 const int halfSizeX = int(sizeX * -0.5);
2430 const int halfSizeY = int(sizeY * -0.5);
2464 std::cout << value << std::endl;
2468 for (
int i = 0; i < (tabs + overlappedTabs); i++) {
2472 if (value.empty()) {
2475 for (
const char c : value) {
2489 for (
int i = 0; i < (tabs + overlappedTabs); i++) {
2506 std::cout <<
"TestFunctions: Clicked over position " <<
2512 for (
int i = 0; i < number; i++) {
2527 std::cout <<
"TestFunctions: Clicked over position " <<
2533 for (
int i = 0; i < number; i++) {
2539std::pair<FXint, FXString>
2541 std::pair<FXint, FXString> solution;
2543 if (key.size() == 1) {
2544 solution.first = FXint(key.front());
2545 solution.second.append(key.front());
2548 if (key ==
"backspace") {
2549 solution.first = KEY_BackSpace;
2550 solution.second =
"\b";
2551 }
else if (key ==
"space") {
2552 solution.first = KEY_space;
2553 }
else if (key ==
"tab") {
2554 solution.first = KEY_Tab;
2555 solution.second =
"\t";
2556 }
else if (key ==
"clear") {
2557 solution.first = KEY_Clear;
2558 }
else if (key ==
"enter" || key ==
"return") {
2559 solution.first = KEY_Return;
2560 solution.second =
"\n";
2561 }
else if (key ==
"pause") {
2562 solution.first = KEY_Pause;
2563 }
else if (key ==
"sys_req") {
2564 solution.first = KEY_Sys_Req;
2565 }
else if (key ==
"esc" || key ==
"escape") {
2566 solution.first = KEY_Escape;
2567 solution.second =
"\x1B";
2568 }
else if (key ==
"delete") {
2569 solution.first = KEY_Delete;
2570 solution.second =
"\x7F";
2571 }
else if (key ==
"multi_key") {
2572 solution.first = KEY_Multi_key;
2574 }
else if (key ==
"shift") {
2575 solution.first = KEY_Shift_L;
2576 }
else if (key ==
"control") {
2577 solution.first = KEY_Control_L;
2579 }
else if (key ==
"home") {
2580 solution.first = KEY_Home;
2581 }
else if (key ==
"left") {
2582 solution.first = KEY_Left;
2583 }
else if (key ==
"up") {
2584 solution.first = KEY_Up;
2585 }
else if (key ==
"right") {
2586 solution.first = KEY_Right;
2587 }
else if (key ==
"down") {
2588 solution.first = KEY_Down;
2589 }
else if (key ==
"prior" || key ==
"page_up") {
2590 solution.first = KEY_Page_Up;
2591 }
else if (key ==
"next" || key ==
"page_down") {
2592 solution.first = KEY_Page_Down;
2593 }
else if (key ==
"end") {
2594 solution.first = KEY_End;
2595 }
else if (key ==
"begin") {
2596 solution.first = KEY_Begin;
2598 }
else if (key ==
"f1") {
2600 }
else if (key ==
"f2") {
2602 }
else if (key ==
"f3") {
2604 }
else if (key ==
"f4") {
2606 }
else if (key ==
"f5") {
2608 }
else if (key ==
"f6") {
2610 }
else if (key ==
"f7") {
2612 }
else if (key ==
"f8") {
2614 }
else if (key ==
"f9") {
2616 }
else if (key ==
"f10") {
2618 }
else if (key ==
"f11" || key ==
"l1") {
2620 }
else if (key ==
"f12" || key ==
"l2") {
2624 solution.first = KEY_VoidSymbol;
2634 FXEvent* keyPressEvent =
new FXEvent();
2637 keyPressEvent->synthetic =
true;
2638 keyPressEvent->type = SEL_KEYPRESS;
2639 keyPressEvent->code = keyValues.first;
2640 keyPressEvent->text = keyValues.second;
2641 return keyPressEvent;
2648 FXEvent* keyPressEvent =
new FXEvent();
2651 keyPressEvent->synthetic =
true;
2652 keyPressEvent->type = SEL_KEYPRESS;
2653 keyPressEvent->code = keyValues.first;
2654 keyPressEvent->text = keyValues.second;
2656 return keyPressEvent;
2673 if (keyA ==
"shift") {
2674 pressEvent->state = SHIFTMASK;
2675 releaseEvent->state = SHIFTMASK;
2676 }
else if (keyA ==
"control") {
2677 pressEvent->state = CONTROLMASK;
2678 releaseEvent->state = CONTROLMASK;
2679 }
else if (keyA ==
"alt") {
2680 pressEvent->state = ALTMASK;
2681 releaseEvent->state = ALTMASK;
2690 const int offsetX,
const int offsetY,
2691 const std::string& button,
const std::string& keyModifier)
const {
2695 true,
"mouse moved to click position");
2697 if (button ==
"left") {
2700 true,
"mouse button " + button +
" pressed");
2703 true,
"mouse button " + button +
" released");
2704 }
else if (button ==
"center") {
2707 true,
"mouse button " + button +
" pressed");
2710 true,
"mouse button " + button +
" released");
2711 }
else if (button ==
"right") {
2714 true,
"mouse button " + button +
" pressed");
2717 true,
"mouse button " + button +
" released");
2724 const int offsetStartX,
const int offsetStartY,
2726 const int offsetEndX,
const int offsetEndY,
2727 const std::string& keyModifier)
const {
2733 true,
"mouse moved to click position (dragDrop)");
2736 buildMouseClickEvent(SEL_LEFTBUTTONPRESS, viewStartPosition, offsetStartX, offsetStartY, keyModifier, 1),
2737 true,
"mouse button left pressed (dragDrop)");
2739 for (
const auto& position : interpolationSteps) {
2742 true,
"mouse moved (dragDrop)");
2746 buildMouseClickEvent(SEL_LEFTBUTTONRELEASE, viewEndPosition, offsetEndX, offsetEndY, keyModifier, 1),
2747 true,
"mouse button left released (dragDrop)");
2753 const int offsetX,
const int offsetY,
const int clickedButton,
2754 const std::string& keyModifier,
const int numberOfClicks)
const {
2755 FXEvent* moveEvent =
new FXEvent();
2758 moveEvent->type = SEL_MOTION;
2759 moveEvent->synthetic =
true;
2764 moveEvent->click_x = 0;
2765 moveEvent->click_y = 0;
2766 moveEvent->moved =
true;
2767 moveEvent->rect = FXRectangle(0, 0, 0, 0);
2768 moveEvent->click_button = clickedButton;
2769 moveEvent->click_count = numberOfClicks;
2770 moveEvent->code = 0;
2772 if (keyModifier ==
"control") {
2773 moveEvent->state = CONTROLMASK;
2774 }
else if (keyModifier ==
"shift") {
2775 moveEvent->state = SHIFTMASK;
2776 }
else if (keyModifier ==
"leftButton") {
2777 moveEvent->state = LEFTBUTTONMASK;
2779 moveEvent->state = 0;
2789 const int offsetX,
const int offsetY,
const std::string& keyModifier,
2790 const int numberOfClicks)
const {
2791 FXEvent* clickEvent =
new FXEvent();
2794 clickEvent->type = type;
2795 clickEvent->synthetic =
true;
2802 clickEvent->click_count = numberOfClicks;
2803 clickEvent->moved =
false;
2804 clickEvent->rect = FXRectangle(0, 0, 0, 0);
2806 if ((type == SEL_LEFTBUTTONPRESS) || (type == SEL_LEFTBUTTONRELEASE)) {
2807 clickEvent->click_button = LEFTBUTTON;
2808 clickEvent->code = LEFTBUTTON;
2809 }
else if ((type == SEL_MIDDLEBUTTONPRESS) || (type == SEL_MIDDLEBUTTONRELEASE)) {
2810 clickEvent->click_button = MIDDLEBUTTON;
2811 clickEvent->code = MIDDLEBUTTON;
2812 }
else if ((type == SEL_RIGHTBUTTONPRESS) || (type == SEL_RIGHTBUTTONRELEASE)) {
2813 clickEvent->click_button = RIGHTBUTTON;
2814 clickEvent->code = RIGHTBUTTON;
2816 clickEvent->click_button = 0;
2817 clickEvent->code = 0;
2820 if (keyModifier ==
"control") {
2821 clickEvent->state = CONTROLMASK;
2822 }
else if (keyModifier ==
"shift") {
2823 clickEvent->state = SHIFTMASK;
2825 clickEvent->state = 0;
2833 const int offsetX,
const int offsetY,
2834 const std::string modifier)
const {
2835 if (modifier ==
"control") {
2836 std::cout <<
"TestFunctions: Clicked with Control key pressed over position " <<
2839 }
else if (modifier ==
"shift") {
2840 std::cout <<
"TestFunctions: Clicked with Shift key pressed over position " <<
2844 std::cout <<
"TestFunctions: Clicked over position " <<
@ MID_GNE_NETWORKVIEWOPTIONS_AUTOOPPOSITEEDGES
automatically create opposite edge
@ MID_GNE_LOCK_POLYGON
lock polygons
@ MID_HOTKEY_CTRL_Q_CLOSE
Main window closes.
@ MID_HOTKEY_SHIFT_F5_COMPUTEJUNCTIONS_VOLATILE
compute junctions with volatile options
@ MID_HOTKEY_CTRL_SHIFT_B_SAVEDATAELEMENTS
save Data Elements
@ MID_HOTKEY_F3_SUPERMODE_DEMAND
select demand supermode in netedit
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWALLPERSONPLANS
show all person plans
@ MID_GNE_UNLOCK_ALLELEMENTS
unlock all element
@ MID_GNE_DATAVIEWOPTIONS_TAZRELDRAWING
toggle TAZRel drawing
@ MID_GNE_TOOLBARFILE_SAVEADDITIONALELEMENTS_UNIFIED
save additionals unified
@ MID_HOTKEY_U_MODE_DECAL_TYPEDISTRIBUTION
hotkey for mode decal AND type distribution
@ MID_GNE_NETWORKVIEWOPTIONS_DRAWSPREADVEHICLES
Draw vehicles in begin position or spread in lane.
@ MID_GNE_TLSFRAME_PHASES_ADDUNUSED
add unused states
@ MID_HOTKEY_CTRL_Y_REDO
Undo.
@ MID_HOTKEY_CTRL_SHIFT_H_SAVEEDGETYPES
save Edge Types
@ MID_GNE_NETWORKVIEWOPTIONS_MOVEELEVATION
move elevation instead of x,y
@ MID_GNE_LOCK_WIRE
lock wires
@ MID_GNE_TOOLBARFILE_RELOAD_EDGETYPES
reload edge types
@ MID_GNE_NETWORKVIEWOPTIONS_HIDECONNECTIONS
hide connections
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWCONNECTIONS
show connections
@ MID_GNE_TLSTABLE_ADDPHASE
TLSTable button for add phase.
@ MID_GNE_DATAVIEWOPTIONS_TAZRELONLYTO
toggle draw TAZRel only to
@ MID_GNE_LOCK_ALLELEMENTS
lock all element
@ MID_HOTKEY_F7_JOIN_SELECTEDJUNCTIONS_ROUTES
join selected junctions in network mode and normalice demand element ids in demand mode
@ MID_HOTKEY_CTRL_D_SINGLESIMULATIONSTEP_OPENDEMANDELEMENTS
Perform a single simulation step in SUMO and open Demand Elements in netedit.
@ MID_HOTKEY_F5_COMPUTE_NETWORK_DEMAND
compute Network in network mode and Demand elements in demand mode
@ MID_GNE_DATAVIEWOPTIONS_TOGGLEDRAWJUNCTIONSHAPE
toggle draw junction shape
@ MID_GNE_TLSTABLE_COPYPHASE
TLSTable button for copy phase.
@ MID_HOTKEY_CTRL_O_OPENSIMULATION_OPENNETWORK
Open simulation in SUMO and open network in netedit.
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWTAZELEMENTS
show TAZ elements
@ MID_GNE_DEMANDVIEWOPTIONS_LOCKPERSON
lock person
@ MID_GNE_LOCK_JPS_WALKABLEAREA
lock walkableAreas
@ MID_HOTKEY_Z_MODE_TAZ_TAZREL
hotkey for mode editing TAZ and TAZRel
@ MID_GNE_TLSTABLE_ADDPHASEALLGREENPRIORITY
TLSTable button for add phase green priority.
@ MID_GNE_DEMANDVIEWOPTIONS_TOGGLEDRAWJUNCTIONSHAPE
toggle draw junction shape
@ MID_GNE_LOCK_SELECTEDELEMENTS
lock selected element
@ MID_GNE_TLSFRAME_PHASES_CLEANUP
cleanup unused states
@ MID_GNE_TLSFRAME_PHASES_GROUPSTATES
group states
@ MID_GNE_TOOLBARFILE_SAVESUMOCONFIG_AS
save SUMOConfig as
@ MID_GNE_TOOLBARFILE_RELOAD_TLSPROGRAMS
reload TLS Programs
@ MID_HOTKEY_DEL
hot key delete selections or elements
@ MID_HOTKEY_A_MODE_STARTSIMULATION_ADDITIONALS_STOPS
hotkey for start simulation in SUMO and set editing mode additionals AND stops in netedit
@ MID_GNE_TOOLBARFILE_OPENMEANDATAELEMENTS
open meanData file
@ MID_GNE_TOOLBARFILE_RELOAD_NETEDITCONFIG
reload neteditConfig
@ MID_HOTKEY_CTRL_B_EDITBREAKPOINT_OPENDATAELEMENTS
Edit simulation breakpoints in SUMO and open Data Elements in netedit.
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWGRID
show grid
@ MID_HOTKEY_CTRL_SHIFT_D_SAVEDEMANDELEMENTS
Save Demand Elements.
@ MID_HOTKEY_CTRL_S_STOPSIMULATION_SAVENETWORK
Stop the simulation in SUMO and save network in netedit.
@ MID_HOTKEY_D_MODE_SINGLESIMULATIONSTEP_DELETE
hotkey for perform a single simulation step in SUMO and set delete mode in netedit
@ MID_GNE_NETWORKVIEWOPTIONS_CHAINEDGES
create edges in chain mode
@ MID_GNE_DATAVIEWOPTIONS_SHOWDEMANDELEMENTS
show demand elements
@ MID_GNE_TOOLBARFILE_RELOAD_MEANDATAELEMENTS
reload meanDatas
@ MID_GNE_TOOLBARFILE_SAVEMEANDATAELEMENTS_UNIFIED
save meanDatas unified
@ MID_GNE_LOCK_WALKINGAREA
lock walkingareas
@ MID_HOTKEY_CTRL_A_STARTSIMULATION_OPENADDITIONALELEMENTS
Start the simulation in SUMO and open Additionals Elements in netedit.
@ MID_HOTKEY_C_MODE_CONNECT_CONTAINER
hotkey for mode connecting lanes AND container
@ MID_HOTKEY_H_MODE_PROHIBITION_CONTAINERPLAN
hotkey for mode prohibition AND container plan
@ MID_HOTKEY_W_MODE_WIRE_ROUTEDISTRIBUTION
hotkey for mode editing overhead wires AND route distributions
@ MID_HOTKEY_T_MODE_TLS_TYPE
hotkey for mode editing TLS AND Vehicle Types
@ MID_GNE_DEMANDVIEWOPTIONS_HIDESHAPES
hide shapes
@ MID_GNE_TLSFRAME_PHASES_UNGROUPSTATES
ungroup states
@ MID_GNE_LOCK_JPS_OBSTACLE
lock obstacles
@ MID_GNE_TLSTABLE_ADDPHASEALLYELLOW
TLSTable button for add phase yelllow.
@ MID_GNE_TOOLBARFILE_SAVETLSPROGRAMS_AS
save TLS Programs as
@ MID_GNE_DATAVIEWOPTIONS_SHOWADDITIONALS
show additionals
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWBUBBLES
show junctions as bubbles
@ MID_GNE_TOOLBARFILE_RELOAD_DEMANDELEMENTS
reload demand elements
@ MID_GNE_TLSTABLE_TEXTFIELD
TLSTable textField.
@ MID_GNE_NETWORKVIEWOPTIONS_EXTENDSELECTION
extend selection
@ MID_GNE_TLSTABLE_ADDPHASEALLRED
TLSTable button for add phase red.
@ MID_HOTKEY_S_MODE_STOPSIMULATION_SELECT
hotkey for stop simulation in SUMO and set select mode in netedit
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWSUBADDITIONALS
show sub-additionals
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWALLCONTAINERPLANS
show all container plans
@ MID_GNE_LOCK_ADDITIONALELEMENT
lock additional elements
@ MID_GNE_TLSTABLE_MOVEDOWNPHASE
TLSTable button for move down phase.
@ MID_HOTKEY_F4_SUPERMODE_DATA
select data supermode in netedit
@ MID_GNE_LOCK_EDGE
lock edges
@ MID_HOTKEY_CTRL_K_OPENTLSPROGRAMS
Load file with TLS Programs.
@ MID_GNE_TOOLBARFILE_SAVENETEDITCONFIG_AS
save neteditConfig as
@ MID_HOTKEY_R_MODE_CROSSING_ROUTE_EDGERELDATA
hotkey for mode editing crossing, routes and edge rel datas
@ MID_GNE_DATAVIEWOPTIONS_TAZDRAWFILL
toggle draw TAZ fill
@ MID_HOTKEY_L_MODE_PERSONPLAN
hotkey for mode person plan
@ MID_HOTKEY_V_MODE_VEHICLE
hotkey for mode create vehicles
@ MID_GNE_TOOLBARFILE_SAVEDATAELEMENTS_UNIFIED
save data elements unified
@ MID_HOTKEY_I_MODE_INSPECT
hotkey for mode inspecting object attributes
@ MID_GNE_TLSTABLE_ADDPHASEALLGREEN
TLSTable button for add phase green.
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWDEMANDELEMENTS
show demand elements
@ MID_GNE_TLSTABLE_REMOVEPHASE
TLSTable button for remove phase.
@ MID_HOTKEY_CTRL_SHIFT_E_SAVENETEDITCONFIG
save netedit Config
@ MID_GNE_TOOLBARFILE_SAVEEDGETYPES_AS
save edgeTypes as
@ MID_GNE_DEMANDVIEWOPTIONS_HIDENONINSPECTED
hide non-inspected demand element
@ MID_GNE_LOCK_CONNECTION
lock connections
@ MID_GNE_TOOLBARFILE_RELOADNETWORK
reload only network
@ MID_GNE_NETWORKVIEWOPTIONS_MERGEAUTOMATICALLY
don't ask before merging junctions
@ MID_HOTKEY_CTRL_SHIFT_M_SAVEMEANDATAELEMENTS
save Mean Datas
@ MID_GNE_NETWORKVIEWOPTIONS_CHANGEALLPHASES
change all phases
@ MID_GNE_TLSTABLE_MOVEUPPHASE
TLSTable button for move up phase.
@ MID_GNE_DATAVIEWOPTIONS_SHOWSHAPES
show shapes
@ MID_HOTKEY_E_MODE_EDGE_EDGEDATA
hotkey for mode adding edges AND edgeDatas
@ MID_GNE_DATAVIEWOPTIONS_TAZRELONLYFROM
toggle draw TAZRel only from
@ MID_GNE_TOOLBARFILE_RELOAD_SUMOCONFIG
reload SUMOConfig
@ MID_GNE_LOCK_LANE
lock lanes
@ MID_GNE_NETWORKVIEWOPTIONS_TOGGLEDRAWJUNCTIONSHAPE
toggle draw junction shape
@ MID_HOTKEY_CTRL_SHIFT_O_OPENNETCONVERTFILE
open Netconvert file
@ MID_HOTKEY_CTRL_M_OPENSUMOCONFIG
open sumo config
@ MID_GNE_TOOLBARFILE_SAVENETWORK_AS
save network as
@ MID_GNE_DEMANDVIEWOPTIONS_DRAWSPREADVEHICLES
Draw vehicles in begin position or spread in lane.
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWOVERLAPPEDROUTES
show overlapped routes
@ MID_HOTKEY_CTRL_Z_UNDO
Redo.
@ MID_GNE_TOOLBARFILE_SAVEDEMANDELEMENTS_UNIFIED
save demand elements unified
@ MID_HOTKEY_CTRL_H_APPSETTINGS_OPENEDGETYPES
open app setting dialog in SUMO and open edge type files in netedit
@ MID_HOTKEY_CTRL_SHIFT_S_SAVESUMOCONFIG
save SUMOConfig (SUMO AND netedit)
@ MID_GNE_LOCK_CROSSING
lock crossings
@ MID_HOTKEY_F12_ABOUT
open about dialog
@ MID_HOTKEY_CTRL_E_EDITSELECTION_LOADNETEDITCONFIG
Edit selection in SUMO and load neteditConfig in netedit.
@ MID_GNE_TOOLBARFILE_RELOAD_DATAELEMENTS
reload data elements
@ MID_HOTKEY_CTRL_SHIFT_K_SAVETLS
save TLS Programs
@ MID_HOTKEY_M_MODE_MOVE_MEANDATA
hotkey for mode moving element AND mean data
@ MID_HOTKEY_F2_SUPERMODE_NETWORK
select network supermode in netedit
@ MID_GNE_DEMANDVIEWOPTIONS_LOCKCONTAINER
lock container
@ MID_HOTKEY_SHIFT_F12_FOCUSUPPERELEMENT
focus upper element of current frame (only used in netedit)
@ MID_GNE_TOOLBARFILE_RELOAD_ADDITIONALELEMENTS
reload additionals
@ MID_GNE_NETWORKVIEWOPTIONS_SELECTEDGES
select edges
@ MID_GNE_SAVEJOINEDJUNCTIONS
save joined junctions
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWTRIPS
show all trips
@ MID_GNE_NETWORKVIEWOPTIONS_TOGGLEGRID
show grid
@ MID_GNE_TOOLBARFILE_SAVEJUPEDSIMELEMENTS_AS
save JuPedSim as
@ MID_GNE_LOCK_JUNCTION
lock junctions
@ MID_GNE_LOCK_POI
lock POIs
@ MID_HOTKEY_P_MODE_POLYGON_PERSON
hotkey for mode creating polygons
@ MID_HOTKEY_CTRL_L_SAVEASPLAINXML
save network as plain XML
@ MID_GNE_LOCK_TAZ
lock TAZs
@ MID_HOTKEY_CTRL_SHIFT_A_SAVEADDITIONALELEMENTS
Save Additional Elements.
constexpr int MOUSE_OFFSET_X
constexpr int MOUSE_REFERENCE_Y
constexpr int MOUSE_REFERENCE_X
constexpr int MOUSE_OFFSET_Y
#define WRITE_ERRORF(...)
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
int getY() const
get y value
int getX() const
get x value
std::vector< InternalTest::ViewPosition > interpolateViewPositions(const InternalTest::ViewPosition &viewStartPosition, const int offsetStartX, const int offsetStartY, const InternalTest::ViewPosition &viewEndPosition, const int offsetEndX, const int offsetEndY) const
interpolate view positions
void addTestSteps(InternalTestStep *internalTestStep)
add test steps
const std::map< std::string, InternalTest::ContextualMenu > & getContextualMenuOperations() const
get map with contextual menu operation jump steps
const std::map< std::string, int > & getAttributesEnum() const
get map with attributesEnum jump steps
const std::map< std::string, InternalTest::ViewPosition > & getViewPositions() const
get map with view position pairs
FXint getTime() const
get currentTime
void updateLastMovedPosition(const int x, const int y)
update last moved position
const InternalTest::ViewPosition & getLastMovedPosition() const
get last moved position
const std::map< std::string, InternalTest::Movement > & getMovements() const
get map with movement pairs
dialog arguments, used for certain modal dialogs that can not be edited using tab
const std::string & getCustomAction() const
get custom action
Action getAction() const
get basic action
DialogType getType() const
get type
int getIndex() const
get index
DialogArgument()=delete
invalidated default constructor
std::string myCustomAction
action to be carried out in the dialog
struct used for test TLS Tables
TLSTableTest()=delete
invalidated default constructor
void changeSupermode()
process changeSupermode function
const std::string & getDescription() const
get description
void contextualMenuOperation() const
process contextualMenuOperation function
FXEvent * buildKeyPressEvent(const std::string &key) const
build key press event
std::pair< FXint, FXString > translateKey(const std::string &key) const
translate key
void modifyVTypeDialogAttribute() const
process modifyVTypeDialogAttribute function
void createSquaredShape()
process createSquaredShape function
void * getEvent() const
get event associated with this step
std::string stripSpaces(const std::string &str) const
strip spaces
void fixStoppingPlace()
process fixStoppingPlace function
void modifyVClassDialog_DisallowAll(const int overlappedTabs) const
process modifyVClassDialog_DisallowAll function
Category myCategory
step category
void joinTSL() const
process join TLS function
void modifyCrossingDefaultBoolValue() const
process modifyCrossingDefaultBoolValue function
FXEvent * myEvent
list of events associated with this step
void modifyVClassDialog_Reset(const int overlappedTabs) const
process modifyVClassDialog_Reset function
InternalTestStep()=delete
invalidate default constructor
void buildMouseDragDrop(const InternalTest::ViewPosition &viewStartPosition, const int offsetStartX, const int offsetStartY, const InternalTest::ViewPosition &viewEndPosition, const int offsetEndX, const int offsetEndY, const std::string &keyModifier) const
build mouse dragdrop
void reloadFile()
process reload file function
void disJoinTLS() const
process disJoin TLS function
void lockSelection() const
process lockSelection function
void modifyTLSTable()
process modifyTLSTable function
std::string getStringArgument(const std::string &argument) const
get string argument
InternalTestStep * getNextStep() const
get next step
std::string myDescription
description
void setupAndStart()
process setupAndStart function
void crossingInvertEdges() const
process crossingInvertEdges function
void resetSingleTLSPhases() const
process resetSingleTLSPhases function
void modifyStringAttribute(Category category, const int tabs, const int overlappedTabs, const std::string &value) const
modify attribute
void checkParameters(const int overlappedTabs) const
process checkParameters function
void selection() const
process selection function
void pressTLSButton(const std::string &type)
process pressTLSButton function
void resetAllTLSPhases() const
process resetAllTLSPhases function
void selectAdditionalChild()
process selectChild function
FXSelector getSelector() const
get selector (based in messageType and messageID)
void buildRedo(const int number) const
process check redo function
void undo() const
process undo function
InternalTestStep * myNextStep
next step in the test
void moveElementVertical() const
process moveElementVertical function
void focusOnFrame() const
process focusOnFrame function
void modifyColorAttribute(const int overlappedTabs) const
process modifyColorAttribute function
bool getBoolArgument(const std::string &argument) const
get bool argument
bool updateView() const
check if update view
void overwritingAccept()
process overwriting accept function
void selectEdgeType()
process select edge type function
void protectElements() const
process protect elements function
void createCrossing() const
process createCrossing function
void checkDoubleParameters(const int overlappedTabs) const
process checkDoubleParameters function
void modifyBoolAttribute(const int overlappedTabs) const
process modifyBoolAttribute function
void addPhase(const std::string &type)
process addPhase function
void createNewEdgeType()
process create new edge type function
void mouseClick(const std::string &button, const std::string &modifier) const
process click function
void checkUndoRedo() const
process check undo-redo function
DialogArgument * myDialogArgument
dialog argument
void crossingClearEdges() const
process crossingClearEdges function
void overwritingApplyToAll()
process overwriting apply to all function
void saveExistentFile()
process save existent function
bool checkBoolArgument(const std::string &argument) const
check bool argument
std::string parseStep(const std::string &rowText)
parse function and arguments
void modifyVClassDialog_NoDisallowAll(const int overlappedTabs) const
process modifyVClassDialog_DisallowAll function
void copyMeanData()
process copyMeanData function
void deleteTLS() const
process delete TLS function
void buildMouseClick(const InternalTest::ViewPosition &viewPosition, const int offsetX, const int offsetY, const std::string &button, const std::string &keyModifier) const
build mouse click event
InternalTest * myTestSystem
test system parent
void openAboutDialog()
process openAboutDialog function
void createShape(const InternalTest::ViewPosition &viewPosition, const int sizeX, const int sizeY, const bool close, const bool line) const
create shape
void saveConnectionEdit() const
process createConnectionEdit function
TLSTableTest * myTLSTableTest
TLS Table test.
void createTLS(const int overlappedTabs) const
process createTLS function
void modifyAttribute(const int overlappedTabs) const
process modifyAttribute function
void selectNetworkItems() const
process selectNetworkItems function
bool checkIntArgument(const std::string &argument) const
check int argument
void copyTLS() const
process Copy TLS function
void writeClickInfo(const InternalTest::ViewPosition &viewPosition, const int offsetX, const int offsetY, const std::string modifier) const
write click info
void changeEditMode()
process changeEditMode function
DialogArgument * getDialogArgument() const
get dialog argument
void createDataSet() const
process createDataSet function
void createMeanData()
process createMeanData function
void buildTwoPressKeyEvent(Category category, const std::string &keyA, const std::string &keyB, const bool updateView) const
build a two key press and key release (used for tabs, spaces, enter, etc)
void waitDeleteWarning() const
process waitDeleteWarning function
void createConnection(const std::string &keyModifier) const
process createConnection function
FXSelector myMessageID
message ID
TLSTableTest * getTLSTableTest() const
get TLS Table test
FXSelector getMessageID() const
get message ID
void createDataInterval() const
process createDataInterval function
void buildUndo(const int number) const
process check undo function
void moveElementHorizontal() const
process moveElementHorizontal function
void computeJunctions()
process computeJunctions function
void saveFileAs()
process save file as function
bool myUpdateView
flag to enable or disable view after execute step
void pressTLSPhaseButton() const
process pressTLSPhaseButton function
void parseArguments(const std::string &arguments)
parse arguments
void quit()
process quit function
void changeElement() const
process changeElement function
void deleteMeanData()
process deleteMeanData function
void changeMode()
process changeMode function
bool checkStringArgument(const std::string &argument) const
check string argument
void buildPressKeyEvent(Category category, const std::string &key, const bool updateView) const
build a key press and key release (used for tabs, spaces, enter, etc)
~InternalTestStep()
destructor
void changePlan() const
@bief process changePlan function
void joinJunctions()
process joinJunctions function
void redo() const
process redo function
void saveUnifiedFileAs()
process save unified file as function
void fixCrossings()
process fixCrossings function
void overwritingAbort()
process overwriting abort function
FXSelector myMessageType
message type (by default SEL_COMMAND)
void createRectangledShape()
process createRectangledShape function
void createLineShape()
process createLineShape function
void typeKey() const
process typeKey function
std::vector< std::string > myArguments
arguments
void writeError(const std::string &function, const int overlapping, const std::string &expected) const
write error
void setNextStep(InternalTestStep *nextStep)
set next step
Category getCategory() const
get category
void fixRoute()
process fixRoutes function
void selectionRectangle() const
process selectionRectangle function
void saveNewFile()
process save new file function
void leftClickOffset(const std::string &button) const
process click function
void computeJunctionsVolatileOptions()
process computeJunctionsVolatileOptions function
void modifyVClassDialog_Cancel(const int overlappedTabs) const
process modifyVClassDialog_Cancel function
void overwritingCancel()
process overwriting cancel function
void moveElement() const
process moveElement function
int getIntArgument(const std::string &argument) const
get int argument
FXEvent * buildKeyReleaseEvent(const std::string &key) const
build key release event
FXSelector getMessageType() const
get message type
void deleteFunction() const
process delete function
FXEvent * buildMouseMoveEvent(const InternalTest::ViewPosition &viewPosition, const int offsetX, const int offsetY, const int clickedButton, const std::string &keyModifier, const int numberOfClicks) const
build mouse move event
void loadFile()
process load file function
void modifyCrossingDefaultValue() const
process modifyCrossingDefaultValue function
void finish()
finish function
FXEvent * buildMouseClickEvent(FXSelType type, const InternalTest::ViewPosition &viewPosition, const int offsetX, const int offsetY, const std::string &keyModifier, const int numberOfClicks) const
build mouse left click press event
static int toInt(const std::string &sData)
converts a string into the integer value described by it by calling the char-type converter,...
static bool isInt(const std::string &sData)
check if the given sData can be converted to int