# include  "tools/cabana/streamselector.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <QFileDialog> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <QLabel> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <QPushButton> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "streams/socketcanstream.h" 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "tools/cabana/streams/devicestream.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "tools/cabana/streams/pandastream.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "tools/cabana/streams/replaystream.h" 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "tools/cabana/streams/socketcanstream.h" 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								StreamSelector : : StreamSelector ( QWidget  * parent )  :  QDialog ( parent )  { 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  setWindowTitle ( tr ( " Open stream " ) ) ; 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  QVBoxLayout  * layout  =  new  QVBoxLayout ( this ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tab  =  new  QTabWidget ( this ) ; 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  layout - > addWidget ( tab ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  QHBoxLayout  * dbc_layout  =  new  QHBoxLayout ( ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  dbc_file  =  new  QLineEdit ( this ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  dbc_file - > setReadOnly ( true ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  dbc_file - > setPlaceholderText ( tr ( " Choose a dbc file to open " ) ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  QPushButton  * file_btn  =  new  QPushButton ( tr ( " Browse... " ) ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  dbc_layout - > addWidget ( new  QLabel ( tr ( " dbc File " ) ) ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  dbc_layout - > addWidget ( dbc_file ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  dbc_layout - > addWidget ( file_btn ) ; 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  layout - > addLayout ( dbc_layout ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  QFrame  * line  =  new  QFrame ( this ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  line - > setFrameStyle ( QFrame : : HLine  |  QFrame : : Sunken ) ; 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  layout - > addWidget ( line ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  btn_box  =  new  QDialogButtonBox ( QDialogButtonBox : : Open  |  QDialogButtonBox : : Cancel ) ; 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  layout - > addWidget ( btn_box ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  addStreamWidget ( new  OpenReplayWidget ,  tr ( " &Replay " ) ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  addStreamWidget ( new  OpenPandaWidget ,  tr ( " &Panda " ) ) ; 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( SocketCanStream : : available ( ) )  { 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								    addStreamWidget ( new  OpenSocketCanWidget ,  tr ( " &SocketCAN " ) ) ; 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  addStreamWidget ( new  OpenDeviceWidget ,  tr ( " &Device " ) ) ; 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  QObject : : connect ( btn_box ,  & QDialogButtonBox : : rejected ,  this ,  & QDialog : : reject ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  QObject : : connect ( btn_box ,  & QDialogButtonBox : : accepted ,  [ = ] ( )  { 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								    setEnabled ( false ) ; 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( stream_  =  ( ( AbstractOpenStreamWidget  * ) tab - > currentWidget ( ) ) - > open ( ) ;  stream_ )  { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      accept ( ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								    setEnabled ( true ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  QObject : : connect ( file_btn ,  & QPushButton : : clicked ,  [ this ] ( )  { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    QString  fn  =  QFileDialog : : getOpenFileName ( this ,  tr ( " Open File " ) ,  settings . last_dir ,  " DBC (*.dbc) " ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! fn . isEmpty ( ) )  { 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      dbc_file - > setText ( fn ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      settings . last_dir  =  QFileInfo ( fn ) . absolutePath ( ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  StreamSelector : : addStreamWidget ( AbstractOpenStreamWidget  * w ,  const  QString  & title )  { 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tab - > addTab ( w ,  title ) ; 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  auto  open_btn  =  btn_box - > button ( QDialogButtonBox : : Open ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  QObject : : connect ( w ,  & AbstractOpenStreamWidget : : enableOpenButton ,  open_btn ,  & QPushButton : : setEnabled ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}