protected void btnSaveChoice_Click(object sender, EventArgs e) { DataAccess.AssessmentItemXChoice objXChoice = new DataAccess.AssessmentItemXChoice(); objXChoice.AssessmentItemID = AssessmentItemID; objXChoice.IsDefault = chk_ChoiceIsDefault.Checked; objXChoice.Order = Convert.ToInt32(txtChoiceOrder.Text); objXChoice.ScoreValue = Convert.ToInt32(txtScoreValue.Text); objXChoice.Value = txtChoicevalue.Text; DataAccess.AssessmentItemChoice objChoice = null; if (gIsMultipleChoice) { objChoice = new AssessmentItemChoice() { Text = txtChoicevalue.Text }; } bool res = gAssessment.Save_Assessment_Item_X_Choice(objXChoice, objChoice); if (res == false) { Set_Error_Message("An error occured during assessment item X choice save process"); } else { ListChoice.Add(objXChoice); Prepare_Choice_Section(); } }
protected void btnAddGridChoice_Click(object sender, EventArgs e) { foreach (var item in ListSubAI) { DataAccess.AssessmentItemXChoice objXChoice = new DataAccess.AssessmentItemXChoice() { AssessmentItemID = item.AssessmentItemID, IsDefault = chk_ChoiceIsDefault.Checked, Order = Convert.ToInt32(txtChoiceOrder.Text), ScoreValue = Convert.ToInt32(txtScoreValue.Text), Value = txtChoicevalue.Text }; DataAccess.AssessmentItemChoice objChoice = new AssessmentItemChoice() { Text = txtChoicevalue.Text }; objXChoice.AssessmentItemChoice = objChoice; ListChoice.Add(objXChoice); } divSaveAll.Visible = true; Prepare_Choice_Section(); }
private void Create_Choice_Grid() { StringBuilder sb = new StringBuilder(); List <DataAccess.AssessmentItemXChoice> listAdded = new List <DataAccess.AssessmentItemXChoice>(); foreach (DataAccess.AssessmentItemXChoice item in ListChoice) { DataAccess.AssessmentItemXChoice added_obj = listAdded.Find(o => o.Value == item.Value && o.ScoreValue == item.ScoreValue); List <DataAccess.AssessmentItemXChoice> listFound = ListChoice.FindAll(o => o.Value == item.Value && o.ScoreValue == item.ScoreValue); if (added_obj != null && listFound != null && listFound.Count > 1) { continue; } sb.Append("<tr>"); sb.Append("<th scope='row'>"); sb.Append(item.Order.ToString()); sb.Append("</th>"); sb.Append("<td>"); sb.Append(CommonUtilities.EditGridText(item.Value)); sb.Append("</td>"); sb.Append("<td>"); sb.Append(item.ScoreValue.ToString()); sb.Append("</td>"); sb.Append("<td>"); sb.Append(item.IsDefault.ToString()); sb.Append("</td>"); sb.Append("<td>"); sb.Append(@"<a href=javascript:DeleteItem('" + CommonUtilities.GlobalEncrypt(item.ID.ToString(), BSWSession.SessionKey) + "'); class='fa fa-remove' style='color:red;' ></a>"); sb.Append("</td>"); sb.Append("</tr>"); listAdded.Add(item); } grdChoiceBody.InnerHtml = sb.ToString(); }
/// <summary> /// Script parcourant toutes les roms d'un répertoire. /// </summary> /// <param name="romsDirectory">Répertoire contenant toutes les roms.</param> /// <param name="exportDirectory">Répertoire vers lequelle les roms validées seront exportées.</param> /// <param name="worldZones">Zones géographiques à exporter (ex : {"(U)", "(E)"}).</param> /// <param name="patchsToApply">Patchs de traduction à appliquer (ex : {"Fre", "Eng"}).</param> private static void BrowseRoms(string romsDirectory, string exportDirectory, string[] worldZones) { // Si le répertoire que l'utilisateur a spécifié n'existe pas, on balance une exception et on l'insulte. if (!Directory.Exists(romsDirectory)) { throw new Exception("Le répertoire que vous avez spécifié comme source pour les roms n'existe pas. Vous êtes mauvais."); } // Si le répertoire que l'utilisateur a spécifié n'existe pas, on balance une exception et on l'insulte un peu plus fort. if (!Directory.Exists(romsDirectory)) { throw new Exception("Le répertoire que vous avez spécifié pour l'export n'existe pas. Vous êtes très mauvais."); } // On va parcourir le dossier censé contenir les roms string[] files = Directory.GetFiles(romsDirectory); for (int i = 0; i < files.Count(); i++) { try { Console.Title = "RomRight : " + Math.Round(((i / (double)files.Count()) * 100)) + "%"; string romArchive = files[i]; if (Path.GetExtension(romArchive) == ".7z") { // Seuil de note en dessous duquel les roms ne seront pas prises int threshold = 100; // Pour éviter une sortie du buffer (fixé à 800) lors des déplacements de curseur // On clear la console de temps en temps if (Console.CursorTop > 700) { Console.Clear(); } Utils.WriteLineInLog("\n======= Parcourt de " + romArchive); string[] romFiles; // On récupère tous les fichiers de roms using (var tmp = new SevenZipExtractor(romArchive)) { romFiles = tmp.ArchiveFileNames.ToArray(); } // On va créer une liste des variations de roms, regroupées par leur nom commun // Par exemple, "Sonic 1 [!]" et "Sonic 1 (W) [b1]" seront tous deux rangés sous l'id "Sonic 1" Dictionary <string, List <RatedRom> > sortedRomsFiles = new Dictionary <string, List <RatedRom> >(); // On va trier les fichiers qu'on a récupéré foreach (string romFile in romFiles) { // Expressions régulières correspondantes aux tags () et [] Regex regexParenthesis = new Regex("\\(.*?\\)"); Regex regexBracket = new Regex("\\[.*?\\]"); // On va récupérer les noms des roms sans les variantes () et [] string uid = Path.GetFileNameWithoutExtension(romFile); uid = regexParenthesis.Replace(uid, ""); uid = regexBracket.Replace(uid, ""); uid = uid.Trim(); // Si on a encore jamais croisé cet uid, il faut créer la liste qui va contenir les noms des roms if (!sortedRomsFiles.ContainsKey(uid)) { sortedRomsFiles[uid] = new List <RatedRom>(); } // On ajoute le fichier de rom à la liste sortedRomsFiles[uid].Add(new RatedRom(Path.GetFileName(romFile), 0)); } // On va lancer le système de notation des roms qui va permettre de choisir automatiquement // la plus pertinente pour la collection. foreach (string uid in sortedRomsFiles.Keys) { foreach (RatedRom ratedRom in sortedRomsFiles[uid]) { ratedRom.Rate(worldZones); // On calcule le seuil de la rom (le plancher de centaines le plus proche de sa note) // Ex : pour une rom avec une note de 345, on aura 300. int floorMark = (int)Math.Floor(ratedRom.Mark / 100.0) * 100; // Si le seuil est plus bas, on le réhausse if (threshold < floorMark) { threshold = floorMark; } } } List <string> finalRomList = new List <string>(); // On va chercher les roms les plus pertinentes (celles qui ont eu la meilleure note) foreach (string uid in sortedRomsFiles.Keys) { List <RatedRom> topRoms = new List <RatedRom>(); int maxMark = 0; foreach (RatedRom ratedRom in sortedRomsFiles[uid]) { Utils.WriteLineInLog("--- " + ratedRom.Mark + " : " + ratedRom.RomFileName); // On ignore les roms qui ont une note inférieur au seuil if (ratedRom.Mark >= threshold) { // Si la rom actuelle a une note strictement supérieure au maximum trouvé jusqu'à maintenant if (ratedRom.Mark > maxMark) { maxMark = ratedRom.Mark; // On efface toutes les roms de la top list car on a trouvé mieux topRoms.Clear(); topRoms.Add(ratedRom); } // Si la rom actuelle a une note identique à celle max trouvée, on ajoute simplement la rom à la liste else if (ratedRom.Mark == maxMark) { topRoms.Add(ratedRom); } } } // Si l'algorithme n'a pas réussi à départager plusieurs roms, il faut demander à l'utilisateur de choisir manuellement if (topRoms.Count() > 1) { // On construit le selecteur pour que l'utilisateur choisisse ListChoice[] romChoices = new ListChoice[topRoms.Count()]; for (int j = 0; j < topRoms.Count(); j++) { romChoices[j] = new ListChoice(topRoms[j].RomFileName, topRoms[j].RomFileName); } Selecter selectBestRom = new Selecter(romChoices); // On récupère la rom choisie par l'utilisateur et on l'ajoute dans la liste finale ListChoice choosenRom = selectBestRom.Choose(); finalRomList.Add(choosenRom.Choice); } // Si on a qu'une seule rom dans le top, on la prend else if (topRoms.Count() == 1) { finalRomList.Add(topRoms[0].RomFileName); } } // On exporte les roms qui ont été sélectionnées comme les plus pertinentes using (var tmp = new SevenZipExtractor(romArchive)) { tmp.ExtractFiles(exportDirectory, finalRomList.ToArray()); } // On affiche tous les fichiers de roms foreach (string romFileName in finalRomList) { Utils.WriteLineInLog("*** " + romFileName); } } } catch (Exception e) { Utils.WriteLineInLog("Erreur lors du traitement de la rom : " + e.Message); } } }
public void ListControls(SadConsole.Input.Keyboard info) { if (info.IsKeyPressed(Keys.Up)) { if (CanScrollUp) { startIndex--; } } else if (info.IsKeyPressed(Keys.Down)) { if (CanScrollDown) { startIndex++; } } else if (info.IsKeyPressed(Keys.Left)) { if (CanPageUp) { startIndex -= 26; } else { startIndex = 0; } } else if (info.IsKeyPressed(Keys.Right)) { if (CanPageDown) { startIndex += 26; } else { startIndex = Math.Max(0, Choices.Count - 26); } } else { //If this key represents an item, then we select it foreach (var k in info.KeysPressed) { var key = k.Key; if (Keys.A <= key && key <= Keys.Z) { //A represents the first displayed item (i.e. the one at startIndex). Z represents the last displayed item (startIndex + 25) int index = (key - Keys.A) + startIndex; if (index < Choices.Count) { //Select the item ListChoice <T> selected = Choices.ToList()[index]; if (select.Invoke(selected.Value)) { Choices.Remove(selected); //If we're at the bottom of the menu and we're removing an item here, move the list view up so that we don't have empty slots if (Choices.Count > 25 && !CanPageDown) { startIndex = Choices.Count - 26; } } } break; } } } }