summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
Diffstat (limited to 'libs')
-rw-r--r--libs/svgviewer/mainwindow.cpp26
-rw-r--r--libs/svgviewer/mainwindow.h5
2 files changed, 30 insertions, 1 deletions
diff --git a/libs/svgviewer/mainwindow.cpp b/libs/svgviewer/mainwindow.cpp
index 7d4d303e..31dd63e5 100644
--- a/libs/svgviewer/mainwindow.cpp
+++ b/libs/svgviewer/mainwindow.cpp
@@ -41,12 +41,15 @@
#include "mainwindow.h"
#include <QtGui>
+#include <QFileSystemWatcher>
#include "svgview.h"
MainWindow::MainWindow()
: QMainWindow()
, m_view(new SvgView)
+ , m_watcher(NULL)
+ , m_filehandle(NULL)
{
QMenu *fileMenu = new QMenu(tr("&File"), this);
QAction *openAction = fileMenu->addAction(tr("&Open..."));
@@ -118,6 +121,15 @@ void MainWindow::openFile(const QString &path)
else
fileName = path;
+ if (m_watcher) {
+ delete m_watcher;
+ m_watcher = NULL;
+ }
+ if (m_filehandle) {
+ fclose(m_filehandle);
+ m_filehandle = NULL;
+ }
+
if (!fileName.isEmpty()) {
QFile file(fileName);
if (!file.exists()) {
@@ -129,6 +141,13 @@ void MainWindow::openFile(const QString &path)
return;
}
+ m_watcher = new QFileSystemWatcher(this);
+ m_watcher->addPath(fileName);
+ connect(m_watcher, SIGNAL(fileChanged(const QString&)), this, SLOT(reloadFile()));
+
+ // just keep the file open so this process is found using 'fuser'
+ m_filehandle = fopen(fileName.toAscii(), "r");
+
m_view->openFile(file);
if (!fileName.startsWith(":/")) {
@@ -139,10 +158,15 @@ void MainWindow::openFile(const QString &path)
m_outlineAction->setEnabled(true);
m_backgroundAction->setEnabled(true);
- resize(m_view->sizeHint() + QSize(80, 80 + menuBar()->height()));
+ // resize(m_view->sizeHint() + QSize(80, 80 + menuBar()->height()));
}
}
+void MainWindow::reloadFile()
+{
+ openFile(m_currentPath);
+}
+
void MainWindow::setRenderer(QAction *action)
{
#ifndef QT_NO_OPENGL
diff --git a/libs/svgviewer/mainwindow.h b/libs/svgviewer/mainwindow.h
index 8bfb8853..bfbfd803 100644
--- a/libs/svgviewer/mainwindow.h
+++ b/libs/svgviewer/mainwindow.h
@@ -43,6 +43,7 @@
#include <QMainWindow>
#include <QString>
+#include <stdio.h>
class SvgView;
@@ -51,6 +52,7 @@ class QAction;
class QGraphicsView;
class QGraphicsScene;
class QGraphicsRectItem;
+class QFileSystemWatcher;
QT_END_NAMESPACE
class MainWindow : public QMainWindow
@@ -63,6 +65,7 @@ public:
public slots:
void openFile(const QString &path = QString());
void setRenderer(QAction *action);
+ void reloadFile();
private:
QAction *m_nativeAction;
@@ -75,6 +78,8 @@ private:
SvgView *m_view;
QString m_currentPath;
+ QFileSystemWatcher *m_watcher;
+ FILE *m_filehandle;
};
#endif