]> sigrok.org Git - pulseview.git/commitdiff
Created a custom about box with scrollable space for the supported list
authorJoel Holdsworth <redacted>
Fri, 11 May 2012 10:17:28 +0000 (11:17 +0100)
committerJoel Holdsworth <redacted>
Mon, 3 Sep 2012 12:49:38 +0000 (13:49 +0100)
about.cpp [new file with mode: 0644]
about.h [new file with mode: 0644]
about.ui [new file with mode: 0644]
mainwindow.cpp
sigrok-qt2.pro

diff --git a/about.cpp b/about.cpp
new file mode 100644 (file)
index 0000000..e494e2f
--- /dev/null
+++ b/about.cpp
@@ -0,0 +1,102 @@
+/*
+ * 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;
+}
diff --git a/about.h b/about.h
new file mode 100644 (file)
index 0000000..8e95af9
--- /dev/null
+++ b/about.h
@@ -0,0 +1,47 @@
+/*
+ * 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
diff --git a/about.ui b/about.ui
new file mode 100644 (file)
index 0000000..7fa9f9b
--- /dev/null
+++ b/about.ui
@@ -0,0 +1,96 @@
+<?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>
index bf9711f29167803f657ce1dffcf5ba027cfe47be..45d415dd16114ffefa38735a95f82b37b9d7ccf6 100644 (file)
@@ -22,7 +22,7 @@ extern "C" {
 #include <sigrokdecode.h>
 }
 
-#include <QMessageBox>
+#include "about.h"
 
 #include "mainwindow.h"
 #include "ui_mainwindow.h"
@@ -51,53 +51,6 @@ MainWindow::~MainWindow()
 
 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();
 }
index 4741d7692f1792d809ffcec02aa26293370f8cec..b10f6cbb81158ed038debfa41295e8eca6e4119f 100644 (file)
@@ -14,11 +14,14 @@ VERSION       = 0.1.0
 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