/// <summary> /// Permet de transformer les marqueurs et en faire un Latex. /// </summary> /// <param name="nameOfDocument">Nom du document</param> /// <param name="textLatex">Texte du latex (avant)</param> /// <param name="listIds">Liste des ids des QCMs</param> /// <returns>Texte transformé</returns> public static string ExportLatex(string nameOfDocument, string textLatex, List <int> listIds) { //https://stackoverflow.com/questions/8928601/how-can-i-split-a-string-with-a-string-delimiter string[] str = textLatex.Split(new string[] { MARQUE_LOOP_QUESTION, MARQUE_LOOP_BAD_ANSWER, MARQUE_LOOP_GOOD_ANSWER }, StringSplitOptions.None); if (str.Length == 7) { //https://msdn.microsoft.com/en-us/library/system.environment.username%28v=vs.110%29.aspx string stringLatex = str[0].Replace(MARQUE_AUTHOR, ValidateLatexString(Environment.UserName)).Replace(MARQUE_TITLE, ValidateLatexString(nameOfDocument)); foreach (int idQCM in listIds) { QCMController _controller = new QCMController(idQCM); foreach (KeyValuePair <int, QuestionDatas> question in _controller.GetQuestions()) { stringLatex += str[1].Replace(MARQUE_TEXT_QUESTION, ValidateLatexString(question.Value.Question)); foreach (KeyValuePair <int, ReponseDatas> reponse in question.Value.DictReponseModele) { if (!reponse.Value.BonneReponse) { stringLatex += str[2].Replace(MARQUE_TEXT_BAD_ANSWER, ValidateLatexString(reponse.Value.Reponse)); } else { stringLatex += str[4].Replace(MARQUE_TEXT_GOOD_ANSWER, ValidateLatexString(reponse.Value.Reponse)); } } stringLatex += str[5]; } } stringLatex += str[6]; return(stringLatex); } return(null); }
/// <summary> /// Permet de raffraichir la DataGridView "dgvQCM" /// </summary> public void RefreshDataGridView() { dgvQCM.Rows.Clear(); foreach (KeyValuePair <int, string> item in QCMController.GetListQCM()) { dgvQCM.Rows.Add(new string[] { item.Key.ToString(), item.Value }); } }
/// <summary> /// Constructeur /// </summary> /// <param name="idQCM">Id du QCM</param> public FrmCreateQuestionReponse(QCMController qcmController) { InitializeComponent(); QcmController = qcmController; TbxReponseTab = new TextBox[] { tbxReponse1, tbxReponse2, tbxReponse3, tbxReponse4, tbxReponse5, tbxReponse6 }; RbReponseTab = new RadioButton[] { rbBonneReponse1, rbBonneReponse2, rbBonneReponse3, rbBonneReponse4, rbBonneReponse5, rbBonneReponse6 }; lblQCM.Text = TEXT_QCM + QcmController.GetTitreQCM(); ReturnDatas = new Dictionary <string, Dictionary <string, bool> >(); }
/// <summary> /// Charge le modèle s'il existe et l'écrit dans la propriété Text de la TextBox. /// </summary> /// <param name="modelName"></param> private void LoadModel(string modelName) { //https://msdn.microsoft.com/en-us/library/system.environment.specialfolder%28v=vs.110%29.aspx if (!File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\" + FilenameModel + "\\" + modelName)) { if (!QCMController.GetListModeles().Contains(modelName)) { MessageBox.Show("Ce modèle n'existe pas !"); return; } } tbxContent.Text = File.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\" + FilenameModel + "\\" + modelName); }
/// <summary> /// S'effectue lors d'un clic sur le bouton "btnAfficherQCM" /// </summary> /// <param name="sender">Objet</param> /// <param name="e">Evenement</param> private void btnAfficherQCM_Click(object sender, EventArgs e) { if (dgvQCM.SelectedRows.Count > 0) { for (int i = 0; i < dgvQCM.SelectedRows.Count; i++) { if (dgvQCM.SelectedRows[i].Cells[0].Value != null) { QCMController.OpenFormContents(Convert.ToInt32(dgvQCM.SelectedRows[i].Cells[0].Value)); } } } }
/// <summary> /// Constructeur /// </summary> /// <param name="listModels">Liste des modèles</param> public FrmExportSelect(List <string> listModels) { InitializeComponent(); ListModel = listModels; foreach (string item in listModels) { lsbModeles.Items.Add(item); } foreach (KeyValuePair <int, string> item in QCMController.GetListQCM()) { tvQCM.Nodes.Add(item.Key.ToString(), item.Value); } }
/// <summary> /// Constructeur /// </summary> /// <param name="listSelectedIdQCMs">Liste des Ids de QCM à utiliser dans l'exportation</param> /// <param name="marques">Marques utilisées pour faire le Latex (donnée seulement pour les mettre dans la ListBox située à gauche de la vue)</param> /// <param name="filenameModel">Chemin d'accès des modèles</param> /// <param name="modelName">Nom du modèle utilisé pour l'exportation</param> public FrmExport(List <int> listSelectedIdQCMs, string[] marques, string filenameModel, string modelName) { InitializeComponent(); FilenameModel = filenameModel; this.ListSelectedIdQCMs = listSelectedIdQCMs; if (modelName != null) { LoadModel(modelName); } foreach (string item in QCMController.GetListModeles()) { tsmiModel.DropDownItems.Add(item, null, ExportToolStripMenuItem_Click); } lsbMarkers.Items.AddRange(marques); }
/// <summary> /// Evenement effectué lors d'un clic sur le bouton "btnExport" /// </summary> /// <param name="sender">Objet</param> /// <param name="e">Evenement</param> private void btnExport_Click(object sender, EventArgs e) { string stringLatex = QCMController.ExportLatex(tbxNameOfDocument.Text, tbxContent.Text, ListSelectedIdQCMs); if (stringLatex != null) { Sfd = new SaveFileDialog(); Sfd.Filter = "Format texte (*.txt) | *.txt"; if (Sfd.ShowDialog() == DialogResult.OK) { if (Sfd.FileName.Split('.').Last() != "txt") { Sfd.FileName += ".txt"; } File.WriteAllText(Sfd.FileName, stringLatex); } } else { MessageBox.Show("Le latex est incorrecte, merci de prendre exemple sur le Latex déjà créé !"); } }
/// <summary> /// Constructeur /// </summary> public FrmCreateQCM() { InitializeComponent(); QcmController = new QCMController(0); }
/// <summary> /// S'effectue lors d'un clic sur le bouton "btnExport" /// </summary> /// <param name="sender">Objet</param> /// <param name="e">Evenement</param> private void btnExport_Click(object sender, EventArgs e) { QCMController.Export(); }
/// <summary> /// S'effectue lors d'un clic sur le ToolStripMenuItem "helpToolStripMenuItem" /// </summary> /// <param name="sender">Objet</param> /// <param name="e">Evenement</param> public void helpToolStripMenuItem_Click(object sender, EventArgs e) { QCMController.Help(); }
/// <summary> /// Constructeur /// </summary> /// <param name="idQCM">Id du QCM affiché</param> public FrmInformations(int idQCM) { QcmController = new QCMController(idQCM); IdQCM = idQCM; LoadInformations(); }
/// <summary> /// Constructeur /// </summary> /// <param name="controller">Controlleur</param> public FrmInformations(QCMController controller) { QcmController = controller; IdQCM = QcmController.GetIdQCM(); LoadInformations(); }