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 ==
"selectAdditionalChild") {
295 }
else if (function ==
"createRectangledShape") {
297 }
else if (function ==
"createSquaredShape") {
299 }
else if (function ==
"createLineShape") {
301 }
else if (function ==
"createMeanData") {
303 }
else if (function ==
"deleteMeanData") {
305 }
else if (function ==
"copyMeanData") {
307 }
else if (function ==
"saveExistentFile") {
309 }
else if (function ==
"checkUndoRedo") {
311 }
else if (function ==
"delete") {
313 }
else if (function ==
"selection") {
315 }
else if (function ==
"selectNetworkItems") {
317 }
else if (function ==
"lockSelection") {
319 }
else if (function ==
"selectionRectangle") {
321 }
else if (function ==
"createDataSet") {
323 }
else if (function ==
"createDataInterval") {
325 }
else if (function ==
"openAboutDialog") {
327 }
else if (function ==
"loadFile") {
329 }
else if (function ==
"saveNewFile") {
331 }
else if (function ==
"saveFileAs") {
333 }
else if (function ==
"reloadFile") {
335 }
else if (function ==
"selectEdgeType") {
337 }
else if (function ==
"createNewEdgeType") {
339 }
else if (function ==
"overwritingAccept") {
341 }
else if (function ==
"overwritingCancel") {
343 }
else if (function ==
"overwritingAbort") {
345 }
else if (function ==
"overwritingApplyToAll") {
347 }
else if (function ==
"undo") {
349 }
else if (function ==
"redo") {
351 }
else if (function ==
"quit") {
353 }
else if (function.size() > 0) {
354 std::cout <<
"Function " + function +
" not implemented in InternalTestStep" << std::endl;
361 FXSelector messageID,
Category category,
362 const std::string& description) :
363 myTestSystem(testSystem),
364 myMessageType(messageType),
365 myMessageID(messageID),
366 myCategory(category),
367 myDescription(description) {
374 Category category, FXEvent* event,
const bool updateView,
375 const std::string& description) :
376 myTestSystem(testSystem),
377 myMessageType(messageType),
378 myCategory(category),
379 myUpdateView(updateView),
380 myDescription(description),
388 const std::string& description) :
389 myTestSystem(testSystem),
392 myDescription(description),
393 myDialogArgument(dialogArgument) {
481 if (rowText.find(
"netedit.setupAndStart") != std::string::npos) {
482 return "setupAndStart";
483 }
else if (rowText.find(
"netedit.finish") != std::string::npos) {
485 }
else if (rowText.compare(0, 8,
"netedit.") != 0) {
489 std::string functionName;
491 std::string rowStr = rowText;
493 if (rowText.empty() || (rowText.front() ==
'(') || (rowText.back() !=
')')) {
494 writeError(
"parseStep", 0,
"function(arguments)");
498 while (rowStr.size() > 0) {
499 if (rowStr.front() ==
'(') {
502 functionName.push_back(rowStr.front());
503 rowStr.erase(rowStr.begin());
507 functionName = functionName.substr(8);
509 if (rowStr.size() < 2) {
510 writeError(
"parseStep", 0,
"function(arguments)");
514 rowStr.erase(rowStr.begin());
527 bool inQuotes =
false;
528 for (
size_t i = 0; i < arguments.length(); ++i) {
529 char c = arguments[i];
530 if (c ==
'\"' || c ==
'\'') {
532 inQuotes = !inQuotes;
533 current.push_back(c);
534 }
else if (c ==
',' && !inQuotes) {
536 if (!current.empty()) {
538 size_t start = current.find_first_not_of(
" \t");
539 size_t end = current.find_last_not_of(
" \t");
540 myArguments.push_back(current.substr(start, end - start + 1));
548 if (!current.empty()) {
549 size_t start = current.find_first_not_of(
" \t");
550 size_t end = current.find_last_not_of(
" \t");
551 myArguments.push_back(current.substr(start, end - start + 1));
555 writeError(
"parseArguments", 0,
"<\"argument\", \"argument\">");
565 std::cout <<
"TestFunctions: Netedit opened successfully" << std::endl;
566 std::cout <<
"Finding reference" << std::endl;
567 std::cout <<
"TestFunctions: 'reference.png' found. Position: " <<
579 std::cout <<
"TestFunctions: Netedit closed successfully" << std::endl;
586 writeError(
"leftClick", 0,
"<reference, position>");
602 writeError(
"leftClickOffset", 0,
"<reference, position, int, int>");
620 writeError(
"moveElementHorizontal", 0,
"<reference, position, radius>");
630 buildMouseDragDrop(position, radius.getRight(), 0, position, radius.getLeft(), 0,
"");
641 writeError(
"moveElementVertical", 0,
"<reference, position, radius>");
651 buildMouseDragDrop(position, radius.getRight(), 0, position, 0, radius.getDown(),
"");
662 writeError(
"moveElement", 0,
"<reference, position, radius>");
672 buildMouseDragDrop(position, radius.getRight(), 0, position, radius.getRight(), radius.getDown(),
"");
674 buildMouseDragDrop(position, radius.getRight(), radius.getDown(), position, radius.getLeft(), radius.getDown(),
"");
675 buildMouseDragDrop(position, radius.getLeft(), radius.getDown(), position, radius.getLeft(), radius.getUp(),
"");
705 writeError(
"contextualMenuOperation", 0,
"<reference, position, contextualMenuOperations>");
713 for (
int i = 0; i < contextualMenu.getMainMenuPosition(); i++) {
719 if (contextualMenu.getSubMenuAPosition() > 0) {
720 for (
int i = 0; i < contextualMenu.getSubMenuAPosition(); i++) {
727 if (contextualMenu.getSubMenuBPosition() > 0) {
728 for (
int i = 0; i < contextualMenu.getSubMenuBPosition(); i++) {
771 writeError(
"modifyAttribute", overlappedTabs,
"<int/attributeEnum, \"string\">");
782 writeError(
"modifyBoolAttribute", overlappedTabs,
"<int/attributeEnum>");
793 writeError(
"modifyColorAttribute", overlappedTabs,
"<int/attributeEnum>");
809 writeError(
"modifyVClassDialog_NoDisallowAll", overlappedTabs,
"<int/attributeEnum, int/attributeEnum>");
825 writeError(
"modifyVClassDialog_DisallowAll", overlappedTabs,
"<int/attributeEnum, int/attributeEnum>");
844 writeError(
"modifyVClassDialog_Cancel", overlappedTabs,
"<int/attributeEnum, int/attributeEnum>");
862 writeError(
"modifyVClassDialog_Reset", overlappedTabs,
"<int/attributeEnum, int/attributeEnum>");
882 writeError(
"modifyVTypeDialogAttribute", 0,
"<str, int/attributeEnum, str>");
889 if (operation ==
"open") {
893 std::cout << value << std::endl;
897 for (
int i = 0; i < tabs; i++) {
904 for (
const char c : value) {
911 if (operation ==
"close") {
924 writeError(
"createConnection", 0,
"<reference, position, position>");
956 writeError(
"modifyCrossingDefaultValue", 0,
"<int, value>");
968 writeError(
"modifyCrossingDefaultBoolValue", 0,
"<int>");
1057 writeError(
"createTLS", overlappedTabs,
"<>");
1116 writeError(
"modifyTLSTable", 0,
"<row, int/attributeEnum, \"string\">");
1126 std::cout << text << std::endl;
1134 writeError(
"resetSingleTLSPhases", 0,
"<bool>");
1148 writeError(
"resetAllTLSPhases", 0,
"<bool>");
1162 writeError(
"pressTLSPhaseButton", 0,
"<int/attributeEnum>");
1172 writeError(
"addPhase" + type, 0,
"<int/attributeEnum>");
1178 if (type ==
"default") {
1180 }
else if (type ==
"duplicate") {
1182 }
else if (type ==
"red") {
1184 }
else if (type ==
"yellow") {
1186 }
else if (type ==
"green") {
1188 }
else if (type ==
"priorityGreen") {
1190 }
else if (type ==
"deletePhase") {
1192 }
else if (type ==
"moveUp") {
1194 }
else if (type ==
"moveDown") {
1204 writeError(
"pressTLSButton" + type, 0,
"<>");
1208 if (type ==
"cleanStates") {
1210 }
else if (type ==
"addStates") {
1212 }
else if (type ==
"groupSignal") {
1214 }
else if (type ==
"ungroupSignal") {
1224 writeError(
"checkParameters", overlappedTabs,
"<int/attributeEnum>");
1248 writeError(
"checkDoubleParameters", overlappedTabs,
"<int/attributeEnum>");
1272 writeError(
"changeEditMode", 0,
"<int/attributeEnum>");
1276 if (
myArguments[0] ==
"netedit.attrs.modes.network.grid") {
1278 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.junctionShape") {
1280 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.spreadVehicle") {
1282 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.showDemandElements") {
1284 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.selectLane") {
1286 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.showConnections") {
1288 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.hideConnetions") {
1290 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.showSubAdditionals") {
1292 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.showTAZElements") {
1294 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.automaticSelectJunctions") {
1296 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.applyAllPhases") {
1298 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.mergingJunction") {
1300 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.showBubbles") {
1302 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.moveElevation") {
1304 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.chainMode") {
1306 }
else if (
myArguments[0] ==
"netedit.attrs.modes.network.twoWayMode") {
1309 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.grid") {
1311 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.junctionShape") {
1313 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.spreadVehicle") {
1315 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.showNonInspected") {
1317 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.showShapes") {
1319 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.showAllTrips") {
1321 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.showPersonPlans") {
1323 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.lockPerson") {
1325 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.showContainerPlans") {
1327 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.lockContainer") {
1329 }
else if (
myArguments[0] ==
"netedit.attrs.modes.demand.showOverlappedRoutes") {
1332 }
else if (
myArguments[0] ==
"netedit.attrs.modes.data.junctionShape") {
1334 }
else if (
myArguments[0] ==
"netedit.attrs.modes.data.showAdditionals") {
1336 }
else if (
myArguments[0] ==
"netedit.attrs.modes.data.showShapes") {
1338 }
else if (
myArguments[0] ==
"netedit.attrs.modes.data.showDemandElements") {
1340 }
else if (
myArguments[0] ==
"netedit.attrs.modes.data.TAZRelDrawingMode") {
1342 }
else if (
myArguments[0] ==
"netedit.attrs.modes.data.TAZFill") {
1344 }
else if (
myArguments[0] ==
"netedit.attrs.modes.data.TAZRelOnlyFrom") {
1346 }
else if (
myArguments[0] ==
"netedit.attrs.modes.data.TAZRelOnlyTo") {
1363 if (savingType ==
"network") {
1365 }
else if (savingType ==
"additionals") {
1367 }
else if (savingType ==
"demands") {
1369 }
else if (savingType ==
"datas") {
1371 }
else if (savingType ==
"meanDatas") {
1373 }
else if (savingType ==
"sumoConfig") {
1375 }
else if (savingType ==
"neteditConfig") {
1387 writeError(
"checkUndoRedo", 0,
"<referencePosition>");
1389 const int numUndoRedos = 9;
1409 writeError(
"selection", 0,
"<selection operation>");
1414 if (selectionType ==
"default") {
1416 }
else if (selectionType ==
"save") {
1418 }
else if (selectionType ==
"load") {
1420 }
else if (selectionType ==
"add") {
1422 }
else if (selectionType ==
"remove") {
1424 }
else if (selectionType ==
"keep") {
1426 }
else if (selectionType ==
"replace") {
1428 }
else if (selectionType ==
"clear") {
1430 }
else if (selectionType ==
"invert") {
1432 }
else if (selectionType ==
"invertData") {
1434 }
else if (selectionType ==
"delete") {
1440 for (
int i = 0; i < numTabs; i++) {
1443 if (selectionType ==
"save") {
1446 }
else if (selectionType ==
"load") {
1460 writeError(
"selectNetworkItems", 0,
"<element/int, \"attribute\", \"value\">");
1472 for (
const char c :
"Network elements") {
1476 std::cout <<
"Network elements" << std::endl;
1482 for (
const char c : element) {
1486 std::cout << element << std::endl;
1492 for (
const char c : attribute) {
1496 std::cout << attribute << std::endl;
1502 for (
const char c : value) {
1506 std::cout << value << std::endl;
1516 writeError(
"lockSelection", 0,
"<element/int, \"attribute\", \"value\">");
1562 writeError(
"selectionRectangle", 0,
"<viewPosition, viewPosition>");
1578 writeError(
"createDataSet", 0,
"<dataSetId>");
1583 std::cout << dataSetId << std::endl;
1587 for (
int i = 0; i < 2; i++) {
1593 for (
const char c : dataSetId) {
1607 writeError(
"createDataInterval", 0,
"<begin, end>");
1613 std::cout << begin << std::endl;
1614 std::cout << end << std::endl;
1618 for (
int i = 0; i < 6; i++) {
1626 for (
const char c : begin) {
1632 for (
const char c : end) {
1659 writeError(
"loadFile", 0,
"<referencePosition, type, file, extension, extensionIndex>");
1668 std::string workingDirectory = FXSystem::getCurrentDirectory().text();
1669 const auto sandboxDirectory = std::getenv(
"TEXTTEST_SANDBOX");
1670 if (sandboxDirectory) {
1671 workingDirectory = sandboxDirectory;
1674 if (type ==
"neteditConfig") {
1676 }
else if (type ==
"sumoConfig") {
1678 }
else if (type ==
"netconvertConfig") {
1680 }
else if (type ==
"network") {
1682 }
else if (type ==
"trafficLights") {
1684 }
else if (type ==
"edgeTypes") {
1686 }
else if (type ==
"additional") {
1688 }
else if (type ==
"demand") {
1690 }
else if (type ==
"data") {
1692 }
else if (type ==
"meanData") {
1695 WRITE_ERRORF(
"Invalid type '%' used in function loadFile", type);
1698 std::cout << file <<
"." << extension << std::endl;
1709 writeError(
"saveNewFile", 0,
"<referencePosition, type, extension, extensionIndex>");
1718 std::string workingDirectory = FXSystem::getCurrentDirectory().text();
1719 const auto sandboxDirectory = std::getenv(
"TEXTTEST_SANDBOX");
1720 if (sandboxDirectory) {
1721 workingDirectory = sandboxDirectory;
1724 if (type ==
"neteditConfig") {
1726 file =
"netedit2." + extension;
1727 }
else if (type ==
"sumoConfig") {
1729 file =
"sumo2." + extension;
1730 }
else if (type ==
"xml") {
1732 file =
"net2." + extension;
1733 }
else if (type ==
"joinedJunctions") {
1735 file =
"joinedjunctions2." + extension;
1736 }
else if (type ==
"network") {
1738 file =
"net2." + extension;
1739 }
else if (type ==
"trafficLights") {
1741 file =
"trafficlights2." + extension;
1742 }
else if (type ==
"edgeTypes") {
1744 file =
"edgetypes2." + extension;
1745 }
else if (type ==
"additional") {
1747 file =
"additionals2." + extension;
1748 }
else if (type ==
"demand") {
1750 file =
"routes2." + extension;
1751 }
else if (type ==
"data") {
1753 file =
"datas2." + extension;
1754 }
else if (type ==
"meanData") {
1756 file =
"meandatas2.dat." + extension;
1758 WRITE_ERRORF(
"Invalid type '%' used in function loadFile", type);
1761 std::cout << file << std::endl;
1772 writeError(
"saveFileAs", 0,
"<referencePosition, type, bool>");
1779 std::string workingDirectory = FXSystem::getCurrentDirectory().text();
1780 const auto sandboxDirectory = std::getenv(
"TEXTTEST_SANDBOX");
1781 if (sandboxDirectory) {
1782 workingDirectory = sandboxDirectory;
1785 if (type ==
"neteditConfig") {
1787 file =
"netedit3.netecfg";
1788 }
else if (type ==
"sumoConfig") {
1790 file =
"sumo3.sumocfg";
1791 }
else if (type ==
"network") {
1793 file =
"net3.net.xml";
1794 }
else if (type ==
"trafficLights") {
1796 file =
"trafficlights3.tll.xml";
1797 }
else if (type ==
"edgeTypes") {
1799 file =
"edgetypes3.typ.xml";
1800 }
else if (type ==
"additional") {
1802 file =
"additionals3.add.xml";
1803 }
else if (type ==
"jupedsim") {
1805 file =
"additionals3.add.xml";
1806 }
else if (type ==
"demand") {
1808 file =
"routes3.rou.xml";
1809 }
else if (type ==
"data") {
1811 file =
"datas3.dat.xml";
1812 }
else if (type ==
"meanData") {
1814 file =
"meandatas3.dat.add.xml";
1816 WRITE_ERRORF(
"Invalid type '%' used in function loadFile", type);
1819 std::cout << file << std::endl;
1830 writeError(
"reloadFile", 0,
"<referencePosition, type, bool>");
1836 if (type ==
"neteditConfig") {
1838 }
else if (type ==
"sumoConfig") {
1840 }
else if (type ==
"network") {
1842 }
else if (type ==
"edgeTypes") {
1844 }
else if (type ==
"trafficLights") {
1846 }
else if (type ==
"additional") {
1848 }
else if (type ==
"demand") {
1850 }
else if (type ==
"data") {
1852 }
else if (type ==
"meanData") {
1855 WRITE_ERRORF(
"Invalid type '%' used in function reloadFile", type);
1880 writeError(
"createNewEdgeType", 0,
"<bool>");
1934 writeError(
"undo", 0,
"<referencePosition, int>");
1945 writeError(
"redo", 0,
"<referencePosition, int>");
1961 if (supermode ==
"network") {
1963 }
else if (supermode ==
"demand") {
1965 }
else if (supermode ==
"data") {
1968 writeError(
"supermode", 0,
"<network/demand/data>");
1988 if (mode ==
"inspect") {
1990 }
else if (mode ==
"delete") {
1992 }
else if (mode ==
"select") {
1994 }
else if (mode ==
"move") {
1996 }
else if ((mode ==
"createEdge") || (mode ==
"edgeData")) {
1998 }
else if ((mode ==
"trafficLight") || (mode ==
"type") || (mode ==
"TLS")) {
2000 }
else if ((mode ==
"connection") || (mode ==
"container")) {
2002 }
else if ((mode ==
"prohibition") || (mode ==
"containerPlan")) {
2004 }
else if ((mode ==
"crossing") || (mode ==
"route") || (mode ==
"edgeRelData")) {
2006 }
else if ((mode ==
"additional") || (mode ==
"stop")) {
2008 }
else if ((mode ==
"wire") || (mode ==
"routeDistribution")) {
2010 }
else if ((mode ==
"taz") || (mode ==
"TAZ") || (mode ==
"TAZRelData")) {
2012 }
else if ((mode ==
"shape") || (mode ==
"person")) {
2014 }
else if ((mode ==
"decal") || (mode ==
"typeDistribution")) {
2016 }
else if (mode ==
"personPlan") {
2018 }
else if (mode ==
"vehicle") {
2020 }
else if (mode ==
"meanData") {
2023 writeError(
"changeMode", 0,
"<inspect/delete/select/move...>");
2033 writeError(
"changeElement", 0,
"<\"frame\", \"string\">");
2039 if (frame ==
"additionalFrame") {
2041 }
else if (frame ==
"shapeFrame") {
2043 }
else if (frame ==
"vehicleFrame") {
2045 }
else if (frame ==
"routeFrame") {
2047 }
else if (frame ==
"personFrame") {
2049 }
else if (frame ==
"containerFrame") {
2051 }
else if (frame ==
"personPlanFrame") {
2053 }
else if (frame ==
"containerPlanFrame") {
2055 }
else if (frame ==
"stopFrame") {
2057 }
else if (frame ==
"meanDataFrame") {
2060 WRITE_ERRORF(
"Invalid frame '%' used in function changeElement", frame);
2064 std::cout << element << std::endl;
2068 for (
int i = 0; i < numTabs; i++) {
2072 for (
const char c : element) {
2088 writeError(
"changePlan", 0,
"<\"type\", \"plan\", true/false>");
2095 if ((type !=
"person") && (type !=
"container")) {
2096 WRITE_ERRORF(
"invalid plan type '%' used in changePlan()", type);
2108 for (
int i = 0; i < numTabs; i++) {
2112 for (
const char c : plan) {
2116 std::cout << plan << std::endl;
2138 writeError(
"computeJunctionsVolatileOptions", 0,
"<yes/no/esc>");
2145 if (dialogArgument ==
"yes") {
2147 }
else if (dialogArgument ==
"no") {
2161 writeError(
"selectAdditionalChild", 0,
"<int, int>");
2168 for (
int i = 0; i < tabs; i++) {
2172 for (
int i = 0; i < downs; i++) {
2190 writeError(
"createRectangledShape", 0,
"<viewPosition, sizeX, sizeY, true/false>");
2208 writeError(
"createSquaredShape", 0,
"<viewPosition, size, true/false>");
2227 writeError(
"createLineShape", 0,
"<viewPosition, sizeX, sizeY, true/false>");
2306 if (argument ==
"True") {
2308 }
else if (argument ==
"False") {
2318 if (argument ==
"True") {
2328 if (argument.size() < 2) {
2330 }
else if ((argument.front() != argument.back()) || ((argument.front() !=
'\'') && ((argument.front() !=
'\"')))) {
2340 std::string argumentParsed;
2341 for (
int i = 1; i < ((int)argument.size() - 1); i++) {
2342 argumentParsed.push_back(argument[i]);
2344 return argumentParsed;
2350 auto start = std::find_if_not(str.begin(), str.end(), isspace);
2351 auto end = std::find_if_not(str.rbegin(), str.rend(), isspace).base();
2353 return std::string(start, end);
2362 if (overlapping > 0) {
2363 WRITE_ERRORF(
"Invalid internal testStep function '%Ovelapped', requires '%' arguments ", function, expected);
2365 WRITE_ERRORF(
"Invalid internal testStep function '%', requires '%' arguments ", function, expected);
2379 const int sizeX,
const int sizeY,
const bool close,
2380 const bool line)
const {
2382 const int halfSizeX = int(sizeX * -0.5);
2383 const int halfSizeY = int(sizeY * -0.5);
2417 std::cout << value << std::endl;
2421 for (
int i = 0; i < (tabs + overlappedTabs); i++) {
2425 if (value.empty()) {
2428 for (
const char c : value) {
2442 for (
int i = 0; i < (tabs + overlappedTabs); i++) {
2459 std::cout <<
"TestFunctions: Clicked over position " <<
2465 for (
int i = 0; i < number; i++) {
2480 std::cout <<
"TestFunctions: Clicked over position " <<
2486 for (
int i = 0; i < number; i++) {
2492std::pair<FXint, FXString>
2494 std::pair<FXint, FXString> solution;
2496 if (key.size() == 1) {
2497 solution.first = FXint(key.front());
2498 solution.second.append(key.front());
2501 if (key ==
"backspace") {
2502 solution.first = KEY_BackSpace;
2503 solution.second =
"\b";
2504 }
else if (key ==
"space") {
2505 solution.first = KEY_space;
2506 }
else if (key ==
"tab") {
2507 solution.first = KEY_Tab;
2508 solution.second =
"\t";
2509 }
else if (key ==
"clear") {
2510 solution.first = KEY_Clear;
2511 }
else if (key ==
"enter" || key ==
"return") {
2512 solution.first = KEY_Return;
2513 solution.second =
"\n";
2514 }
else if (key ==
"pause") {
2515 solution.first = KEY_Pause;
2516 }
else if (key ==
"sys_req") {
2517 solution.first = KEY_Sys_Req;
2518 }
else if (key ==
"esc" || key ==
"escape") {
2519 solution.first = KEY_Escape;
2520 solution.second =
"\x1B";
2521 }
else if (key ==
"delete") {
2522 solution.first = KEY_Delete;
2523 solution.second =
"\x7F";
2524 }
else if (key ==
"multi_key") {
2525 solution.first = KEY_Multi_key;
2527 }
else if (key ==
"shift") {
2528 solution.first = KEY_Shift_L;
2529 }
else if (key ==
"control") {
2530 solution.first = KEY_Control_L;
2532 }
else if (key ==
"home") {
2533 solution.first = KEY_Home;
2534 }
else if (key ==
"left") {
2535 solution.first = KEY_Left;
2536 }
else if (key ==
"up") {
2537 solution.first = KEY_Up;
2538 }
else if (key ==
"right") {
2539 solution.first = KEY_Right;
2540 }
else if (key ==
"down") {
2541 solution.first = KEY_Down;
2542 }
else if (key ==
"prior" || key ==
"page_up") {
2543 solution.first = KEY_Page_Up;
2544 }
else if (key ==
"next" || key ==
"page_down") {
2545 solution.first = KEY_Page_Down;
2546 }
else if (key ==
"end") {
2547 solution.first = KEY_End;
2548 }
else if (key ==
"begin") {
2549 solution.first = KEY_Begin;
2551 }
else if (key ==
"f1") {
2553 }
else if (key ==
"f2") {
2555 }
else if (key ==
"f3") {
2557 }
else if (key ==
"f4") {
2559 }
else if (key ==
"f5") {
2561 }
else if (key ==
"f6") {
2563 }
else if (key ==
"f7") {
2565 }
else if (key ==
"f8") {
2567 }
else if (key ==
"f9") {
2569 }
else if (key ==
"f10") {
2571 }
else if (key ==
"f11" || key ==
"l1") {
2573 }
else if (key ==
"f12" || key ==
"l2") {
2577 solution.first = KEY_VoidSymbol;
2587 FXEvent* keyPressEvent =
new FXEvent();
2590 keyPressEvent->synthetic =
true;
2591 keyPressEvent->type = SEL_KEYPRESS;
2592 keyPressEvent->code = keyValues.first;
2593 keyPressEvent->text = keyValues.second;
2594 return keyPressEvent;
2601 FXEvent* keyPressEvent =
new FXEvent();
2604 keyPressEvent->synthetic =
true;
2605 keyPressEvent->type = SEL_KEYPRESS;
2606 keyPressEvent->code = keyValues.first;
2607 keyPressEvent->text = keyValues.second;
2609 return keyPressEvent;
2626 if (keyA ==
"shift") {
2627 pressEvent->state = SHIFTMASK;
2628 releaseEvent->state = SHIFTMASK;
2629 }
else if (keyA ==
"control") {
2630 pressEvent->state = CONTROLMASK;
2631 releaseEvent->state = CONTROLMASK;
2632 }
else if (keyA ==
"alt") {
2633 pressEvent->state = ALTMASK;
2634 releaseEvent->state = ALTMASK;
2643 const int offsetX,
const int offsetY,
2644 const std::string& button,
const std::string& keyModifier)
const {
2648 true,
"mouse moved to click position");
2650 if (button ==
"left") {
2653 true,
"mouse button " + button +
" pressed");
2656 true,
"mouse button " + button +
" released");
2657 }
else if (button ==
"center") {
2660 true,
"mouse button " + button +
" pressed");
2663 true,
"mouse button " + button +
" released");
2664 }
else if (button ==
"right") {
2667 true,
"mouse button " + button +
" pressed");
2670 true,
"mouse button " + button +
" released");
2677 const int offsetStartX,
const int offsetStartY,
2679 const int offsetEndX,
const int offsetEndY,
2680 const std::string& keyModifier)
const {
2686 true,
"mouse moved to click position (dragDrop)");
2689 buildMouseClickEvent(SEL_LEFTBUTTONPRESS, viewStartPosition, offsetStartX, offsetStartY, keyModifier, 1),
2690 true,
"mouse button left pressed (dragDrop)");
2692 for (
const auto& position : interpolationSteps) {
2695 true,
"mouse moved (dragDrop)");
2699 buildMouseClickEvent(SEL_LEFTBUTTONRELEASE, viewEndPosition, offsetEndX, offsetEndY, keyModifier, 1),
2700 true,
"mouse button left released (dragDrop)");
2706 const int offsetX,
const int offsetY,
const int clickedButton,
2707 const std::string& keyModifier,
const int numberOfClicks)
const {
2708 FXEvent* moveEvent =
new FXEvent();
2711 moveEvent->type = SEL_MOTION;
2712 moveEvent->synthetic =
true;
2717 moveEvent->click_x = 0;
2718 moveEvent->click_y = 0;
2719 moveEvent->moved =
true;
2720 moveEvent->rect = FXRectangle(0, 0, 0, 0);
2721 moveEvent->click_button = clickedButton;
2722 moveEvent->click_count = numberOfClicks;
2723 moveEvent->code = 0;
2725 if (keyModifier ==
"control") {
2726 moveEvent->state = CONTROLMASK;
2727 }
else if (keyModifier ==
"shift") {
2728 moveEvent->state = SHIFTMASK;
2729 }
else if (keyModifier ==
"leftButton") {
2730 moveEvent->state = LEFTBUTTONMASK;
2732 moveEvent->state = 0;
2742 const int offsetX,
const int offsetY,
const std::string& keyModifier,
2743 const int numberOfClicks)
const {
2744 FXEvent* clickEvent =
new FXEvent();
2747 clickEvent->type = type;
2748 clickEvent->synthetic =
true;
2755 clickEvent->click_count = numberOfClicks;
2756 clickEvent->moved =
false;
2757 clickEvent->rect = FXRectangle(0, 0, 0, 0);
2759 if ((type == SEL_LEFTBUTTONPRESS) || (type == SEL_LEFTBUTTONRELEASE)) {
2760 clickEvent->click_button = LEFTBUTTON;
2761 clickEvent->code = LEFTBUTTON;
2762 }
else if ((type == SEL_MIDDLEBUTTONPRESS) || (type == SEL_MIDDLEBUTTONRELEASE)) {
2763 clickEvent->click_button = MIDDLEBUTTON;
2764 clickEvent->code = MIDDLEBUTTON;
2765 }
else if ((type == SEL_RIGHTBUTTONPRESS) || (type == SEL_RIGHTBUTTONRELEASE)) {
2766 clickEvent->click_button = RIGHTBUTTON;
2767 clickEvent->code = RIGHTBUTTON;
2769 clickEvent->click_button = 0;
2770 clickEvent->code = 0;
2773 if (keyModifier ==
"control") {
2774 clickEvent->state = CONTROLMASK;
2775 }
else if (keyModifier ==
"shift") {
2776 clickEvent->state = SHIFTMASK;
2778 clickEvent->state = 0;
2786 const int offsetX,
const int offsetY,
2787 const std::string modifier)
const {
2788 if (modifier ==
"control") {
2789 std::cout <<
"TestFunctions: Clicked with Control key pressed over position " <<
2792 }
else if (modifier ==
"shift") {
2793 std::cout <<
"TestFunctions: Clicked with Shift key pressed over position " <<
2797 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_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 redo() const
process redo 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