src/actions.cc

changeset 806
4240f47aa2d4
parent 795
195fa1fff9c3
child 815
efe34366e56a
equal deleted inserted replaced
805:d88c0354de97 806:4240f47aa2d4
46 EXTERN_CFGENTRY (Bool, drawAngles); 46 EXTERN_CFGENTRY (Bool, drawAngles);
47 EXTERN_CFGENTRY (Bool, randomColors) 47 EXTERN_CFGENTRY (Bool, randomColors)
48 48
49 // ============================================================================= 49 // =============================================================================
50 // 50 //
51 DEFINE_ACTION (New, CTRL_SHIFT (N)) 51 void MainWindow::slot_actionNew()
52 { 52 {
53 QDialog* dlg = new QDialog (g_win); 53 QDialog* dlg = new QDialog (g_win);
54 Ui::NewPartUI ui; 54 Ui::NewPartUI ui;
55 ui.setupUi (dlg); 55 ui.setupUi (dlg);
56 56
112 doFullRefresh(); 112 doFullRefresh();
113 } 113 }
114 114
115 // ============================================================================= 115 // =============================================================================
116 // 116 //
117 DEFINE_ACTION (NewFile, CTRL (N)) 117 void MainWindow::slot_actionNewFile()
118 { 118 {
119 newFile(); 119 newFile();
120 } 120 }
121 121
122 // ============================================================================= 122 // =============================================================================
123 // 123 //
124 DEFINE_ACTION (Open, CTRL (O)) 124 void MainWindow::slot_actionOpen()
125 { 125 {
126 QString name = QFileDialog::getOpenFileName (g_win, "Open File", "", "LDraw files (*.dat *.ldr)"); 126 QString name = QFileDialog::getOpenFileName (g_win, "Open File", "", "LDraw files (*.dat *.ldr)");
127 127
128 if (name.isEmpty()) 128 if (name.isEmpty())
129 return; 129 return;
131 openMainFile (name); 131 openMainFile (name);
132 } 132 }
133 133
134 // ============================================================================= 134 // =============================================================================
135 // 135 //
136 DEFINE_ACTION (Save, CTRL (S)) 136 void MainWindow::slot_actionSave()
137 { 137 {
138 save (getCurrentDocument(), false); 138 save (getCurrentDocument(), false);
139 } 139 }
140 140
141 // ============================================================================= 141 // =============================================================================
142 // 142 //
143 DEFINE_ACTION (SaveAs, CTRL_SHIFT (S)) 143 void MainWindow::slot_actionSaveAs()
144 { 144 {
145 save (getCurrentDocument(), true); 145 save (getCurrentDocument(), true);
146 } 146 }
147 147
148 // ============================================================================= 148 // =============================================================================
149 // 149 //
150 DEFINE_ACTION (SaveAll, CTRL (L)) 150 void MainWindow::slot_actionSaveAll()
151 { 151 {
152 for (LDDocumentPtr file : LDDocument::explicitDocuments()) 152 for (LDDocumentPtr file : LDDocument::explicitDocuments())
153 save (file, false); 153 save (file, false);
154 } 154 }
155 155
156 // ============================================================================= 156 // =============================================================================
157 // 157 //
158 DEFINE_ACTION (Close, CTRL (W)) 158 void MainWindow::slot_actionClose()
159 { 159 {
160 if (not getCurrentDocument()->isSafeToClose()) 160 if (not getCurrentDocument()->isSafeToClose())
161 return; 161 return;
162 162
163 getCurrentDocument()->dismiss(); 163 getCurrentDocument()->dismiss();
164 } 164 }
165 165
166 // ============================================================================= 166 // =============================================================================
167 // 167 //
168 DEFINE_ACTION (CloseAll, 0) 168 void MainWindow::slot_actionCloseAll()
169 { 169 {
170 if (not safeToCloseAll()) 170 if (not safeToCloseAll())
171 return; 171 return;
172 172
173 closeAll(); 173 closeAll();
174 } 174 }
175 175
176 // ============================================================================= 176 // =============================================================================
177 // 177 //
178 DEFINE_ACTION (Settings, 0) 178 void MainWindow::slot_actionSettings()
179 { 179 {
180 (new ConfigDialog)->exec(); 180 (new ConfigDialog)->exec();
181 } 181 }
182 182
183 // ============================================================================= 183 // =============================================================================
184 // 184 //
185 DEFINE_ACTION (SetLDrawPath, 0) 185 void MainWindow::slot_actionSetLDrawPath()
186 { 186 {
187 (new LDrawPathDialog (true))->exec(); 187 (new LDrawPathDialog (true))->exec();
188 } 188 }
189 189
190 // ============================================================================= 190 // =============================================================================
191 // 191 //
192 DEFINE_ACTION (Exit, CTRL (Q)) 192 void MainWindow::slot_actionExit()
193 { 193 {
194 exit (0); 194 exit (0);
195 } 195 }
196 196
197 // ============================================================================= 197 // =============================================================================
198 // 198 //
199 DEFINE_ACTION (NewSubfile, 0) 199 void MainWindow::slot_actionNewSubfile()
200 { 200 {
201 AddObjectDialog::staticDialog (OBJ_Subfile, LDObjectPtr()); 201 AddObjectDialog::staticDialog (OBJ_Subfile, LDObjectPtr());
202 } 202 }
203 203
204 // ============================================================================= 204 // =============================================================================
205 // 205 //
206 DEFINE_ACTION (NewLine, 0) 206 void MainWindow::slot_actionNewLine()
207 { 207 {
208 AddObjectDialog::staticDialog (OBJ_Line, LDObjectPtr()); 208 AddObjectDialog::staticDialog (OBJ_Line, LDObjectPtr());
209 } 209 }
210 210
211 // ============================================================================= 211 // =============================================================================
212 // 212 //
213 DEFINE_ACTION (NewTriangle, 0) 213 void MainWindow::slot_actionNewTriangle()
214 { 214 {
215 AddObjectDialog::staticDialog (OBJ_Triangle, LDObjectPtr()); 215 AddObjectDialog::staticDialog (OBJ_Triangle, LDObjectPtr());
216 } 216 }
217 217
218 // ============================================================================= 218 // =============================================================================
219 // 219 //
220 DEFINE_ACTION (NewQuad, 0) 220 void MainWindow::slot_actionNewQuad()
221 { 221 {
222 AddObjectDialog::staticDialog (OBJ_Quad, LDObjectPtr()); 222 AddObjectDialog::staticDialog (OBJ_Quad, LDObjectPtr());
223 } 223 }
224 224
225 // ============================================================================= 225 // =============================================================================
226 // 226 //
227 DEFINE_ACTION (NewCLine, 0) 227 void MainWindow::slot_actionNewCLine()
228 { 228 {
229 AddObjectDialog::staticDialog (OBJ_CondLine, LDObjectPtr()); 229 AddObjectDialog::staticDialog (OBJ_CondLine, LDObjectPtr());
230 } 230 }
231 231
232 // ============================================================================= 232 // =============================================================================
233 // 233 //
234 DEFINE_ACTION (NewComment, 0) 234 void MainWindow::slot_actionNewComment()
235 { 235 {
236 AddObjectDialog::staticDialog (OBJ_Comment, LDObjectPtr()); 236 AddObjectDialog::staticDialog (OBJ_Comment, LDObjectPtr());
237 } 237 }
238 238
239 // ============================================================================= 239 // =============================================================================
240 // 240 //
241 DEFINE_ACTION (NewBFC, 0) 241 void MainWindow::slot_actionNewBFC()
242 { 242 {
243 AddObjectDialog::staticDialog (OBJ_BFC, LDObjectPtr()); 243 AddObjectDialog::staticDialog (OBJ_BFC, LDObjectPtr());
244 } 244 }
245 245
246 // ============================================================================= 246 // =============================================================================
247 // 247 //
248 DEFINE_ACTION (NewVertex, 0) 248 void MainWindow::slot_actionNewVertex()
249 { 249 {
250 AddObjectDialog::staticDialog (OBJ_Vertex, LDObjectPtr()); 250 AddObjectDialog::staticDialog (OBJ_Vertex, LDObjectPtr());
251 } 251 }
252 252
253 // ============================================================================= 253 // =============================================================================
254 // 254 //
255 DEFINE_ACTION (Edit, 0) 255 void MainWindow::slot_actionEdit()
256 { 256 {
257 if (selection().size() != 1) 257 if (selection().size() != 1)
258 return; 258 return;
259 259
260 LDObjectPtr obj = selection() [0]; 260 LDObjectPtr obj = selection() [0];
261 AddObjectDialog::staticDialog (obj->type(), obj); 261 AddObjectDialog::staticDialog (obj->type(), obj);
262 } 262 }
263 263
264 // ============================================================================= 264 // =============================================================================
265 // 265 //
266 DEFINE_ACTION (Help, KEY (F1)) 266 void MainWindow::slot_actionHelp()
267 { 267 {
268 } 268 }
269 269
270 // ============================================================================= 270 // =============================================================================
271 // 271 //
272 DEFINE_ACTION (About, 0) 272 void MainWindow::slot_actionAbout()
273 { 273 {
274 AboutDialog().exec(); 274 AboutDialog().exec();
275 } 275 }
276 276
277 // ============================================================================= 277 // =============================================================================
278 // 278 //
279 DEFINE_ACTION (AboutQt, 0) 279 void MainWindow::slot_actionAboutQt()
280 { 280 {
281 QMessageBox::aboutQt (g_win); 281 QMessageBox::aboutQt (g_win);
282 } 282 }
283 283
284 // ============================================================================= 284 // =============================================================================
285 // 285 //
286 DEFINE_ACTION (SelectAll, CTRL (A)) 286 void MainWindow::slot_actionSelectAll()
287 { 287 {
288 for (LDObjectPtr obj : getCurrentDocument()->objects()) 288 for (LDObjectPtr obj : getCurrentDocument()->objects())
289 obj->select(); 289 obj->select();
290 290
291 ui->objectList->selectAll(); 291 ui->objectList->selectAll();
292 refresh(); 292 refresh();
293 } 293 }
294 294
295 // ============================================================================= 295 // =============================================================================
296 // 296 //
297 DEFINE_ACTION (SelectByColor, CTRL_SHIFT (A)) 297 void MainWindow::slot_actionSelectByColor()
298 { 298 {
299 if (selection().isEmpty()) 299 if (selection().isEmpty())
300 return; 300 return;
301 301
302 QList<LDColor> colors; 302 QList<LDColor> colors;
320 refresh(); 320 refresh();
321 } 321 }
322 322
323 // ============================================================================= 323 // =============================================================================
324 // 324 //
325 DEFINE_ACTION (SelectByType, 0) 325 void MainWindow::slot_actionSelectByType()
326 { 326 {
327 if (selection().isEmpty()) 327 if (selection().isEmpty())
328 return; 328 return;
329 329
330 QList<LDObjectType> types; 330 QList<LDObjectType> types;
360 refresh(); 360 refresh();
361 } 361 }
362 362
363 // ============================================================================= 363 // =============================================================================
364 // 364 //
365 DEFINE_ACTION (GridCoarse, 0) 365 void MainWindow::slot_actionGridCoarse()
366 { 366 {
367 cfg::grid = Grid::Coarse; 367 cfg::grid = Grid::Coarse;
368 updateGridToolBar(); 368 updateGridToolBar();
369 } 369 }
370 370
371 DEFINE_ACTION (GridMedium, 0) 371 void MainWindow::slot_actionGridMedium()
372 { 372 {
373 cfg::grid = Grid::Medium; 373 cfg::grid = Grid::Medium;
374 updateGridToolBar(); 374 updateGridToolBar();
375 } 375 }
376 376
377 DEFINE_ACTION (GridFine, 0) 377 void MainWindow::slot_actionGridFine()
378 { 378 {
379 cfg::grid = Grid::Fine; 379 cfg::grid = Grid::Fine;
380 updateGridToolBar(); 380 updateGridToolBar();
381 } 381 }
382 382
383 // ============================================================================= 383 // =============================================================================
384 // 384 //
385 DEFINE_ACTION (ResetView, CTRL (0)) 385 void MainWindow::slot_actionResetView()
386 { 386 {
387 R()->resetAngles(); 387 R()->resetAngles();
388 R()->update(); 388 R()->update();
389 } 389 }
390 390
391 // ============================================================================= 391 // =============================================================================
392 // 392 //
393 DEFINE_ACTION (InsertFrom, 0) 393 void MainWindow::slot_actionInsertFrom()
394 { 394 {
395 QString fname = QFileDialog::getOpenFileName(); 395 QString fname = QFileDialog::getOpenFileName();
396 int idx = getInsertionPoint(); 396 int idx = getInsertionPoint();
397 397
398 if (not fname.length()) 398 if (not fname.length())
423 scrollToSelection(); 423 scrollToSelection();
424 } 424 }
425 425
426 // ============================================================================= 426 // =============================================================================
427 // 427 //
428 DEFINE_ACTION (ExportTo, 0) 428 void MainWindow::slot_actionExportTo()
429 { 429 {
430 if (selection().isEmpty()) 430 if (selection().isEmpty())
431 return; 431 return;
432 432
433 QString fname = QFileDialog::getSaveFileName(); 433 QString fname = QFileDialog::getSaveFileName();
452 } 452 }
453 } 453 }
454 454
455 // ============================================================================= 455 // =============================================================================
456 // 456 //
457 DEFINE_ACTION (InsertRaw, 0) 457 void MainWindow::slot_actionInsertRaw()
458 { 458 {
459 int idx = getInsertionPoint(); 459 int idx = getInsertionPoint();
460 460
461 QDialog* const dlg = new QDialog; 461 QDialog* const dlg = new QDialog;
462 QVBoxLayout* const layout = new QVBoxLayout; 462 QVBoxLayout* const layout = new QVBoxLayout;
488 scrollToSelection(); 488 scrollToSelection();
489 } 489 }
490 490
491 // ============================================================================= 491 // =============================================================================
492 // 492 //
493 DEFINE_ACTION (Screenshot, 0) 493 void MainWindow::slot_actionScreenshot()
494 { 494 {
495 setlocale (LC_ALL, "C"); 495 setlocale (LC_ALL, "C");
496 496
497 int w, h; 497 int w, h;
498 uchar* imgdata = R()->getScreencap (w, h); 498 uchar* imgdata = R()->getScreencap (w, h);
514 } 514 }
515 515
516 // ============================================================================= 516 // =============================================================================
517 // 517 //
518 EXTERN_CFGENTRY (Bool, drawAxes); 518 EXTERN_CFGENTRY (Bool, drawAxes);
519 DEFINE_ACTION (Axes, 0) 519 void MainWindow::slot_actionAxes()
520 { 520 {
521 cfg::drawAxes = not cfg::drawAxes; 521 cfg::drawAxes = not cfg::drawAxes;
522 updateActions(); 522 updateActions();
523 R()->update(); 523 R()->update();
524 } 524 }
525 525
526 // ============================================================================= 526 // =============================================================================
527 // 527 //
528 DEFINE_ACTION (VisibilityToggle, 0) 528 void MainWindow::slot_actionVisibilityToggle()
529 { 529 {
530 for (LDObjectPtr obj : selection()) 530 for (LDObjectPtr obj : selection())
531 obj->setHidden (not obj->isHidden()); 531 obj->setHidden (not obj->isHidden());
532 532
533 refresh(); 533 refresh();
534 } 534 }
535 535
536 // ============================================================================= 536 // =============================================================================
537 // 537 //
538 DEFINE_ACTION (VisibilityHide, 0) 538 void MainWindow::slot_actionVisibilityHide()
539 { 539 {
540 for (LDObjectPtr obj : selection()) 540 for (LDObjectPtr obj : selection())
541 obj->setHidden (true); 541 obj->setHidden (true);
542 542
543 refresh(); 543 refresh();
544 } 544 }
545 545
546 // ============================================================================= 546 // =============================================================================
547 // 547 //
548 DEFINE_ACTION (VisibilityReveal, 0) 548 void MainWindow::slot_actionVisibilityReveal()
549 { 549 {
550 for (LDObjectPtr obj : selection()) 550 for (LDObjectPtr obj : selection())
551 obj->setHidden (false); 551 obj->setHidden (false);
552 refresh(); 552 refresh();
553 } 553 }
554 554
555 // ============================================================================= 555 // =============================================================================
556 // 556 //
557 DEFINE_ACTION (Wireframe, 0) 557 void MainWindow::slot_actionWireframe()
558 { 558 {
559 cfg::drawWireframe = not cfg::drawWireframe; 559 cfg::drawWireframe = not cfg::drawWireframe;
560 R()->refresh(); 560 R()->refresh();
561 } 561 }
562 562
563 // ============================================================================= 563 // =============================================================================
564 // 564 //
565 DEFINE_ACTION (SetOverlay, 0) 565 void MainWindow::slot_actionSetOverlay()
566 { 566 {
567 OverlayDialog dlg; 567 OverlayDialog dlg;
568 568
569 if (not dlg.exec()) 569 if (not dlg.exec())
570 return; 570 return;
573 dlg.ofsy(), dlg.lwidth(), dlg.lheight()); 573 dlg.ofsy(), dlg.lwidth(), dlg.lheight());
574 } 574 }
575 575
576 // ============================================================================= 576 // =============================================================================
577 // 577 //
578 DEFINE_ACTION (ClearOverlay, 0) 578 void MainWindow::slot_actionClearOverlay()
579 { 579 {
580 R()->clearOverlay(); 580 R()->clearOverlay();
581 } 581 }
582 582
583 // ============================================================================= 583 // =============================================================================
584 // 584 //
585 DEFINE_ACTION (ModeSelect, CTRL (1)) 585 void MainWindow::slot_actionModeSelect()
586 { 586 {
587 R()->setEditMode (ESelectMode); 587 R()->setEditMode (ESelectMode);
588 } 588 }
589 589
590 // ============================================================================= 590 // =============================================================================
591 // 591 //
592 DEFINE_ACTION (ModeDraw, CTRL (2)) 592 void MainWindow::slot_actionModeDraw()
593 { 593 {
594 R()->setEditMode (EDrawMode); 594 R()->setEditMode (EDrawMode);
595 } 595 }
596 596
597 // ============================================================================= 597 // =============================================================================
598 // 598 //
599 DEFINE_ACTION (ModeCircle, CTRL (3)) 599 void MainWindow::slot_actionModeCircle()
600 { 600 {
601 R()->setEditMode (ECircleMode); 601 R()->setEditMode (ECircleMode);
602 } 602 }
603 603
604 // ============================================================================= 604 // =============================================================================
605 // 605 //
606 DEFINE_ACTION (DrawAngles, 0) 606 void MainWindow::slot_actionDrawAngles()
607 { 607 {
608 cfg::drawAngles = not cfg::drawAngles; 608 cfg::drawAngles = not cfg::drawAngles;
609 R()->refresh(); 609 R()->refresh();
610 } 610 }
611 611
612 // ============================================================================= 612 // =============================================================================
613 // 613 //
614 DEFINE_ACTION (SetDrawDepth, 0) 614 void MainWindow::slot_actionSetDrawDepth()
615 { 615 {
616 if (R()->camera() == EFreeCamera) 616 if (R()->camera() == EFreeCamera)
617 return; 617 return;
618 618
619 bool ok; 619 bool ok;
627 627
628 #if 0 628 #if 0
629 // This is a test to draw a dummy axle. Meant to be used as a primitive gallery, 629 // This is a test to draw a dummy axle. Meant to be used as a primitive gallery,
630 // but I can't figure how to generate these pictures properly. Multi-threading 630 // but I can't figure how to generate these pictures properly. Multi-threading
631 // these is an immense pain. 631 // these is an immense pain.
632 DEFINE_ACTION (testpic, "Test picture", "", "", (0)) 632 void MainWindow::slot_actiontestpic()
633 { 633 {
634 LDDocumentPtr file = getFile ("axle.dat"); 634 LDDocumentPtr file = getFile ("axle.dat");
635 setlocale (LC_ALL, "C"); 635 setlocale (LC_ALL, "C");
636 636
637 if (not file) 637 if (not file)
674 } 674 }
675 #endif 675 #endif
676 676
677 // ============================================================================= 677 // =============================================================================
678 // 678 //
679 DEFINE_ACTION (ScanPrimitives, 0) 679 void MainWindow::slot_actionScanPrimitives()
680 { 680 {
681 PrimitiveScanner::start(); 681 PrimitiveScanner::start();
682 } 682 }
683 683
684 // ============================================================================= 684 // =============================================================================
685 // 685 //
686 DEFINE_ACTION (BFCView, SHIFT (B)) 686 void MainWindow::slot_actionBFCView()
687 { 687 {
688 cfg::bfcRedGreenView = not cfg::bfcRedGreenView; 688 cfg::bfcRedGreenView = not cfg::bfcRedGreenView;
689 689
690 if (cfg::bfcRedGreenView) 690 if (cfg::bfcRedGreenView)
691 cfg::randomColors = false; 691 cfg::randomColors = false;
694 R()->refresh(); 694 R()->refresh();
695 } 695 }
696 696
697 // ============================================================================= 697 // =============================================================================
698 // 698 //
699 DEFINE_ACTION (JumpTo, CTRL (G)) 699 void MainWindow::slot_actionJumpTo()
700 { 700 {
701 bool ok; 701 bool ok;
702 int defval = 0; 702 int defval = 0;
703 LDObjectPtr obj; 703 LDObjectPtr obj;
704 704
716 updateSelection(); 716 updateSelection();
717 } 717 }
718 718
719 // ============================================================================= 719 // =============================================================================
720 // 720 //
721 DEFINE_ACTION (SubfileSelection, 0) 721 void MainWindow::slot_actionSubfileSelection()
722 { 722 {
723 if (selection().size() == 0) 723 if (selection().size() == 0)
724 return; 724 return;
725 725
726 QString parentpath = getCurrentDocument()->fullPath(); 726 QString parentpath = getCurrentDocument()->fullPath();
884 // Failed to save. 884 // Failed to save.
885 doc->dismiss(); 885 doc->dismiss();
886 } 886 }
887 } 887 }
888 888
889 DEFINE_ACTION (RandomColors, CTRL_SHIFT (R)) 889 void MainWindow::slot_actionRandomColors()
890 { 890 {
891 cfg::randomColors = not cfg::randomColors; 891 cfg::randomColors = not cfg::randomColors;
892 892
893 if (cfg::randomColors) 893 if (cfg::randomColors)
894 cfg::bfcRedGreenView = false; 894 cfg::bfcRedGreenView = false;
895 895
896 updateActions(); 896 updateActions();
897 R()->refresh(); 897 R()->refresh();
898 } 898 }
899 899
900 DEFINE_ACTION (OpenSubfiles, 0) 900 void MainWindow::slot_actionOpenSubfiles()
901 { 901 {
902 for (LDObjectPtr obj : selection()) 902 for (LDObjectPtr obj : selection())
903 { 903 {
904 LDSubfilePtr ref = obj.dynamicCast<LDSubfile>(); 904 LDSubfilePtr ref = obj.dynamicCast<LDSubfile>();
905 905

mercurial