]> sigrok.org Git - pulseview.git/blobdiff - mainwindow.cpp
Replaced mainwindow.ui XML with code
[pulseview.git] / mainwindow.cpp
index bf9711f29167803f657ce1dffcf5ba027cfe47be..d827e2dc8b25db5f597fff6cc106795e8b5000bf 100644 (file)
@@ -22,10 +22,20 @@ extern "C" {
 #include <sigrokdecode.h>
 }
 
-#include <QMessageBox>
+#include <QAction>
+#include <QApplication>
+#include <QButtonGroup>
+#include <QFileDialog>
+#include <QMenu>
+#include <QMenuBar>
+#include <QStatusBar>
+#include <QVBoxLayout>
+#include <QWidget>
 
+#include "about.h"
 #include "mainwindow.h"
-#include "ui_mainwindow.h"
+#include "samplingbar.h"
+#include "sigview.h"
 
 extern "C" {
 /* __STDC_FORMAT_MACROS is required for PRIu64 and friends (in C++). */
@@ -38,66 +48,90 @@ extern "C" {
 }
 
 MainWindow::MainWindow(QWidget *parent) :
-       QMainWindow(parent),
-       ui(new Ui::MainWindow)
+       QMainWindow(parent)
 {
-       ui->setupUi(this);
+       setup_ui();
 }
 
-MainWindow::~MainWindow()
+void MainWindow::setup_ui()
 {
-       delete ui;
+       setObjectName(QString::fromUtf8("MainWindow"));
+
+       resize(1024, 768);
+
+       // Set the window icon
+       QIcon icon;
+       icon.addFile(QString::fromUtf8(":/icons/sigrok-logo-notext.png"),
+               QSize(), QIcon::Normal, QIcon::Off);
+       setWindowIcon(icon);
+
+       // Setup the UI actions
+       _action_about = new QAction(this);
+       _action_about->setObjectName(QString::fromUtf8("actionAbout"));
+       _action_open = new QAction(this);
+       _action_open->setObjectName(QString::fromUtf8("actionOpen"));
+
+       // Setup the menu bar
+       _menu_bar = new QMenuBar(this);
+       _menu_bar->setGeometry(QRect(0, 0, 400, 25));
+
+       _menu_file = new QMenu(_menu_bar);
+       _menu_file->addAction(_action_open);
+
+       _menu_help = new QMenu(_menu_bar);
+       _menu_help->addAction(_action_about);
+
+       _menu_bar->addAction(_menu_file->menuAction());
+       _menu_bar->addAction(_menu_help->menuAction());
+
+       setMenuBar(_menu_bar);
+       QMetaObject::connectSlotsByName(this);
+
+       // Setup the toolbars
+       _sampling_bar = new SamplingBar(this);
+       connect(_sampling_bar, SIGNAL(run_stop()), this,
+               SLOT(run_stop()));
+       addToolBar(_sampling_bar);
+
+       // Setup the central widget
+       _central_widget = new QWidget(this);
+       _vertical_layout = new QVBoxLayout(_central_widget);
+       _vertical_layout->setSpacing(6);
+       _vertical_layout->setContentsMargins(0, 0, 0, 0);
+       setCentralWidget(_central_widget);
+
+       // Setup the status bar
+       _status_bar = new QStatusBar(this);
+       setStatusBar(_status_bar);
+
+       setWindowTitle(QApplication::translate("MainWindow", "sigrok-qt2", 0, QApplication::UnicodeUTF8));
+       _action_open->setText(QApplication::translate("MainWindow", "&Open...", 0, QApplication::UnicodeUTF8));
+       _action_about->setText(QApplication::translate("MainWindow", "&About...", 0, QApplication::UnicodeUTF8));
+       _menu_file->setTitle(QApplication::translate("MainWindow", "&File", 0, QApplication::UnicodeUTF8));
+       _menu_help->setTitle(QApplication::translate("MainWindow", "&Help", 0, QApplication::UnicodeUTF8));
+
+       _view = new SigView(_session, this);
+       _vertical_layout->addWidget(_view);
+}
+
+void MainWindow::on_actionOpen_triggered()
+{
+       QString file_name = QFileDialog::getOpenFileName(
+               this, tr("Open File"), "",
+               tr("Sigrok Sessions (*.sr)"));
+       _session.load_file(file_name.toStdString());
 }
 
 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();
+}
+
+void MainWindow::run_stop()
+{
+       _session.start_capture(
+               _sampling_bar->get_selected_device(),
+               _sampling_bar->get_record_length(),
+               _sampling_bar->get_sample_rate());
 }