Projet

Général

Profil

allereditorv1.cpp_part.cpp

Philippe Cadaugade, 13/04/2012 14:08

Télécharger (120 ko)

 
1
/**
2
  * Aller (le terrier d'AbulEdu)
3
  *
4
  * @warning aucun traitement d'erreur n'est pour l'instant implémenté
5
  * @see https://redmine.ryxeo.com/projects/leterrier-aller
6
  * @author 2012 Jean-Louis Frucot <frucot.jeanlouis@free.fr>
7
  * @author 2012 Philippe Cadaugade <philippe.cadaugade@ryxeo.com>
8
  * @see The GNU Public License (GPL)
9
 * This program is free software; you can redistribute it and/or modify
10
 * it under the terms of the GNU General Public License as published by
11
 * the Free Software Foundation; either version 2 of the License, or
12
 * (at your option) any later version.
13
 *
14
 * This program is distributed in the hope that it will be useful, but
15
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
17
 * for more details.
18
 *
19
 * You should have received a copy of the GNU General Public License along
20
 * with this program; if not, write to the Free Software Foundation, Inc.,
21
 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22
 */
23

    
24
#include "allereditorv1.h"
25
#include "ui_allereditorv1.h"
26
#include "abuleduoutilsv1.h"
27
#include <QTextCursor>
28

    
29
//#include "ui_allerexerciceediteur.h"
30

    
31
AllerEditorV1::AllerEditorV1(QString nomModule, QMainWindow *parent) :
32
    QMainWindow(parent),
33
    ui(new Ui::AllerEditorV1)
