+ if (mAutoScroll)
+ wList->selectionModel()->setCurrentIndex(index, QItemSelectionModel::ClearAndSelect);
+}
+
+void Widget::currentChanged(QModelIndex const & current, QModelIndex const & previous)
+{
+ Q_UNUSED(previous);
+
+ if (!current.isValid() || current.row() < 0 || current.row() > mModel->rowCount()) {
+ wDetails->clear();
+ return;
+ }
+
+ mAutoScroll = current.row() == (mModel->rowCount() - 1);
+
+ wDetails->setText(mModel->details(current));
+}
+
+void Widget::copyToClipboard()
+{
+ QModelIndex idx = wList->selectionModel()->currentIndex();
+ if (idx.isValid())
+ mModel->copyToClipboard(idx);
+}
+
+void Widget::saveToFile()
+{
+ QString fileName = QFileDialog::getSaveFileName(this,
+ tr("Save to file", VER_MODULE_NAME_STR),
+ Common::iApp::instance()->dataRootDir() + QString("%1_%2.txt").arg(mSource).arg(QDate::currentDate().toString("yyyyMMdd")),
+ tr("Text files (*.txt);;All files (*)", VER_MODULE_NAME_STR));
+ if (fileName.isEmpty())
+ return;
+
+ if (!mModel->saveToFile(fileName))
+ QMessageBox::critical(this, tr("Error", VER_MODULE_NAME_STR), mModel->errorString());
+}
+
+
+//-------------------------------------------------------------------
+
+Window::Window(QString const & args, QWidget * parent, Qt::WindowFlags flags)
+ : Gui::Panel(parent, flags)
+{
+ setObjectName(QString("%1-Window").arg(VER_MODULE_NAME_STR));
+
+ SdiWindow::iSdiWindow * win = evafQueryInterface<SdiWindow::iSdiWindow>("iSdiWindow");
+ win->addPanel(getPanelName(args), this);
+
+ setWindowTitle(tr("Messages"));
+
+ Common::iLogger * logger = Common::iLogger::instance();
+ EVAF_TEST_X(logger, "No iLogger interface");
+
+ mDefSource = logger->defaultSource();
+ if (mDefSource.isEmpty())
+ mDefSource = "Common";
+
+ QVBoxLayout * w = new QVBoxLayout;
+ w->setMargin(0);
+ setLayout(w);
+
+ wTabs = new QTabWidget;
+ w->addWidget(wTabs);
+
+ // Add the default source
+ Widget * s = new Widget(mDefSource);
+ mLogViews.insert(s->source(), s);
+ wTabs->addTab(s, s->source());
+
+ wStatusBar = new QStatusBar;
+ w->addWidget(wStatusBar);
+
+ QAction * a = new QAction(this);
+ a->setShortcut(Qt::Key_Escape);
+ connect(a, SIGNAL(triggered()), this, SLOT(close()));
+ addAction(a);
+
+ restoreSettings();
+
+ connect(logger, SIGNAL(loggerEvent(Common::iLogger::Severity,QString,QString,QString)), this, SLOT(loggerEvent(Common::iLogger::Severity,QString,QString,QString)));
+
+ show();
+