1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
|
#include "MainWindow.h"
/*** Constructeur ***/
MainWindow::MainWindow()
:m_onglet(false)
{
m_document = new QTextEdit;
// QMenu Fichier + QAction correspondante
m_menuFichier = menuBar()->addMenu("&Fichier");
m_ActionNouveau = m_menuFichier->addAction("&Nouveau");
m_ActionNouveau->setIcon(QIcon("icones/nouveau.png"));
m_ActionNouveau->setShortcut(QKeySequence("Ctrl+N"));
m_ActionNouveau->setStatusTip("Ouvre un nouveau document vierge");
connect(m_ActionNouveau,SIGNAL(triggered()),this,SLOT(nouveauDocument()));
m_ActionOuvrir = m_menuFichier->addAction("&Ouvrir");
m_ActionOuvrir->setIcon(QIcon("icones/ouvrir.png"));;
m_ActionOuvrir->setShortcut(QKeySequence("Ctrl+O"));
m_ActionOuvrir->setStatusTip("Ouvre un document existant");
connect(m_ActionOuvrir,SIGNAL(triggered()),this,SLOT(ouvrirDocument()));
m_ActionEnregistrer = m_menuFichier->addAction("&Enregistrer");
m_ActionEnregistrer->setIcon(QIcon("icones/enregistrer.png"));
m_ActionEnregistrer->setShortcut(QKeySequence("Ctrl+E"));
m_ActionEnregistrer->setStatusTip("Enregistre le document en cours");
connect(m_ActionEnregistrer,SIGNAL(triggered()),this,SLOT(enregistrer()));
m_ActionEnregistrerSous = m_menuFichier->addAction("Enregistrer &sous");
m_ActionEnregistrerSous->setIcon(QIcon("icones/enregistrersous"));
m_ActionEnregistrerSous->setStatusTip("Choix du répertoire dans lequel enregistrer le document");
connect(m_ActionEnregistrerSous,SIGNAL(triggered()),this,SLOT(enregistrerDocumentSous()));
m_ActionRenommer = m_menuFichier->addAction(("&Renommer"));
m_ActionRenommer->setIcon(QIcon("icones/renommer.png"));
m_ActionRenommer->setStatusTip("Renomme le document en cours");
connect(m_ActionRenommer,SIGNAL(triggered()),this,SLOT(renommer()));
m_ActionFermer = m_menuFichier->addAction("&Fermer");
m_ActionFermer->setIcon(QIcon("icones/fermer.png"));
m_ActionFermer->setStatusTip("Ferme le document en cours");
connect(m_ActionFermer,SIGNAL(triggered()),this,SLOT(fermer()));
m_ActionQuitter = m_menuFichier->addAction(("&Quitter"));
m_ActionQuitter->setIcon(QIcon("icones/quitter.png"));
m_ActionQuitter->setStatusTip("Ferme l'application");
connect(m_ActionQuitter,SIGNAL(triggered()),this,SLOT(close()));
// Menu Afficher + QAction correspondante
m_menuAfficher = menuBar()->addMenu("&Affichage");
m_ActionAffichage = m_menuAfficher->addAction("Mode d'&affichage");
m_ActionAffichage->setIcon(QIcon("icones/affichage.png"));
m_ActionAffichage->setShortcut(QKeySequence("Ctrl+M"));
m_ActionAffichage->setStatusTip("Change le mode d'affichage (fenetres ou onglets)");
connect(m_ActionAffichage,SIGNAL(triggered()),this,SLOT(modeAffichage()));
// ToolBar
QToolBar *barreDoutil = addToolBar("BarreFichier");
barreDoutil->addAction(m_ActionNouveau);
barreDoutil->addAction(m_ActionOuvrir);
barreDoutil->addAction(m_ActionEnregistrer);
barreDoutil->addAction(m_ActionEnregistrerSous);
barreDoutil->addSeparator();
barreDoutil->addSeparator();
barreDoutil->addAction(m_ActionAffichage);
// Barre d'etat
QStatusBar *barreDetat = statusBar();
m_texteDetat = new QLabel("Status de l'application ... (En cours)");
barreDetat->addWidget(m_texteDetat);
// Définition de la zone centrale
m_zoneCentrale = new QMdiArea;
setWindowTitle("OpenDen's");
setCentralWidget(m_zoneCentrale);
}
/*** SLOTS Menu Fichier***/
void MainWindow::nouveauDocument()
{
// QDialog pour choix du titre du document
bool ok(false);
QString titre = QInputDialog::getText(this,"Titre","Titre du document",QLineEdit::Normal,QString(),&ok);
if(ok)
{
if(titre.isEmpty())
titre="sans titre";
m_document = new QTextEdit;
m_document->setWindowTitle(titre);
m_sousFenetre = m_zoneCentrale->addSubWindow(m_document);
m_document->show();
}
}
void MainWindow::ouvrirDocument()
{
QString fichier = QFileDialog::getOpenFileName(this,"Choix du fichier");
if(!fichier.isEmpty())
{
m_document = new QTextEdit;
QString ligneTampon;
m_document->setWindowTitle(fichier);
QFile ouvrir(fichier);
if(ouvrir.open(QFile::ReadOnly))
{
QTextStream in(&ouvrir);
while(!in.atEnd())
{
QString ligne = in.readLine();
ligneTampon+=ligne+"\n";
}
m_document->setPlainText(ligneTampon);
m_sousFenetre = m_zoneCentrale->addSubWindow(m_document);
m_document->show();
}
}
}
void MainWindow::enregistrer()
{
int reponse = QMessageBox::warning(this,"Attention","Etes vous sur de vouloir enregistrer le document? Si il existe déja, il sera écrasé!",QMessageBox::Yes,QMessageBox::No);
if(reponse==QMessageBox::Yes)
{
QString fichier(m_document->windowTitle());
if(!fichier.isEmpty())
{
QFile sauvegarder(fichier);
if(sauvegarder.open(QFile::WriteOnly))
{
QTextStream out(&sauvegarder);
out<<m_document->toPlainText();
}
}
QMessageBox::information(this,"Succes","Enregistrement réussi avec succes!");
}
else
QMessageBox::critical(this,"Attention","Le document n'a pas été enregistrer!");
}
void MainWindow::enregistrerDocumentSous()
{
QString fichier = QFileDialog::getSaveFileName(this,"Enregistrement du fichier");
if(!fichier.isEmpty())
{
QFile sauvegarder(fichier);
if(sauvegarder.open(QFile::WriteOnly))
{
QTextStream out(&sauvegarder);
out<<m_document->toPlainText();
}
}
}
void MainWindow::fermer()
{
int reponse = QMessageBox::warning(this,"Fermeture du fichier","Voulez vous enregistrer votre travail?",QMessageBox::Yes,QMessageBox::No);
m_zoneCentrale->closeActiveSubWindow();
if(reponse == QMessageBox::Yes)
MainWindow::enregistrer();
else if(reponse == QMessageBox::No)
QMessageBox::critical(this,"Fermeture","Votre document n'a pas été enregistré");
}
void MainWindow::renommer()
{
QString nouveauTitre=QInputDialog::getText(this,"Renommer","Veuillez donner le nouveau titre de votre document");
m_document->setWindowTitle(nouveauTitre);
}
/*** SLOTS Menu Afficher ***/
void MainWindow::modeAffichage()
{
if(m_onglet)
{
m_zoneCentrale->setViewMode(QMdiArea::SubWindowView);
m_onglet=false;
}
else
{
m_zoneCentrale->setViewMode(QMdiArea::TabbedView);
m_onglet=true;
}
} |
Partager