diff --git a/ico/info.png b/ico/info.png new file mode 100644 index 000000000..3626ba7ee Binary files /dev/null and b/ico/info.png differ diff --git a/qelectrotech.qrc b/qelectrotech.qrc index 6b2c63667..21739df12 100644 --- a/qelectrotech.qrc +++ b/qelectrotech.qrc @@ -14,6 +14,7 @@ ico/export.png ico/fileclose.png ico/import.png + ico/info.png ico/masquer.png ico/move.png ico/new.png diff --git a/qetapp.cpp b/qetapp.cpp index 600c68cb2..f695457ac 100644 --- a/qetapp.cpp +++ b/qetapp.cpp @@ -225,6 +225,7 @@ void QETApp::actions() { sel_inverse = new QAction( tr("Inverser la s\351lection"), this); supprimer = new QAction(QIcon(":/ico/delete.png"), tr("Supprimer"), this); pivoter = new QAction(QIcon(":/ico/pivoter.png"), tr("Pivoter"), this); + infos_schema = new QAction(QIcon(":/ico/info.png"), tr("Informations sur le sch\351ma"), this); toggle_aa = new QAction( tr("D\351sactiver l'&antialiasing"), this); zoom_avant = new QAction(QIcon(":/ico/viewmag+.png"), tr("Zoom avant"), this); @@ -305,6 +306,7 @@ void QETApp::actions() { sel_inverse -> setStatusTip(tr("D\351s\351lectionne les \351l\351ments s\351lectionn\351s et s\351lectionne les \351l\351ments non s\351lectionn\351s")); supprimer -> setStatusTip(tr("Enl\350ve les \351l\351ments s\351lectionn\351s du sch\351ma")); pivoter -> setStatusTip(tr("Pivote les \351l\351ments s\351lectionn\351s")); + infos_schema -> setStatusTip(tr("\311dite les informations affich\351es par le cartouche")); toggle_aa -> setStatusTip(tr("Active / d\351sactive l'antialiasing pour le rendu du sch\351ma courant")); zoom_avant -> setStatusTip(tr("Agrandit le sch\351ma")); @@ -368,11 +370,12 @@ void QETApp::actions() { connect(copier, SIGNAL(triggered()), this, SLOT(slot_copier()) ); connect(coller, SIGNAL(triggered()), this, SLOT(slot_coller()) ); connect(toggle_aa, SIGNAL(triggered()), this, SLOT(toggleAntialiasing()) ); - connect(f_mosaique, SIGNAL(triggered()), &workspace, SLOT(tile())); - connect(f_cascade, SIGNAL(triggered()), &workspace, SLOT(cascade())); - connect(f_reorganise, SIGNAL(triggered()), &workspace, SLOT(arrangeIcons())); - connect(f_suiv, SIGNAL(triggered()), &workspace, SLOT(activateNextWindow())); - connect(f_prec, SIGNAL(triggered()), &workspace, SLOT(activatePreviousWindow())); + connect(f_mosaique, SIGNAL(triggered()), &workspace, SLOT(tile()) ); + connect(f_cascade, SIGNAL(triggered()), &workspace, SLOT(cascade()) ); + connect(f_reorganise, SIGNAL(triggered()), &workspace, SLOT(arrangeIcons()) ); + connect(f_suiv, SIGNAL(triggered()), &workspace, SLOT(activateNextWindow()) ); + connect(f_prec, SIGNAL(triggered()), &workspace, SLOT(activatePreviousWindow()) ); + connect(infos_schema, SIGNAL(activated()), this, SLOT(editInfos()) ); } /** @@ -423,6 +426,8 @@ void QETApp::menus() { menu_edition -> addSeparator(); menu_edition -> addAction(supprimer); menu_edition -> addAction(pivoter); + menu_edition -> addSeparator(); + menu_edition -> addAction(infos_schema); // menu Affichage > Afficher QMenu *menu_aff_aff = new QMenu(tr("Afficher")); @@ -747,6 +752,7 @@ void QETApp::slot_updateActions() { zoom_adapte -> setEnabled(document_ouvert); zoom_reset -> setEnabled(document_ouvert); toggle_aa -> setEnabled(document_ouvert); + infos_schema -> setEnabled(document_ouvert); // actions ayant aussi besoin d'un historique des actions annuler -> setEnabled(document_ouvert); @@ -926,3 +932,44 @@ QString QETApp::languagesPath() { return(QDir::current().path() + "/lang/"); } +void QETApp::editInfos() { + // ne fait rien s'il n'y a pas de schema ouvert + SchemaVue *sv = schemaEnCours(); + if (!sv) return; + + // construit le dialogue + QDialog popup; + popup.setMinimumWidth(400); + popup.setWindowTitle(tr("Cartouche du sch\351ma")); + + QLineEdit *titre = new QLineEdit(sv -> scene -> titre); + QLineEdit *auteur = new QLineEdit(sv -> scene -> auteur); + QDate date_schema = QDate(sv -> scene -> date); + if (date_schema.isNull() || !date_schema.isValid()) date_schema = QDate::currentDate(); + QDateEdit *date = new QDateEdit(date_schema); + date -> setCalendarPopup(true); + QWidget bidon; + QGridLayout layout_champs(&bidon); + layout_champs.addWidget(new QLabel(tr("Titre : ")), 0, 0); + layout_champs.addWidget(titre, 0, 1); + layout_champs.addWidget(new QLabel(tr("Auteur : ")), 1, 0); + layout_champs.addWidget(auteur, 1, 1); + layout_champs.addWidget(new QLabel(tr("Date : ")), 2, 0); + layout_champs.addWidget(date, 2, 1); + + // boutons + QDialogButtonBox boutons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + connect(&boutons, SIGNAL(accepted()), &popup, SLOT(accept())); + connect(&boutons, SIGNAL(rejected()), &popup, SLOT(accept())); + + // ajout dans une disposition verticale + QVBoxLayout layout_v(&popup); + layout_v.addWidget(&bidon); + layout_v.addWidget(&boutons); + if (popup.exec() == QDialog::Accepted) { + sv -> scene -> titre = titre -> text(); + sv -> scene -> auteur = auteur -> text(); + sv -> scene -> date = date -> date(); + + } +} diff --git a/qetapp.h b/qetapp.h index c9183ae44..33c2cf939 100644 --- a/qetapp.h +++ b/qetapp.h @@ -30,6 +30,7 @@ void toggleFullScreen(); void toggleAntialiasing(); void aPropos(); + void editInfos(); void dialogue_imprimer(); void dialogue_exporter(); bool dialogue_enregistrer_sous(); @@ -62,6 +63,7 @@ QAction *supprimer; QAction *selectionner; QAction *pivoter; + QAction *infos_schema; QAction *poser_fil; QAction *masquer_appli; QAction *restaurer_appli; diff --git a/schema.h b/schema.h index 426932bae..42ff34539 100644 --- a/schema.h +++ b/schema.h @@ -26,16 +26,16 @@ bool fromXml(QDomDocument &, QPointF = QPointF()); QGraphicsItem *getElementById(uint id); inline void setAffichageGrille(bool ddg) { doit_dessiner_grille = ddg; } - - private: - QGraphicsLineItem *poseur_de_conducteur; - bool doit_dessiner_grille; // elements du cartouche QString auteur; QDate date; QString titre; QString folio; // vraiment necessaire ce truc ? QString nom_fichier; // meme remarque + + private: + QGraphicsLineItem *poseur_de_conducteur; + bool doit_dessiner_grille; Element *elementFromXml(QDomElement &e, QHash &); private slots: