# pragma once
# include <QDialog>
# include <QLabel>
# include <QPushButton>
# include <QScrollArea>
# include <QTableWidget>
# include <QVBoxLayout>
# include <QWidget>
# include "opendbc/can/common.h"
# include "opendbc/can/common_dbc.h"
# include "tools/cabana/canmessages.h"
# include "tools/cabana/dbcmanager.h"
# include "tools/cabana/historylog.h"
# include "tools/cabana/signaledit.h"
class BinaryView : public QWidget {
Q_OBJECT
public :
BinaryView ( QWidget * parent ) ;
void setMessage ( const QString & message_id ) ;
void updateState ( ) ;
private :
QString msg_id ;
QTableWidget * table ;
} ;
class EditMessageDialog : public QDialog {
Q_OBJECT
public :
EditMessageDialog ( const QString & msg_id , QWidget * parent ) ;
protected :
void save ( ) ;
QString msg_id ;
QLineEdit * name_edit ;
QSpinBox * size_spin ;
} ;
class ScrollArea : public QScrollArea {
Q_OBJECT
public :
ScrollArea ( QWidget * parent ) : QScrollArea ( parent ) { }
bool eventFilter ( QObject * obj , QEvent * ev ) override ;
void setWidget ( QWidget * w ) ;
} ;
class DetailWidget : public QWidget {
Q_OBJECT
public :
DetailWidget ( QWidget * parent ) ;
void setMessage ( const QString & message_id ) ;
signals :
void showChart ( const QString & msg_id , const QString & sig_name ) ;
private slots :
void showForm ( ) ;
private :
void addSignal ( ) ;
void editMsg ( ) ;
void updateState ( ) ;
QString msg_id ;
QLabel * name_label , * time_label ;
QPushButton * edit_btn ;
QVBoxLayout * signal_edit_layout ;
QWidget * signals_header ;
QList < SignalEdit * > signal_forms ;
HistoryLog * history_log ;
BinaryView * binary_view ;
ScrollArea * scroll ;
} ;