69 |
70 |
70 m_objList = new ObjectList; |
71 m_objList = new ObjectList; |
71 m_objList->setSelectionMode (QListWidget::ExtendedSelection); |
72 m_objList->setSelectionMode (QListWidget::ExtendedSelection); |
72 m_objList->setAlternatingRowColors (true); |
73 m_objList->setAlternatingRowColors (true); |
73 connect (m_objList, SIGNAL (itemSelectionChanged ()), this, SLOT (slot_selectionChanged ())); |
74 connect (m_objList, SIGNAL (itemSelectionChanged ()), this, SLOT (slot_selectionChanged ())); |
|
75 connect (m_objList, SIGNAL (itemDoubleClicked (QListWidgetItem*)), this, SLOT (slot_editObject (QListWidgetItem*))); |
74 |
76 |
75 m_splitter = new QSplitter; |
77 m_splitter = new QSplitter; |
76 m_splitter->addWidget (m_renderer); |
78 m_splitter->addWidget (m_renderer); |
77 m_splitter->addWidget (m_objList); |
79 m_splitter->addWidget (m_objList); |
78 setCentralWidget (m_splitter); |
80 setCentralWidget (m_splitter); |
942 } |
944 } |
943 |
945 |
944 contextMenu->exec (pos); |
946 contextMenu->exec (pos); |
945 } |
947 } |
946 |
948 |
947 // ======================================================================================================================================== |
949 // ============================================================================= |
948 void ForgeWindow::deleteObjVector (vector<LDObject*> objs) { |
950 void ForgeWindow::deleteObjVector (vector<LDObject*> objs) { |
949 for (LDObject* obj : objs) { |
951 for (LDObject* obj : objs) { |
950 g_curfile->forgetObject (obj); |
952 g_curfile->forgetObject (obj); |
951 delete obj; |
953 delete obj; |
952 } |
954 } |
953 } |
955 } |
954 |
956 |
955 // ======================================================================================================================================== |
957 // ============================================================================= |
956 void ForgeWindow::deleteByColor (const short colnum) { |
958 void ForgeWindow::deleteByColor (const short colnum) { |
957 vector<LDObject*> objs; |
959 vector<LDObject*> objs; |
958 for (LDObject* obj : g_curfile->objs ()) { |
960 for (LDObject* obj : g_curfile->objs ()) { |
959 if (!obj->isColored () || obj->color () != colnum) |
961 if (!obj->isColored () || obj->color () != colnum) |
960 continue; |
962 continue; |
963 } |
965 } |
964 |
966 |
965 deleteObjVector (objs); |
967 deleteObjVector (objs); |
966 } |
968 } |
967 |
969 |
968 // ======================================================================================================================================== |
970 // ============================================================================= |
969 void ForgeWindow::updateEditModeActions () { |
971 void ForgeWindow::updateEditModeActions () { |
970 const EditMode mode = R ()->editMode (); |
972 const EditMode mode = R ()->editMode (); |
971 const size_t numModeActions = (sizeof g_modeActionNames / sizeof *g_modeActionNames); |
973 const size_t numModeActions = (sizeof g_modeActionNames / sizeof *g_modeActionNames); |
972 assert ((size_t) mode < numModeActions); |
974 assert ((size_t) mode < numModeActions); |
973 |
975 |
980 if (i != Select) |
982 if (i != Select) |
981 act->setEnabled (R ()->camera () != GL::Free); |
983 act->setEnabled (R ()->camera () != GL::Free); |
982 } |
984 } |
983 } |
985 } |
984 |
986 |
985 // ======================================================================================================================================== |
987 void ForgeWindow::slot_editObject (QListWidgetItem* listitem) { |
|
988 LDObject* obj = null; |
|
989 for (LDObject* it : *g_curfile) { |
|
990 if (it->qObjListEntry == listitem) { |
|
991 obj = it; |
|
992 break; |
|
993 } |
|
994 } |
|
995 |
|
996 AddObjectDialog::staticDialog (obj->getType (), obj); |
|
997 } |
|
998 |
|
999 // ============================================================================ |
986 void ObjectList::contextMenuEvent (QContextMenuEvent* ev) { |
1000 void ObjectList::contextMenuEvent (QContextMenuEvent* ev) { |
987 g_win->spawnContextMenu (ev->globalPos ()); |
1001 g_win->spawnContextMenu (ev->globalPos ()); |
988 } |
1002 } |
989 |
1003 |
990 // ============================================================================= |
1004 // ============================================================================= |