2015-10-03 21:35:11 -04:00
# include "SDRDevices.h"
2015-10-05 02:21:08 -04:00
# include <wx/textdlg.h>
# include <wx/msgdlg.h>
2015-10-04 16:07:14 -04:00
# include "CubicSDR.h"
SDRDevicesDialog : : SDRDevicesDialog ( wxWindow * parent ) : devFrame ( parent ) {
2015-10-05 02:21:08 -04:00
refresh = true ;
m_addRemoteButton - > Disable ( ) ;
m_useSelectedButton - > Disable ( ) ;
m_deviceTimer . Start ( 250 ) ;
2015-11-02 19:02:45 -05:00
// Add int property
m_propertyGrid - > Append ( new wxIntProperty ( " IntProperty " , wxPG_LABEL , 12345678 ) ) ;
// Add float property (value type is actually double)
m_propertyGrid - > Append ( new wxFloatProperty ( " FloatProperty " , wxPG_LABEL , 12345.678 ) ) ;
// Add a bool property
m_propertyGrid - > Append ( new wxBoolProperty ( " BoolProperty " , wxPG_LABEL , false ) ) ;
// A string property that can be edited in a separate editor dialog.
m_propertyGrid - > Append ( new wxLongStringProperty ( " LongStringProperty " ,
wxPG_LABEL ,
" This is much longer string than the "
" first one. Edit it by clicking the button. " ) ) ;
// String editor with dir selector button.
m_propertyGrid - > Append ( new wxDirProperty ( " DirProperty " , wxPG_LABEL , : : wxGetUserHome ( ) ) ) ;
// wxArrayStringProperty embeds a wxArrayString.
m_propertyGrid - > Append ( new wxArrayStringProperty ( " Label of ArrayStringProperty " ,
" NameOfArrayStringProp " ) ) ;
// A file selector property.
m_propertyGrid - > Append ( new wxFileProperty ( " FileProperty " , wxPG_LABEL , wxEmptyString ) ) ;
// Extra: set wild card for file property (format same as in wxFileDialog).
m_propertyGrid - > SetPropertyAttribute ( " FileProperty " ,
wxPG_FILE_WILDCARD ,
" All files (*.*)|*.* " ) ;
2015-10-04 16:07:14 -04:00
}
2015-10-05 02:21:08 -04:00
void SDRDevicesDialog : : OnClose ( wxCloseEvent & event ) {
wxGetApp ( ) . setDeviceSelectorClosed ( ) ;
Destroy ( ) ;
}
2015-10-04 16:07:14 -04:00
void SDRDevicesDialog : : OnDeleteItem ( wxTreeEvent & event ) {
event . Skip ( ) ;
}
void SDRDevicesDialog : : OnSelectionChanged ( wxTreeEvent & event ) {
event . Skip ( ) ;
}
void SDRDevicesDialog : : OnAddRemote ( wxMouseEvent & event ) {
2015-10-05 02:21:08 -04:00
if ( ! SDREnumerator : : hasRemoteModule ( ) ) {
wxMessageDialog * info ;
info = new wxMessageDialog ( NULL , wxT ( " Install SoapyRemote module to add remote servers. \n \n https://github.com/pothosware/SoapyRemote " ) , wxT ( " SoapyRemote not found. " ) , wxOK | wxICON_ERROR ) ;
info - > ShowModal ( ) ;
return ;
}
wxString remoteAddr =
wxGetTextFromUser ( " Remote Address (address[:port]) \n \n i.e. 'raspberrypi.local', '192.168.1.103:1234' \n " , " SoapySDR Remote Address " , " " , this ) ;
if ( ! remoteAddr . Trim ( ) . empty ( ) ) {
wxGetApp ( ) . addRemote ( remoteAddr . Trim ( ) . ToStdString ( ) ) ;
}
devTree - > Disable ( ) ;
m_addRemoteButton - > Disable ( ) ;
m_useSelectedButton - > Disable ( ) ;
refresh = true ;
2015-10-04 16:07:14 -04:00
}
void SDRDevicesDialog : : OnUseSelected ( wxMouseEvent & event ) {
wxTreeItemId selId = devTree - > GetSelection ( ) ;
devItems_i = devItems . find ( selId ) ;
if ( devItems_i ! = devItems . end ( ) ) {
dev = devItems [ selId ] ;
wxGetApp ( ) . setDevice ( dev ) ;
Close ( ) ;
}
}
2015-10-03 21:35:11 -04:00
2015-10-05 02:21:08 -04:00
void SDRDevicesDialog : : OnTreeDoubleClick ( wxMouseEvent & event ) {
OnUseSelected ( event ) ;
}
void SDRDevicesDialog : : OnDeviceTimer ( wxTimerEvent & event ) {
if ( refresh ) {
if ( wxGetApp ( ) . areDevicesEnumerating ( ) | | ! wxGetApp ( ) . areDevicesReady ( ) ) {
std : : string msg = wxGetApp ( ) . getNotification ( ) ;
devStatusBar - > SetStatusText ( msg ) ;
devTree - > DeleteAllItems ( ) ;
devTree - > AddRoot ( msg ) ;
event . Skip ( ) ;
return ;
}
devTree - > DeleteAllItems ( ) ;
wxTreeItemId devRoot = devTree - > AddRoot ( " Devices " ) ;
wxTreeItemId localBranch = devTree - > AppendItem ( devRoot , " Local " ) ;
wxTreeItemId remoteBranch = devTree - > AppendItem ( devRoot , " Remote " ) ;
devs [ " " ] = SDREnumerator : : enumerate_devices ( " " , true ) ;
if ( devs [ " " ] ! = NULL ) {
for ( devs_i = devs [ " " ] - > begin ( ) ; devs_i ! = devs [ " " ] - > end ( ) ; devs_i + + ) {
devItems [ devTree - > AppendItem ( localBranch , ( * devs_i ) - > getName ( ) ) ] = ( * devs_i ) ;
}
}
std : : vector < std : : string > remotes = SDREnumerator : : getRemotes ( ) ;
std : : vector < std : : string > : : iterator remotes_i ;
std : : vector < SDRDeviceInfo * > : : iterator remoteDevs_i ;
if ( remotes . size ( ) ) {
for ( remotes_i = remotes . begin ( ) ; remotes_i ! = remotes . end ( ) ; remotes_i + + ) {
devs [ * remotes_i ] = SDREnumerator : : enumerate_devices ( * remotes_i , true ) ;
wxTreeItemId remoteNode = devTree - > AppendItem ( remoteBranch , * remotes_i ) ;
if ( devs [ * remotes_i ] ! = NULL ) {
for ( remoteDevs_i = devs [ * remotes_i ] - > begin ( ) ; remoteDevs_i ! = devs [ * remotes_i ] - > end ( ) ; remoteDevs_i + + ) {
devItems [ devTree - > AppendItem ( remoteNode , ( * remoteDevs_i ) - > getName ( ) ) ] = ( * remoteDevs_i ) ;
}
}
}
}
m_addRemoteButton - > Enable ( ) ;
m_useSelectedButton - > Enable ( ) ;
devTree - > Enable ( ) ;
devTree - > ExpandAll ( ) ;
devStatusBar - > SetStatusText ( " Ready. " ) ;
refresh = false ;
}
}