--- /dev/null
+/*
+ * This file is part of the sigrok project.
+ *
+ * Copyright (C) 2012 Joel Holdsworth <joel@airwebreathe.org.uk>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+extern "C" {
+#include <sigrokdecode.h>
+}
+
+#include <QTextDocument>
+
+#include "about.h"
+#include "ui_about.h"
+
+extern "C" {
+/* __STDC_FORMAT_MACROS is required for PRIu64 and friends (in C++). */
+#define __STDC_FORMAT_MACROS
+#include <glib.h>
+#include <libsigrok/libsigrok.h>
+}
+
+About::About(QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::About)
+{
+ GSList *l;
+ struct sr_dev_driver **drivers;
+ struct sr_input_format **inputs;
+ struct sr_output_format **outputs;
+ struct srd_decoder *dec;
+ QString s;
+
+ ui->setupUi(this);
+
+ /* Setup the version field */
+ ui->versionInfo->setText(tr("%1 %2<br />%3<br /><a href=\"%4\">%4</a>")
+ .arg(QApplication::applicationName())
+ .arg(QApplication::applicationVersion())
+ .arg(tr("GNU GPL, version 2 or later"))
+ .arg(QApplication::organizationDomain()));
+
+ /* Set up the supported field */
+ s.append("<b>" + tr("Supported hardware drivers:") + "</b><table>");
+ drivers = sr_driver_list();
+ for (int i = 0; drivers[i]; ++i) {
+ s.append(QString("<tr><td><i>%1</i></td><td>%2</td></tr>")
+ .arg(QString(drivers[i]->name))
+ .arg(QString(drivers[i]->longname)));
+ }
+ s.append("</table><p>");
+
+ s.append("<b>" + tr("Supported input formats:") + "</b><table>");
+ inputs = sr_input_list();
+ for (int i = 0; inputs[i]; ++i) {
+ s.append(QString("<tr><td><i>%1</i></td><td>%2</td></tr>")
+ .arg(QString(inputs[i]->id))
+ .arg(QString(inputs[i]->description)));
+ }
+ s.append("</table><p>");
+
+ s.append("<b>" + tr("Supported output formats:") + "</b><table>");
+ outputs = sr_output_list();
+ for (int i = 0; outputs[i]; ++i) {
+ s.append(QString("<tr><td><i>%1</i></td><td>%2</td></tr>")
+ .arg(QString(outputs[i]->id))
+ .arg(QString(outputs[i]->description)));
+ }
+ s.append("</table><p>");
+
+ s.append("<b>" + tr("Supported protocol decoders:") + "</b><table>");
+ for (l = srd_decoder_list(); l; l = l->next) {
+ dec = (struct srd_decoder *)l->data;
+ s.append(QString("<tr><td><i>%1</i></td><td>%2</td></tr>")
+ .arg(QString(dec->id))
+ .arg(QString(dec->longname)));
+ }
+ s.append("</table>");
+
+ supportedDoc.reset(new QTextDocument(this));
+ supportedDoc->setHtml(s);
+ ui->supportList->setDocument(supportedDoc.get());
+}
+
+About::~About()
+{
+ delete ui;
+}
--- /dev/null
+/*
+ * This file is part of the sigrok project.
+ *
+ * Copyright (C) 2012 Joel Holdsworth <joel@airwebreathe.org.uk>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef ABOUT_H
+#define ABOUT_H
+
+#include <QDialog>
+
+#include <memory>
+
+class QTextDocument;
+
+namespace Ui {
+class About;
+}
+
+class About : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit About(QWidget *parent = 0);
+ ~About();
+
+private:
+ Ui::About *ui;
+ std::auto_ptr<QTextDocument> supportedDoc;
+};
+
+#endif // ABOUT_H
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>About</class>
+ <widget class="QDialog" name="About">
+ <property name="windowModality">
+ <enum>Qt::WindowModal</enum>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>600</width>
+ <height>400</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>About</string>
+ </property>
+ <property name="whatsThis">
+ <string/>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QLabel" name="icon">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="pixmap">
+ <pixmap resource="sigrok-qt2.qrc">:/icons/sigrok-logo-notext.png</pixmap>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="versionInfo">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QTextBrowser" name="supportList"/>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources>
+ <include location="sigrok-qt2.qrc"/>
+ </resources>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>About</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>About</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
#include <sigrokdecode.h>
}
-#include <QMessageBox>
+#include "about.h"
#include "mainwindow.h"
#include "ui_mainwindow.h"
void MainWindow::on_actionAbout_triggered()
{
- GSList *l;
- struct sr_dev_driver **drivers;
- struct sr_input_format **inputs;
- struct sr_output_format **outputs;
- struct srd_decoder *dec;
-
- QString s = tr("%1 %2<br />%3<br /><a href=\"%4\">%4</a>\n<p>")
- .arg(QApplication::applicationName())
- .arg(QApplication::applicationVersion())
- .arg(tr("GNU GPL, version 2 or later"))
- .arg(QApplication::organizationDomain());
-
- s.append("<b>" + tr("Supported hardware drivers:") + "</b><table>");
- drivers = sr_driver_list();
- for (int i = 0; drivers[i]; ++i) {
- s.append(QString("<tr><td><i>%1</i></td><td>%2</td></tr>")
- .arg(QString(drivers[i]->name))
- .arg(QString(drivers[i]->longname)));
- }
- s.append("</table><p>");
-
- s.append("<b>" + tr("Supported input formats:") + "</b><table>");
- inputs = sr_input_list();
- for (int i = 0; inputs[i]; ++i) {
- s.append(QString("<tr><td><i>%1</i></td><td>%2</td></tr>")
- .arg(QString(inputs[i]->id))
- .arg(QString(inputs[i]->description)));
- }
- s.append("</table><p>");
-
- s.append("<b>" + tr("Supported output formats:") + "</b><table>");
- outputs = sr_output_list();
- for (int i = 0; outputs[i]; ++i) {
- s.append(QString("<tr><td><i>%1</i></td><td>%2</td></tr>")
- .arg(QString(outputs[i]->id))
- .arg(QString(outputs[i]->description)));
- }
- s.append("</table><p>");
-
- s.append("<b>" + tr("Supported protocol decoders:") + "</b><table>");
- for (l = srd_decoder_list(); l; l = l->next) {
- dec = (struct srd_decoder *)l->data;
- s.append(QString("<tr><td><i>%1</i></td><td>%2</td></tr>")
- .arg(QString(dec->id))
- .arg(QString(dec->longname)));
- }
- s.append("</table>");
-
- QMessageBox::about(this, tr("About"), s);
+ About dlg(this);
+ dlg.exec();
}
DEFINES += APP_VERSION=\\\"$$VERSION\\\"
SOURCES += main.cpp\
- mainwindow.cpp
+ mainwindow.cpp \
+ about.cpp
-HEADERS += mainwindow.h
+HEADERS += mainwindow.h \
+ about.h
-FORMS += mainwindow.ui
+FORMS += mainwindow.ui \
+ about.ui
RESOURCES += sigrok-qt2.qrc