mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-08-22 08:34:12 +02:00
Give Conductor its own persisted uuid
Slice 1 of discussion #503 (from-to wiring list built on projectDataBase). Conductor is the one item type on a diagram without a stable identity of its own -- Element and Diagram both have a uuid, Conductor didn't. This is the prerequisite the wiring-list tables need: a conductor table keyed by uuid, the same way the existing element table is keyed by Element::uuid(). - Conductor gets a QUuid m_uuid, generated in the constructor, with uuid()/newUuid() accessors mirroring Element's exact pattern. - toXml()/fromXml() read/write a "uuid" attribute the same way Element already does, including the same generate-on-missing fallback (QUuid(e.attribute("uuid", QUuid::createUuid().toString()))) for projects saved before this change. - PasteDiagramCommand::redo() calls newUuid() on every pasted conductor (content.conductors(), all three categories), mirroring the existing per-element newUuid() call right above it -- otherwise copy-paste would duplicate a conductor's uuid. Backward compatibility: Conductor::valideXml() doesn't require the "uuid" attribute, so old files parse unchanged. Verified by opening a genuinely pre-uuid project (examples/industrial.qet, 150 folios, 671 conductors, legacy integer terminal1/terminal2 references with no uuid attribute at all) -- loads and renders correctly, gets uuids assigned on load, and those uuids are stable across a second load/save cycle (byte-identical uuid values). Verified paste separately: copying a selection with conductors and pasting produces distinct new uuids for every pasted conductor, none colliding with the originals or each other.
This commit is contained in:
@@ -75,6 +75,13 @@ void PasteDiagramCommand::redo()
|
||||
{
|
||||
first_redo = false;
|
||||
|
||||
//make new uuid for every pasted conductor, because old uuid are
|
||||
//the uuid of the copied conductor
|
||||
const QList <Conductor *> all_pasted_conductors = content.conductors();
|
||||
for (Conductor *c : all_pasted_conductors) {
|
||||
c -> newUuid();
|
||||
}
|
||||
|
||||
//this is the first paste, we do some actions for the new element
|
||||
const QList <Element *> elmts_list = content.m_elements;
|
||||
for (Element *e : elmts_list)
|
||||
|
||||
Reference in New Issue
Block a user