#include "MatcapSelectDlg.h"
#include "EnvmapSelectDlg.h"
#include "FileDlgUtil.h"
-#include "TreeUtil.h"
#include "MaterialPresetDlg.h"
{
ui.setupUi(this);
+ ui.widgetObjectList->setMainForm(this);
+
m_EnableAllFeatures = false;
m_LastFocusedDockDlg = NULL;
void FormMain::InitContextMenu(void)
{
- QList<QAction*> actions;
- actions
- << ui.actionSelObjectVisible
- << ui.actionSelObjectVertexOnlyMode
- << ui.actionSelObjectDelete
- << ui.actionSelObjectReload
- << ui.actionSelObjectFlipFace
- << ui.actionSelObjectFlipNormal
- << ui.actionSelObjectResetNormal
- << ui.actionSelObjectOpenDir
- << ui.actionActionSelObjectShowOnlyOnce
- << ui.actionSelObjectTriangulate
- << ui.actionTreeCollapseAll
- << ui.actionTreeExpandAll;
-
- QTreeWidget* obj_tree = ui.treeObjects;
-
- obj_tree->setContextMenuPolicy(Qt::ActionsContextMenu);
- obj_tree->addActions(actions);
+ ui.widgetObjectList->RegisterContextMenu();
}
void FormMain::ProcArguments(void)
void FormMain::on_actionWindowObjectList_triggered()
{
ShowAndActivateAndRaise(ui.dockObject);
- ui.treeObjects->setFocus();
+ ui.widgetObjectList->focusList();
}
void FormMain::on_actionWindowCameraList_triggered()
void FormMain::RebuildObjectList(void)
{
- QTreeWidget* obj_tree = ui.treeObjects;
+ QTreeWidget* obj_tree = ui.widgetObjectList->GetTree();
obj_tree->setCurrentItem(NULL);
obj_tree->blockSignals(true);
void FormMain::ResizeObjectTreeColumns(void)
{
- QTreeWidget* t = ui.treeObjects;
+ QTreeWidget* t = ui.widgetObjectList->GetTree();
t->setVisible(false);
t->resizeColumnToContents(0);
void FormMain::InitObjectListHeader(void)
{
- QTreeWidget* obj_tree = ui.treeObjects;
+ QTreeWidget* obj_tree = ui.widgetObjectList->GetTree();
QStringList qs;
qs << "Name" << "Visible" << "Verts" << "Faces";
ui.actionAutoResize ->setChecked( m_Scene.m_Config.m_EnableAutoReisze );
ui.actionCentering ->setChecked( m_Scene.m_Config.m_EnableAutoCentering );
- ui.checkShowOnlySelect->setChecked(m_View3d.m_Config.m_ShowOnlySelect);
+ ui.widgetObjectList->applyConfig();
}
void FormMain::on_actionGeomClear_triggered()
DeleteSelectedObject();
}
-void FormMain::on_actionSelObjectReload_triggered()
-{
- GeomObject* obj = m_Scene.GetPrimaryObject();
- if (obj == NULL)
- return;
-
- if (!obj->IsFileObject())
- {
- QMessageBox::information(this, "", "IsNotFileObject");
- return;
- }
-
- m_Scene.ReloadObject(obj);
-
- RebuildObjectList();
-
- m_View3d.ClearRenderMap();
- updateView_All();
-}
-
-void FormMain::on_actionSelObjectVisible_triggered()
-{
- FlipVisibleSelectedObject();
-}
-
-void FormMain::on_actionSelObjectVertexOnlyMode_triggered()
-{
- GeomObject* obj = m_Scene.GetPrimaryObject();
- if (obj == NULL)
- return;
-
- obj->m_VertexOnlyMode = !obj->m_VertexOnlyMode;
-
- ui.actionSelObjectVertexOnlyMode->setChecked(obj->m_VertexOnlyMode);
-
- updateView_All();
-}
-
-void FormMain::on_actionSelObjectFlipFace_triggered()
-{
- m_Scene.FlipCurselFace(false);
-
- RebuildAllGLBuf();
-}
-
-void FormMain::on_actionSelObjectFlipNormal_triggered()
-{
- m_Scene.FlipCurselFace(true);
-
- RebuildAllGLBuf();
-}
-
-void FormMain::on_actionSelObjectResetNormal_triggered()
-{
- m_Scene.RebuildCurselNormal();
-
- RebuildAllGLBuf();
-}
-
void FormMain::RebuildAllGLBuf(void)
{
ui.GLWidgetMain->makeCurrent();
updateView_All();
}
-void FormMain::on_actionSelObjectOpenDir_triggered()
-{
- GeomObject* obj = m_Scene.GetPrimaryObject();
- if (obj == NULL)
- return;
-
- if (!obj->IsFileObject())
- return;
-
- QString path = QString::fromLocal8Bit(obj->m_FilePath.c_str());
- QString p2 = QDir::toNativeSeparators(path);
- QGui::ShowExplorerFileSel(p2);
-}
-
void FormMain::on_actionShowOnlySelected_triggered()
{
ShowObjectOnlySelected();
}
-void FormMain::on_actionSelObjectTriangulate_triggered()
-{
- MeshBuf* mbuf = m_Scene.GetPrimaryMeshbuf();
- if (mbuf == NULL)
- return;
-
- mbuf->Triangulate();
-
- m_View3d.ReleaseAllRenderBuffer();
-
- RebuildObjectList();
- updateView_All();
-}
-
-void FormMain::on_actionTreeCollapseAll_triggered()
-{
- TreeUtil::SetAllTopExpand(ui.treeObjects, false);
-}
-
-void FormMain::on_actionTreeExpandAll_triggered()
-{
- TreeUtil::SetAllTopExpand(ui.treeObjects, true);
-}
-
void FormMain::on_actionAddSample_triggered()
{
void FormMain::OnDoneAddGeom(void)
{
- QTreeWidget* obj_tree = ui.treeObjects;
+ QTreeWidget* obj_tree = ui.widgetObjectList->GetTree();
const GeomObject& obj = m_Scene.m_Objects.back();
}
-void FormMain::on_pushDeleteSelectedObject_clicked()
-{
- DeleteSelectedObject();
-}
-
-void FormMain::on_treeObjects_currentItemChanged(QTreeWidgetItem * current, QTreeWidgetItem * previous)
-{
- RefreshObjectSelectState();
-}
-
-void FormMain::on_treeObjects_itemChanged(QTreeWidgetItem * item, int column)
-{
- if (column != 1)
- return;
-
- QTreeWidget* obj_tree = ui.treeObjects;
-
- QTreeWidgetItem* t = item->parent();
- bool checked = (item->checkState(1) == Qt::Checked);
- if (t == NULL)
- {
- int sel_idx = obj_tree->indexOfTopLevelItem(item);
- GeomObject& obj = m_Scene.m_Objects[sel_idx];
- obj.m_Visible = checked;
- }
- else
- {
- int sel_idx = obj_tree->indexOfTopLevelItem(t);
- int midx = t->indexOfChild(item);
-
- GeomObject& obj = m_Scene.m_Objects[sel_idx];
- MeshBuf& mb = obj.m_MeshAry[midx];
- mb.m_Visible = checked;
- }
-
- updateView_All();
-}
-
void FormMain::RefreshObjectSelectState(void)
{
- SetPrimayrSelectObjectToScene();
+ ui.widgetObjectList->SetPrimayrSelectObjectToScene();
RebuildMatList();
UpdateContextmenuState();
void FormMain::UpdateContextmenuState(void)
{
- GeomObject* obj = m_Scene.GetPrimaryObject();
- MeshBuf* mbuf = m_Scene.GetPrimaryMeshbuf();
-
- if (mbuf != NULL)
- {
- ui.actionSelObjectVisible->setChecked(mbuf->IsVisible());
- }
- else if (obj != NULL)
- {
- ui.actionSelObjectVisible->setChecked(obj->m_Visible);
- }
-
- if (obj != NULL)
- ui.actionSelObjectVertexOnlyMode->setChecked(obj->m_VertexOnlyMode);
-}
-
-void FormMain::SetPrimayrSelectObjectToScene(void)
-{
- Selection3D& sels = m_Scene.m_Sels;
-
- QTreeWidget* tree = ui.treeObjects;
-
- QTreeWidgetItem* sel_node = tree->currentItem();
- if (sel_node == NULL)
- return;
-
- QTreeWidgetItem* on = sel_node->parent();
- if (on == NULL)
- {
- int obj_idx = tree->indexOfTopLevelItem(sel_node);
- sels.SelectObject(obj_idx);
- }
- else
- {
- int obj_idx = tree->indexOfTopLevelItem(on);
- int mb_idx = on->indexOfChild(sel_node);
- sels.SelectMBuf(obj_idx, mb_idx);
- }
+ ui.widgetObjectList->UpdateContextmenuState();
}
void FormMain::DeleteSelectedObject()
{
- QTreeWidget* obj_tree = ui.treeObjects;
+ QTreeWidget* obj_tree = ui.widgetObjectList->GetTree();
QTreeWidgetItem* ti = obj_tree->currentItem();
if (ti == NULL)
return;
void FormMain::FlipVisibleSelectedObject()
{
- QTreeWidget* obj_tree = ui.treeObjects;
- QTreeWidgetItem * item = obj_tree->currentItem();
- if (item == NULL)
- return;
-
- item->setCheckState(1, FilpState(item->checkState(1)));
+ ui.widgetObjectList->FlipVisibleSelectedObject();
}
Qt::CheckState FormMain::FilpState(Qt::CheckState state) const
void FormMain::AddSelectObjectIdx(int step)
{
- QTreeWidget* obj_tree = ui.treeObjects;
-
- int num_obj = obj_tree->topLevelItemCount();
- if (num_obj == 0)
- return;
-
- QTreeWidgetItem * i = obj_tree->currentItem();
- int idx = obj_tree->indexOfTopLevelItem(i);
- idx += step;
-
- if (0 > idx)
- idx = num_obj - 1;
- else if (idx >= num_obj)
- idx = 0;
-
- QTreeWidgetItem * j = obj_tree->topLevelItem(idx);
- obj_tree->setCurrentItem(j);
+ ui.widgetObjectList->AddSelectObjectIdx(step);
}
void FormMain::on_actionSwitchVisible_triggered()
FlipVisibleSelectedObject();
}
-void FormMain::on_actionActionSelObjectShowOnlyOnce_triggered()
-{
- ShowObjectOnlySelected();
-}
-
void FormMain::on_actionHideAll_triggered()
{
m_Scene.HideAllObject();
updateView_All();
}
-void FormMain::on_buttonClearAllGeoms_clicked()
-{
- ClearAllObjects();
-}
-
//! \83J\83\81\83\89\88Ê\92u\95\9c\8c³\8b@\94\\8eg\97p\8e\9e\82Ì\83A\83j\83\81\81[\83V\83\87\83\93\97L\96³
void FormMain::on_checkCameraAnimation_toggled(bool checked)
{
void FormMain::View3D_SelectedObjectChanged(int sel_obj, int sel_mesh)
{
- QTreeWidgetItem* on = ui.treeObjects->topLevelItem(sel_obj);
-
- if (sel_mesh == -1)
- {
- ui.treeObjects->setCurrentItem(on);
- }
- else
- {
- QTreeWidgetItem* mn = on->child(sel_mesh);
- ui.treeObjects->setCurrentItem(mn);
- }
+ ui.widgetObjectList->OnSelectedObjectChanged(sel_obj, sel_mesh);
}
void FormMain::View3D_SelectedMatChanged(int sel_idx)
return;
}
-void FormMain::on_checkShowOnlySelect_toggled(bool checked)
-{
- m_View3d.m_Config.m_ShowOnlySelect = checked;
- updateView_All();
-}
-
void FormMain::PushbackTreeNode(QTreeWidget* tree, QTreeWidgetItem *node)
{
int next_idx = tree->topLevelItemCount();
void FormMain::SetPrimayrSelectObjectFromScene(void)
{
- QTreeWidget* obj_tree = ui.treeObjects;
-
- Selection3D& sels = m_Scene.m_Sels;
- if (!sels.IsObjectSelected())
- return;
-
- int sel_idx = sels.GetSelObjectIdx();
-
- QTreeWidgetItem* on = obj_tree->topLevelItem(sel_idx);
- if (on == NULL)
- return;
-
- if (sels.IsMBufSelected())
- {
- QTreeWidgetItem* mn = on->child(sels.GetMBufIdx());
- obj_tree->setCurrentItem(mn);
- }
- else
- {
- obj_tree->setCurrentItem(on);
- }
+ ui.widgetObjectList->SetPrimayrSelectObjectFromScene(m_Scene);
}
void FormMain::on_actionReleaseShader_triggered()
bool OpenGeomFile(const QString& path);
+ void updateView_All(void);
+ void updateView_2D(void);
+ void updateView_3D(void);
+
+ void RefreshObjectSelectState(void);
+
+ void DeleteSelectedObject();
+
+ void ClearAllObjects(void);
+
+ void RebuildObjectList(void);
+
+ void RebuildAllGLBuf(void);
+
+ void ShowObjectOnlySelected(void);
+
protected:
virtual void closeEvent(QCloseEvent *e);
void InitContextMenu(void);
void ProcArguments(void);
- void updateView_All(void);
- void updateView_2D(void);
- void updateView_3D(void);
-
bool IsCameraFile(const QString& path) const;
void DropTextureFile(const QString& path, const QPoint& pos);
void OnDoneAddGeom(void);
- void ClearAllObjects(void);
-
- void RebuildObjectList(void);
void ResizeObjectTreeColumns(void);
void ApplyGeomStateFromGUI(void);
void OnChangedSelectedMaterial(void);
void SetMatShininessSliderPos(float shininess);
- void DeleteSelectedObject();
void FlipVisibleSelectedObject();
- void ShowObjectOnlySelected(void);
QTreeWidgetItem* CreateObjectTreeNode(const geom::GeomObject& obj) const;
QTreeWidgetItem* CreateMeshBufNode(const geom::GeomObject& obj, const MeshBuf& mbuf, int idx) const;
- void RefreshObjectSelectState(void);
void RebuildMatList(void);
void UpdateContextmenuState(void);
void InitObjectListHeader(void);
void SetPrimayrSelectObjectFromScene(void);
- void SetPrimayrSelectObjectToScene(void);
void PushbackTreeNode(QTreeWidget* tree, QTreeWidgetItem *node);
void ResetSequenceSliderRange(void);
void UpdateSequence(void);
- void RebuildAllGLBuf(void);
void UpdateLightPowerText(void);
void SyncTexConfigToGUI(bool silent);
void on_actionIOOptionPanel_triggered();
void on_listMaterial_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
- void on_treeObjects_currentItemChanged(QTreeWidgetItem * current, QTreeWidgetItem * previous);
virtual void actionGeomStates_Triggered(bool);
void on_actionGeomClear_triggered();
void on_actionUVFitView_triggered();
void on_actionSelObjectDelete_triggered();
- void on_actionSelObjectReload_triggered();
- void on_actionSelObjectVisible_triggered();
- void on_actionSelObjectVertexOnlyMode_triggered();
- void on_actionSelObjectResetNormal_triggered();
- void on_actionSelObjectFlipFace_triggered();
- void on_actionSelObjectOpenDir_triggered();
- void on_actionSelObjectFlipNormal_triggered();
void on_actionShowOnlySelected_triggered();
- void on_actionSelObjectTriangulate_triggered();
- void on_actionTreeCollapseAll_triggered();
- void on_actionTreeExpandAll_triggered();
void on_actionAddSample_triggered();
void on_actionIntegrateShader_triggered(bool checked);
void on_actionMatcapShader_triggered(bool checked);
- void on_pushDeleteSelectedObject_clicked();
-
- void on_treeObjects_itemChanged( QTreeWidgetItem * item, int column);
-
void on_actionUVResetView_triggered();
void on_actionWireColor_triggered();
void on_sliderShadowDarkness_valueChanged(int value);
- void on_buttonClearAllGeoms_clicked();
-
void on_checkCameraAnimation_toggled(bool checked);
void on_actionOpenAppdir_triggered();
void on_buttonIncGridAxis_clicked();
void on_buttonResetGridAxis_clicked();
- void on_actionActionSelObjectShowOnlyOnce_triggered();
-
void View3D_SelectedObjectChanged(int sel_obj, int sel_mesh);
void View3D_SelectedMatChanged(int sel_idx);
void View3D_CameraMoved(void);
void OnOpenRecent();
- void on_checkShowOnlySelect_toggled(bool checked);
-
void on_actionReleaseShader_triggered();
void on_combo2DViewSrcType_currentIndexChanged(int index);
QDockWidget* m_LastFocusedDockDlg;
-private:
+public:
SceneMain m_Scene;
+ View3D m_View3d;
+ View2D m_View2d;
+
+private:
QString m_LastFileDialogDir;
lib_gl::GlContextShare m_ContextShare;
- View3D m_View3d;
- View2D m_View2d;
GLWidgetList m_Widgets;
QTimer m_AnimationTimer;
<property name="minimumSize">
<size>
<width>160</width>
- <height>172</height>
+ <height>111</height>
</size>
</property>
<property name="allowedAreas">
<number>1</number>
</property>
<item>
- <widget class="QCheckBox" name="checkShowOnlySelect">
- <property name="text">
- <string>ShowOnlySelect</string>
- </property>
- </widget>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_4">
- <item>
- <widget class="QPushButton" name="pushDeleteSelectedObject">
- <property name="text">
- <string>Del</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="buttonClearAllGeoms">
- <property name="text">
- <string>Clear</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="QTreeWidget" name="treeObjects">
- <property name="editTriggers">
- <set>QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set>
- </property>
- <property name="tabKeyNavigation">
- <bool>true</bool>
- </property>
- <property name="dragDropOverwriteMode">
- <bool>true</bool>
- </property>
- <property name="selectionMode">
- <enum>QAbstractItemView::ExtendedSelection</enum>
- </property>
- <property name="selectionBehavior">
- <enum>QAbstractItemView::SelectItems</enum>
- </property>
- <column>
- <property name="text">
- <string notr="true">1</string>
- </property>
- </column>
- </widget>
+ <widget class="WidgetObjectList" name="widgetObjectList" native="true"/>
</item>
</layout>
</widget>
<property name="geometry">
<rect>
<x>0</x>
- <y>-239</y>
+ <y>0</y>
<width>373</width>
<height>633</height>
</rect>
<string>Del</string>
</property>
</action>
- <action name="actionSelObjectVisible">
- <property name="checkable">
- <bool>true</bool>
- </property>
- <property name="text">
- <string>&Visible</string>
- </property>
- </action>
- <action name="actionSelObjectVertexOnlyMode">
- <property name="checkable">
- <bool>true</bool>
- </property>
- <property name="text">
- <string>VertexOnlyMode</string>
- </property>
- </action>
<action name="actionAddSample">
<property name="text">
<string>&AddSample</string>
</property>
</action>
- <action name="actionSelObjectReload">
- <property name="text">
- <string>&ReloadSelObject</string>
- </property>
- </action>
<action name="actionWindowObjectList">
<property name="text">
<string>Object List</string>
<string>&Normal(Vert)</string>
</property>
</action>
- <action name="actionSelObjectFlipFace">
- <property name="text">
- <string>&FlipFace</string>
- </property>
- </action>
- <action name="actionSelObjectFlipNormal">
- <property name="text">
- <string>Flip&Normal</string>
- </property>
- </action>
<action name="actionTumble">
<property name="checkable">
<bool>true</bool>
<string>Open&Appdir</string>
</property>
</action>
- <action name="actionSelObjectOpenDir">
- <property name="text">
- <string>&OpenDir</string>
- </property>
- </action>
<action name="actionHideAll">
<property name="text">
<string>HideAll</string>
<string>Ctrl+Shift+V</string>
</property>
</action>
- <action name="actionActionSelObjectShowOnlyOnce">
- <property name="text">
- <string>&ShowOnlyOnce</string>
- </property>
- </action>
<action name="actionWireVBO">
<property name="checkable">
<bool>true</bool>
<string>ShowSelVertCoord</string>
</property>
</action>
- <action name="actionSelObjectTriangulate">
- <property name="text">
- <string>&Triangulate</string>
- </property>
- </action>
- <action name="actionTreeCollapseAll">
- <property name="text">
- <string>&Collapse All</string>
- </property>
- </action>
- <action name="actionTreeExpandAll">
- <property name="text">
- <string>&Expand All</string>
- </property>
- </action>
<action name="actionUseFixTexture">
<property name="checkable">
<bool>true</bool>
<string>IO Option Panel</string>
</property>
</action>
- <action name="actionSelObjectResetNormal">
- <property name="text">
- <string>ResetNormal</string>
- </property>
- </action>
<action name="actionHighlightSelectedWire">
<property name="checkable">
<bool>true</bool>
<header>WidgetIOOption.h</header>
<container>1</container>
</customwidget>
+ <customwidget>
+ <class>WidgetObjectList</class>
+ <extends>QWidget</extends>
+ <header>WidgetObjectList.h</header>
+ <container>1</container>
+ </customwidget>
</customwidgets>
<tabstops>
<tabstop>scrollArea</tabstop>
<tabstop>buttonOpenMatCapEachMaterial</tabstop>
<tabstop>buttonClearMatCapEachMaterial</tabstop>
<tabstop>sliderShininess</tabstop>
- <tabstop>checkShowOnlySelect</tabstop>
- <tabstop>pushDeleteSelectedObject</tabstop>
- <tabstop>treeObjects</tabstop>
- <tabstop>buttonClearAllGeoms</tabstop>
<tabstop>pushButtonAddCameraRecord</tabstop>
<tabstop>pushButtonDeleteCameraRecord</tabstop>
<tabstop>GLWidgetMain</tabstop>
PresetSelectDlg.h \
MaterialPresetDlg.h \
QtFreeScroll.h \
- WidgetIOOption.h
+ WidgetIOOption.h \
+ WidgetObjectList.h
SOURCES += \
QtViewBase.cpp \
PresetSelectDlg.cpp \
MaterialPresetDlg.cpp \
QtFreeScroll.cpp \
- WidgetIOOption.cpp
+ WidgetIOOption.cpp \
+ WidgetObjectList.cpp
FORMS += \
FormMain.ui \
PresetSelectDlg.ui \
MaterialPresetDlg.ui \
QtFreeScroll.ui \
- WidgetIOOption.ui
+ WidgetIOOption.ui \
+ WidgetObjectList.ui
RESOURCES += \
FormMain.qrc
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
+ <ClCompile Include="GeneratedFiles\Debug\moc_WidgetObjectList.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ </ClCompile>
<ClCompile Include="GeneratedFiles\Release\moc_DlgAssociationEdit.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
</ClCompile>
+ <ClCompile Include="GeneratedFiles\Release\moc_WidgetObjectList.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ </ClCompile>
<ClCompile Include="GeometryRender.cpp" />
<ClCompile Include="GeometryVBO.cpp" />
<ClCompile Include="GuiConfig.cpp" />
<XMLDocumentationFileName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)%(Filename)1.xdc</XMLDocumentationFileName>
</ClCompile>
<ClCompile Include="WidgetIOOption.cpp" />
+ <ClCompile Include="WidgetObjectList.cpp" />
</ItemGroup>
<ItemGroup>
<CustomBuild Include="CameraRecords.h">
<ItemGroup>
<ClInclude Include="AppVersion.h" />
<ClInclude Include="BuildInfo.h" />
+ <CustomBuild Include="WidgetObjectList.h">
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing WidgetObjectList.h...</Message>
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fStdAfx.h" "-f../../WidgetObjectList.h" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_OPENGL_LIB -DQT_DLL -DQT_XML_LIB -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_NETWORK_LIB "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(Configuration)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtXml" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtWidgets" "-I." "-I.\.." "-I$(QTDIR)\include\QtNetwork" "-I.\..\..\LibExt\assimp-3.1.1-WinBuild\include" "-I$(PATH_BOOST)\." "-I.\..\..\LibExt\OpenGlut-0.6.3\Include" "-I.\..\..\LibExt\glew-1.12.0\include" "-I.\..\..\LibExt\SDL2-2.0.3\include" "-I.\..\..\LibExt\SDL2_image-2.0.0\include" "-I.\..\..\LibExt\win-iconv-0.0.6" "-I.\..\..\LibExt\meshio" "-I.\..\..\LibExt" "-I.\..\..\Lib"</Command>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing WidgetObjectList.h...</Message>
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fStdAfx.h" "-f../../WidgetObjectList.h" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_OPENGL_LIB -DQT_DLL -DQT_XML_LIB -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_NETWORK_LIB "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(Configuration)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtXml" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtWidgets" "-I." "-I.\.." "-I$(QTDIR)\include\QtNetwork" "-I.\..\..\LibExt\assimp-3.1.1-WinBuild\include" "-I$(PATH_BOOST)\." "-I.\..\..\LibExt\OpenGlut-0.6.3\Include" "-I.\..\..\LibExt\glew-1.12.0\include" "-I.\..\..\LibExt\SDL2-2.0.3\include" "-I.\..\..\LibExt\SDL2_image-2.0.0\include" "-I.\..\..\LibExt\win-iconv-0.0.6" "-I.\..\..\LibExt\meshio" "-I.\..\..\LibExt" "-I.\..\..\Lib"</Command>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing WidgetObjectList.h...</Message>
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fStdAfx.h" "-f../../WidgetObjectList.h" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_OPENGL_LIB -DQT_DLL -DQT_XML_LIB -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_NETWORK_LIB "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(Configuration)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtXml" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtWidgets" "-I." "-I.\.." "-I$(QTDIR)\include\QtNetwork" "-I.\..\..\LibExt\assimp-3.1.1-WinBuild\include" "-I$(PATH_BOOST)\." "-I.\..\..\LibExt\OpenGlut-0.6.3\Include" "-I.\..\..\LibExt\glew-1.12.0\include" "-I.\..\..\LibExt\SDL2-2.0.3\include" "-I.\..\..\LibExt\SDL2_image-2.0.0\include" "-I.\..\..\LibExt\win-iconv-0.0.6" "-I.\..\..\LibExt\meshio" "-I.\..\..\LibExt" "-I.\..\..\Lib"</Command>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing WidgetObjectList.h...</Message>
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "-fStdAfx.h" "-f../../WidgetObjectList.h" -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_THREAD_SUPPORT -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_OPENGL_LIB -DQT_DLL -DQT_XML_LIB -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_NETWORK_LIB "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(Configuration)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtXml" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtWidgets" "-I." "-I.\.." "-I$(QTDIR)\include\QtNetwork" "-I.\..\..\LibExt\assimp-3.1.1-WinBuild\include" "-I$(PATH_BOOST)\." "-I.\..\..\LibExt\OpenGlut-0.6.3\Include" "-I.\..\..\LibExt\glew-1.12.0\include" "-I.\..\..\LibExt\SDL2-2.0.3\include" "-I.\..\..\LibExt\SDL2_image-2.0.0\include" "-I.\..\..\LibExt\win-iconv-0.0.6" "-I.\..\..\LibExt\meshio" "-I.\..\..\LibExt" "-I.\..\..\Lib"</Command>
+ </CustomBuild>
<CustomBuild Include="WidgetIOOption.h">
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing WidgetIOOption.h...</Message>
<ClInclude Include="GeneratedFiles\ui_QGVAboutDlg.h" />
<ClInclude Include="GeneratedFiles\ui_QtFreeScroll.h" />
<ClInclude Include="GeneratedFiles\ui_WidgetIOOption.h" />
+ <ClInclude Include="GeneratedFiles\ui_WidgetObjectList.h" />
<ClInclude Include="GeometryVBO.h" />
<CustomBuild Include="QGVAboutDlg.h">
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>
</CustomBuild>
+ <CustomBuild Include="WidgetObjectList.ui">
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Uic%27ing %(Identity)...</Message>
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>
+ <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Uic%27ing %(Identity)...</Message>
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Uic%27ing %(Identity)...</Message>
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>
+ <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>
+ <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Uic%27ing %(Identity)...</Message>
+ <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>
+ <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>
+ </CustomBuild>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Lib\LibGeo\LibGeo_vc11.vcxproj">
<ClCompile Include="GeneratedFiles\Release\moc_WidgetIOOption.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
+ <ClCompile Include="WidgetObjectList.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="GeneratedFiles\Debug\moc_WidgetObjectList.cpp">
+ <Filter>Generated Files\Debug</Filter>
+ </ClCompile>
+ <ClCompile Include="GeneratedFiles\Release\moc_WidgetObjectList.cpp">
+ <Filter>Generated Files\Release</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="QtGeoViewer.rc">
<CustomBuild Include="WidgetIOOption.ui">
<Filter>Form Files</Filter>
</CustomBuild>
+ <CustomBuild Include="WidgetObjectList.h">
+ <Filter>Header Files</Filter>
+ </CustomBuild>
+ <CustomBuild Include="WidgetObjectList.ui">
+ <Filter>Form Files</Filter>
+ </CustomBuild>
</ItemGroup>
<ItemGroup>
<ClInclude Include="MouseButtons.h">
<ClInclude Include="GeneratedFiles\ui_WidgetIOOption.h">
<Filter>Generated Files</Filter>
</ClInclude>
+ <ClInclude Include="GeneratedFiles\ui_WidgetObjectList.h">
+ <Filter>Generated Files</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="ShaderCode\Mesh\shadowmap.frag">
--- /dev/null
+#include "stdafx.h"
+#include "WidgetObjectList.h"
+
+#include "FormMain.h"
+#include "TreeUtil.h"
+
+#include <QMessageBox>
+
+#include <Qt5Utility/QGui.h>
+
+
+
+WidgetObjectList::WidgetObjectList(QWidget *parent)
+ : QWidget(parent)
+{
+ ui.setupUi(this);
+}
+
+WidgetObjectList::~WidgetObjectList()
+{
+
+}
+
+void WidgetObjectList::setMainForm(FormMain* mainFrm_)
+{
+ mainFrm = mainFrm_;
+}
+
+void WidgetObjectList::RegisterContextMenu(void)
+{
+ QList<QAction*> actions;
+ actions
+ << ui.actionSelObjectVisible
+ << ui.actionSelObjectVertexOnlyMode
+ << ui.actionSelObjectDelete
+ << ui.actionSelObjectReload
+ << ui.actionSelObjectFlipFace
+ << ui.actionSelObjectFlipNormal
+ << ui.actionSelObjectResetNormal
+ << ui.actionSelObjectOpenDir
+ << ui.actionActionSelObjectShowOnlyOnce
+ << ui.actionSelObjectTriangulate
+ << ui.actionTreeCollapseAll
+ << ui.actionTreeExpandAll;
+
+ QTreeWidget* obj_tree = ui.treeObjects;
+
+ obj_tree->setContextMenuPolicy(Qt::ActionsContextMenu);
+ obj_tree->addActions(actions);
+}
+
+void WidgetObjectList::focusList(void)
+{
+ ui.treeObjects->setFocus();
+}
+
+void WidgetObjectList::SetPrimayrSelectObjectFromScene(SceneMain& scene)
+{
+ QTreeWidget* obj_tree = ui.treeObjects;
+
+ Selection3D& sels = scene.m_Sels;
+ if (!sels.IsObjectSelected())
+ return;
+
+ int sel_idx = sels.GetSelObjectIdx();
+
+ QTreeWidgetItem* on = obj_tree->topLevelItem(sel_idx);
+ if (on == NULL)
+ return;
+
+ if (sels.IsMBufSelected())
+ {
+ QTreeWidgetItem* mn = on->child(sels.GetMBufIdx());
+ obj_tree->setCurrentItem(mn);
+ }
+ else
+ {
+ obj_tree->setCurrentItem(on);
+ }
+}
+
+void WidgetObjectList::OnSelectedObjectChanged(int sel_obj, int sel_mesh)
+{
+ QTreeWidgetItem* on = ui.treeObjects->topLevelItem(sel_obj);
+
+ if (sel_mesh == -1)
+ {
+ ui.treeObjects->setCurrentItem(on);
+ }
+ else
+ {
+ QTreeWidgetItem* mn = on->child(sel_mesh);
+ ui.treeObjects->setCurrentItem(mn);
+ }
+}
+
+void WidgetObjectList::AddSelectObjectIdx(int step)
+{
+ QTreeWidget* obj_tree = ui.treeObjects;
+
+ int num_obj = obj_tree->topLevelItemCount();
+ if (num_obj == 0)
+ return;
+
+ QTreeWidgetItem * i = obj_tree->currentItem();
+ int idx = obj_tree->indexOfTopLevelItem(i);
+ idx += step;
+
+ if (0 > idx)
+ idx = num_obj - 1;
+ else if (idx >= num_obj)
+ idx = 0;
+
+ QTreeWidgetItem * j = obj_tree->topLevelItem(idx);
+ obj_tree->setCurrentItem(j);
+}
+
+void WidgetObjectList::FlipVisibleSelectedObject()
+{
+ QTreeWidget* obj_tree = ui.treeObjects;
+ QTreeWidgetItem * item = obj_tree->currentItem();
+ if (item == NULL)
+ return;
+
+ item->setCheckState(1, FilpState(item->checkState(1)));
+}
+
+Qt::CheckState WidgetObjectList::FilpState(Qt::CheckState state) const
+{
+ if(state == Qt::Checked)
+ return Qt::Unchecked;
+ else
+ return Qt::Checked;
+}
+
+void WidgetObjectList::SetPrimayrSelectObjectToScene(void)
+{
+ Selection3D& sels = mainFrm->m_Scene.m_Sels;
+
+ QTreeWidget* tree = ui.treeObjects;
+
+ QTreeWidgetItem* sel_node = tree->currentItem();
+ if (sel_node == NULL)
+ return;
+
+ QTreeWidgetItem* on = sel_node->parent();
+ if (on == NULL)
+ {
+ int obj_idx = tree->indexOfTopLevelItem(sel_node);
+ sels.SelectObject(obj_idx);
+ }
+ else
+ {
+ int obj_idx = tree->indexOfTopLevelItem(on);
+ int mb_idx = on->indexOfChild(sel_node);
+ sels.SelectMBuf(obj_idx, mb_idx);
+ }
+}
+
+void WidgetObjectList::on_treeObjects_itemChanged(QTreeWidgetItem * item, int column)
+{
+ if (column != 1)
+ return;
+
+ QTreeWidget* obj_tree = ui.treeObjects;
+
+ QTreeWidgetItem* t = item->parent();
+ bool checked = (item->checkState(1) == Qt::Checked);
+ if (t == NULL)
+ {
+ int sel_idx = obj_tree->indexOfTopLevelItem(item);
+ GeomObject& obj = mainFrm->m_Scene.m_Objects[sel_idx];
+ obj.m_Visible = checked;
+ }
+ else
+ {
+ int sel_idx = obj_tree->indexOfTopLevelItem(t);
+ int midx = t->indexOfChild(item);
+
+ GeomObject& obj = mainFrm->m_Scene.m_Objects[sel_idx];
+ MeshBuf& mb = obj.m_MeshAry[midx];
+ mb.m_Visible = checked;
+ }
+
+ mainFrm->updateView_All();
+}
+
+QTreeWidget* WidgetObjectList::GetTree(void)
+{
+ return ui.treeObjects;
+}
+
+void WidgetObjectList::applyConfig(void)
+{
+ ui.checkShowOnlySelect->setChecked(mainFrm->m_View3d.m_Config.m_ShowOnlySelect);
+}
+
+void WidgetObjectList::on_treeObjects_currentItemChanged(QTreeWidgetItem * current, QTreeWidgetItem * previous)
+{
+ mainFrm->RefreshObjectSelectState();
+}
+
+void WidgetObjectList::on_checkShowOnlySelect_toggled(bool checked)
+{
+ mainFrm->m_View3d.m_Config.m_ShowOnlySelect = checked;
+ mainFrm->updateView_All();
+}
+
+void WidgetObjectList::on_buttonClearAllGeoms_clicked()
+{
+ mainFrm->ClearAllObjects();
+}
+
+void WidgetObjectList::on_pushDeleteSelectedObject_clicked()
+{
+ mainFrm->DeleteSelectedObject();
+}
+
+
+void WidgetObjectList::on_actionTreeCollapseAll_triggered()
+{
+ TreeUtil::SetAllTopExpand(GetTree(), false);
+}
+
+void WidgetObjectList::on_actionTreeExpandAll_triggered()
+{
+ TreeUtil::SetAllTopExpand(GetTree(), true);
+}
+
+void WidgetObjectList::on_actionSelObjectVisible_triggered()
+{
+ FlipVisibleSelectedObject();
+}
+
+void WidgetObjectList::on_actionSelObjectVertexOnlyMode_triggered()
+{
+ GeomObject* obj = mainFrm->m_Scene.GetPrimaryObject();
+ if (obj == NULL)
+ return;
+
+ obj->m_VertexOnlyMode = !obj->m_VertexOnlyMode;
+
+ ui.actionSelObjectVertexOnlyMode->setChecked(obj->m_VertexOnlyMode);
+
+ mainFrm->updateView_All();
+}
+
+void WidgetObjectList::UpdateContextmenuState(void)
+{
+ GeomObject* obj = mainFrm->m_Scene.GetPrimaryObject();
+ MeshBuf* mbuf = mainFrm->m_Scene.GetPrimaryMeshbuf();
+
+ if (mbuf != NULL)
+ {
+ ui.actionSelObjectVisible->setChecked(mbuf->IsVisible());
+ }
+ else if (obj != NULL)
+ {
+ ui.actionSelObjectVisible->setChecked(obj->m_Visible);
+ }
+
+ if (obj != NULL)
+ ui.actionSelObjectVertexOnlyMode->setChecked(obj->m_VertexOnlyMode);
+}
+
+void WidgetObjectList::on_actionSelObjectTriangulate_triggered()
+{
+ MeshBuf* mbuf = mainFrm->m_Scene.GetPrimaryMeshbuf();
+ if (mbuf == NULL)
+ return;
+
+ mbuf->Triangulate();
+
+ mainFrm->m_View3d.ReleaseAllRenderBuffer();
+
+ mainFrm->RebuildObjectList();
+ mainFrm->updateView_All();
+}
+
+void WidgetObjectList::on_actionSelObjectResetNormal_triggered()
+{
+ mainFrm->m_Scene.RebuildCurselNormal();
+
+ mainFrm->RebuildAllGLBuf();
+}
+
+void WidgetObjectList::on_actionSelObjectReload_triggered()
+{
+ GeomObject* obj = mainFrm->m_Scene.GetPrimaryObject();
+ if (obj == NULL)
+ return;
+
+ if (!obj->IsFileObject())
+ {
+ QMessageBox::information(mainFrm, "", "IsNotFileObject");
+ return;
+ }
+
+ mainFrm->m_Scene.ReloadObject(obj);
+
+ mainFrm->RebuildObjectList();
+
+ mainFrm->m_View3d.ClearRenderMap();
+ mainFrm->updateView_All();
+}
+
+void WidgetObjectList::on_actionSelObjectOpenDir_triggered()
+{
+ GeomObject* obj = mainFrm->m_Scene.GetPrimaryObject();
+ if (obj == NULL)
+ return;
+
+ if (!obj->IsFileObject())
+ return;
+
+ QString path = QString::fromLocal8Bit(obj->m_FilePath.c_str());
+ QString p2 = QDir::toNativeSeparators(path);
+ QGui::ShowExplorerFileSel(p2);
+}
+
+void WidgetObjectList::on_actionSelObjectFlipNormal_triggered()
+{
+ mainFrm->m_Scene.FlipCurselFace(true);
+
+ mainFrm->RebuildAllGLBuf();
+}
+
+void WidgetObjectList::on_actionSelObjectFlipFace_triggered()
+{
+ mainFrm->m_Scene.FlipCurselFace(false);
+
+ mainFrm->RebuildAllGLBuf();
+}
+
+void WidgetObjectList::on_actionActionSelObjectShowOnlyOnce_triggered()
+{
+ mainFrm->ShowObjectOnlySelected();
+}
+
+void WidgetObjectList::on_actionSelObjectDelete_triggered()
+{
+ mainFrm->DeleteSelectedObject();
+}
--- /dev/null
+#pragma once
+
+#include <QWidget>
+#include "ui_WidgetObjectList.h"
+
+#include "../LibQtGeoViewerCore/SceneMain.h"
+
+
+class FormMain;
+
+class WidgetObjectList : public QWidget
+{
+ Q_OBJECT
+
+public:
+ WidgetObjectList(QWidget *parent = 0);
+ ~WidgetObjectList();
+
+ void setMainForm(FormMain* mainFrm_);
+
+ void RegisterContextMenu(void);
+
+ void focusList(void);
+
+ void SetPrimayrSelectObjectFromScene(SceneMain& scene);
+
+ void OnSelectedObjectChanged(int sel_obj, int sel_mesh);
+
+ void AddSelectObjectIdx(int step);
+
+ void FlipVisibleSelectedObject(void);
+
+ Qt::CheckState FilpState(Qt::CheckState state) const;
+
+ void DeleteSelectedObject(void);
+ void SetPrimayrSelectObjectToScene(void);
+
+ QTreeWidget* GetTree(void);
+
+ void applyConfig(void);
+
+ void UpdateContextmenuState(void);
+
+private slots:
+ void on_treeObjects_itemChanged( QTreeWidgetItem * item, int column);
+ void on_treeObjects_currentItemChanged(QTreeWidgetItem * current, QTreeWidgetItem * previous);
+ void on_checkShowOnlySelect_toggled(bool checked);
+
+ void on_pushDeleteSelectedObject_clicked();
+ void on_buttonClearAllGeoms_clicked();
+
+ void on_actionTreeCollapseAll_triggered();
+ void on_actionTreeExpandAll_triggered();
+
+ void on_actionSelObjectVisible_triggered();
+ void on_actionSelObjectVertexOnlyMode_triggered();
+ void on_actionSelObjectTriangulate_triggered();
+
+ void on_actionSelObjectResetNormal_triggered();
+
+ void on_actionSelObjectReload_triggered();
+ void on_actionSelObjectOpenDir_triggered();
+ void on_actionSelObjectFlipNormal_triggered();
+ void on_actionSelObjectFlipFace_triggered();
+ void on_actionActionSelObjectShowOnlyOnce_triggered();
+ void on_actionSelObjectDelete_triggered();
+
+private:
+ Ui::WidgetObjectList ui;
+
+ FormMain* mainFrm;
+};
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetObjectList</class>
+ <widget class="QWidget" name="WidgetObjectList">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>WidgetObjectList</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>1</number>
+ </property>
+ <property name="leftMargin">
+ <number>1</number>
+ </property>
+ <property name="topMargin">
+ <number>1</number>
+ </property>
+ <property name="rightMargin">
+ <number>1</number>
+ </property>
+ <property name="bottomMargin">
+ <number>1</number>
+ </property>
+ <item>
+ <widget class="QCheckBox" name="checkShowOnlySelect">
+ <property name="text">
+ <string>ShowOnlySelect</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QTreeWidget" name="treeObjects">
+ <property name="editTriggers">
+ <set>QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set>
+ </property>
+ <property name="tabKeyNavigation">
+ <bool>true</bool>
+ </property>
+ <property name="dragDropOverwriteMode">
+ <bool>true</bool>
+ </property>
+ <property name="selectionMode">
+ <enum>QAbstractItemView::ExtendedSelection</enum>
+ </property>
+ <property name="selectionBehavior">
+ <enum>QAbstractItemView::SelectItems</enum>
+ </property>
+ <column>
+ <property name="text">
+ <string notr="true">1</string>
+ </property>
+ </column>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QPushButton" name="pushDeleteSelectedObject">
+ <property name="text">
+ <string>Del</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="buttonClearAllGeoms">
+ <property name="text">
+ <string>Clear</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ <action name="actionTreeCollapseAll">
+ <property name="text">
+ <string>&Collapse All</string>
+ </property>
+ </action>
+ <action name="actionTreeExpandAll">
+ <property name="text">
+ <string>&Expand All</string>
+ </property>
+ </action>
+ <action name="actionSelObjectVisible">
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>&Visible</string>
+ </property>
+ </action>
+ <action name="actionSelObjectVertexOnlyMode">
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>VertexOnlyMode</string>
+ </property>
+ </action>
+ <action name="actionSelObjectTriangulate">
+ <property name="text">
+ <string>&Triangulate</string>
+ </property>
+ </action>
+ <action name="actionSelObjectResetNormal">
+ <property name="text">
+ <string>ResetNormal</string>
+ </property>
+ </action>
+ <action name="actionSelObjectReload">
+ <property name="text">
+ <string>&ReloadSelObject</string>
+ </property>
+ </action>
+ <action name="actionSelObjectOpenDir">
+ <property name="text">
+ <string>&OpenDir</string>
+ </property>
+ </action>
+ <action name="actionSelObjectFlipNormal">
+ <property name="text">
+ <string>Flip&Normal</string>
+ </property>
+ </action>
+ <action name="actionSelObjectFlipFace">
+ <property name="text">
+ <string>&FlipFace</string>
+ </property>
+ </action>
+ <action name="actionActionSelObjectShowOnlyOnce">
+ <property name="text">
+ <string>&ShowOnlyOnce</string>
+ </property>
+ </action>
+ <action name="actionSelObjectDelete">
+ <property name="text">
+ <string>&DeleteSelected</string>
+ </property>
+ <property name="shortcut">
+ <string>Del</string>
+ </property>
+ </action>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections/>
+</ui>