Sat, 16 Mar 2013 17:50:13 +0200
So much for that pointer class, caused more problems than it solved. For instance splitting a second quad after a first one had been split would trigger a peculiar crash...
15
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1 | #include <QAbstractButton> |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
2 | #include <qboxlayout.h> |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
3 | #include "zz_setContentsDialog.h" |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
4 | #include "io.h" |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
5 | #include "gui.h" |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
6 | |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
7 | // ============================================================================= |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
8 | // Dialog_SetContents (LDObject*) [constructor] |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
9 | // |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
10 | // Initializes the Set Contents dialog for the given LDObject |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
11 | // ============================================================================= |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
12 | Dialog_SetContents::Dialog_SetContents (LDObject* obj, QWidget* parent) : QDialog(parent) { |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
13 | setWindowTitle (APPNAME_DISPLAY ": Set Contents"); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
14 | |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
15 | qContentsLabel = new QLabel ("Set contents:", parent); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
16 | |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
17 | qContents = new QLineEdit (parent); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
18 | qContents->setText (obj->getContents ().chars()); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
19 | qContents->setWhatsThis ("The LDraw code of this object. The code written " |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
20 | "here is expected to be valid LDraw code, invalid code here results " |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
21 | "the object being turned into an error object. Please do refer to the " |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
22 | "<a href=\"http://www.ldraw.org/article/218.html\">official file format " |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
23 | "standard</a> for further information."); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
24 | qContents->setMinimumWidth (384); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
25 | |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
26 | qOKCancel = new QDialogButtonBox (QDialogButtonBox::Ok | QDialogButtonBox::Cancel, |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
27 | Qt::Horizontal, parent); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
28 | |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
29 | connect (qOKCancel, SIGNAL (accepted ()), this, SLOT (accept ())); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
30 | connect (qOKCancel, SIGNAL (rejected ()), this, SLOT (reject ())); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
31 | /* |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
32 | connect (qOKCancel, SIGNAL (clicked (QAbstractButton*)), this, SLOT (slot_handleButtons (QAbstractButton*))); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
33 | */ |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
34 | |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
35 | QVBoxLayout* layout = new QVBoxLayout; |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
36 | layout->addWidget (qContentsLabel); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
37 | layout->addWidget (qContents); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
38 | layout->addWidget (qOKCancel); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
39 | setLayout (layout); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
40 | } |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
41 | |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
42 | // ============================================================================= |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
43 | // void slot_handleButtons (QAbstractButton*) |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
44 | // |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
45 | // Handles a button.. this is used to reset the input field |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
46 | // ============================================================================= |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
47 | void Dialog_SetContents::slot_handleButtons (QAbstractButton* qButton) { |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
48 | qButton = qButton; |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
49 | } |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
50 | |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
51 | // ============================================================================= |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
52 | // void staticDialog (LDObject*) [static method] |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
53 | // |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
54 | // Performs the Set Contents dialog on the given LDObject. Object's contents |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
55 | // are exposed to the user and is reinterpreted if the user accepts the new |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
56 | // contents. |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
57 | // ============================================================================= |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
58 | void Dialog_SetContents::staticDialog (LDObject* obj, LDForgeWindow* parent) { |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
59 | if (!obj) |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
60 | return; |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
61 | |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
62 | Dialog_SetContents dlg (obj, parent); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
63 | if (dlg.exec ()) { |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
64 | LDObject* oldobj = obj; |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
65 | |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
66 | // Reinterpret it from the text of the input field |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
67 | obj = ParseLine (dlg.qContents->text ().toStdString ().c_str ()); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
68 | |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
69 | // Remove the old object |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
70 | delete oldobj; |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
71 | |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
72 | // Replace all instances of the old object with the new object |
22
335e430a6b4f
So much for that pointer class, caused more problems than it solved. For instance splitting a second quad after a first one had been split would trigger a peculiar crash...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
19
diff
changeset
|
73 | for (ulong i = 0; i < g_CurrentFile->objects.size(); ++i) { |
335e430a6b4f
So much for that pointer class, caused more problems than it solved. For instance splitting a second quad after a first one had been split would trigger a peculiar crash...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
19
diff
changeset
|
74 | if (g_CurrentFile->objects[i] == oldobj) |
335e430a6b4f
So much for that pointer class, caused more problems than it solved. For instance splitting a second quad after a first one had been split would trigger a peculiar crash...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
19
diff
changeset
|
75 | g_CurrentFile->objects[i] = obj; |
335e430a6b4f
So much for that pointer class, caused more problems than it solved. For instance splitting a second quad after a first one had been split would trigger a peculiar crash...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
19
diff
changeset
|
76 | } |
15
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
77 | |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
78 | // Rebuild stuff after this |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
79 | parent->buildObjList (); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
80 | parent->R->hardRefresh (); |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
81 | } |
a78ccb3976b6
oops, forgot the new dialog files out
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
82 | } |