static CallBackTableEntry_t CallBackTable[]={ ClickNotifyCallbackEntry(OnMoveClicked), ClickNotifyCallbackEntry(OnSelectClicked), ClickNotifyCallbackEntry(OnDetailsClicked), ClickNotifyCallbackEntry(OnRemoveClicked), ClickNotifyCallbackEntry(OnCloseClicked), ClickNotifyCallbackEntry(OnStartPointClicked), ClickNotifyCallbackEntry(OnMoveAfterClicked), ClickNotifyCallbackEntry(OnMoveBeforeClicked), DataAccessCallbackEntry(OnAATEnabled), ClickNotifyCallbackEntry(OnTaskRulesClicked), OnPaintCallbackEntry(OnTaskPointPicto), EndCallBackEntry() }; void dlgTaskWaypointShowModal(int itemindex, int tasktype, bool addonly, bool Moveallowed){ wf = dlgLoadFromXML(CallBackTable, ScreenLandscape ? IDR_XML_TASKWAYPOINT_L : IDR_XML_TASKWAYPOINT_P); if (ISPARAGLIDER) { if(DoOptimizeRoute()) AATEnabled=TRUE; EnableMultipleStartPoints=false; }
namespace dlgBlueFlyConfig { WndForm *wfDlg; PDeviceDescriptor_t pDevice; bool Init = true; const TCHAR* lstPageName [] = { _T("1"), _T("2"), _T("3") }; typedef std::vector<WindowControl*> lstPageWnd_t; lstPageWnd_t lstPageWnd; unsigned CurrentPage = 0; typedef std::map<DataField*, std::tstring> DataField2Parameter_t; DataField2Parameter_t AssocFieldParam; void NextPage(int Step) { if( ((CurrentPage+Step) >= 0) && ((CurrentPage+Step) < lstPageWnd.size()) ) { lstPageWnd[CurrentPage]->Close(); CurrentPage+=Step; lstPageWnd[CurrentPage]->Show(); WindowControl * pWnd = wfDlg->FindByName(_T("cmdNext")); if(pWnd) { pWnd->SetVisible(CurrentPage<(lstPageWnd.size()-1)); } pWnd = wfDlg->FindByName(_T("cmdPrev")); if(pWnd) { pWnd->SetVisible(CurrentPage>0); } TCHAR szTmp[50] = {0}; _stprintf(szTmp, _T("BlueFlyVario %d/%d"), CurrentPage+1, lstPageWnd.size()); wfDlg->SetCaption(szTmp); } } void OnClose(WindowControl * Sender) { (void)Sender; wfDlg->SetModalResult(mrOK); } void OnNextClicked(WindowControl * Sender) { (void)Sender; NextPage(+1); } void OnPrevClicked(WindowControl * Sender) { (void)Sender; NextPage(-1); } void OnParamData(DataField *Sender, DataField::DataAccessKind_t Mode) { if(Init) { return; } DataField2Parameter_t::iterator It; switch(Mode){ case DataField::daGet: break; case DataField::daPut: case DataField::daChange: It = AssocFieldParam.find(Sender); if(It != AssocFieldParam.end()) { CHardwareParameters& Parameters = gHardwareParameters[pDevice]; CHardwareParameter& Param = Parameters.GetParameter(It->second); switch(Param.Type()) { case TYPE_BOOLEAN: Param = Sender->GetAsBoolean(); break; case TYPE_DOUBLE: Param = Sender->GetAsFloat(); break; case TYPE_INT: case TYPE_INTOFFSET: case TYPE_INTLIST: Param = Sender->GetAsInteger(); break; } if(pDevice && pDevice->Com) { Parameters.UpdateDevice(Param, pDevice->Com); } } break; case DataField::daInc: case DataField::daDec: case DataField::daSpecial: break; } } CallBackTableEntry_t CallBackTable[] = { ClickNotifyCallbackEntry(OnClose), ClickNotifyCallbackEntry(OnNextClicked), ClickNotifyCallbackEntry(OnPrevClicked), DataAccessCallbackEntry(OnParamData), EndCallBackEntry() }; void FillProperty(CHardwareParameters::value_type& Val) { if(!wfDlg) return; CHardwareParameter& Param = Val.second; WndProperty* pWnd = (WndProperty*)wfDlg->FindByName(Param.Code().c_str()); if(pWnd) { DataField* pData = pWnd->GetDataField(); if(pData) { AssocFieldParam[pData] = Param.Code(); switch(Param.Type()) { case TYPE_BOOLEAN: pData->Set(Param.ValueBool()); break; case TYPE_DOUBLE: pData->SetMax((double)Param.Max()); pData->SetMin((double)Param.Min()); pData->Set(Param.ValueDouble()); break; case TYPE_INT: case TYPE_INTOFFSET: pData->SetMax((int)Param.Max()); pData->SetMin((int)Param.Min()); pData->Set(Param.ValueInt()); break; case TYPE_INTLIST: pData->SetMax((int)Param.Max()); pData->SetMin((int)Param.Min()); pData->Set(Param.ValueInt()); break; } } pWnd->RefreshDisplay(); } } int Show(DeviceDescriptor_t *d) { int nRet = IdCancel; TCHAR filename[MAX_PATH]; const TCHAR *resName = NULL; pDevice = d; Init = true; if (ScreenLandscape) { LocalPathS(filename, TEXT("dlgBlueFlyConfig.xml")); resName = TEXT("IDR_XML_BLUEFLYCONFIG"); } else { LocalPathS(filename, TEXT("dlgBlueFlyConfig_L.xml")); resName = TEXT("IDR_XML_BLUEFLYCONFIG_L"); } wfDlg = dlgLoadFromXML(CallBackTable, filename, resName); if (wfDlg) { // build list of page WindowConrol* lstPageWnd.clear(); lstPageWnd.reserve(std::distance(std::begin(lstPageName), std::end(lstPageName))); std::transform(std::begin(lstPageName), std::end(lstPageName), std::inserter(lstPageWnd, lstPageWnd.begin()), std::bind(&WndForm::FindByName, wfDlg, _1)); if(!lstPageWnd.empty()) { // Show First Page CurrentPage=0; NextPage(0); // Hide All Next Page std::for_each(++lstPageWnd.begin(), lstPageWnd.end(), std::bind(&WindowControl::Close, _1)); } // Init Enum WndProperty WndProperty* pWnd = (WndProperty*)wfDlg->FindByName(_T("BOM")); if(pWnd) { DataFieldEnum* pData =(DataFieldEnum*)pWnd->GetDataField(); if(pData) { pData->addEnumText(_T("BlueFlyVario")); pData->addEnumText(_T("LK8EX1")); pData->addEnumText(_T("LX")); pData->addEnumText(_T("FlyNet")); } } // Set Value to all WndProperty CHardwareParameters& HardwareParameters = gHardwareParameters[pDevice]; AssocFieldParam.clear(); std::for_each(HardwareParameters.begin(), HardwareParameters.end(), std::ptr_fun(FillProperty)); Init = false; if (wfDlg->ShowModal(true)) { nRet = IdOk; } AssocFieldParam.clear(); lstPageWnd.clear(); delete wfDlg; wfDlg = NULL; pDevice = NULL; } return nRet; } };
case DataField::daPut: if (fabs(lastRead-Sender->GetAsFloat()) >= 1.0){ lastRead = Sender->GetAsFloat(); CuSonde::setForecastTemperature(Sender->GetAsFloat()); } break; case DataField::daInc: case DataField::daDec: case DataField::daSpecial: break; } } static CallBackTableEntry_t CallBackTable[]={ DataAccessCallbackEntry(OnBugsData), DataAccessCallbackEntry(OnWingLoadingData), DataAccessCallbackEntry(OnTempData), DataAccessCallbackEntry(OnBallastData), DataAccessCallbackEntry(OnAltitudeData), DataAccessCallbackEntry(OnQnhData), ClickNotifyCallbackEntry(OnCloseClicked), ClickNotifyCallbackEntry(OnBallastDump), EndCallBackEntry() }; void dlgBasicSettingsShowModal(void){ WndProperty* wp = nullptr; wf = dlgLoadFromXML(CallBackTable, ScreenLandscape ? IDR_XML_BASICSETTINGS_L : IDR_XML_BASICSETTINGS_P);
case DataField::daChange: ReplayLogger::TimeScale = Sender->GetAsFloat(); break; case DataField::daInc: case DataField::daDec: case DataField::daSpecial: break; } } static CallBackTableEntry_t CallBackTable[]={ ClickNotifyCallbackEntry(OnStopClicked), ClickNotifyCallbackEntry(OnStartClicked), DataAccessCallbackEntry(OnRateData), ClickNotifyCallbackEntry(OnCloseClicked), EndCallBackEntry() }; void dlgLoggerReplayShowModal(void){ wf = dlgLoadFromXML(CallBackTable, IDR_XML_LOGGERREPLAY); WndProperty* wp; if (wf) { wp = (WndProperty*)wf->FindByName(TEXT("prpRate")); if (wp) {
FilterMode(false); UpdateList(); WndProperty* wp = ((WndProperty *)wf->FindByName(TEXT("prpFltType"))); if(wp && wp->GetDataField()) { wp->GetDataField()->SetAsString(CAirspaceManager::GetAirspaceTypeText(TypeFilterIdx)); wp->RefreshDisplay(); } return true; } return false; } static CallBackTableEntry_t CallBackTable[]={ DataAccessCallbackEntry(OnFilterDistance), DataAccessCallbackEntry(OnFilterDirection), DataAccessCallbackEntry(OnFilterType), OnPaintCallbackEntry(OnPaintListItem), OnListCallbackEntry(OnWpListInfo), EndCallBackEntry() }; void dlgAirspaceSelect(void) { // StartHourglassCursor(); UpLimit = 0; LowLimit = 0; ItemIndex = -1;
RedrawSampleFont(); break; case DataField::daInc: case DataField::daDec: case DataField::daSpecial: break; } } static CallBackTableEntry_t CallBackTable[]={ DataAccessCallbackEntry(OnFontPitchAndFamilyData), DataAccessCallbackEntry(OnFontItalicData), DataAccessCallbackEntry(OnFontWeightData), DataAccessCallbackEntry(OnFontHeightData), DataAccessCallbackEntry(OnFontNameData), ClickNotifyCallbackEntry(OnResetClicked), ClickNotifyCallbackEntry(OnCancelClicked), ClickNotifyCallbackEntry(OnCloseClicked), EndCallBackEntry() }; void SaveValues(const TCHAR * FontRegKey ) { // update reg key for font TCHAR sValue [256];
static void OnResetTopologyClicked(WndButton* pWnd){ ChangeZoomTopology(1,1,4); setVariables(); //LKTOKEN _@M1223_ "Topology reset to default values" MessageBoxX ( gettext(TEXT("_@M1223_")), TEXT(""), mbOk); } static CallBackTableEntry_t CallBackTable[]={ DataAccessCallbackEntry(OnTopoActiveData), ClickNotifyCallbackEntry(OnResetTopologyClicked), ClickNotifyCallbackEntry(OnCloseClicked), EndCallBackEntry() }; void dlgTopologyShowModal(void){ if (LKTopo<1) { MessageBoxX ( // LKTOKEN _@M502_ = "Only LKMaps can be configured, sorry!" gettext(TEXT("_@M502_")), TEXT(""), mbOk); return; }
break; case DataField::daPut: UpdateWind(false); break; case DataField::daChange: lastWind = Sender->GetAsFloat(); if (lastWind > 359) Sender->Set(0.0); break; default: break; } } static CallBackTableEntry_t CallBackTable[]={ DataAccessCallbackEntry(OnWindSpeedData), DataAccessCallbackEntry(OnWindDirectionData), ClickNotifyCallbackEntry(OnCancelClicked), ClickNotifyCallbackEntry(OnCloseClicked), EndCallBackEntry() }; void dlgWindSettingsShowModal(void){ TCHAR filename[MAX_PATH]; LocalPathS(filename, TEXT("dlgWindSettings.xml")); wf = dlgLoadFromXML(CallBackTable, filename, TEXT("IDR_XML_WINDSETTINGS")); if (wf) {
break; case DataField::daInc: case DataField::daDec: break; } } static void OnOptimiseClicked(WindowControl * Sender){ DoOptimise(); } static CallBackTableEntry_t CallBackTable[]={ DataAccessCallbackEntry(OnMacCreadyData), DataAccessCallbackEntry(OnRangeData), ClickNotifyCallbackEntry(OnOKClicked), ClickNotifyCallbackEntry(OnCancelClicked), ClickNotifyCallbackEntry(OnOptimiseClicked), ClickNotifyCallbackEntry(OnTargetClicked), DataAccessCallbackEntry(OnCruiseEfficiencyData), EndCallBackEntry() }; void dlgTaskCalculatorShowModal(void){ TCHAR filename[MAX_PATH]; LocalPathS(filename, TEXT("dlgTaskCalculator.xml")); wf = dlgLoadFromXML(CallBackTable,