src/gui.cpp

changeset 542
46a33bdc0b36
parent 541
0e38beeb050a
child 550
d97594e3fc54
equal deleted inserted replaced
541:0e38beeb050a 542:46a33bdc0b36
128 #include "actions.h" 128 #include "actions.h"
129 } 129 }
130 130
131 // ============================================================================= 131 // =============================================================================
132 // ----------------------------------------------------------------------------- 132 // -----------------------------------------------------------------------------
133 void ForgeWindow::invokeAction (QAction* act, void (*func) ()) 133 void ForgeWindow::invokeAction (QAction* act, void (*func)())
134 { beginAction (act); 134 {
135 #ifdef DEBUG
136 log ("Action %1 triggered", act->iconText());
137 #endif
138
139 beginAction (act);
135 (*func) (); 140 (*func) ();
136 endAction(); 141 endAction();
137 } 142 }
138 143
139 // ============================================================================= 144 // =============================================================================
152 157
153 m_recentFiles.clear(); 158 m_recentFiles.clear();
154 159
155 QAction* first = null; 160 QAction* first = null;
156 161
157 for (const QVariant & it : io_recentfiles) 162 for (const QVariant& it : io_recentfiles)
158 { str file = it.toString(); 163 { str file = it.toString();
159 QAction* recent = new QAction (getIcon ("open-recent"), file, this); 164 QAction* recent = new QAction (getIcon ("open-recent"), file, this);
160 165
161 connect (recent, SIGNAL (triggered()), this, SLOT (slot_recentFile())); 166 connect (recent, SIGNAL (triggered()), this, SLOT (slot_recentFile()));
162 ui->menuOpenRecent->insertAction (first, recent); 167 ui->menuOpenRecent->insertAction (first, recent);
569 LDObject* singleObj = (single) ? selection()[0] : null; 574 LDObject* singleObj = (single) ? selection()[0] : null;
570 575
571 QMenu* contextMenu = new QMenu; 576 QMenu* contextMenu = new QMenu;
572 577
573 if (single && singleObj->getType() != LDObject::Empty) 578 if (single && singleObj->getType() != LDObject::Empty)
574 { contextMenu->addAction (ACTION (Edit)); 579 { contextMenu->addAction (ui->actionEdit);
575 contextMenu->addSeparator(); 580 contextMenu->addSeparator();
576 } 581 }
577 582
578 contextMenu->addAction (ACTION (Cut)); 583 contextMenu->addAction (ui->actionCut);
579 contextMenu->addAction (ACTION (Copy)); 584 contextMenu->addAction (ui->actionCopy);
580 contextMenu->addAction (ACTION (Paste)); 585 contextMenu->addAction (ui->actionPaste);
581 contextMenu->addAction (ACTION (Delete)); 586 contextMenu->addAction (ui->actionDelete);
582 contextMenu->addSeparator(); 587 contextMenu->addSeparator();
583 contextMenu->addAction (ACTION (SetColor)); 588 contextMenu->addAction (ui->actionSetColor);
584 589
585 if (single) 590 if (single)
586 contextMenu->addAction (ACTION (EditRaw)); 591 contextMenu->addAction (ui->actionEditRaw);
587 592
588 contextMenu->addAction (ACTION (Borders)); 593 contextMenu->addAction (ui->actionBorders);
589 contextMenu->addAction (ACTION (SetOverlay)); 594 contextMenu->addAction (ui->actionSetOverlay);
590 contextMenu->addAction (ACTION (ClearOverlay)); 595 contextMenu->addAction (ui->actionClearOverlay);
591 contextMenu->addAction (ACTION (ModeSelect)); 596 contextMenu->addAction (ui->actionModeSelect);
592 contextMenu->addAction (ACTION (ModeDraw)); 597 contextMenu->addAction (ui->actionModeDraw);
593 contextMenu->addAction (ACTION (ModeCircle)); 598 contextMenu->addAction (ui->actionModeCircle);
594 599
595 if (R()->camera() != GL::Free) 600 if (R()->camera() != GL::Free)
596 { contextMenu->addSeparator(); 601 { contextMenu->addSeparator();
597 contextMenu->addAction (ACTION (SetDrawDepth)); 602 contextMenu->addAction (ui->actionSetDrawDepth);
598 } 603 }
599 604
600 contextMenu->exec (pos); 605 contextMenu->exec (pos);
601 } 606 }
602 607
626 631
627 // ============================================================================= 632 // =============================================================================
628 // ----------------------------------------------------------------------------- 633 // -----------------------------------------------------------------------------
629 void ForgeWindow::updateEditModeActions() 634 void ForgeWindow::updateEditModeActions()
630 { const EditMode mode = R()->getEditMode(); 635 { const EditMode mode = R()->getEditMode();
631 ACTION (ModeSelect)->setChecked (mode == Select); 636 ui->actionModeSelect->setChecked (mode == Select);
632 ACTION (ModeDraw)->setChecked (mode == Draw); 637 ui->actionModeDraw->setChecked (mode == Draw);
633 ACTION (ModeCircle)->setChecked (mode == CircleMode); 638 ui->actionModeCircle->setChecked (mode == CircleMode);
634 } 639 }
635 640
636 // ============================================================================= 641 // =============================================================================
637 // ----------------------------------------------------------------------------- 642 // -----------------------------------------------------------------------------
638 void ForgeWindow::slot_editObject (QListWidgetItem* listitem) 643 void ForgeWindow::slot_editObject (QListWidgetItem* listitem)
854 f->getListItem()->setIcon (f->hasUnsavedChanges() ? getIcon ("file-save") : QIcon()); 859 f->getListItem()->setIcon (f->hasUnsavedChanges() ? getIcon ("file-save") : QIcon());
855 } 860 }
856 861
857 void ForgeWindow::beginAction (QAction* act) 862 void ForgeWindow::beginAction (QAction* act)
858 { // Open the history so we can record the edits done during this action. 863 { // Open the history so we can record the edits done during this action.
859 if (act == ACTION (Undo) || act == ACTION (Redo) || act == ACTION (Open)) 864 if (act == ui->actionUndo || act == ui->actionRedo || act == ui->actionOpen)
860 LDFile::current()->getHistory()->setIgnoring (true); 865 LDFile::current()->getHistory()->setIgnoring (true);
861 } 866 }
862 867
863 void ForgeWindow::endAction() 868 void ForgeWindow::endAction()
864 { // Close the history now. 869 { // Close the history now.
904 #endif 909 #endif
905 910
906 buildObjList(); 911 buildObjList();
907 } 912 }
908 913
914 void ForgeWindow::updateActions()
915 { History* his = LDFile::current()->getHistory();
916 int pos = his->getPosition();
917 ui->actionUndo->setEnabled (pos != -1);
918 ui->actionRedo->setEnabled (pos < (long) his->getSize() - 1);
919 ui->actionAxes->setChecked (gl_axes);
920 ui->actionBFCView->setChecked (gl_colorbfc);
921 }
922
909 QImage imageFromScreencap (uchar* data, int w, int h) 923 QImage imageFromScreencap (uchar* data, int w, int h)
910 { // GL and Qt formats have R and B swapped. Also, GL flips Y - correct it as well. 924 { // GL and Qt formats have R and B swapped. Also, GL flips Y - correct it as well.
911 return QImage (data, w, h, QImage::Format_ARGB32).rgbSwapped().mirrored(); 925 return QImage (data, w, h, QImage::Format_ARGB32).rgbSwapped().mirrored();
912 } 926 }
913 927

mercurial