#include <algorithm>
#include <iterator>
+#include <boost/algorithm/string/join.hpp>
+
#include <QAction>
#include <QApplication>
#include <QButtonGroup>
#include "mainwindow.hpp"
#include "devicemanager.hpp"
+#include "devices/hardwaredevice.hpp"
+#include "devices/sessionfile.hpp"
#include "dialogs/about.hpp"
#include "dialogs/connect.hpp"
#include "dialogs/inputoutputoptions.hpp"
using std::map;
using std::shared_ptr;
using std::string;
+using std::vector;
+
+using boost::algorithm::join;
-using sigrok::Device;
using sigrok::Error;
-using sigrok::HardwareDevice;
using sigrok::OutputFormat;
namespace pv {
action_view_zoom_fit_(new QAction(this)),
action_view_zoom_one_to_one_(new QAction(this)),
action_view_show_cursors_(new QAction(this)),
- action_about_(new QAction(this)),
- menu_decoders_add_(new pv::widgets::DecoderMenu(this, true))
+ action_about_(new QAction(this))
+#ifdef ENABLE_DECODE
+ , menu_decoders_add_(new pv::widgets::DecoderMenu(this, true))
+#endif
{
setup_ui();
restore_ui_settings();
return action_about_;
}
+#ifdef ENABLE_DECODE
QMenu* MainWindow::menu_decoder_add() const
{
return menu_decoders_add_;
}
+#endif
void MainWindow::run_stop()
{
}
}
-void MainWindow::select_device(shared_ptr<Device> device)
+void MainWindow::select_device(shared_ptr<devices::Device> device)
{
try {
session_.set_device(device);
QSettings settings;
const QString dir = settings.value(SettingSaveDirectory).toString();
+ // Construct the filter
+ const vector<string> exts = format->extensions();
+ QString filter = tr("%1 files ").arg(
+ QString::fromStdString(format->description()));
+
+ if (exts.empty())
+ filter += "(*.*)";
+ else
+ filter += QString("(*.%1);;%2 (*.*)").arg(
+ QString::fromStdString(join(exts, ", *."))).arg(
+ tr("All Files"));
+
// Show the file dialog
const QString file_name = QFileDialog::getSaveFileName(
- this, tr("Save File"), dir, tr("%1 files (*.*)").arg(
- QString::fromStdString(format->description())));
+ this, tr("Save File"), dir, filter);
if (file_name.isEmpty())
return;
{
QSettings settings;
- shared_ptr<HardwareDevice> device;
-
map<string, string> dev_info;
list<string> key_list;
string value;
dev_info.insert(std::make_pair(key, value));
}
- device = device_manager_.find_device_from_info(dev_info);
-
+ const shared_ptr<devices::HardwareDevice> device =
+ device_manager_.find_device_from_info(dev_info);
if (device) {
select_device(device);
update_device_list();
const QString infoMessage;
try {
- session_.set_session_file(file_name.toStdString());
+ session_.set_device(
+ shared_ptr<devices::Device>(new devices::SessionFile(
+ device_manager_.context(),
+ file_name.toStdString())));
} catch(Error e) {
show_session_error(tr("Failed to load ") + file_name, e.what());
session_.set_default_device();
void MainWindow::device_selected()
{
// Set the title to include the device/file name
- const shared_ptr<sigrok::Device> device = session_.device();
+ const shared_ptr<devices::Device> device = session_.device();
if (!device)
return;
- const string display_name = device_manager_.get_display_name(device);
+ const string display_name = device->display_name(device_manager_);
setWindowTitle(tr("%1 - PulseView").arg(display_name.c_str()));
}