src/gui.cpp

changeset 266
12e7302f14e9
parent 265
955c0aabfebf
child 267
95fde37e1f00
equal deleted inserted replaced
265:955c0aabfebf 266:12e7302f14e9
527 527
528 // ============================================================================= 528 // =============================================================================
529 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 529 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
530 // ============================================================================= 530 // =============================================================================
531 void ForgeWindow::slot_action () { 531 void ForgeWindow::slot_action () {
532 g_curfile->history ().open ();
533
532 // Get the action that triggered this slot. 534 // Get the action that triggered this slot.
533 QAction* qAct = static_cast<QAction*> (sender ()); 535 QAction* qAct = static_cast<QAction*> (sender ());
534 536
535 // Find the meta for the action. 537 // Find the meta for the action.
536 actionmeta* pMeta = null; 538 actionmeta* pMeta = null;
550 return; 552 return;
551 } 553 }
552 554
553 // We have the meta, now call the handler. 555 // We have the meta, now call the handler.
554 (*pMeta->handler) (); 556 (*pMeta->handler) ();
555 } 557
556 558 g_curfile->history ().close ();
557 // ============================================================================= 559 }
558 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 560
559 // ============================================================================= 561 // =============================================================================
560 void ForgeWindow::deleteSelection (vector<ulong>* indicesPtr, vector<LDObject*>* objsPtr) { 562 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
563 // =============================================================================
564 void ForgeWindow::deleteSelection () {
561 if (m_sel.size () == 0) 565 if (m_sel.size () == 0)
562 return; 566 return;
563 567
564 vector<LDObject*> selCopy = m_sel; 568 vector<LDObject*> selCopy = m_sel;
565 569
566 // Delete the objects that were being selected 570 // Delete the objects that were being selected
567 for (LDObject* obj : selCopy) { 571 for (LDObject* obj : selCopy) {
568 if (objsPtr && indicesPtr) {
569 *objsPtr << obj->clone ();
570 *indicesPtr << obj->getIndex (g_curfile);
571 }
572
573 g_curfile->forgetObject (obj); 572 g_curfile->forgetObject (obj);
574 delete obj; 573 delete obj;
575 } 574 }
576 575
577 fullRefresh (); 576 fullRefresh ();
679 // Color gibberish orange on red so it stands out. 678 // Color gibberish orange on red so it stands out.
680 if (obj->getType() == LDObject::Gibberish) { 679 if (obj->getType() == LDObject::Gibberish) {
681 item->setBackground (QColor ("#AA0000")); 680 item->setBackground (QColor ("#AA0000"));
682 item->setForeground (QColor ("#FFAA00")); 681 item->setForeground (QColor ("#FFAA00"));
683 } else if (lv_colorize && obj->isColored () && 682 } else if (lv_colorize && obj->isColored () &&
684 obj->color != maincolor && obj->color != edgecolor) 683 obj->color () != maincolor && obj->color () != edgecolor)
685 { 684 {
686 // If the object isn't in the main or edge color, draw this 685 // If the object isn't in the main or edge color, draw this
687 // list entry in said color. 686 // list entry in said color.
688 color* col = getColor (obj->color); 687 color* col = getColor (obj->color ());
689 if (col) 688 if (col)
690 item->setForeground (col->faceColor); 689 item->setForeground (col->faceColor);
691 } 690 }
692 691
693 obj->qObjListEntry = item; 692 obj->qObjListEntry = item;
783 return; 782 return;
784 783
785 short newColor = col->index; 784 short newColor = col->index;
786 785
787 for (LDObject* obj : m_sel) { 786 for (LDObject* obj : m_sel) {
788 if (obj->color == -1) 787 if (obj->isColored () == false)
789 continue; // uncolored object 788 continue; // uncolored object
790 789
791 obj->color = newColor; 790 obj->setColor (newColor);
792 } 791 }
793 792
794 fullRefresh (); 793 fullRefresh ();
795 } 794 }
796 795
854 853
855 short ForgeWindow::getSelectedColor () { 854 short ForgeWindow::getSelectedColor () {
856 short result = -1; 855 short result = -1;
857 856
858 for (LDObject* obj : m_sel) { 857 for (LDObject* obj : m_sel) {
859 if (obj->color == -1) 858 if (obj->isColored () == false)
860 continue; // doesn't use color 859 continue; // doesn't use color
861 860
862 if (result != -1 && obj->color != result) 861 if (result != -1 && obj->color () != result)
863 return -1; // No consensus in object color 862 return -1; // No consensus in object color
864 863
865 if (result == -1) 864 if (result == -1)
866 result = obj->color; 865 result = obj->color ();
867 } 866 }
868 867
869 return result; 868 return result;
870 } 869 }
871 870
874 // ============================================================================= 873 // =============================================================================
875 LDObject::Type ForgeWindow::uniformSelectedType () { 874 LDObject::Type ForgeWindow::uniformSelectedType () {
876 LDObject::Type result = LDObject::Unidentified; 875 LDObject::Type result = LDObject::Unidentified;
877 876
878 for (LDObject* obj : m_sel) { 877 for (LDObject* obj : m_sel) {
879 if (result != LDObject::Unidentified && obj->color != result) 878 if (result != LDObject::Unidentified && obj->color () != result)
880 return LDObject::Unidentified; 879 return LDObject::Unidentified;
881 880
882 if (result == LDObject::Unidentified) 881 if (result == LDObject::Unidentified)
883 result = obj->getType (); 882 result = obj->getType ();
884 } 883 }
941 940
942 contextMenu->exec (pos); 941 contextMenu->exec (pos);
943 } 942 }
944 943
945 // ======================================================================================================================================== 944 // ========================================================================================================================================
946 DelHistory* ForgeWindow::deleteObjVector (vector<LDObject*> objs) { 945 void ForgeWindow::deleteObjVector (vector<LDObject*> objs) {
947 for (LDObject* obj : objs) { 946 for (LDObject* obj : objs) {
948 g_curfile->forgetObject (obj); 947 g_curfile->forgetObject (obj);
949 delete obj; 948 delete obj;
950 } 949 }
951
952 return null;
953 } 950 }
954 951
955 // ======================================================================================================================================== 952 // ========================================================================================================================================
956 DelHistory* ForgeWindow::deleteSelection () { 953 void ForgeWindow::deleteByColor (const short colnum) {
957 return deleteObjVector (sel ());
958 }
959
960 // ========================================================================================================================================
961 DelHistory* ForgeWindow::deleteByColor (const short colnum) {
962 vector<LDObject*> objs; 954 vector<LDObject*> objs;
963 for (LDObject* obj : g_curfile->objs ()) { 955 for (LDObject* obj : g_curfile->objs ()) {
964 if (!obj->isColored () || obj->color != colnum) 956 if (!obj->isColored () || obj->color () != colnum)
965 continue; 957 continue;
966 958
967 objs << obj; 959 objs << obj;
968 } 960 }
969 961
970 return deleteObjVector (objs); 962 deleteObjVector (objs);
971 } 963 }
972 964
973 // ======================================================================================================================================== 965 // ========================================================================================================================================
974 void ForgeWindow::updateEditModeActions () { 966 void ForgeWindow::updateEditModeActions () {
975 const EditMode mode = R ()->editMode (); 967 const EditMode mode = R ()->editMode ();
1069 1061
1070 for (LDObject* obj : g_curfile->objs ()) { 1062 for (LDObject* obj : g_curfile->objs ()) {
1071 if (!obj->isColored ()) 1063 if (!obj->isColored ())
1072 continue; 1064 continue;
1073 1065
1074 if (counts.find (obj->color) == counts.end ()) 1066 if (counts.find (obj->color ()) == counts.end ())
1075 counts[obj->color] = 1; 1067 counts[obj->color ()] = 1;
1076 else 1068 else
1077 counts[obj->color]++; 1069 counts[obj->color ()]++;
1078 } 1070 }
1079 1071
1080 box->clear (); 1072 box->clear ();
1081 ulong row = 0; 1073 ulong row = 0;
1082 for (const auto& pair : counts) { 1074 for (const auto& pair : counts) {

mercurial