Implemented recursive scan for mesh files on selection of dir path. Setup name instead of full path in list.
This commit is contained in:
parent
c6d82f5f55
commit
c2f7118ed6
|
@ -4,16 +4,16 @@
|
|||
<widget class="QMainWindow" name="MainWindowClass">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>600</height>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>600</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>600</width>
|
||||
<height>400</height>
|
||||
<width>600</width>
|
||||
<height>400</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
|
@ -24,60 +24,63 @@
|
|||
</widget>
|
||||
<widget class="QToolBar" name="mainToolBar">
|
||||
<property name="allowedAreas">
|
||||
<set>Qt::LeftToolBarArea|Qt::RightToolBarArea|Qt::TopToolBarArea</set>
|
||||
<set>Qt::LeftToolBarArea|Qt::RightToolBarArea|Qt::TopToolBarArea</set>
|
||||
</property>
|
||||
<attribute name="toolBarArea">
|
||||
<enum>LeftToolBarArea</enum>
|
||||
<enum>LeftToolBarArea</enum>
|
||||
</attribute>
|
||||
<attribute name="toolBarBreak">
|
||||
<bool>false</bool>
|
||||
<bool>false</bool>
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusBar"/>
|
||||
<widget class="QDockWidget" name="dockWidget">
|
||||
<property name="autoFillBackground">
|
||||
<bool>false</bool>
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="floating">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="features">
|
||||
<set>QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable</set>
|
||||
<set>QDockWidget::DockWidgetFloatable</set>
|
||||
</property>
|
||||
<property name="allowedAreas">
|
||||
<set>Qt::RightDockWidgetArea</set>
|
||||
<set>Qt::RightDockWidgetArea</set>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Asset library</string>
|
||||
<string>Asset library</string>
|
||||
</property>
|
||||
<attribute name="dockWidgetArea">
|
||||
<number>2</number>
|
||||
<number>2</number>
|
||||
</attribute>
|
||||
<widget class="QWidget" name="dockWidgetContents">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QComboBox" name="dirDropDownList"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QListView" name="fileListView"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QComboBox" name="dirDropDownList"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QListWidget" name="fileListWidget"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</widget>
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
#include <QWidget>
|
||||
#include "ui_MainWindow.h"
|
||||
#include "FileInfoWindow.h"
|
||||
#include <QFileSystemModel>
|
||||
#include <QByteArray>
|
||||
#include <QLabel>
|
||||
|
||||
|
@ -26,15 +25,14 @@ private:
|
|||
int m_curSeverity;
|
||||
|
||||
FileInfoWindow* m_infoWindow;
|
||||
QFileSystemModel* m_fmodel;
|
||||
QStringList m_filters;
|
||||
QStringList m_Paths;
|
||||
|
||||
// functions
|
||||
private:
|
||||
void setupWidgets();
|
||||
void setupAssetLibrary();
|
||||
void updateAssetTree(QString);
|
||||
void searchMeshFiles(QString path);
|
||||
void openFileDialog();
|
||||
void openFile(QString);
|
||||
void takeScreenShot();
|
||||
|
@ -54,6 +52,6 @@ signals:
|
|||
|
||||
// private slots
|
||||
private slots:
|
||||
void on_fileListView_doubleClicked(const QModelIndex &index);
|
||||
void on_fileListWidget_doubleClicked(const QModelIndex &index);
|
||||
void on_dirDropDownList_currentTextChanged(const QString &arg1);
|
||||
};
|
||||
|
|
|
@ -11,6 +11,9 @@
|
|||
#include <QMessageBox>
|
||||
#include <QPalette>
|
||||
#include <QResizeEvent>
|
||||
#include <QDirIterator>
|
||||
#include <QFileInfo>
|
||||
|
||||
|
||||
#define WINDOW_NAME "Mesh Viewer"
|
||||
|
||||
|
@ -42,18 +45,10 @@ MainWindow::MainWindow(QWidget *parent)
|
|||
// set default text to file info
|
||||
m_fileInfo = "Filename: -\nMaterials: -\nVertices: -\nTriangle: -<detail>No file is open";
|
||||
|
||||
// set filter and apply drop down tabs/links
|
||||
m_filters << "*.msh" << "*.MSH" << "*.mesh" << "*.MESH";
|
||||
m_fmodel = new QFileSystemModel(this);
|
||||
m_fmodel->setNameFilters(m_filters);
|
||||
m_fmodel->setFilter(QDir::NoDotAndDotDot | QDir::Files);
|
||||
m_fmodel->setNameFilterDisables(false);
|
||||
|
||||
ui->dirDropDownList->addItem("BF1_ModTools", "C:/BF1_ModTools/Assets/Shipped Worlds/"); // temp here
|
||||
ui->dirDropDownList->addItem("BF2_ModTools", "C:/BF2_ModTools/assets/Sides/"); // temp here
|
||||
ui->dirDropDownList->addItem("BF1_ModTools", "C:/BF1_ModTools/Assets/Shipped Worlds/");
|
||||
ui->dirDropDownList->addItem("BF2_ModTools", "C:/BF2_ModTools/assets/Sides/");
|
||||
|
||||
// add widgets to the window
|
||||
// the settingsmanger is alive now. So use it ;)
|
||||
setupWidgets();
|
||||
|
||||
// load stylesheet
|
||||
|
@ -61,6 +56,7 @@ MainWindow::MainWindow(QWidget *parent)
|
|||
styleSheet.open(QIODevice::ReadOnly);
|
||||
this->setStyleSheet(styleSheet.readAll());
|
||||
|
||||
// setup dropdown
|
||||
setupAssetLibrary();
|
||||
printMessage("MeshViewer by Anakin", 0);
|
||||
}
|
||||
|
@ -185,30 +181,17 @@ void MainWindow::setupAssetLibrary()
|
|||
|
||||
void MainWindow::updateAssetTree(QString path)
|
||||
{
|
||||
// TODO: deep search seams to be missing.
|
||||
// take a look at the search MeshFiles function. I already implemented something like
|
||||
// that but never finsihed. But you can use this function. Just adjust it as it fits
|
||||
// to the m_fmodel. I never used those model based trees before.
|
||||
m_fmodel->setRootPath(path);
|
||||
ui->fileListView->setModel(m_fmodel);
|
||||
ui->fileListView->setRootIndex(m_fmodel->index(path));
|
||||
}
|
||||
ui->fileListWidget->clear();
|
||||
m_Paths.clear();
|
||||
|
||||
void MainWindow::searchMeshFiles(QString path)
|
||||
{
|
||||
QDir directory(path);
|
||||
directory.setNameFilters(QStringList("*.msh"));
|
||||
QDirIterator itterator(path, QStringList() << "*.msh" << "*.MSH" << "*.mesh" << "*.MESH",
|
||||
QDir::Files, QDirIterator::Subdirectories);
|
||||
|
||||
QStringList childDirectories = directory.entryList(QDir::AllDirs | QDir::NoDotAndDotDot);
|
||||
|
||||
QStringList fileNames = directory.entryList(QDir::Files);
|
||||
|
||||
for (auto &it : childDirectories)
|
||||
qDebug() << it;
|
||||
|
||||
for (auto &it : fileNames)
|
||||
qDebug() << it;
|
||||
while (itterator.hasNext()) {
|
||||
|
||||
ui->fileListWidget->insertItem(0, new QListWidgetItem(itterator.fileName()));
|
||||
m_Paths.append(itterator.next());
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::openFileDialog()
|
||||
|
@ -260,9 +243,10 @@ void MainWindow::resizeEvent(QResizeEvent * e)
|
|||
/////////////////////////////////////////////////////////////////////////
|
||||
// slots
|
||||
|
||||
void MainWindow::on_fileListView_doubleClicked(const QModelIndex &index)
|
||||
void MainWindow::on_fileListWidget_doubleClicked(const QModelIndex &index)
|
||||
{
|
||||
QString clickedFile = m_fmodel->fileInfo(index).absoluteFilePath();
|
||||
int slotVal = index.row();
|
||||
QString clickedFile = m_Paths.at(slotVal);
|
||||
openFile(clickedFile);
|
||||
}
|
||||
|
||||
|
@ -414,4 +398,3 @@ void MainWindow::setFileInfo(QString name, QVector<Material>* materials, int ver
|
|||
m_infoWindow->setDetailText(QString(m_fileInfo.right(m_fileInfo.size() - m_fileInfo.indexOf("<detail>") - 8)));
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue