with open('src/gui_2.py', 'r', encoding='utf-8', newline='') as f: content = f.read() old = ''' # Handle link deletion if ed.begin_delete(): deleted = ed.get_deleted_link() if deleted: link_id = deleted[0] for t in self.active_tickets: tid = str(t.get('id', '')) for d in t.get('depends_on', []): if abs(hash(d + "_" + tid)) == link_id: t['depends_on'] = [dep for dep in t['depends_on'] if dep != d] self._push_mma_state_update() break ed.end_delete() ed.end()''' new = ''' # Handle link deletion if ed.begin_delete(): deleted = ed.get_deleted_link() if deleted: link_id = deleted[0] for t in self.active_tickets: tid = str(t.get('id', '')) for d in t.get('depends_on', []): if abs(hash(d + "_" + tid)) == link_id: t['depends_on'] = [dep for dep in t['depends_on'] if dep != d] self._push_mma_state_update() break ed.end_delete() # Validate DAG after any changes try: from src.dag_engine import TrackDAG ticket_dicts = [{'id': str(t.get('id', '')), 'depends_on': t.get('depends_on', [])} for t in self.active_tickets] temp_dag = TrackDAG(ticket_dicts) if temp_dag.has_cycle(): imgui.open_popup("Cycle Detected!") except Exception: pass ed.end()''' content = content.replace(old, new) with open('src/gui_2.py', 'w', encoding='utf-8', newline='') as f: f.write(content) print('Done')