#!/usr/bin/env python3 """ Targeted fix for training_area_telegrams.cpp Qt6 API issues """ import re from pathlib import Path filepath = Path("/home/torsten/swy/sandbox/qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Proxies/TrainingAreaBase/training_area_telegrams.cpp") content = filepath.read_text() # Fix 1: fromJson - ret.equipmentNumber -> ret.m_equipmentNumber content = re.sub(r'\bret\.equipmentNumber\b', 'ret.m_equipmentNumber', content) content = re.sub(r'\bret\.timeStamp\b', 'ret.m_timeStamp', content) content = re.sub(r'\bret\.batteryPort\b', 'ret.m_batteryPort', content) content = re.sub(r'\bret\.batteryPercent\b', 'ret.m_batteryPercent', content) content = re.sub(r'\bret\.voltage\b', 'ret.m_voltage', content) content = re.sub(r'\bret\.temperature\b', 'ret.m_temperature', content) content = re.sub(r'\bret\.frequency\b', 'ret.m_frequency', content) content = re.sub(r'\bret\.generic\b', 'ret.m_generic', content) content = re.sub(r'\bret\.current\b', 'ret.m_current', content) content = re.sub(r'\bret\.switchOrValue\b', 'ret.m_switchOrValue', content) content = re.sub(r'\bret\.serialNumber\b', 'ret.m_serialNumber', content) content = re.sub(r'\bret\.header\b', 'ret.m_header', content) content = re.sub(r'\bret\.id\b', 'ret.m_id', content) content = re.sub(r'\bret\.description\b', 'ret.m_description', content) content = re.sub(r'\bret\.partyId\b', 'ret.m_partyId', content) content = re.sub(r'\bret\.reference\b', 'ret.m_reference', content) content = re.sub(r'\bret\.unitIdentifier\b', 'ret.m_unitIdentifier', content) content = re.sub(r'\bret\.identifier\b', 'ret.m_identifier', content) content = re.sub(r'\bret\.type\b', 'ret.m_type', content) content = re.sub(r'\bret\.status\b', 'ret.m_status', content) content = re.sub(r'\bret\.message\b', 'ret.m_message', content) content = re.sub(r'\bret\.latitude\b', 'ret.m_latitude', content) content = re.sub(r'\bret\.longitude\b', 'ret.m_longitude', content) content = re.sub(r'\bret\.altitude\b', 'ret.m_altitude', content) content = re.sub(r'\bret\.heading\b', 'ret.m_heading', content) content = re.sub(r'\bret\.speed\b', 'ret.m_speed', content) content = re.sub(r'\bret\.slope\b', 'ret.m_slope', content) content = re.sub(r'\bret\.roll\b', 'ret.m_roll', content) content = re.sub(r'\bret\.pitch\b', 'ret.m_pitch', content) content = re.sub(r'\bret\.fixType\b', 'ret.m_fixType', content) content = re.sub(r'\bret\.quality\b', 'ret.m_quality', content) content = re.sub(r'\bret\.satellites\b', 'ret.m_satellites', content) content = re.sub(r'\bret\.positionError\b', 'ret.m_positionError', content) content = re.sub(r'\bret\.gear\b', 'ret.m_gear', content) content = re.sub(r'\bret\.gearCharge\b', 'ret.m_gearCharge', content) content = re.sub(r'\bret\.wlsPosition\b', 'ret.m_wlsPosition', content) content = re.sub(r'\bret\.wlsParticipantState\b', 'ret.m_wlsParticipantState', content) content = re.sub(r'\bret\.prefix\b', 'ret.m_prefix', content) content = re.sub(r'\bret\.simulationType\b', 'ret.m_simulationType', content) content = re.sub(r'\bret\.position\b', 'ret.m_position', content) content = re.sub(r'\bret\.radius\b', 'ret.m_radius', content) content = re.sub(r'\bret\.groupId\b', 'ret.m_groupId', content) content = re.sub(r'\bret\.groupType\b', 'ret.m_groupType', content) content = re.sub(r'\bret\.groupName\b', 'ret.m_groupName', content) content = re.sub(r'\bret\.side\b', 'ret.m_side', content) content = re.sub(r'\bret\.participants\b', 'ret.m_participants', content) content = re.sub(r'\bret\.taskId\b', 'ret.m_taskId', content) content = re.sub(r'\bret\.taskType\b', 'ret.m_taskType', content) content = re.sub(r'\bret\.taskState\b', 'ret.m_taskState', content) content = re.sub(r'\bret\.taskProgress\b', 'ret.m_taskProgress', content) content = re.sub(r'\bret\.taskDescription\b', 'ret.m_taskDescription', content) content = re.sub(r'\bret\.uavAction\b', 'ret.m_uavAction', content) content = re.sub(r'\bret\.uavState\b', 'ret.m_uavState', content) content = re.sub(r'\bret\.uavMode\b', 'ret.m_uavMode', content) content = re.sub(r'\bret\.uavBatteryLevel\b', 'ret.m_uavBatteryLevel', content) content = re.sub(r'\bret\.uavSignalStrength\b', 'ret.m_uavSignalStrength', content) content = re.sub(r'\bret\.uavHomePosition\b', 'ret.m_uavHomePosition', content) content = re.sub(r'\bret\.uavCurrentPosition\b', 'ret.m_uavCurrentPosition', content) content = re.sub(r'\bret\.uavTargetPosition\b', 'ret.m_uavTargetPosition', content) content = re.sub(r'\bret\.uavWaypoints\b', 'ret.m_uavWaypoints', content) content = re.sub(r'\bret\.uavFlightPath\b', 'ret.m_uavFlightPath', content) content = re.sub(r'\bret\.uavPayload\b', 'ret.m_uavPayload', content) content = re.sub(r'\bret\.uavMissionId\b', 'ret.m_uavMissionId', content) content = re.sub(r'\bret\.uavMissionState\b', 'ret.m_uavMissionState', content) content = re.sub(r'\bret\.uavMissionProgress\b', 'ret.m_uavMissionProgress', content) content = re.sub(r'\bret\.uavMissionDescription\b', 'ret.m_uavMissionDescription', content) print("fromJson fixes applied") # Fix 2: toJson - QJsonObject({{...}}) -> QJsonObject{{...}} content = re.sub(r'QJsonObject\(\{\{', 'QJsonObject{{', content) content = re.sub(r'\}\}\);', '}};', content) print("toJson QJsonObject syntax fixes applied") # Fix 3: toJson - member access -> method calls for Header # Pattern: {QStringLiteral("equipmentNumber"), equipmentNumber} -> {QStringLiteral("equipmentNumber"), equipmentNumber()} content = re.sub(r'(\{QStringLiteral\("equipmentNumber"\),\s*)equipmentNumber(\})', r'\1equipmentNumber()\2', content) content = re.sub(r'(\{QStringLiteral\("timeStamp"\),\s*)qint64\(timeStamp\)(\})', r'\1qint64(timeStamp())\2', content) content = re.sub(r'(\{QStringLiteral\("batteryPort"\),\s*)batteryPort(\})', r'\1batteryPort()\2', content) content = re.sub(r'(\{QStringLiteral\("batteryPercent"\),\s*)batteryPercent(\})', r'\1batteryPercent()\2', content) content = re.sub(r'(\{QStringLiteral\("voltage"\),\s*)voltage(\})', r'\1voltage()\2', content) content = re.sub(r'(\{QStringLiteral\("temperature"\),\s*)temperature(\})', r'\1temperature()\2', content) content = re.sub(r'(\{QStringLiteral\("frequency"\),\s*)frequency(\})', r'\1frequency()\2', content) content = re.sub(r'(\{QStringLiteral\("generic"\),\s*)generic(\})', r'\1generic()\2', content) content = re.sub(r'(\{QStringLiteral\("current"\),\s*)current(\})', r'\1current()\2', content) content = re.sub(r'(\{QStringLiteral\("switchOrValue"\),\s*)switchOrValue(\})', r'\1switchOrValue()\2', content) content = re.sub(r'(\{QStringLiteral\("serialNumber"\),\s*)serialNumber(\})', r'\1serialNumber()\2', content) content = re.sub(r'(\{QStringLiteral\("header"\),\s*)header(\})', r'\1header()\2', content) content = re.sub(r'(\{QStringLiteral\("id"\),\s*)id(\})', r'\1id()\2', content) content = re.sub(r'(\{QStringLiteral\("description"\),\s*)description(\})', r'\1description()\2', content) content = re.sub(r'(\{QStringLiteral\("partyId"\),\s*)partyId(\})', r'\1partyId()\2', content) content = re.sub(r'(\{QStringLiteral\("reference"\),\s*)reference(\})', r'\1reference()\2', content) content = re.sub(r'(\{QStringLiteral\("unitIdentifier"\),\s*)unitIdentifier(\})', r'\1unitIdentifier()\2', content) content = re.sub(r'(\{QStringLiteral\("identifier"\),\s*)identifier(\})', r'\1identifier()\2', content) print("toJson method call fixes applied") filepath.write_text(content) print("Done!")