Add filesystem widget

This commit is contained in:
2021-04-20 12:00:30 +02:00
parent 47360b5227
commit 1ba6a0ff19
7 changed files with 203 additions and 31 deletions
+38 -8
View File
@@ -48,20 +48,29 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
connect(stretchPanel, SIGNAL(stretchChanged(int)), m_imageGL->imageWidget(), SLOT(setStrech(int)));
connect(stretchPanel, SIGNAL(paramChanged(float)), m_imageGL->imageWidget(), SLOT(setStretchParam(float)));
m_ringList = new ImageRingList(this);
m_filesystem = new FilesystemWidget(m_ringList, this);
connect(m_filesystem, SIGNAL(fileSelected(int)), this, SLOT(loadFile(int)));
QDockWidget *stretchDock = new QDockWidget(tr("Stretch"), this);
stretchDock->setWidget(stretchPanel);
stretchDock->setObjectName("strechDock");
addDockWidget(Qt::LeftDockWidgetArea, stretchDock);
addDockWidget(Qt::TopDockWidgetArea, stretchDock);
QDockWidget *filesystemDock = new QDockWidget(tr("Filesystem"), this);
filesystemDock->setWidget(m_filesystem);
filesystemDock->setObjectName("filesystemDock");
addDockWidget(Qt::LeftDockWidgetArea, filesystemDock);
setWindowTitle(tr("Tenmon"));
m_ringList = new ImageRingList(this);
connect(m_ringList, SIGNAL(pixmapLoaded(Image*)), this, SLOT(pixmapLoaded(Image*)));
connect(m_ringList, SIGNAL(currentImageChanged()), this, SLOT(updateWindowTitle()));
connect(m_ringList, SIGNAL(currentImageChanged(int)), this, SLOT(updateWindowTitle()));
connect(m_ringList, SIGNAL(infoLoaded(ImageInfoData)), m_info, SLOT(setInfo(ImageInfoData)));
connect(m_ringList, SIGNAL(currentImageChanged(int)), m_filesystem, SLOT(selectFile(int)));
QMenu *fileMenu = new QMenu(tr("File"), this);
fileMenu->addAction(tr("Open"), this, SLOT(openFile()), QKeySequence("Ctrl+O"));
fileMenu->addAction(tr("Open"), this, SLOT(loadFile()), QKeySequence("Ctrl+O"));
fileMenu->addAction(tr("Copy marked files"), this, SLOT(copyMarked()));
fileMenu->addAction(tr("Save as"), this, SLOT(saveAs()), QKeySequence("Ctrl+S"));
QAction *liveModeAction = fileMenu->addAction(tr("Live mode"), this, SLOT(liveMode(bool)));
@@ -117,6 +126,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
QMenu *dockMenu = new QMenu(tr("Docks"), this);
dockMenu->addAction(infoDock->toggleViewAction());
dockMenu->addAction(stretchDock->toggleViewAction());
dockMenu->addAction(filesystemDock->toggleViewAction());
menuBar()->addMenu(dockMenu);
setupSigterm();
@@ -128,6 +138,9 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
if(standardLocations.size())
_lastDir = standardLocations.first();
_lastDir = settings.value("mainwindow/lastdir", _lastDir).toString();
m_filesystem->setDir(_lastDir);
QStringList args = QCoreApplication::arguments();
args.removeFirst();
for(auto &arg : args)
@@ -138,6 +151,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
m_ringList->setFile(info.canonicalFilePath());
updateWindowTitle();
_lastDir = info.absoluteDir().absolutePath();
settings.setValue("mainwindow/lastdir", _lastDir);
break;
}
}
@@ -229,18 +243,34 @@ void MainWindow::pixmapLoaded(Image *image)
}
}
void MainWindow::openFile()
void MainWindow::loadFile()
{
QString file = QFileDialog::getOpenFileName(this, tr("Open file"), _lastDir, tr("Images (*.jpg *.jpeg *.png *.cr2 *.fit *.fits *.JPG *.JPEG *.PNG *.CR2 *.FIT *.FITS)"));
if(!file.isEmpty())
loadFile(file);
}
void MainWindow::loadFile(const QString path)
{
if(!path.isEmpty())
{
QFileInfo info(file);
QFileInfo info(path);
m_ringList->setFile(info.canonicalFilePath());
updateWindowTitle();
_lastDir = QFileInfo(file).absoluteDir().absolutePath();
if(info.isDir())
_lastDir = info.absolutePath();
else
_lastDir = info.canonicalPath();
QSettings settings;
settings.setValue("mainwindow/lastdir", _lastDir);
m_filesystem->setDir(_lastDir);
}
}
void MainWindow::loadFile(int row)
{
m_ringList->loadFile(row);
}
void MainWindow::saveAs()
{
QString file = QFileDialog::getSaveFileName(this, tr("Save as"), _lastDir, tr("Images (*.jpg *.png *.JPG *.PNG)"));