27#include <wx/textwrapper.h>
34#include "color_types.h"
43 Wrap(win, text, widthMax);
45 wxString
const& GetWrapped()
const {
return m_wrapped; }
46 int const GetLineCount()
const {
return m_lineCount; }
47 wxArrayString GetLineArray() {
return m_array; }
50 virtual void OnOutputLine(
const wxString& line) {
54 virtual void OnNewLine() {
62 wxArrayString m_array;
68EVT_SIZE(S57QueryDialog::OnSize)
69EVT_CLOSE(S57QueryDialog::OnClose)
70EVT_HTML_LINK_CLICKED(wxID_ANY, S57QueryDialog::OnHtmlLinkClicked)
71EVT_CHAR_HOOK(S57QueryDialog::OnKey)
77 const wxString& caption,
const wxPoint& pos,
78 const wxSize& size,
long style) {
80 Create(parent,
id, caption, pos, size, style);
83S57QueryDialog::~S57QueryDialog() {
84 g_S57_dialog_sx = GetSize().x;
85 g_S57_dialog_sy = GetSize().y;
86 m_btnOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED,
87 wxCommandEventHandler(S57QueryDialog::OnOKClick), NULL,
91void S57QueryDialog::Init() {}
93bool S57QueryDialog::Create(wxWindow* parent, wxWindowID
id,
94 const wxString& caption,
const wxPoint& pos,
95 const wxSize& size,
long style) {
96 long wstyle = wxDEFAULT_FRAME_STYLE | wxFRAME_FLOAT_ON_PARENT;
98 if (!wxFrame::Create(parent,
id, caption, pos, size, wstyle))
return false;
123void S57QueryDialog::RecalculateSize() {
126 wxSize esize = m_createsize;
128 esize = GetParent()->GetClientSize();
131 wxSize dsize = GetParent()->GetClientSize();
132 esize.y = wxMin(esize.y, dsize.y - (1 * GetCharHeight()));
133 esize.x = wxMin(esize.x, dsize.x - (1 * GetCharHeight()));
136 wxSize fsize = GetSize();
137 fsize.y = wxMin(fsize.y, dsize.y - (2 * GetCharHeight()));
138 fsize.x = wxMin(fsize.x, dsize.x - (2 * GetCharHeight()));
144void S57QueryDialog::CreateControls() {
145 wxBoxSizer* topSizer =
new wxBoxSizer(wxVERTICAL);
148 long style = wxHW_SCROLLBAR_AUTO;
149 if (g_btouch) style |= wxHW_NO_SELECTION;
152 new wxHtmlWindow(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, style);
154 m_phtml->SetBorders(5);
156 m_phtml->SetMinSize(wxSize(100, 100));
157 topSizer->Add(m_phtml, 1, wxBOTTOM | wxEXPAND, 10);
159 topSizer->FitInside(
this);
161 m_btnOK =
new wxButton(
this, wxID_OK);
162 m_btnOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED,
163 wxCommandEventHandler(S57QueryDialog::OnOKClick), NULL,
165 topSizer->Add(m_btnOK, 0, wxALIGN_CENTER_HORIZONTAL | wxBOTTOM, 5);
168void S57QueryDialog::SetColorScheme() {
170 wxColor bg = GetBackgroundColour();
171 m_phtml->SetBackgroundColour(bg);
178 wxBitmap tbm(GetSize().x, GetSize().y, -1);
181 tdc.SetBackground(bg);
183 m_phtml->SetBackgroundImage(tbm);
187void S57QueryDialog::OnKey(wxKeyEvent& ke) {
188 if (ke.GetKeyCode() == WXK_ESCAPE)
194void S57QueryDialog::SetHTMLPage(wxString& page) {
195 m_phtml->SetPage(page);
199void S57QueryDialog::OnSize(wxSizeEvent& event) {
200 g_S57_dialog_sx = GetSize().x;
201 g_S57_dialog_sy = GetSize().y;
202 wxFrame::OnSize(event);
205void S57QueryDialog::OnClose(wxCloseEvent& event) {
206 g_S57_dialog_sx = GetSize().x;
207 g_S57_dialog_sy = GetSize().y;
212void S57QueryDialog::OnHtmlLinkClicked(wxHtmlLinkEvent& event) {
214 GetParent(), wxID_ANY, _(
"Extra Object Info"),
215 wxPoint(GetPosition().x + 20, GetPosition().y + 20),
216 wxSize(g_S57_extradialog_sx, g_S57_extradialog_sy));
219 wxFileName filen(event.GetLinkInfo().GetHref());
220 wxString Extensions = wxString(
"txt,html,rtf");
222 if (Extensions.Find(filen.GetExt().Lower()) == wxNOT_FOUND)
223 ExtraObjInfoDlg->m_phtml->LoadPage(event.GetLinkInfo().GetHref());
225 wxTextFile txf(filen.GetFullPath());
228 if (filen.GetExt().Lower() ==
"txt") {
232 GetForegroundColour().GetAsString(wxC2S_HTML_SYNTAX) +
237 str = txf.GetFirstLine();
240 m_phtml->GetSize().x * 9 / 10);
241 contents += wrapper.GetWrapped();
244 str = txf.GetNextLine();
245 }
while (!txf.Eof());
246 if (filen.GetExt().Lower() ==
"txt") {
247 contents +=
"</font>";
250 ExtraObjInfoDlg->m_phtml->SetPage(contents);
254 ExtraObjInfoDlg->SetColorScheme();
257 ExtraObjInfoDlg->SetSize(GetSize().x - 40, GetSize().y - 40);
260 ExtraObjInfoDlg->Show(
true);
268EVT_SIZE(S57ExtraQueryInfoDlg::OnSize)
269EVT_CLOSE(S57ExtraQueryInfoDlg::OnClose)
275 const wxString& caption,
277 const wxSize& size,
long style) {
279 Create(parent,
id, caption, pos, size, style);
281bool S57ExtraQueryInfoDlg::Create(wxWindow* parent, wxWindowID
id,
282 const wxString& caption,
const wxPoint& pos,
283 const wxSize& size,
long style) {
284 long wstyle = wxDEFAULT_FRAME_STYLE | wxFRAME_FLOAT_ON_PARENT;
286 if (!wxFrame::Create(parent,
id, caption, pos, size, wstyle))
return false;
296S57ExtraQueryInfoDlg::~S57ExtraQueryInfoDlg() {
297 g_S57_extradialog_sx = GetSize().x;
298 g_S57_extradialog_sy = GetSize().y;
301void S57ExtraQueryInfoDlg::OnSize(wxSizeEvent& event) {
302 g_S57_extradialog_sx = GetSize().x;
303 g_S57_extradialog_sy = GetSize().y;
304 wxFrame::OnSize(event);
307void S57ExtraQueryInfoDlg::OnClose(wxCloseEvent& event) {
308 g_S57_extradialog_sx = GetSize().x;
309 g_S57_extradialog_sy = GetSize().y;
Dialog for displaying query results of S57 objects.
S57QueryDialog()
Constructors.
Global variables stored in configuration file.
wxFont * GetOCPNScaledFont(wxString item, int default_size)
Retrieves a font from FontMgr, optionally scaled for physical readability.
General purpose GUI support.
S57QueryDialog * g_pObjectQueryDialog
Global instance.
S57 object query result window.
S57QueryDialog * g_pObjectQueryDialog
Global instance.
Geographic projection and coordinate transformations.