27 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
27 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
28 // ============================================================================= |
28 // ============================================================================= |
29 SetContentsDialog::SetContentsDialog (LDObject* obj, QWidget* parent) : QDialog(parent) { |
29 SetContentsDialog::SetContentsDialog (LDObject* obj, QWidget* parent) : QDialog(parent) { |
30 setWindowTitle (APPNAME_DISPLAY ": Set Contents"); |
30 setWindowTitle (APPNAME_DISPLAY ": Set Contents"); |
31 |
31 |
32 qContentsLabel = new QLabel ("Set contents:", parent); |
32 lb_contents = new QLabel ("Set contents:", parent); |
33 |
33 |
34 qContents = new QLineEdit (parent); |
34 le_contents = new QLineEdit (parent); |
35 qContents->setText (obj->getContents ().chars()); |
35 le_contents->setText (obj->getContents ().chars()); |
36 qContents->setWhatsThis ("The LDraw code of this object. The code written " |
36 le_contents->setWhatsThis ("The LDraw code of this object. The code written " |
37 "here is expected to be valid LDraw code, invalid code here results " |
37 "here is expected to be valid LDraw code, invalid code here results " |
38 "the object being turned into an error object. Please do refer to the " |
38 "the object being turned into an error object. Please do refer to the " |
39 "<a href=\"http://www.ldraw.org/article/218.html\">official file format " |
39 "<a href=\"http://www.ldraw.org/article/218.html\">official file format " |
40 "standard</a> for further information."); |
40 "standard</a> for further information."); |
41 qContents->setMinimumWidth (384); |
41 le_contents->setMinimumWidth (384); |
42 |
42 |
43 if (obj->getType() == OBJ_Gibberish) { |
43 if (obj->getType() == OBJ_Gibberish) { |
44 qErrorLabel = new QLabel; |
44 lb_error = new QLabel; |
45 qErrorLabel->setText (format ("<span style=\"color: #900\">%s</span>", |
45 lb_error->setText (format ("<span style=\"color: #900\">%s</span>", |
46 static_cast<LDGibberish*> (obj)->zReason.chars())); |
46 static_cast<LDGibberish*> (obj)->zReason.chars())); |
47 |
47 |
48 QPixmap qErrorPixmap = QPixmap ("icons/error.png").scaledToHeight (16); |
48 QPixmap qErrorPixmap = QPixmap ("icons/error.png").scaledToHeight (16); |
49 |
49 |
50 qErrorIcon = new QLabel; |
50 lb_errorIcon = new QLabel; |
51 qErrorIcon->setPixmap (qErrorPixmap); |
51 lb_errorIcon->setPixmap (qErrorPixmap); |
52 } |
52 } |
53 |
53 |
54 IMPLEMENT_DIALOG_BUTTONS |
54 IMPLEMENT_DIALOG_BUTTONS |
55 |
55 |
56 QVBoxLayout* layout = new QVBoxLayout; |
56 QVBoxLayout* layout = new QVBoxLayout; |
57 layout->addWidget (qContentsLabel); |
57 layout->addWidget (lb_contents); |
58 layout->addWidget (qContents); |
58 layout->addWidget (le_contents); |
59 |
59 |
60 QHBoxLayout* layout2 = new QHBoxLayout; |
60 QHBoxLayout* layout2 = new QHBoxLayout; |
61 |
61 |
62 if (obj->getType() == OBJ_Gibberish) { |
62 if (obj->getType() == OBJ_Gibberish) { |
63 layout2->addWidget (qErrorIcon); |
63 layout2->addWidget (lb_errorIcon); |
64 layout2->addWidget (qErrorLabel); |
64 layout2->addWidget (lb_error); |
65 } |
65 } |
66 |
66 |
67 layout2->addWidget (qButtons); |
67 layout2->addWidget (bbx_buttons); |
68 layout->addLayout (layout2); |
68 layout->addLayout (layout2); |
69 setLayout (layout); |
69 setLayout (layout); |
70 |
70 |
71 setWindowTitle (APPNAME_DISPLAY " - setting contents"); |
71 setWindowTitle (APPNAME_DISPLAY " - setting contents"); |
72 setWindowIcon (QIcon ("icons/set-contents.png")); |
72 setWindowIcon (QIcon ("icons/set-contents.png")); |
91 return; |
91 return; |
92 |
92 |
93 LDObject* oldobj = obj; |
93 LDObject* oldobj = obj; |
94 |
94 |
95 // Reinterpret it from the text of the input field |
95 // Reinterpret it from the text of the input field |
96 obj = parseLine (dlg.qContents->text ().toStdString ().c_str ()); |
96 obj = parseLine (dlg.le_contents->text ().toStdString ().c_str ()); |
97 |
97 |
98 // Mark down the history now before we perform the replacement (which |
98 // Mark down the history now before we perform the replacement (which |
99 // destroys the old object) |
99 // destroys the old object) |
100 History::addEntry (new EditHistory ({(ulong) oldobj->getIndex (g_CurrentFile)}, |
100 History::addEntry (new EditHistory ({(ulong) oldobj->getIndex (g_CurrentFile)}, |
101 {oldobj->clone ()}, {obj->clone ()})); |
101 {oldobj->clone ()}, {obj->clone ()})); |