34
{
35
    ui->setupUi(this);
36
    setWindowTitle(abeApp->getAbeApplicationLongName()+ "[*]");
37
    qDebug()<<"Fenetre parent : "<<parent->width()<<" X "<<parent->height();
38
    setWindowModified(false);
39
    setFixedHeight(parent->height());
40
    m_isFileSettingsFound = false;
41
    ui->twEditor->setCurrentIndex(0);
42
    m_previousIndex = ui->twEditor->currentIndex();
43
    m_previousExercice = 0;
44
    m_lastSelection.first = m_lastSelection.second = 0;
45
    connect(ui->twEditor, SIGNAL(currentChanged(int)), this, SLOT(onSwitchOnglet(int)) );
46

    
47
    /* -- Récupération du répertoire de travail (chez l'utilisateur s'il existe, répertoire temporaire sinon)-- */
48
    MainWindow* fenetreParent = (MainWindow*) parent;
49
    m_parent = fenetreParent;
50

    
51
    m_directoryWork = fenetreParent->abeGetMyTempDir();
52
    qDebug()<<trUtf8(" Répertoire de travail : ")<<m_directoryWork->absolutePath();
53

    
54
    m_nameTabs.insert("General", trUtf8("Général"));
55
    m_nameTabs.insert("texte", trUtf8("Texte"));
56
    m_nameTabs.insert("texteATrous", trUtf8("Texte à trous"));
57
    m_nameTabs.insert("ordreAlphabetique", trUtf8("Ordre alphabétique"));
58
    m_nameTabs.insert("motsMelanges", trUtf8("Mots mélangés"));
59
    m_nameTabs.insert("phrasesMelangees", trUtf8("Phrases mélangées"));
60
    m_nameTabs.insert("paragraphesMelanges", trUtf8("Paragraphes mélangés"));
61
    m_nameTabs.insert("phraseSansEspace", trUtf8("Phrase sans espaces"));
62
    m_nameTabs.insert("rechercheRapide", trUtf8("Recherche rapide"));
63

    
64
    ui->twEditor->setTabText(0,m_nameTabs.value("General"));
65
    ui->twEditor->setTabText(1,m_nameTabs.value("texte"));
66
    ui->twEditor->setTabText(2,m_nameTabs.value("texteATrous"));
67
    ui->twEditor->setTabText(3,m_nameTabs.value("ordreAlphabetique"));
68
    ui->twEditor->setTabText(4,m_nameTabs.value("motsMelanges"));
69
    ui->twEditor->setTabText(5,m_nameTabs.value("phrasesMelangees"));
70
    ui->twEditor->setTabText(6,m_nameTabs.value("paragraphesMelanges"));
71
    ui->twEditor->setTabText(7,m_nameTabs.value("phraseSansEspace"));
72
    ui->twEditor->setTabText(8,m_nameTabs.value("rechercheRapide"));
73

    
74
    /* ---------------------------------------------------------------------------------------------------------------------------- */
75

    
76
    /* --------------------------------------------Instanciation de m_config ------------------------------------------------------ */
77
    if (!nomModule.isEmpty())
78
    {
79
        QString nomFichierConf = m_directoryWork->absolutePath()+"/conf/module.conf";
80

    
81
        qDebug()<<"Nom du fichier de conf : "<<nomFichierConf;
82
        QFile* fichierConf = new QFile(nomFichierConf);
83
        if (!fichierConf->exists()) qDebug()<<trUtf8(" Fichier config NON trouvé")<<" dans "<<m_parent->abeGetMyAbulEduFile()->abeFileGetFileName().baseName();
84
        else
85
        {
86
            qDebug()<<trUtf8(" Fichier config trouvé")<<" dans "<<m_parent->abeGetMyAbulEduFile()->abeFileGetFileName().baseName();
87
            fichierConf->copy(m_directoryWork->absolutePath()+"/conf/copieModule.conf");
88
            m_isFileSettingsFound = true;
89
            m_config = new QSettings(nomFichierConf,QSettings::IniFormat);
90
            m_config->setIniCodec("UTF-8");
91
            ui->GEleAuteur->setText(m_config->value("auteur").toString());
92
            ui->GEleTitre->setText(m_config->value("titreTexte").toString());
93
            ui->GEteResume->setHtml(m_config->value("resume").toString());
94
            QFile::copy(m_config->fileName(),"copieFichierConfig");
95
        }
96
    }
97
    else
98
    {
99
        m_config = new QSettings(m_directoryWork->absolutePath()+"/conf/module.conf",QSettings::IniFormat);
100
        m_config->setIniCodec("UTF-8");
101
        m_config->setValue("versionFormatFichier", abeApp->applicationName());
102
        qDebug()<<trUtf8(" Fichier config créé")<<" dans "<<m_directoryWork->absolutePath()+"/conf/module.conf";
103
    }
104
    /* ---------------------------------------------------------------------------------------------------------------------------- */
105

    
106
    /* ---------------------------------------------Instanciation de m_text ------------------------------------------------------ */
107

    
108
    m_text = new AbulEduTexte(m_directoryWork->absolutePath() + "/data/"+m_config->value("fichierTexte").toString());
109
    //qDebug()<<m_text->abetextText();
110
    m_numberWords = m_text->abetextCompteMots();
111
    m_numberSentences = m_text->abetextComptePhrases();
112
    m_numberParagraphs = m_text->abetextParagraphes().count();
113
    /* ---------------------------------------------------------------------------------------------------------------------------- */
114

    
115
    /* ----------------------------------------- Configuration de base pour l'onglet Général -------------------------------------- */
116
    ui->GEcbTexteTrous->setChecked(false);
117
    ui->wClosure->setEnabled(false);
118
    connect(ui->GEcbTexteTrous, SIGNAL(toggled(bool)),ui->wClosure, SLOT(setEnabled(bool)));
119
    ui->GEcbOrdreAlphabetique->setChecked(false);
120
    ui->wOrdreAlpha->setEnabled(false);
121
    connect(ui->GEcbOrdreAlphabetique, SIGNAL(toggled(bool)),ui->wOrdreAlpha, SLOT(setEnabled(bool)));
122
    ui->GEcbParagraphesMelanges->setChecked(false);
123
    ui->wParagraphes->setEnabled(false);
124
    connect(ui->GEcbParagraphesMelanges, SIGNAL(toggled(bool)),ui->wParagraphes, SLOT(setEnabled(bool)));
125
    ui->GEcbPhrasesSansEspace->setChecked(false);
126
    ui->wPhrasesEspaces->setEnabled(false);
127
    connect(ui->GEcbPhrasesSansEspace, SIGNAL(toggled(bool)),ui->wPhrasesEspaces, SLOT(setEnabled(bool)));
128
    loadSettings(0,1);
129

    
130
    /* ---------------------------------------------------------------------------------------------------------------------------- */
131

    
132
    /* ------------------------------------------ Configuration de base pour l'onglet Texte --------------------------------------- */
133

    
134
    ui->TEbtnNettoyer->setFixedSize(ui->TEbtnModifier->size());
135
    ui->TEbtnModifier->setFixedSize(ui->TEbtnModifier->size());
136
    if (m_text->abeGetText().isEmpty())
137
    {
138
        ui->TEteTexte->setReadOnly(false);
139
        ui->TEbtnNettoyer->setEnabled(true);
140
        ui->TEbtnModifier->setEnabled(false);
141
    }
142
    else
143
    {
144
        ui->TEteTexte->setPlainText(m_text->abeGetText());
145
        ui->TEteTexte->setReadOnly(true);
146
        ui->TEbtnModifier->setText(trUtf8("&Modifier"));
147
        ui->TEbtnNettoyer->setEnabled(false);
148
    }
149
    m_isTextModify = false;
150
    connect(ui->TEteTexte, SIGNAL(textChanged()), this, SLOT(onTEtextModify()));
151

    
152
    /*--------------------------Correcteur orthographique jlf 2012/04/11-----------------------------*/
153
    correcteur=0;
154
    ui->TEteTexte->installEventFilter(this);
155
    /*----------------------------------------------------------------------------------------------*/
156

    
157
    /* ---------------------------------------------------------------------------------------------------------------------------- */
158

    
159
    /* -------------------------------------- Configuration de base pour l'onglet Texte à trous ----------------------------------- */
160

    
161
    setDefaultSettingsTexteTrous();
162

    
163
    if (m_isFileSettingsFound)
164
    {
165
        m_config->beginGroup("texteATrous");
166
        ui->GEcbTexteTrous->setChecked(m_config->value("exerciceActive").toBool());
167
        ui->TTRchbAfficherTexteSequence->setChecked(m_config->value("afficherTexteSequence").toBool());
168
        ui->TTRchbAfficherMotsBienPlaces->setChecked((m_config->value("afficherMotBienPlaces").toBool()));
169
        ui->TTRchbAfficherConsigneSequence->setChecked((m_config->value("afficherConsigneSequence").toBool()));
170
        if (ui->TTRchbAfficherConsigneSequence->isChecked())
171
        {
172
            ui->TTRteConsigneSequence->setVisible(true);
173
            ui->TTRteConsigneSequence->setHtml(m_config->value("consigneSequence").toString());
174
        }
175
        else
176
            ui->TTRteConsigneSequence->setVisible(false);
177

    
178
        ui->TTRcbNumeroExercice->blockSignals(true);
179
        int size = m_config->beginReadArray("exercice");
180
        for (int i = 1; i <= size; ++i)
181
        {
182
            ui->TTRcbNumeroExercice->addItem(trUtf8("Exercice %1").arg(QString::number(i)));
183
        }
184
        m_config->endArray();
185
        ui->TTRcbNumeroExercice->blockSignals(false);
186

    
187
        m_config->endGroup();
188
        m_nombreExerciceTexteTrous = size;
189
    }
190
    if (m_nombreExerciceTexteTrous == 0)
191
    {
192
        ui->TTRfrParametresExercice->setVisible(false);
193
        ui->TTRbtnAjouterExercice->setText(trUtf8("Créer un exercice"));
194
    }
195
    else
196
    {
197
        ui->TTRfrParametresExercice->setVisible(true);
198
        ui->TTRbtnAjouterExercice->setText(trUtf8("Ajouter un exercice"));
199
    }
200
    qDebug()<<"--------- >    Nombre d'exercices texte a trous : "<<m_nombreExerciceTexteTrous;
201

    
202
    /* ---------------------------------------------------------------------------------------------------------------------------- */
203

    
204
    /* ------------------------------------ Configuration de base pour l'onglet Ordre alphabétique -------------------------------- */
205

    
206
        setDefaultSettingsOrdreAlphabetique();
207

    
208
        if (m_isFileSettingsFound)
209
        {
210
            m_config->beginGroup("ordreAlphabetique");
211
            ui->GEcbOrdreAlphabetique->setChecked(m_config->value("exerciceActive").toBool());
212
            ui->OAchbAfficherTexte->setChecked(m_config->value("afficherTexte").toBool());
213
            ui->OAchbAfficherMotsBienPlaces->setChecked((m_config->value("afficherMotBienPlaces").toBool()));
214
            ui->OAchbAfficherConsigneSequence->setChecked((m_config->value("afficherConsigneSequence").toBool()));
215
            if (ui->OAchbAfficherConsigneSequence->isChecked())
216
            {
217
                ui->OAteConsigneSequence->setVisible(true);
218
                ui->OAteConsigneSequence->setHtml(m_config->value("consigneSequence").toString());
219
            }
220
            else ui->OAteConsigneSequence->setVisible(false);
221

    
222
            ui->OAsbNbMotsAutomatique->setMaximum(m_numberWords);
223
            ui->OAsbNbMotsIntelligent->setMaximum(m_numberWords);
224
            ui->OAsbNbMotsManuel->setMaximum(m_numberWords);
225
            ui->OAsbNbMotsAutomatique->setMinimum(0);
226
            ui->OAsbNbMotsIntelligent->setMinimum(0);
227
            ui->OAsbNbMotsManuel->setMinimum(0);
228
            ui->OAsbNbMotsScolaire->setMinimum(0);
229

    
230
            ui->OAcbNumeroExercice->blockSignals(true);
231
            int size = m_config->beginReadArray("exercice");
232
                for (int i = 1; i <= size; ++i)
233
                {
234
                    ui->OAcbNumeroExercice->addItem(trUtf8("Exercice %1").arg(QString::number(i)));
235
                }
236
                ui->OAcbNumeroExercice->blockSignals(false);
237
                m_config->endArray();
238
            m_config->endGroup();
239
            m_nombreExerciceOrdreAlphabetique = size;
240
        }
241
        if (m_nombreExerciceOrdreAlphabetique == 0)
242
        {
243
            ui->OAfrParametresExercice->setVisible(false);
244
            ui->OAbtnAjouterExercice->setText(trUtf8("Créer un exercice"));
245
        }
246
        else
247
        {
248
            ui->OAfrParametresExercice->setVisible(true);
249
            ui->OAbtnAjouterExercice->setText(trUtf8("Ajouter un exercice"));
250
        }
251
        qDebug()<<"--------- >    Nombre d'exercices rapido : "<<m_nombreExerciceOrdreAlphabetique;
252
    /* ---------------------------------------------------------------------------------------------------------------------------- */
253

    
254
    /* -------------------------------------- Configuration de base pour l'onglet Mots mélangés ----------------------------------- */
255

    
256
        setDefaultSettingsMotsMelanges();
257

    
258
        if (m_isFileSettingsFound)
259
        {
260
            m_config->beginGroup("motsMelanges");
261
            ui->GEcbMotsMelanges->setChecked(m_config->value("exerciceActive").toBool());
262
            ui->MOMchbAfficherTexte->setChecked(m_config->value("afficherTexte").toBool());
263
            ui->MOMchbAfficherMotsBienPlaces->setChecked((m_config->value("afficherMotBienPlaces").toBool()));
264
            ui->MOMchbAfficherConsigneSequence->setChecked((m_config->value("afficherConsigneSequence").toBool()));
265
            if (ui->MOMchbAfficherConsigneSequence->isChecked())
266
            {
267
                ui->MOMteConsigneSequence->setVisible(true);
268
                ui->MOMteConsigneSequence->setHtml(m_config->value("consigneSequence").toString());
269
            }
270
            else
271
                ui->MOMteConsigneSequence->setVisible(false);
272

    
273
            ui->MOMsbNumeroPhrase->setMaximum(m_numberSentences);
274

    
275
            ui->MOMcbNumeroExercice->blockSignals(true);
276
            int size = m_config->beginReadArray("exercice");
277
                for (int i = 1; i <= size; ++i)
278
                {
279
                    ui->MOMcbNumeroExercice->addItem(trUtf8("Exercice %1").arg(QString::number(i)));
280
                }
281
                ui->MOMcbNumeroExercice->blockSignals(false);
282
                m_config->endArray();
283
            m_config->endGroup();
284
            m_nombreExerciceMotsMelanges = size;
285
        }
286
        if (m_nombreExerciceMotsMelanges == 0)
287
        {
288
            ui->MOMfrParametresExercice->setVisible(false);
289
            ui->MOMbtnAjouterExercice->setText(trUtf8("Créer un exercice"));
290
        }
291
        else
292
        {
293
            ui->MOMfrParametresExercice->setVisible(true);
294
            ui->MOMbtnAjouterExercice->setText(trUtf8("Ajouter un exercice"));
295
        }
296
        qDebug()<<"--------- >    Nombre d'exercices rapido : "<<m_nombreExerciceMotsMelanges;
297
    /* ---------------------------------------------------------------------------------------------------------------------------- */
298

    
299
    /* ------------------------------------ Configuration de base pour l'onglet Phrases mélangées --------------------------------- */
300

    
301
        setDefaultSettingsPhrasesMelangees();
302

    
303
        if (m_isFileSettingsFound)
304
        {
305
            m_config->beginGroup("phrasesMelangees");
306
            ui->GEcbPhrasesMelangees->setChecked(m_config->value("exerciceActive").toBool());
307
            ui->PHMchbAfficherTexteSequence->setChecked(m_config->value("afficherTexteSequence").toBool());
308
            ui->PHMchbAfficherPhrasesBienPlacees->setChecked((m_config->value("afficherPhrasesBienPlacees").toBool()));
309
            ui->PHMchbAfficherConsigneSequence->setChecked((m_config->value("afficherConsigneSequence").toBool()));
310
            if (ui->PHMchbAfficherConsigneSequence->isChecked())
311
            {
312
                ui->PHMteConsigneSequence->setVisible(true);
313
                ui->PHMteConsigneSequence->setHtml(m_config->value("consigneSequence").toString());
314
            }
315
            else
316
                ui->PHMteConsigneSequence->setVisible(false);
317

    
318
            ui->PHMsbNbPhrasesUtiliseesManuel->setMaximum(m_numberSentences);
319
            ui->PHMsbNbPhrasesUtiliseesManuel->setMinimum(0);
320
            ui->PHMsbPhraseDebutManuel->setMaximum(m_numberSentences);
321
            ui->PHMsbPhraseDebutManuel->setMinimum(0);
322
            ui->PHMsbPhraseFinManuel->setMaximum(m_numberSentences);
323
            ui->PHMsbPhraseFinManuel->setMinimum(0);
324
            ui->PHMsbPhraseDebutAutomatique->setMaximum(m_numberSentences);
325
            ui->PHMsbPhraseDebutAutomatique->setMinimum(0);
326
            ui->PHMsbPhraseFinAutomatique->setMaximum(m_numberSentences);
327
            ui->PHMsbPhraseFinAutomatique->setMinimum(0);
328

    
329
            ui->PHMcbNumeroExercice->blockSignals(true);
330
            int size = m_config->beginReadArray("exercice");
331
                for (int i = 1; i <= size; ++i)
332
                {
333
                    ui->PHMcbNumeroExercice->addItem(trUtf8("Exercice %1").arg(QString::number(i)));
334
                }
335
                ui->PHMcbNumeroExercice->blockSignals(false);
336
                m_config->endArray();
337
            m_config->endGroup();
338
            m_nombreExercicePhrasesMelangees = size;
339
        }
340
        if (m_nombreExercicePhrasesMelangees == 0)
341
        {
342
            ui->PHMfrParametresExercice->setVisible(false);
343
            ui->PHMbtnAjouterExercice->setText(trUtf8("Créer un exercice"));
344
        }
345
        else
346
        {
347
            ui->PHMfrParametresExercice->setVisible(true);
348
            ui->PHMbtnAjouterExercice->setText(trUtf8("Ajouter un exercice"));
349
        }
350
        qDebug()<<"--------- >    Nombre d'exercices rapido : "<<m_nombreExercicePhrasesMelangees;
351
    /* ---------------------------------------------------------------------------------------------------------------------------- */
352

    
353
    /* ----------------------------------- Configuration de base pour l'onglet Paragraphes mélangés ------------------------------- */
354

    
355
        setDefaultSettingsParagraphesMelanges();
356

    
357
        if (m_isFileSettingsFound)
358
        {
359
            m_config->beginGroup("paragraphesMelanges");
360
            ui->GEcbParagraphesMelanges->setChecked(m_config->value("exerciceActive").toBool());
361
            ui->PAMchbAfficherTexteSequence->setChecked(m_config->value("afficherTexteSequence").toBool());
362
            ui->PAMchbAfficherParagraphesBienPlaces->setChecked((m_config->value("afficherParagraphesBienPlaces").toBool()));
363
            ui->PAMchbAfficherConsigneSequence->setChecked((m_config->value("afficherConsigneSequence").toBool()));
364
            if (ui->PAMchbAfficherConsigneSequence->isChecked())
365
            {
366
                ui->PAMteConsigneSequence->setVisible(true);
367
                ui->PAMteConsigneSequence->setHtml(m_config->value("consigneSequence").toString());
368
            }
369
            else
370
                ui->PAMteConsigneSequence->setVisible(false);
371

    
372
            ui->PAMsbParagrapheDebutManuel->setMaximum(m_numberSentences);
373
            ui->PAMsbParagrapheDebutManuel->setMinimum(0);
374
            ui->PAMsbParagrapheFinManuel->setMaximum(m_numberSentences);
375
            ui->PAMsbParagrapheFinManuel->setMinimum(0);
376
            ui->PAMsbParagrapheDebutAuto->setMaximum(m_numberSentences);
377
            ui->PAMsbParagrapheDebutAuto->setMinimum(0);
378
            ui->PAMsbParagrapheFinAuto->setMaximum(m_numberSentences);
379
            ui->PAMsbParagrapheFinAuto->setMinimum(0);
380

    
381
            ui->PAMcbNumeroExercice->blockSignals(true);
382
            int size = m_config->beginReadArray("exercice");
383
                for (int i = 1; i <= size; ++i)
384
                {
385
                    ui->PAMcbNumeroExercice->addItem(trUtf8("Exercice %1").arg(QString::number(i)));
386
                }
387
                ui->PAMcbNumeroExercice->blockSignals(false);
388
                m_config->endArray();
389
            m_config->endGroup();
390
            m_nombreExerciceParagraphesMelanges = size;
391
        }
392
        if (m_nombreExerciceParagraphesMelanges == 0)
393
        {
394
            ui->PAMfrParametresExercice->setVisible(false);
395
            ui->PAMbtnAjouterExercice->setText(trUtf8("Créer un exercice"));
396
        }
397
        else
398
        {
399
            ui->PAMfrParametresExercice->setVisible(true);
400
            ui->PAMbtnAjouterExercice->setText(trUtf8("Ajouter un exercice"));
401
        }
402
        qDebug()<<"--------- >    Nombre d'exercices rapido : "<<m_nombreExerciceParagraphesMelanges;
403
    /* ---------------------------------------------------------------------------------------------------------------------------- */
404

    
405
    /* ----------------------------------- Configuration de base pour l'onglet Phrases sans espace -------------------------------- */
406

    
407
        setDefaultSettingsPhrasesSansEspace();
408

    
409
        if (m_isFileSettingsFound)
410
        {
411
            m_config->beginGroup("phraseSansEspace");
412
            ui->GEcbPhrasesSansEspace->setChecked(m_config->value("exerciceActive").toBool());
413
            ui->PSEchbAfficherClicsMalPlaces->setChecked(m_config->value("afficherClicsMalPlaces").toBool());
414
            ui->PSEchbAfficherConsigneSequence->setChecked(m_config->value("afficherConsigneSequence").toBool());
415
            ui->PSEteConsigneSequence->setVisible(m_config->value("afficherConsigneSequence").toBool());
416
            if (m_config->value("afficherconsigneSequence").toBool())
417
            {
418
                ui->PSEteConsigneSequence->setVisible(true);
419
                ui->PSEteConsigneSequence->setHtml(m_config->value("consigneSequence").toString());
420
            }
421
            else
422
                ui->PSEteConsigneSequence->setVisible(false);
423

    
424
            ui->PSEcbNumeroExercice->blockSignals(true);
425
            int size = m_config->beginReadArray("exercice");
426
                for (int i = 1; i <= size; ++i)
427
                {
428
                    ui->PSEcbNumeroExercice->addItem(trUtf8("Exercice %1").arg(QString::number(i)));
429
                }
430
                ui->PSEcbNumeroExercice->blockSignals(false);
431
                m_config->endArray();
432
            m_config->endGroup();
433
            m_nombreExercicePhrasesSansEspace = size;
434
        }
435
        if (m_nombreExercicePhrasesSansEspace == 0)
436
        {
437
            ui->PSEfrParametresExercice->setVisible(false);
438
            ui->PSEbtnAjouterExercice->setText(trUtf8("Créer un exercice"));
439
        }
440
        else
441
        {
442
            ui->PSEfrParametresExercice->setVisible(true);
443
            ui->PSEbtnAjouterExercice->setText(trUtf8("Ajouter un exercice"));
444
        }
445
        qDebug()<<"--------- >    Nombre d'exercices rapido : "<<m_nombreExercicePhrasesSansEspace;
446
    /* ---------------------------------------------------------------------------------------------------------------------------- */
447

    
448
    /* ----------------------------------- Configuration de base pour l'onglet Recherche Rapide ----------------------------------- */
449

    
450
        setDefaultSettingsRechercheRapide();
451

    
452
        if (m_isFileSettingsFound)
453
        {
454
            m_config->beginGroup("rechercheRapide");
455
            ui->GEcbRechercheRapide->setChecked(m_config->value("exerciceActive").toBool());
456
            ui->RRchbAfficherTexte->setChecked(m_config->value("afficherTexte").toBool());
457
            ui->RRchbGarderCouleurMotsPasses->setChecked((m_config->value("afficherErreurs").toBool()));
458
            ui->RRchbAfficherConsigneSequence->setChecked((m_config->value("afficherConsigneSequence").toBool()));
459
            if (ui->RRchbAfficherConsigneSequence->isChecked())
460
            {
461
                ui->RRteConsigneSequence->setVisible(true);
462
                ui->RRteConsigneSequence->setHtml(m_config->value("consigneSequence").toString());
463
            }
464
            else
465
                ui->RRteConsigneSequence->setVisible(false);
466

    
467
            ui->RRcbNumeroExercice->blockSignals(true);
468
            int size = m_config->beginReadArray("exercice");
469
                for (int i = 1; i <= size; ++i)
470
                {
471
                    ui->RRcbNumeroExercice->addItem(trUtf8("Exercice %1").arg(QString::number(i)));
472
                }
473
                ui->RRcbNumeroExercice->blockSignals(false);
474
                m_config->endArray();
475
            m_config->endGroup();
476
            m_nombreExerciceRechercheRapide = size;
477

    
478
        }
479
        if (m_nombreExerciceRechercheRapide == 0)
480
        {
481
            ui->RRfrParametresExercice->setVisible(false);
482
            ui->RRbtnAjouterExercice->setText(trUtf8("Créer un exercice"));
483
        }
484
        else
485
        {
486
            ui->RRfrParametresExercice->setVisible(true);
487
            ui->RRbtnAjouterExercice->setText(trUtf8("Ajouter un exercice"));
488
        }
489
        qDebug()<<"--------- >    Nombre d'exercices rapido : "<<m_nombreExerciceRechercheRapide;
490

    
491

    
492
    /* ---------------------------------------------------------------------------------------------------------------------------- */
493

    
494

    
495
}
496

    
497
AllerEditorV1::~AllerEditorV1()
498
{
499
    delete ui;
500
}
501

    
502
void AllerEditorV1::changeEvent(QEvent *e)
503
{
504
    QMainWindow::changeEvent(e);
505
    switch (e->type()) {
506
    case QEvent::LanguageChange:
507
        ui->retranslateUi(this);
508
        break;
509
    default:
510
        break;
511
    }
512
}
513

    
514
/* --------------------------------------Fonctions de navigation entre les onglets------------------------------------------ */
515

    
516

    
517
void AllerEditorV1::onSwitchOnglet(int nouvelIndex)
518
{
519
    qDebug()<<"AllerEditorV1::onSwitchOnglet("<<m_previousIndex<<" -> "<<nouvelIndex<<")";
520

    
521
    saveSettings(m_previousIndex,m_previousExercice);
522
    qDebug()<<trUtf8("J'ai enregistré les paramètres pour ")<<ui->twEditor->tabText(m_previousIndex)<<" :: Exercice "<<m_previousExercice+1;
523
    m_previousIndex = nouvelIndex;
524
    switch (nouvelIndex)
525
    {
526
    case 2:
527
        loadSettings(nouvelIndex,ui->TTRcbNumeroExercice->currentIndex());
528
        m_previousExercice = ui->TTRcbNumeroExercice->currentIndex();
529
        break;
530
    case 3:
531
        loadSettings(nouvelIndex,ui->OAcbNumeroExercice->currentIndex());
532
        m_previousExercice = ui->OAcbNumeroExercice->currentIndex();
533
        break;
534
    case 4:
535
        loadSettings(nouvelIndex,ui->MOMcbNumeroExercice->currentIndex());
536
        m_previousExercice = ui->MOMcbNumeroExercice->currentIndex();
537
        break;
538
    case 5:
539
        loadSettings(nouvelIndex,ui->PHMcbNumeroExercice->currentIndex());
540
        m_previousExercice = ui->PHMcbNumeroExercice->currentIndex();
541
        break;
542
    case 6:
543
        loadSettings(nouvelIndex,ui->PAMcbNumeroExercice->currentIndex());
544
        m_previousExercice = ui->PAMcbNumeroExercice->currentIndex();
545
        break;
546
    case 7:
547
        loadSettings(nouvelIndex,ui->PSEcbNumeroExercice->currentIndex());
548
        m_previousExercice = ui->PSEcbNumeroExercice->currentIndex();
549
        break;
550
    case 8:
551
        loadSettings(nouvelIndex,ui->RRcbNumeroExercice->currentIndex());
552
        m_previousExercice = ui->RRcbNumeroExercice->currentIndex();
553
        break;
554
    }
555

    
556
    m_previousExercice = 0;
557
    qDebug()<<trUtf8("J'ai chargé les paramètres pour ")<<ui->twEditor->tabText(m_previousIndex)<<" :: Exercice "<<m_previousExercice+1;
558
}
559

    
560
void AllerEditorV1::loadSettings(int indexOnglet, int indexExercice)//à initialiser
561
{
562
    switch (indexOnglet)
563
    {
564
    case 0 ://onglet General
565
        qDebug()<<trUtf8("Chargement des paramètres pour l'onglet ")<<ui->twEditor->tabText(0);
566
        qDebug()<<"Case 0";
567
        qDebug()<<"Fichier de configuration "<<m_config->fileName();
568
        ui->GEleTitre->setText(m_config->value("titreTexte").toString());
569
        ui->GEleAuteur->setText(m_config->value("auteur").toString());
570
        ui->GEteResume->setText(m_config->value("resume").toString());
571
        m_config->beginGroup("texteATrous");
572
        ui->GEcbTexteTrous->setChecked(m_config->value("exerciceActive").toBool());
573
        qDebug()<<"Case cochee "<<m_config->value("exerciceActive").toBool();
574
        m_config->endGroup();
575
        m_config->beginGroup("ordreAlphabetique");
576
        ui->GEcbOrdreAlphabetique->setChecked(m_config->value("exerciceActive").toBool());
577
        m_config->endGroup();
578
        m_config->beginGroup("motsMelanges");
579
        ui->GEcbMotsMelanges->setChecked(m_config->value("exerciceActive").toBool());
580
        m_config->endGroup();
581
        m_config->beginGroup("phrasesMelangees");
582
        ui->GEcbPhrasesMelangees->setChecked(m_config->value("exerciceActive").toBool());
583
        m_config->endGroup();
584
        m_config->beginGroup("paragraphesMelanges");
585
        ui->GEcbParagraphesMelanges->setChecked(m_config->value("exerciceActive").toBool());
586
        m_config->endGroup();
587
        m_config->beginGroup("phraseSansEspace");
588
        ui->GEcbPhrasesSansEspace->setChecked(m_config->value("exerciceActive").toBool());
589
        m_config->endGroup();
590
        m_config->beginGroup("rechercheRapide");
591
        ui->GEcbRechercheRapide->setChecked(m_config->value("exerciceActive").toBool());
592
        m_config->endGroup();
593
        break;
594
    case 1 ://onglet texte
595
        ui->TElblTitreTexte->setText(ui->GEleTitre->text());
596
        qDebug()<<trUtf8("Chargement des paramètres pour l'onglet ")<<ui->twEditor->tabText(1);
597
        qDebug()<<"Case 1";
598
        break;
599
    case 2 ://onglet texte à trous
600
        qDebug()<<trUtf8("Chargement des paramètres pour l'onglet ")<<ui->twEditor->tabText(2);
601
        qDebug()<<"Case 2";
602
        m_config->beginGroup("texteATrous");
603
            if (!m_config->value("exerciceActive").toBool())
604
            {
605
                ui->wClosure->setEnabled(false);
606
            }
607
            else
608
            {
609
                ui->wClosure->setEnabled(true);
610
                ui->TTRchbAfficherTexteSequence->setChecked(m_config->value("afficherTexteSequence").toBool());
611
                ui->TTRchbAfficherMotsBienPlaces->setChecked((m_config->value("afficherMotBienPlaces").toBool()));
612
                ui->TTRchbAfficherConsigneSequence->setChecked((m_config->value("afficherConsigneSequence").toBool()));
613
                if (ui->TTRchbAfficherConsigneSequence->isChecked())
614
                {
615
                    ui->TTRteConsigneSequence->setHtml(m_config->value("consigneSequence").toString());
616
                }
617
                m_config->beginReadArray("exercice");
618
                    {
619
                    m_config->setArrayIndex(indexExercice);
620
                    qDebug()<< trUtf8("Je suis en lecture dans le array à l'index ")<<indexExercice;
621
                    ui->TTRsbDifficulte->setValue(m_config->value("niveauDifficulte").toInt());
622
                    ui->TTRchbAfficherTexteExercice->setChecked(m_config->value("afficherTexteExercice").toBool());
623
                    ui->TTRsbMarqueurDebutTexte->setValue(m_config->value("marqueurDebutTexte").toInt());
624
                    ui->TTRsbMarqueurFinTexte->setValue(m_config->value("marqueurFinTexte").toInt());
625
                    ui->TTRrbModeManuel->setChecked(m_config->value("modeManuel").toBool());
626
                    if (m_config->value("modeManuel").toBool())
627
                    {
628
                        ui->TTRfrModeManuel->setVisible(true);
629
                        ui->TTRteTrousModeManuel->setHtml(m_config->value("listeTrous").toString());
630
                        ui->TTRsbNbTrousManuel->setValue(m_config->value("nombreTrousAAfficher").toInt());
631
                    }
632
                    else
633
                    {
634
                        ui->TTRfrModeManuel->setVisible(false);
635
                        ui->TTRteTrousModeManuel->clear();
636
                        ui->TTRsbNbTrousManuel->setValue(0);
637
                    }
638

    
639
                    ui->TTRrbModeIntelligent->setChecked(m_config->value("modeIntelligent").toBool());
640
                    if (m_config->value("modeIntelligent").toBool())
641
                    {
642
                        ui->TTRfrModeIntelligent->setVisible(true);
643
                        ui->TTRsbNbTrousIntelligent->setValue(m_config->value("nombreTrousAAfficher").toInt());
644
                        ui->TTRcbNature->setCurrentIndex(m_config->value("indexNature").toInt());
645
                        ui->TTRcbNiveau->setCurrentIndex(m_config->value("indexNiveau").toInt());
646
                    }
647
                    else
648
                    {
649
                        ui->TTRfrModeIntelligent->setVisible(false);
650
                        ui->TTRsbNbTrousIntelligent->setValue(0);
651
                        ui->TTRcbNature->setCurrentIndex(0);
652
                        ui->TTRcbNiveau->setCurrentIndex(0);
653
                    }
654

    
655
                    ui->TTRrbModeAutomatique->setChecked(m_config->value("modeAutomatique").toBool());
656
                    if (m_config->value("modeAutomatique").toBool())
657
                    {
658
                        ui->TTRfrModeAutomatique->setVisible(true);
659
                        ui->TTRsbNbMotsAutomatique->setValue(m_config->value("nombreTrousAAfficher").toInt());
660
                    }
661
                    else
662
                    {
663
                        ui->TTRfrModeAutomatique->setVisible(false);
664
                        ui->TTRsbNbMotsAutomatique->setValue(0);
665
                    }
666

    
667
                    ui->TTRchbAfficherConsigneExercice->setChecked(m_config->value("afficherConsigneExercice").toBool());
668
                    ui->TTRteConsigneExercice->setHtml(m_config->value("consigneExercice").toString());
669
                    }
670
                m_config->endArray();
671
            }
672
       m_config->endGroup();
673
        break;
674
    case 3 ://onglet ordre alphabétique
675
        qDebug()<<trUtf8("Chargement des paramètres pour l'onglet ")<<ui->twEditor->tabText(3);
676
        qDebug()<<"Case 3";
677
        m_config->beginGroup("ordreAlphabetique");
678
            if (!m_config->value("exerciceActive").toBool())
679
            {
680
                ui->wOrdreAlpha->setEnabled(false);
681
            }
682
            else
683
            {
684
                ui->wOrdreAlpha->setEnabled(true);
685
                ui->OAchbAfficherTexte->setChecked(m_config->value("afficherTexte").toBool());
686
                ui->OAchbAfficherMotsBienPlaces->setChecked((m_config->value("afficherMotBienPlaces").toBool()));
687
                ui->OAchbAfficherConsigneSequence->setChecked((m_config->value("afficherConsigneSequence").toBool()));
688
                if (ui->OAchbAfficherConsigneSequence->isChecked())
689
                {
690
                    ui->OAteConsigneSequence->setHtml(m_config->value("consigneSequence").toString());
691
                }
692
                m_config->beginReadArray("exercice");
693
                    {
694
                    m_config->setArrayIndex(indexExercice);
695
                    qDebug()<< trUtf8("Je suis en lecture dans le array à l'index ")<<indexExercice;
696
                    ui->OAsbDifficulte->setValue(m_config->value("niveauDifficulte").toInt());
697

    
698
                    ui->OArbModeManuel->setChecked(m_config->value("modeManuel").toBool());
699
                    if (m_config->value("modeManuel").toBool())
700
                    {
701
                        ui->OAfrModeManuel->setVisible(true);
702
                        ui->OAteMotsModeManuel->setHtml(m_config->value("listeMots").toString());
703
                        ui->OAsbNbMotsManuel->setValue(m_config->value("nbMotsARanger").toInt());
704
                    }
705
                    else
706
                    {
707
                        ui->OAfrModeManuel->setVisible(false);
708
                        ui->OAteMotsModeManuel->clear();
709
                        ui->OAsbNbMotsManuel->setValue(0);
710
                    }
711

    
712
                    ui->OArbModeIntelligent->setChecked(m_config->value("modeIntelligent").toBool());
713
                    if (m_config->value("modeIntelligent").toBool())
714
                    {
715
                        ui->OAfrModeIntelligent->setVisible(true);
716
                        ui->OAsbNbMotsIntelligent->setValue(m_config->value("nbMotsARanger").toInt());
717
                        ui->OAcbNature->setCurrentIndex(m_config->value("indexNature").toInt());
718
                        ui->OAcbNiveau->setCurrentIndex(m_config->value("indexNiveau").toInt());
719
                        ui->OAsbProfondeur->setValue(m_config->value("profondeur").toInt());
720
                    }
721
                    else
722
                    {
723
                        ui->OAfrModeIntelligent->setVisible(false);
724
                        ui->OAsbNbMotsIntelligent->setValue(0);
725
                        ui->OAcbNature->setCurrentIndex(0);
726
                        ui->OAcbNiveau->setCurrentIndex(0);
727
                        ui->OAsbProfondeur->setValue(0);
728
                    }
729

    
730
                    ui->OArbModeAutomatique->setChecked(m_config->value("modeAutomatique").toBool());
731
                    if (m_config->value("modeAutomatique").toBool())
732
                    {
733
                        ui->OAfrModeAutomatique->setVisible(true);
734
                        ui->OAsbNbMotsAutomatique->setValue(m_config->value("nbMotsARanger").toInt());
735
                    }
736
                    else
737
                    {
738
                        ui->OAfrModeAutomatique->setVisible(false);
739
                        ui->OAsbNbMotsAutomatique->setValue(0);
740
                    }
741

    
742
                    if (m_config->value("modeScolaire").toBool())
743
                    {
744
                        ui->OAfrModeScolaire->setVisible(true);
745
                        ui->OAsbNbMotsScolaire->setValue(m_config->value("nbMotsARanger").toInt());
746
                        ui->OAcbNatureScolaire->setCurrentIndex(m_config->value("indexNature").toInt());
747
                        ui->OAcbNiveauScolaire->setCurrentIndex(m_config->value("indexNiveau").toInt());
748
                        ui->OAsbProfondeurScolaire->setValue(m_config->value("profondeur").toInt());
749
                    }
750
                    else
751
                    {
752
                        ui->OAfrModeScolaire->setVisible(false);
753
                        ui->OAsbNbMotsScolaire->setValue(0);
754
                        ui->OAcbNatureScolaire->setCurrentIndex(0);
755
                        ui->OAcbNiveauScolaire->setCurrentIndex(0);
756
                        ui->OAsbProfondeurScolaire->setValue(0);
757
                    }
758

    
759
                    ui->OAchbAfficherConsigneExercice->setChecked(m_config->value("afficherConsigneExercice").toBool());
760
                    ui->OAteConsigneExercice->setHtml(m_config->value("consigneExercice").toString());
761
                    }
762
                m_config->endArray();
763
            }
764
       m_config->endGroup();
765
        break;
766
    case 4://onglet mots mélangés
767
        qDebug()<<"Case 4";
768
        m_config->beginGroup("motsMelanges");
769
            if (!m_config->value("exerciceActive").toBool())
770
            {
771
                ui->wMotsMelanges->setEnabled(false);
772
            }
773
            else
774
            {
775
                ui->wMotsMelanges->setEnabled(true);
776
                ui->MOMchbAfficherTexte->setChecked(m_config->value("afficherTexte").toBool());
777
                ui->MOMchbAfficherMotsBienPlaces->setChecked(m_config->value("afficherMotBienPlaces").toBool());
778
                ui->MOMchbAfficherConsigneSequence->setChecked(m_config->value("afficherConsigneSequence").toBool());
779
                if (ui->MOMchbAfficherConsigneSequence->isChecked())
780
                {
781
                    ui->MOMteConsigneSequence->setHtml(m_config->value("consigneSequence").toString());
782
                }
783
                m_config->beginReadArray("exercice");
784
                    {
785
                    m_config->setArrayIndex(indexExercice);
786
                    qDebug()<< trUtf8("Je suis en lecture dans le array à l'index ")<<indexExercice;
787
                    ui->MOMsbDifficulte->setValue(m_config->value("niveauDifficulte").toInt());
788
                    ui->MOMchbAfficherPhraseExercice->setChecked(m_config->value("afficherPhrase").toBool());
789
                    ui->MOMrbModeManuel->setChecked(m_config->value("modeManuel").toBool());
790
                    if (m_config->value("modeManuel").toBool())
791
                    {
792
                        ui->MOMfrModeManuel->setVisible(true);
793
                        if (!m_config->value("phrase").toString().isEmpty())
794
                            ui->MOMteMotsModeManuel->setText(m_config->value("phrase").toString());
795
                        ui->MOMsbNumeroPhrase->setValue(m_config->value("numeroPhrase").toInt());
796
                    }
797
                    else
798
                    {
799
                        ui->MOMfrModeManuel->setVisible(false);
800
                        ui->MOMteMotsModeManuel->clear();
801
                        ui->MOMsbNumeroPhrase->setValue(0);
802
                    }
803

    
804
                    ui->MOMrbModeAutomatique->setChecked(m_config->value("modeAutomatique").toBool());
805

    
806
                    ui->MOMchbAfficherConsigneExercice->setChecked(m_config->value("afficherConsigneExercice").toBool());
807
                    ui->MOMteConsigneExercice->setHtml(m_config->value("consigneExercice").toString());
808
                    }
809
                m_config->endArray();
810
            }
811
       m_config->endGroup();
812
        break;
813
    case 5://onglet phrases mélangées
814
        m_config->beginGroup("phrasesMelangees");
815
            if (!m_config->value("exerciceActive").toBool())
816
            {
817
                ui->wPhrasesMelangees->setEnabled(false);
818
            }
819
            else
820
            {
821
                ui->wPhrasesMelangees->setEnabled(true);
822
                ui->PHMchbAfficherTexteSequence->setChecked(m_config->value("afficherTexteSequence").toBool());
823
                ui->PHMchbAfficherPhrasesBienPlacees->setChecked(m_config->value("afficherPhrasesBienPlacees").toBool());
824
                ui->PHMchbAfficherConsigneSequence->setChecked(m_config->value("afficherConsigneSequence").toBool());
825
                if (ui->PHMchbAfficherConsigneSequence->isChecked())
826
                {
827
                    ui->PHMteConsigneSequence->setHtml(m_config->value("consigneSequence").toString());
828
                }
829
                m_config->beginReadArray("exercice");
830
                    {
831
                    m_config->setArrayIndex(indexExercice);
832
                    qDebug()<< trUtf8("Je suis en lecture dans le array à l'index ")<<indexExercice;
833
                    ui->PHMsbDifficulte->setValue(m_config->value("niveauDifficulte").toInt());
834
                    ui->PHMrbModeManuel->setChecked(m_config->value("modeManuel").toBool());
835
                    if (m_config->value("modeManuel").toBool())
836
                    {
837
                        ui->PHMrbModeManuel->setVisible(true);
838
                        ui->PHMtePhrasesModeManuel->setHtml(m_config->value("listePhrases").toString());
839
                        ui->PHMsbNbPhrasesUtiliseesManuel->setValue(m_config->value("nbPhrasesUtilisees").toInt());
840
                        ui->PHMsbNbPhrasesUtiliseesManuel->setMaximum(m_config->value("nbPhrasesUtilisees").toInt());
841
                        ui->PHMsbPhraseDebutManuel->setValue(m_config->value("phraseDebut").toInt());
842
                        ui->PHMsbPhraseFinManuel->setValue(m_config->value("phraseFin").toInt());
843
                    }
844
                    else
845
                    {
846
                        ui->PHMfrModeManuel->setVisible(false);
847
                        ui->PHMtePhrasesModeManuel->clear();
848
                    }
849

    
850
                    ui->PHMrbModeAutomatique->setChecked(m_config->value("modeAutomatique").toBool());
851
                    if (m_config->value("modeAutomatique").toBool())
852
                    {
853
                        ui->PHMfrModeAutomatique->setVisible(true);
854
                        ui->PHMsbNbMotsAutomatique->setValue(m_config->value("nbPhrasesUtilisees").toInt());
855
                        ui->PHMchbPhrasesConsecutivesAutomatique->setChecked(m_config->value("phrasesConsecutivesAutomatique").toBool());
856
                        ui->PHMsbPhraseDebutAutomatique->setValue(m_config->value("phraseDebut").toInt());
857
                        ui->PHMsbPhraseFinAutomatique->setValue(m_config->value("phraseFin").toInt());
858
                    }
859
                    else
860
                    {
861
                        ui->PHMfrModeAutomatique->setVisible(false);
862
                    }
863
                    ui->PHMchbAfficherTexteExercice->setChecked(m_config->value("afficherTexteExercice").toBool());
864
                    ui->PHMchbAfficherConsigneExercice->setChecked(m_config->value("afficherConsigneExercice").toBool());
865
                    ui->PHMteConsigneExercice->setHtml(m_config->value("consigneExercice").toString());
866
                    }
867
                m_config->endArray();
868
            }
869
       m_config->endGroup();
870
        break;
871
    case 6 ://(onglet paragraphes mélangés)
872
        qDebug()<<trUtf8("Chargement des paramètres pour l'onglet ")<<ui->twEditor->tabText(6);
873
        qDebug()<<ui->twEditor->tabText(6);
874
        m_config->beginGroup("paragraphesMelanges");
875
            if (!m_config->value("exerciceActive").toBool())
876
            {
877
                ui->wParagraphes->setEnabled(false);
878
            }
879
            else
880
            {
881
                ui->wParagraphes->setEnabled(true);
882
                ui->PAMchbAfficherTexteSequence->setChecked(m_config->value("afficherTexteSequence").toBool());
883
                ui->PAMchbAfficherParagraphesBienPlaces->setChecked((m_config->value("afficherParagraphesBienPlaces").toBool()));
884
                ui->PAMchbAfficherConsigneSequence->setChecked((m_config->value("afficherConsigneSequence").toBool()));
885
                if (ui->PAMchbAfficherConsigneSequence->isChecked())
886
                {
887
                    ui->PAMteConsigneSequence->setHtml(m_config->value("consigneSequence").toString());
888
                }
889
                m_config->beginReadArray("exercice");
890
                {
891
                    m_config->setArrayIndex(indexExercice);
892
                    qDebug()<< trUtf8("Je suis en lecture dans le array à l'index ")<<indexExercice;
893
                    ui->PAMsbDifficulte->setValue(m_config->value("niveauDifficulte").toInt());
894
                    ui->PAMrbModeManuel->setChecked(m_config->value("modeManuel").toBool());
895
                    if (m_config->value("modeManuel").toBool())
896
                    {
897
                        ui->PAMfrModeManuel->setVisible(true);
898
                        ui->PAMleParagraphesChoisis->setText(m_config->value("listeParagraphes").toString());
899
                        ui->PAMsbParagrapheDebutManuel->setValue(m_config->value("paragrapheDebut").toInt());
900
                        ui->PAMsbParagrapheFinManuel->setValue(m_config->value("paragrapheFin").toInt());
901
                        ui->PAMsbParagrapheFinManuel->setMaximum(m_text->abetextParagraphes().count());
902
                    }
903
                    else
904
                    {
905
                        ui->PAMfrModeManuel->setVisible(false);
906
                    }
907

    
908
                    ui->PAMrbModeAuto->setChecked(m_config->value("modeAutomatique").toBool());
909
                    if (m_config->value("modeAutomatique").toBool())
910
                    {
911
                        ui->PAMfrModeAuto->setVisible(true);
912
                        ui->PAMrbModeAuto->setChecked(true);
913
                        ui->PAMsbNombreParagraphesAuto->setValue(m_config->value("nombreParagraphes").toInt());
914
                        ui->PAMsbParagrapheDebutAuto->setValue(m_config->value("paragrapheDebut").toInt()+1);
915
                        ui->PAMsbParagrapheFinAuto->setValue(m_config->value("paragrapheFin").toInt()+1);
916
                        ui->PAMleParagraphesChoisis->clear();
917
                    }
918
                    else
919
                    {
920
                        ui->PAMfrModeAuto->setVisible(false);
921
                    }
922
                    ui->PAMchbAfficherTexteExercice->setChecked(m_config->value("afficherTexteExercice").toBool());
923
                    ui->PAMchbAfficherConsigneExercice->setChecked(m_config->value("afficherConsigneExercice").toBool());
924
                    ui->PAMteConsigneExercice->setHtml(m_config->value("consigneExercice").toString());
925
                }
926
                m_config->endArray();
927
            }
928
       m_config->endGroup();
929
        break;
930
    case 7 ://(onglet phrases sans espace)
931
        qDebug()<<trUtf8("Chargement des paramètres pour l'onglet ")<<ui->twEditor->tabText(7);
932
        qDebug()<<ui->twEditor->tabText(7);
933
        m_config->beginGroup("phraseSansEspace");
934
            if (!m_config->value("exerciceActive").toBool())
935
            {
936
                ui->wPhrasesEspaces->setEnabled(false);
937
            }
938
            else
939
            {
940
                ui->wPhrasesEspaces->setEnabled(true);
941
                 ui->PSEchbAfficherTexte->setChecked(m_config->value("afficherTexte").toBool());
942
                 ui->PSEchbAfficherClicsMalPlaces->setChecked((m_config->value("afficherClicsMalPlaces").toBool()));
943
                 ui->PSEchbAfficherConsigneSequence->setChecked((m_config->value("afficherConsigneSequence").toBool()));
944
                 if (ui->PSEchbAfficherConsigneSequence->isChecked())
945
                 {
946
                     ui->PSEteConsigneSequence->setHtml(m_config->value("consigneSequence").toString());
947
                 }
948
                 m_config->beginReadArray("exercice");
949
                 {
950
                    m_config->setArrayIndex(indexExercice);
951
                    qDebug()<< trUtf8("Je suis en lecture dans le array à l'index ")<<indexExercice;
952
                    ui->PSEsbDifficulte->setValue(m_config->value("niveauDifficulte").toInt());
953
                    ui->PSErbModeManuel->setChecked(m_config->value("modeManuel").toBool());
954
                    if (m_config->value("modeManuel").toBool())
955
                    {
956
                        ui->PSEfrModeManuel->setVisible(true);
957
                        ui->PSEsbNumeroPhrase->setValue(m_config->value("phraseNumero").toInt());
958
                        qDebug()<<"Lecture de "<<m_config->value("phraseNumero").toInt();
959
                        if (!m_config->value("phrase").toString().isEmpty())
960
                            ui->PSEtePhraseModeManuel->setText(m_config->value("phrase").toString());
961
                        qDebug()<<"LoadSettings(PSE) -> Ecriture de "<<ui->PSEsbNumeroPhrase->value();
962
                    }
963
                    else
964
                    {
965
                        ui->PSEfrModeManuel->setVisible(false);
966
                    }
967

    
968
                    ui->PSEchbAfficherPhrase->setChecked(m_config->value("afficherPhrase").toBool());
969
                    ui->PSEchbIgnorerPonctuation->setChecked(m_config->value("ignorerPonctuation").toBool());
970
                    ui->PSEchbAfficherConsigneExercice->setChecked(m_config->value("afficherConsigneExercice").toBool());
971
                    ui->PSEteConsigneExercice->setHtml(m_config->value("consigneExercice").toString());
972
                 }
973
                 m_config->endArray();
974
            }
975
        m_config->endGroup();
976
        break;
977
    case 8 ://onglet Recherche Rapide
978
        qDebug()<<trUtf8("Chargement des paramètres pour l'onglet ")<<ui->twEditor->tabText(8);
979
        m_config->beginGroup("rechercheRapide");
980
            if (!m_config->value("exerciceActive").toBool())
981
            {
982
                ui->wRechercheRapide->setEnabled(false);
983
            }
984
            else
985
            {
986
                ui->wRechercheRapide->setEnabled(true);
987
                ui->RRchbAfficherTexte->setChecked(m_config->value("afficherTexte").toBool());
988
                ui->RRchbGarderCouleurMotsPasses->setChecked((m_config->value("afficherErreurs").toBool()));
989
                ui->RRchbAfficherConsigneSequence->setChecked((m_config->value("afficherConsigneSequence").toBool()));
990
                if (ui->RRchbAfficherConsigneSequence->isChecked())
991
                {
992
                    ui->RRteConsigneSequence->setHtml(m_config->value("consigneSequence").toString());
993
                }
994
                m_config->beginReadArray("exercice");
995
                    {
996
                    m_config->setArrayIndex(indexExercice);
997
                    qDebug()<< trUtf8("Je suis en lecture dans le array à l'index ")<<indexExercice;
998
                    ui->RRsbDifficulte->setValue(m_config->value("niveauDifficulte").toInt());
999
                    ui->RRsbTempsAccorde->setValue(m_config->value("tempsAffichageMot").toInt());
1000

    
1001
                    ui->RRrbModeManuel->setChecked(m_config->value("modeManuel").toBool());
1002
                    if (m_config->value("modeManuel").toBool())
1003
                    {
1004
                        ui->RRfrModeManuel->setVisible(true);
1005
                        ui->RRteMotsModeManuel->setHtml(m_config->value("listeMots").toString());
1006
                        ui->RRsbNbMotsManuel->setValue(m_config->value("nbMotsATrouver").toInt());
1007
                    }
1008
                    else
1009
                    {
1010
                        ui->RRfrModeManuel->setVisible(false);
1011
                        ui->RRteMotsModeManuel->clear();
1012
                        ui->RRsbNbMotsManuel->setValue(0);
1013
                    }
1014

    
1015
                    ui->RRrbModeIntelligent->setChecked(m_config->value("modeIntelligent").toBool());
1016
                    if (m_config->value("modeIntelligent").toBool())
1017
                    {
1018
                        ui->RRfrModeIntelligent->setVisible(true);
1019
                        ui->RRsbNbMotsIntelligent->setValue(m_config->value("nbMotsATrouver").toInt());
1020
                        ui->RRcbNature->setCurrentIndex(m_config->value("indexNature").toInt());
1021
                        ui->RRcbNiveau->setCurrentIndex(m_config->value("indexNiveau").toInt());
1022
                    }
1023
                    else
1024
                    {
1025
                        ui->RRfrModeIntelligent->setVisible(false);
1026
                        ui->RRsbNbMotsIntelligent->setValue(0);
1027
                        ui->RRcbNature->setCurrentIndex(0);
1028
                        ui->RRcbNiveau->setCurrentIndex(0);
1029
                    }
1030

    
1031
                    ui->RRrbModeAutomatique->setChecked(m_config->value("modeAutomatique").toBool());
1032
                    if (m_config->value("modeAutomatique").toBool())
1033
                    {
1034
                        ui->RRfrModeAutomatique->setVisible(true);
1035
                        ui->RRsbNbMotsAutomatique->setValue(m_config->value("nbMotsATrouver").toInt());
1036
                    }
1037
                    else
1038
                    {
1039
                        ui->RRfrModeAutomatique->setVisible(false);
1040
                        ui->RRsbNbMotsAutomatique->setValue(0);
1041
                    }
1042

    
1043
                    ui->RRchbInsensibleCasse->setChecked(m_config->value("insensibleCasse").toBool());
1044
                    ui->RRchbAfficherConsigneExercice->setChecked(m_config->value("afficherConsigneExercice").toBool());
1045
                    ui->RRteConsigneExercice->setHtml(m_config->value("consigneExercice").toString());
1046
                    }
1047
                m_config->endArray();
1048
            }
1049
        m_config->endGroup();
1050
        break;
1051
    case 9 ://Onglet propriétés
1052
        qDebug()<<trUtf8("Chargement des paramètres pour l'onglet ")<<ui->twEditor->tabText(9);
1053
        break;
1054
    }
1055
    setWindowModified(false);
1056
}
1057

    
1058
void AllerEditorV1::saveSettings(int indexOnglet, int indexExercice)
1059
{
1060
    switch (indexOnglet)
1061
    {
1062
    case 0 ://Onglet Général
1063
        qDebug()<<trUtf8("Enregistrement des paramètres pour l'onglet ")<<ui->twEditor->tabText(0)<<"::";
1064
        m_config->setValue("titreTexte",ui->GEleTitre->text());
1065
        m_config->setValue("auteur",ui->GEleAuteur->text());
1066
        m_config->setValue("resume",ui->GEteResume->toPlainText());
1067
        m_config->beginGroup("texteATrous");
1068
        m_config->setValue("exerciceActive",ui->GEcbTexteTrous->isChecked());
1069
        m_config->endGroup();
1070
        m_config->beginGroup("ordreAlphabetique");
1071
        m_config->setValue("exerciceActive",ui->GEcbOrdreAlphabetique->isChecked());
1072
        m_config->endGroup();
1073
        m_config->beginGroup("motsMelanges");
1074
        m_config->setValue("exerciceActive",ui->GEcbMotsMelanges->isChecked());
1075
        m_config->endGroup();
1076
        m_config->beginGroup("phrasesMelangees");
1077
        m_config->setValue("exerciceActive",ui->GEcbPhrasesMelangees->isChecked());
1078
        m_config->endGroup();
1079
        m_config->beginGroup("paragraphesMelanges");
1080
        m_config->setValue("exerciceActive",ui->GEcbParagraphesMelanges->isChecked());
1081
        m_config->endGroup();
1082
        m_config->beginGroup("phraseSansEspace");
1083
        m_config->setValue("exerciceActive",ui->GEcbPhrasesSansEspace->isChecked());
1084
        m_config->endGroup();
1085
        m_config->beginGroup("rechercheRapide");
1086
        m_config->setValue("exerciceActive",ui->GEcbRechercheRapide->isChecked());
1087
        m_config->endGroup();
1088
        break;
1089
    case 1 ://Onglet Texte
1090
        qDebug()<<trUtf8("Enregistrement des paramètres pour l'onglet ")<<ui->twEditor->tabText(1);
1091
        if (m_isTextModify)
1092
            saveTextAsFile();
1093
        break;
1094
    case 2 ://Onglet texte à trous
1095
        qDebug()<<trUtf8("Enregistrement des paramètres pour l'onglet ")<<ui->twEditor->tabText(2)<<" ou on a nbExo = "<<m_nombreExerciceTexteTrous;
1096
        m_config->beginGroup("texteATrous");
1097
            if (!m_config->value("exerciceActive").toBool())
1098
            {
1099
            }
1100
            else
1101
            {
1102
                m_config->setValue("afficherTexteSequence",ui->TTRchbAfficherTexteSequence->isChecked());
1103
                m_config->setValue("afficherMotBienPlaces",ui->TTRchbAfficherMotsBienPlaces->isChecked());
1104
                m_config->setValue("afficherConsigneSequence",ui->TTRchbAfficherConsigneSequence->isChecked());
1105
                if (ui->TTRchbAfficherConsigneSequence->isChecked())// et il ne faut pas un else ?
1106
                {
1107
                    m_config->setValue("consigneSequence",ui->TTRteConsigneSequence->toPlainText());
1108
                }
1109
                m_config->beginWriteArray("exercice",m_nombreExerciceTexteTrous);
1110
                    {
1111
                    m_config->setArrayIndex(indexExercice);
1112
                    qDebug()<< trUtf8("Je suis en lecture dans le array à l'index ")<<indexExercice;
1113
                    m_config->setValue("niveauDifficulte",ui->TTRsbDifficulte->value());
1114
                    m_config->setValue("afficherTexteExercice",ui->TTRchbAfficherTexteExercice->isChecked());
1115
                    m_config->setValue("marqueurDebutTexte",ui->TTRsbMarqueurDebutTexte->value());
1116
                    m_config->setValue("marqueurFinTexte",ui->TTRsbMarqueurFinTexte->value());
1117
                    m_config->setValue("modeManuel",ui->TTRrbModeManuel->isChecked());
1118
                    if (ui->TTRrbModeManuel->isChecked())
1119
                    {
1120
                    m_config->setValue("listeTrous",ui->TTRteTrousModeManuel->toPlainText());
1121
                    m_config->setValue("nombreTrousAAfficher",ui->TTRsbNbTrousManuel->value());
1122
                    }
1123
                    else
1124
                    {
1125
                        m_config->setValue("listeTrous","");
1126
                    }
1127

    
1128
                    m_config->setValue("modeIntelligent",ui->TTRrbModeIntelligent->isChecked());
1129
                    if (ui->TTRrbModeIntelligent->isChecked())
1130
                    {
1131
                    m_config->setValue("nombreTrousAAfficher",ui->TTRsbNbTrousIntelligent->value());
1132
                    m_config->setValue("indexNature",ui->TTRcbNature->currentIndex());
1133
                    m_config->setValue("indexNiveau",ui->TTRcbNiveau->currentIndex());
1134
                    }
1135
                    else
1136
                    {
1137
                        m_config->setValue("indexNature","");
1138
                        m_config->setValue("indexNiveau","");
1139
                    }
1140

    
1141
                    m_config->setValue("modeAutomatique",ui->TTRrbModeAutomatique->isChecked());
1142
                    if (ui->TTRrbModeAutomatique->isChecked())
1143
                    {
1144
                        m_config->setValue("nombreTrousAAfficher",ui->TTRsbNbMotsAutomatique->value());
1145
                    }
1146

    
1147
                    m_config->setValue("afficherConsigneExercice",ui->TTRchbAfficherConsigneExercice->isChecked());
1148
                    m_config->setValue("consigneExercice",ui->TTRteConsigneExercice->toPlainText());
1149
                    }
1150
                m_config->endArray();
1151
            }
1152
       m_config->endGroup();
1153
        break;
1154
    case 3 : //(onglet ordre alpha)
1155
        qDebug()<<trUtf8("Enregistrement des paramètres pour l'onglet ")<<ui->twEditor->tabText(3)<<" ou on a nbExo = "<<m_nombreExerciceOrdreAlphabetique;
1156
        m_config->beginGroup("ordreAlphabetique");
1157
            if (m_config->value("exerciceActive").toBool())
1158
            {
1159
                m_config->setValue("afficherTexte",ui->OAchbAfficherTexte->isChecked());
1160
                m_config->setValue("afficherMotBienPlaces",ui->OAchbAfficherMotsBienPlaces->isChecked());
1161
                m_config->setValue("afficherConsigneSequence",ui->OAchbAfficherConsigneSequence->isChecked());
1162
                if (ui->OAchbAfficherConsigneSequence->isChecked())
1163
                {
1164
                    m_config->setValue("consigneSequence",ui->OAteConsigneSequence->toPlainText());
1165
                }
1166
                m_config->beginWriteArray("exercice",m_nombreExerciceOrdreAlphabetique);
1167
                    m_config->setArrayIndex(indexExercice);
1168
                    qDebug()<< trUtf8("Je suis en ecriture dans le array à l'index ")<<indexExercice;
1169
                    m_config->setValue("niveauDifficulte",ui->OAsbDifficulte->value());
1170

    
1171
                    m_config->setValue("modeManuel",ui->OArbModeManuel->isChecked());
1172
                    m_config->setValue("listeMots",ui->OAteMotsModeManuel->toPlainText());
1173
                    //qDebug()<<"Mode Manuel : "<<ui->OArbModeManuel->isChecked();
1174
                    //qDebug()<<"Liste :"<<ui->OAteMotsModeManuel->toPlainText()<<" et Nombre mots manuel = "<<ui->OAsbNbMotsManuel->value();
1175

    
1176
                    m_config->setValue("modeIntelligent",ui->OArbModeIntelligent->isChecked());
1177
                    if (ui->OArbModeIntelligent->isChecked())
1178
                    {
1179
                    m_config->setValue("indexNature",ui->OAcbNature->currentIndex());
1180
                    m_config->setValue("indexNiveau",ui->OAcbNiveau->currentIndex());
1181
                    m_config->setValue("profondeur",ui->OAsbProfondeur->value());
1182
                    m_config->setValue("nbMotsARanger",ui->OAsbNbMotsIntelligent->value());
1183
                    //qDebug()<<"Mode Intelligent : "<<ui->OArbModeIntelligent->isChecked();
1184
                    //qDebug()<<"nbMotsARanger Intelligent : "<<ui->OAsbNbMotsIntelligent->value()<<", Nature : "<<ui->OAcbNature->currentText();
1185
                    //qDebug()<<"niveau : "<<ui->OAcbNiveau->currentText()<<", Profondeur : "<<ui->OAsbProfondeur->value();
1186
                    }
1187
                    m_config->setValue("modeScolaire",ui->OArbModeScolaire->isChecked());
1188
                    if (ui->OArbModeScolaire->isChecked())
1189
                    {
1190
                        m_config->setValue("indexNature",ui->OAcbNatureScolaire->currentIndex());
1191
                        m_config->setValue("indexNiveau",ui->OAcbNiveauScolaire->currentIndex());
1192
                        m_config->setValue("profondeur",ui->OAsbProfondeurScolaire->value());
1193
                        m_config->setValue("nbMotsARanger",ui->OAsbNbMotsScolaire->value());
1194
                    }
1195
                    m_config->setValue("modeAutomatique",ui->OArbModeAutomatique->isChecked());
1196
                    //qDebug()<<"Mode Automatique : "<<ui->OArbModeAutomatique->isChecked();
1197
                    //qDebug()<<"nbMotsARanger automatique : "<<ui->OAsbNbMotsAutomatique->value();
1198
                    if (ui->OArbModeAutomatique->isChecked())
1199
                        m_config->setValue("nbMotsARanger",ui->OAsbNbMotsAutomatique->value());
1200
                    else if (ui->OArbModeManuel->isChecked())
1201
                                m_config->setValue("nbMotsARanger",ui->OAsbNbMotsManuel->value());
1202

    
1203
                    m_config->setValue("afficherConsigneExercice",ui->OAchbAfficherConsigneExercice->isChecked());
1204
                    ui->OAteConsigneExercice->setHtml(m_config->value("consigneExercice").toString());
1205
                    if (ui->OAchbAfficherConsigneExercice->isChecked())
1206
                        {
1207
                            m_config->setValue("consigneExercice",ui->OAteConsigneExercice->toPlainText());
1208
                        }
1209
                m_config->endArray();
1210
            }
1211
       m_config->endGroup();
1212
        break;
1213
    case 4://onglet mots mélangés
1214
        m_config->beginGroup("motsMelanges");
1215
            if (!m_config->value("exerciceActive").toBool())
1216
            {
1217
            }
1218
            else
1219
            {
1220
                m_config->setValue("afficherTexte",ui->MOMchbAfficherTexte->isChecked());
1221
                m_config->setValue("afficherMotBienPlaces",ui->MOMchbAfficherMotsBienPlaces->isChecked());
1222
                m_config->setValue("afficherConsigneSequence",ui->MOMchbAfficherConsigneSequence->isChecked());
1223
                if (ui->MOMchbAfficherConsigneSequence->isChecked())
1224
                {
1225
                    m_config->setValue("consigneSequence",ui->MOMteConsigneSequence->toPlainText());
1226
                }
1227
                m_config->beginWriteArray("exercice",m_nombreExerciceMotsMelanges);
1228
                    {
1229
                    m_config->setArrayIndex(indexExercice);
1230
                    qDebug()<< trUtf8("Je suis en écriture dans le array à l'index ")<<indexExercice;
1231
                    m_config->setValue("niveauDifficulte",ui->MOMsbDifficulte->value());
1232
                    m_config->setValue("afficherPhrase",ui->MOMchbAfficherPhraseExercice->isChecked());
1233
                    m_config->setValue("modeManuel",ui->MOMrbModeManuel->isChecked());
1234
                    if (m_config->value("modeManuel").toBool())
1235
                    {
1236
                    m_config->setValue("phrase",ui->MOMteMotsModeManuel->toPlainText());
1237
                    m_config->setValue("numeroPhrase",ui->MOMsbNumeroPhrase->value());
1238
                    }
1239

    
1240
                    m_config->setValue("modeAutomatique",ui->MOMrbModeAutomatique->isChecked());
1241

    
1242
                    m_config->setValue("afficherConsigneExercice",ui->MOMchbAfficherConsigneExercice->isChecked());
1243
                    m_config->setValue("consigneExercice",ui->MOMteConsigneExercice->toPlainText());
1244
                    }
1245
                m_config->endArray();
1246
            }
1247
       m_config->endGroup();
1248
        break;
1249
    case 5://onglet phrases mélangées
1250
        m_config->beginGroup("phrasesMelangees");
1251
            if (!m_config->value("exerciceActive").toBool())
1252
            {
1253
            }
1254
            else
1255
            {
1256
                m_config->setValue("afficherTexteSequence",ui->PHMchbAfficherTexteSequence->isChecked());
1257
                m_config->setValue("afficherPhrasesBienPlacees",ui->PHMchbAfficherPhrasesBienPlacees->isChecked());
1258
                m_config->setValue("afficherConsigneSequence",ui->PHMchbAfficherConsigneSequence->isChecked());
1259
                if (ui->PHMchbAfficherConsigneSequence->isChecked())
1260
                {
1261
                    m_config->setValue("consigneSequence",ui->PHMteConsigneSequence->toPlainText());
1262
                }
1263
                m_config->beginWriteArray("exercice",m_nombreExercicePhrasesMelangees);
1264
                    {
1265
                    m_config->setArrayIndex(indexExercice);
1266
                    qDebug()<< trUtf8("Je suis en lecture dans le array à l'index ")<<indexExercice;
1267
                    m_config->setValue("niveauDifficulte",ui->PHMsbDifficulte->value());
1268
                    m_config->setValue("modeManuel",ui->PHMrbModeManuel->isChecked());
1269
                    if (m_config->value("modeManuel").toBool())
1270
                    {
1271
                        m_config->setValue("listePhrases",ui->PHMtePhrasesModeManuel->toPlainText());
1272
                        m_config->setValue("nbPhrasesUtilisees",ui->PHMsbNbPhrasesUtiliseesManuel->value());
1273
                        m_config->setValue("phraseDebut",ui->PHMsbPhraseDebutManuel->value());
1274
                        m_config->setValue("phraseFin",ui->PHMsbPhraseFinManuel->value());
1275
                    }
1276

    
1277
                    m_config->setValue("modeAutomatique",ui->PHMrbModeAutomatique->isChecked());
1278
                    if (m_config->value("modeAutomatique").toBool())
1279
                    {
1280
                        m_config->setValue("nbPhrasesUtilisees",ui->PHMsbNbMotsAutomatique->value());
1281
                        m_config->setValue("phrasesConsecutivesAutomatique",ui->PHMchbPhrasesConsecutivesAutomatique->isChecked());
1282
                        m_config->setValue("phraseDebut",ui->PHMsbPhraseDebutAutomatique->value());
1283
                        m_config->setValue("phraseFin",ui->PHMsbPhraseFinAutomatique->value());
1284
                    }
1285

    
1286
                    m_config->setValue("afficherTexteExercice",ui->PHMchbAfficherTexteExercice->isChecked());
1287
                    m_config->setValue("afficherConsigneExercice",ui->PHMchbAfficherConsigneExercice->isChecked());
1288
                    m_config->setValue("consigneExercice",ui->PHMteConsigneExercice->toPlainText());
1289
                    }
1290
                m_config->endArray();
1291
            }
1292
       m_config->endGroup();
1293
        break;
1294
    case 6 : //(onglet paragraphes mélangés)
1295
        qDebug()<<trUtf8("Enregistrement des paramètres pour l'onglet ")<<ui->twEditor->tabText(6);
1296
        m_config->beginGroup("paragraphesMelanges");
1297
            if (!m_config->value("exerciceActive").toBool())
1298
            {
1299
            }
1300
            else
1301
            {
1302
                 m_config->setValue("afficherTexteSequence",ui->PAMchbAfficherTexteSequence->isChecked());
1303
                 m_config->setValue("afficherParagraphesBienPlaces",ui->PAMchbAfficherParagraphesBienPlaces->isChecked());
1304
                 m_config->setValue("afficherConsigneSequence",ui->PAMchbAfficherConsigneSequence->isChecked());
1305
                 if (ui->PAMchbAfficherConsigneSequence->isChecked())
1306
                 {
1307
                     m_config->setValue("consigneSequence",ui->PAMteConsigneSequence->toPlainText());
1308
                 }
1309
                 m_config->beginWriteArray("exercice",m_nombreExerciceParagraphesMelanges);
1310
                 {
1311
                     m_config->setArrayIndex(indexExercice);
1312
                     qDebug()<< trUtf8("Je suis en écriture dans le array à l'index ")<<indexExercice;
1313
                     m_config->setValue("niveauDifficulte",ui->PAMsbDifficulte->value());
1314
                     m_config->setValue("modeManuel",ui->PAMrbModeManuel->isChecked());
1315

    
1316
                     if (m_config->value("modeManuel").toBool())
1317
                     {
1318
                         m_config->setValue("paragrapheDebut",ui->PAMsbParagrapheDebutManuel->value()-1);
1319
                         m_config->setValue("paragrapheFin",ui->PAMsbParagrapheFinManuel->value()-1);
1320
                         m_config->setValue("listeParagraphes",ui->PAMleParagraphesChoisis->text());
1321
                     }
1322

    
1323
                     m_config->setValue("modeAutomatique",ui->PAMrbModeAuto->isChecked());
1324
                     if (m_config->value("modeAutomatique").toBool())
1325
                     {
1326
                         m_config->setValue("nombreParagraphes",ui->PAMsbNombreParagraphesAuto->value());
1327
                         m_config->setValue("listeParagraphes","");
1328
                         m_config->value("paragrapheDebut",ui->PAMsbParagrapheDebutAuto->value()-1);
1329
                         m_config->value("paragrapheFin",ui->PAMsbParagrapheFinAuto->value()-1);
1330
                     }
1331
                     m_config->setValue("afficherTexteExercice",ui->PAMchbAfficherTexteExercice->isChecked());
1332
                     m_config->setValue("afficherConsigneExercice",ui->PAMchbAfficherConsigneExercice->isChecked());
1333
                     m_config->setValue("consigneExercice",ui->PAMteConsigneExercice->toPlainText());
1334
                 }
1335
                 m_config->endArray();
1336
            }
1337
        m_config->endGroup();
1338
        break;
1339
    case 7 : //(onglet phrases sans espace)
1340
        qDebug()<<trUtf8("Enregistrement des paramètres pour l'onglet ")<<ui->twEditor->tabText(7);
1341
        m_config->beginGroup("phraseSansEspace");
1342
            if (!m_config->value("exerciceActive").toBool())
1343
            {
1344
            }
1345
            else
1346
            {
1347
                 m_config->setValue("afficherTexte",ui->PSEchbAfficherTexte->isChecked());
1348
                 m_config->setValue("afficherClicsMalPlaces",ui->PSEchbAfficherClicsMalPlaces->isChecked());
1349
                 m_config->setValue("afficherConsigneSequence",ui->PSEchbAfficherConsigneSequence->isChecked());
1350
                 if (ui->PSEchbAfficherConsigneSequence->isChecked())
1351
                 {
1352
                     m_config->setValue("consigneSequence",ui->PSEteConsigneSequence->toPlainText());
1353
                 }
1354
                 m_config->beginWriteArray("exercice", m_nombreExercicePhrasesSansEspace);
1355
                 {
1356
                    m_config->setArrayIndex(indexExercice);
1357
                    qDebug()<< trUtf8("Je suis en écriture dans le array à l'index ")<<indexExercice;
1358
                    m_config->setValue("niveauDifficulte",ui->PSEsbDifficulte->value());
1359
                    m_config->setValue("modeManuel", ui->PSErbModeManuel->isChecked());
1360
                    m_config->setValue("modeAutomatique",ui->PSErbModeAutomatique->isChecked());
1361
                    m_config->setValue("phrase",ui->PSEtePhraseModeManuel->toPlainText());
1362
                    m_config->setValue("phraseNumero",ui->PSEsbNumeroPhrase->value());
1363
                    m_config->setValue("afficherPhrase",ui->PSEchbAfficherPhrase->isChecked());
1364
                    m_config->setValue("ignorerPonctuation",ui->PSEchbIgnorerPonctuation->isChecked());
1365
                    m_config->setValue("afficherConsigneExercice",ui->PSEchbAfficherConsigneExercice->isChecked());
1366
                    m_config->setValue("consigneExercice",ui->PSEteConsigneExercice->toPlainText());
1367
                 }
1368
                 m_config->endArray();
1369
            }
1370
        m_config->endGroup();
1371
        break;
1372
    case 8 ://onglet Recherche Rapide
1373
        qDebug()<<trUtf8("Enregistrement des paramètres pour l'onglet ")<<ui->twEditor->tabText(8);
1374
        m_config->beginGroup("rechercheRapide");
1375
            if (!m_config->value("exerciceActive").toBool())
1376
            {
1377
            }
1378
            else
1379
            {
1380
                m_config->setValue("afficherTexte",ui->RRchbAfficherTexte->isChecked());
1381
                m_config->setValue("afficherErreurs",ui->RRchbGarderCouleurMotsPasses->isChecked());
1382
                m_config->setValue("afficherConsigneSequence",ui->RRchbAfficherConsigneSequence->isChecked());
1383
                if (ui->RRchbAfficherConsigneSequence->isChecked())
1384
                {
1385
                    m_config->setValue("consigneSequence",ui->RRteConsigneSequence->toPlainText());
1386
                }
1387
                m_config->beginWriteArray("exercice",m_nombreExerciceRechercheRapide);
1388
                    {
1389
                    m_config->setArrayIndex(indexExercice);
1390
                    qDebug()<< trUtf8("Je suis en ecriture dans le array à l'index ")<<indexExercice;
1391
                    m_config->setValue("niveauDifficulte",ui->RRsbDifficulte->value());
1392
                    m_config->setValue("tempsAffichageMot",ui->RRsbTempsAccorde->value());
1393

    
1394
                    m_config->setValue("modeManuel",ui->RRrbModeManuel->isChecked());
1395
                    m_config->setValue("listeMots",ui->RRteMotsModeManuel->toPlainText());
1396
                    //qDebug()<<"Mode Manuel : "<<ui->RRrbModeManuel->isChecked();
1397
                    //qDebug()<<"Liste :"<<ui->RRteMotsModeManuel->toPlainText()<<" et Nombre mots manuel = "<<ui->RRsbNbMotsManuel->value();
1398

    
1399
                    m_config->setValue("modeIntelligent",ui->RRrbModeIntelligent->isChecked());
1400
                    m_config->setValue("indexNature",ui->RRcbNature->currentIndex());
1401
                    //Sup m_config->setValue(("nature"),ui->RRcbNature->currentText());
1402
                    m_config->setValue("indexNiveau",ui->RRcbNiveau->currentIndex());
1403
                    //Sup m_config->setValue("niveau",ui->RRcbNiveau->currentText());
1404
                    //qDebug()<<"Mode Intelligent : "<<ui->RRrbModeIntelligent->isChecked();
1405
                    //qDebug()<<"nbMotsARanger Intelligent : "<<ui->RRsbNbMotsIntelligent->value()<<", Nature : "<<ui->RRcbNature->currentText();
1406
                    //qDebug()<<"niveau : "<<ui->RRcbNiveau->currentText();
1407

    
1408
                    m_config->setValue("modeAutomatique",ui->RRrbModeAutomatique->isChecked());
1409
                    //qDebug()<<"Mode Automatique : "<<ui->RRrbModeAutomatique->isChecked();
1410
                    //qDebug()<<"nbMotsATrouver automatique : "<<ui->RRsbNbMotsAutomatique->value();
1411
                    if (ui->RRrbModeAutomatique->isChecked())
1412
                        m_config->setValue("nbMotsATrouver",ui->RRsbNbMotsAutomatique->value());
1413
                         else if (ui->RRrbModeManuel->isChecked())
1414
                                m_config->setValue("nbMotsATrouver",ui->RRsbNbMotsManuel->value());
1415

    
1416
                    m_config->setValue("insensibleCasse",ui->RRchbInsensibleCasse->isChecked());
1417
                    m_config->setValue("afficherConsigneExercice",ui->RRchbAfficherConsigneExercice->isChecked());
1418
                    ui->RRteConsigneExercice->setHtml(m_config->value("consigneExercice").toString());
1419
                    if (ui->RRchbAfficherConsigneExercice->isChecked())
1420
                        {
1421
                            m_config->setValue("consigneExercice",ui->RRteConsigneExercice->toPlainText());
1422
                        }
1423
                    }
1424
                m_config->endArray();
1425
            }
1426
       m_config->endGroup();
1427
        break;
1428
    case 9 ://Onglet propriétés
1429
        qDebug()<<trUtf8("Enregistrement des paramètres pour l'onglet ")<<ui->twEditor->tabText(9);
1430
        break;
1431
    }
1432
    setWindowModified(false);
1433
}
1434

    
1435
/* ------------------------------------------------------------------------------------------------------------------------ */
1436

    
1437
/* --------------------------- Fonctions utiles triées par ordre d'exercice dans les onglets  ----------------------------- */
1438

    
1439
void AllerEditorV1::on_TEbtnModifier_clicked()
1440
{
1441
    ui->TEteTexte->setReadOnly(false);
1442
    ui->TEbtnNettoyer->setEnabled(true);
1443
    if (ui->TEbtnModifier->text()==trUtf8("&Enregistrer"))
1444
    {
1445
        saveTextAsFile();
1446
    }
1447
}
1448

    
1449
void AllerEditorV1::on_TEbtnNettoyer_clicked()
1450
{
1451
    m_text->abeSetText(m_text->abetextNettoieText());
1452
    ui->TEteTexte->setText(m_text->abeGetText());
1453
    correcteur = new AbulEduCorrecteurV1(ui->TEteTexte);
1454

    
1455
}
1456

    
1457
void AllerEditorV1::onTEtextModify()
1458
{
1459
    m_isTextModify = true;
1460
    ui->TEbtnModifier->setText(trUtf8("&Enregistrer"));
1461
    ui->TEbtnModifier->setEnabled(true);
1462
    m_text->abeSetText(ui->TEteTexte->toPlainText());
1463
}
1464

    
1465
void AllerEditorV1::saveTextAsFile()
1466
{
1467
    QDir().mkpath(m_directoryWork->absolutePath()+"/data");
1468
    QString filename = QFileDialog::getSaveFileName(this, trUtf8("Sauvegarder le fichier texte modifié ?"), m_directoryWork->absolutePath()+"/data/"+m_config->value("fichierTexte").toString(), trUtf8("Fichier texte (*.txt)"));
1469
    if (filename=="")
1470
        return;
1471
    if (filename.right(4) != ".txt")
1472
        filename.append(".txt");
1473
    QFile file(filename);
1474
    //On sauvegarde le fichier
1475
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
1476
    {
1477
        qDebug() << "Erreur d'ouverture en ecriture du fichier texte";
1478
        return;
1479
    }
1480
    QTextStream writeData(&file);
1481
    writeData << ui->TEteTexte->toPlainText();
1482
    file.close();
1483
    m_config->setValue("fichierTexte",filename);
1484
    QMessageBox::information(this, trUtf8("Fichier sauvegardé"), trUtf8("Votre travail a été sauvegardé dans le fichier suivant :\n") + filename);
1485
    QFileInfo fi(filename);
1486
    this->setWindowTitle(abeApp->getAbeApplicationLongName()+" : "+fi.fileName()+"[*]");
1487
    this->setWindowModified(false);
1488
    m_config->setValue("fichierTexte",fi.fileName());
1489
    qDebug()<<"QString filename = "<<filename<<" et QFileInfo fi = "<<fi.fileName();
1490
    m_isTextModify = false;
1491
    ui->TEbtnModifier->setText(trUtf8("&Modifier"));
1492
    ui->TEteTexte->setReadOnly(true);
1493
}
1494

    
1495
QStringList AllerEditorV1::recursiveRide(QString directoryName)
1496
{
1497
    QStringList result;
1498
    QDir dir(directoryName);
1499
    //Attention a ne pas prendre le repertoire "." et ".."
1500
    foreach(QFileInfo fileInfo, dir.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot)) {
1501
        if(fileInfo.isDir()) {
1502
            //C'est ici que le parcours est récursif
1503
            result << recursiveRide(fileInfo.absoluteFilePath());
1504
        }
1505
        else {
1506
            result << fileInfo.absoluteFilePath();
1507
        }
1508
    }
