summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Helfrich <helfrich9000@gmail.com>2008-01-30 17:29:57 +0000
committerBrian Helfrich <helfrich9000@gmail.com>2008-01-30 17:29:57 +0000
commit15fa9ee99147abfa125282cf2c1be859d7f34c15 (patch)
treec494d2946ee543a612ad2d9a42236236e76ecabb
parenta89d14bcf088abd9223dca5ed4f928c5e3c0772f (diff)
downloadnanoengineer-theirix-15fa9ee99147abfa125282cf2c1be859d7f34c15.tar.gz
nanoengineer-theirix-15fa9ee99147abfa125282cf2c1be859d7f34c15.zip
Added a log dock widget.
-rw-r--r--cad/plugins/NanoVision-1/src/KDevelop/nv1.kdevelop28
-rw-r--r--cad/plugins/NanoVision-1/src/LogHandlerWidget.cpp39
-rw-r--r--cad/plugins/NanoVision-1/src/LogHandlerWidget.h35
-rw-r--r--cad/plugins/NanoVision-1/src/LogHandlerWidget.ui30
-rw-r--r--cad/plugins/NanoVision-1/src/ResultsWindow.cpp3
-rw-r--r--cad/plugins/NanoVision-1/src/ResultsWindow.h7
-rw-r--r--cad/plugins/NanoVision-1/src/main.cpp19
-rw-r--r--cad/plugins/NanoVision-1/src/nv1.cpp12
-rw-r--r--cad/plugins/NanoVision-1/src/nv1.h3
-rw-r--r--cad/plugins/NanoVision-1/src/src.pro9
10 files changed, 154 insertions, 31 deletions
diff --git a/cad/plugins/NanoVision-1/src/KDevelop/nv1.kdevelop b/cad/plugins/NanoVision-1/src/KDevelop/nv1.kdevelop
index 75f9b96a2..16a7d8f04 100644
--- a/cad/plugins/NanoVision-1/src/KDevelop/nv1.kdevelop
+++ b/cad/plugins/NanoVision-1/src/KDevelop/nv1.kdevelop
@@ -14,8 +14,8 @@
<projectname>nv1</projectname>
<projectdirectory>.</projectdirectory>
<absoluteprojectpath>false</absoluteprojectpath>
- <description></description>
- <defaultencoding></defaultencoding>
+ <description/>
+ <defaultencoding/>
</general>
<kdevfileview>
<groups>
@@ -68,7 +68,7 @@
<includePaths>.;</includePaths>
</codecompletion>
<creategettersetter>
- <prefixGet></prefixGet>
+ <prefixGet/>
<prefixSet>set</prefixSet>
<prefixVariable>m_,_</prefixVariable>
<parameterName>theValue</parameterName>
@@ -121,16 +121,16 @@
</kdevdoctreeview>
<kdevdebugger>
<general>
- <dbgshell></dbgshell>
+ <dbgshell/>
<breakpoints/>
<programargs/>
<gdbpath>/usr/bin/gdb</gdbpath>
<breakonloadinglibs>true</breakonloadinglibs>
<separatetty>false</separatetty>
<floatingtoolbar>false</floatingtoolbar>
- <configGdbScript></configGdbScript>
- <runShellScript></runShellScript>
- <runGdbScript></runGdbScript>
+ <configGdbScript/>
+ <runShellScript/>
+ <runGdbScript/>
<raiseGDBOnStart>false</raiseGDBOnStart>
</general>
<display>
@@ -142,11 +142,11 @@
</kdevdebugger>
<kdevtrollproject>
<run>
- <mainprogram></mainprogram>
- <programargs></programargs>
+ <mainprogram>/home/bh/11Nano/SVN-D/cad/plugins/NanoVision-1/src/KDevelop</mainprogram>
+ <programargs/>
<directoryradio>executable</directoryradio>
- <globaldebugarguments></globaldebugarguments>
- <globalcwd></globalcwd>
+ <globaldebugarguments/>
+ <globalcwd>/home/bh/11Nano/SVN-D/cad/plugins/NanoVision-1/src/KDevelop</globalcwd>
<useglobalprogram>false</useglobalprogram>
<terminal>false</terminal>
<autocompile>false</autocompile>
@@ -158,7 +158,7 @@
<GLT/>
<CppUnit/>
<HDF5_Consumer/>
- <nv1></nv1>
+ <nv1/>
</runarguments>
<cwd>
<HDF5_SimResultsImportExport>/home/rmanoj/Nanorex/SVN/trunk/cad/plugins/NanoVision-1/src/KDevelop</HDF5_SimResultsImportExport>
@@ -172,7 +172,7 @@
<GLT/>
<CppUnit/>
<HDF5_Consumer/>
- <nv1></nv1>
+ <nv1/>
</debugarguments>
</run>
<general>
@@ -183,7 +183,7 @@
<runmultiplejobs>false</runmultiplejobs>
<numberofjobs>1</numberofjobs>
<dontact>false</dontact>
- <makebin></makebin>
+ <makebin/>
<prio>0</prio>
<envvars/>
</make>
diff --git a/cad/plugins/NanoVision-1/src/LogHandlerWidget.cpp b/cad/plugins/NanoVision-1/src/LogHandlerWidget.cpp
new file mode 100644
index 000000000..71819be04
--- /dev/null
+++ b/cad/plugins/NanoVision-1/src/LogHandlerWidget.cpp
@@ -0,0 +1,39 @@
+// Copyright 2008 Nanorex, Inc. See LICENSE file for details.
+
+#include "LogHandlerWidget.h"
+
+
+/* CONSTRUCTOR */
+LogHandlerWidget::LogHandlerWidget(NXLogLevel logLevel, QWidget* parent)
+ : QWidget(parent), NXLogHandler(logLevel), Ui_LogHandlerWidget() {
+
+ setupUi(this);
+ suppressed = false;
+}
+
+
+void LogHandlerWidget::setSuppressed(bool suppressed) {
+ if (!suppressed) {
+ textEdit->setText(storedMessages);
+ storedMessages = "";
+ }
+ this->suppressed = suppressed;
+}
+
+
+/* FUNCTION: publish */
+void LogHandlerWidget::publish(LogRecord logRecord) {
+ mutex.lock();
+ QString message =
+ QString("%1 [%2] %3 %4")
+ .arg(logRecord.getDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz"))
+ .arg(LogLevelNames[logRecord.getLogLevel()], -7)
+ .arg(logRecord.getSource().length() == 0 ?
+ "" : logRecord.getSource().append(":").c_str())
+ .arg(logRecord.getMessage().c_str());
+ if (suppressed)
+ storedMessages.append(message);
+ else
+ textEdit->append(message);
+ mutex.unlock();
+}
diff --git a/cad/plugins/NanoVision-1/src/LogHandlerWidget.h b/cad/plugins/NanoVision-1/src/LogHandlerWidget.h
new file mode 100644
index 000000000..bae9d1b74
--- /dev/null
+++ b/cad/plugins/NanoVision-1/src/LogHandlerWidget.h
@@ -0,0 +1,35 @@
+// Copyright 2008 Nanorex, Inc. See LICENSE file for details.
+
+#ifndef LOGHANDLERWIDGET_H
+#define LOGHANDLERWIDGET_H
+
+#include <QWidget>
+#include <QTextEdit>
+#include <QHBoxLayout>
+
+#include "Nanorex/Utility/NXLogger.h"
+using namespace Nanorex;
+
+#include "ui_LogHandlerWidget.h"
+
+
+/* CLASS: LogHandlerWidget */
+class LogHandlerWidget : public QWidget, public NXLogHandler,
+ private Ui_LogHandlerWidget {
+ Q_OBJECT
+
+public:
+ LogHandlerWidget(NXLogLevel logLevel, QWidget* parent = 0);
+ ~LogHandlerWidget() { }
+
+ void setSuppressed(bool suppressed);
+ void publish(LogRecord logRecord);
+
+private:
+ QMutex mutex;
+
+ bool suppressed;
+ QString storedMessages;
+};
+
+#endif
diff --git a/cad/plugins/NanoVision-1/src/LogHandlerWidget.ui b/cad/plugins/NanoVision-1/src/LogHandlerWidget.ui
new file mode 100644
index 000000000..80438935d
--- /dev/null
+++ b/cad/plugins/NanoVision-1/src/LogHandlerWidget.ui
@@ -0,0 +1,30 @@
+<ui version="4.0" >
+ <class>LogHandlerWidget</class>
+ <widget class="QWidget" name="LogHandlerWidget" >
+ <property name="windowTitle" >
+ <string>Form</string>
+ </property>
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QTextEdit" name="textEdit" >
+ <property name="font" >
+ <font>
+ <pointsize>8</pointsize>
+ </font>
+ </property>
+ <property name="readOnly" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/cad/plugins/NanoVision-1/src/ResultsWindow.cpp b/cad/plugins/NanoVision-1/src/ResultsWindow.cpp
index 19b7630c0..2de3d2813 100644
--- a/cad/plugins/NanoVision-1/src/ResultsWindow.cpp
+++ b/cad/plugins/NanoVision-1/src/ResultsWindow.cpp
@@ -4,8 +4,9 @@
/* CONSTRUCTOR */
-ResultsWindow::ResultsWindow(QWidget *parent)
+ResultsWindow::ResultsWindow(NXEntityManager* entityManager, QWidget* parent)
: QWidget(parent), Ui_ResultsWindow() {
+ this->entityManager = entityManager;
setupUi(this);
diff --git a/cad/plugins/NanoVision-1/src/ResultsWindow.h b/cad/plugins/NanoVision-1/src/ResultsWindow.h
index ce9f02e39..9a11bfbbf 100644
--- a/cad/plugins/NanoVision-1/src/ResultsWindow.h
+++ b/cad/plugins/NanoVision-1/src/ResultsWindow.h
@@ -14,6 +14,9 @@
#include <QDockWidget>
#include <QWorkspace>
+#include "Nanorex/Interface/NXEntityManager.h"
+using namespace Nanorex;
+
#include "ui_ResultsWindow.h"
#include "DataWindow.h"
#include "ViewParametersWindow.h"
@@ -28,7 +31,7 @@ public:
QWorkspace* workspace;
QSignalMapper* windowMapper;
- ResultsWindow(QWidget *parent = 0);
+ ResultsWindow(NXEntityManager* entityManager, QWidget* parent = 0);
~ResultsWindow();
bool loadFile(const QString &fileName);
@@ -44,6 +47,8 @@ private slots:
private:
QString curFile;
+ NXEntityManager* entityManager;
+
void setCurrentFile(const QString &fileName);
QString strippedName(const QString &fullFileName);
};
diff --git a/cad/plugins/NanoVision-1/src/main.cpp b/cad/plugins/NanoVision-1/src/main.cpp
index 1753ac3e4..658aebbfe 100644
--- a/cad/plugins/NanoVision-1/src/main.cpp
+++ b/cad/plugins/NanoVision-1/src/main.cpp
@@ -20,16 +20,21 @@ int main(int argc, char *argv[]) {
"Nanorex", "NanoVision-1");
// Start logger
+ //
splash->showMessage("Starting logger...");
splash->repaint();
int logLevel = 0;
- NXLogger logger;
+ NXLogger* logger = new NXLogger();
+
+ // Console logging
if (settings.value("Logging/EnableConsoleLogging", true).toBool()) {
logLevel =
settings.value("Logging/ConsoleLoggingLevel",
NXLogLevel_Info).toInt();
- logger.addHandler(new NXConsoleLogHandler((NXLogLevel)logLevel));
+ logger->addHandler(new NXConsoleLogHandler((NXLogLevel)logLevel));
}
+
+ // File logging
if (settings.value("Logging/EnableFileLogging", true).toBool()) {
logLevel =
settings.value("Logging/FileLoggingLevel",
@@ -39,9 +44,13 @@ int main(int argc, char *argv[]) {
logFilename.append("log");
NXFileLogHandler* logHandler =
new NXFileLogHandler(qPrintable(logFilename), (NXLogLevel)logLevel);
- logger.addHandler(logHandler);
+ logger->addHandler(logHandler);
}
+ // Dock widget logging
+ LogHandlerWidget* logHandlerWidget = new LogHandlerWidget(NXLogLevel_Info);
+ logger->addHandler(logHandlerWidget);
+
// Initialize entity manager and load import/export plugins
splash->showMessage("Loading entity manager...");
splash->repaint();
@@ -58,10 +67,10 @@ int main(int argc, char *argv[]) {
delete properties;
// Create main window
- nv1* mainWindow = new nv1(entityManager);
+ nv1* mainWindow = new nv1(entityManager, logHandlerWidget);
mainWindow->show();
- sleep(1);
+ sleep(1);
splash->finish(mainWindow);
delete splash;
int appReturn = app->exec();
diff --git a/cad/plugins/NanoVision-1/src/nv1.cpp b/cad/plugins/NanoVision-1/src/nv1.cpp
index 2c69bb613..31534cf0e 100644
--- a/cad/plugins/NanoVision-1/src/nv1.cpp
+++ b/cad/plugins/NanoVision-1/src/nv1.cpp
@@ -4,15 +4,17 @@
/* CONSTRUCTOR */
-nv1::nv1(NXEntityManager* entityManager) : QMainWindow() {
+nv1::nv1(NXEntityManager* entityManager, LogHandlerWidget* logHandlerWidget)
+ : QMainWindow() {
this->entityManager = entityManager;
setWindowIcon(QPixmap(":/Icons/eye-icon.png"));
+ setWindowTitle(tr("NanoVision-1"));
mainWindowTabs = new MainWindowTabWidget(this);
setCentralWidget(mainWindowTabs);
- resultsWindow = new ResultsWindow(this);
+ resultsWindow = new ResultsWindow(entityManager, this);
mainWindowTabs->vboxLayout->removeWidget(mainWindowTabs->widget);
delete mainWindowTabs->widget;
mainWindowTabs->vboxLayout->addWidget(resultsWindow);
@@ -25,12 +27,10 @@ nv1::nv1(NXEntityManager* entityManager) : QMainWindow() {
readSettings();
- setWindowTitle(tr("NanoVision-1"));
-
// Setup log dock widget
- QDockWidget *dock = new QDockWidget(tr("Log"), this);
+ QDockWidget* dock = new QDockWidget(tr("Log"), this);
dock->setAllowedAreas(Qt::BottomDockWidgetArea);
- dock->setWidget(new QLabel("log entries"));
+ dock->setWidget(logHandlerWidget);
addDockWidget(Qt::BottomDockWidgetArea, dock);
}
diff --git a/cad/plugins/NanoVision-1/src/nv1.h b/cad/plugins/NanoVision-1/src/nv1.h
index 70dc37dbd..2b7cd1987 100644
--- a/cad/plugins/NanoVision-1/src/nv1.h
+++ b/cad/plugins/NanoVision-1/src/nv1.h
@@ -12,6 +12,7 @@
using namespace Nanorex;
#include "ResultsWindow.h"
+#include "LogHandlerWidget.h"
#include "MainWindowTabWidget.h"
@@ -20,7 +21,7 @@ class nv1 : public QMainWindow {
Q_OBJECT
public:
- nv1(NXEntityManager* entityManager);
+ nv1(NXEntityManager* entityManager, LogHandlerWidget* logHandlerWidget);
~nv1();
protected:
diff --git a/cad/plugins/NanoVision-1/src/src.pro b/cad/plugins/NanoVision-1/src/src.pro
index a6dafc633..456488e95 100644
--- a/cad/plugins/NanoVision-1/src/src.pro
+++ b/cad/plugins/NanoVision-1/src/src.pro
@@ -4,14 +4,16 @@ SOURCES += nv1.cpp \
MainWindowTabWidget.cpp \
ViewParametersWindow.cpp \
TrajectoryGraphicsPane.cpp \
- DataWindow.cpp
+ DataWindow.cpp \
+ LogHandlerWidget.cpp
HEADERS += nv1.h \
ResultsWindow.h \
MainWindowTabWidget.h \
ViewParametersWindow.h \
TrajectoryGraphicsPane.h \
DataWindow.h \
- main.h
+ main.h \
+ LogHandlerWidget.h
TEMPLATE = app
CONFIG += warn_on \
thread \
@@ -21,7 +23,8 @@ RESOURCES = application.qrc
FORMS += ResultsWindow.ui \
MainWindowTabWidget.ui \
ViewParametersWindow.ui \
- TrajectoryGraphicsPane.ui
+ TrajectoryGraphicsPane.ui \
+ LogHandlerWidget.ui
INCLUDEPATH += ../include \
$(OPENBABEL_INCPATH)