29#include <wx/textwrapper.h>
36#include "color_types.h"
45 Wrap(win, text, widthMax);
47 wxString
const& GetWrapped()
const {
return m_wrapped; }
48 int const GetLineCount()
const {
return m_lineCount; }
49 wxArrayString GetLineArray() {
return m_array; }
52 virtual void OnOutputLine(
const wxString& line) {
56 virtual void OnNewLine() {
64 wxArrayString m_array;
70EVT_SIZE(S57QueryDialog::OnSize)
71EVT_CLOSE(S57QueryDialog::OnClose)
72EVT_HTML_LINK_CLICKED(wxID_ANY, S57QueryDialog::OnHtmlLinkClicked)
73EVT_CHAR_HOOK(S57QueryDialog::OnKey)
79 const wxString& caption,
const wxPoint& pos,
80 const wxSize& size,
long style) {
82 Create(parent,
id, caption, pos, size, style);
85S57QueryDialog::~S57QueryDialog() {
86 g_S57_dialog_sx = GetSize().x;
87 g_S57_dialog_sy = GetSize().y;
88 m_btnOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED,
89 wxCommandEventHandler(S57QueryDialog::OnOKClick), NULL,
93void S57QueryDialog::Init() {}
95bool S57QueryDialog::Create(wxWindow* parent, wxWindowID
id,
96 const wxString& caption,
const wxPoint& pos,
97 const wxSize& size,
long style) {
98 long wstyle = wxDEFAULT_FRAME_STYLE | wxFRAME_FLOAT_ON_PARENT;
100 if (!wxFrame::Create(parent,
id, caption, pos, size, wstyle))
return false;
125void S57QueryDialog::RecalculateSize() {
128 wxSize esize = m_createsize;
130 esize = GetParent()->GetClientSize();
133 wxSize dsize = GetParent()->GetClientSize();
134 esize.y = wxMin(esize.y, dsize.y - (1 * GetCharHeight()));
135 esize.x = wxMin(esize.x, dsize.x - (1 * GetCharHeight()));
138 wxSize fsize = GetSize();
139 fsize.y = wxMin(fsize.y, dsize.y - (2 * GetCharHeight()));
140 fsize.x = wxMin(fsize.x, dsize.x - (2 * GetCharHeight()));
146void S57QueryDialog::CreateControls() {
147 wxBoxSizer* topSizer =
new wxBoxSizer(wxVERTICAL);
150 long style = wxHW_SCROLLBAR_AUTO;
151 if (g_btouch) style |= wxHW_NO_SELECTION;
154 new wxHtmlWindow(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, style);
156 m_phtml->SetBorders(5);
158 m_phtml->SetMinSize(wxSize(100, 100));
159 topSizer->Add(m_phtml, 1, wxBOTTOM | wxEXPAND, 10);
161 topSizer->FitInside(
this);
163 m_btnOK =
new wxButton(
this, wxID_OK);
164 m_btnOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED,
165 wxCommandEventHandler(S57QueryDialog::OnOKClick), NULL,
167 topSizer->Add(m_btnOK, 0, wxALIGN_CENTER_HORIZONTAL | wxBOTTOM, 5);
170void S57QueryDialog::SetColorScheme() {
172 wxColor bg = GetBackgroundColour();
173 m_phtml->SetBackgroundColour(bg);
180 wxBitmap tbm(GetSize().x, GetSize().y, -1);
183 tdc.SetBackground(bg);
185 m_phtml->SetBackgroundImage(tbm);
189void S57QueryDialog::OnKey(wxKeyEvent& ke) {
190 if (ke.GetKeyCode() == WXK_ESCAPE)
196void S57QueryDialog::SetHTMLPage(wxString& page) {
197 m_phtml->SetPage(page);
201void S57QueryDialog::OnSize(wxSizeEvent& event) {
202 g_S57_dialog_sx = GetSize().x;
203 g_S57_dialog_sy = GetSize().y;
204 wxFrame::OnSize(event);
207void S57QueryDialog::OnClose(wxCloseEvent& event) {
208 g_S57_dialog_sx = GetSize().x;
209 g_S57_dialog_sy = GetSize().y;
214void S57QueryDialog::OnHtmlLinkClicked(wxHtmlLinkEvent& event) {
216 GetParent(), wxID_ANY, _(
"Extra Object Info"),
217 wxPoint(GetPosition().x + 20, GetPosition().y + 20),
218 wxSize(g_S57_extradialog_sx, g_S57_extradialog_sy));
221 wxFileName filen(event.GetLinkInfo().GetHref());
222 wxString Extensions = wxString(
"txt,html,rtf");
224 if (Extensions.Find(filen.GetExt().Lower()) == wxNOT_FOUND)
225 ExtraObjInfoDlg->m_phtml->LoadPage(event.GetLinkInfo().GetHref());
227 wxTextFile txf(filen.GetFullPath());
230 if (filen.GetExt().Lower() ==
"txt") {
234 GetForegroundColour().GetAsString(wxC2S_HTML_SYNTAX) +
239 str = txf.GetFirstLine();
242 m_phtml->GetSize().x * 9 / 10);
243 contents += wrapper.GetWrapped();
246 str = txf.GetNextLine();
247 }
while (!txf.Eof());
248 if (filen.GetExt().Lower() ==
"txt") {
249 contents +=
"</font>";
252 ExtraObjInfoDlg->m_phtml->SetPage(contents);
256 ExtraObjInfoDlg->SetColorScheme();
259 ExtraObjInfoDlg->SetSize(GetSize().x - 40, GetSize().y - 40);
262 ExtraObjInfoDlg->Show(
true);
270EVT_SIZE(S57ExtraQueryInfoDlg::OnSize)
271EVT_CLOSE(S57ExtraQueryInfoDlg::OnClose)
277 const wxString& caption,
279 const wxSize& size,
long style) {
281 Create(parent,
id, caption, pos, size, style);
283bool S57ExtraQueryInfoDlg::Create(wxWindow* parent, wxWindowID
id,
284 const wxString& caption,
const wxPoint& pos,
285 const wxSize& size,
long style) {
286 long wstyle = wxDEFAULT_FRAME_STYLE | wxFRAME_FLOAT_ON_PARENT;
288 if (!wxFrame::Create(parent,
id, caption, pos, size, wstyle))
return false;
298S57ExtraQueryInfoDlg::~S57ExtraQueryInfoDlg() {
299 g_S57_extradialog_sx = GetSize().x;
300 g_S57_extradialog_sy = GetSize().y;
303void S57ExtraQueryInfoDlg::OnSize(wxSizeEvent& event) {
304 g_S57_extradialog_sx = GetSize().x;
305 g_S57_extradialog_sy = GetSize().y;
306 wxFrame::OnSize(event);
309void S57ExtraQueryInfoDlg::OnClose(wxCloseEvent& event) {
310 g_S57_extradialog_sx = GetSize().x;
311 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.