void AISTargetAlertDialog::CreateControls() { wxBoxSizer* topSizer = new wxBoxSizer( wxVERTICAL ); SetSizer( topSizer ); m_pAlertTextCtl = new wxHtmlWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO | wxHW_NO_SELECTION); #ifdef __OCPN__ANDROID__ m_pAlertTextCtl->GetHandle()->setStyleSheet( getQtStyleSheet()); #endif m_pAlertTextCtl->SetBorders( 5 ); #ifdef __WXOSX__ topSizer->Add( m_pAlertTextCtl, 1, wxALL | wxEXPAND, 5 ); #else topSizer->Add( m_pAlertTextCtl, 1, wxALIGN_CENTER_HORIZONTAL | wxALL | wxEXPAND, 5 ); #endif // A horizontal box sizer to contain Ack wxBoxSizer* AckBox = new wxBoxSizer( wxHORIZONTAL ); topSizer->Add( AckBox, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 5 ); // The Silence button if( g_bAIS_CPA_Alert_Audio ){ wxButton* silence = new wxButton( this, ID_SILENCE, _( "&Silence Alert" ), wxDefaultPosition, wxDefaultSize, 0 ); AckBox->Add( silence, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); } // The Ack button if( m_back ) { wxButton* ack = new wxButton( this, ID_ACKNOWLEDGE, _( "&Acknowledge" ), wxDefaultPosition, wxDefaultSize, 0 ); AckBox->Add( ack, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); } if( m_bjumpto ) { wxButton* jumpto = new wxButton( this, ID_JUMPTO, _( "&Jump To" ), wxDefaultPosition, wxDefaultSize, 0 ); AckBox->Add( jumpto, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); } if( m_bcreateWP ) { wxButton *createWptBtn = new wxButton( this, ID_WPT_CREATE, _("Create Waypoint"), wxDefaultPosition, wxDefaultSize, 0 ); AckBox->Add( createWptBtn, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); } UpdateText(); RecalculateSize(); }
void AISTargetListDialog::CreateControls() { wxBoxSizer* topSizer = new wxBoxSizer( wxHORIZONTAL ); SetSizer( topSizer ); #ifdef __OCPN__ANDROID__ this->GetHandle()->setStyleSheet( getQtStyleSheet()); #endif // Parse the global column width string as read from config file wxStringTokenizer tkz( g_AisTargetList_column_spec, _T(";") ); wxString s_width = tkz.GetNextToken(); int width; long lwidth; long flags = wxLC_REPORT | wxLC_SINGLE_SEL | wxLC_HRULES | wxLC_VRULES | wxBORDER_SUNKEN; #ifndef __WXQT__ flags |= wxLC_VIRTUAL; #endif m_pListCtrlAISTargets = new OCPNListCtrl( this, ID_AIS_TARGET_LIST, wxDefaultPosition, wxDefaultSize, flags); wxImageList *imglist = new wxImageList( 16, 16, true, 2 ); ocpnStyle::Style* style = g_StyleManager->GetCurrentStyle(); imglist->Add( style->GetIcon( _T("sort_asc") ) ); imglist->Add( style->GetIcon( _T("sort_desc") ) ); m_pListCtrlAISTargets->AssignImageList( imglist, wxIMAGE_LIST_SMALL ); m_pListCtrlAISTargets->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( AISTargetListDialog::OnTargetSelected ), NULL, this ); m_pListCtrlAISTargets->Connect( wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler( AISTargetListDialog::OnTargetSelected ), NULL, this ); m_pListCtrlAISTargets->Connect( wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler( AISTargetListDialog::OnTargetDefaultAction ), NULL, this ); m_pListCtrlAISTargets->Connect( wxEVT_COMMAND_LIST_COL_CLICK, wxListEventHandler( AISTargetListDialog::OnTargetListColumnClicked ), NULL, this ); int dx = GetCharWidth(); width = dx * 4; if( s_width.ToLong( &lwidth ) ) { width = wxMax(dx * 2, lwidth); width = wxMin(width, dx * 30); } m_pListCtrlAISTargets->InsertColumn( tlTRK, _("Trk"), wxLIST_FORMAT_LEFT, width ); s_width = tkz.GetNextToken(); width = dx * 12; if( s_width.ToLong( &lwidth ) ) { width = wxMax(dx * 2, lwidth); width = wxMin(width, dx * 30); } m_pListCtrlAISTargets->InsertColumn( tlNAME, _("Name"), wxLIST_FORMAT_LEFT, width ); s_width = tkz.GetNextToken(); width = dx * 7; if( s_width.ToLong( &lwidth ) ) { width = wxMax(dx * 2, lwidth); width = wxMin(width, dx * 30); } m_pListCtrlAISTargets->InsertColumn( tlCALL, _("Call"), wxLIST_FORMAT_LEFT, width ); s_width = tkz.GetNextToken(); width = dx * 10; if( s_width.ToLong( &lwidth ) ) { width = wxMax(dx * 2, lwidth); width = wxMin(width, dx * 30); } m_pListCtrlAISTargets->InsertColumn( tlMMSI, _("MMSI"), wxLIST_FORMAT_LEFT, width ); s_width = tkz.GetNextToken(); width = dx * 7; if( s_width.ToLong( &lwidth ) ) { width = wxMax(dx * 2, lwidth); width = wxMin(width, dx * 30); } m_pListCtrlAISTargets->InsertColumn( tlCLASS, _("Class"), wxLIST_FORMAT_CENTER, width ); s_width = tkz.GetNextToken(); width = dx * 10; if( s_width.ToLong( &lwidth ) ) { width = wxMax(dx * 2, lwidth); width = wxMin(width, dx * 30); } m_pListCtrlAISTargets->InsertColumn( tlTYPE, _("Type"), wxLIST_FORMAT_LEFT, width ); s_width = tkz.GetNextToken(); width = dx * 12; if( s_width.ToLong( &lwidth ) ) { width = wxMax(dx * 2, lwidth); width = wxMin(width, dx * 30); } m_pListCtrlAISTargets->InsertColumn( tlNAVSTATUS, _("Nav Status"), wxLIST_FORMAT_LEFT, width ); s_width = tkz.GetNextToken(); width = dx * 6; if( s_width.ToLong( &lwidth ) ) { width = wxMax(dx * 2, lwidth); width = wxMin(width, dx * 30); } m_pListCtrlAISTargets->InsertColumn( tlBRG, _("Brg"), wxLIST_FORMAT_RIGHT, width ); s_width = tkz.GetNextToken(); width = dx * 8; if( s_width.ToLong( &lwidth ) ) { width = wxMax(dx * 2, lwidth); width = wxMin(width, dx * 30); } m_pListCtrlAISTargets->InsertColumn( tlRNG, _("Range"), wxLIST_FORMAT_RIGHT, width ); s_width = tkz.GetNextToken(); width = dx * 6; if( s_width.ToLong( &lwidth ) ) { width = wxMax(dx * 2, lwidth); width = wxMin(width, dx * 30); } m_pListCtrlAISTargets->InsertColumn( tlCOG, _("CoG"), wxLIST_FORMAT_RIGHT, width ); s_width = tkz.GetNextToken(); width = dx * 6; if( s_width.ToLong( &lwidth ) ) { width = wxMax(dx * 2, lwidth); width = wxMin(width, dx * 30); } m_pListCtrlAISTargets->InsertColumn( tlSOG, _("SoG"), wxLIST_FORMAT_RIGHT, width ); width = dx * 7; if( s_width.ToLong( &lwidth ) ) { width = wxMax(dx * 2, lwidth); width = wxMin(width, dx * 30); } m_pListCtrlAISTargets->InsertColumn( tlCPA, _("CPA"), wxLIST_FORMAT_RIGHT, width ); width = dx * 8; if( s_width.ToLong( &lwidth ) ) { width = wxMax(dx * 2, lwidth); width = wxMin(width, dx * 30); } m_pListCtrlAISTargets->InsertColumn( tlTCPA, _("TCPA"), wxLIST_FORMAT_RIGHT, width ); wxListItem item; item.SetMask( wxLIST_MASK_IMAGE ); item.SetImage( g_bAisTargetList_sortReverse ? 1 : 0 ); g_AisTargetList_sortColumn = wxMax(g_AisTargetList_sortColumn, 0); m_pListCtrlAISTargets->SetColumn( g_AisTargetList_sortColumn, item ); topSizer->Add( m_pListCtrlAISTargets, 1, wxEXPAND | wxALL, 0 ); wxBoxSizer* boxSizer02 = new wxBoxSizer( wxVERTICAL ); boxSizer02->AddSpacer( 22 ); topSizer->Add( boxSizer02, 0, wxEXPAND | wxALL, 2 ); wxScrolledWindow *winr = new wxScrolledWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxNO_BORDER | wxTAB_TRAVERSAL | wxVSCROLL); winr->SetScrollRate(0,5); boxSizer02->Add( winr, 1, wxALL | wxEXPAND, 3 ); wxBoxSizer *bsRouteButtonsInner = new wxBoxSizer( wxVERTICAL ); winr->SetSizer(bsRouteButtonsInner); m_pButtonInfo = new wxButton( winr, wxID_ANY, _("Target info"), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW ); m_pButtonInfo->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( AISTargetListDialog::OnTargetQuery ), NULL, this ); bsRouteButtonsInner->Add( m_pButtonInfo, 0, wxEXPAND | wxALL, 0 ); bsRouteButtonsInner->AddSpacer( 5 ); m_pButtonJumpTo = new wxButton( winr, wxID_ANY, _("Center View"), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW ); m_pButtonJumpTo->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( AISTargetListDialog::OnTargetScrollTo ), NULL, this ); bsRouteButtonsInner->Add( m_pButtonJumpTo, 0, wxEXPAND | wxALL, 0 ); m_pButtonCreateWpt = new wxButton( winr, wxID_ANY, _("Create WPT"), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW ); m_pButtonCreateWpt->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( AISTargetListDialog::OnTargetCreateWpt ), NULL, this ); bsRouteButtonsInner->Add( m_pButtonCreateWpt, 0, wxEXPAND | wxALL, 0 ); m_pButtonHideAllTracks = new wxButton( winr, wxID_ANY, _("Hide All Tracks"), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW ); m_pButtonHideAllTracks->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( AISTargetListDialog::OnHideAllTracks ), NULL, this ); bsRouteButtonsInner->Add( m_pButtonHideAllTracks, 0, wxEXPAND | wxALL, 0 ); m_pButtonShowAllTracks = new wxButton( winr, wxID_ANY, _("Show All Tracks"), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW ); m_pButtonShowAllTracks->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( AISTargetListDialog::OnShowAllTracks ), NULL, this ); bsRouteButtonsInner->Add( m_pButtonShowAllTracks, 0, wxEXPAND | wxALL, 0 ); m_pButtonToggleTrack = new wxButton( winr, wxID_ANY, _("Toggle track"), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW ); m_pButtonToggleTrack->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( AISTargetListDialog::OnToggleTrack ), NULL, this ); bsRouteButtonsInner->Add( m_pButtonToggleTrack, 0, wxEXPAND | wxALL, 0 ); m_pCBAutosort = new wxCheckBox( winr, wxID_ANY, _("AutoSort"), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW ); m_pCBAutosort->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( AISTargetListDialog::OnAutosortCB ), NULL, this ); bsRouteButtonsInner->Add( m_pCBAutosort, 0, wxEXPAND | wxALL, 0 ); g_bAisTargetList_autosort = true; m_pCBAutosort->SetValue(g_bAisTargetList_autosort); bsRouteButtonsInner->AddSpacer( 10 ); m_pStaticTextRange = new wxStaticText( winr, wxID_ANY, _("Limit range: NM"), wxDefaultPosition, wxDefaultSize, 0 ); bsRouteButtonsInner->Add( m_pStaticTextRange, 0, wxALL, 0 ); bsRouteButtonsInner->AddSpacer( 2 ); m_pSpinCtrlRange = new wxSpinCtrl( winr, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 50, -1 ), wxSP_ARROW_KEYS, 1, 20000, g_AisTargetList_range ); m_pSpinCtrlRange->Connect( wxEVT_COMMAND_SPINCTRL_UPDATED, wxCommandEventHandler( AISTargetListDialog::OnLimitRange ), NULL, this ); m_pSpinCtrlRange->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( AISTargetListDialog::OnLimitRange ), NULL, this ); bsRouteButtonsInner->Add( m_pSpinCtrlRange, 0, wxEXPAND | wxALL, 0 ); bsRouteButtonsInner->AddSpacer( 10 ); m_pStaticTextCount = new wxStaticText( winr, wxID_ANY, _("Target Count"), wxDefaultPosition, wxDefaultSize, 0 ); bsRouteButtonsInner->Add( m_pStaticTextCount, 0, wxALL, 0 ); bsRouteButtonsInner->AddSpacer( 2 ); m_pTextTargetCount = new wxTextCtrl( winr, wxID_ANY, _T(""), wxDefaultPosition, wxDefaultSize, wxTE_READONLY ); bsRouteButtonsInner->Add( m_pTextTargetCount, 0, wxALL, 0 ); bsRouteButtonsInner->AddSpacer( 10 ); m_pButtonOK = new wxButton( winr, wxID_ANY, _("Close"), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW ); m_pButtonOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( AISTargetListDialog::OnCloseButton ), NULL, this ); bsRouteButtonsInner->Add( m_pButtonOK, 0, wxEXPAND | wxALL, 0 ); topSizer->Layout(); // This is silly, but seems to be required for __WXMSW__ build // If not done, the SECOND invocation of AISTargetList fails to expand the list to the full wxSizer size.... SetSize( GetSize().x, GetSize().y - 1 ); }