mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-09-14 20:33:05 +02:00
Rapatriement dans la branche 0.3 des revisions 855 a 870.
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.3@871 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
parent
f6f320a0a6
commit
815a2ea3e8
@ -1,6 +1,6 @@
|
|||||||
<definition width="30" version="0.2" hotspot_x="15" hotspot_y="15" height="40" type="element" orientation="dnnn" >
|
<definition width="30" version="0.2" hotspot_x="15" hotspot_y="15" height="40" type="element" orientation="dnnn" >
|
||||||
<names>
|
<names>
|
||||||
<name lang="ru" >Эл. плита</name>
|
<name lang="ru" >Духовой шкаф</name>
|
||||||
<name lang="en" >Electric oven</name>
|
<name lang="en" >Electric oven</name>
|
||||||
<name lang="fr" >Four électrique</name>
|
<name lang="fr" >Four électrique</name>
|
||||||
<name lang="es" >Horno eléctrico</name>
|
<name lang="es" >Horno eléctrico</name>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<definition width="30" version="0.1" hotspot_x="15" hotspot_y="15" height="40" type="element" orientation="dnnn" >
|
<definition width="30" version="0.1" hotspot_x="15" hotspot_y="15" height="40" type="element" orientation="dnnn" >
|
||||||
<names>
|
<names>
|
||||||
|
<name lang="ru" >Эл. плита</name>
|
||||||
<name lang="en" >Solid plate</name>
|
<name lang="en" >Solid plate</name>
|
||||||
<name lang="fr" >Plaque de cuisson</name>
|
<name lang="fr" >Plaque de cuisson</name>
|
||||||
<name lang="es" >Placa de cocina</name>
|
<name lang="es" >Placa de cocina</name>
|
||||||
|
BIN
ico/16x16/go-down.png
Normal file
BIN
ico/16x16/go-down.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 623 B |
BIN
ico/16x16/go-up.png
Normal file
BIN
ico/16x16/go-up.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 672 B |
BIN
ico/22x22/go-down.png
Normal file
BIN
ico/22x22/go-down.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 892 B |
BIN
ico/22x22/go-up.png
Normal file
BIN
ico/22x22/go-up.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 929 B |
BIN
lang/qet_cs.qm
BIN
lang/qet_cs.qm
Binary file not shown.
1151
lang/qet_cs.ts
1151
lang/qet_cs.ts
File diff suppressed because it is too large
Load Diff
BIN
lang/qet_en.qm
BIN
lang/qet_en.qm
Binary file not shown.
1151
lang/qet_en.ts
1151
lang/qet_en.ts
File diff suppressed because it is too large
Load Diff
BIN
lang/qet_es.qm
BIN
lang/qet_es.qm
Binary file not shown.
1151
lang/qet_es.ts
1151
lang/qet_es.ts
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,7 @@
|
|||||||
<context>
|
<context>
|
||||||
<name>QETElementEditor</name>
|
<name>QETElementEditor</name>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="sources/editor/qetelementeditor.cpp" line="505"/>
|
<location filename="../sources/editor/qetelementeditor.cpp" line="635"/>
|
||||||
<source>%n partie(s) sélectionnée(s).</source>
|
<source>%n partie(s) sélectionnée(s).</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>%n partie sélectionnée.</numerusform>
|
<numerusform>%n partie sélectionnée.</numerusform>
|
||||||
@ -12,7 +12,7 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="sources/editor/qetelementeditor.cpp" line="570"/>
|
<location filename="../sources/editor/qetelementeditor.cpp" line="700"/>
|
||||||
<source>La vérification de cet élément a généré %n avertissement(s) :</source>
|
<source>La vérification de cet élément a généré %n avertissement(s) :</source>
|
||||||
<comment>message box content</comment>
|
<comment>message box content</comment>
|
||||||
<translation>
|
<translation>
|
||||||
@ -24,7 +24,7 @@
|
|||||||
<context>
|
<context>
|
||||||
<name>QObject</name>
|
<name>QObject</name>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="sources/qet.cpp" line="157"/>
|
<location filename="../sources/qet.cpp" line="157"/>
|
||||||
<source>%n élément(s)</source>
|
<source>%n élément(s)</source>
|
||||||
<comment>part of a sentence listing the content of a diagram</comment>
|
<comment>part of a sentence listing the content of a diagram</comment>
|
||||||
<translation>
|
<translation>
|
||||||
@ -33,7 +33,7 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="sources/qet.cpp" line="178"/>
|
<location filename="../sources/qet.cpp" line="178"/>
|
||||||
<source>%n conducteur(s)</source>
|
<source>%n conducteur(s)</source>
|
||||||
<comment>part of a sentence listing the content of a diagram</comment>
|
<comment>part of a sentence listing the content of a diagram</comment>
|
||||||
<translation>
|
<translation>
|
||||||
@ -42,7 +42,7 @@
|
|||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="sources/qet.cpp" line="193"/>
|
<location filename="../sources/qet.cpp" line="193"/>
|
||||||
<source>%n champ(s) de texte</source>
|
<source>%n champ(s) de texte</source>
|
||||||
<comment>part of a sentence listing the content of a diagram</comment>
|
<comment>part of a sentence listing the content of a diagram</comment>
|
||||||
<translation>
|
<translation>
|
||||||
|
BIN
lang/qet_pt.qm
BIN
lang/qet_pt.qm
Binary file not shown.
1151
lang/qet_pt.ts
1151
lang/qet_pt.ts
File diff suppressed because it is too large
Load Diff
BIN
lang/qet_ru.qm
BIN
lang/qet_ru.qm
Binary file not shown.
1199
lang/qet_ru.ts
1199
lang/qet_ru.ts
File diff suppressed because it is too large
Load Diff
@ -44,7 +44,9 @@
|
|||||||
<file>ico/16x16/endline-triangle.png</file>
|
<file>ico/16x16/endline-triangle.png</file>
|
||||||
<file>ico/16x16/folder-new.png</file>
|
<file>ico/16x16/folder-new.png</file>
|
||||||
<file>ico/16x16/folder.png</file>
|
<file>ico/16x16/folder.png</file>
|
||||||
|
<file>ico/16x16/go-down.png</file>
|
||||||
<file>ico/16x16/go-home.png</file>
|
<file>ico/16x16/go-home.png</file>
|
||||||
|
<file>ico/16x16/go-up.png</file>
|
||||||
<file>ico/16x16/ground.png</file>
|
<file>ico/16x16/ground.png</file>
|
||||||
<file>ico/16x16/item_cancel.png</file>
|
<file>ico/16x16/item_cancel.png</file>
|
||||||
<file>ico/16x16/item_copy.png</file>
|
<file>ico/16x16/item_copy.png</file>
|
||||||
@ -118,7 +120,9 @@
|
|||||||
<file>ico/22x22/folder-delete.png</file>
|
<file>ico/22x22/folder-delete.png</file>
|
||||||
<file>ico/22x22/folder-edit.png</file>
|
<file>ico/22x22/folder-edit.png</file>
|
||||||
<file>ico/22x22/folder-new.png</file>
|
<file>ico/22x22/folder-new.png</file>
|
||||||
|
<file>ico/22x22/go-down.png</file>
|
||||||
<file>ico/22x22/go-home.png</file>
|
<file>ico/22x22/go-home.png</file>
|
||||||
|
<file>ico/22x22/go-up.png</file>
|
||||||
<file>ico/22x22/hotspot.png</file>
|
<file>ico/22x22/hotspot.png</file>
|
||||||
<file>ico/22x22/landscape.png</file>
|
<file>ico/22x22/landscape.png</file>
|
||||||
<file>ico/22x22/line.png</file>
|
<file>ico/22x22/line.png</file>
|
||||||
|
@ -40,7 +40,7 @@ BorderPropertiesWidget::~BorderPropertiesWidget() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@return the border properties edited and modified by
|
@return Les proprietes editees par ce widget
|
||||||
*/
|
*/
|
||||||
const BorderProperties &BorderPropertiesWidget::borderProperties() {
|
const BorderProperties &BorderPropertiesWidget::borderProperties() {
|
||||||
border_.columns_count = columns_count -> value();
|
border_.columns_count = columns_count -> value();
|
||||||
@ -52,6 +52,25 @@ const BorderProperties &BorderPropertiesWidget::borderProperties() {
|
|||||||
return(border_);
|
return(border_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return true si ce widget est en lecture seule, false sinon
|
||||||
|
*/
|
||||||
|
bool BorderPropertiesWidget::isReadOnly() const {
|
||||||
|
return(columns_count -> isReadOnly());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param ro true pour passer ce widget en lecture seule, false sinon
|
||||||
|
*/
|
||||||
|
void BorderPropertiesWidget::setReadOnly(bool ro) {
|
||||||
|
columns_count -> setReadOnly(ro);
|
||||||
|
columns_width -> setReadOnly(ro);
|
||||||
|
display_columns -> setDisabled(ro);
|
||||||
|
rows_count -> setReadOnly(ro);
|
||||||
|
rows_height -> setReadOnly(ro);
|
||||||
|
display_rows -> setDisabled(ro);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Definit les proprietes a editer
|
Definit les proprietes a editer
|
||||||
@param bp Nouvelles proprietes
|
@param bp Nouvelles proprietes
|
||||||
|
@ -39,6 +39,8 @@ class BorderPropertiesWidget : public QWidget {
|
|||||||
// methodes
|
// methodes
|
||||||
public:
|
public:
|
||||||
const BorderProperties &borderProperties();
|
const BorderProperties &borderProperties();
|
||||||
|
bool isReadOnly() const;
|
||||||
|
void setReadOnly(bool);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void setEditedBorder(const BorderProperties &);
|
void setEditedBorder(const BorderProperties &);
|
||||||
|
@ -268,3 +268,26 @@ void ConductorPropertiesWidget::setConductorProperties(const ConductorProperties
|
|||||||
ConductorProperties ConductorPropertiesWidget::conductorProperties() const {
|
ConductorProperties ConductorPropertiesWidget::conductorProperties() const {
|
||||||
return(properties_);
|
return(properties_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return true si ce widget est en lecture seule, false sinon
|
||||||
|
*/
|
||||||
|
bool ConductorPropertiesWidget::isReadOnly() const {
|
||||||
|
return(text_field -> isReadOnly());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param ro true pour passer ce widget en lecture seule, false sinon
|
||||||
|
*/
|
||||||
|
void ConductorPropertiesWidget::setReadOnly(bool ro) {
|
||||||
|
simple -> setDisabled(ro);
|
||||||
|
multiline -> setDisabled(ro);
|
||||||
|
singleline -> setDisabled(ro);
|
||||||
|
text_field -> setReadOnly(ro);
|
||||||
|
phase_checkbox -> setDisabled(ro);
|
||||||
|
phase_spinbox -> setReadOnly(ro);
|
||||||
|
ground_checkbox -> setDisabled(ro);
|
||||||
|
neutral_checkbox -> setDisabled(ro);
|
||||||
|
color_button -> setDisabled(ro);
|
||||||
|
dashed_checkbox -> setDisabled(ro);
|
||||||
|
}
|
||||||
|
@ -40,6 +40,8 @@ class ConductorPropertiesWidget : public QWidget {
|
|||||||
public:
|
public:
|
||||||
void setConductorProperties(const ConductorProperties &);
|
void setConductorProperties(const ConductorProperties &);
|
||||||
ConductorProperties conductorProperties() const;
|
ConductorProperties conductorProperties() const;
|
||||||
|
bool isReadOnly() const;
|
||||||
|
void setReadOnly(bool);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void setConductorType(ConductorProperties::ConductorType);
|
void setConductorType(ConductorProperties::ConductorType);
|
||||||
|
@ -403,7 +403,7 @@ QString DiagramView::title() const {
|
|||||||
Edite les informations du schema.
|
Edite les informations du schema.
|
||||||
*/
|
*/
|
||||||
void DiagramView::editDiagramProperties() {
|
void DiagramView::editDiagramProperties() {
|
||||||
if (scene -> isReadOnly()) return;
|
bool diagram_is_read_only = scene -> isReadOnly();
|
||||||
|
|
||||||
// recupere le cartouche et les dimensions du schema
|
// recupere le cartouche et les dimensions du schema
|
||||||
InsetProperties inset = scene -> border_and_inset.exportInset();
|
InsetProperties inset = scene -> border_and_inset.exportInset();
|
||||||
@ -419,10 +419,12 @@ void DiagramView::editDiagramProperties() {
|
|||||||
popup.setWindowTitle(tr("Propri\351t\351s du sch\351ma", "window title"));
|
popup.setWindowTitle(tr("Propri\351t\351s du sch\351ma", "window title"));
|
||||||
|
|
||||||
BorderPropertiesWidget *border_infos = new BorderPropertiesWidget(border, &popup);
|
BorderPropertiesWidget *border_infos = new BorderPropertiesWidget(border, &popup);
|
||||||
|
border_infos -> setReadOnly(diagram_is_read_only);
|
||||||
InsetPropertiesWidget *inset_infos = new InsetPropertiesWidget(inset, false, &popup);
|
InsetPropertiesWidget *inset_infos = new InsetPropertiesWidget(inset, false, &popup);
|
||||||
|
inset_infos -> setReadOnly(diagram_is_read_only);
|
||||||
|
|
||||||
// boutons
|
// boutons
|
||||||
QDialogButtonBox boutons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
QDialogButtonBox boutons(diagram_is_read_only ? QDialogButtonBox::Ok : QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||||
connect(&boutons, SIGNAL(accepted()), &popup, SLOT(accept()));
|
connect(&boutons, SIGNAL(accepted()), &popup, SLOT(accept()));
|
||||||
connect(&boutons, SIGNAL(rejected()), &popup, SLOT(reject()));
|
connect(&boutons, SIGNAL(rejected()), &popup, SLOT(reject()));
|
||||||
|
|
||||||
@ -433,7 +435,7 @@ void DiagramView::editDiagramProperties() {
|
|||||||
layout_v.addStretch();
|
layout_v.addStretch();
|
||||||
layout_v.addWidget(&boutons);
|
layout_v.addWidget(&boutons);
|
||||||
// si le dialogue est accepte
|
// si le dialogue est accepte
|
||||||
if (popup.exec() == QDialog::Accepted) {
|
if (popup.exec() == QDialog::Accepted && !diagram_is_read_only) {
|
||||||
InsetProperties new_inset = inset_infos -> insetProperties();
|
InsetProperties new_inset = inset_infos -> insetProperties();
|
||||||
BorderProperties new_border = border_infos -> borderProperties();
|
BorderProperties new_border = border_infos -> borderProperties();
|
||||||
// s'il y a des modifications au cartouche
|
// s'il y a des modifications au cartouche
|
||||||
@ -816,9 +818,11 @@ void DiagramView::resetConductors() {
|
|||||||
futurs nouveaux conducteurs
|
futurs nouveaux conducteurs
|
||||||
*/
|
*/
|
||||||
void DiagramView::editDefaultConductorProperties() {
|
void DiagramView::editDefaultConductorProperties() {
|
||||||
if (scene -> isReadOnly()) return;
|
bool diagram_is_read_only = scene -> isReadOnly();
|
||||||
|
|
||||||
// initialise l'editeur de proprietes pour le conducteur
|
// initialise l'editeur de proprietes pour le conducteur
|
||||||
ConductorPropertiesWidget *cpw = new ConductorPropertiesWidget(scene -> defaultConductorProperties);
|
ConductorPropertiesWidget *cpw = new ConductorPropertiesWidget(scene -> defaultConductorProperties);
|
||||||
|
cpw -> setReadOnly(diagram_is_read_only);
|
||||||
|
|
||||||
// l'insere dans un dialogue
|
// l'insere dans un dialogue
|
||||||
QDialog conductor_dialog(diagramEditor());
|
QDialog conductor_dialog(diagramEditor());
|
||||||
@ -829,13 +833,13 @@ void DiagramView::editDefaultConductorProperties() {
|
|||||||
conductor_dialog.setWindowTitle(tr("\311diter les propri\351t\351s par d\351faut des conducteurs", "window title"));
|
conductor_dialog.setWindowTitle(tr("\311diter les propri\351t\351s par d\351faut des conducteurs", "window title"));
|
||||||
QVBoxLayout *dialog_layout = new QVBoxLayout(&conductor_dialog);
|
QVBoxLayout *dialog_layout = new QVBoxLayout(&conductor_dialog);
|
||||||
dialog_layout -> addWidget(cpw);
|
dialog_layout -> addWidget(cpw);
|
||||||
QDialogButtonBox *dbb = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
QDialogButtonBox *dbb = new QDialogButtonBox(diagram_is_read_only ? QDialogButtonBox::Ok : QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||||
dialog_layout -> addWidget(dbb);
|
dialog_layout -> addWidget(dbb);
|
||||||
connect(dbb, SIGNAL(accepted()), &conductor_dialog, SLOT(accept()));
|
connect(dbb, SIGNAL(accepted()), &conductor_dialog, SLOT(accept()));
|
||||||
connect(dbb, SIGNAL(rejected()), &conductor_dialog, SLOT(reject()));
|
connect(dbb, SIGNAL(rejected()), &conductor_dialog, SLOT(reject()));
|
||||||
|
|
||||||
// execute le dialogue et met a jour le conducteur
|
// execute le dialogue et met a jour le conducteur
|
||||||
if (conductor_dialog.exec() == QDialog::Accepted) {
|
if (conductor_dialog.exec() == QDialog::Accepted && !diagram_is_read_only) {
|
||||||
scene -> defaultConductorProperties = cpw -> conductorProperties();
|
scene -> defaultConductorProperties = cpw -> conductorProperties();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ ArcEditor::ArcEditor(QETElementEditor *editor, PartArc *arc, QWidget *parent) :
|
|||||||
|
|
||||||
QGridLayout *grid = new QGridLayout();
|
QGridLayout *grid = new QGridLayout();
|
||||||
grid -> addWidget(new QLabel(tr("Centre : ")), 0, 0);
|
grid -> addWidget(new QLabel(tr("Centre : ")), 0, 0);
|
||||||
grid -> addWidget(new QLabel("x"), 1, 0);
|
grid -> addWidget(new QLabel("x"), 1, 0, Qt::AlignRight);
|
||||||
grid -> addWidget(x, 1, 1);
|
grid -> addWidget(x, 1, 1);
|
||||||
grid -> addWidget(new QLabel("y"), 1, 2);
|
grid -> addWidget(new QLabel("y"), 1, 2);
|
||||||
grid -> addWidget(y, 1, 3);
|
grid -> addWidget(y, 1, 3);
|
||||||
|
@ -43,7 +43,7 @@ CircleEditor::CircleEditor(QETElementEditor *editor, PartCircle *circle, QWidget
|
|||||||
|
|
||||||
QGridLayout *grid = new QGridLayout();
|
QGridLayout *grid = new QGridLayout();
|
||||||
grid -> addWidget(new QLabel(tr("Centre : ")), 0, 0);
|
grid -> addWidget(new QLabel(tr("Centre : ")), 0, 0);
|
||||||
grid -> addWidget(new QLabel("x"), 1, 0);
|
grid -> addWidget(new QLabel("x"), 1, 0, Qt::AlignRight);
|
||||||
grid -> addWidget(x, 1, 1);
|
grid -> addWidget(x, 1, 1);
|
||||||
grid -> addWidget(new QLabel("y"), 1, 2);
|
grid -> addWidget(new QLabel("y"), 1, 2);
|
||||||
grid -> addWidget(y, 1, 3);
|
grid -> addWidget(y, 1, 3);
|
||||||
|
@ -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();
|
||||||
@ -758,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());
|
||||||
@ -774,7 +776,7 @@ void ElementScene::slot_selectAll() {
|
|||||||
Deselectionne tout
|
Deselectionne tout
|
||||||
*/
|
*/
|
||||||
void ElementScene::slot_deselectAll() {
|
void ElementScene::slot_deselectAll() {
|
||||||
clearSelection();
|
slot_select(ElementContent());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -805,6 +807,8 @@ void ElementScene::slot_delete() {
|
|||||||
(hotspot) de l'element.
|
(hotspot) de l'element.
|
||||||
*/
|
*/
|
||||||
void ElementScene::slot_editSizeHotSpot() {
|
void ElementScene::slot_editSizeHotSpot() {
|
||||||
|
bool is_read_only = element_editor && element_editor -> isReadOnly();
|
||||||
|
|
||||||
// cree un dialogue
|
// cree un dialogue
|
||||||
QDialog dialog_sh(element_editor);
|
QDialog dialog_sh(element_editor);
|
||||||
dialog_sh.setModal(true);
|
dialog_sh.setModal(true);
|
||||||
@ -822,16 +826,17 @@ void ElementScene::slot_editSizeHotSpot() {
|
|||||||
hotspot_editor -> setOldHotspot(hotspot());
|
hotspot_editor -> setOldHotspot(hotspot());
|
||||||
hotspot_editor -> setPartsRect(itemsBoundingRect());
|
hotspot_editor -> setPartsRect(itemsBoundingRect());
|
||||||
hotspot_editor -> setPartsRectEnabled(true);
|
hotspot_editor -> setPartsRectEnabled(true);
|
||||||
|
hotspot_editor -> setReadOnly(is_read_only);
|
||||||
dialog_layout -> addWidget(hotspot_editor);
|
dialog_layout -> addWidget(hotspot_editor);
|
||||||
|
|
||||||
// ajoute deux boutons au dialogue
|
// ajoute deux boutons au dialogue
|
||||||
QDialogButtonBox *dialog_buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
QDialogButtonBox *dialog_buttons = new QDialogButtonBox(is_read_only ? QDialogButtonBox::Ok : QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||||
dialog_layout -> addWidget(dialog_buttons);
|
dialog_layout -> addWidget(dialog_buttons);
|
||||||
connect(dialog_buttons, SIGNAL(accepted()), &dialog_sh, SLOT(accept()));
|
connect(dialog_buttons, SIGNAL(accepted()), &dialog_sh, SLOT(accept()));
|
||||||
connect(dialog_buttons, SIGNAL(rejected()), &dialog_sh, SLOT(reject()));
|
connect(dialog_buttons, SIGNAL(rejected()), &dialog_sh, SLOT(reject()));
|
||||||
|
|
||||||
// lance le dialogue
|
// lance le dialogue
|
||||||
if (dialog_sh.exec() != QDialog::Accepted) return;
|
if (dialog_sh.exec() == QDialog::Accepted && is_read_only) {
|
||||||
QSize new_size(hotspot_editor -> elementSize());
|
QSize new_size(hotspot_editor -> elementSize());
|
||||||
QSize old_size(width(), height());
|
QSize old_size(width(), height());
|
||||||
QPoint new_hotspot(hotspot_editor -> hotspot());
|
QPoint new_hotspot(hotspot_editor -> hotspot());
|
||||||
@ -840,12 +845,14 @@ void ElementScene::slot_editSizeHotSpot() {
|
|||||||
if (new_size != old_size || new_hotspot != old_hotspot) {
|
if (new_size != old_size || new_hotspot != old_hotspot) {
|
||||||
undo_stack.push(new ChangeHotspotCommand(this, old_size, new_size, old_hotspot, new_hotspot, hotspot_editor -> offsetParts()));
|
undo_stack.push(new ChangeHotspotCommand(this, old_size, new_size, old_hotspot, new_hotspot, hotspot_editor -> offsetParts()));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Lance un dialogue pour editer les noms de cete element
|
Lance un dialogue pour editer les noms de cete element
|
||||||
*/
|
*/
|
||||||
void ElementScene::slot_editOrientations() {
|
void ElementScene::slot_editOrientations() {
|
||||||
|
bool is_read_only = element_editor && element_editor -> isReadOnly();
|
||||||
|
|
||||||
// cree un dialogue
|
// cree un dialogue
|
||||||
QDialog dialog_ori(element_editor);
|
QDialog dialog_ori(element_editor);
|
||||||
@ -866,21 +873,23 @@ void ElementScene::slot_editOrientations() {
|
|||||||
// ajoute un OrientationSetWidget au dialogue
|
// ajoute un OrientationSetWidget au dialogue
|
||||||
OrientationSetWidget *ori_widget = new OrientationSetWidget();
|
OrientationSetWidget *ori_widget = new OrientationSetWidget();
|
||||||
ori_widget -> setOrientationSet(ori);
|
ori_widget -> setOrientationSet(ori);
|
||||||
|
ori_widget -> setReadOnly(is_read_only);
|
||||||
dialog_layout -> addWidget(ori_widget);
|
dialog_layout -> addWidget(ori_widget);
|
||||||
|
|
||||||
// ajoute une case a cocher pour les connexions internes
|
// ajoute une case a cocher pour les connexions internes
|
||||||
QCheckBox *ic_checkbox = new QCheckBox(tr("Autoriser les connexions internes"));
|
QCheckBox *ic_checkbox = new QCheckBox(tr("Autoriser les connexions internes"));
|
||||||
ic_checkbox -> setChecked(internal_connections);
|
ic_checkbox -> setChecked(internal_connections);
|
||||||
|
ic_checkbox -> setDisabled(is_read_only);
|
||||||
dialog_layout -> addWidget(ic_checkbox);
|
dialog_layout -> addWidget(ic_checkbox);
|
||||||
dialog_layout -> addStretch();
|
dialog_layout -> addStretch();
|
||||||
// ajoute deux boutons au dialogue
|
// ajoute deux boutons au dialogue
|
||||||
QDialogButtonBox *dialog_buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
QDialogButtonBox *dialog_buttons = new QDialogButtonBox(is_read_only ? QDialogButtonBox::Ok : QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||||
dialog_layout -> addWidget(dialog_buttons);
|
dialog_layout -> addWidget(dialog_buttons);
|
||||||
connect(dialog_buttons, SIGNAL(accepted()), &dialog_ori, SLOT(accept()));
|
connect(dialog_buttons, SIGNAL(accepted()), &dialog_ori, SLOT(accept()));
|
||||||
connect(dialog_buttons, SIGNAL(rejected()), &dialog_ori, SLOT(reject()));
|
connect(dialog_buttons, SIGNAL(rejected()), &dialog_ori, SLOT(reject()));
|
||||||
|
|
||||||
// lance le dialogue
|
// lance le dialogue
|
||||||
if (dialog_ori.exec() == QDialog::Accepted) {
|
if (dialog_ori.exec() == QDialog::Accepted && !is_read_only) {
|
||||||
OrientationSet new_ori = ori_widget -> orientationSet();
|
OrientationSet new_ori = ori_widget -> orientationSet();
|
||||||
if (new_ori != ori) {
|
if (new_ori != ori) {
|
||||||
undoStack().push(new ChangeOrientationsCommand(this, ori, new_ori));
|
undoStack().push(new ChangeOrientationsCommand(this, ori, new_ori));
|
||||||
@ -897,6 +906,7 @@ void ElementScene::slot_editOrientations() {
|
|||||||
sur l'auteur de l'element, sa licence, etc.
|
sur l'auteur de l'element, sa licence, etc.
|
||||||
*/
|
*/
|
||||||
void ElementScene::slot_editAuthorInformations() {
|
void ElementScene::slot_editAuthorInformations() {
|
||||||
|
bool is_read_only = element_editor && element_editor -> isReadOnly();
|
||||||
|
|
||||||
// cree un dialogue
|
// cree un dialogue
|
||||||
QDialog dialog_author(element_editor);
|
QDialog dialog_author(element_editor);
|
||||||
@ -918,16 +928,17 @@ void ElementScene::slot_editAuthorInformations() {
|
|||||||
QTextEdit *text_field = new QTextEdit();
|
QTextEdit *text_field = new QTextEdit();
|
||||||
text_field -> setAcceptRichText(false);
|
text_field -> setAcceptRichText(false);
|
||||||
text_field -> setPlainText(informations());
|
text_field -> setPlainText(informations());
|
||||||
|
text_field -> setReadOnly(is_read_only);
|
||||||
dialog_layout -> addWidget(text_field);
|
dialog_layout -> addWidget(text_field);
|
||||||
|
|
||||||
// ajoute deux boutons au dialogue
|
// ajoute deux boutons au dialogue
|
||||||
QDialogButtonBox *dialog_buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
QDialogButtonBox *dialog_buttons = new QDialogButtonBox(is_read_only ? QDialogButtonBox::Ok : QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||||
dialog_layout -> addWidget(dialog_buttons);
|
dialog_layout -> addWidget(dialog_buttons);
|
||||||
connect(dialog_buttons, SIGNAL(accepted()), &dialog_author, SLOT(accept()));
|
connect(dialog_buttons, SIGNAL(accepted()), &dialog_author, SLOT(accept()));
|
||||||
connect(dialog_buttons, SIGNAL(rejected()), &dialog_author, SLOT(reject()));
|
connect(dialog_buttons, SIGNAL(rejected()), &dialog_author, SLOT(reject()));
|
||||||
|
|
||||||
// lance le dialogue
|
// lance le dialogue
|
||||||
if (dialog_author.exec() == QDialog::Accepted) {
|
if (dialog_author.exec() == QDialog::Accepted && !is_read_only) {
|
||||||
QString new_infos = text_field -> toPlainText();
|
QString new_infos = text_field -> toPlainText();
|
||||||
if (new_infos != informations()) {
|
if (new_infos != informations()) {
|
||||||
undoStack().push(new ChangeInformationsCommand(this, informations(), new_infos));
|
undoStack().push(new ChangeInformationsCommand(this, informations(), new_infos));
|
||||||
@ -939,6 +950,7 @@ void ElementScene::slot_editAuthorInformations() {
|
|||||||
Lance un dialogue pour editer les noms de cet element
|
Lance un dialogue pour editer les noms de cet element
|
||||||
*/
|
*/
|
||||||
void ElementScene::slot_editNames() {
|
void ElementScene::slot_editNames() {
|
||||||
|
bool is_read_only = element_editor && element_editor -> isReadOnly();
|
||||||
|
|
||||||
// cree un dialogue
|
// cree un dialogue
|
||||||
QDialog dialog(element_editor);
|
QDialog dialog(element_editor);
|
||||||
@ -959,17 +971,18 @@ void ElementScene::slot_editNames() {
|
|||||||
// ajoute un NamesListWidget au dialogue
|
// ajoute un NamesListWidget au dialogue
|
||||||
NamesListWidget *names_widget = new NamesListWidget();
|
NamesListWidget *names_widget = new NamesListWidget();
|
||||||
names_widget -> setNames(_names);
|
names_widget -> setNames(_names);
|
||||||
|
names_widget -> setReadOnly(is_read_only);
|
||||||
dialog_layout -> addWidget(names_widget);
|
dialog_layout -> addWidget(names_widget);
|
||||||
|
|
||||||
// ajoute deux boutons au dialogue
|
// ajoute deux boutons au dialogue
|
||||||
QDialogButtonBox *dialog_buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
QDialogButtonBox *dialog_buttons = new QDialogButtonBox(is_read_only ? QDialogButtonBox::Ok : QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||||
dialog_layout -> addWidget(dialog_buttons);
|
dialog_layout -> addWidget(dialog_buttons);
|
||||||
connect(dialog_buttons, SIGNAL(accepted()), names_widget, SLOT(check()));
|
connect(dialog_buttons, SIGNAL(accepted()), names_widget, SLOT(check()));
|
||||||
connect(names_widget, SIGNAL(inputChecked()), &dialog, SLOT(accept()));
|
connect(names_widget, SIGNAL(inputChecked()), &dialog, SLOT(accept()));
|
||||||
connect(dialog_buttons, SIGNAL(rejected()), &dialog, SLOT(reject()));
|
connect(dialog_buttons, SIGNAL(rejected()), &dialog, SLOT(reject()));
|
||||||
|
|
||||||
// lance le dialogue
|
// lance le dialogue
|
||||||
if (dialog.exec() == QDialog::Accepted) {
|
if (dialog.exec() == QDialog::Accepted && !is_read_only) {
|
||||||
NamesList new_names(names_widget -> names());
|
NamesList new_names(names_widget -> names());
|
||||||
if (new_names != _names) undoStack().push(new ChangeNamesCommand(this, _names, new_names));
|
if (new_names != _names) undoStack().push(new ChangeNamesCommand(this, _names, new_names));
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -45,7 +45,7 @@ EllipseEditor::EllipseEditor(QETElementEditor *editor, PartEllipse *ellipse, QWi
|
|||||||
|
|
||||||
QGridLayout *grid = new QGridLayout();
|
QGridLayout *grid = new QGridLayout();
|
||||||
grid -> addWidget(new QLabel(tr("Centre : ")), 0, 0);
|
grid -> addWidget(new QLabel(tr("Centre : ")), 0, 0);
|
||||||
grid -> addWidget(new QLabel("x"), 1, 0);
|
grid -> addWidget(new QLabel("x"), 1, 0, Qt::AlignRight);
|
||||||
grid -> addWidget(x, 1, 1);
|
grid -> addWidget(x, 1, 1);
|
||||||
grid -> addWidget(new QLabel("y"), 1, 2);
|
grid -> addWidget(new QLabel("y"), 1, 2);
|
||||||
grid -> addWidget(y, 1, 3);
|
grid -> addWidget(y, 1, 3);
|
||||||
|
@ -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
|
||||||
@ -439,10 +446,6 @@ void QETElementEditor::slot_updateMenus() {
|
|||||||
inv_select -> setEnabled(!read_only);
|
inv_select -> setEnabled(!read_only);
|
||||||
paste_from_file -> setEnabled(!read_only);
|
paste_from_file -> setEnabled(!read_only);
|
||||||
paste_from_elmt -> setEnabled(!read_only);
|
paste_from_elmt -> setEnabled(!read_only);
|
||||||
edit_size_hs -> setEnabled(!read_only);
|
|
||||||
edit_names -> setEnabled(!read_only);
|
|
||||||
edit_ori -> setEnabled(!read_only);
|
|
||||||
edit_author -> setEnabled(!read_only);
|
|
||||||
parts_list -> setEnabled(!read_only);
|
parts_list -> setEnabled(!read_only);
|
||||||
|
|
||||||
// actions dependant de la presence de parties selectionnees
|
// actions dependant de la presence de parties selectionnees
|
||||||
@ -511,6 +514,8 @@ void QETElementEditor::setupInterface() {
|
|||||||
|
|
||||||
// ScrollArea pour accueillir un widget d'edition (change a la volee)
|
// ScrollArea pour accueillir un widget d'edition (change a la volee)
|
||||||
tools_dock_scroll_area_ = new QScrollArea();
|
tools_dock_scroll_area_ = new QScrollArea();
|
||||||
|
tools_dock_scroll_area_ -> setFrameStyle(QFrame::NoFrame);
|
||||||
|
tools_dock_scroll_area_ -> setAlignment(Qt::AlignHCenter|Qt::AlignTop);
|
||||||
|
|
||||||
// Pile de widgets pour accueillir les deux widgets precedents
|
// Pile de widgets pour accueillir les deux widgets precedents
|
||||||
tools_dock_stack_ = new QStackedWidget();
|
tools_dock_stack_ = new QStackedWidget();
|
||||||
@ -1117,6 +1122,11 @@ 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);
|
||||||
|
|
||||||
|
// on ne construit plus la liste a partir de 200 primitives
|
||||||
|
// c'est ingerable : la maj de la liste prend trop de temps et le resultat
|
||||||
|
// est inexploitable
|
||||||
|
if (qgis.count() <= QET_MAX_PARTS_IN_ELEMENT_EDITOR_LIST) {
|
||||||
for (int j = qgis.count() - 1 ; j >= 0 ; -- j) {
|
for (int j = qgis.count() - 1 ; j >= 0 ; -- j) {
|
||||||
QGraphicsItem *qgi = qgis[j];
|
QGraphicsItem *qgi = qgis[j];
|
||||||
if (CustomElementPart *cep = dynamic_cast<CustomElementPart *>(qgi)) {
|
if (CustomElementPart *cep = dynamic_cast<CustomElementPart *>(qgi)) {
|
||||||
@ -1129,6 +1139,9 @@ void QETElementEditor::slot_createPartsList() {
|
|||||||
qlwi -> setSelected(qgi -> isSelected());
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1136,9 +1149,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);
|
||||||
|
@ -43,12 +43,12 @@ RectangleEditor::RectangleEditor(QETElementEditor *editor, PartRectangle *rect,
|
|||||||
QVBoxLayout *v_layout = new QVBoxLayout(this);
|
QVBoxLayout *v_layout = new QVBoxLayout(this);
|
||||||
|
|
||||||
QGridLayout *grid = new QGridLayout();
|
QGridLayout *grid = new QGridLayout();
|
||||||
grid -> addWidget(new QLabel(tr("Coin sup\351rieur gauche\240: ")), 0, 0);
|
grid -> addWidget(new QLabel(tr("Coin sup\351rieur gauche\240: ")), 0, 0, 1, 4);
|
||||||
grid -> addWidget(new QLabel("x"), 1, 0);
|
grid -> addWidget(new QLabel("x"), 1, 0, Qt::AlignRight);
|
||||||
grid -> addWidget(x, 1, 1);
|
grid -> addWidget(x, 1, 1);
|
||||||
grid -> addWidget(new QLabel("y"), 1, 2);
|
grid -> addWidget(new QLabel("y"), 1, 2);
|
||||||
grid -> addWidget(y, 1, 3);
|
grid -> addWidget(y, 1, 3);
|
||||||
grid -> addWidget(new QLabel(tr("Dimensions\240: ")), 2, 0);
|
grid -> addWidget(new QLabel(tr("Dimensions\240: ")), 2, 0, 1, 4);
|
||||||
grid -> addWidget(new QLabel(tr("Largeur\240:")), 3, 0);
|
grid -> addWidget(new QLabel(tr("Largeur\240:")), 3, 0);
|
||||||
grid -> addWidget(w, 3, 1);
|
grid -> addWidget(w, 3, 1);
|
||||||
grid -> addWidget(new QLabel(tr("Hauteur\240:")), 4, 0);
|
grid -> addWidget(new QLabel(tr("Hauteur\240:")), 4, 0);
|
||||||
|
@ -35,6 +35,18 @@
|
|||||||
*/
|
*/
|
||||||
#define ENABLE_PANEL_DND_CHECKS
|
#define ENABLE_PANEL_DND_CHECKS
|
||||||
|
|
||||||
|
/*
|
||||||
|
Largeur maximale, en pixels, de la pixmap accrochee au pointeur de la
|
||||||
|
souris
|
||||||
|
*/
|
||||||
|
#define QET_MAX_DND_PIXMAP_WIDTH 500
|
||||||
|
|
||||||
|
/*
|
||||||
|
Hauteur maximale, en pixels, de la pixmap accrochee au pointeur de la
|
||||||
|
souris
|
||||||
|
*/
|
||||||
|
#define QET_MAX_DND_PIXMAP_HEIGHT 375
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@param parent Le QWidget parent du panel d'appareils
|
@param parent Le QWidget parent du panel d'appareils
|
||||||
@ -439,8 +451,21 @@ void ElementsPanel::startDrag(Qt::DropActions supportedActions) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// accrochage d'une pixmap representant l'appareil au pointeur
|
// accrochage d'une pixmap representant l'appareil au pointeur
|
||||||
drag -> setPixmap(temp_elmt -> pixmap());
|
QPixmap elmt_pixmap(temp_elmt -> pixmap());
|
||||||
drag -> setHotSpot(temp_elmt -> hotspot());
|
QPoint elmt_hotspot(temp_elmt -> hotspot());
|
||||||
|
|
||||||
|
// ajuste la pixmap si celle-ci est trop grande
|
||||||
|
QPoint elmt_pixmap_size(elmt_pixmap.width(), elmt_pixmap.height());
|
||||||
|
if (elmt_pixmap.width() > QET_MAX_DND_PIXMAP_WIDTH || elmt_pixmap.height() > QET_MAX_DND_PIXMAP_HEIGHT) {
|
||||||
|
elmt_pixmap = elmt_pixmap.scaled(QET_MAX_DND_PIXMAP_WIDTH, QET_MAX_DND_PIXMAP_HEIGHT, Qt::KeepAspectRatio);
|
||||||
|
elmt_hotspot = QPoint(
|
||||||
|
elmt_hotspot.x() * elmt_pixmap.width() / elmt_pixmap_size.x(),
|
||||||
|
elmt_hotspot.y() * elmt_pixmap.height() / elmt_pixmap_size.y()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
drag -> setPixmap(elmt_pixmap);
|
||||||
|
drag -> setHotSpot(elmt_hotspot);
|
||||||
|
|
||||||
// suppression de l'appareil temporaire
|
// suppression de l'appareil temporaire
|
||||||
delete temp_elmt;
|
delete temp_elmt;
|
||||||
@ -888,8 +913,12 @@ void ElementsPanel::diagramOrderChanged(QETProject *project, int from, int to) {
|
|||||||
if (!moved_qtwi_diagram) return;
|
if (!moved_qtwi_diagram) return;
|
||||||
|
|
||||||
// enleve le QTWI et le reinsere au bon endroit
|
// enleve le QTWI et le reinsere au bon endroit
|
||||||
|
bool was_selected = moved_qtwi_diagram -> isSelected();
|
||||||
qtwi_project -> removeChild(moved_qtwi_diagram);
|
qtwi_project -> removeChild(moved_qtwi_diagram);
|
||||||
qtwi_project -> insertChild(to, moved_qtwi_diagram);
|
qtwi_project -> insertChild(to, moved_qtwi_diagram);
|
||||||
|
if (was_selected) {
|
||||||
|
setCurrentItem(moved_qtwi_diagram);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -62,6 +62,8 @@ ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) {
|
|||||||
prj_prop_diagram = new QAction(QET::Icons::DialogInformation, tr("Propri\351t\351s du sch\351ma"), this);
|
prj_prop_diagram = new QAction(QET::Icons::DialogInformation, tr("Propri\351t\351s du sch\351ma"), this);
|
||||||
prj_add_diagram = new QAction(QET::Icons::DiagramAdd, tr("Ajouter un sch\351ma"), this);
|
prj_add_diagram = new QAction(QET::Icons::DiagramAdd, tr("Ajouter un sch\351ma"), this);
|
||||||
prj_del_diagram = new QAction(QET::Icons::DiagramDelete, tr("Supprimer ce sch\351ma"), this);
|
prj_del_diagram = new QAction(QET::Icons::DiagramDelete, tr("Supprimer ce sch\351ma"), this);
|
||||||
|
prj_move_diagram_up = new QAction(QET::Icons::GoUp, tr("Remonter ce sch\351ma"), this);
|
||||||
|
prj_move_diagram_down = new QAction(QET::Icons::GoDown, tr("Abaisser ce sch\351ma"), this);
|
||||||
move_elements_ = new QAction(QET::Icons::MoveFile, tr("D\351placer dans cette cat\351gorie"), this);
|
move_elements_ = new QAction(QET::Icons::MoveFile, tr("D\351placer dans cette cat\351gorie"), this);
|
||||||
copy_elements_ = new QAction(QET::Icons::CopyFile, tr("Copier dans cette cat\351gorie"), this);
|
copy_elements_ = new QAction(QET::Icons::CopyFile, tr("Copier dans cette cat\351gorie"), this);
|
||||||
cancel_elements_ = new QAction(QET::Icons::Cancel, tr("Annuler"), this);
|
cancel_elements_ = new QAction(QET::Icons::Cancel, tr("Annuler"), this);
|
||||||
@ -98,6 +100,8 @@ ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) {
|
|||||||
connect(prj_prop_diagram, SIGNAL(triggered()), this, SLOT(editDiagramProperties()));
|
connect(prj_prop_diagram, SIGNAL(triggered()), this, SLOT(editDiagramProperties()));
|
||||||
connect(prj_add_diagram, SIGNAL(triggered()), this, SLOT(newDiagram()));
|
connect(prj_add_diagram, SIGNAL(triggered()), this, SLOT(newDiagram()));
|
||||||
connect(prj_del_diagram, SIGNAL(triggered()), this, SLOT(deleteDiagram()));
|
connect(prj_del_diagram, SIGNAL(triggered()), this, SLOT(deleteDiagram()));
|
||||||
|
connect(prj_move_diagram_up, SIGNAL(triggered()), this, SLOT(moveDiagramUp()));
|
||||||
|
connect(prj_move_diagram_down, SIGNAL(triggered()), this, SLOT(moveDiagramDown()));
|
||||||
connect(move_elements_, SIGNAL(triggered()), this, SLOT(moveElements()));
|
connect(move_elements_, SIGNAL(triggered()), this, SLOT(moveElements()));
|
||||||
connect(copy_elements_, SIGNAL(triggered()), this, SLOT(copyElements()));
|
connect(copy_elements_, SIGNAL(triggered()), this, SLOT(copyElements()));
|
||||||
|
|
||||||
@ -212,6 +216,24 @@ void ElementsPanelWidget::deleteDiagram() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Emet le signal requestForDiagramMoveUp avec le schema selectionne
|
||||||
|
*/
|
||||||
|
void ElementsPanelWidget::moveDiagramUp() {
|
||||||
|
if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) {
|
||||||
|
emit(requestForDiagramMoveUp(selected_diagram));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Emet le signal requestForDiagramMoveDown avec le schema selectionne
|
||||||
|
*/
|
||||||
|
void ElementsPanelWidget::moveDiagramDown() {
|
||||||
|
if (Diagram *selected_diagram = elements_panel -> selectedDiagram()) {
|
||||||
|
emit(requestForDiagramMoveDown(selected_diagram));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Appelle l'assistant de creation de nouvel element
|
Appelle l'assistant de creation de nouvel element
|
||||||
*/
|
*/
|
||||||
@ -281,10 +303,17 @@ void ElementsPanelWidget::updateButtons() {
|
|||||||
bool is_writable = !(elements_panel -> selectedProject() -> isReadOnly());
|
bool is_writable = !(elements_panel -> selectedProject() -> isReadOnly());
|
||||||
prj_add_diagram -> setEnabled(is_writable);
|
prj_add_diagram -> setEnabled(is_writable);
|
||||||
} else if (elements_panel -> selectedItemIsADiagram()) {
|
} else if (elements_panel -> selectedItemIsADiagram()) {
|
||||||
bool is_writable = !(elements_panel -> selectedDiagram() -> project() -> isReadOnly());
|
Diagram *selected_diagram = elements_panel -> selectedDiagram();
|
||||||
prj_del_diagram -> setEnabled(is_writable);
|
QETProject *selected_diagram_project = selected_diagram -> project();
|
||||||
}
|
|
||||||
|
|
||||||
|
bool is_writable = !(selected_diagram_project -> isReadOnly());
|
||||||
|
int project_diagrams_count = selected_diagram_project -> diagrams().count();
|
||||||
|
int diagram_position = selected_diagram_project -> diagrams().indexOf(selected_diagram);
|
||||||
|
|
||||||
|
prj_del_diagram -> setEnabled(is_writable);
|
||||||
|
prj_move_diagram_up -> setEnabled(is_writable && diagram_position > 0);
|
||||||
|
prj_move_diagram_down -> setEnabled(is_writable && diagram_position < project_diagrams_count - 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -321,6 +350,7 @@ void ElementsPanelWidget::handleContextMenu(const QPoint &pos) {
|
|||||||
QTreeWidgetItem *item = elements_panel -> itemAt(pos);
|
QTreeWidgetItem *item = elements_panel -> itemAt(pos);
|
||||||
if (!item) return;
|
if (!item) return;
|
||||||
|
|
||||||
|
updateButtons();
|
||||||
context_menu -> clear();
|
context_menu -> clear();
|
||||||
|
|
||||||
if (elements_panel -> itemHasLocation(item)) {
|
if (elements_panel -> itemHasLocation(item)) {
|
||||||
@ -351,6 +381,8 @@ void ElementsPanelWidget::handleContextMenu(const QPoint &pos) {
|
|||||||
} else if (elements_panel -> itemIsADiagram(item)) {
|
} else if (elements_panel -> itemIsADiagram(item)) {
|
||||||
context_menu -> addAction(prj_prop_diagram);
|
context_menu -> addAction(prj_prop_diagram);
|
||||||
context_menu -> addAction(prj_del_diagram);
|
context_menu -> addAction(prj_del_diagram);
|
||||||
|
context_menu -> addAction(prj_move_diagram_up);
|
||||||
|
context_menu -> addAction(prj_move_diagram_down);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ class ElementsPanelWidget : public QWidget {
|
|||||||
QAction *new_category, *edit_category, *delete_category;
|
QAction *new_category, *edit_category, *delete_category;
|
||||||
QAction *delete_collection;
|
QAction *delete_collection;
|
||||||
QAction *new_element, *import_element, *edit_element, *delete_element;
|
QAction *new_element, *import_element, *edit_element, *delete_element;
|
||||||
QAction *prj_close, *prj_edit_prop, *prj_prop_diagram, *prj_add_diagram, *prj_del_diagram;
|
QAction *prj_close, *prj_edit_prop, *prj_prop_diagram, *prj_add_diagram, *prj_del_diagram, *prj_move_diagram_up, *prj_move_diagram_down;
|
||||||
QAction *copy_elements_, *move_elements_, *cancel_elements_;
|
QAction *copy_elements_, *move_elements_, *cancel_elements_;
|
||||||
QMenu *context_menu;
|
QMenu *context_menu;
|
||||||
QAction *erase_textfield;
|
QAction *erase_textfield;
|
||||||
@ -59,6 +59,8 @@ class ElementsPanelWidget : public QWidget {
|
|||||||
void requestForProjectPropertiesEdition(QETProject *);
|
void requestForProjectPropertiesEdition(QETProject *);
|
||||||
void requestForDiagramPropertiesEdition(Diagram *);
|
void requestForDiagramPropertiesEdition(Diagram *);
|
||||||
void requestForDiagramDeletion(Diagram *);
|
void requestForDiagramDeletion(Diagram *);
|
||||||
|
void requestForDiagramMoveUp(Diagram *);
|
||||||
|
void requestForDiagramMoveDown(Diagram *);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void clearFilterTextField();
|
void clearFilterTextField();
|
||||||
@ -68,6 +70,8 @@ class ElementsPanelWidget : public QWidget {
|
|||||||
void editDiagramProperties();
|
void editDiagramProperties();
|
||||||
void newDiagram();
|
void newDiagram();
|
||||||
void deleteDiagram();
|
void deleteDiagram();
|
||||||
|
void moveDiagramUp();
|
||||||
|
void moveDiagramDown();
|
||||||
void newCategory();
|
void newCategory();
|
||||||
void newElement();
|
void newElement();
|
||||||
void importElement();
|
void importElement();
|
||||||
|
@ -34,10 +34,12 @@ HotspotEditor::HotspotEditor(QWidget *parent) :
|
|||||||
|
|
||||||
sb_width = new QSpinBox();
|
sb_width = new QSpinBox();
|
||||||
sb_width -> setMinimum(1);
|
sb_width -> setMinimum(1);
|
||||||
|
sb_width -> setMaximum(1000);
|
||||||
sb_width -> setValue(3);
|
sb_width -> setValue(3);
|
||||||
sb_width -> setSuffix(tr(" \32710 px"));
|
sb_width -> setSuffix(tr(" \32710 px"));
|
||||||
sb_height = new QSpinBox();
|
sb_height = new QSpinBox();
|
||||||
sb_height -> setMinimum(1);
|
sb_height -> setMinimum(1);
|
||||||
|
sb_height -> setMaximum(1000);
|
||||||
sb_height -> setValue(7);
|
sb_height -> setValue(7);
|
||||||
sb_height -> setSuffix(tr(" \32710 px"));
|
sb_height -> setSuffix(tr(" \32710 px"));
|
||||||
|
|
||||||
@ -223,6 +225,24 @@ QPoint HotspotEditor::offsetParts() const {
|
|||||||
else return(old_hotspot - hotspot());
|
else return(old_hotspot - hotspot());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return true si ce widget est en lecture seule, false sinon
|
||||||
|
*/
|
||||||
|
bool HotspotEditor::isReadOnly() const {
|
||||||
|
return(sb_width -> isReadOnly());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param ro true pour passer ce widget en lecture seule, false sinon
|
||||||
|
*/
|
||||||
|
void HotspotEditor::setReadOnly(bool ro) {
|
||||||
|
sb_width -> setReadOnly(ro);
|
||||||
|
sb_height -> setReadOnly(ro);
|
||||||
|
sb_hotspot_x -> setReadOnly(ro);
|
||||||
|
sb_hotspot_y -> setReadOnly(ro);
|
||||||
|
hotspot_sync -> setDisabled(ro);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Met a jour le schema
|
Met a jour le schema
|
||||||
*/
|
*/
|
||||||
|
@ -70,6 +70,8 @@ class HotspotEditor : public QWidget {
|
|||||||
bool partsRectEnabled();
|
bool partsRectEnabled();
|
||||||
bool mustTranslateParts() const;
|
bool mustTranslateParts() const;
|
||||||
QPoint offsetParts() const;
|
QPoint offsetParts() const;
|
||||||
|
bool isReadOnly() const;
|
||||||
|
void setReadOnly(bool);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void updateScene();
|
void updateScene();
|
||||||
|
@ -153,3 +153,24 @@ void InsetPropertiesWidget::setInsetProperties(const InsetProperties &inset) {
|
|||||||
bool InsetPropertiesWidget::displayCurrentDate() const {
|
bool InsetPropertiesWidget::displayCurrentDate() const {
|
||||||
return(display_current_date);
|
return(display_current_date);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return true si ce widget est en lecture seule, false sinon
|
||||||
|
*/
|
||||||
|
bool InsetPropertiesWidget::isReadOnly() const {
|
||||||
|
return(inset_title -> isReadOnly());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param ro true pour passer ce widget en lecture seule, false sinon
|
||||||
|
*/
|
||||||
|
void InsetPropertiesWidget::setReadOnly(bool ro) {
|
||||||
|
inset_title -> setReadOnly(ro);
|
||||||
|
inset_author -> setReadOnly(ro);
|
||||||
|
inset_date -> setReadOnly(ro);
|
||||||
|
inset_filename -> setReadOnly(ro);
|
||||||
|
inset_folio -> setReadOnly(ro);
|
||||||
|
inset_no_date -> setDisabled(ro);
|
||||||
|
inset_current_date -> setDisabled(ro);
|
||||||
|
inset_fixed_date -> setDisabled(ro);
|
||||||
|
}
|
||||||
|
@ -37,6 +37,8 @@ class InsetPropertiesWidget : public QWidget {
|
|||||||
InsetProperties insetProperties() const;
|
InsetProperties insetProperties() const;
|
||||||
void setInsetProperties(const InsetProperties &);
|
void setInsetProperties(const InsetProperties &);
|
||||||
bool displayCurrentDate() const;
|
bool displayCurrentDate() const;
|
||||||
|
bool isReadOnly() const;
|
||||||
|
void setReadOnly(bool);
|
||||||
|
|
||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
|
@ -98,6 +98,27 @@ void OrientationSetWidget::setOrientationSet(const OrientationSet &os) {
|
|||||||
updateForm();
|
updateForm();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@return true si ce widget est en lecture seule, false sinon
|
||||||
|
*/
|
||||||
|
bool OrientationSetWidget::isReadOnly() const {
|
||||||
|
return(!north_orientation -> isEnabled());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
@param ro true pour passer ce widget en lecture seule, false sinon
|
||||||
|
*/
|
||||||
|
void OrientationSetWidget::setReadOnly(bool ro) {
|
||||||
|
north_orientation -> setDisabled(ro);
|
||||||
|
east_orientation -> setDisabled(ro);
|
||||||
|
south_orientation -> setDisabled(ro);
|
||||||
|
west_orientation -> setDisabled(ro);
|
||||||
|
north_default -> setDisabled(ro);
|
||||||
|
east_default -> setDisabled(ro);
|
||||||
|
south_default -> setDisabled(ro);
|
||||||
|
west_default -> setDisabled(ro);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Slot gerant le changement d'orientation par defaut.
|
Slot gerant le changement d'orientation par defaut.
|
||||||
L'orientation concernee affiche alors "Possible" et ce statut devient
|
L'orientation concernee affiche alors "Possible" et ce statut devient
|
||||||
|
@ -49,6 +49,8 @@ class OrientationSetWidget : public QWidget {
|
|||||||
public:
|
public:
|
||||||
OrientationSet orientationSet() const;
|
OrientationSet orientationSet() const;
|
||||||
void setOrientationSet(const OrientationSet &);
|
void setOrientationSet(const OrientationSet &);
|
||||||
|
bool isReadOnly() const;
|
||||||
|
void setReadOnly(bool);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void updateForm();
|
void updateForm();
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include "conductorpropertieswidget.h"
|
#include "conductorpropertieswidget.h"
|
||||||
#include "qeticons.h"
|
#include "qeticons.h"
|
||||||
#include "qetmessagebox.h"
|
#include "qetmessagebox.h"
|
||||||
|
#include "qettabbar.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Constructeur
|
Constructeur
|
||||||
@ -102,8 +103,8 @@ void ProjectView::setProject(QETProject *project) {
|
|||||||
if (!project_) {
|
if (!project_) {
|
||||||
project_ = project;
|
project_ = project;
|
||||||
connect(project_, SIGNAL(projectTitleChanged(QETProject *, const QString &)), this, SLOT(updateWindowTitle()));
|
connect(project_, SIGNAL(projectTitleChanged(QETProject *, const QString &)), this, SLOT(updateWindowTitle()));
|
||||||
connect(project_, SIGNAL(readOnlyChanged (QETProject *, bool)), this, SLOT(updateWindowTitle()));
|
connect(project_, SIGNAL(readOnlyChanged (QETProject *, bool)), this, SLOT(adjustReadOnlyState()));
|
||||||
updateWindowTitle();
|
adjustReadOnlyState();
|
||||||
loadDiagrams();
|
loadDiagrams();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -398,6 +399,8 @@ void ProjectView::showDiagram(Diagram *diagram) {
|
|||||||
void ProjectView::editProjectProperties() {
|
void ProjectView::editProjectProperties() {
|
||||||
if (!project_) return;
|
if (!project_) return;
|
||||||
|
|
||||||
|
bool project_is_read_only = project_ -> isReadOnly();
|
||||||
|
|
||||||
// dialogue d'edition des proprietes du projet
|
// dialogue d'edition des proprietes du projet
|
||||||
QDialog properties_dialog(parentWidget());
|
QDialog properties_dialog(parentWidget());
|
||||||
#ifdef Q_WS_MAC
|
#ifdef Q_WS_MAC
|
||||||
@ -411,22 +414,26 @@ void ProjectView::editProjectProperties() {
|
|||||||
// titre du projet
|
// titre du projet
|
||||||
QLabel *title_label = new QLabel(tr("Titre du projet :"));
|
QLabel *title_label = new QLabel(tr("Titre du projet :"));
|
||||||
QLineEdit *title_field = new QLineEdit(project_ -> title());
|
QLineEdit *title_field = new QLineEdit(project_ -> title());
|
||||||
|
title_field -> setReadOnly(project_is_read_only);
|
||||||
|
|
||||||
// proprietes des nouveaux schemas
|
// proprietes des nouveaux schemas
|
||||||
QLabel *new_diagrams_prop = new QLabel(tr("Propri\351t\351s \340 utiliser lors de l'ajout d'un nouveau sch\351ma au projet :"));
|
QLabel *new_diagrams_prop = new QLabel(tr("Propri\351t\351s \340 utiliser lors de l'ajout d'un nouveau sch\351ma au projet :"));
|
||||||
|
|
||||||
// dimensions par defaut d'un schema
|
// dimensions par defaut d'un schema
|
||||||
BorderPropertiesWidget *bpw = new BorderPropertiesWidget(project_ -> defaultBorderProperties());
|
BorderPropertiesWidget *bpw = new BorderPropertiesWidget(project_ -> defaultBorderProperties());
|
||||||
|
bpw -> setReadOnly(project_is_read_only);
|
||||||
|
|
||||||
// proprietes par defaut d'un cartouche
|
// proprietes par defaut d'un cartouche
|
||||||
InsetPropertiesWidget *ipw = new InsetPropertiesWidget(project_ -> defaultInsetProperties(), true);
|
InsetPropertiesWidget *ipw = new InsetPropertiesWidget(project_ -> defaultInsetProperties(), true);
|
||||||
|
ipw -> setReadOnly(project_is_read_only);
|
||||||
|
|
||||||
// proprietes par defaut des conducteurs
|
// proprietes par defaut des conducteurs
|
||||||
ConductorPropertiesWidget *cpw = new ConductorPropertiesWidget(project_ -> defaultConductorProperties());
|
ConductorPropertiesWidget *cpw = new ConductorPropertiesWidget(project_ -> defaultConductorProperties());
|
||||||
cpw -> setContentsMargins(0, 0, 0, 0);
|
cpw -> setContentsMargins(0, 0, 0, 0);
|
||||||
|
cpw -> setReadOnly(project_is_read_only);
|
||||||
|
|
||||||
// boutons pour valider le dialogue
|
// boutons pour valider le dialogue
|
||||||
QDialogButtonBox *buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
QDialogButtonBox *buttons = new QDialogButtonBox(project_is_read_only ? QDialogButtonBox::Ok : QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||||
|
|
||||||
connect(buttons, SIGNAL(accepted()), &properties_dialog, SLOT(accept()));
|
connect(buttons, SIGNAL(accepted()), &properties_dialog, SLOT(accept()));
|
||||||
connect(buttons, SIGNAL(rejected()), &properties_dialog, SLOT(reject()));
|
connect(buttons, SIGNAL(rejected()), &properties_dialog, SLOT(reject()));
|
||||||
@ -459,7 +466,7 @@ void ProjectView::editProjectProperties() {
|
|||||||
vert_layout -> addWidget(buttons);
|
vert_layout -> addWidget(buttons);
|
||||||
|
|
||||||
// si le dialogue est accepte
|
// si le dialogue est accepte
|
||||||
if (properties_dialog.exec() == QDialog::Accepted && !project_ -> isReadOnly()) {
|
if (properties_dialog.exec() == QDialog::Accepted && !project_is_read_only) {
|
||||||
project_ -> setTitle(title_field -> text());
|
project_ -> setTitle(title_field -> text());
|
||||||
project_ -> setDefaultBorderProperties(bpw -> borderProperties());
|
project_ -> setDefaultBorderProperties(bpw -> borderProperties());
|
||||||
project_ -> setDefaultInsetProperties(ipw -> insetProperties());
|
project_ -> setDefaultInsetProperties(ipw -> insetProperties());
|
||||||
@ -490,6 +497,48 @@ void ProjectView::editDiagramProperties(Diagram *diagram) {
|
|||||||
editDiagramProperties(findDiagram(diagram));
|
editDiagramProperties(findDiagram(diagram));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Deplace le schema diagram_view vers le haut / la gauche
|
||||||
|
*/
|
||||||
|
void ProjectView::moveDiagramUp(DiagramView *diagram_view) {
|
||||||
|
if (!diagram_view) return;
|
||||||
|
|
||||||
|
int diagram_view_position = diagram_ids_.key(diagram_view);
|
||||||
|
if (!diagram_view_position) {
|
||||||
|
// le schema est le premier du projet
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
tabs_ -> tabBar() -> moveTab(diagram_view_position, diagram_view_position - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Deplace le schema diagram vers le haut / la gauche
|
||||||
|
*/
|
||||||
|
void ProjectView::moveDiagramUp(Diagram *diagram) {
|
||||||
|
moveDiagramUp(findDiagram(diagram));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Deplace le schema diagram_view vers le bas / la droite
|
||||||
|
*/
|
||||||
|
void ProjectView::moveDiagramDown(DiagramView *diagram_view) {
|
||||||
|
if (!diagram_view) return;
|
||||||
|
|
||||||
|
int diagram_view_position = diagram_ids_.key(diagram_view);
|
||||||
|
if (diagram_view_position + 1 == diagram_ids_.count()) {
|
||||||
|
// le schema est le dernier du projet
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
tabs_ -> tabBar() -> moveTab(diagram_view_position, diagram_view_position + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Deplace le schema diagram vers le bas / la droite
|
||||||
|
*/
|
||||||
|
void ProjectView::moveDiagramDown(Diagram *diagram) {
|
||||||
|
moveDiagramDown(findDiagram(diagram));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Ce slot demarre un dialogue permettant a l'utilisateur de parametrer et de
|
Ce slot demarre un dialogue permettant a l'utilisateur de parametrer et de
|
||||||
lancer l'impression de toute ou partie du projet.
|
lancer l'impression de toute ou partie du projet.
|
||||||
@ -704,6 +753,18 @@ void ProjectView::updateWindowTitle() {
|
|||||||
setWindowTitle(title);
|
setWindowTitle(title);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Effectue les actions necessaires lorsque le projet visualise entre ou sort
|
||||||
|
du mode lecture seule.
|
||||||
|
*/
|
||||||
|
void ProjectView::adjustReadOnlyState() {
|
||||||
|
// on empeche l'utilisateur de deplacer les onglets
|
||||||
|
tabs_ -> setMovable(!(project_ -> isReadOnly()));
|
||||||
|
|
||||||
|
// on met a jour le titre du widget, qui reflete l'etat de lecture seule
|
||||||
|
updateWindowTitle();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Met a jour le titre d'un onglet
|
Met a jour le titre d'un onglet
|
||||||
@param diagram Schema
|
@param diagram Schema
|
||||||
|
@ -54,6 +54,10 @@ class ProjectView : public QWidget {
|
|||||||
void editCurrentDiagramProperties();
|
void editCurrentDiagramProperties();
|
||||||
void editDiagramProperties(DiagramView *);
|
void editDiagramProperties(DiagramView *);
|
||||||
void editDiagramProperties(Diagram *);
|
void editDiagramProperties(Diagram *);
|
||||||
|
void moveDiagramUp(DiagramView *);
|
||||||
|
void moveDiagramUp(Diagram *);
|
||||||
|
void moveDiagramDown(DiagramView *);
|
||||||
|
void moveDiagramDown(Diagram *);
|
||||||
void printProject();
|
void printProject();
|
||||||
void exportProject();
|
void exportProject();
|
||||||
bool save();
|
bool save();
|
||||||
@ -89,6 +93,7 @@ class ProjectView : public QWidget {
|
|||||||
void firstTabInserted();
|
void firstTabInserted();
|
||||||
void lastTabRemoved();
|
void lastTabRemoved();
|
||||||
void setDisplayFallbackWidget(bool);
|
void setDisplayFallbackWidget(bool);
|
||||||
|
void adjustReadOnlyState();
|
||||||
|
|
||||||
// attributs
|
// attributs
|
||||||
private:
|
private:
|
||||||
|
@ -72,6 +72,8 @@ QETDiagramEditor::QETDiagramEditor(const QStringList &files, QWidget *parent) :
|
|||||||
connect(pa, SIGNAL(requestForDiagramPropertiesEdition(Diagram *)), this, SLOT(editDiagramProperties(Diagram *)));
|
connect(pa, SIGNAL(requestForDiagramPropertiesEdition(Diagram *)), this, SLOT(editDiagramProperties(Diagram *)));
|
||||||
connect(pa, SIGNAL(requestForNewDiagram(QETProject *)), this, SLOT(addDiagramToProject(QETProject *)));
|
connect(pa, SIGNAL(requestForNewDiagram(QETProject *)), this, SLOT(addDiagramToProject(QETProject *)));
|
||||||
connect(pa, SIGNAL(requestForDiagramDeletion(Diagram *)), this, SLOT(removeDiagram(Diagram *)));
|
connect(pa, SIGNAL(requestForDiagramDeletion(Diagram *)), this, SLOT(removeDiagram(Diagram *)));
|
||||||
|
connect(pa, SIGNAL(requestForDiagramMoveUp(Diagram *)), this, SLOT(moveDiagramUp(Diagram *)));
|
||||||
|
connect(pa, SIGNAL(requestForDiagramMoveDown(Diagram *)), this, SLOT(moveDiagramDown(Diagram *)));
|
||||||
|
|
||||||
qdw_undo = new QDockWidget(tr("Annulations", "dock title"));
|
qdw_undo = new QDockWidget(tr("Annulations", "dock title"));
|
||||||
qdw_undo -> setObjectName("diagram_undo");
|
qdw_undo -> setObjectName("diagram_undo");
|
||||||
@ -575,9 +577,9 @@ void QETDiagramEditor::toolbar() {
|
|||||||
view_bar -> addAction(zoom_reset);
|
view_bar -> addAction(zoom_reset);
|
||||||
|
|
||||||
diagram_bar -> addAction(infos_diagram);
|
diagram_bar -> addAction(infos_diagram);
|
||||||
diagram_bar -> addAction(add_text);
|
|
||||||
diagram_bar -> addAction(conductor_default);
|
diagram_bar -> addAction(conductor_default);
|
||||||
diagram_bar -> addAction(conductor_reset);
|
diagram_bar -> addAction(conductor_reset);
|
||||||
|
diagram_bar -> addAction(add_text);
|
||||||
|
|
||||||
// ajout de la barre d'outils a la fenetre principale
|
// ajout de la barre d'outils a la fenetre principale
|
||||||
addToolBar(Qt::TopToolBarArea, main_bar);
|
addToolBar(Qt::TopToolBarArea, main_bar);
|
||||||
@ -1094,10 +1096,10 @@ void QETDiagramEditor::slot_updateActions() {
|
|||||||
|
|
||||||
// actions ayant juste besoin d'un document ouvert
|
// actions ayant juste besoin d'un document ouvert
|
||||||
close_file -> setEnabled(opened_project);
|
close_file -> setEnabled(opened_project);
|
||||||
save_file -> setEnabled(opened_project && editable_project);
|
save_file -> setEnabled(editable_project);
|
||||||
save_file_sous -> setEnabled(opened_project);
|
save_file_sous -> setEnabled(opened_project);
|
||||||
save_all -> setEnabled(opened_diagram && editable_diagram);
|
save_all -> setEnabled(editable_diagram);
|
||||||
prj_edit_prop -> setEnabled(editable_project);
|
prj_edit_prop -> setEnabled(opened_project);
|
||||||
prj_add_diagram -> setEnabled(editable_project);
|
prj_add_diagram -> setEnabled(editable_project);
|
||||||
prj_del_diagram -> setEnabled(editable_project);
|
prj_del_diagram -> setEnabled(editable_project);
|
||||||
prj_clean -> setEnabled(editable_project);
|
prj_clean -> setEnabled(editable_project);
|
||||||
@ -1111,8 +1113,8 @@ void QETDiagramEditor::slot_updateActions() {
|
|||||||
zoom_out -> setEnabled(opened_diagram);
|
zoom_out -> setEnabled(opened_diagram);
|
||||||
zoom_fit -> setEnabled(opened_diagram);
|
zoom_fit -> setEnabled(opened_diagram);
|
||||||
zoom_reset -> setEnabled(opened_diagram);
|
zoom_reset -> setEnabled(opened_diagram);
|
||||||
conductor_default -> setEnabled(editable_diagram);
|
conductor_default -> setEnabled(opened_diagram);
|
||||||
infos_diagram -> setEnabled(editable_diagram);
|
infos_diagram -> setEnabled(opened_diagram);
|
||||||
add_text -> setEnabled(editable_diagram);
|
add_text -> setEnabled(editable_diagram);
|
||||||
add_column -> setEnabled(editable_diagram);
|
add_column -> setEnabled(editable_diagram);
|
||||||
remove_column -> setEnabled(editable_diagram);
|
remove_column -> setEnabled(editable_diagram);
|
||||||
@ -1622,6 +1624,44 @@ void QETDiagramEditor::removeDiagram(Diagram *diagram) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Change l'ordre des schemas d'un projet, en decalant le schema vers le haut /
|
||||||
|
la gauche
|
||||||
|
@param diagram Schema a decaler vers le haut / la gauche
|
||||||
|
*/
|
||||||
|
void QETDiagramEditor::moveDiagramUp(Diagram *diagram) {
|
||||||
|
if (!diagram) return;
|
||||||
|
|
||||||
|
// recupere le projet contenant le schema
|
||||||
|
if (QETProject *diagram_project = diagram -> project()) {
|
||||||
|
if (diagram_project -> isReadOnly()) return;
|
||||||
|
|
||||||
|
// recupere la vue sur ce projet
|
||||||
|
if (ProjectView *project_view = findProject(diagram_project)) {
|
||||||
|
project_view -> moveDiagramUp(diagram);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Change l'ordre des schemas d'un projet, en decalant le schema vers le bas /
|
||||||
|
la droite
|
||||||
|
@param diagram Schema a decaler vers le bas / la droite
|
||||||
|
*/
|
||||||
|
void QETDiagramEditor::moveDiagramDown(Diagram *diagram) {
|
||||||
|
if (!diagram) return;
|
||||||
|
|
||||||
|
// recupere le projet contenant le schema
|
||||||
|
if (QETProject *diagram_project = diagram -> project()) {
|
||||||
|
if (diagram_project -> isReadOnly()) return;
|
||||||
|
|
||||||
|
// recupere la vue sur ce projet
|
||||||
|
if (ProjectView *project_view = findProject(diagram_project)) {
|
||||||
|
project_view -> moveDiagramDown(diagram);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Nettoie le projet courant
|
Nettoie le projet courant
|
||||||
*/
|
*/
|
||||||
|
@ -142,6 +142,8 @@ class QETDiagramEditor : public QMainWindow {
|
|||||||
void addDiagramToProject(QETProject *);
|
void addDiagramToProject(QETProject *);
|
||||||
void removeDiagram(Diagram *);
|
void removeDiagram(Diagram *);
|
||||||
void removeDiagramFromProject();
|
void removeDiagramFromProject();
|
||||||
|
void moveDiagramUp(Diagram *);
|
||||||
|
void moveDiagramDown(Diagram *);
|
||||||
void cleanCurrentProject();
|
void cleanCurrentProject();
|
||||||
void diagramWasAdded(DiagramView *);
|
void diagramWasAdded(DiagramView *);
|
||||||
void diagramIsAboutToBeRemoved(DiagramView *);
|
void diagramIsAboutToBeRemoved(DiagramView *);
|
||||||
|
@ -80,6 +80,8 @@ namespace QET {
|
|||||||
QIcon Forbidden;
|
QIcon Forbidden;
|
||||||
QIcon FullScreenEnter;
|
QIcon FullScreenEnter;
|
||||||
QIcon FullScreenExit;
|
QIcon FullScreenExit;
|
||||||
|
QIcon GoDown;
|
||||||
|
QIcon GoUp;
|
||||||
QIcon Ground;
|
QIcon Ground;
|
||||||
QIcon Hide;
|
QIcon Hide;
|
||||||
QIcon Home;
|
QIcon Home;
|
||||||
@ -240,6 +242,10 @@ void QET::Icons::initIcons() {
|
|||||||
FullScreenEnter .addFile(":/ico/22x22/view-fullscreen.png");
|
FullScreenEnter .addFile(":/ico/22x22/view-fullscreen.png");
|
||||||
FullScreenExit .addFile(":/ico/16x16/view-restore.png");
|
FullScreenExit .addFile(":/ico/16x16/view-restore.png");
|
||||||
FullScreenExit .addFile(":/ico/22x22/view-restore.png");
|
FullScreenExit .addFile(":/ico/22x22/view-restore.png");
|
||||||
|
GoDown .addFile(":/ico/16x16/go-down.png");
|
||||||
|
GoDown .addFile(":/ico/22x22/go-down.png");
|
||||||
|
GoUp .addFile(":/ico/16x16/go-up.png");
|
||||||
|
GoUp .addFile(":/ico/22x22/go-up.png");
|
||||||
Ground .addFile(":/ico/16x16/ground.png");
|
Ground .addFile(":/ico/16x16/ground.png");
|
||||||
Hide .addFile(":/ico/16x16/masquer.png");
|
Hide .addFile(":/ico/16x16/masquer.png");
|
||||||
Home .addFile(":/ico/16x16/go-home.png");
|
Home .addFile(":/ico/16x16/go-home.png");
|
||||||
|
@ -88,6 +88,8 @@ namespace QET {
|
|||||||
extern QIcon Forbidden;
|
extern QIcon Forbidden;
|
||||||
extern QIcon FullScreenEnter;
|
extern QIcon FullScreenEnter;
|
||||||
extern QIcon FullScreenExit;
|
extern QIcon FullScreenExit;
|
||||||
|
extern QIcon GoDown;
|
||||||
|
extern QIcon GoUp;
|
||||||
extern QIcon Ground;
|
extern QIcon Ground;
|
||||||
extern QIcon Hide;
|
extern QIcon Hide;
|
||||||
extern QIcon Home;
|
extern QIcon Home;
|
||||||
|
@ -253,6 +253,7 @@ bool QETTabBar::mustMoveTab(int src_tab, int dst_tab, const QPoint &pos) const {
|
|||||||
@param dst_tab Index de l'onglet de destination
|
@param dst_tab Index de l'onglet de destination
|
||||||
*/
|
*/
|
||||||
void QETTabBar::moveTab(int src_tab, int dst_tab) {
|
void QETTabBar::moveTab(int src_tab, int dst_tab) {
|
||||||
|
#if QT_VERSION < 0x040500
|
||||||
// sauvegarde les caracteristiques de l'onglet deplace
|
// sauvegarde les caracteristiques de l'onglet deplace
|
||||||
QIcon old_tab_icon = tabIcon(src_tab);
|
QIcon old_tab_icon = tabIcon(src_tab);
|
||||||
QVariant old_tab_data = tabData(src_tab);
|
QVariant old_tab_data = tabData(src_tab);
|
||||||
@ -283,6 +284,9 @@ void QETTabBar::moveTab(int src_tab, int dst_tab) {
|
|||||||
|
|
||||||
// signale le deplacement de l'onglet
|
// signale le deplacement de l'onglet
|
||||||
emit(tabMoved(src_tab, dst_tab));
|
emit(tabMoved(src_tab, dst_tab));
|
||||||
|
#else
|
||||||
|
QTabBar::moveTab(src_tab, dst_tab);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -45,6 +45,7 @@ class QETTabBar : public QTabBar {
|
|||||||
bool isMovable() const;
|
bool isMovable() const;
|
||||||
bool isVertical() const;
|
bool isVertical() const;
|
||||||
bool isHorizontal() const;
|
bool isHorizontal() const;
|
||||||
|
void moveTab(int, int);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void tabInserted(int);
|
virtual void tabInserted(int);
|
||||||
@ -65,7 +66,6 @@ class QETTabBar : public QTabBar {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
bool mustMoveTab(int, int, const QPoint &) const;
|
bool mustMoveTab(int, int, const QPoint &) const;
|
||||||
void moveTab(int, int);
|
|
||||||
int tabForPressedPosition(const QPoint &);
|
int tabForPressedPosition(const QPoint &);
|
||||||
int tabForMovedPosition(const QPoint &);
|
int tabForMovedPosition(const QPoint &);
|
||||||
bool posMatchesTabRect(const QRect &, const QPoint &) const;
|
bool posMatchesTabRect(const QRect &, const QPoint &) const;
|
||||||
|
@ -66,6 +66,10 @@ bool QETTabWidget::isMovable() const {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QETTabBar *QETTabWidget::tabBar() const {
|
||||||
|
return(tab_bar_);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Gere les evenements rollette sur cette barre d'onglets
|
Gere les evenements rollette sur cette barre d'onglets
|
||||||
@param event Evenement rollette
|
@param event Evenement rollette
|
||||||
|
@ -40,6 +40,7 @@ class QETTabWidget : public QTabWidget {
|
|||||||
public:
|
public:
|
||||||
void setMovable(bool);
|
void setMovable(bool);
|
||||||
bool isMovable() const;
|
bool isMovable() const;
|
||||||
|
QETTabBar *tabBar() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void wheelEvent(QWheelEvent *);
|
void wheelEvent(QWheelEvent *);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user