⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editthemedialog.cpp

📁 Powerful and Portable GPS application -- support Linux, Windows, Windows CE GPS navigation and Map m
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				//////////////////////////////////////////////////////////////////////////				// Line Visible checkbox				//////////////////////////////////////////////////////////////////////////				m_pctlLineVisible[iDetailLevel] = new wxCheckBox(this, iDetailLevel + EDITTHEMEDIALOG_MAX_DETAILLEVELS, wxT(""));								psizerDetailSpecificGrid->Add(m_pctlLineVisible[iDetailLevel],							1,							wxALIGN_RIGHT | wxLEFT,							10				);				//////////////////////////////////////////////////////////////////////////				// Line color control				//////////////////////////////////////////////////////////////////////////				m_pctlLineColor[iDetailLevel] = new ColorPickerControl(this, idColor, wxDefaultPosition, wxSize(30, 20));								psizerDetailSpecificGrid->Add(m_pctlLineColor[iDetailLevel],							1,							wxFIXED_MINSIZE | wxALIGN_RIGHT,							0				);				//////////////////////////////////////////////////////////////////////////				// Line Width text control				//////////////////////////////////////////////////////////////////////////				m_pctlLineWidth[iDetailLevel] = new wxTextCtrl(this, -1, wxT(""));				psizerDetailSpecificGrid->Add(m_pctlLineWidth[iDetailLevel],							1,							wxGROW,							0				);			}		}	}	//////////////////////////////////////////////////////////////////////////	// ok and cancel button	//////////////////////////////////////////////////////////////////////////	wxStdDialogButtonSizer* psizerButton = CreateStdDialogButtonSizer(wxOK | wxCANCEL);	psizerWnd->Add(psizerButton, 0, wxALL | wxALIGN_CENTER, 5);		//////////////////////////////////////////////////////////////////////////	// Set up the sizer	//////////////////////////////////////////////////////////////////////////	m_pctlRecordType->SetFocus();	psizerWnd->Fit(this);	SetSizer(psizerWnd);	Layout();	psizerWnd->SetSizeHints(this);		m_iLastRecordType = -1;		wxCommandEvent ev;	OnRecordTypeChange(ev);}//////////////////////////////////////////////////////////////////////////////////// \brief Ok button pressed - save settings/////////////////////////////////////////////////////////////////////////////////void EditThemeDialog::OnOk(wxCommandEvent& event){	RecordSettings();	EndModal(wxID_OK);}//////////////////////////////////////////////////////////////////////////////////// \brief Save the active settings to m_Theme/////////////////////////////////////////////////////////////////////////////////void EditThemeDialog::RecordSettings(){	m_strTheme = m_pctlThemeName->GetValue();	if (m_iLastRecordType < 0)		return;	if (m_iLastRecordType <= LAST_MISCCOLOR )		m_Theme.SetMiscColor((EMiscColor) m_iLastRecordType, m_pctlLabelColor[0]->GetColor());	else	{		int iDetailLevel;				ERecordType eRecordType = (ERecordType) (m_iLastRecordType - LAST_MISCCOLOR - 1);				for (iDetailLevel = 0; iDetailLevel < m_Theme.GetDetailLevelCount(); iDetailLevel++)		{			long lTmp;						m_Theme.SetLineColor(eRecordType, m_pctlLineColor[iDetailLevel]->GetColor(), iDetailLevel);			m_Theme.SetTextColor(eRecordType, m_pctlLabelColor[iDetailLevel]->GetColor(), iDetailLevel);					m_Theme.GetDetailSettings(iDetailLevel, eRecordType).m_bTextVisible = m_pctlLabelVisible[iDetailLevel]->GetValue();						m_pctlLabelFontSize[iDetailLevel]->GetValue().ToLong(&lTmp);			m_Theme.GetDetailSettings(iDetailLevel, eRecordType).m_iFontSize = lTmp;						m_Theme.GetDetailSettings(iDetailLevel, eRecordType).m_bLineVisible = m_pctlLineVisible[iDetailLevel]->GetValue();						m_pctlLineWidth[iDetailLevel]->GetValue().ToLong(&lTmp);			m_Theme.GetDetailSettings(iDetailLevel, eRecordType).m_iWidth = lTmp;		}	}	}//////////////////////////////////////////////////////////////////////////////////// \brief User changed feature types/////////////////////////////////////////////////////////////////////////////////void EditThemeDialog::OnRecordTypeChange(wxCommandEvent & event){	bool bIsMiscColor;	int iDetailLevel;	RecordSettings();		m_iLastRecordType = m_pctlRecordType->GetSelection();		if (m_iLastRecordType < 0)		return;	bIsMiscColor = m_iLastRecordType <= LAST_MISCCOLOR;	for (iDetailLevel = 0; iDetailLevel < m_Theme.GetDetailLevelCount(); iDetailLevel++)	{		if (iDetailLevel > 0)		{			m_pctlLineColor[iDetailLevel]->Enable(!bIsMiscColor);			m_pctlLabelColor[iDetailLevel]->Enable(!bIsMiscColor);		}		else		{			m_pctlLineColor[iDetailLevel]->Enable(!bIsMiscColor);			m_pctlLabelColor[iDetailLevel]->Enable(true);		}				m_pctlLabelVisible[iDetailLevel]->Enable(!bIsMiscColor);		m_pctlLabelFontSize[iDetailLevel]->Enable(!bIsMiscColor);		m_pctlLineVisible[iDetailLevel]->Enable(!bIsMiscColor);		m_pctlLineWidth[iDetailLevel]->Enable(!bIsMiscColor);	}	if (bIsMiscColor)	{		m_pctlLabelColor[0]->SetColor(m_Theme.GetMiscColor((EMiscColor) m_iLastRecordType));		m_pctlLineColor[0]->SetColor(*wxBLACK);		for (iDetailLevel = 1; iDetailLevel < m_Theme.GetDetailLevelCount(); iDetailLevel++)		{			m_pctlLabelColor[iDetailLevel]->SetColor(*wxBLACK);			m_pctlLineColor[iDetailLevel]->SetColor(*wxBLACK);		}	}	else	{		ERecordType eRecordType = (ERecordType) (m_iLastRecordType - LAST_MISCCOLOR - 1);		for (iDetailLevel = 0; iDetailLevel < m_Theme.GetDetailLevelCount(); iDetailLevel++)		{			bool bLabelVisible = m_Theme.GetDetailSettings(iDetailLevel, eRecordType).m_bTextVisible;			bool bLineVisible = m_Theme.GetDetailSettings(iDetailLevel, eRecordType).m_bLineVisible;						m_pctlLineColor[iDetailLevel]->SetColor(m_Theme.GetDetailSettings(iDetailLevel, eRecordType).m_clrLine);			m_pctlLabelColor[iDetailLevel]->SetColor(m_Theme.GetDetailSettings(iDetailLevel, eRecordType).m_clrText);			m_pctlLabelVisible[iDetailLevel]->SetValue(bLabelVisible);			m_pctlLabelFontSize[iDetailLevel]->SetValue(wxString::Format(wxT("%d"), m_Theme.GetDetailSettings(iDetailLevel, eRecordType).m_iFontSize));			m_pctlLabelFontSize[iDetailLevel]->Enable(bLabelVisible);			m_pctlLineVisible[iDetailLevel]->SetValue(bLineVisible);			m_pctlLineWidth[iDetailLevel]->SetValue(wxString::Format(wxT("%d"), m_Theme.GetDetailSettings(iDetailLevel, eRecordType).m_iWidth));			m_pctlLineWidth[iDetailLevel]->Enable(bLineVisible);		}	}}//////////////////////////////////////////////////////////////////////////////////// \brief User changed detail level/////////////////////////////////////////////////////////////////////////////////void EditThemeDialog::OnDetailLevelChange(wxCommandEvent & event){	OnRecordTypeChange(event);}//////////////////////////////////////////////////////////////////////////////////// \brief Creates a wxArrayString of record type names/////////////////////////////////////////////////////////////////////////////////wxArrayString EditThemeDialog::GetRecordTypeNames(){	wxArrayString strNames;	wxInt16 nRecordTypes = m_pMapControlData->GetNumRecordTypes();	wxInt16 iRecordType;		strNames.Add(wxT("Background"));	strNames.Add(wxT("Foreground"));	strNames.Add(wxT("Marker Background"));	strNames.Add(wxT("Marker Foreground"));		for (iRecordType = 0; iRecordType < nRecordTypes; iRecordType++)		strNames.Add( m_pMapControlData->GetRecordTypeDisplayName(iRecordType) );		return strNames;}//////////////////////////////////////////////////////////////////////////////////// \brief Returns the theme object/////////////////////////////////////////////////////////////////////////////////MapAppearanceSettings EditThemeDialog::GetTheme(){	return m_Theme;}//////////////////////////////////////////////////////////////////////////////////// \brief Returns the theme name/////////////////////////////////////////////////////////////////////////////////wxString EditThemeDialog::GetThemeName(){   return m_strTheme;}//////////////////////////////////////////////////////////////////////////////////// \brief Triggered when a checkbox is selected or deselected////// Enable/disable the appropriate text box/////////////////////////////////////////////////////////////////////////////////void EditThemeDialog::OnCheckBox(wxEvent & event){	if (event.GetId() < EDITTHEMEDIALOG_MAX_DETAILLEVELS)		m_pctlLabelFontSize[ event.GetId() ]->Enable( m_pctlLabelVisible[event.GetId()]->GetValue() );	else if (event.GetId() < 2 * EDITTHEMEDIALOG_MAX_DETAILLEVELS)		m_pctlLineWidth[ event.GetId() - EDITTHEMEDIALOG_MAX_DETAILLEVELS ]->Enable( m_pctlLineVisible[event.GetId() - EDITTHEMEDIALOG_MAX_DETAILLEVELS]->GetValue() );	else		wxASSERT(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -