//---------------------------------------------------------- public CResultAErreur Serialize(C2iSerializer serializer) { int nVersion = GetNumVersion(); CResultAErreur result = serializer.TraiteVersion(ref nVersion); if (!result) { return(result); } //TESTDBKEYOK if (nVersion < 1) { serializer.ReadDbKeyFromOldId(ref m_keyConfigMapDatabase, typeof(CConfigMapDatabase)); } else { serializer.TraiteDbKey(ref m_keyConfigMapDatabase); } if (serializer.Mode == ModeSerialisation.Lecture) { CConfigMapDatabase db = new CConfigMapDatabase(CContexteDonneeSysteme.GetInstance()); //TESTDBKEYOK if (!db.ReadIfExists(m_keyConfigMapDatabase)) { m_generator = null; } else { m_generator = db.MapGenerator; } } serializer.TraiteInt(ref m_nZOrder); serializer.TraiteBool(ref m_bIsVisible); List <KeyValuePair <string, object> > valeurs = new List <KeyValuePair <string, object> >(); if (m_generator != null) { foreach (KeyValuePair <string, object> kv in m_generator.ValeursVariables) { if (kv.Value != null && C2iSerializer.GetTypeSimple(kv.Value.GetType()) != C2iSerializer.EnumTypeSimple.Inconnu) { valeurs.Add(kv); } } } int nNbValeurs = valeurs.Count(); serializer.TraiteInt(ref nNbValeurs); switch (serializer.Mode) { case ModeSerialisation.Ecriture: foreach (KeyValuePair <string, object> kv in valeurs) { string strIdVar = kv.Key; object value = kv.Value; //TESTDBKEYOK serializer.TraiteString(ref strIdVar); result = serializer.TraiteObjetSimple(ref value); if (!result) { return(result); } } break; case ModeSerialisation.Lecture: if (m_generator != null) { m_generator.ClearVariables(); } for (int nVar = 0; nVar < nNbValeurs; nVar++) { string strIdVar = ""; object value = null; if (nVersion < 1) { int nIdTemp = -1; serializer.TraiteInt(ref nIdTemp); strIdVar = nIdTemp.ToString(); } else { serializer.TraiteString(ref strIdVar); } result = serializer.TraiteObjetSimple(ref value); if (!result) { return(result); } if (m_generator != null) { m_generator.SetValeurChamp(strIdVar, value); } } break; } return(result); }
//----------------------------------------------------------- public void ApplyConfig( CConfigWndMapView config, object source) { m_configAppliquee = config; CResultAErreur result = CResultAErreur.True; m_objetSource = source; CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(source); if (config.FormuleLatitude != null) { result = config.FormuleLatitude.Eval(contexteEval); if (result && result.Data is double || result.Data is int) { CenterLatitude = Convert.ToDouble(result.Data); } } if (config.FormuleLongitude != null) { result = config.FormuleLongitude.Eval(contexteEval); if (result && result.Data is double || result.Data is int) { CenterLongitude = Convert.ToDouble(result.Data); } } if (config.FormuleZoomFactor != null) { result = config.FormuleZoomFactor.Eval(contexteEval); if (result && result.Data is double || result.Data is int) { Zoom = Convert.ToDouble(result.Data); } } m_strPreserveStateKey = ""; if (config.FormulePreserveStateKey != null) { result = config.FormulePreserveStateKey.Eval(contexteEval); if (result && result.Data != null) { m_strPreserveStateKey = result.Data.ToString(); } } foreach (CConfigCalqueMap calqueConf in config.ConfigsCalques) { CRuntimeConfigMapView runtime = null; //TESTDBKEYOK m_dicRuntimes.TryGetValue(calqueConf.KeyConfigMapDatabase, out runtime); if (runtime == null) { runtime = new CRuntimeConfigMapView(); //TESTDBKEYOK runtime.KeyConfigMapDatabase = calqueConf.KeyConfigMapDatabase; } if (runtime.Generator == null) { CConfigMapDatabase configInDb = new CConfigMapDatabase(CContexteDonneeSysteme.GetInstance()); //TESTDBKEYOK if (!configInDb.ReadIfExists(calqueConf.KeyConfigMapDatabase)) { continue;//bizarre, mais ça peut arriver } runtime.Generator = configInDb.MapGenerator; } //TESTDBKEYOK m_dicRuntimes[runtime.KeyConfigMapDatabase] = runtime; runtime.IsVisible = true; runtime.Generator.ClearVariables(); foreach (CFormuleNommee formule in calqueConf.ValeursVariablesFiltre) { if (formule.Formule != null) { try { string strVal = formule.Id; // TESTDBKEYOK if (runtime.Generator.GetVariable(strVal) != null) { result = formule.Formule.Eval(contexteEval); if (result) { runtime.Generator.SetValeurChamp(strVal, result.Data); } } } catch { } } } runtime.IsCalculated = false; } if (m_strPreserveStateKey != null && m_configAppliquee != null) { string strState = C2iRegistre.GetValueInRegistreApplication(c_strCleRegistre, m_strPreserveStateKey, ""); if (strState != "") { CStringSerializer serializer = new CStringSerializer(strState, ModeSerialisation.Lecture); SerializeState(serializer); } } ShowLayers(); if (config.FormuleLatitude == null || config.FormuleLongitude == null || config.FormuleZoomFactor == null) { AutoZoomAndCenter(); } }