mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-18 13:30:34 +01:00
Optimisations diverses dans l'editeur d'elememt.
Inclut la desactivation de la liste des primitives au-dela de 200 primitives. git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@858 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -47,16 +47,20 @@ DeletePartsCommand::~DeletePartsCommand() {
|
|||||||
|
|
||||||
/// Restaure les parties supprimees
|
/// Restaure les parties supprimees
|
||||||
void DeletePartsCommand::undo() {
|
void DeletePartsCommand::undo() {
|
||||||
|
editor_scene -> blockSignals(true);
|
||||||
foreach(QGraphicsItem *qgi, deleted_parts) {
|
foreach(QGraphicsItem *qgi, deleted_parts) {
|
||||||
editor_scene -> addItem(qgi);
|
editor_scene -> addItem(qgi);
|
||||||
}
|
}
|
||||||
|
editor_scene -> blockSignals(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Supprime les parties
|
/// Supprime les parties
|
||||||
void DeletePartsCommand::redo() {
|
void DeletePartsCommand::redo() {
|
||||||
|
editor_scene -> blockSignals(true);
|
||||||
foreach(QGraphicsItem *qgi, deleted_parts) {
|
foreach(QGraphicsItem *qgi, deleted_parts) {
|
||||||
editor_scene -> removeItem(qgi);
|
editor_scene -> removeItem(qgi);
|
||||||
}
|
}
|
||||||
|
editor_scene -> blockSignals(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** CutPartsCommand ***/
|
/*** CutPartsCommand ***/
|
||||||
@@ -90,7 +94,11 @@ PastePartsCommand::~PastePartsCommand() {
|
|||||||
/// annule le coller
|
/// annule le coller
|
||||||
void PastePartsCommand::undo() {
|
void PastePartsCommand::undo() {
|
||||||
// enleve les parties
|
// enleve les parties
|
||||||
foreach(QGraphicsItem *part, content_) editor_scene_ -> removeItem(part);
|
editor_scene_ -> blockSignals(true);
|
||||||
|
foreach(QGraphicsItem *part, content_) {
|
||||||
|
editor_scene_ -> removeItem(part);
|
||||||
|
}
|
||||||
|
editor_scene_ -> blockSignals(false);
|
||||||
if (uses_offset) {
|
if (uses_offset) {
|
||||||
editor_view_ -> offset_paste_count_ = old_offset_paste_count_;
|
editor_view_ -> offset_paste_count_ = old_offset_paste_count_;
|
||||||
editor_view_ -> start_top_left_corner_ = old_start_top_left_corner_;
|
editor_view_ -> start_top_left_corner_ = old_start_top_left_corner_;
|
||||||
@@ -103,7 +111,11 @@ void PastePartsCommand::redo() {
|
|||||||
if (first_redo) first_redo = false;
|
if (first_redo) first_redo = false;
|
||||||
else {
|
else {
|
||||||
// pose les parties
|
// pose les parties
|
||||||
foreach(QGraphicsItem *part, content_) editor_scene_ -> addItem(part);
|
editor_scene_ -> blockSignals(true);
|
||||||
|
foreach(QGraphicsItem *part, content_) {
|
||||||
|
editor_scene_ -> addItem(part);
|
||||||
|
}
|
||||||
|
editor_scene_ -> blockSignals(false);
|
||||||
if (uses_offset) {
|
if (uses_offset) {
|
||||||
editor_view_ -> offset_paste_count_ = new_offset_paste_count_;
|
editor_view_ -> offset_paste_count_ = new_offset_paste_count_;
|
||||||
editor_view_ -> start_top_left_corner_ = new_start_top_left_corner_;
|
editor_view_ -> start_top_left_corner_ = new_start_top_left_corner_;
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ ElementScene::ElementScene(QETElementEditor *editor, QObject *parent) :
|
|||||||
qgi_manager(this),
|
qgi_manager(this),
|
||||||
element_editor(editor)
|
element_editor(editor)
|
||||||
{
|
{
|
||||||
|
setItemIndexMethod(NoIndex);
|
||||||
current_polygon = NULL;
|
current_polygon = NULL;
|
||||||
setGrid(1, 1);
|
setGrid(1, 1);
|
||||||
initPasteArea();
|
initPasteArea();
|
||||||
@@ -391,7 +392,6 @@ void ElementScene::keyPressEvent(QKeyEvent *e) {
|
|||||||
case Qt::Key_Down: movement = QPointF(0.0, +movement_length); break;
|
case Qt::Key_Down: movement = QPointF(0.0, +movement_length); break;
|
||||||
}
|
}
|
||||||
if (!movement.isNull() && !focusItem()) {
|
if (!movement.isNull() && !focusItem()) {
|
||||||
qDebug() << "keyPressEvent: let's move by " << movement;
|
|
||||||
if (!moving_parts_) {
|
if (!moving_parts_) {
|
||||||
moving_parts_ = true;
|
moving_parts_ = true;
|
||||||
fsi_pos = movement;
|
fsi_pos = movement;
|
||||||
@@ -759,6 +759,7 @@ void ElementScene::paste() {
|
|||||||
*/
|
*/
|
||||||
void ElementScene::slot_select(const ElementContent &content) {
|
void ElementScene::slot_select(const ElementContent &content) {
|
||||||
blockSignals(true);
|
blockSignals(true);
|
||||||
|
clearSelection();
|
||||||
foreach(QGraphicsItem *qgi, content) qgi -> setSelected(true);
|
foreach(QGraphicsItem *qgi, content) qgi -> setSelected(true);
|
||||||
blockSignals(false);
|
blockSignals(false);
|
||||||
emit(selectionChanged());
|
emit(selectionChanged());
|
||||||
@@ -775,7 +776,7 @@ void ElementScene::slot_selectAll() {
|
|||||||
Deselectionne tout
|
Deselectionne tout
|
||||||
*/
|
*/
|
||||||
void ElementScene::slot_deselectAll() {
|
void ElementScene::slot_deselectAll() {
|
||||||
clearSelection();
|
slot_select(ElementContent());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ ElementView::ElementView(ElementScene *scene, QWidget *parent) :
|
|||||||
scene_(scene),
|
scene_(scene),
|
||||||
offset_paste_count_(0)
|
offset_paste_count_(0)
|
||||||
{
|
{
|
||||||
|
setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);
|
||||||
setInteractive(true);
|
setInteractive(true);
|
||||||
setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
||||||
setResizeAnchor(QGraphicsView::AnchorUnderMouse);
|
setResizeAnchor(QGraphicsView::AnchorUnderMouse);
|
||||||
|
|||||||
@@ -39,6 +39,13 @@
|
|||||||
#include "texteditor.h"
|
#include "texteditor.h"
|
||||||
#include "textfieldeditor.h"
|
#include "textfieldeditor.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
Nombre maximum de primitives affichees par la "liste des parties"
|
||||||
|
Au-dela, un petit message est affiche, indiquant que ce nombre a ete depasse
|
||||||
|
et que la liste ne sera donc pas mise a jour.
|
||||||
|
*/
|
||||||
|
#define QET_MAX_PARTS_IN_ELEMENT_EDITOR_LIST 200
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@param parent QWidget parent
|
@param parent QWidget parent
|
||||||
@@ -1119,17 +1126,25 @@ void QETElementEditor::slot_createPartsList() {
|
|||||||
parts_list -> blockSignals(true);
|
parts_list -> blockSignals(true);
|
||||||
parts_list -> clear();
|
parts_list -> clear();
|
||||||
QList<QGraphicsItem *> qgis = ce_scene -> zItems(true);
|
QList<QGraphicsItem *> qgis = ce_scene -> zItems(true);
|
||||||
for (int j = qgis.count() - 1 ; j >= 0 ; -- j) {
|
|
||||||
QGraphicsItem *qgi = qgis[j];
|
// on ne construit plus la liste a partir de 200 primitives
|
||||||
if (CustomElementPart *cep = dynamic_cast<CustomElementPart *>(qgi)) {
|
// c'est ingerable : la maj de la liste prend trop de temps et le resultat
|
||||||
QString part_desc = cep -> name();
|
// est inexploitable
|
||||||
QListWidgetItem *qlwi = new QListWidgetItem(part_desc);
|
if (qgis.count() <= QET_MAX_PARTS_IN_ELEMENT_EDITOR_LIST) {
|
||||||
QVariant v;
|
for (int j = qgis.count() - 1 ; j >= 0 ; -- j) {
|
||||||
v.setValue<QGraphicsItem *>(qgi);
|
QGraphicsItem *qgi = qgis[j];
|
||||||
qlwi -> setData(42, v);
|
if (CustomElementPart *cep = dynamic_cast<CustomElementPart *>(qgi)) {
|
||||||
parts_list -> addItem(qlwi);
|
QString part_desc = cep -> name();
|
||||||
qlwi -> setSelected(qgi -> isSelected());
|
QListWidgetItem *qlwi = new QListWidgetItem(part_desc);
|
||||||
|
QVariant v;
|
||||||
|
v.setValue<QGraphicsItem *>(qgi);
|
||||||
|
qlwi -> setData(42, v);
|
||||||
|
parts_list -> addItem(qlwi);
|
||||||
|
qlwi -> setSelected(qgi -> isSelected());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
parts_list -> addItem(new QListWidgetItem(tr("Trop de primitives, liste non g\351n\351r\351e.")));
|
||||||
}
|
}
|
||||||
parts_list -> blockSignals(false);
|
parts_list -> blockSignals(false);
|
||||||
}
|
}
|
||||||
@@ -1138,9 +1153,10 @@ void QETElementEditor::slot_createPartsList() {
|
|||||||
Met a jour la selection dans la liste des parties
|
Met a jour la selection dans la liste des parties
|
||||||
*/
|
*/
|
||||||
void QETElementEditor::slot_updatePartsList() {
|
void QETElementEditor::slot_updatePartsList() {
|
||||||
if (parts_list -> count() != ce_scene -> items().count()) {
|
int items_count = ce_scene -> items().count();
|
||||||
|
if (parts_list -> count() != items_count) {
|
||||||
slot_createPartsList();
|
slot_createPartsList();
|
||||||
} else {
|
} else if (items_count <= QET_MAX_PARTS_IN_ELEMENT_EDITOR_LIST) {
|
||||||
parts_list -> blockSignals(true);
|
parts_list -> blockSignals(true);
|
||||||
int i = 0;
|
int i = 0;
|
||||||
QList<QGraphicsItem *> items = ce_scene -> zItems(true);
|
QList<QGraphicsItem *> items = ce_scene -> zItems(true);
|
||||||
|
|||||||
Reference in New Issue
Block a user