Sun, 29 Jan 2017 15:05:14 +0200
Major overhaul of object→document relationship: added the Model class which models the object buffer. Each object is to be included in a model (an invariant that currently does not hold). A document is a subclass of a model. The LDObject is also now agnostic about selection, and the selection is now a set. A lot of things are probably broken now but it's a major step forward.
The LDObject::destroy method is also now gone. The model decides when objects are destroyed and calls the destructor directly. The end result removes a lot of cruft and adds structure to LDObject relations.
Notes:
- Inlining does not currently work (nothing simply gets inlined in)
- More work is required to ensure that each object actually goes into a model
<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>EditRawUI</class> <widget class="QDialog" name="EditRawUI"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>400</width> <height>87</height> </rect> </property> <property name="windowTitle"> <string>Edit LDraw Code</string> </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QLabel" name="label"> <property name="text"> <string>LDraw code:</string> </property> </widget> </item> <item> <widget class="QLineEdit" name="code"> <property name="whatsThis"> <string><html><head/><body><p>The LDraw code of this object. The code written here is expected to be valid LDraw code, invalid code here results the object being turned into an error object. Please do refer to the <a href="http://www.ldraw.org/article/218.html"><span style=" text-decoration: underline; color:#0057ae;">official file format standard</span></a> for further information.</p></body></html></string> </property> </widget> </item> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QLabel" name="errorIcon"> <property name="maximumSize"> <size> <width>16</width> <height>16</height> </size> </property> <property name="text"> <string/> </property> <property name="pixmap"> <pixmap resource="../../ldforge.qrc">:/icons/error.png</pixmap> </property> <property name="scaledContents"> <bool>true</bool> </property> </widget> </item> <item> <widget class="QLabel" name="errorDescription"> <property name="enabled"> <bool>true</bool> </property> <property name="styleSheet"> <string notr="true">color: #900</string> </property> <property name="text"> <string>Error description</string> </property> </widget> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="standardButtons"> <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </item> </layout> </widget> <resources> <include location="../../ldforge.qrc"/> </resources> <connections> <connection> <sender>buttonBox</sender> <signal>accepted()</signal> <receiver>EditRawUI</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> <x>248</x> <y>254</y> </hint> <hint type="destinationlabel"> <x>157</x> <y>274</y> </hint> </hints> </connection> <connection> <sender>buttonBox</sender> <signal>rejected()</signal> <receiver>EditRawUI</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> <x>316</x> <y>260</y> </hint> <hint type="destinationlabel"> <x>286</x> <y>274</y> </hint> </hints> </connection> </connections> </ui>