private void favmgrbtnEdit_Click(object sender, EventArgs e) { Double dlon, dlat; _daddy.GetInitialCoordinates(out dlat, out dlon); if (ParameterObject.SplitLongitudeLatitude(favmgrtextBox2.Text, ref dlon, ref dlat)) { // Ok tout va bien } else { dlon = _daddy.HomeLon; dlat = _daddy.HomeLat; } List <ParameterObject> lst = new List <ParameterObject>(); lst.Add(new ParameterObject(ParameterObject.ParameterType.String, favmgrtextBox1.Text, "nme", label1.Text)); lst.Add(new ParameterObject(ParameterObject.ParameterType.Coordinates /*good*/, dlat.ToString() + " " + dlon.ToString(), "latlon", label2.Text, _daddy.GetTranslator().GetString("TooltipParamLatLon").Replace("#", "\r\n"))); ParametersChanger changer = new ParametersChanger(); changer.HandlerDisplayCoord = _daddy.HandlerToDisplayCoordinates; changer.DisplayCoordImage = _daddy.GetImageSized("Earth"); changer.Title = _daddy.GetTranslator().GetString("DlgFavManager"); changer.BtnCancel = _daddy.GetTranslator().GetString("BtnCancel"); changer.BtnOK = _daddy.GetTranslator().GetString("BtnOk"); changer.ErrorFormater = _daddy.GetTranslator().GetString("ErrWrongParameter"); changer.ErrorTitle = _daddy.GetTranslator().GetString("Error"); changer.Parameters = lst; changer.Font = this.Font; changer.Icon = this.Icon; if (changer.ShowDialog() == DialogResult.OK) { dlon = Double.MaxValue; dlat = Double.MaxValue; if (ParameterObject.SplitLongitudeLatitude(lst[1].Value, ref dlon, ref dlat)) { this.favmgrtextBox1.Text = lst[0].Value; this.favmgrtextBox2.Text = dlat.ToString().Replace(",", ".") + " " + dlon.ToString().Replace(",", "."); performValidityCheckAndUpdateHMI(); } } }
public bool DoItWild() { if (_Daddy != null) { List <ParameterObject> lst = new List <ParameterObject>(); lst.Add(new ParameterObject(ParameterObject.ParameterType.String, "", "expression", "Filtre de recherche")); lst.Add(new ParameterObject(ParameterObject.ParameterType.Bool, false, "titre", "Rechercher dans le titre")); lst.Add(new ParameterObject(ParameterObject.ParameterType.Bool, false, "desc", "Rechercher dans la description")); lst.Add(new ParameterObject(ParameterObject.ParameterType.Bool, true, "logs", "Rechercher dans les logs")); ParametersChanger changer = new ParametersChanger(); changer.Title = "Entrez le filtre de recherche (wildcards)"; changer.BtnCancel = "Annuler"; changer.BtnOK = "Valider"; changer.ErrorFormater = "Mauvais format de paramètre"; changer.ErrorTitle = "Erreur"; changer.Parameters = lst; changer.Font = _Daddy.Font; changer.Icon = _Daddy.Icon; if (changer.ShowDialog() == DialogResult.OK) { bool title = (changer.Parameters[1].Value == "True"); bool desc = (changer.Parameters[2].Value == "True"); bool logs = (changer.Parameters[3].Value == "True"); CustomFilterRegex fltr = new CustomFilterRegex(FilterRegex.WildcardToRegex(lst[0].Value), title, desc, logs, false); try { _Daddy._ThreadProgressBarTitle = ""; _Daddy.CreateThreadProgressBar(); _Daddy.ExecuteCustomFilter(fltr); _Daddy.KillThreadProgressBar(); } catch (Exception ex) { _Daddy.KillThreadProgressBar(); _Daddy.ShowException("Boom", "Ca a planté...", ex); } } return(true); } else { MessageBox.Show("Daddy is missing :-("); return(false); } }
/// <summary> /// /// </summary> /// <param name="daddy"></param> /// <returns></returns> static public bool EnterSpecialFeaturesKey(MainWindow daddy) { String owner = ConfigurationManager.AppSettings["owner"]; String key = ConfigurationManager.AppSettings["key"]; List <ParameterObject> lst = new List <ParameterObject>(); lst.Add(new ParameterObject(ParameterObject.ParameterType.Label, "", "owner", daddy.GetTranslator().GetString("LblSpecialFeaturesUser") + " " + owner)); lst.Add(new ParameterObject(ParameterObject.ParameterType.TextBox, key, "key", daddy.GetTranslator().GetString("LblSpecialFeaturesKey"))); ParametersChanger changer = new ParametersChanger(); changer.Title = daddy.GetTranslator().GetString("enableAdvancedMGM"); changer.BtnCancel = daddy.GetTranslator().GetString("BtnCancel"); changer.BtnOK = daddy.GetTranslator().GetString("BtnOk"); changer.ErrorFormater = daddy.GetTranslator().GetString("ErrWrongParameter"); changer.ErrorTitle = daddy.GetTranslator().GetString("Error"); changer.Parameters = lst; changer.Font = daddy.Font; changer.Icon = daddy.Icon; bool bOK = AreSpecialFeaturesEnabled(); if (changer.ShowDialog() == DialogResult.OK) { daddy.UpdateConfFile("key", lst[1].Value); bOK = AreSpecialFeaturesEnabled(); if (bOK) { daddy.MsgActionOk(daddy, daddy.GetTranslator().GetString("LblGoodKey")); } else { daddy.MsgActionWarning(daddy, daddy.GetTranslator().GetString("LblBadKeyCheater")); } } return(bOK); }
/// <summary> /// Display an HMI requesting parameters need for this form /// </summary> /// <param name="daddy">Reference to main window (MainWindow instance), used for callback purposes</param> /// <param name="bComputeSpeed">out, If true, speed will be computed from time and positions</param> /// <param name="speedColorType">out, Color type that will be used on road to display speed (only useful if bComputeSpeed is true)</param> /// <param name="singlecolor">out, Color value that will be used on road (only useful if bComputeSpeed is true and speedColorType is SingleValue or if bComputeSpeed is false)</param> /// <returns>True if parameters successfuly filled</returns> static public bool RequestParameters(MainWindow daddy, out bool bComputeSpeed, out TrackSelector.ColorType speedColorType, out Color singlecolor) { List <ParameterObject> lst = new List <ParameterObject>(); List <String> lstcompare = new List <string>(); lst.Add(new ParameterObject(ParameterObject.ParameterType.Color, Color.Red, "color1", daddy.GetTranslator().GetString("LblRouteColorDefault"))); lstcompare.Add(daddy.GetTranslator().GetString("LblSpeedGreenRed")); lstcompare.Add(daddy.GetTranslator().GetString("LblSpeedHSL")); lstcompare.Add(daddy.GetTranslator().GetString("LblSpeedUnicolor")); lst.Add(new ParameterObject(ParameterObject.ParameterType.Bool, true, "usespeed", daddy.GetTranslator().GetString("LblDisplaySpeed"))); lst.Add(new ParameterObject(ParameterObject.ParameterType.List, lstcompare, "speedcolor", daddy.GetTranslator().GetString("LblSpeedColorType"))); ParametersChanger changer = new ParametersChanger(); changer.Title = daddy.GetTranslator().GetString("FMenuDisplayGPXTrack"); changer.BtnCancel = daddy.GetTranslator().GetString("BtnCancel"); changer.BtnOK = daddy.GetTranslator().GetString("BtnOk"); changer.ErrorFormater = daddy.GetTranslator().GetString("ErrWrongParameter"); changer.ErrorTitle = daddy.GetTranslator().GetString("Error"); changer.Parameters = lst; changer.Font = daddy.Font; changer.Icon = daddy.Icon; changer.TopMost = true; if (changer.ShowDialog() == DialogResult.OK) { bComputeSpeed = bool.Parse(changer.Parameters[1].Value); speedColorType = (TrackSelector.ColorType)(changer.Parameters[2].ValueIndex); singlecolor = (Color)(changer.Parameters[0].ValueO); return(true); } else { bComputeSpeed = false; speedColorType = ColorType.SingleColor; singlecolor = Color.Red; return(false); } }
private void txtCoord_TextChanged(object sender, EventArgs e) { tbGCNAllCoords.Text = ParametersChanger.ConvertCoordinates(tbGCNCenter.Text); }
public bool DoIt() { if (_Daddy != null) { // Create a random directory (and delete existing one) String exePath = Path.GetDirectoryName(Application.ExecutablePath); string tmpDirectory = exePath + Path.DirectorySeparatorChar + "Data\\_EmptyOV2ForFrance"; if (Directory.Exists(tmpDirectory)) { try { Directory.Delete(tmpDirectory, true); } catch (Exception) { } } Directory.CreateDirectory(tmpDirectory); // Create SuperPP directory (and delete existing one) string superPPDirectory = exePath + Path.DirectorySeparatorChar + "Data\\_EmptyGPXForFrance"; if (Directory.Exists(superPPDirectory)) { try { Directory.Delete(superPPDirectory, true); } catch (Exception) { } } Directory.CreateDirectory(superPPDirectory); List <ParameterObject> lst = new List <ParameterObject>(); lst.Add(new ParameterObject(ParameterObject.ParameterType.Bool, true, "cachecache", "Créer CacheCache.db")); lst.Add(new ParameterObject(ParameterObject.ParameterType.Bool, true, "gpx", "Créer un GPX par type")); lst.Add(new ParameterObject(ParameterObject.ParameterType.Bool, true, "ggz", "Créer un GGZ global")); ParametersChanger changer = new ParametersChanger(); changer.Title = "Choix des opérations à effectuer"; changer.BtnCancel = _Daddy.GetTranslator().GetString("BtnCancel"); changer.BtnOK = _Daddy.GetTranslator().GetString("BtnOk"); changer.ErrorFormater = _Daddy.GetTranslator().GetString("ErrWrongParameter"); changer.ErrorTitle = _Daddy.GetTranslator().GetString("Error"); changer.Parameters = lst; changer.Font = _Daddy.Font; changer.Icon = _Daddy.Icon; if (changer.ShowDialog() == DialogResult.OK) { try { bool bcache = (lst[0].Value == "True"); bool bgpx = (lst[1].Value == "True"); bool bggz = (lst[2].Value == "True"); // Download SuperPP zip (in tmpdirectory String url = "http://sd-2.archive-host.com/membres/up/81061952863402030/GeoCaches.zip"; string f = tmpDirectory + Path.DirectorySeparatorChar + "GeoCaches.zip"; HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url); objRequest.Proxy = _Daddy.GetProxy(); // Là encore, on peut virer le proxy si non utilisé (NULL) HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse(); using (Stream output = File.OpenWrite(f)) using (Stream input = objResponse.GetResponseStream()) { byte[] buffer = new byte[8192]; int bytesRead; while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0) { output.Write(buffer, 0, bytesRead); } output.Close(); input.Close(); } // Unzip zip file ZipFile.ExtractToDirectory(f, tmpDirectory); // Initialise DB if not existing String fln = ""; String cachecacheprefix = "CacheCache"; int totalcachecache = 0; fln = superPPDirectory + Path.DirectorySeparatorChar + cachecacheprefix; Directory.CreateDirectory(fln); fln = Path.DirectorySeparatorChar + cachecacheprefix + Path.DirectorySeparatorChar + cachecacheprefix + ".db"; string cs = "URI=file:" + superPPDirectory + fln; using (SQLiteConnection con = new SQLiteConnection(cs)) { con.Open(); using (SQLiteCommand cmd = new SQLiteCommand(con)) { // Drop table if (bcache) { cmd.CommandText = "DROP TABLE IF EXISTS GeocacheLite"; cmd.ExecuteNonQuery(); // Create table cmd.CommandText = @"CREATE TABLE IF NOT EXISTS GeocacheLite( Code TEXT PRIMARY KEY, Name TEXT, Type TEXT, Latitude DOUBLE, Longitude DOUBLE, Difficulty TEXT, Terrain TEXT)" ; cmd.ExecuteNonQuery(); } // Convert OV2 _Daddy._ThreadProgressBarTitle = ""; _Daddy.CreateThreadProgressBar(); OV2Reader ov2 = new OV2Reader(); List <Geocache> c = new List <Geocache>(); List <Geocache> cfull = new List <Geocache>(); fln = Path.DirectorySeparatorChar + "GC CitoEvent.ov2"; if (bcache) { totalcachecache += ov2.ProcessFileSuperPP(con, cmd, tmpDirectory + fln, "Cache In Trash Out Event"); } if (bgpx || bggz) { c = ov2.ProcessFile(_Daddy, tmpDirectory + fln, "Cache In Trash Out Event", true); } if (bgpx) { _Daddy.ExportGPXStreamed(superPPDirectory + fln.Replace(".ov2", ".gpx"), c, null, new DateTime(2000, 1, 1, 0, 0, 1)); } cfull.AddRange(c); fln = Path.DirectorySeparatorChar + "GC Earthcache.ov2"; if (bcache) { totalcachecache += ov2.ProcessFileSuperPP(con, cmd, tmpDirectory + fln, "Earthcache"); } if (bgpx || bggz) { c = ov2.ProcessFile(_Daddy, tmpDirectory + fln, "Earthcache", true); } if (bgpx) { _Daddy.ExportGPXStreamed(superPPDirectory + fln.Replace(".ov2", ".gpx"), c, null, new DateTime(2000, 1, 1, 0, 0, 1)); } cfull.AddRange(c); fln = Path.DirectorySeparatorChar + "GC LetterBox.ov2"; if (bcache) { totalcachecache += ov2.ProcessFileSuperPP(con, cmd, tmpDirectory + fln, "Letterbox Hybrid"); } if (bgpx || bggz) { c = ov2.ProcessFile(_Daddy, tmpDirectory + fln, "Letterbox Hybrid", true); } if (bgpx) { _Daddy.ExportGPXStreamed(superPPDirectory + fln.Replace(".ov2", ".gpx"), c, null, new DateTime(2000, 1, 1, 0, 0, 1)); } cfull.AddRange(c); fln = Path.DirectorySeparatorChar + "GC Multi.ov2"; if (bcache) { totalcachecache += ov2.ProcessFileSuperPP(con, cmd, tmpDirectory + fln, "Multi-cache"); } if (bgpx || bggz) { c = ov2.ProcessFile(_Daddy, tmpDirectory + fln, "Multi-cache", true); } if (bgpx) { _Daddy.ExportGPXStreamed(superPPDirectory + fln.Replace(".ov2", ".gpx"), c, null, new DateTime(2000, 1, 1, 0, 0, 1)); } cfull.AddRange(c); fln = Path.DirectorySeparatorChar + "GC Mystery.ov2"; if (bcache) { totalcachecache += ov2.ProcessFileSuperPP(con, cmd, tmpDirectory + fln, "Unknown Cache"); } if (bgpx || bggz) { c = ov2.ProcessFile(_Daddy, tmpDirectory + fln, "Unknown Cache", true); } if (bgpx) { _Daddy.ExportGPXStreamed(superPPDirectory + fln.Replace(".ov2", ".gpx"), c, null, new DateTime(2000, 1, 1, 0, 0, 1)); } cfull.AddRange(c); fln = Path.DirectorySeparatorChar + "GC Traditional.ov2"; if (bcache) { totalcachecache += ov2.ProcessFileSuperPP(con, cmd, tmpDirectory + fln, "Traditional Cache"); } if (bgpx || bggz) { c = ov2.ProcessFile(_Daddy, tmpDirectory + fln, "Traditional Cache", true); } if (bgpx) { _Daddy.ExportGPXStreamed(superPPDirectory + fln.Replace(".ov2", ".gpx"), c, null, new DateTime(2000, 1, 1, 0, 0, 1)); } cfull.AddRange(c); fln = Path.DirectorySeparatorChar + "GC Virtual.ov2"; if (bcache) { totalcachecache += ov2.ProcessFileSuperPP(con, cmd, tmpDirectory + fln, "Virtual Cache"); } if (bgpx || bggz) { c = ov2.ProcessFile(_Daddy, tmpDirectory + fln, "Virtual Cache", true); } if (bgpx) { _Daddy.ExportGPXStreamed(superPPDirectory + fln.Replace(".ov2", ".gpx"), c, null, new DateTime(2000, 1, 1, 0, 0, 1)); } cfull.AddRange(c); fln = Path.DirectorySeparatorChar + "GC Webcam.ov2"; if (bcache) { totalcachecache += ov2.ProcessFileSuperPP(con, cmd, tmpDirectory + fln, "Webcam Cache"); } if (bgpx || bggz) { c = ov2.ProcessFile(_Daddy, tmpDirectory + fln, "Webcam Cache", true); } if (bgpx) { _Daddy.ExportGPXStreamed(superPPDirectory + fln.Replace(".ov2", ".gpx"), c, null, new DateTime(2000, 1, 1, 0, 0, 1)); } cfull.AddRange(c); fln = Path.DirectorySeparatorChar + "GC Wherigo.ov2"; if (bcache) { totalcachecache += ov2.ProcessFileSuperPP(con, cmd, tmpDirectory + fln, "Wherigo Cache"); } if (bgpx || bggz) { c = ov2.ProcessFile(_Daddy, tmpDirectory + fln, "Wherigo Cache", true); } if (bgpx) { _Daddy.ExportGPXStreamed(superPPDirectory + fln.Replace(".ov2", ".gpx"), c, null, new DateTime(2000, 1, 1, 0, 0, 1)); } cfull.AddRange(c); // Save GGZ fln = Path.DirectorySeparatorChar + "GC France.ggz"; if (bggz) { _Daddy.ExportGGZ(superPPDirectory + fln, cfull, new DateTime(2000, 1, 1, 0, 0, 1)); } // Delete temporary directory //Directory.Delete(tmpDirectory, true); } con.Close(); } if (bcache) { fln = superPPDirectory + Path.DirectorySeparatorChar + cachecacheprefix + Path.DirectorySeparatorChar + cachecacheprefix; // Le fichier id System.IO.StreamWriter file = new System.IO.StreamWriter(fln + ".id", false, Encoding.Default); String sdate = DateTime.Now.ToString("yyyy-MM-ddTHH:mmZ"); file.WriteLine(sdate); file.WriteLine(totalcachecache.ToString()); file.WriteLine("1.0"); file.Close(); // On zippe la cache et on crée le fichier CacheCache.id ZipFile.CreateFromDirectory( superPPDirectory + Path.DirectorySeparatorChar + cachecacheprefix, superPPDirectory + Path.DirectorySeparatorChar + cachecacheprefix + ".zip", CompressionLevel.Optimal, false); } System.Diagnostics.Process.Start(superPPDirectory); _Daddy.KillThreadProgressBar(); } catch (Exception) { _Daddy.KillThreadProgressBar(); throw; } } return(true); } else { MessageBox.Show("Daddy is missing :-("); return(false); } }
public bool DoIt() { if (_Daddy != null) { try { string[] fichiers_monkeys = new string[] { "https://www.dropbox.com/sh/vbm2svx98swen20/AAC4gad3RA5e6Fko8eXf2LNVa/7646619.zip?dl=1", "Bruno.fr", "https://www.dropbox.com/sh/vbm2svx98swen20/AADfaTi0WiPMYsDvfdTK0hpZa/MyFindsFab.zip?dl=1", "ElFIQue", "https://www.dropbox.com/sh/vbm2svx98swen20/AAAg7lraTEa01pEs6R45eFnZa/MyFinds_RGX78.zip?dl=1", "RGX78", "", "Kirdec", "", "CamCasimir" }; List <ParameterObject> lst = new List <ParameterObject>(); for (int i = 1; i < fichiers_monkeys.Length; i += 2) { if (fichiers_monkeys[i - 1] != "") { lst.Add(new ParameterObject(ParameterObject.ParameterType.Bool, true, "foo", fichiers_monkeys[i])); } } ParametersChanger changer = new ParametersChanger(); changer.Title = "Choix des PQs à traiter"; changer.BtnCancel = _Daddy.GetTranslator().GetString("BtnCancel"); changer.BtnOK = _Daddy.GetTranslator().GetString("BtnOk"); changer.ErrorFormater = _Daddy.GetTranslator().GetString("ErrWrongParameter"); changer.ErrorTitle = _Daddy.GetTranslator().GetString("Error"); changer.Parameters = lst; changer.Font = _Daddy.Font; changer.Icon = _Daddy.Icon; int nb_monkeys = 5; if (changer.ShowDialog() == DialogResult.OK) { for (int i = 0; i < lst.Count; i++) { if (lst[i].Value == "False") { fichiers_monkeys[2 * i] = ""; } } } _Daddy._ThreadProgressBarTitle = "Traitement des PQs MyFinds des Monkeys"; _Daddy.CreateThreadProgressBar(); List <String> files = new List <string>(); for (int i = 0; i < fichiers_monkeys.Length / 2; i++) { String file = fichiers_monkeys[2 * i]; if (file == "") { continue; } string localfilegpx = ""; if (file.Contains(".zip")) { string localfilezip = Guid.NewGuid().ToString() + ".zip"; MyTools.DownloadFile(file, _Daddy.GetProxy(), null, localfilezip); // On dezippe try { ZipFile.ExtractToDirectory(localfilezip, "."); using (ZipArchive archive = ZipFile.OpenRead(localfilezip)) { localfilegpx = archive.Entries[0].Name; } } catch (Exception exc2) { File.Delete(localfilezip); throw exc2; } File.Delete(localfilezip); } else { localfilegpx = Guid.NewGuid().ToString() + ".gpx"; MyTools.DownloadFile(file, _Daddy.GetProxy(), null, localfilegpx); } files.Add(localfilegpx); } Dictionary <String, Geocache> caches_trouvees_ensemble = null; Dictionary <String, Geocache> caches_communes = new Dictionary <string, Geocache>(); foreach (String file in files) { _Daddy.Log("Loading " + file); // On lit les caches Dictionary <String, Geocache> aBatch = new Dictionary <String, Geocache>(); List <Waypoint> wpts = new List <Waypoint>(); _Daddy.LoadGCFile(file, ref aBatch, ref wpts); File.Delete(file); _Daddy.Log("Loaded " + aBatch.Count.ToString() + " caches"); // On ne garde que les logs "Found it", "Attended", "Webcam Photo Taken" dans les caches! foreach (KeyValuePair <String, Geocache> pair in aBatch) { Geocache geo = pair.Value; CacheLog found_log = null; foreach (CacheLog log in geo._Logs) { if ((log._Type == "Found it") || (log._Type == "Attended") || (log._Type == "Webcam Photo Taken")) { found_log = log; break; } } geo._Logs.Clear(); geo._Logs.Add(found_log); _Daddy.Log(geo._Code + ": " + found_log._Type + " " + found_log._Date); } // On fusionne avec uniquement les caches trouvées le même jour ! if (caches_trouvees_ensemble == null) { // Les caches trouvées ensemble caches_trouvees_ensemble = aBatch; // Et les caches potentiellement communes foreach (KeyValuePair <String, Geocache> pair in aBatch) { caches_communes.Add(pair.Key, pair.Value); } } else { Dictionary <String, Geocache> newcaches = new Dictionary <string, Geocache>(); // On va stocker les caches qui ont été trouvées le même jour foreach (KeyValuePair <String, Geocache> pair in aBatch) { Geocache geo = pair.Value; // Est-ce que cette cache est déjà dans la liste commune ? // Si non, même pas la peine de se creuser la tête Geocache cache_merged = null; if (caches_trouvees_ensemble.ContainsKey(pair.Key)) { _Daddy.Log("Found a match: " + pair.Key); cache_merged = caches_trouvees_ensemble[pair.Key]; // Est-ce que ça a été trouvé à la même date ? String date_log_batch = MyTools.CleanDate(geo._Logs[0]._Date); String date_log_merge = MyTools.CleanDate(cache_merged._Logs[0]._Date); if (date_log_batch == date_log_merge) { _Daddy.Log("Found a common date: " + date_log_batch); // Ok on a un truc commun !!! newcaches.Add(pair.Key, cache_merged); } else { cache_merged = null; _Daddy.Log("Didn't find a common date: " + date_log_batch + " vs " + date_log_merge); } } // Else poubelle // On regarde si on n'a pas eu un match sur la même date if (cache_merged == null) { _Daddy.Log("Check if it is a common cache"); // Alors on met à jour caches_communes si besoin if (caches_communes.ContainsKey(pair.Key)) { _Daddy.Log("Common cache!"); // On met à jour les fichiers et les logs Geocache cache_common = caches_communes[pair.Key]; cache_common._origin.AddRange(pair.Value._origin); cache_common._Logs.Add(pair.Value._Logs[0]); _Daddy.Log("Updated!"); } else { _Daddy.Log("Not common (so far)"); // On ajoute juste la cache caches_communes.Add(pair.Key, pair.Value); } } } // On remplace la liste mergée caches_trouvees_ensemble.Clear(); aBatch.Clear(); caches_trouvees_ensemble = newcaches; } } _Daddy.KillThreadProgressBar(); SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "CSV (*.csv)|*.csv"; saveFileDialog1.RestoreDirectory = true; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { String fichier_csv = saveFileDialog1.FileName; FileInfo fi = new FileInfo(fichier_csv); Directory.SetCurrentDirectory(fi.Directory.ToString()); String fileRadix = fi.Name.ToString(); int nb_max = 3 + 2 * nb_monkeys; System.IO.StreamWriter file = new System.IO.StreamWriter(fileRadix, false, Encoding.Default); _Daddy.Log("Create common found msg"); EcritLigne(file, new object[] { "LISTE DES CACHES COMMUNES TROUVEES LE MEME JOUR", caches_trouvees_ensemble.Count }, nb_max); foreach (KeyValuePair <String, Geocache> pair in caches_trouvees_ensemble) { // Longueur max arguments : 3 Geocache geo = pair.Value; EcritLigne(file, new object[] { geo._Code, geo._Name.Replace(";", ","), geo._Logs[0]._Date }, nb_max); } _Daddy.Log("Create common msg"); EcritLigne(file, new object[] { "LISTE DES CACHES COMMUNES MAIS NON TROUVEES LE MEME JOUR" }, nb_max); foreach (KeyValuePair <String, Geocache> pair in caches_communes) { Geocache geo = pair.Value; if (geo._Logs.Count >= 2) { // Longueur max arguments : 3 + 2*nb_monkeys List <object> os = new List <object>(); os.Add(geo._Code); os.Add(geo._Name.Replace(";", ",")); List <String> dates = new List <String>(); // On va parcourir les monkeys dans l'ordre et voir s'ils sont présents for (int i = 0; i < fichiers_monkeys.Length / 2; i++) { String monkey = fichiers_monkeys[2 * i + 1]; String date = ""; foreach (CacheLog log in geo._Logs) { if (log._User.ToLower() == monkey.ToLower()) { date = MyTools.CleanDate(log._Date); dates.Add(date); } } if (date != "") { os.Add(monkey); os.Add(date); } else { os.Add(monkey); os.Add(" "); } } // On recherche les doublons var duplicates = dates.GroupBy(a => a).SelectMany(ab => ab.Skip(1).Take(1)).ToList(); if (duplicates.Count() != 0) { os.Add("MonkeyFind"); } else { os.Add("NotMonkey"); } EcritLigne(file, os.ToArray(), nb_max); } } file.Close(); } // Exclure des caches affichées les caches de caches_communes ET caches_trouvees_ensemble // En gros toute cache qui a été trouvée par au moins un membre doit être exclue HashSet <String> hs = new HashSet <String>(); foreach (KeyValuePair <String, Geocache> pair in caches_communes) { hs.Add(pair.Key); } foreach (KeyValuePair <String, Geocache> pair in caches_trouvees_ensemble) { hs.Add(pair.Key); } CustomFilterExcludeSelection fltr = new CustomFilterExcludeSelection(hs); _Daddy.ExecuteCustomFilter(fltr); return(true); } catch (Exception exc) { _Daddy.KillThreadProgressBar(); String msg = _Daddy.GetTranslator().GetString("ErrFilter") + ": " + exc.Message; MyMessageBox.Show(msg, _Daddy.GetTranslator().GetString("ErrTitle"), MessageBoxIcon.Exclamation, _Daddy.GetTranslator()); return(false); } } else { MessageBox.Show("Daddy is missing :-("); return(false); } }
void BtnGCNGUpdateClick(object sender, EventArgs e) { String fct = "updatepublishnotifications"; try { if (!SpecialFeatures.SpecialFeaturesMgt.AreSpecialFeaturesEnabled()) { return; } CookieContainer cookieJar = _daddy.CheckGCAccount(true, false); if (cookieJar == null) { return; } List <GCNotification> associatedGCN; List <String> ids = GetSelectedIds(out associatedGCN); if (ids.Count == 0) { _daddy.MsgActionWarning(this, _daddy.GetTranslator().GetString("LblErrorNoSelectionElt")); return; } List <ParameterObject> lst = new List <ParameterObject>(); lst.Add(new ParameterObject(ParameterObject.ParameterType.Coordinates /*good*/, _daddy.GetInitialCoordinates(), "latlon", _daddy.GetTranslator().GetString("ParamCenterLatLon"), _daddy.GetTranslator().GetStringM("TooltipParamLatLon"))); ParametersChanger changer = new ParametersChanger(); changer.HandlerDisplayCoord = _daddy.HandlerToDisplayCoordinates; changer.DisplayCoordImage = _daddy.GetImageSized("Earth"); changer.Title = _daddy.GetTranslator().GetString("updatepublishnotifications"); changer.BtnCancel = _daddy.GetTranslator().GetString("BtnCancel"); changer.BtnOK = _daddy.GetTranslator().GetString("BtnOk"); changer.ErrorFormater = _daddy.GetTranslator().GetString("ErrWrongParameter"); changer.ErrorTitle = _daddy.GetTranslator().GetString("Error"); changer.Parameters = lst; changer.Font = _daddy.Font; changer.Icon = _daddy.Icon; // Force creation du get handler on control changer.CreateControls(); _daddy._cacheDetail._gmap.ControlTextLatLon = changer.CtrlCallbackCoordinates; if (changer.ShowDialog() == DialogResult.OK) { _daddy._cacheDetail._gmap.ControlTextLatLon = null; Double dlon = Double.MaxValue; Double dlat = Double.MaxValue; if (ParameterObject.SplitLongitudeLatitude(lst[0].Value, ref dlon, ref dlat)) { foreach (String id in ids) { NotificationsManager.UpdateNotificationsImpl(_daddy, id, cookieJar, dlat, dlon); } _daddy.MsgActionDone(this); } } else { _daddy._cacheDetail._gmap.ControlTextLatLon = null; } } catch (Exception ex) { _daddy.ShowException("", _daddy.GetTranslator().GetString(fct), ex); } }
public bool GenerateFieldNotes(bool bGetSelOnly, bool bAutoFile, ref String field_notes, DateTime deb, DateTime fin) { // Liste de commentaires par défaut List <String> l = new List <string>(); l.Add("Jolie cache, merci pour la découverte du lieu ! Merci pour la cache !"); l.Add("Trouvée, mais c'était pas évident. Merci pour la cache !"); l.Add("Merci pour cette cache et la promenade. Merci pour la cache !"); l.Add("Une belle journée de géocaching qui m'a permis de trouver de nouvelles caches, merci. Merci pour la cache !"); l.Add("Cache trouvée rapidement, sympa comme endroit. Merci pour la cache !"); l.Add("Une de plus au compteur, je crois que je suis devenu accro. Merci pour la cache !"); l.Add("Merci pour la cache !"); l.Add("En promenade dans le coin j'en profite pour faire des caches. Merci pour la cache !"); l.Add("J'ai un peu cherché pour celle-ci je ne devais pas être trop inspiré. Merci pour la cache !"); l.Add("Très bon emplacement pour la cache. Merci pour la cache !"); l.Add("Merci pour m'avoir montré cet endroit. Merci pour la cache !"); l.Add("Jolie découverte, c'est sympa. Merci pour la cache !"); l.Add("Un coin cool, j'aime beaucoup. Merci pour la cache !"); l.Add("Etrangement très calme, pas de problème. Merci pour la cache !"); l.Add("Je sens que je suis sur une bonne série, pas de problème. Merci pour la cache !"); l.Add("Relativement facile à trouver, cool. Merci pour la cache !"); l.Add("Rapidement délogée. Merci pour la cache !"); l.Add("Et voilà, encore une cache, cool. Merci pour la cache !"); l.Add("Je sens que j'ai un bon fluide aujourd'hui. Merci pour la cache !"); l.Add("Trouvée sans trop de difficulté. Merci pour la cache !"); l.Add("Des gens au loin, sûrement des moldus. Merci pour la cache !"); l.Add("Je devais dormir j'ai mis du temps à la voir celle-là. Merci pour la cache !"); l.Add("Bonne coordonnées, super. Merci pour la cache !"); l.Add("J'ai un peu tourné en rond à cause de mon GPS capricieux. Merci pour la cache !"); l.Add("Et une boite de plus, cool. Merci pour la cache !"); l.Add("Et hop main mise sur la boite et le logbook. Merci pour la cache !"); l.Add("endroit sympa qui mérite le détour. Merci pour la cache !"); l.Add("Merci au poseur pour cette cache. Merci pour la cache !"); l.Add("En route vers la suivante, sympa. Merci pour la cache !"); l.Add("Et on continue la promenade. Merci pour la cache !"); // On le fait pour les caches affichées List <Geocache> caches = null; if (bGetSelOnly) { caches = _Daddy.GetSelectedCaches(); } else { caches = _Daddy.GetDisplayedCaches(); } if (caches.Count == 0) { return(false); } // On demande la date de début et de fin du run List <ParameterObject> lst = new List <ParameterObject>(); lst.Add(new ParameterObject(ParameterObject.ParameterType.Label, "", "nb", caches.Count.ToString() + " caches vont être traitées !")); lst.Add(new ParameterObject(ParameterObject.ParameterType.Date, DateTime.Now, "date", "Date de début")); lst.Add(new ParameterObject(ParameterObject.ParameterType.Date, DateTime.Now, "date", "Date de fin")); ParametersChanger changer = new ParametersChanger(); changer.Title = "Période du run ?"; changer.BtnCancel = _Daddy.GetTranslator().GetString("BtnCancel"); changer.BtnOK = _Daddy.GetTranslator().GetString("BtnOk"); changer.ErrorFormater = _Daddy.GetTranslator().GetString("ErrWrongParameter"); changer.ErrorTitle = _Daddy.GetTranslator().GetString("Error"); changer.Parameters = lst; changer.Font = _Daddy.Font; changer.Icon = _Daddy.Icon; bool bDateDefined = false; if ((deb != DateTime.MinValue) && (fin != DateTime.MinValue)) { bDateDefined = true; } else { // On affiche le calendrier des trouvailles DisplayFoundCalendar(true); } if (bDateDefined || (changer.ShowDialog() == DialogResult.OK)) { if (bDateDefined == false) { deb = (DateTime)(lst[1].ValueO); fin = (DateTime)(lst[2].ValueO); //MSG(deb.ToString("yyyy-MM-ddT00:00:1Z")); } // Nombre de jours du run if (deb > fin) { _Daddy.MSG("La date de début doit être antérieure à la date de fin !"); return(false); } int nbJours = (int)((fin - deb).TotalDays) + 1; int index = 0; int cachesperday = (int)((double)(caches.Count) / (double)nbJours + 1.0); DateTime dateCache = deb; SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "Field note (*.txt)|*.txt"; saveFileDialog1.FileName = "geocache_visits.txt"; saveFileDialog1.RestoreDirectory = true; if (bAutoFile) { String exePath = Path.GetDirectoryName(Application.ExecutablePath); saveFileDialog1.FileName = exePath + Path.DirectorySeparatorChar + Guid.NewGuid().ToString(); } if (bAutoFile || (saveFileDialog1.ShowDialog() == DialogResult.OK)) { FileInfo fi = new FileInfo(saveFileDialog1.FileName); field_notes = saveFileDialog1.FileName; Directory.SetCurrentDirectory(fi.Directory.ToString()); String fileRadix = fi.Name.ToString(); System.IO.StreamWriter file = new System.IO.StreamWriter(fileRadix, false, System.Text.Encoding.GetEncoding("iso-8859-8")); foreach (Geocache geo in caches) { String comment = l[MyTools.RandomNumber(l.Count - 1)]; file.WriteLine(geo._Code + "," + dateCache.ToString("yyyy-MM-ddT00:00Z") + "," + "Found it," + "\"" + comment + "\""); index++; if (index >= cachesperday) { // Jour suivant index = 0; dateCache = dateCache.AddDays(1.0); } } file.Close(); } } return(true); }
public bool DoItCompleteFoundIt() { if (_Daddy != null) { String msg = ""; bool bFilterOk = false; bool bZoneOk = false; DialogResult dialogResult; if (CheckIfAreaIsDefined(ref bFilterOk, ref bZoneOk) == false) { if (!bZoneOk) { // La zone n'est pas définie, on informe ! msg = "ATTENTION ! Aucune zone valide n'est définie ! Voulez-vous en définir une (oui) ou continuer sans filtre de zone (non) ?"; dialogResult = MessageBox.Show(msg, _Daddy.GetTranslator().GetString("AskConfirm"), MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dialogResult == DialogResult.Yes) { // On définit la zone et on s'arrête là. return(DefineArea()); } // Sinon on continue, roule ma poule } else if (!bFilterOk) { // La zone est définie mais le filtre n'est pas activé msg = "ATTENTION ! Une zone est définie mais le filtre n'est pas activé ! Voulez-vous l'activer (oui) ou continuer sans filtre de zone (non) ?"; dialogResult = MessageBox.Show(msg, _Daddy.GetTranslator().GetString("AskConfirm"), MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dialogResult == DialogResult.Yes) { // On active le filtre CheckBox cb = GetcbFilterArea(); if (cb != null) { cb.Checked = true; } if ((cb == null) || (cb.Checked == false)) { // WTF !!! msg = "ATTENTION ! Impossible d'activer le filtre ! Voulez-vous néanmoins continuer ?"; dialogResult = MessageBox.Show(msg, _Daddy.GetTranslator().GetString("AskConfirm"), MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dialogResult != DialogResult.Yes) { return(false); } } } // Sinon on continue, roule ma poule } } // filtre sur zone / tradi / D4T4 -> complete les logs -> filtre les logs -> crée les notes -> logge) msg = "Les opération suivantes vont être réalisées séquentiellement :\r\n"; msg += "- Filtrage des caches affichées pour ne garder que les Traditionnelles non trouvées avec une D < 4 et un T < 4. Possibilité d'exécuter préalablement le filtre défini dans MGM\r\n"; msg += "- Affichage du calendrier des trouvailles\r\n"; msg += "- Définition du type de notes de terrain : fichier temporaire ou choisi manuellement (il sera alors conservé)\r\n"; msg += "- Demande de la date de début et de fin souhaitées pour la création des notes de terrain\r\n"; msg += "- Récupération des derniers logs des caches résultantes du filtre précédent\r\n"; msg += "- Filtrage pour garder uniquement les caches dont le dernier log est un Found It\r\n"; msg += "- Confirmation pour continuer\r\n"; msg += "- Création des notes de terrain\r\n"; msg += "- Ouverture de la fenêtre de log sur ces notes de terrain\r\n"; msg += "Êtes-vous d'accord pour continuer ?"; dialogResult = MessageBox.Show(msg, _Daddy.GetTranslator().GetString("AskConfirm"), MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dialogResult != DialogResult.Yes) { return(false); } // On fait un préfiltre pour garder uniquement les candidats // On se moque des logs pour l'instant CustomFilterFoundRecently2 fltr = new CustomFilterFoundRecently2(true, true); _Daddy.ExecuteCustomFilter(fltr); // Ok on a fait un peu le ménage mais il se peut qu'il y ait beaucoup de caches List <Geocache> caches = null; caches = _Daddy.GetDisplayedCaches(); if (caches.Count == 0) { _Daddy.MSG("Le filtre n'a retourné aucune cache valide !"); return(false); } // On affiche le calendrier des trouvailles DisplayFoundCalendar(true); bool bAutoFile = false; DateTime deb = DateTime.MinValue; DateTime fin = DateTime.MinValue; // On demande la date de début et de fin du run List <ParameterObject> lst = new List <ParameterObject>(); lst.Add(new ParameterObject(ParameterObject.ParameterType.Label, "", "nb", caches.Count.ToString() + " caches vont être mises à jour !")); lst.Add(new ParameterObject(ParameterObject.ParameterType.Bool, true, "autofile", "Notes de terrain temporaires")); lst.Add(new ParameterObject(ParameterObject.ParameterType.Date, DateTime.Now, "date", "Date de début")); lst.Add(new ParameterObject(ParameterObject.ParameterType.Date, DateTime.Now, "date", "Date de fin")); ParametersChanger changer = new ParametersChanger(); changer.Title = "Utiliser des notes de terrain temporaires ?"; changer.BtnCancel = _Daddy.GetTranslator().GetString("BtnCancel"); changer.BtnOK = _Daddy.GetTranslator().GetString("BtnOk"); changer.ErrorFormater = _Daddy.GetTranslator().GetString("ErrWrongParameter"); changer.ErrorTitle = _Daddy.GetTranslator().GetString("Error"); changer.Parameters = lst; changer.Font = _Daddy.Font; changer.Icon = _Daddy.Icon; if (changer.ShowDialog() == DialogResult.OK) { bAutoFile = (lst[1].Value == "True"); deb = (DateTime)(lst[2].ValueO); fin = (DateTime)(lst[3].ValueO); // Nombre de jours du run if (deb > fin) { _Daddy.MSG("La date de début doit être antérieure à la date de fin !"); return(false); } } else { return(false); } // On complète les caches avec les derniers logs // 00 : All // 01 : DateCreation // 02 : Owner // 03 : Status // 04 : Difficulty // 05 : Terrain // 06 : Description // 07 : Container // 08 : Hint // 09 : Attributes // 10 : Logs // 11 : Contry // 12 : State // 13 : Statistics // 14 : Basic info (name, url, coordinates) bool[] parameters = new bool[15]; parameters[0] = false; parameters[1] = false; parameters[2] = true; parameters[3] = false; parameters[4] = false; parameters[5] = false; parameters[6] = false; parameters[7] = false; parameters[8] = false; parameters[9] = false; parameters[10] = true; parameters[11] = false; parameters[12] = false; parameters[13] = false; parameters[14] = false; _Daddy.CompleteSelectedCaches(ref caches, parameters, true); // On conserve seulement les caches avec des logs found it en dernier fltr = new CustomFilterFoundRecently2(true, false); _Daddy.ExecuteCustomFilter(fltr); // Ok on a fait un peu le ménage mais il se peut qu'il y ait beaucoup de caches caches = _Daddy.GetDisplayedCaches(); if (caches.Count == 0) { _Daddy.MSG("Le filtre n'a retourné aucune cache valide !"); return(false); } msg = caches.Count.ToString() + " caches vont être loggées !"; dialogResult = MessageBox.Show(msg, _Daddy.GetTranslator().GetString("AskConfirm"), MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dialogResult != DialogResult.Yes) { return(false); } // On génère les field notes sur toutes les caches affichées String field_notes = ""; if (GenerateFieldNotes(false, bAutoFile, ref field_notes, deb, fin)) { // On lance l'IHM des field notes FieldNotesHMI fnHMI = new FieldNotesHMI(_Daddy, field_notes); fnHMI.Show(); if (bAutoFile && File.Exists(field_notes)) { File.Delete(field_notes); } return(true); } return(false); } else { MessageBox.Show("Daddy is missing :-("); return(false); } }
private void btnSave_Click(object sender, EventArgs e) { try { Object sel = cbDBListstartupconf.SelectedItem; if (sel is DatabaseOfFiles) // we overwrite existing DB { DatabaseOfFiles db = (DatabaseOfFiles)sel; foreach (ListViewItem item in listView1startupconf.Items) { if (item.Checked) // check = keep it { db._Files.Add(item.Tag.ToString()); } } // we look for existing DB ListTextCoord b = _daddy.GetBookmarks(); foreach (DatabaseOfFiles edb in b._Databases) { if (edb._Id == db._Id) { edb._Files = db._Files; break; } } _daddy.SaveBookmarks(b); } else // we create a new db { DatabaseOfFiles db = new DatabaseOfFiles(); foreach (ListViewItem item in listView1startupconf.Items) { if (item.Checked) // check = keep { db._Files.Add(item.Tag.ToString()); } } // and now the name List <ParameterObject> lst = new List <ParameterObject>(); lst.Add(new ParameterObject(ParameterObject.ParameterType.String, "", "name", _daddy.GetTranslator().GetString("LblName"))); ParametersChanger changer = new ParametersChanger(); changer.Title = _daddy.GetTranslator().GetString("LblDatabase"); changer.BtnCancel = _daddy.GetTranslator().GetString("BtnCancel"); changer.BtnOK = _daddy.GetTranslator().GetString("BtnOk"); changer.ErrorFormater = _daddy.GetTranslator().GetString("ErrWrongParameter"); changer.ErrorTitle = _daddy.GetTranslator().GetString("Error"); changer.Parameters = lst; changer.Font = this.Font; changer.Icon = this.Icon; if (changer.ShowDialog() == DialogResult.OK) { db._Name = lst[0].Value; ListTextCoord b = _daddy.GetBookmarks(); b._Databases.Add(db); _daddy.SaveBookmarks(b); int i = cbDBListstartupconf.Items.Add(db); cbDBListstartupconf.SelectedIndex = i; _daddy.UpdateMenuWithDB(); } } } catch (Exception exc) { _daddy.ShowException("", "Saving files", exc); } }