src/lddocument.cpp

changeset 1236
861bf8ebb8ec
parent 1159
6ad8cdcd88d9
child 1240
cebb7ef54f41
equal deleted inserted replaced
1235:b2e44b23b42a 1236:861bf8ebb8ec
227 } 227 }
228 } 228 }
229 229
230 QByteArray data; 230 QByteArray data;
231 231
232 if (sizeptr)
233 *sizeptr = 0;
234
235 // File is open, now save the model to it. Note that LDraw requires files to have DOS line endings. 232 // File is open, now save the model to it. Note that LDraw requires files to have DOS line endings.
236 for (LDObject* obj : objects()) 233 for (LDObject* obj : objects())
237 { 234 {
238 QByteArray subdata ((obj->asText() + "\r\n").toUtf8()); 235 if (obj->isInverted())
239 data.append (subdata); 236 data += "0 BFC INVERTNEXT\r\n";
240 237
241 if (sizeptr) 238 data += (obj->asText() + "\r\n").toUtf8();
242 *sizeptr += countof(subdata);
243 } 239 }
244 240
245 QFile f (path); 241 QFile f (path);
246 242
247 if (not f.open (QIODevice::WriteOnly)) 243 if (not f.open (QIODevice::WriteOnly))
248 return false; 244 return false;
245
246 if (sizeptr)
247 *sizeptr = data.size();
249 248
250 f.write (data); 249 f.write (data);
251 f.close(); 250 f.close();
252 251
253 // We have successfully saved, update the save position now. 252 // We have successfully saved, update the save position now.
442 { 441 {
443 if (not m_selection.contains(obj) and obj->model() == this) 442 if (not m_selection.contains(obj) and obj->model() == this)
444 { 443 {
445 m_selection.insert(obj); 444 m_selection.insert(obj);
446 emit objectModified(obj); 445 emit objectModified(obj);
447
448 // If this object is inverted with INVERTNEXT, select the INVERTNEXT as well.
449 LDBfc* invertnext;
450
451 if (obj->previousIsInvertnext(invertnext))
452 addToSelection(invertnext);
453 } 446 }
454 } 447 }
455 448
456 // ============================================================================= 449 // =============================================================================
457 // 450 //
459 { 452 {
460 if (m_selection.contains(obj)) 453 if (m_selection.contains(obj))
461 { 454 {
462 m_selection.remove(obj); 455 m_selection.remove(obj);
463 emit objectModified(obj); 456 emit objectModified(obj);
464
465 // If this object is inverted with INVERTNEXT, deselect the INVERTNEXT as well.
466 LDBfc* invertnext;
467
468 if (obj->previousIsInvertnext(invertnext))
469 removeFromSelection(invertnext);
470 } 457 }
471 } 458 }
472 459
473 // ============================================================================= 460 // =============================================================================
474 // 461 //

mercurial