2022-10-04 06:19:42 +08:00
|
|
|
#pragma once
|
|
|
|
|
|
2022-12-29 10:21:06 +08:00
|
|
|
#include <QDockWidget>
|
2022-11-07 03:05:14 +08:00
|
|
|
#include <QJsonDocument>
|
2022-11-10 03:10:57 +08:00
|
|
|
#include <QMainWindow>
|
2023-05-26 01:51:28 +08:00
|
|
|
#include <QMenu>
|
2022-10-21 04:37:27 +08:00
|
|
|
#include <QProgressBar>
|
2023-01-19 03:40:44 +08:00
|
|
|
#include <QSplitter>
|
2022-10-21 04:37:27 +08:00
|
|
|
#include <QStatusBar>
|
2023-11-03 13:37:56 +08:00
|
|
|
#include <set>
|
2022-10-21 04:37:27 +08:00
|
|
|
|
2023-04-12 13:30:15 +08:00
|
|
|
#include "tools/cabana/chart/chartswidget.h"
|
2023-03-29 02:52:28 +08:00
|
|
|
#include "tools/cabana/dbc/dbcmanager.h"
|
2022-10-04 06:19:42 +08:00
|
|
|
#include "tools/cabana/detailwidget.h"
|
|
|
|
|
#include "tools/cabana/messageswidget.h"
|
|
|
|
|
#include "tools/cabana/videowidget.h"
|
2022-12-29 08:51:02 +08:00
|
|
|
#include "tools/cabana/tools/findsimilarbits.h"
|
2022-10-04 06:19:42 +08:00
|
|
|
|
2022-11-10 03:10:57 +08:00
|
|
|
class MainWindow : public QMainWindow {
|
2022-10-04 06:19:42 +08:00
|
|
|
Q_OBJECT
|
|
|
|
|
|
2022-10-06 12:17:22 +08:00
|
|
|
public:
|
2022-10-04 06:19:42 +08:00
|
|
|
MainWindow();
|
2022-10-07 04:57:11 +08:00
|
|
|
void dockCharts(bool dock);
|
2022-11-10 03:10:57 +08:00
|
|
|
void showStatusMessage(const QString &msg, int timeout = 0) { statusBar()->showMessage(msg, timeout); }
|
2023-05-10 01:04:06 +08:00
|
|
|
void loadFile(const QString &fn, SourceSet s = SOURCE_ALL);
|
2023-05-25 11:47:37 +08:00
|
|
|
ChartsWidget *charts_widget = nullptr;
|
2022-10-04 06:19:42 +08:00
|
|
|
|
2022-11-07 03:05:14 +08:00
|
|
|
public slots:
|
2023-05-25 11:47:37 +08:00
|
|
|
void openStream();
|
2023-05-26 01:51:28 +08:00
|
|
|
void closeStream();
|
2023-12-20 03:50:16 +08:00
|
|
|
void exportToCSV();
|
2023-05-25 11:47:37 +08:00
|
|
|
void changingStream();
|
|
|
|
|
void streamStarted();
|
|
|
|
|
|
2023-05-10 01:04:06 +08:00
|
|
|
void newFile(SourceSet s = SOURCE_ALL);
|
|
|
|
|
void openFile(SourceSet s = SOURCE_ALL);
|
2023-01-27 12:29:28 +08:00
|
|
|
void openRecentFile();
|
2023-01-30 05:02:20 +08:00
|
|
|
void loadDBCFromOpendbc(const QString &name);
|
2023-01-27 12:29:28 +08:00
|
|
|
void save();
|
|
|
|
|
void saveAs();
|
2023-04-19 19:49:30 +02:00
|
|
|
void saveToClipboard();
|
2022-11-07 03:05:14 +08:00
|
|
|
|
2022-10-21 04:37:27 +08:00
|
|
|
signals:
|
2022-10-30 03:01:08 +08:00
|
|
|
void showMessage(const QString &msg, int timeout);
|
2022-10-21 04:37:27 +08:00
|
|
|
void updateProgressBar(uint64_t cur, uint64_t total, bool success);
|
|
|
|
|
|
2022-10-06 12:17:22 +08:00
|
|
|
protected:
|
2023-01-27 12:29:28 +08:00
|
|
|
void remindSaveChanges();
|
2023-05-10 01:04:06 +08:00
|
|
|
void closeFile(SourceSet s = SOURCE_ALL);
|
2023-04-19 19:49:30 +02:00
|
|
|
void closeFile(DBCFile *dbc_file);
|
|
|
|
|
void saveFile(DBCFile *dbc_file);
|
|
|
|
|
void saveFileAs(DBCFile *dbc_file);
|
|
|
|
|
void saveFileToClipboard(DBCFile *dbc_file);
|
2023-11-03 13:37:56 +08:00
|
|
|
void loadFingerprints();
|
2023-04-19 19:49:30 +02:00
|
|
|
void loadFromClipboard(SourceSet s = SOURCE_ALL, bool close_all = true);
|
2023-03-10 20:21:34 +01:00
|
|
|
void autoSave();
|
|
|
|
|
void cleanupAutoSaveFile();
|
2023-03-27 19:29:44 +02:00
|
|
|
void updateRecentFiles(const QString &fn);
|
2023-01-27 12:29:28 +08:00
|
|
|
void updateRecentFileActions();
|
2022-11-10 03:10:57 +08:00
|
|
|
void createActions();
|
2022-12-29 10:21:06 +08:00
|
|
|
void createDockWindows();
|
2022-11-10 03:10:57 +08:00
|
|
|
void createStatusBar();
|
2022-12-03 05:15:14 +08:00
|
|
|
void createShortcuts();
|
2022-10-07 04:57:11 +08:00
|
|
|
void closeEvent(QCloseEvent *event) override;
|
2022-12-14 12:25:50 +08:00
|
|
|
void DBCFileChanged();
|
2022-10-21 04:37:27 +08:00
|
|
|
void updateDownloadProgress(uint64_t cur, uint64_t total, bool success);
|
2022-10-13 10:31:26 +08:00
|
|
|
void setOption();
|
2022-12-29 08:51:02 +08:00
|
|
|
void findSimilarBits();
|
2023-05-14 05:05:14 +08:00
|
|
|
void findSignal();
|
2023-01-30 11:19:50 +08:00
|
|
|
void undoStackCleanChanged(bool clean);
|
2023-02-21 05:52:16 +08:00
|
|
|
void undoStackIndexChanged(int index);
|
2023-02-17 06:47:36 +08:00
|
|
|
void onlineHelp();
|
2023-03-01 07:50:30 +08:00
|
|
|
void toggleFullScreen();
|
2023-02-23 12:44:33 +08:00
|
|
|
void updateStatus();
|
2023-03-27 19:29:44 +02:00
|
|
|
void updateLoadSaveMenus();
|
2023-05-25 11:47:37 +08:00
|
|
|
void createDockWidgets();
|
|
|
|
|
void eventsMerged();
|
2022-10-07 04:57:11 +08:00
|
|
|
|
2023-01-20 07:26:00 +08:00
|
|
|
VideoWidget *video_widget = nullptr;
|
2022-12-29 10:21:06 +08:00
|
|
|
QDockWidget *video_dock;
|
2023-05-25 11:47:37 +08:00
|
|
|
QDockWidget *messages_dock;
|
|
|
|
|
MessagesWidget *messages_widget = nullptr;
|
2023-02-21 06:16:30 +08:00
|
|
|
CenterWidget *center_widget;
|
2022-10-07 04:57:11 +08:00
|
|
|
QWidget *floating_window = nullptr;
|
2023-01-19 03:40:44 +08:00
|
|
|
QVBoxLayout *charts_layout;
|
2022-10-21 04:37:27 +08:00
|
|
|
QProgressBar *progress_bar;
|
2023-02-23 12:44:33 +08:00
|
|
|
QLabel *status_label;
|
2022-11-07 03:05:14 +08:00
|
|
|
QJsonDocument fingerprint_to_dbc;
|
2023-12-01 12:46:31 +08:00
|
|
|
QStringList opendbc_names;
|
2023-05-25 11:47:37 +08:00
|
|
|
QSplitter *video_splitter = nullptr;
|
2023-01-27 12:29:28 +08:00
|
|
|
enum { MAX_RECENT_FILES = 15 };
|
|
|
|
|
QAction *recent_files_acts[MAX_RECENT_FILES] = {};
|
|
|
|
|
QMenu *open_recent_menu = nullptr;
|
2023-04-19 19:49:30 +02:00
|
|
|
QMenu *manage_dbcs_menu = nullptr;
|
2023-05-26 01:51:28 +08:00
|
|
|
QMenu *tools_menu = nullptr;
|
|
|
|
|
QAction *close_stream_act = nullptr;
|
2023-12-20 03:50:16 +08:00
|
|
|
QAction *export_to_csv_act = nullptr;
|
2023-03-27 19:29:44 +02:00
|
|
|
QAction *save_dbc = nullptr;
|
|
|
|
|
QAction *save_dbc_as = nullptr;
|
|
|
|
|
QAction *copy_dbc_to_clipboard = nullptr;
|
2023-06-01 15:04:46 +08:00
|
|
|
QString car_fingerprint;
|
2023-02-21 05:52:16 +08:00
|
|
|
int prev_undostack_index = 0;
|
|
|
|
|
int prev_undostack_count = 0;
|
2023-06-04 07:51:16 +10:00
|
|
|
QByteArray default_state;
|
2023-02-17 06:47:36 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class HelpOverlay : public QWidget {
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
public:
|
|
|
|
|
HelpOverlay(MainWindow *parent);
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
void drawHelpForWidget(QPainter &painter, QWidget *w);
|
|
|
|
|
void paintEvent(QPaintEvent *event) override;
|
|
|
|
|
void mouseReleaseEvent(QMouseEvent *event) override;
|
|
|
|
|
bool eventFilter(QObject *obj, QEvent *event) override;
|
2022-11-07 03:05:14 +08:00
|
|
|
};
|