27 #include <QCoreApplication> 29 #include <QInputDialog> 31 #include <QMessageBox> 32 #include <QScrollArea> 36 #include <QVBoxLayout> 47 QDir::setCurrent(QCoreApplication::applicationDirPath());
52 setWindowTitle(tr(
"Control-Box RST"));
55 setWindowState(Qt::WindowMaximized);
61 _rpc_client = std::make_shared<MasterServiceClient>();
78 qRegisterMetaType<std::shared_ptr<MasterServiceClient>>(
"std::shared_ptr<MasterServiceClient>");
104 _action_load_parameters_file->setStatusTip(tr(
"Load parameters from file."));
105 connect(_action_load_parameters_file, &QAction::triggered,
_toolbox_widget,
110 _action_remove_signals->setStatusTip(tr(
"Clear all signals"));
111 connect(_action_remove_signals, &QAction::triggered, [
this](
bool ) {
118 _action_close_scopes->setStatusTip(tr(
"Clear all scopes"));
134 QString
text = QInputDialog::getText(
this, tr(
"QInputDialog::getText()"), tr(
"Server Address:"), QLineEdit::Normal,
_rpc_server_address, &ok);
135 if (ok && !text.isEmpty())
144 _action_about->setStatusTip(tr(
"Display general information about the program"));
145 connect(_action_about, SIGNAL(triggered()),
this, SLOT(
aboutPopup()));
184 menuBar()->setNativeMenuBar(
false);
193 QScrollArea* toolbox_scroll_area =
new QScrollArea;
216 _dock_scope_widget->setFloating(
false);
217 _dock_scope_widget->setObjectName(
"ScopesDock");
218 _dock_scope_widget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
221 _dock_scope_widget->setWidget(_scope_collection_widget);
222 _dock_scope_widget->setFeatures(QDockWidget::AllDockWidgetFeatures);
223 addDockWidget(Qt::RightDockWidgetArea, _dock_scope_widget);
226 QScrollArea* signal_scroll_area =
new QScrollArea;
237 signal_scroll_area->setWidget(_signal_collection_widget);
238 signal_scroll_area->setWidgetResizable(
true);
300 QVariant pos_var = settings.value(
"pos");
301 QVariant size_var = settings.value(
"size");
302 QVariant dock_var = settings.value(
"dock_locations");
303 QVariant rpc_server_address_var = settings.value(
"rpc_server_address");
305 if (pos_var.canConvert<QPoint>()) move(pos_var.toPoint());
306 if (size_var.canConvert<QSize>()) resize(size_var.toSize());
307 if (dock_var.canConvert<QByteArray>()) restoreState(dock_var.toByteArray());
308 if (rpc_server_address_var.canConvert<QString>())
_rpc_server_address = rpc_server_address_var.toString();
314 settings.setValue(
"pos", pos());
315 settings.setValue(
"size",
size());
316 settings.setValue(
"dock_locations", saveState());
322 if (status.isEmpty())
327 statusBar()->showMessage(status);
339 QStringList files = settings.value(
"recentFileList").toStringList();
343 for (
int i = 0; i < num_recent_files; ++i)
345 QString
text = files[i];
356 QStringList files = settings.value(
"recentFileList").toStringList();
357 files.removeAll(filename);
358 files.prepend(filename);
361 settings.setValue(
"recentFileList", files);
368 QMessageBox::about(
this, tr(
"About"), tr(
"<p><b>Institute of Control Theory and Systems Engineering, TU Dortmund University.</b></p>" 369 "<p>Written by Christoph Rösmann, <a " 370 "href=\"mailto:christoph.roesmann@tu-dortmund.de\">christoph.roesmann@tu-dortmund.de</a></p>"));
381 connect(rpc_worker, SIGNAL(connectionResult(std::shared_ptr<MasterServiceClient>)),
this,
virtual ~corboMainWindow()
ToolboxWidget * _toolbox_widget
QMenu * _menu_recent_parameters
QAction * _action_rpc_server_address
void configureRpcWorker()
QDockWidget * _dock_toolbox_widget
void displayStatusReady()
corboMainWindow(QWidget *parent=0)
void updatedRpcClient(std::shared_ptr< MasterServiceClient > client)
ScopeCollectionWidget * _scope_collection_widget
SignalHelper::Ptr _signal_helper
void readWindowSettings()
void signalRemoved(const QString &key, int value_idx)
const QString OrganizationName
QAction * _action_remove_signals
static constexpr size_t size(Tuple< Args... > &)
Provides access to the number of elements in a tuple as a compile-time constant expression.
void newSignal(const QString &key, SignalData &signal_data)
QAction * _action_rescale_scope_axes
void connectionResult(std::shared_ptr< MasterServiceClient > client)
QAction * _action_load_parameters_file
QString _rpc_server_address
QDockWidget * _dock_signal_widget
void newSeries(int task_id)
void requestRpcServerAddress(const QString &address)
QAction * _action_exit_program
QAction * _action_save_parameters_file
void newMeasurement(const QString &key, Measurement::ConstPtr measurement, SignalData &signal_data, bool first)
void addToRecentFileAction(const QString &filename)
void closeEvent(QCloseEvent *event) override
QAction * _action_close_scopes
QDockWidget * _dock_scope_widget
const QString ApplicationName
SignalCollectionWidget * _signal_collection_widget
void displayStatus(const QString &status, double duration_ms=0)
bool ok()
global method to check whether to proceed or cancel the current action
void writeWindowSettings()
std::array< QAction *, 6 > _action_recent_files
QWidget * _central_widget
QAction * _action_default_layout
void updateRecentFileActions()
std::shared_ptr< MasterServiceClient > _rpc_client
QThread _rpc_worker_thread