diff --git a/src/testgui.hxx b/src/testgui.hxx index 399973c..4ba3501 100644 --- a/src/testgui.hxx +++ b/src/testgui.hxx @@ -35,6 +35,7 @@ class TestGUI: public QMainWindow, protected Ui::TestGUI { QMainWindow(parent), _typing(false), _inEventFilter(false) { + setWindowTitle("[*]"); setupUi(this); menuViews->addAction(_scriptDock->toggleViewAction()); menuViews->addAction(_setupScriptDock->toggleViewAction()); @@ -118,6 +119,8 @@ class TestGUI: public QMainWindow, protected Ui::TestGUI { +char(out.status()+48)+")"); _actionSave->setEnabled(true); _actionRevertToSaved->setEnabled(true); + setWindowModified(false); + setWindowTitle(_filename+"[*]"); } catch(const std::exception& x) { QMessageBox::critical(this, tr("Save Failed"), tr("Saving test script failed, %2. " @@ -127,11 +130,18 @@ class TestGUI: public QMainWindow, protected Ui::TestGUI { _status->setCurrentIndex(STATUS_NONE); } void on__actionClear_triggered() { + if (isWindowModified() && + QMessageBox::question(this, tr("Changes Not Saved"), + tr("Clear script without saving changes?")) + != QMessageBox::Yes) + return; _testscript->clear(); _log->clear(); _filename.clear(); _actionSave->setEnabled(false); _actionRevertToSaved->setEnabled(false); + setWindowTitle("[*]"); + setWindowModified(false); _status->setCurrentIndex(STATUS_NONE); } void on__run_clicked() { @@ -332,6 +342,13 @@ class TestGUI: public QMainWindow, protected Ui::TestGUI { QSettings settings("mrw", "webtester"); settings.setValue("geometry", saveGeometry()); settings.setValue("windowstate", saveState()); + if (isWindowModified() && + QMessageBox::question(this, tr("Changes Not Saved"), + tr("Leave without saving changes?")) + != QMessageBox::Yes) { + event->ignore(); + return; + } QMainWindow::closeEvent(event); } bool eventFilter(QObject*, QEvent* event) { @@ -442,6 +459,8 @@ class TestGUI: public QMainWindow, protected Ui::TestGUI { _filename = name; _actionSave->setEnabled(true); _actionRevertToSaved->setEnabled(true); + setWindowTitle(name+"[*]"); + setWindowModified(false); } catch(const std::exception& x) { QMessageBox::critical(this, tr("Open Failed"), tr("Reading test script failed, %2. " diff --git a/src/testgui.ui b/src/testgui.ui index b46b30c..4a7edfd 100644 --- a/src/testgui.ui +++ b/src/testgui.ui @@ -11,7 +11,7 @@ - MainWindow + @@ -1089,5 +1089,21 @@ this.dispatchEvent(evObj); + + _testscript + modificationChanged(bool) + TestGUI + setWindowModified(bool) + + + 126 + 144 + + + 443 + 589 + + + diff --git a/src/webtester.cxx b/src/webtester.cxx index bdf7a06..7232d23 100644 --- a/src/webtester.cxx +++ b/src/webtester.cxx @@ -1,9 +1,13 @@ #include #include #include +#include int main(int argc, char *argv[]) try { QApplication a(argc, argv); + a.setApplicationDisplayName(a.tr("WebTester")); + a.setApplicationName(webtester::package_name().c_str()); + a.setApplicationVersion(webtester::version().c_str()); QCommandLineParser parser; parser.addHelpOption(); parser.addOption(QCommandLineOption