OSDN Git Service

オブジェクトツリー制御の効率化
authorqw_fuku <fkhideaki@gmail.com>
Mon, 13 Jun 2016 14:22:28 +0000 (23:22 +0900)
committerqw_fuku <fkhideaki@gmail.com>
Mon, 13 Jun 2016 14:22:28 +0000 (23:22 +0900)
Src/QtGeoViewer/FormMain.cpp
Src/QtGeoViewer/WidgetObjectList.cpp
Src/QtGeoViewer/WidgetObjectList.h

index db37ab1..6f57107 100644 (file)
@@ -1757,8 +1757,6 @@ void FormMain::RefreshObjectSelectState(void)
 
        RebuildMatList();
 
-       ui.widgetObjectList->UpdateContextmenuState();
-
        updateView_All();
 }
 
@@ -1803,19 +1801,7 @@ void FormMain::RebuildMatList(void)
 
 void FormMain::DeleteSelectedObject()
 {
-       QTreeWidget* obj_tree = ui.widgetObjectList->GetTree();
-       QTreeWidgetItem* ti = obj_tree->currentItem();
-       if (ti == NULL)
-               return;
-
-       QTreeWidgetItem* pn = ti->parent();
-
-       int sel_idx;
-       if (pn == NULL)
-               sel_idx = obj_tree->indexOfTopLevelItem(ti);
-       else
-               sel_idx = obj_tree->indexOfTopLevelItem(pn);
-
+       int sel_idx = ui.widgetObjectList->getSelObjIdx();
        if (sel_idx < 0)
                return;
 
@@ -1827,14 +1813,11 @@ void FormMain::DeleteSelectedObject()
 
        m_View3d.ClearRenderMap();
 
-       obj_tree->setCurrentItem(NULL);
-       obj_tree->takeTopLevelItem(sel_idx);
+       ui.widgetObjectList->removeObject(sel_idx);
 
-       ui.widgetObjectList->ResizeObjectTreeColumns();
+       int sel_idx2 = ui.widgetObjectList->getSelObjIdxWhenSelObjNode();
 
-       ti = obj_tree->currentItem();
-       sel_idx = obj_tree->indexOfTopLevelItem(ti);
-       m_Scene.m_Sels.SelectObject(sel_idx);
+       m_Scene.m_Sels.SelectObject(sel_idx2);
 
        m_Scene.UpdateTransform();
 
index 0a00352..81a954a 100644 (file)
@@ -155,6 +155,8 @@ void WidgetObjectList::SetPrimayrSelectObjectToScene(void)
                int mb_idx = on->indexOfChild(sel_node);
                sels.SelectMBuf(obj_idx, mb_idx);
        }
+
+       UpdateContextmenuState();
 }
 
 void WidgetObjectList::on_treeObjects_itemChanged(QTreeWidgetItem * item, int column)
@@ -480,3 +482,37 @@ void WidgetObjectList::OnDoneAddGeom(void)
 
        ResizeObjectTreeColumns();
 }
+
+int WidgetObjectList::getSelObjIdx()
+{
+       QTreeWidget* obj_tree = GetTree();
+       QTreeWidgetItem* ti = obj_tree->currentItem();
+       if (ti == NULL)
+               return -1;
+
+       QTreeWidgetItem* pn = ti->parent();
+
+       // 2\91w\8d\\91¢\82Å\82 \82é\82Æ\82¢\82¤\91O\92ñ\82Å
+       // 1\91w\96Ú\82ª\83I\83u\83W\83F\83N\83g\83m\81[\83h
+       // 2\91w\96Ú\82ª\83\81\83b\83V\83\85\83m\81[\83h
+       if (pn == NULL)
+               return obj_tree->indexOfTopLevelItem(ti);
+       else
+               return obj_tree->indexOfTopLevelItem(pn);
+}
+
+int WidgetObjectList::getSelObjIdxWhenSelObjNode()
+{
+       QTreeWidget* obj_tree = GetTree();
+       QTreeWidgetItem* ti = obj_tree->currentItem();
+       return obj_tree->indexOfTopLevelItem(ti);
+}
+
+void WidgetObjectList::removeObject(int objectIdx)
+{
+       QTreeWidget* obj_tree = GetTree();
+       obj_tree->setCurrentItem(NULL);
+       obj_tree->takeTopLevelItem(objectIdx);
+
+       ResizeObjectTreeColumns();
+}
index 903fe5e..645efde 100644 (file)
@@ -53,6 +53,10 @@ public:
        void RebuildObjectList(void);
        void OnDoneAddGeom(void);
 
+       int getSelObjIdx();
+       int getSelObjIdxWhenSelObjNode();
+       void removeObject(int objectIdx);
+
 private slots:
        void on_treeObjects_itemChanged( QTreeWidgetItem * item, int column);
        void on_treeObjects_currentItemChanged(QTreeWidgetItem * current, QTreeWidgetItem * previous);