1509
    return result;
1510
}
1511

    
1512
void AllerEditorV1::on_TTRbtnChoixMots_clicked()
1513
{
1514
    m_previousStart = 0;
1515
    m_scrollArea = new QScrollArea();
1516
    QWidget* content = new QWidget(m_scrollArea.data());
1517

    
1518
    m_textEditForHoles = new QTextEdit(m_text->abeGetText(),content);
1519
    QTextCursor curseur(m_textEditForHoles->document());
1520
    curseur.setPosition(ui->TTRsbMarqueurDebutTexte->value(),QTextCursor::MoveAnchor);
1521
    curseur.setPosition(ui->TTRsbMarqueurFinTexte->value(),QTextCursor::KeepAnchor);
1522
    m_textEditForHoles->setText(curseur.selectedText());
1523

    
1524
    QPushButton* TTRbtnValider = new QPushButton(trUtf8("&Valider"),content);
1525
    connect(TTRbtnValider, SIGNAL(clicked()),this, SLOT(on_TTRbtnValider_clicked()));
1526
    QPushButton* TTRbtnAnnuler = new QPushButton(trUtf8("&Annuler"),content);
1527
    connect(TTRbtnAnnuler, SIGNAL(clicked()),this, SLOT(on_TTRbtnAnnuler_clicked()));
1528
    QPushButton* TTRbtnReinitialiser = new QPushButton(trUtf8("&Tout effacer"),content);
1529
    connect(TTRbtnReinitialiser, SIGNAL(clicked()),this, SLOT(on_TTRbtnReinitialiser_clicked()));
1530

    
1531
    m_textEditForHoles->zoomIn(2);
1532
/* Ancienne façon, avec index affichés
1533
    QStringList tabTrous(ui->TTRteTrousModeManuel->toPlainText().split(";"));
1534
    m_selectedObjectsList = tabTrous;
1535
    if(tabTrous.size() > 1) {
1536
            QTextCursor curseur(m_textEditForHoles->document());
1537
        for(int i = 0; i < tabTrous.size()-1; i+=2) {
1538
            curseur.setPosition(tabTrous.at(i).toInt(), QTextCursor::MoveAnchor);
1539
            curseur.setPosition(tabTrous.at(i+1).toInt(), QTextCursor::KeepAnchor);
1540
            QTextCharFormat textFormatSelected;
1541
            textFormatSelected.setBackground(QBrush(QColor(abe::STYLESELECTION.remove("background-color: "))));
1542
            curseur.setCharFormat(textFormatSelected);
1543
        }
1544
    }
1545
    */
1546

    
1547
    /* Nouvelle façon, avec mots affichés... ce qui pose un problème pour l'appel dans closure qui attend des index */
1548
    QStringList tabTrous(ui->TTRteTrousModeManuel->toPlainText().split("|"));
1549
    m_selectedObjectsList = tabTrous;
1550
    for (int i=0;i<tabTrous.size();i++)
1551
    {
1552
        QTextCursor curseur = m_textEditForHoles->document()->find(tabTrous[i],0,QTextDocument::FindCaseSensitively);
1553
        QTextCharFormat textFormatSelected;
1554
        textFormatSelected.setBackground(QBrush(QColor(abe::STYLESELECTION.remove("background-color: "))));
1555
        curseur.setCharFormat(textFormatSelected);
1556
    }
1557
//    m_holeArray.clear();
1558
    connect(m_textEditForHoles, SIGNAL(selectionChanged()),this, SLOT(onTTRtextSelected()));
1559
    m_scrollArea.data()->setFixedSize(width(),height());
1560
    m_textEditForHoles->setFixedSize(width(),height() - 2*TTRbtnValider->height());
1561
    TTRbtnReinitialiser->move(10,m_textEditForHoles->height() + 0.5*TTRbtnValider->height());
1562
    TTRbtnValider->move(m_textEditForHoles->width()-(10+TTRbtnValider->width()),m_textEditForHoles->height() + 0.5*TTRbtnValider->height());
1563
    TTRbtnAnnuler->move(m_textEditForHoles->width()-2*(10+TTRbtnValider->width()),m_textEditForHoles->height() + 0.5*TTRbtnValider->height());
1564
    m_scrollArea.data()->setWidgetResizable(true);
1565
    m_scrollArea.data()->setWidget(content);
1566
    m_scrollArea.data()->show();
1567
}
1568

    
1569
void AllerEditorV1::on_TTRbtnAnnuler_clicked()
1570
{
1571
    if (m_scrollArea)
1572
        m_scrollArea.data()->close();
1573
    ui->TTRteTrousModeManuel->setText(m_selectedObjectsList.join(";"));
1574
}
1575

    
1576
void AllerEditorV1::on_TTRbtnValider_clicked()
1577
{
1578
    QTextCursor curseur(m_textEditForHoles->document());
1579
//    qSort(m_selectedObjectsList.begin(),m_selectedObjectsList.end());
1580
    QString ajoutPourCadre;// = m_selectedObjectsList.join(";");
1581
    for (int i=0;i<m_holeArray.count();i++)
1582
    {
1583
    curseur.setPosition(m_holeArray.at(i).first,QTextCursor::MoveAnchor);
1584
    curseur.setPosition(m_holeArray.at(i).second,QTextCursor::KeepAnchor);
1585
    ajoutPourCadre.append(curseur.selectedText()+"|");
1586
    }
1587
//    for (int i=0;i<m_holeArray.count();i++)
1588
//    {
1589
//        ajoutPourCadre.append(QString::number(m_holeArray.at(i).first)+";"+QString::number(m_holeArray.at(i).second)+";");
1590
//    }
1591
    ui->TTRteTrousModeManuel->setText(ajoutPourCadre);
1592
    ui->TTRsbNbTrousManuel->setMaximum(m_holeArray.count());
1593
    ui->TTRsbNbTrousManuel->setValue(m_holeArray.count());
1594
    if (m_scrollArea)
1595
        m_scrollArea.data()->close();
1596
}
1597

    
1598
void AllerEditorV1::on_TTRbtnReinitialiser_clicked()
1599
{
1600
    m_selectedObjectsList.clear();
1601
    QTextCursor curseur(m_textEditForHoles->document());
1602
        curseur.setPosition(QTextCursor::Start,QTextCursor::MoveAnchor);
1603
        curseur.setPosition(QTextCursor::End,QTextCursor::KeepAnchor);
1604
        QTextCharFormat textFormatSelected;
1605
        textFormatSelected.setBackground(QBrush(QColor(abe::STYLEBLANC.remove("background-color: "))));
1606
        curseur.setCharFormat(textFormatSelected);
1607
    m_holeArray.clear();
1608
}
1609

    
1610
void AllerEditorV1::onTTRtextSelected()
1611
{
1612
    QTextCursor curseur(m_textEditForHoles->document());
1613
    if(m_lastSelection.first != m_lastSelection.second)
1614
    {
1615
        int cursorPos = curseur.position();
1616
        curseur.setPosition(m_lastSelection.first,QTextCursor::MoveAnchor);
1617
        curseur.setPosition(m_lastSelection.second,QTextCursor::KeepAnchor);
1618
        QTextCharFormat textFormatSelected;
1619
        textFormatSelected.setBackground(QBrush(QColor(abe::STYLEBLANC.remove("background-color: "))));
1620
        curseur.setCharFormat(textFormatSelected);
1621
        curseur.setPosition(cursorPos);
1622
    }
1623
   QPair<int,int> listeTamponTrous;
1624
    int debut = m_textEditForHoles->textCursor().selectionStart();
1625
    if (m_previousStart != debut)
1626
    {
1627
        m_previousStart = debut;
1628
    }
1629
    int fin = m_textEditForHoles->textCursor().selectionEnd();
1630
    qDebug()<<"PreviousStart : "<<m_previousStart<<", Debut : "<<debut<<" et fin : "<<fin;
1631

    
1632
    if (debut < fin)
1633
    {
1634
        //        if (debut == m_previousStart)
1635
        //        {
1636
        //            if (!listeTamponTrous.isEmpty())
1637
        //                listeTamponTrous.removeLast();
1638
        //        }
1639
        listeTamponTrous= QPair<int, int>(debut,fin);
1640
        qDebug()<<"Trou"<<listeTamponTrous;
1641
    }
1642
    qDebug()<<"Trou ajoute : "<<listeTamponTrous;
1643
    if (listeTamponTrous.first != listeTamponTrous.second)
1644
    {
1645
        if (!m_holeArray.isEmpty())
1646
        {
1647
            if (m_holeArray.last().first == listeTamponTrous.first
1648
                    || m_holeArray.last().second == listeTamponTrous.second
1649
                    || m_holeArray.last().first == listeTamponTrous.second
1650
                    || m_holeArray.last().second == listeTamponTrous.first)
1651
            {
1652
                m_holeArray.removeLast();
1653
            }
1654
        }
1655
        m_holeArray.append(listeTamponTrous);
1656
        m_lastSelection = m_holeArray.last();
1657
    }
1658
    qDebug()<<"Liste produite : "<<m_holeArray;
1659

    
1660
    for (int i=0;i<m_holeArray.count();i++)
1661
    {
1662
    curseur.setPosition(m_holeArray.at(i).first,QTextCursor::MoveAnchor);
1663
    curseur.setPosition(m_holeArray.at(i).second,QTextCursor::KeepAnchor);
1664
    QTextCharFormat textFormatSelected;
1665
    textFormatSelected.setBackground(QBrush(QColor(abe::STYLESELECTION.remove("background-color: "))));
1666
    curseur.setCharFormat(textFormatSelected);
1667
    }
1668
}
1669

    
1670
void AllerEditorV1::on_OAbtnChoixMots_clicked()
1671
{
1672
    m_previousSelection = ui->OAteMotsModeManuel->toPlainText();
1673
    QMap<int,QString> motsIndexes = m_text->abetextMots();
1674
    int cleDebut = 0;
1675
    int cleFin = motsIndexes.count();
1676

    
1677
    displayToChoice(motsIndexes,cleDebut,cleFin,Qt::Horizontal);
1678
}
1679

    
1680
void AllerEditorV1::on_OAteMotsModeManuel_textChanged()
1681
{
1682
    ui->OAsbNbMotsManuel->setMaximum(ui->OAteMotsModeManuel->toPlainText().split(";",QString::SkipEmptyParts).count());
1683
}
1684

    
1685
void AllerEditorV1::on_MOMbtnChoixMots_clicked()
1686
{
1687
    m_previousSelection = ui->MOMteMotsModeManuel->toPlainText();
1688
    QMap<int,QString> phrasesIndexees = m_text->abetextPhrases();
1689
    int cleDebut = 0;
1690
    int cleFin = phrasesIndexees.count()-1;
1691

    
1692
    displayToChoice(phrasesIndexees,cleDebut,cleFin);;
1693
}
1694

    
1695
void AllerEditorV1::on_MOMteMotsModeManuel_textChanged()
1696
{
1697
    ui->MOMsbNumeroPhrase->setValue(-1);
1698
}
1699

    
1700
void AllerEditorV1::on_MOMsbNumeroPhrase_valueChanged(int arg1)
1701
{
1702
    ui->MOMteMotsModeManuel->blockSignals(true);
1703
    if (arg1 > 0)
1704
    {
1705
        ui->MOMteMotsModeManuel->setText(m_text->abetextPhrases().value(arg1-1));
1706
    }
1707
    ui->MOMteMotsModeManuel->blockSignals(false);
1708
}
1709

    
1710
void AllerEditorV1::on_PHMbtnChoixPhrasesManuel_clicked()
1711
{
1712
    m_previousSelection = ui->PHMtePhrasesModeManuel->toPlainText();
1713
    QMap<int,QString> phrasesIndexees = m_text->abetextPhrases();
1714
    int cleDebut = ui->PHMsbPhraseDebutManuel->value()-1;
1715
    int cleFin = ui->PHMsbPhraseFinManuel->value()-1;
1716

    
1717
    displayToChoice(phrasesIndexees,cleDebut,cleFin);
1718
}
1719

    
1720
void AllerEditorV1::on_PHMtePhrasesModeManuel_textChanged()
1721
{
1722
    ui->PHMsbNbPhrasesUtiliseesManuel->setMaximum(ui->PHMtePhrasesModeManuel->toPlainText().split(";",QString::SkipEmptyParts).count());
1723

    
1724
}
1725

    
1726
void AllerEditorV1::on_PAMbtnChoixParagraphes_clicked()
1727
{
1728
    m_previousSelection = ui->PAMleParagraphesChoisis->text();
1729
    QMap<int,QString> phrasesIndexees = m_text->abetextPhrases();
1730
    int cleDebut = ui->PAMsbParagrapheDebutManuel->value()-1;
1731
    int cleFin = ui->PAMsbParagrapheFinManuel->value()-1;
1732

    
1733
    displayToChoice(phrasesIndexees,cleDebut,cleFin);
1734
}
1735

    
1736
void AllerEditorV1::on_PSEbtnChoixPhrase_clicked()
1737
{
1738
    m_previousSelection = ui->PSEtePhraseModeManuel->toPlainText();
1739
    QMap<int,QString> phrasesIndexees = m_text->abetextPhrases();
1740
    int cleDebut = 0;
1741
    int cleFin = phrasesIndexees.count()-1;
1742

    
1743
    displayToChoice(phrasesIndexees,cleDebut,cleFin);;
1744
}
1745

    
1746
void AllerEditorV1::on_PSEtePhraseModeManuel_textChanged()
1747
{
1748
    ui->PSEsbNumeroPhrase->setValue(-1);
1749
}
1750

    
1751
void AllerEditorV1::on_PSEsbNumeroPhrase_valueChanged(int arg1)
1752
{
1753
    ui->PSEtePhraseModeManuel->blockSignals(true);
1754
    if (arg1 > 0)
1755
    {
1756
        ui->PSEtePhraseModeManuel->setText(m_text->abetextPhrases().value(arg1-1));
1757
    }
1758
    ui->PSEtePhraseModeManuel->blockSignals(false);
1759
}
1760

    
1761
void AllerEditorV1::on_RRbtnChoixMots_clicked()
1762
{
1763
    m_selectedObjectsList = ui->RRteMotsModeManuel->toPlainText().split(";");
1764
    QMap<int,QString> motsIndexes = m_text->abetextMots();
1765
    int cleDebut = 0;
1766
    int cleFin = motsIndexes.count();
1767

    
1768
    displayToChoice(motsIndexes,cleDebut,cleFin,Qt::Horizontal);
1769
}
1770

    
1771
void AllerEditorV1::on_RRteMotsModeManuel_textChanged()
1772
{
1773
    ui->RRsbNbMotsManuel->setMaximum(ui->RRteMotsModeManuel->toPlainText().split(";",QString::SkipEmptyParts).count());
1774
}
1775

    
1776
void AllerEditorV1::onAbuleduLabelSelected(int rangRecu)
1777
{
1778
    qDebug()<<"onAbuleduLabelSelected("<<rangRecu<<") avec "<<m_selectedObjectsList;
1779
    QStringList listeSelectionsAfficheePourUtilisateurs;
1780
    qDebug()<<trUtf8("On a cliqué sur le mot, phrase ou paragraphe n°")<<rangRecu+1;
1781
    if (m_selectedObjectsList.contains(QString::number(rangRecu)))
1782
        m_selectedObjectsList.removeOne(QString::number(rangRecu));
1783
    else
1784
    {
1785
        if ((ui->twEditor->currentIndex() == 4 || ui->twEditor->currentIndex() == 7) && !m_selectedObjectsList.isEmpty())
1786
        {
1787
            qDebug()<<"etape";
1788
            int precedentIndex = m_selectedObjectsList.last().toInt();
1789
            m_displayedObjectsMap.value(precedentIndex)->setStyleSheet(abe::STYLEBLANC);
1790
            m_selectedObjectsList.clear();
1791
        }
1792
        m_selectedObjectsList << QString::number(rangRecu);
1793
    }
1794

    
1795
qDebug()<<"onAbuleduLabelSelected(fin) avec "<<m_selectedObjectsList;
1796
}
1797

    
1798
void AllerEditorV1::on_btnAnnuler_clicked()
1799
{
1800
    if (m_displayWidget)
1801
        m_displayWidget.data()->close();
1802
    switch (ui->twEditor->currentIndex())
1803
    {
1804
    case 3:
1805
        ui->OAteMotsModeManuel->clear();
1806
        m_selectedObjectsList.sort();
1807
        ui->OAteMotsModeManuel->setText(m_previousSelection);
1808
        break;
1809
    case 4:
1810
        ui->MOMteMotsModeManuel->clear();
1811
        m_selectedObjectsList.sort();
1812
        ui->MOMteMotsModeManuel->setText(m_previousSelection);
1813
        break;
1814
    case 5:
1815
        ui->PHMtePhrasesModeManuel->clear();
1816
        m_selectedObjectsList.sort();
1817
        ui->PHMtePhrasesModeManuel->setText(m_previousSelection);
1818
        break;
1819
    case 6:
1820
        ui->PAMleParagraphesChoisis->clear();
1821
        m_selectedObjectsList.sort();
1822
        ui->PAMleParagraphesChoisis->setText(m_previousSelection);
1823
        break;
1824
    case 7:
1825
        ui->PSEtePhraseModeManuel->clear();
1826
        m_selectedObjectsList.sort();
1827
        ui->PSEtePhraseModeManuel->setText(m_previousSelection);
1828
        break;
1829
    case 8:
1830
        ui->RRteMotsModeManuel->clear();
1831
        m_selectedObjectsList.sort();
1832
        ui->RRteMotsModeManuel->setText(m_previousSelection);
1833
        break;
1834
    default:
1835
        QMessageBox::warning(this, trUtf8("Code moisi..."), trUtf8("Fonction appelée sur un onglet pas prévu pour ! "));
1836
        break;
1837
    }
1838
}
1839

    
1840
void AllerEditorV1::on_btnValider_clicked()
1841
{
1842
    QString chaineAffichage = "";
1843
    int tailleSelection =0;
1844
 qDebug()<<"on_btnValider_clicked() avec "<<m_selectedObjectsList;
1845
 foreach(QString rangEnString,m_selectedObjectsList)
1846
 {
1847
     qDebug()<<rangEnString<<" :: "<<m_displayedObjectsMap.value(rangEnString.toInt())->toPlainText();
1848
 }
1849
    if (m_displayWidget)
1850
        m_displayWidget.data()->close();
1851
    switch (ui->twEditor->currentIndex())
1852
    {
1853
    case 3:
1854
        if (!m_selectedObjectsList.isEmpty())
1855
        {
1856
            ui->OAteMotsModeManuel->clear();
1857
            m_selectedObjectsList.sort();
1858
            foreach(QString rangEnString,m_selectedObjectsList)
1859
            {
1860
                chaineAffichage.append(m_displayedObjectsMap.value(rangEnString.toInt())->toPlainText()+";");
1861
                tailleSelection++;
1862
            }
1863
            ui->OAteMotsModeManuel->setText(chaineAffichage );
1864
            ui->OAsbNbMotsManuel->setMaximum(tailleSelection);
1865
            ui->OAsbNbMotsManuel->setValue(tailleSelection);
1866
        }
1867
        break;
1868
    case 4:
1869
        if (!m_selectedObjectsList.isEmpty())
1870
        {
1871
            ui->MOMteMotsModeManuel->blockSignals(true);
1872
            ui->MOMsbNumeroPhrase->blockSignals(true);
1873
            ui->MOMteMotsModeManuel->setText(m_displayedObjectsMap.value(m_selectedObjectsList.last().toInt())->toPlainText());
1874
            ui->MOMsbNumeroPhrase->setValue(m_selectedObjectsList.last().toInt()+1);
1875
            ui->MOMsbNumeroPhrase->setMaximum(m_displayedObjectsMap.count());
1876
            ui->MOMteMotsModeManuel->blockSignals(false);
1877
            ui->MOMsbNumeroPhrase->blockSignals(false);
1878
        }
1879
        break;
1880
    case 5:
1881
        if (!m_selectedObjectsList.isEmpty())
1882
        {
1883
            ui->PHMtePhrasesModeManuel->clear();
1884
            m_selectedObjectsList.sort();
1885
            foreach(QString rangEnString,m_selectedObjectsList)
1886
            {
1887
                chaineAffichage.append(QString::number(rangEnString.toInt()+1)+";");
1888
                tailleSelection++;
1889
            }
1890
            ui->PHMtePhrasesModeManuel->setText(chaineAffichage);
1891
            ui->PHMsbNbPhrasesUtiliseesManuel->setMaximum(tailleSelection);
1892
        }
1893
        break;
1894
    case 6:
1895
        if (!m_selectedObjectsList.isEmpty())
1896
        {
1897
            ui->PAMleParagraphesChoisis->clear();
1898
            m_selectedObjectsList.sort();
1899
            foreach(QString rangEnString,m_selectedObjectsList)
1900
            {
1901
                chaineAffichage.append(QString::number(rangEnString.toInt()+1)+";");
1902
                tailleSelection++;
1903
            }
1904
            ui->PAMleParagraphesChoisis->setText(chaineAffichage);
1905
        }
1906
        break;
1907
    case 7:
1908
        if (!m_selectedObjectsList.isEmpty())
1909
        {
1910
            ui->PSEtePhraseModeManuel->blockSignals(true);
1911
            ui->PSEsbNumeroPhrase->blockSignals(true);
1912
            ui->PSEsbNumeroPhrase->setValue(m_selectedObjectsList.last().toInt()+1);
1913
            ui->PSEtePhraseModeManuel->setText(m_displayedObjectsMap.value(m_selectedObjectsList.last().toInt())->toPlainText());
1914
            ui->PSEsbNumeroPhrase->setMaximum(m_displayedObjectsMap.count());
1915
            ui->PSEtePhraseModeManuel->blockSignals(false);
1916
            ui->PSEsbNumeroPhrase->blockSignals(false);
1917
        }
1918
        break;
1919
    case 8:
1920
        if (!m_selectedObjectsList.isEmpty())
1921
        {
1922
            ui->RRteMotsModeManuel->clear();
1923
            m_selectedObjectsList.sort();
1924
            foreach(QString rangEnString,m_selectedObjectsList)
1925
            {
1926
                chaineAffichage.append(m_displayedObjectsMap.value(rangEnString.toInt())->toPlainText()+";");
1927
                tailleSelection++;
1928
            }
1929
            ui->RRteMotsModeManuel->setText(chaineAffichage);
1930
            ui->RRsbNbMotsManuel->setMaximum(tailleSelection);
1931
        }
1932
        break;
1933
    default:
1934
        QMessageBox::warning(this, trUtf8("Code moisi..."), trUtf8("Fonction appelée sur un onglet pas prévu pour ! "));
1935
        break;
1936
    }
1937

    
1938
}
1939

    
1940
void AllerEditorV1::on_btnReinitialiser_clicked()
1941
{
1942
    m_selectedObjectsList.clear();
1943
    switch (ui->twEditor->currentIndex())
1944
    {
1945
    case 3:
1946
        ui->OAteMotsModeManuel->clear();
1947
        break;
1948
    case 4:
1949
        ui->MOMteMotsModeManuel->clear();
1950
        break;
1951
    case 5:
1952
        ui->PHMtePhrasesModeManuel->clear();
1953
        break;
1954
    case 6:
1955
        ui->PAMleParagraphesChoisis->clear();
1956
        break;
1957
    case 7:
1958
        ui->PSEtePhraseModeManuel->clear();
1959
    case 8:
1960
        ui->RRteMotsModeManuel->clear();
1961
        break;
1962
    default:
1963
        QMessageBox::warning(this, trUtf8("Code moisi..."), trUtf8("Fonction appelée sur un onglet pas prévu pour ! "));
1964
        break;
1965
    }
1966
    foreach(QPointer<AbulEduTextEditV1> elt,m_displayedObjectsMap)
1967
    {
1968
        elt.data()->setStyleSheet(abe::STYLEBLANC);
1969
    }
1970
}
1971

    
1972
void AllerEditorV1::displayToChoice(QMap<int,QString> indexed, int begining, int end, int direction)
1973
{
1974
    qDebug()<<"AllerEditorV1::displayToChoice "<<indexed;
1975
    m_selectedObjectsList.clear();
1976
    m_displayedObjectsMap.clear();
1977
    int largeurDispoPourEtiquette = this->width()-40;
1978
    int margeAutourEtiquettes = 10;
1979
    int espaceMots = 2;
1980
    int horizontalPadding = 12;
1981
    int verticalPadding = 5;
1982
    QFontMetrics mesureur(abeApp->font());
1983

    
1984
    m_displayWidget = new QWidget();
1985
    m_displayWidget.data()->setFixedSize(width(),height());
1986
    m_displayWidget.data()->show();
1987

    
1988
    QPointer<QPushButton> btnValider = new QPushButton(trUtf8("&Valider"),m_displayWidget.data());
1989
    connect(btnValider.data(), SIGNAL(clicked()),this, SLOT(on_btnValider_clicked()));
1990
    btnValider.data()->show();
1991
    QPointer<QPushButton> btnAnnuler = new QPushButton(trUtf8("&Annuler"),m_displayWidget.data());
1992
    btnAnnuler.data()->show();
1993
    connect(btnAnnuler.data(), SIGNAL(clicked()),this, SLOT(on_btnAnnuler_clicked()));
1994
    QPointer<QPushButton> btnReinitialiser = new QPushButton(trUtf8("&Tout effacer"),m_displayWidget.data());
1995
    btnReinitialiser.data()->show();
1996
    connect(btnReinitialiser.data(), SIGNAL(clicked()),this, SLOT(on_btnReinitialiser_clicked()));
1997

    
1998
    QPointer<QScrollArea> scrollAire = new QScrollArea(m_displayWidget);
1999
    scrollAire.data()->setFixedSize(width(),height()-2 * btnValider.data()->height());
2000
    qDebug()<<"ScrollArea : ("<<scrollAire.data()->width()<<" X "<<scrollAire.data()->height()<<")";
2001
    scrollAire.data()->setWidgetResizable(true);
2002
    int largeurWidget = scrollAire->width();
2003

    
2004
    QPointer<QWidget> content2 = new QWidget(scrollAire.data());
2005
    if (direction == Qt::Horizontal)
2006
    {
2007
        content2.data()->setStyleSheet(abe::STYLEBLANC);
2008
    }
2009

    
2010
    QPointer<QVBoxLayout> verticalLayout = new QVBoxLayout();
2011

    
2012
    int hauteurTotaleEtiquettes = 0;
2013
    int x = margeAutourEtiquettes;
2014
    int y = margeAutourEtiquettes;
2015
    for (int i=begining;i<=end;i++)
2016
    {
2017
        QPointer<AbulEduTextEditV1> elt = new AbulEduTextEditV1(indexed.value(i), i,content2);
2018
        elt.data()->setReadOnly(true);
2019
        elt.data()->abeSetMInitialStyleSheet(abe::STYLEBLANC);
2020
        connect(elt.data(), SIGNAL(AbulEduTextClicked(int)),this, SLOT(onAbuleduLabelSelected(int)));
2021
        if (direction == Qt::Vertical)
2022
        {
2023
//            qDebug()<<"Qt::Vertical";
2024
            content2.data()->setLayout(verticalLayout.data());
2025
            verticalLayout.data()->addWidget(elt.data());
2026
            int nombreLignes = mesureur.width(elt.data()->toPlainText())/largeurDispoPourEtiquette +1;
2027
            elt.data()->setFixedSize(largeurDispoPourEtiquette,nombreLignes*mesureur.height()+margeAutourEtiquettes);
2028
            hauteurTotaleEtiquettes += elt.data()->height()+10;
2029
            m_displayedObjectsMap.insert(i,elt);
2030
            content2.data()->setFixedSize(largeurWidget ,hauteurTotaleEtiquettes);
2031
        }
2032
        else
2033
        {
2034
//            qDebug()<<"Qt::Horizontal";
2035
            largeurDispoPourEtiquette = this->width()-scrollAire->verticalScrollBar()->width() - 20;
2036
            elt.data()->setParent(content2);
2037

    
2038

    
2039
                elt.data()->setWordWrapMode(QTextOption::NoWrap);
2040
                elt.data()->setFrameShape(QTextEdit::NoFrame);
2041
                elt.data()->setFrameShadow(QTextEdit::Plain);
2042
                elt.data()->setAlignment(Qt::AlignCenter);
2043
                elt.data()->setFixedSize(mesureur.width(elt.data()->toPlainText())+horizontalPadding,mesureur.height()+verticalPadding);
2044
                elt.data()->move(x,y);
2045
//                qDebug()<<"Element de largeur "<<elt.data()->width()<<" place en ("<<elt.data()->x()<<" X "<<elt.data()->y()<<")";
2046
                if ((x + elt.data()->width()) > largeurDispoPourEtiquette)
2047
                {
2048
                    x = margeAutourEtiquettes;
2049
                    y += mesureur.height() + margeAutourEtiquettes;
2050
                }
2051
                else
2052
                {
2053
                    x += elt.data()->width()+espaceMots;
2054
                }
2055

    
2056
                m_displayedObjectsMap.insert(i,elt);
2057
                elt.data()->show();
2058
                if (i==indexed.count()-1)
2059
                    y += mesureur.height();
2060
                content2.data()->setFixedSize(this->width() - 20  ,y + margeAutourEtiquettes);
2061
            }
2062
    }
2063

    
2064
    qDebug()<<"Content : ("<<m_displayWidget.data()->width()<<" X "<<m_displayWidget.data()->height()<<")";
2065
    scrollAire.data()->setWidget(content2.data());
2066
    scrollAire.data()->show();
2067
    btnReinitialiser.data()->move(10,scrollAire.data()->height() + 0.5*btnValider.data()->height());
2068
    btnValider.data()->move(scrollAire.data()->width()-(10+btnValider.data()->width()),scrollAire.data()->height() + 0.5*btnValider.data()->height());
2069
    btnAnnuler.data()->move(scrollAire.data()->width()-2*(10+btnValider.data()->width()),scrollAire.data()->height() + 0.5*btnValider.data()->height());
2070
}
2071

    
2072
/* --------------------------------------------------------------------------------------------------------------------------------- */
2073

    
2074
/* -------------------------------------------- Boutons "Ajouter un exercice" --------------------------------------------- */
2075

    
2076
void AllerEditorV1::on_TTRbtnAjouterExercice_clicked()
2077
{
2078
    ui->TTRfrParametresExercice->setVisible(true);
2079
    if (m_nombreExerciceTexteTrous == 0)
2080
        ui->TTRbtnAjouterExercice->setText(trUtf8("Ajouter un exercice"));
2081
    m_nombreExerciceTexteTrous++;
2082
    ui->TTRcbNumeroExercice->addItem(trUtf8("Exercice %1").arg(QString::number(m_nombreExerciceTexteTrous)));
2083
    ui->TTRcbNumeroExercice->setCurrentIndex(m_nombreExerciceTexteTrous - 1);
2084
    ui->TTRrbModeManuel->setChecked(false);
2085
    ui->TTRrbModeIntelligent->setChecked(false);
2086
    ui->TTRrbModeAutomatique->setChecked(true);
2087
}
2088

    
2089
void AllerEditorV1::on_OAbtnAjouterExercice_clicked()
2090
{
2091
    ui->OAfrParametresExercice->setVisible(true);
2092
    if (m_nombreExerciceOrdreAlphabetique == 0)
2093
        ui->OAbtnAjouterExercice->setText(trUtf8("Ajouter un exercice"));
2094
    m_nombreExerciceOrdreAlphabetique++;
2095
    ui->OAcbNumeroExercice->addItem(trUtf8("Exercice %1").arg(QString::number(m_nombreExerciceOrdreAlphabetique)));
2096
    ui->OAcbNumeroExercice->setCurrentIndex(m_nombreExerciceOrdreAlphabetique - 1);
2097
    ui->OAsbNbMotsAutomatique->setValue(6);
2098
    ui->OArbModeManuel->setChecked(false);
2099
    ui->OArbModeIntelligent->setChecked(false);
2100
    ui->OArbModeAutomatique->setChecked(true);
2101
    ui->OArbModeScolaire->setChecked(false);
2102
}
2103

    
2104
void AllerEditorV1::on_MOMbtnAjouterExercice_clicked()
2105
{
2106
    ui->MOMfrParametresExercice->setVisible(true);
2107
    if (m_nombreExerciceMotsMelanges == 0)
2108
        ui->MOMbtnAjouterExercice->setText(trUtf8("Ajouter un exercice"));
2109
    m_nombreExerciceMotsMelanges++;
2110
    ui->MOMcbNumeroExercice->addItem(trUtf8("Exercice %1").arg(QString::number(m_nombreExerciceOrdreAlphabetique)));
2111
    ui->MOMcbNumeroExercice->setCurrentIndex(m_nombreExerciceOrdreAlphabetique - 1);
2112
    ui->MOMrbModeManuel->setChecked(false);
2113
    ui->MOMrbModeAutomatique->setChecked(true);
2114
}
2115

    
2116
void AllerEditorV1::on_PHMbtnAjouterExercice_clicked()
2117
{
2118
    ui->PHMfrParametresExercice->setVisible(true);
2119
    if (m_nombreExercicePhrasesMelangees == 0)
2120
        ui->PHMbtnAjouterExercice->setText(trUtf8("Ajouter un exercice"));
2121
    m_nombreExercicePhrasesMelangees++;
2122
    ui->PHMcbNumeroExercice->addItem(trUtf8("Exercice %1").arg(QString::number(m_nombreExercicePhrasesMelangees)));
2123
    ui->PHMcbNumeroExercice->setCurrentIndex(m_nombreExercicePhrasesMelangees - 1);
2124
    ui->PHMrbModeManuel->setChecked(false);
2125
    ui->PHMrbModeAutomatique->setChecked(true);
2126
}
2127

    
2128
void AllerEditorV1::on_PAMbtnAjouterExercice_clicked()
2129
{
2130
    ui->PAMfrParametresExercice->setVisible(true);
2131
    if (m_nombreExerciceParagraphesMelanges == 0)
2132
        ui->PAMbtnAjouterExercice->setText(trUtf8("Ajouter un exercice"));
2133
    m_nombreExerciceParagraphesMelanges++;
2134
    ui->PAMcbNumeroExercice->addItem(trUtf8("Exercice %1").arg(QString::number(m_nombreExerciceParagraphesMelanges)));
2135
    ui->PAMcbNumeroExercice->setCurrentIndex(m_nombreExerciceParagraphesMelanges - 1);
2136
    ui->PAMsbDifficulte->setValue(1);
2137
    ui->PAMrbModeManuel->setChecked(false);
2138
    ui->PAMsbParagrapheDebutAuto->setValue(1);
2139
    ui->PAMsbParagrapheFinAuto->setValue(m_text->abetextParagraphes().count());
2140
    ui->PAMleParagraphesChoisis->clear();
2141
    ui->PAMchbAfficherConsigneExercice->setChecked(false);
2142
    ui->PAMteConsigneExercice->clear();
2143
}
2144

    
2145
void AllerEditorV1::on_PSEbtnAjouterExercice_clicked()
2146
{
2147
    ui->PSEfrParametresExercice->setVisible(true);
2148
    if (m_nombreExercicePhrasesSansEspace == 0)
2149
        ui->PSEbtnAjouterExercice->setText(trUtf8("Ajouter un exercice"));
2150
    m_nombreExercicePhrasesSansEspace++;
2151
    ui->PSEcbNumeroExercice->addItem(trUtf8("Exercice %1").arg(QString::number(m_nombreExercicePhrasesSansEspace)));
2152
    ui->PSEcbNumeroExercice->setCurrentIndex(m_nombreExercicePhrasesSansEspace - 1);
2153
    ui->PSEsbDifficulte->setValue(1);
2154
    ui->PSEsbNumeroPhrase->setValue(1);
2155
    ui->PSErbModeManuel->setChecked(false);
2156
    ui->PSEchbAfficherConsigneExercice->setChecked(false);
2157
    ui->PSEchbAfficherPhrase->setChecked(false);
2158
    ui->PSEteConsigneExercice->clear();
2159
}
2160

    
2161
void AllerEditorV1::on_RRbtnAjouterExercice_clicked()
2162
{
2163
    ui->RRfrParametresExercice->setVisible(true);
2164
    if (m_nombreExerciceRechercheRapide == 0)
2165
        ui->RRbtnAjouterExercice->setText(trUtf8("Ajouter un exercice"));
2166
    m_nombreExerciceRechercheRapide++;
2167
    ui->RRcbNumeroExercice->addItem(trUtf8("Exercice %1").arg(QString::number(m_nombreExerciceRechercheRapide)));
2168
    ui->RRcbNumeroExercice->setCurrentIndex(m_nombreExerciceRechercheRapide - 1);
2169
    ui->RRsbTempsAccorde->setValue(10);
2170
    ui->RRsbNbMotsAutomatique->setValue(10);
2171
    ui->RRrbModeManuel->setChecked(false);
2172
    ui->RRrbModeIntelligent->setChecked(false);
2173
    ui->RRrbModeAutomatique->setChecked(true);
2174
}
2175
/* ------------------------------------------------------------------------------------------------------------------------- */
2176

    
2177
/* ------------------------------------ Slots changements dans les comboBox "Numéro Exercice  -------------------------------------- */
2178

    
2179
void AllerEditorV1::on_TTRcbNumeroExercice_currentIndexChanged(int index)
2180
{
2181
    qDebug()<<"Appel au TTRcbNumExerciceChanged";
2182
    saveSettings(ui->twEditor->currentIndex(),m_previousExercice);
2183
    loadSettings(ui->twEditor->currentIndex(),index);
2184
    m_previousExercice = index;
2185
}
2186

    
2187
void AllerEditorV1::on_OAcbNumeroExercice_currentIndexChanged(int index)
2188
{
2189
    qDebug()<<"Appel au OAcbNumExerciceChanged";
2190
    saveSettings(ui->twEditor->currentIndex(),m_previousExercice);
2191
    loadSettings(ui->twEditor->currentIndex(),index);
2192
    m_previousExercice = index;
2193
}
2194

    
2195
void AllerEditorV1::on_MOMcbNumeroExercice_currentIndexChanged(int index)
2196
{
2197
    qDebug()<<"Appel au MOMcbNumExerciceChanged";
2198
    saveSettings(ui->twEditor->currentIndex(),m_previousExercice);
2199
    loadSettings(ui->twEditor->currentIndex(),index);
2200
    m_previousExercice = index;
2201
}
2202

    
2203
void AllerEditorV1::on_PHMcbNumeroExercice_currentIndexChanged(int index)
2204
{
2205
    saveSettings(ui->twEditor->currentIndex(),m_previousExercice);
2206
    loadSettings(ui->twEditor->currentIndex(),index);
2207
    m_previousExercice = index;
2208
}
2209

    
2210
void AllerEditorV1::on_PAMcbNumeroExercice_currentIndexChanged(int index)
2211
{
2212
    saveSettings(ui->twEditor->currentIndex(),m_previousExercice);
2213
    loadSettings(ui->twEditor->currentIndex(),index);
2214
    m_previousExercice = index;
2215
}
2216

    
2217
void AllerEditorV1::on_PSEcbNumeroExercice_currentIndexChanged(int index)
2218
{
2219
    saveSettings(ui->twEditor->currentIndex(),m_previousExercice);
2220
    loadSettings(ui->twEditor->currentIndex(),index);
2221
    m_previousExercice = index;
2222
}
2223

    
2224
void AllerEditorV1::on_RRcbNumeroExercice_currentIndexChanged(int index)
2225
{
2226
    saveSettings(ui->twEditor->currentIndex(),m_previousExercice);
2227
    loadSettings(ui->twEditor->currentIndex(),index);
2228
    m_previousExercice = index;
2229
}
2230
/* ---------------------------------------------------------------------------------------------------------------------------------------- */
2231

    
2232
/* -------------------------------------------------- Paramétrage par défaut des onglets -------------------------------------------------- */
2233

    
2234
void AllerEditorV1::setDefaultSettingsTexteTrous()
2235
{
2236
    connect(ui->TTRrbModeManuel,SIGNAL(toggled(bool)),ui->TTRfrModeManuel, SLOT(setVisible(bool)));
2237
    connect(ui->TTRrbModeIntelligent, SIGNAL(toggled(bool)), ui->TTRfrModeIntelligent, SLOT(setVisible(bool)));
2238
    connect(ui->TTRrbModeAutomatique, SIGNAL(toggled(bool)), ui->TTRfrModeAutomatique, SLOT(setVisible(bool)));
2239
    m_nombreExerciceTexteTrous = 0;
2240
    ui->TTRcbNiveau->addItems(abe::ABE_DONNENIVEAU().values());
2241
    ui->TTRcbNature->addItems(abe::ABE_DONNENATURE().values());
2242
    connect(ui->TTRchbAfficherConsigneSequence, SIGNAL(toggled(bool)),ui->TTRteConsigneSequence, SLOT(setVisible(bool)));
2243
    connect(ui->TTRchbAfficherConsigneExercice, SIGNAL(toggled(bool)),ui->TTRteConsigneExercice, SLOT(setVisible(bool)));
2244
    ui->wClosure->setEnabled(false);
2245
}
2246

    
2247
void AllerEditorV1::setDefaultSettingsOrdreAlphabetique()
2248
{
2249
    connect(ui->OArbModeManuel,SIGNAL(toggled(bool)),ui->OAfrModeManuel, SLOT(setVisible(bool)));
2250
    connect(ui->OArbModeIntelligent, SIGNAL(toggled(bool)), ui->OAfrModeIntelligent, SLOT(setVisible(bool)));
2251
    connect(ui->OArbModeAutomatique, SIGNAL(toggled(bool)), ui->OAfrModeAutomatique, SLOT(setVisible(bool)));
2252
    connect(ui->OArbModeScolaire, SIGNAL(toggled(bool)), ui->OAfrModeScolaire, SLOT(setVisible(bool)));
2253
    m_nombreExerciceOrdreAlphabetique = 0;
2254
    ui->OAcbNiveau->addItems(abe::ABE_DONNENIVEAU().values());
2255
    ui->OAcbNature->addItems(abe::ABE_DONNENATURE().values());
2256
    ui->OAcbNiveauScolaire->addItems(abe::ABE_DONNENIVEAU().values());
2257
    ui->OAcbNatureScolaire->addItems(abe::ABE_DONNENATURE().values());
2258
    connect(ui->OAchbAfficherConsigneSequence, SIGNAL(toggled(bool)),ui->OAteConsigneSequence, SLOT(setVisible(bool)));
2259
    connect(ui->OAchbAfficherConsigneExercice, SIGNAL(toggled(bool)),ui->OAteConsigneExercice, SLOT(setVisible(bool)));
2260
    ui->wOrdreAlpha->setEnabled(false);
2261
}
2262

    
2263
void AllerEditorV1::setDefaultSettingsMotsMelanges()
2264
{
2265
    connect(ui->MOMrbModeManuel,SIGNAL(toggled(bool)),ui->MOMfrModeManuel, SLOT(setVisible(bool)));
2266
    m_nombreExerciceMotsMelanges = 0;
2267
    connect(ui->MOMchbAfficherConsigneSequence, SIGNAL(toggled(bool)),ui->MOMteConsigneSequence, SLOT(setVisible(bool)));
2268
    connect(ui->MOMchbAfficherConsigneExercice, SIGNAL(toggled(bool)),ui->MOMteConsigneExercice, SLOT(setVisible(bool)));
2269
    ui->wMotsMelanges->setEnabled(false);
2270
}
2271

    
2272
void AllerEditorV1::setDefaultSettingsPhrasesMelangees()
2273
{
2274
    connect(ui->PHMrbModeManuel,SIGNAL(toggled(bool)),ui->PHMfrModeManuel, SLOT(setVisible(bool)));
2275
    connect(ui->PHMrbModeAutomatique, SIGNAL(toggled(bool)), ui->PHMfrModeAutomatique, SLOT(setVisible(bool)));
2276
    m_nombreExercicePhrasesMelangees = 0;
2277
    connect(ui->PHMchbAfficherConsigneSequence, SIGNAL(toggled(bool)),ui->PHMteConsigneSequence, SLOT(setVisible(bool)));
2278
    connect(ui->PHMchbAfficherConsigneExercice, SIGNAL(toggled(bool)),ui->PHMteConsigneExercice, SLOT(setVisible(bool)));
2279
    ui->wPhrasesMelangees->setEnabled(false);
2280
}
2281

    
2282
void AllerEditorV1::setDefaultSettingsParagraphesMelanges()
2283
{
2284
    connect(ui->PAMrbModeManuel,SIGNAL(toggled(bool)),ui->PAMfrModeManuel, SLOT(setVisible(bool)));
2285
    connect(ui->PAMrbModeAuto, SIGNAL(toggled(bool)), ui->PAMfrModeAuto, SLOT(setVisible(bool)));
2286
    m_nombreExerciceParagraphesMelanges = 0;
2287
    connect(ui->PAMchbAfficherConsigneSequence, SIGNAL(toggled(bool)),ui->PAMteConsigneSequence, SLOT(setVisible(bool)));
2288
    connect(ui->PAMchbAfficherConsigneExercice, SIGNAL(toggled(bool)),ui->PAMteConsigneExercice, SLOT(setVisible(bool)));
2289
    ui->wParagraphes->setEnabled(false);
2290
}
2291

    
2292
void AllerEditorV1::setDefaultSettingsPhrasesSansEspace()
2293
{
2294
    connect(ui->PSErbModeManuel, SIGNAL(toggled(bool)), ui->PSEfrModeManuel, SLOT(setVisible(bool)));
2295
    m_nombreExercicePhrasesSansEspace = 0;
2296
    ui->PSEsbNumeroPhrase->setMaximum(m_text->abetextComptePhrases());
2297
    connect(ui->PSEchbAfficherConsigneSequence, SIGNAL(toggled(bool)),ui->PSEteConsigneSequence, SLOT(setVisible(bool)));
2298
    connect(ui->PSEchbAfficherConsigneExercice, SIGNAL(toggled(bool)),ui->PSEteConsigneExercice, SLOT(setVisible(bool)));
2299
    ui->wPhrasesEspaces->setEnabled(false);
2300
}
2301

    
2302
void AllerEditorV1::setDefaultSettingsRechercheRapide()
2303
{
2304
    connect(ui->RRrbModeManuel,SIGNAL(toggled(bool)),ui->RRfrModeManuel, SLOT(setVisible(bool)));
2305
    connect(ui->RRrbModeIntelligent, SIGNAL(toggled(bool)), ui->RRfrModeIntelligent, SLOT(setVisible(bool)));
2306
    connect(ui->RRrbModeAutomatique, SIGNAL(toggled(bool)), ui->RRfrModeAutomatique, SLOT(setVisible(bool)));
2307
    m_nombreExerciceRechercheRapide = 0;
2308
    ui->RRcbNiveau->addItems(abe::ABE_DONNENIVEAU().values());
2309
    ui->RRcbNature->addItems(abe::ABE_DONNENATURE().values());
2310
    connect(ui->RRchbAfficherConsigneSequence, SIGNAL(toggled(bool)),ui->RRteConsigneSequence, SLOT(setVisible(bool)));
2311
    connect(ui->RRchbAfficherConsigneExercice, SIGNAL(toggled(bool)),ui->RRteConsigneExercice, SLOT(setVisible(bool)));
2312
    ui->wRechercheRapide->setEnabled(false);
2313
}
2314

    
2315
/* --------------------------------------------------------------------------------------------------------------------------------- */
2316

    
2317
/* -------------------------------------------------------- Actions du menu -------------------------------------------------------- */
2318

    
2319
void AllerEditorV1::on_action_Nouveau_triggered()
2320
{
2321
    m_parent->abeCleanMyTempDir();
2322
    AllerEditorV1* editeur = new AllerEditorV1("",m_parent);
2323
    editeur->show();
2324
    this->deleteLater();
2325
}
2326

    
2327
void AllerEditorV1::on_actionEditer_un_projet_triggered()
2328
{
2329
    QString nomProjet;
2330
    if (QDir(QDir::homePath()+"/leterrier/"+abeApp->applicationName()).exists())
2331
    {
2332
        nomProjet = QFileDialog::getOpenFileName(this,trUtf8("Ouvrir le fichier"),QDir::homePath()+"/leterrier/"+abeApp->applicationName(),trUtf8("Fichier projet Aller (*.abe)"));
2333
    }
2334
    else
2335
    {
2336
        nomProjet = QFileDialog::getOpenFileName(this,trUtf8("Ouvrir le fichier"),QDir::homePath(),trUtf8("Fichier projet Aller (*.abe)"));
2337
    }
2338
    deleteLater();
2339
    QFileInfo fi(nomProjet);
2340
    if(fi.exists())
2341
    {
2342
        m_parent->abeGetMyAbulEduFile()->abeFileOpen(nomProjet, m_directoryWork);
2343
    }
2344
    AllerEditorV1* editeur = new AllerEditorV1(m_parent->abeGetMyAbulEduFile()->abeFileGetFileName().baseName(),m_parent);
2345
    editeur->show();
2346
    setWindowModified(false);
2347
}
2348

    
2349
void AllerEditorV1::on_actionEnregistrer_le_projet_en_cours_triggered()
2350
{
2351
    if (m_config->value("fichierTexte").toString().isEmpty())
2352
    {
2353
        QMessageBox::warning(this, trUtf8("Enregistrement refusé..."), trUtf8("Enregistrez d'abord un texte"));
2354
        return;
2355
    }
2356
    QString nomProjet;
2357
    // Si le nom de fichier .abe n'existe pas, c'est qu'on est dans un nouveau fichier; on appelle une QFileDialog pour le créer
2358
    if (m_parent->abeGetMyAbulEduFile()->abeFileGetFileName().baseName().isEmpty())
2359
    {
2360
        // on crée s'il n'existe pas le début du chemin chez l'utilisateur
2361
        if (!QDir(QDir::homePath()+"/leterrier/"+abeApp->applicationName()).exists())
2362
        {
2363
            QDir().mkpath(QDir::homePath()+"/leterrier/"+abeApp->applicationName());
2364
            qDebug()<<"Dossier de l'application cree chez l'utilisateur";
2365

    
2366
        }
2367
        else         qDebug()<<"Dossier de l'application existe chez l'utilisateur";
2368

    
2369
        nomProjet = QFileDialog::getSaveFileName(this, trUtf8("Sauvegarder le fichier"), m_directoryWork->absolutePath(), trUtf8("Fichier projet Aller (*.abe)"));
2370
        if (nomProjet=="")
2371
            return;
2372
    }
2373
    else
2374
    {
2375
        nomProjet = m_parent->abeGetMyAbulEduFile()->abeFileGetFileName().absoluteFilePath();
2376
    }
2377

    
2378
    setWindowModified(false);
2379
    QString fileName = abeApp->applicationDirPath()+"/data/dictionnaires/mot_aller_cycle3.csv";
2380
    QFileInfo fi(fileName);
2381
    bool isCopyOK;
2382
    if(!fi.exists())
2383
    {
2384
        QMessageBox::warning(this, trUtf8("Enregistrement refusé..."), trUtf8("Etape 1 : ")+abeApp->applicationDirPath()+"/data/dictionnaires/mot_aller_cycle3.csv"+trUtf8(" non trouvé"));
2385
        return;
2386
    }
2387
    else
2388
    {
2389
        QDir().mkpath(m_directoryWork->absolutePath()+"/data/dictionnaires");
2390
        qDebug() << "On essaye de copier ici: " << m_directoryWork->absolutePath()+"/data/dictionnaires/mot_aller_cycle3.csv";
2391
        isCopyOK = QFile(fileName).copy(m_directoryWork->absolutePath()+"/data/dictionnaires/mot_aller_cycle3.csv");
2392
        qDebug()<<isCopyOK;
2393
    }
2394

    
2395
    if (!isCopyOK)
2396
    {
2397
        QMessageBox::warning(this, trUtf8("Enregistrement refusé..."), trUtf8("Etape 2 : Copie ratée"));
2398
        return;
2399
    }
2400
    QStringList mesfichiers;
2401
    mesfichiers << recursiveRide(m_directoryWork->absolutePath());
2402
    qDebug() << "on lui expédie les fichiers " << mesfichiers;
2403

    
2404
    m_parent->abeGetMyAbulEduFile()->abeFileSave(nomProjet
2405
                                                 +".abe",mesfichiers,m_directoryWork->absolutePath(),"abe");
2406
}
2407

    
2408
void AllerEditorV1::on_actionPublier_sur_AbuleduMediatheque_triggered()
2409
{
2410

    
2411
}
2412

    
2413
void AllerEditorV1::on_actionUn_module_complet_triggered()
2414
{
2415

    
2416
}
2417

    
2418
void AllerEditorV1::on_actionUne_ressource_triggered()
2419
{
2420

    
2421
}
2422

    
2423
void AllerEditorV1::on_action_Quitter_triggered()
2424
{
2425
    if (this->isWindowModified())
2426
        int i=0;
2427
    this->close();
2428
}
2429

    
2430
void AllerEditorV1::on_btnAnnulerTout_clicked()
2431
{
2432
    QFile::remove(m_directoryWork->absolutePath()+"/conf/module.conf");
2433
    QFile::rename(m_directoryWork->absolutePath()+"/conf/copieModule.conf",m_directoryWork->absolutePath()+"/conf/module.conf");
2434
    this->close();
2435
}
2436

    
2437
void AllerEditorV1::on_btnValiderTout_clicked()
2438
{
2439
    QFile::remove(m_directoryWork->absolutePath()+"/conf/copieModule.conf");
2440
    onSwitchOnglet(ui->twEditor->currentIndex());
2441
    this->close();
2442
}
2443

    
2444
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2445
//                   Correcteur Orthographique
2446
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2447

    
2448
// Le filtre d'event est installé sur le TextEdit de la zone Texte
2449
bool AllerEditorV1::eventFilter(QObject *obj, QEvent *event)
2450
{
2451
    // On filtre les événements sur le TextEdit de la Zone Texte
2452
    if(obj==ui->TEteTexte){
2453
        if(event->type()== QEvent::MouseButtonPress){
2454
            QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
2455
            QPoint position = mouseEvent->pos();
2456

    
2457
            if(mouseEvent->button()==Qt::RightButton){
2458
                curseur = ui->TEteTexte->cursorForPosition(position);
2459
                //                curseur->setPosition(curs.position());
2460
                qDebug()<<"curseur.selectedtext"<<curseur.selectedText()<<"Format"<<curseur.charFormat().underlineStyle();
2461
                if(curseur.charFormat().underlineStyle()==QTextCharFormat::SpellCheckUnderline)
2462
                {
2463
                curseur.select(QTextCursor::WordUnderCursor);
2464
                    // On cherche des propositions de correction
2465
                    QStringList suggestedWords = correcteur->suggestWords(curseur.selectedText());
2466
                    //On crée un signalMapper qui établira le lien entre l'entrée de menu sélectionnée et le fichier à charger
2467
                    QSignalMapper *signalMapper = new QSignalMapper(this);
2468
                    connect(signalMapper, SIGNAL(mapped(QString)),this, SLOT(remplaceMot(QString)));
2469
                    menuContextuelPropositions = new QMenu();
2470
                    for(int i=0; i<suggestedWords.size();i++)
2471
                    {
2472
                        // Créer le menu contextuel et remplacer par le choix.
2473
                        //et on l'affecte à l'item de menu
2474
                        QAction *act=menuContextuelPropositions->addAction(suggestedWords[i]);
2475
                        // Reste à définir les actions elles-mêmes et à les connecter !!!
2476
                        signalMapper->setMapping(act,suggestedWords[i]);
2477
                        connect(act, SIGNAL(triggered()), signalMapper, SLOT(map()));
2478
                        menuContextuelPropositions->popup((mouseEvent->globalPos()));
2479
                    }
2480
                }
2481
            }
2482
        }
2483
        return QObject::eventFilter(obj, event);
2484
    }
2485
}
2486
void AllerEditorV1::remplaceMot(QString proposition)
2487
{
2488
    if(curseur.selectedText().size()>1 &&
2489
            curseur.selectedText().endsWith(QString::fromUtf8("")))
2490
    {
2491

    
2492
        curseur.movePosition(QTextCursor::PreviousCharacter,QTextCursor::KeepAnchor,1);
2493
    }
2494
    curseur.removeSelectedText();
2495
    curseur.insertText(proposition);
2496
}
2497

    
Redmine Appliance - Powered by TurnKey Linux