gui_actions.cpp

changeset 142
6e8aee653dab
parent 141
184d117e1b12
child 143
e3c37b950a68
equal deleted inserted replaced
141:184d117e1b12 142:6e8aee653dab
241 grid = Grid::Fine; 241 grid = Grid::Fine;
242 g_ForgeWindow->updateGridToolBar (); 242 g_ForgeWindow->updateGridToolBar ();
243 } 243 }
244 244
245 // ============================================================================= 245 // =============================================================================
246 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
247 // =============================================================================
246 MAKE_ACTION (resetView, "Reset View", "reset-view", "Reset view angles, pan and zoom", CTRL (0)) { 248 MAKE_ACTION (resetView, "Reset View", "reset-view", "Reset view angles, pan and zoom", CTRL (0)) {
247 g_ForgeWindow->R->resetAngles (); 249 g_ForgeWindow->R->resetAngles ();
248 g_ForgeWindow->R->updateGL (); 250 g_ForgeWindow->R->updateGL ();
249 } 251 }
250 252
253 // =============================================================================
254 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
251 // ============================================================================= 255 // =============================================================================
252 MAKE_ACTION (insertFrom, "Insert from File", "insert-from", "Insert LDraw data from a file.", (0)) { 256 MAKE_ACTION (insertFrom, "Insert from File", "insert-from", "Insert LDraw data from a file.", (0)) {
253 str fname = QFileDialog::getOpenFileName (); 257 str fname = QFileDialog::getOpenFileName ();
254 ulong idx = g_ForgeWindow->getInsertionPoint (); 258 ulong idx = g_ForgeWindow->getInsertionPoint ();
255 259
276 280
277 idx++; 281 idx++;
278 } 282 }
279 283
280 if (historyCopies.size() > 0) { 284 if (historyCopies.size() > 0) {
285 History::addEntry (new AddHistory (historyIndices, historyCopies));
286 g_ForgeWindow->refresh ();
287 g_ForgeWindow->scrollToSelection ();
288 }
289 }
290
291 // =============================================================================
292 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
293 // =============================================================================
294 MAKE_ACTION (insertRaw, "Insert Raw", "insert-raw", "Type in LDraw code to insert.", (0)) {
295 ulong idx = g_ForgeWindow->getInsertionPoint ();
296
297 QDialog* const dlg = new QDialog;
298 QVBoxLayout* const layout = new QVBoxLayout;
299 QTextEdit* const te_edit = new QTextEdit;
300 QDialogButtonBox* const bbx_buttons = new QDialogButtonBox (QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
301 std::vector<LDObject*> historyCopies;
302 std::vector<ulong> historyIndices;
303
304 layout->addWidget (te_edit);
305 layout->addWidget (bbx_buttons);
306 dlg->setLayout (layout);
307 dlg->connect (bbx_buttons, SIGNAL (accepted ()), dlg, SLOT (accept ()));
308 dlg->connect (bbx_buttons, SIGNAL (rejected ()), dlg, SLOT (reject ()));
309
310 if (dlg->exec () == false)
311 return;
312
313 g_ForgeWindow->sel.clear ();
314
315 for (str line : str (te_edit->toPlainText ()).split ("\n")) {
316 LDObject* obj = parseLine (line);
317
318 g_CurrentFile->objects.insert (g_CurrentFile->objects.begin () + idx, obj);
319 historyIndices.push_back (idx);
320 historyCopies.push_back (obj->clone ());
321 g_ForgeWindow->sel.push_back (obj);
322 idx++;
323 }
324
325 if (historyCopies.size () > 0) {
281 History::addEntry (new AddHistory (historyIndices, historyCopies)); 326 History::addEntry (new AddHistory (historyIndices, historyCopies));
282 g_ForgeWindow->refresh (); 327 g_ForgeWindow->refresh ();
283 g_ForgeWindow->scrollToSelection (); 328 g_ForgeWindow->scrollToSelection ();
284 } 329 }
285 } 330 }

mercurial