Gestion de la modification des dimensions et du point de saisie dans l'editeur

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@100 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavierqet
2007-08-18 22:59:10 +00:00
parent 92a43deb78
commit 4fbb1f7dd4
12 changed files with 395 additions and 157 deletions

View File

@@ -34,8 +34,7 @@ void CustomElementEditor::setupActions() {
deselectall = new QAction( tr("D\351s\351lectionner tout"), this);
inv_select = new QAction( tr("Inverser la s\351lection"), this);
edit_delete = new QAction(QIcon(":/ico/delete.png"), tr("&Supprimer"), this);
edit_size = new QAction( tr("Modifier la taille"), this);
edit_hotspot = new QAction( tr("Modifier le point de saisie"), this);
edit_size_hs = new QAction( tr("\311diter la taille et le point de saisie"), this);
edit_names = new QAction( tr("\311diter les noms"), this);
edit_ori = new QAction(QIcon(":/ico/orientations.png"), tr("\311diter les orientations"), this);
move = new QAction(QIcon(":/ico/select.png"), tr("D\351placer un objet"), this);
@@ -48,10 +47,6 @@ void CustomElementEditor::setupActions() {
add_terminal = new QAction(QIcon(":/ico/terminal.png"), tr("Ajouter une borne"), this);
add_textfield = new QAction(QIcon(":/ico/textfield.png"), tr("Ajouter un champ de texte"), this);
edit_delete -> setEnabled(false);
edit_size -> setEnabled(false);
edit_hotspot -> setEnabled(false);
selectall -> setShortcut(QKeySequence::SelectAll);
deselectall -> setShortcut(QKeySequence(tr("Ctrl+Shift+A")));
inv_select -> setShortcut(QKeySequence(tr("Ctrl+I")));
@@ -66,8 +61,7 @@ void CustomElementEditor::setupActions() {
connect(deselectall, SIGNAL(triggered()), ce_scene, SLOT(slot_deselectAll()));
connect(inv_select, SIGNAL(triggered()), ce_scene, SLOT(slot_invertSelection()));
connect(edit_delete, SIGNAL(triggered()), ce_scene, SLOT(slot_delete()));
connect(edit_size, SIGNAL(triggered()), ce_scene, SLOT(slot_editSize()));
connect(edit_hotspot, SIGNAL(triggered()), ce_scene, SLOT(slot_editHotSpot()));
connect(edit_size_hs, SIGNAL(triggered()), ce_scene, SLOT(slot_editSizeHotSpot()));
connect(edit_names, SIGNAL(triggered()), ce_scene, SLOT(slot_editNames()));
connect(edit_ori, SIGNAL(triggered()), ce_scene, SLOT(slot_editOrientations()));
connect(move, SIGNAL(triggered()), ce_scene, SLOT(slot_move()));
@@ -156,8 +150,7 @@ void CustomElementEditor::setupMenus() {
edit_menu -> addAction(edit_delete);
edit_menu -> addSeparator();
edit_menu -> addAction(edit_names);
edit_menu -> addAction(edit_size);
edit_menu -> addAction(edit_hotspot);
edit_menu -> addAction(edit_size_hs);
edit_menu -> addAction(edit_ori);
menuBar() -> addMenu(file_menu);
@@ -341,8 +334,7 @@ void CustomElementEditor::setReadOnly(bool ro) {
ce_view -> setInteractive(!ro);
// active / desactive l'edition de la taille, du hotspot, des noms et des orientations
edit_size -> setEnabled(!ro);
edit_hotspot -> setEnabled(!ro);
edit_size_hs -> setEnabled(!ro);
edit_names -> setEnabled(!ro);
edit_ori -> setEnabled(!ro);
}

View File

@@ -29,7 +29,7 @@ class CustomElementEditor : public QMainWindow {
QAction *new_element, *open, *save, *save_as, *quit;
/// actions du menu edition
QAction *selectall, *deselectall, *inv_select;
QAction *edit_delete, *edit_size, *edit_hotspot, *edit_names, *edit_ori;
QAction *edit_delete, *edit_size_hs, *edit_names, *edit_ori;
/// barre d'outils
QToolBar *parts_toolbar;
/// actions de la barre d'outils

View File

@@ -8,6 +8,7 @@
#include "parttext.h"
#include "parttextfield.h"
#include "partarc.h"
#include "hotspoteditor.h"
#define GRILLE_X 10
#define GRILLE_Y 10
@@ -397,12 +398,42 @@ void EditorScene::slot_delete() {
}
}
void EditorScene::slot_editSize() {
}
void EditorScene::slot_editHotSpot() {
void EditorScene::slot_editSizeHotSpot() {
// cree un dialogue
QDialog dialog_sh;
dialog_sh.setModal(true);
dialog_sh.setMinimumSize(400, 230);
dialog_sh.setWindowTitle(tr("\311diter la taille et le point de saisie"));
QVBoxLayout *dialog_layout = new QVBoxLayout(&dialog_sh);
// ajoute un HotspotEditor au dialogue
HotspotEditor *hotspot_editor = new HotspotEditor();
hotspot_editor -> setElementWidth(static_cast<uint>(width() / 10));
hotspot_editor -> setElementHeight(static_cast<uint>(height() / 10));
hotspot_editor -> setHotspot(hotspot());
hotspot_editor -> setOldHotspot(hotspot());
hotspot_editor -> setPartsRect(itemsBoundingRect());
hotspot_editor -> setPartsRectEnabled(true);
dialog_layout -> addWidget(hotspot_editor);
// ajoute deux boutons au dialogue
QDialogButtonBox *dialog_buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
dialog_layout -> addWidget(dialog_buttons);
connect(dialog_buttons, SIGNAL(accepted()), &dialog_sh, SLOT(accept()));
connect(dialog_buttons, SIGNAL(rejected()), &dialog_sh, SLOT(reject()));
// lance le dialogue
if (dialog_sh.exec() == QDialog::Accepted) {
setWidth(hotspot_editor -> elementWidth());
setHeight(hotspot_editor -> elementHeight());
setHotspot(hotspot_editor -> hotspot());
if (hotspot_editor -> mustTranslateParts()) {
QPoint translation = hotspot_editor -> offsetParts();
foreach(QGraphicsItem *qgi, items()) {
qgi -> translate(translation.x(), translation.y());
}
}
}
}
void EditorScene::slot_editOrientations() {

View File

@@ -81,8 +81,7 @@ class EditorScene : public QGraphicsScene {
void slot_deselectAll();
void slot_invertSelection();
void slot_delete();
void slot_editSize();
void slot_editHotSpot();
void slot_editSizeHotSpot();
void slot_editNames();
void slot_editOrientations();

View File

@@ -34,8 +34,8 @@ const QDomElement PartTerminal::toXml(QDomDocument &xml_document) const {
QDomElement xml_element = xml_document.createElement("terminal");
// ecrit la position de la borne
xml_element.setAttribute("x", QString("%1").arg(pos().x()));
xml_element.setAttribute("y", QString("%1").arg(pos().y()));
xml_element.setAttribute("x", QString("%1").arg(scenePos().x()));
xml_element.setAttribute("y", QString("%1").arg(scenePos().y()));
// ecrit l'orientation de la borne
xml_element.setAttribute("orientation", orientationToString(_orientation));

View File

@@ -27,8 +27,8 @@ void PartText::fromXml(const QDomElement &xml_element) {
const QDomElement PartText::toXml(QDomDocument &xml_document) const {
QDomElement xml_element = xml_document.createElement("text");
xml_element.setAttribute("x", QString("%1").arg(pos().x()));
xml_element.setAttribute("y", QString("%1").arg(pos().y()));
xml_element.setAttribute("x", QString("%1").arg((scenePos() + margin()).x()));
xml_element.setAttribute("y", QString("%1").arg((scenePos() + margin()).y()));
xml_element.setAttribute("text", toPlainText());
xml_element.setAttribute("size", font().pointSize());
return(xml_element);

View File

@@ -30,8 +30,8 @@ void PartTextField::fromXml(const QDomElement &xml_element) {
const QDomElement PartTextField::toXml(QDomDocument &xml_document) const {
QDomElement xml_element = xml_document.createElement("input");
xml_element.setAttribute("x", QString("%1").arg(pos().x()));
xml_element.setAttribute("y", QString("%1").arg(pos().y()));
xml_element.setAttribute("x", QString("%1").arg((scenePos() + margin()).x()));
xml_element.setAttribute("y", QString("%1").arg((scenePos() + margin()).y()));
xml_element.setAttribute("text", toPlainText());
xml_element.setAttribute("size", font().pointSize());
if (follow_parent_rotations) xml_element.setAttribute("rotate", "false");