35#include "DetailSlider.h"
37#include "OCPNPlatform.h"
40#include "ocpn_frame.h"
42extern bool g_bShowDetailSlider;
43extern int g_chart_zoom_modifier_raster;
44extern int g_chart_zoom_modifier_vector;
50EVT_KEY_DOWN(PopUpDSlide::OnKeyDown)
51EVT_MOVE(PopUpDSlide::OnMove)
52EVT_COMMAND_SCROLL_THUMBRELEASE(-1, PopUpDSlide::OnChangeValue)
53EVT_COMMAND_SCROLL_LINEUP(-1, PopUpDSlide::OnChangeValue)
54EVT_COMMAND_SCROLL_LINEDOWN(-1, PopUpDSlide::OnChangeValue)
55EVT_COMMAND_SCROLL_PAGEUP(-1, PopUpDSlide::OnChangeValue)
56EVT_COMMAND_SCROLL_PAGEDOWN(-1, PopUpDSlide::OnChangeValue)
57EVT_COMMAND_SCROLL_BOTTOM(-1, PopUpDSlide::OnChangeValue)
58EVT_COMMAND_SCROLL_TOP(-1, PopUpDSlide::OnChangeValue)
59EVT_CLOSE(PopUpDSlide::OnClose)
63 ChartFamilyEnum ChartF, const wxPoint& pos,
64 const wxSize& size,
long style,
65 const wxString& title) {
67 if (Create(parent, ID_CM93ZOOMG, ChartT, ChartF, pos, size, style, title)) {
68 m_p_DetailSlider->Connect(
69 wxEVT_KEY_DOWN, wxKeyEventHandler(PopUpDSlide::OnKeyDown), NULL,
this);
73PopUpDSlide::~PopUpDSlide() {
delete m_p_DetailSlider; }
75void PopUpDSlide::Init(
void) { m_p_DetailSlider = NULL; }
77bool PopUpDSlide::Create(wxWindow* parent, wxWindowID
id, ChartTypeEnum ChartT,
78 ChartFamilyEnum ChartF,
const wxPoint& pos,
79 const wxSize& size,
long style,
80 const wxString& title) {
85 if ((ChartType == CHART_TYPE_CM93COMP) || (ChartType == CHART_TYPE_CM93)) {
86 value = g_cm93_zoom_factor;
87 WindowText = _(
"CM93 Detail Level");
88 }
else if ((ChartType == CHART_TYPE_KAP) || (ChartType == CHART_TYPE_GEO) ||
89 (ChartFam == CHART_FAMILY_RASTER)) {
90 value = g_chart_zoom_modifier_raster;
91 WindowText = _(
"Rasterchart Zoom/Scale Weighting");
92 }
else if ((ChartType == CHART_TYPE_S57) ||
93 (ChartFam == CHART_FAMILY_VECTOR)) {
94 value = g_chart_zoom_modifier_vector;
95 WindowText = _(
"Vectorchart Zoom/Scale Weighting");
97 pPopupDetailSlider = NULL;
101 long wstyle = wxDEFAULT_DIALOG_STYLE | wxFRAME_FLOAT_ON_PARENT;
103 if (!wxFrame::Create(parent,
id, WindowText, pos, size, wstyle))
return false;
109 m_p_DetailSlider =
new wxSlider(
110 this,
id, value, minValue, maxValue, wxPoint(0, 0), wxDefaultSize,
111 wxSL_HORIZONTAL | wxSL_AUTOTICKS | wxSL_LABELS, wxDefaultValidator,
114 m_p_DetailSlider->SetSize(wxSize(350, -1));
116 m_p_DetailSlider->InvalidateBestSize();
117 wxSize bs = m_p_DetailSlider->GetBestSize();
119 m_p_DetailSlider->SetSize(wxSize(350, bs.y));
122 m_p_DetailSlider->SetValue(value);
129void PopUpDSlide::OnCancelClick(wxCommandEvent& event) {
130 g_bShowDetailSlider =
false;
134void PopUpDSlide::OnClose(wxCloseEvent& event) {
135 g_bShowDetailSlider =
false;
137 if (m_p_DetailSlider)
138 m_p_DetailSlider->Disconnect(
139 wxEVT_KEY_DOWN, wxKeyEventHandler(PopUpDSlide::OnKeyDown), NULL,
this);
141 pPopupDetailSlider = NULL;
144void PopUpDSlide::OnKeyDown(wxKeyEvent& event) {
145 int key_char =
event.GetKeyCode();
146 if (key_char == WXK_ESCAPE || key_char ==
'D') {
147 g_bShowDetailSlider =
false;
152void PopUpDSlide::OnMove(wxMoveEvent& event) {
154 wxPoint p =
event.GetPosition();
155 g_detailslider_dialog_x = p.x;
156 g_detailslider_dialog_y = p.y;
161void PopUpDSlide::OnChangeValue(wxScrollEvent& event)
164 ::wxBeginBusyCursor();
166 if ((ChartType == CHART_TYPE_CM93COMP) || (ChartType == CHART_TYPE_CM93)) {
167 g_cm93_zoom_factor = m_p_DetailSlider->GetValue();
170 parentCanvas->ReloadVP();
171 parentCanvas->Refresh();
176 if ((ChartType == CHART_TYPE_KAP) || (ChartType == CHART_TYPE_GEO) ||
177 (ChartFam == CHART_FAMILY_RASTER)) {
178 g_chart_zoom_modifier_raster = m_p_DetailSlider->GetValue();
181 if ((ChartType == CHART_TYPE_S57) || (ChartFam == CHART_FAMILY_VECTOR)) {
182 g_chart_zoom_modifier_vector = m_p_DetailSlider->GetValue();
185 gFrame->ProcessOptionsDialog(S52_CHANGED | FORCE_UPDATE, NULL);
Charts database management
Generic Chart canvas base.
ChartCanvas - Main chart display and interaction component.
Global variables stored in configuration file.