| |
1 /* |
| |
2 * LDForge: LDraw parts authoring CAD |
| |
3 * Copyright (C) 2013 Santeri `arezey` Piippo |
| |
4 * |
| |
5 * This program is free software: you can redistribute it and/or modify |
| |
6 * it under the terms of the GNU General Public License as published by |
| |
7 * the Free Software Foundation, either version 3 of the License, or |
| |
8 * (at your option) any later version. |
| |
9 * |
| |
10 * This program is distributed in the hope that it will be useful, |
| |
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| |
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| |
13 * GNU General Public License for more details. |
| |
14 * |
| |
15 * You should have received a copy of the GNU General Public License |
| |
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| |
17 */ |
| |
18 |
| |
19 #include <qfiledialog.h> |
| |
20 #include <qmessagebox.h> |
| |
21 #include "gui.h" |
| |
22 #include "file.h" |
| |
23 #include "zz_newPartDialog.h" |
| |
24 #include "zz_configDialog.h" |
| |
25 #include "zz_addObjectDialog.h" |
| |
26 |
| |
27 // ============================================================================= |
| |
28 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
| |
29 // ============================================================================= |
| |
30 ACTION (newFile, "&New", "brick", "Create a new part model.", CTRL (N)) { |
| |
31 NewPartDialog::StaticDialog (); |
| |
32 } |
| |
33 |
| |
34 // ============================================================================= |
| |
35 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
| |
36 // ============================================================================= |
| |
37 ACTION (open, "&Open", "file-open", "Load a part model from a file.", CTRL (O)) { |
| |
38 str zName; |
| |
39 zName += QFileDialog::getOpenFileName (g_ForgeWindow, "Open File", |
| |
40 "", "LDraw files (*.dat *.ldr)"); |
| |
41 |
| |
42 if (~zName) |
| |
43 openMainFile (zName); |
| |
44 } |
| |
45 |
| |
46 // ============================================================================= |
| |
47 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
| |
48 // ============================================================================= |
| |
49 void doSaveAs () { |
| |
50 str zName; |
| |
51 zName += QFileDialog::getSaveFileName (g_ForgeWindow, "Save As", |
| |
52 "", "LDraw files (*.dat *.ldr)"); |
| |
53 |
| |
54 if (~zName && g_CurrentFile->save (zName)) |
| |
55 g_CurrentFile->zFileName = zName; |
| |
56 } |
| |
57 |
| |
58 // ============================================================================= |
| |
59 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
| |
60 // ============================================================================= |
| |
61 ACTION (save, "&Save", "file-save", "Save the part model.", CTRL (S)) { |
| |
62 if (!~g_CurrentFile->zFileName) { |
| |
63 // If we don't have a file name, this is an anonymous file created |
| |
64 // with the new file command. We cannot save without a name so ask |
| |
65 // the user for one. |
| |
66 doSaveAs (); |
| |
67 return; |
| |
68 } |
| |
69 |
| |
70 g_CurrentFile->save (); |
| |
71 } |
| |
72 |
| |
73 // ============================================================================= |
| |
74 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
| |
75 // ============================================================================= |
| |
76 ACTION (saveAs, "Save &As", "file-save-as", "Save the part model to a specific file.", CTRL_SHIFT (S)) |
| |
77 { |
| |
78 doSaveAs (); |
| |
79 } |
| |
80 |
| |
81 // ============================================================================= |
| |
82 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
| |
83 // ============================================================================= |
| |
84 ACTION (settings, "Settings", "settings", "Edit the settings of " APPNAME_DISPLAY ".", (0)) { |
| |
85 ConfigDialog::staticDialog (g_ForgeWindow); |
| |
86 } |
| |
87 |
| |
88 // ============================================================================= |
| |
89 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
| |
90 // ============================================================================= |
| |
91 ACTION (exit, "&Exit", "exit", "Close " APPNAME_DISPLAY ".", CTRL (Q)) { |
| |
92 exit (0); |
| |
93 } |
| |
94 |
| |
95 // ============================================================================= |
| |
96 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
| |
97 // ============================================================================= |
| |
98 ACTION (newSubfile, "New Subfile", "add-subfile", "Creates a new subfile reference.", 0) { |
| |
99 |
| |
100 } |
| |
101 |
| |
102 ACTION (newLine, "New Line", "add-line", "Creates a new line.", 0) { |
| |
103 AddObjectDialog::staticDialog (OBJ_Line, g_ForgeWindow); |
| |
104 } |
| |
105 |
| |
106 ACTION (newTriangle, "New Triangle", "add-triangle", "Creates a new triangle.", 0) { |
| |
107 AddObjectDialog::staticDialog (OBJ_Triangle, g_ForgeWindow); |
| |
108 } |
| |
109 |
| |
110 ACTION (newQuad, "New Quadrilateral", "add-quad", "Creates a new quadrilateral.", 0) { |
| |
111 AddObjectDialog::staticDialog (OBJ_Quad, g_ForgeWindow); |
| |
112 } |
| |
113 |
| |
114 ACTION (newCondLine, "New Conditional Line", "add-condline", "Creates a new conditional line.", 0) { |
| |
115 AddObjectDialog::staticDialog (OBJ_CondLine, g_ForgeWindow); |
| |
116 } |
| |
117 |
| |
118 ACTION (newComment, "New Comment", "add-comment", "Creates a new comment.", 0) { |
| |
119 AddObjectDialog::staticDialog (OBJ_Comment, g_ForgeWindow); |
| |
120 } |
| |
121 ACTION (newVertex, "New Vertex", "add-vertex", "Creates a new vertex.", 0) { |
| |
122 AddObjectDialog::staticDialog (OBJ_Vertex, g_ForgeWindow); |
| |
123 } |
| |
124 |
| |
125 ACTION (help, "Help", "help", "Shows the " APPNAME_DISPLAY " help manual.", KEY (F1)) { |
| |
126 |
| |
127 } |
| |
128 |
| |
129 // ============================================================================= |
| |
130 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
| |
131 // ============================================================================= |
| |
132 ACTION (about, "About" APPNAME_DISPLAY, "ldforge", |
| |
133 "Shows information about " APPNAME_DISPLAY ".", CTRL (F1)) |
| |
134 { |
| |
135 |
| |
136 } |
| |
137 |
| |
138 ACTION (aboutQt, "About Qt", "aboutQt", "Shows information about Qt.", CTRL_SHIFT (F1)) { |
| |
139 QMessageBox::aboutQt (g_ForgeWindow); |
| |
140 } |