コード例 #1
0
ファイル: dlgTaskWaypoint.cpp プロジェクト: LK8000/LK8000




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;
  }
コード例 #2
0
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;
    }
};
コード例 #3
0
ファイル: dlgBasicSettings.cpp プロジェクト: LK8000/LK8000
    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);
コード例 #4
0
ファイル: dlgLoggerReplay.cpp プロジェクト: LK8000/LK8000
    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) {
コード例 #5
0
ファイル: dlgAirspaceSelect.cpp プロジェクト: LK8000/LK8000
    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;
コード例 #6
0
ファイル: dlgFontEdit.cpp プロジェクト: alberiolima/LK8000
      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];
コード例 #7
0
ファイル: dlgTopology.cpp プロジェクト: acasadoalonso/LK8000
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;
  }
コード例 #8
0
		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) {
コード例 #9
0
    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,