mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-09-13 20:23:04 +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,20 +1,20 @@
|
||||
<definition width="30" version="0.2" hotspot_x="15" hotspot_y="15" height="40" type="element" orientation="dnnn" >
|
||||
<names>
|
||||
<name lang="ru" >Эл. плита</name>
|
||||
<name lang="en" >Electric oven</name>
|
||||
<name lang="fr" >Four électrique</name>
|
||||
<name lang="es" >Horno eléctrico</name>
|
||||
<name lang="cs" >Elektrická kamna</name>
|
||||
<definition width="30" version="0.2" hotspot_x="15" hotspot_y="15" height="40" type="element" orientation="dnnn" >
|
||||
<names>
|
||||
<name lang="ru" >Духовой шкаф</name>
|
||||
<name lang="en" >Electric oven</name>
|
||||
<name lang="fr" >Four électrique</name>
|
||||
<name lang="es" >Horno eléctrico</name>
|
||||
<name lang="cs" >Elektrická kamna</name>
|
||||
<name lang="pt" >Forno eléctrico</name>
|
||||
</names>
|
||||
</names>
|
||||
<informations>Author: The QElectroTech team
|
||||
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
|
||||
<description>
|
||||
<line length1="1.5" length2="1.5" antialias="false" end1="none" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" y1="8.5" x1="-7" y2="8.5" x2="7" />
|
||||
<line length1="1.5" length2="1.5" antialias="false" end1="none" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" y1="-12" x1="0" y2="0" x2="0" />
|
||||
<polygon x4="10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" y1="6" x1="-10" y2="20" x2="-10" y3="20" x3="10" y4="6" />
|
||||
<polygon x4="12" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" y1="0" x1="-12" y2="24" x2="-12" y3="24" x3="12" y4="0" />
|
||||
<line length1="1.5" length2="1.5" antialias="false" end1="none" end2="none" style="line-style:normal;line-weight:thin;filling:none;color:black" y1="4" x1="-12" y2="4" x2="12" />
|
||||
<terminal x="0" y="-12" orientation="n" />
|
||||
</description>
|
||||
</definition>
|
||||
<description>
|
||||
<line length1="1.5" length2="1.5" antialias="false" end1="none" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" y1="8.5" x1="-7" y2="8.5" x2="7" />
|
||||
<line length1="1.5" length2="1.5" antialias="false" end1="none" end2="none" style="line-style:normal;line-weight:normal;filling:none;color:black" y1="-12" x1="0" y2="0" x2="0" />
|
||||
<polygon x4="10" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" y1="6" x1="-10" y2="20" x2="-10" y3="20" x3="10" y4="6" />
|
||||
<polygon x4="12" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" y1="0" x1="-12" y2="24" x2="-12" y3="24" x3="12" y4="0" />
|
||||
<line length1="1.5" length2="1.5" antialias="false" end1="none" end2="none" style="line-style:normal;line-weight:thin;filling:none;color:black" y1="4" x1="-12" y2="4" x2="12" />
|
||||
<terminal x="0" y="-12" orientation="n" />
|
||||
</description>
|
||||
</definition>
|
||||
|
@ -1,20 +1,21 @@
|
||||
<definition width="30" version="0.1" hotspot_x="15" hotspot_y="15" height="40" type="element" orientation="dnnn" >
|
||||
<names>
|
||||
<name lang="en" >Solid plate</name>
|
||||
<name lang="fr" >Plaque de cuisson</name>
|
||||
<name lang="es" >Placa de cocina</name>
|
||||
<name lang="cs" >Deska na vaření</name>
|
||||
<names>
|
||||
<name lang="ru" >Эл. плита</name>
|
||||
<name lang="en" >Solid plate</name>
|
||||
<name lang="fr" >Plaque de cuisson</name>
|
||||
<name lang="es" >Placa de cocina</name>
|
||||
<name lang="cs" >Deska na vaření</name>
|
||||
<name lang="pt" >Placa de fogão</name>
|
||||
</names>
|
||||
</names>
|
||||
<informations>Author: The QElectroTech team
|
||||
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
|
||||
<description>
|
||||
<polygon x4="12" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" y1="0" x1="-12" y2="24" x2="-12" y3="24" x3="12" y4="0" />
|
||||
<description>
|
||||
<polygon x4="12" antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" y1="0" x1="-12" y2="24" x2="-12" y3="24" x3="12" y4="0" />
|
||||
<line antialias="false" style="line-style:normal;line-weight:normal;filling:none;color:black" y1="-12" x1="0" y2="0" x2="0" />
|
||||
<circle x="-8.5" y="13.5" antialias="true" style="line-style:normal;line-weight:thin;filling:none;color:black" diameter="7" />
|
||||
<circle x="0.5" y="12.5" antialias="true" style="line-style:normal;line-weight:thin;filling:none;color:black" diameter="9" />
|
||||
<circle x="-9.5" y="2.5" antialias="true" style="line-style:normal;line-weight:thin;filling:none;color:black" diameter="9" />
|
||||
<circle x="1.5" y="3.5" antialias="true" style="line-style:normal;line-weight:thin;filling:none;color:black" diameter="7" />
|
||||
<terminal x="0" y="-12" orientation="n" />
|
||||
</description>
|
||||
</definition>
|
||||
<circle x="-8.5" y="13.5" antialias="true" style="line-style:normal;line-weight:thin;filling:none;color:black" diameter="7" />
|
||||
<circle x="0.5" y="12.5" antialias="true" style="line-style:normal;line-weight:thin;filling:none;color:black" diameter="9" />
|
||||
<circle x="-9.5" y="2.5" antialias="true" style="line-style:normal;line-weight:thin;filling:none;color:black" diameter="9" />
|
||||
<circle x="1.5" y="3.5" antialias="true" style="line-style:normal;line-weight:thin;filling:none;color:black" diameter="7" />
|
||||
<terminal x="0" y="-12" orientation="n" />
|
||||
</description>
|
||||
</definition>
|
||||
|
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>
|
||||
<name>QETElementEditor</name>
|
||||
<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>
|
||||
<translation>
|
||||
<numerusform>%n partie sélectionnée.</numerusform>
|
||||
@ -12,7 +12,7 @@
|
||||
</translation>
|
||||
</message>
|
||||
<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>
|
||||
<comment>message box content</comment>
|
||||
<translation>
|
||||
@ -24,7 +24,7 @@
|
||||
<context>
|
||||
<name>QObject</name>
|
||||
<message numerus="yes">
|
||||
<location filename="sources/qet.cpp" line="157"/>
|
||||
<location filename="../sources/qet.cpp" line="157"/>
|
||||
<source>%n élément(s)</source>
|
||||
<comment>part of a sentence listing the content of a diagram</comment>
|
||||
<translation>
|
||||
@ -33,7 +33,7 @@
|
||||
</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="sources/qet.cpp" line="178"/>
|
||||
<location filename="../sources/qet.cpp" line="178"/>
|
||||
<source>%n conducteur(s)</source>
|
||||
<comment>part of a sentence listing the content of a diagram</comment>
|
||||
<translation>
|
||||
@ -42,7 +42,7 @@
|
||||
</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="sources/qet.cpp" line="193"/>
|
||||
<location filename="../sources/qet.cpp" line="193"/>
|
||||
<source>%n champ(s) de texte</source>
|
||||
<comment>part of a sentence listing the content of a diagram</comment>
|
||||
<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/folder-new.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-up.png</file>
|
||||
<file>ico/16x16/ground.png</file>
|
||||
<file>ico/16x16/item_cancel.png</file>
|
||||
<file>ico/16x16/item_copy.png</file>
|
||||
@ -118,7 +120,9 @@
|
||||
<file>ico/22x22/folder-delete.png</file>
|
||||
<file>ico/22x22/folder-edit.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-up.png</file>
|
||||
<file>ico/22x22/hotspot.png</file>
|
||||
<file>ico/22x22/landscape.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() {
|
||||
border_.columns_count = columns_count -> value();
|
||||
@ -52,6 +52,25 @@ const BorderProperties &BorderPropertiesWidget::borderProperties() {
|
||||
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
|
||||
@param bp Nouvelles proprietes
|
||||
|
@ -39,6 +39,8 @@ class BorderPropertiesWidget : public QWidget {
|
||||
// methodes
|
||||
public:
|
||||
const BorderProperties &borderProperties();
|
||||
bool isReadOnly() const;
|
||||
void setReadOnly(bool);
|
||||
|
||||
private:
|
||||
void setEditedBorder(const BorderProperties &);
|
||||
|
@ -268,3 +268,26 @@ void ConductorPropertiesWidget::setConductorProperties(const ConductorProperties
|
||||
ConductorProperties ConductorPropertiesWidget::conductorProperties() const {
|
||||
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:
|
||||
void setConductorProperties(const ConductorProperties &);
|
||||
ConductorProperties conductorProperties() const;
|
||||
bool isReadOnly() const;
|
||||
void setReadOnly(bool);
|
||||
|
||||
private:
|
||||
void setConductorType(ConductorProperties::ConductorType);
|
||||
|
@ -403,7 +403,7 @@ QString DiagramView::title() const {
|
||||
Edite les informations du schema.
|
||||
*/
|
||||
void DiagramView::editDiagramProperties() {
|
||||
if (scene -> isReadOnly()) return;
|
||||
bool diagram_is_read_only = scene -> isReadOnly();
|
||||
|
||||
// recupere le cartouche et les dimensions du schema
|
||||
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"));
|
||||
|
||||
BorderPropertiesWidget *border_infos = new BorderPropertiesWidget(border, &popup);
|
||||
border_infos -> setReadOnly(diagram_is_read_only);
|
||||
InsetPropertiesWidget *inset_infos = new InsetPropertiesWidget(inset, false, &popup);
|
||||
inset_infos -> setReadOnly(diagram_is_read_only);
|
||||
|
||||
// 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(rejected()), &popup, SLOT(reject()));
|
||||
|
||||
@ -433,7 +435,7 @@ void DiagramView::editDiagramProperties() {
|
||||
layout_v.addStretch();
|
||||
layout_v.addWidget(&boutons);
|
||||
// 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();
|
||||
BorderProperties new_border = border_infos -> borderProperties();
|
||||
// s'il y a des modifications au cartouche
|
||||
@ -816,9 +818,11 @@ void DiagramView::resetConductors() {
|
||||
futurs nouveaux conducteurs
|
||||
*/
|
||||
void DiagramView::editDefaultConductorProperties() {
|
||||
if (scene -> isReadOnly()) return;
|
||||
bool diagram_is_read_only = scene -> isReadOnly();
|
||||
|
||||
// initialise l'editeur de proprietes pour le conducteur
|
||||
ConductorPropertiesWidget *cpw = new ConductorPropertiesWidget(scene -> defaultConductorProperties);
|
||||
cpw -> setReadOnly(diagram_is_read_only);
|
||||
|
||||
// l'insere dans un dialogue
|
||||
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"));
|
||||
QVBoxLayout *dialog_layout = new QVBoxLayout(&conductor_dialog);
|
||||
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);
|
||||
connect(dbb, SIGNAL(accepted()), &conductor_dialog, SLOT(accept()));
|
||||
connect(dbb, SIGNAL(rejected()), &conductor_dialog, SLOT(reject()));
|
||||
|
||||
// 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();
|
||||
}
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ ArcEditor::ArcEditor(QETElementEditor *editor, PartArc *arc, QWidget *parent) :
|
||||
|
||||
QGridLayout *grid = new QGridLayout();
|
||||
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(new QLabel("y"), 1, 2);
|
||||
grid -> addWidget(y, 1, 3);
|
||||
|
@ -43,7 +43,7 @@ CircleEditor::CircleEditor(QETElementEditor *editor, PartCircle *circle, QWidget
|
||||
|
||||
QGridLayout *grid = new QGridLayout();
|
||||
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(new QLabel("y"), 1, 2);
|
||||
grid -> addWidget(y, 1, 3);
|
||||
|
@ -47,16 +47,20 @@ DeletePartsCommand::~DeletePartsCommand() {
|
||||
|
||||
/// Restaure les parties supprimees
|
||||
void DeletePartsCommand::undo() {
|
||||
editor_scene -> blockSignals(true);
|
||||
foreach(QGraphicsItem *qgi, deleted_parts) {
|
||||
editor_scene -> addItem(qgi);
|
||||
}
|
||||
editor_scene -> blockSignals(false);
|
||||
}
|
||||
|
||||
/// Supprime les parties
|
||||
void DeletePartsCommand::redo() {
|
||||
editor_scene -> blockSignals(true);
|
||||
foreach(QGraphicsItem *qgi, deleted_parts) {
|
||||
editor_scene -> removeItem(qgi);
|
||||
}
|
||||
editor_scene -> blockSignals(false);
|
||||
}
|
||||
|
||||
/*** CutPartsCommand ***/
|
||||
@ -90,7 +94,11 @@ PastePartsCommand::~PastePartsCommand() {
|
||||
/// annule le coller
|
||||
void PastePartsCommand::undo() {
|
||||
// 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) {
|
||||
editor_view_ -> offset_paste_count_ = old_offset_paste_count_;
|
||||
editor_view_ -> start_top_left_corner_ = old_start_top_left_corner_;
|
||||
@ -103,7 +111,11 @@ void PastePartsCommand::redo() {
|
||||
if (first_redo) first_redo = false;
|
||||
else {
|
||||
// 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) {
|
||||
editor_view_ -> offset_paste_count_ = new_offset_paste_count_;
|
||||
editor_view_ -> start_top_left_corner_ = new_start_top_left_corner_;
|
||||
|
@ -45,6 +45,7 @@ ElementScene::ElementScene(QETElementEditor *editor, QObject *parent) :
|
||||
qgi_manager(this),
|
||||
element_editor(editor)
|
||||
{
|
||||
setItemIndexMethod(NoIndex);
|
||||
current_polygon = NULL;
|
||||
setGrid(1, 1);
|
||||
initPasteArea();
|
||||
@ -758,6 +759,7 @@ void ElementScene::paste() {
|
||||
*/
|
||||
void ElementScene::slot_select(const ElementContent &content) {
|
||||
blockSignals(true);
|
||||
clearSelection();
|
||||
foreach(QGraphicsItem *qgi, content) qgi -> setSelected(true);
|
||||
blockSignals(false);
|
||||
emit(selectionChanged());
|
||||
@ -774,7 +776,7 @@ void ElementScene::slot_selectAll() {
|
||||
Deselectionne tout
|
||||
*/
|
||||
void ElementScene::slot_deselectAll() {
|
||||
clearSelection();
|
||||
slot_select(ElementContent());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -805,6 +807,8 @@ void ElementScene::slot_delete() {
|
||||
(hotspot) de l'element.
|
||||
*/
|
||||
void ElementScene::slot_editSizeHotSpot() {
|
||||
bool is_read_only = element_editor && element_editor -> isReadOnly();
|
||||
|
||||
// cree un dialogue
|
||||
QDialog dialog_sh(element_editor);
|
||||
dialog_sh.setModal(true);
|
||||
@ -822,23 +826,25 @@ void ElementScene::slot_editSizeHotSpot() {
|
||||
hotspot_editor -> setOldHotspot(hotspot());
|
||||
hotspot_editor -> setPartsRect(itemsBoundingRect());
|
||||
hotspot_editor -> setPartsRectEnabled(true);
|
||||
hotspot_editor -> setReadOnly(is_read_only);
|
||||
dialog_layout -> addWidget(hotspot_editor);
|
||||
|
||||
// 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);
|
||||
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) return;
|
||||
QSize new_size(hotspot_editor -> elementSize());
|
||||
QSize old_size(width(), height());
|
||||
QPoint new_hotspot(hotspot_editor -> hotspot());
|
||||
QPoint old_hotspot(_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()));
|
||||
if (dialog_sh.exec() == QDialog::Accepted && is_read_only) {
|
||||
QSize new_size(hotspot_editor -> elementSize());
|
||||
QSize old_size(width(), height());
|
||||
QPoint new_hotspot(hotspot_editor -> hotspot());
|
||||
QPoint old_hotspot(_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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -846,6 +852,7 @@ void ElementScene::slot_editSizeHotSpot() {
|
||||
Lance un dialogue pour editer les noms de cete element
|
||||
*/
|
||||
void ElementScene::slot_editOrientations() {
|
||||
bool is_read_only = element_editor && element_editor -> isReadOnly();
|
||||
|
||||
// cree un dialogue
|
||||
QDialog dialog_ori(element_editor);
|
||||
@ -866,21 +873,23 @@ void ElementScene::slot_editOrientations() {
|
||||
// ajoute un OrientationSetWidget au dialogue
|
||||
OrientationSetWidget *ori_widget = new OrientationSetWidget();
|
||||
ori_widget -> setOrientationSet(ori);
|
||||
ori_widget -> setReadOnly(is_read_only);
|
||||
dialog_layout -> addWidget(ori_widget);
|
||||
|
||||
// ajoute une case a cocher pour les connexions internes
|
||||
QCheckBox *ic_checkbox = new QCheckBox(tr("Autoriser les connexions internes"));
|
||||
ic_checkbox -> setChecked(internal_connections);
|
||||
ic_checkbox -> setDisabled(is_read_only);
|
||||
dialog_layout -> addWidget(ic_checkbox);
|
||||
dialog_layout -> addStretch();
|
||||
// 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);
|
||||
connect(dialog_buttons, SIGNAL(accepted()), &dialog_ori, SLOT(accept()));
|
||||
connect(dialog_buttons, SIGNAL(rejected()), &dialog_ori, SLOT(reject()));
|
||||
|
||||
// lance le dialogue
|
||||
if (dialog_ori.exec() == QDialog::Accepted) {
|
||||
if (dialog_ori.exec() == QDialog::Accepted && !is_read_only) {
|
||||
OrientationSet new_ori = ori_widget -> orientationSet();
|
||||
if (new_ori != 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.
|
||||
*/
|
||||
void ElementScene::slot_editAuthorInformations() {
|
||||
bool is_read_only = element_editor && element_editor -> isReadOnly();
|
||||
|
||||
// cree un dialogue
|
||||
QDialog dialog_author(element_editor);
|
||||
@ -918,16 +928,17 @@ void ElementScene::slot_editAuthorInformations() {
|
||||
QTextEdit *text_field = new QTextEdit();
|
||||
text_field -> setAcceptRichText(false);
|
||||
text_field -> setPlainText(informations());
|
||||
text_field -> setReadOnly(is_read_only);
|
||||
dialog_layout -> addWidget(text_field);
|
||||
|
||||
// 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);
|
||||
connect(dialog_buttons, SIGNAL(accepted()), &dialog_author, SLOT(accept()));
|
||||
connect(dialog_buttons, SIGNAL(rejected()), &dialog_author, SLOT(reject()));
|
||||
|
||||
// lance le dialogue
|
||||
if (dialog_author.exec() == QDialog::Accepted) {
|
||||
if (dialog_author.exec() == QDialog::Accepted && !is_read_only) {
|
||||
QString new_infos = text_field -> toPlainText();
|
||||
if (new_infos != informations()) {
|
||||
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
|
||||
*/
|
||||
void ElementScene::slot_editNames() {
|
||||
bool is_read_only = element_editor && element_editor -> isReadOnly();
|
||||
|
||||
// cree un dialogue
|
||||
QDialog dialog(element_editor);
|
||||
@ -959,17 +971,18 @@ void ElementScene::slot_editNames() {
|
||||
// ajoute un NamesListWidget au dialogue
|
||||
NamesListWidget *names_widget = new NamesListWidget();
|
||||
names_widget -> setNames(_names);
|
||||
names_widget -> setReadOnly(is_read_only);
|
||||
dialog_layout -> addWidget(names_widget);
|
||||
|
||||
// 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);
|
||||
connect(dialog_buttons, SIGNAL(accepted()), names_widget, SLOT(check()));
|
||||
connect(names_widget, SIGNAL(inputChecked()), &dialog, SLOT(accept()));
|
||||
connect(dialog_buttons, SIGNAL(rejected()), &dialog, SLOT(reject()));
|
||||
|
||||
// lance le dialogue
|
||||
if (dialog.exec() == QDialog::Accepted) {
|
||||
if (dialog.exec() == QDialog::Accepted && !is_read_only) {
|
||||
NamesList new_names(names_widget -> 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),
|
||||
offset_paste_count_(0)
|
||||
{
|
||||
setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);
|
||||
setInteractive(true);
|
||||
setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
|
||||
setResizeAnchor(QGraphicsView::AnchorUnderMouse);
|
||||
|
@ -45,7 +45,7 @@ EllipseEditor::EllipseEditor(QETElementEditor *editor, PartEllipse *ellipse, QWi
|
||||
|
||||
QGridLayout *grid = new QGridLayout();
|
||||
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(new QLabel("y"), 1, 2);
|
||||
grid -> addWidget(y, 1, 3);
|
||||
|
@ -39,6 +39,13 @@
|
||||
#include "texteditor.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
|
||||
@param parent QWidget parent
|
||||
@ -439,10 +446,6 @@ void QETElementEditor::slot_updateMenus() {
|
||||
inv_select -> setEnabled(!read_only);
|
||||
paste_from_file -> 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);
|
||||
|
||||
// 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)
|
||||
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
|
||||
tools_dock_stack_ = new QStackedWidget();
|
||||
@ -1117,17 +1122,25 @@ void QETElementEditor::slot_createPartsList() {
|
||||
parts_list -> blockSignals(true);
|
||||
parts_list -> clear();
|
||||
QList<QGraphicsItem *> qgis = ce_scene -> zItems(true);
|
||||
for (int j = qgis.count() - 1 ; j >= 0 ; -- j) {
|
||||
QGraphicsItem *qgi = qgis[j];
|
||||
if (CustomElementPart *cep = dynamic_cast<CustomElementPart *>(qgi)) {
|
||||
QString part_desc = cep -> name();
|
||||
QListWidgetItem *qlwi = new QListWidgetItem(part_desc);
|
||||
QVariant v;
|
||||
v.setValue<QGraphicsItem *>(qgi);
|
||||
qlwi -> setData(42, v);
|
||||
parts_list -> addItem(qlwi);
|
||||
qlwi -> setSelected(qgi -> isSelected());
|
||||
|
||||
// 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) {
|
||||
QGraphicsItem *qgi = qgis[j];
|
||||
if (CustomElementPart *cep = dynamic_cast<CustomElementPart *>(qgi)) {
|
||||
QString part_desc = cep -> name();
|
||||
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);
|
||||
}
|
||||
@ -1136,9 +1149,10 @@ void QETElementEditor::slot_createPartsList() {
|
||||
Met a jour la selection dans la liste des parties
|
||||
*/
|
||||
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();
|
||||
} else {
|
||||
} else if (items_count <= QET_MAX_PARTS_IN_ELEMENT_EDITOR_LIST) {
|
||||
parts_list -> blockSignals(true);
|
||||
int i = 0;
|
||||
QList<QGraphicsItem *> items = ce_scene -> zItems(true);
|
||||
|
@ -43,12 +43,12 @@ RectangleEditor::RectangleEditor(QETElementEditor *editor, PartRectangle *rect,
|
||||
QVBoxLayout *v_layout = new QVBoxLayout(this);
|
||||
|
||||
QGridLayout *grid = new QGridLayout();
|
||||
grid -> addWidget(new QLabel(tr("Coin sup\351rieur gauche\240: ")), 0, 0);
|
||||
grid -> addWidget(new QLabel("x"), 1, 0);
|
||||
grid -> addWidget(new QLabel(tr("Coin sup\351rieur gauche\240: ")), 0, 0, 1, 4);
|
||||
grid -> addWidget(new QLabel("x"), 1, 0, Qt::AlignRight);
|
||||
grid -> addWidget(x, 1, 1);
|
||||
grid -> addWidget(new QLabel("y"), 1, 2);
|
||||
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(w, 3, 1);
|
||||
grid -> addWidget(new QLabel(tr("Hauteur\240:")), 4, 0);
|
||||
|
@ -35,6 +35,18 @@
|
||||
*/
|
||||
#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
|
||||
@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
|
||||
drag -> setPixmap(temp_elmt -> pixmap());
|
||||
drag -> setHotSpot(temp_elmt -> hotspot());
|
||||
QPixmap elmt_pixmap(temp_elmt -> pixmap());
|
||||
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
|
||||
delete temp_elmt;
|
||||
@ -888,8 +913,12 @@ void ElementsPanel::diagramOrderChanged(QETProject *project, int from, int to) {
|
||||
if (!moved_qtwi_diagram) return;
|
||||
|
||||
// enleve le QTWI et le reinsere au bon endroit
|
||||
bool was_selected = moved_qtwi_diagram -> isSelected();
|
||||
qtwi_project -> removeChild(moved_qtwi_diagram);
|
||||
qtwi_project -> insertChild(to, moved_qtwi_diagram);
|
||||
if (was_selected) {
|
||||
setCurrentItem(moved_qtwi_diagram);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -48,24 +48,26 @@ ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) {
|
||||
elements_panel = new ElementsPanel(this);
|
||||
|
||||
// initialise les actions
|
||||
reload = new QAction(QET::Icons::ViewRefresh, tr("Recharger les collections"), this);
|
||||
new_category = new QAction(QET::Icons::FolderNew, tr("Nouvelle cat\351gorie"), this);
|
||||
edit_category = new QAction(QET::Icons::FolderEdit, tr("\311diter la cat\351gorie"), this);
|
||||
delete_category = new QAction(QET::Icons::FolderDelete, tr("Supprimer la cat\351gorie"), this);
|
||||
delete_collection = new QAction(QET::Icons::FolderDelete, tr("Vider la collection"), this);
|
||||
new_element = new QAction(QET::Icons::ElementNew, tr("Nouvel \351l\351ment"), this);
|
||||
import_element = new QAction(QET::Icons::DocumentImport, tr("Importer un \351l\351ment"), this);
|
||||
edit_element = new QAction(QET::Icons::ElementEdit, tr("\311diter l'\351l\351ment"), this);
|
||||
delete_element = new QAction(QET::Icons::ElementDelete, tr("Supprimer l'\351l\351ment"), this);
|
||||
prj_close = new QAction(QET::Icons::DocumentClose, tr("Fermer ce projet"), this);
|
||||
prj_edit_prop = new QAction(QET::Icons::DialogInformation, tr("Propri\351t\351s du projet"), 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_del_diagram = new QAction(QET::Icons::DiagramDelete, tr("Supprimer ce sch\351ma"), 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);
|
||||
cancel_elements_ = new QAction(QET::Icons::Cancel, tr("Annuler"), this);
|
||||
erase_textfield = new QAction(QET::Icons::EditClearLocationBar, tr("Effacer le filtre"), this);
|
||||
reload = new QAction(QET::Icons::ViewRefresh, tr("Recharger les collections"), this);
|
||||
new_category = new QAction(QET::Icons::FolderNew, tr("Nouvelle cat\351gorie"), this);
|
||||
edit_category = new QAction(QET::Icons::FolderEdit, tr("\311diter la cat\351gorie"), this);
|
||||
delete_category = new QAction(QET::Icons::FolderDelete, tr("Supprimer la cat\351gorie"), this);
|
||||
delete_collection = new QAction(QET::Icons::FolderDelete, tr("Vider la collection"), this);
|
||||
new_element = new QAction(QET::Icons::ElementNew, tr("Nouvel \351l\351ment"), this);
|
||||
import_element = new QAction(QET::Icons::DocumentImport, tr("Importer un \351l\351ment"), this);
|
||||
edit_element = new QAction(QET::Icons::ElementEdit, tr("\311diter l'\351l\351ment"), this);
|
||||
delete_element = new QAction(QET::Icons::ElementDelete, tr("Supprimer l'\351l\351ment"), this);
|
||||
prj_close = new QAction(QET::Icons::DocumentClose, tr("Fermer ce projet"), this);
|
||||
prj_edit_prop = new QAction(QET::Icons::DialogInformation, tr("Propri\351t\351s du projet"), 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_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);
|
||||
copy_elements_ = new QAction(QET::Icons::CopyFile, tr("Copier dans cette cat\351gorie"), this);
|
||||
cancel_elements_ = new QAction(QET::Icons::Cancel, tr("Annuler"), this);
|
||||
erase_textfield = new QAction(QET::Icons::EditClearLocationBar, tr("Effacer le filtre"), this);
|
||||
|
||||
// initialise le champ de texte pour filtrer avec une disposition horizontale
|
||||
QLabel *filter_label = new QLabel(tr("Filtrer : "), this);
|
||||
@ -84,29 +86,31 @@ ElementsPanelWidget::ElementsPanelWidget(QWidget *parent) : QWidget(parent) {
|
||||
|
||||
context_menu = new QMenu(this);
|
||||
|
||||
connect(reload, SIGNAL(triggered()), this, SLOT(reloadAndFilter()));
|
||||
connect(new_category, SIGNAL(triggered()), this, SLOT(newCategory()));
|
||||
connect(edit_category, SIGNAL(triggered()), this, SLOT(editCategory()));
|
||||
connect(delete_category, SIGNAL(triggered()), this, SLOT(deleteCategory()));
|
||||
connect(delete_collection, SIGNAL(triggered()), this, SLOT(deleteCategory()));
|
||||
connect(new_element, SIGNAL(triggered()), this, SLOT(newElement()));
|
||||
connect(import_element, SIGNAL(triggered()), this, SLOT(importElement()));
|
||||
connect(edit_element, SIGNAL(triggered()), this, SLOT(editElement()));
|
||||
connect(delete_element, SIGNAL(triggered()), this, SLOT(deleteElement()));
|
||||
connect(prj_close, SIGNAL(triggered()), this, SLOT(closeProject()));
|
||||
connect(prj_edit_prop, SIGNAL(triggered()), this, SLOT(editProjectProperties()));
|
||||
connect(prj_prop_diagram, SIGNAL(triggered()), this, SLOT(editDiagramProperties()));
|
||||
connect(prj_add_diagram, SIGNAL(triggered()), this, SLOT(newDiagram()));
|
||||
connect(prj_del_diagram, SIGNAL(triggered()), this, SLOT(deleteDiagram()));
|
||||
connect(move_elements_, SIGNAL(triggered()), this, SLOT(moveElements()));
|
||||
connect(copy_elements_, SIGNAL(triggered()), this, SLOT(copyElements()));
|
||||
connect(reload, SIGNAL(triggered()), this, SLOT(reloadAndFilter()));
|
||||
connect(new_category, SIGNAL(triggered()), this, SLOT(newCategory()));
|
||||
connect(edit_category, SIGNAL(triggered()), this, SLOT(editCategory()));
|
||||
connect(delete_category, SIGNAL(triggered()), this, SLOT(deleteCategory()));
|
||||
connect(delete_collection, SIGNAL(triggered()), this, SLOT(deleteCategory()));
|
||||
connect(new_element, SIGNAL(triggered()), this, SLOT(newElement()));
|
||||
connect(import_element, SIGNAL(triggered()), this, SLOT(importElement()));
|
||||
connect(edit_element, SIGNAL(triggered()), this, SLOT(editElement()));
|
||||
connect(delete_element, SIGNAL(triggered()), this, SLOT(deleteElement()));
|
||||
connect(prj_close, SIGNAL(triggered()), this, SLOT(closeProject()));
|
||||
connect(prj_edit_prop, SIGNAL(triggered()), this, SLOT(editProjectProperties()));
|
||||
connect(prj_prop_diagram, SIGNAL(triggered()), this, SLOT(editDiagramProperties()));
|
||||
connect(prj_add_diagram, SIGNAL(triggered()), this, SLOT(newDiagram()));
|
||||
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(copy_elements_, SIGNAL(triggered()), this, SLOT(copyElements()));
|
||||
|
||||
connect(erase_textfield, SIGNAL(triggered()), this, SLOT(clearFilterTextField()));
|
||||
connect(filter_textfield, SIGNAL(textEdited(const QString &)), elements_panel, SLOT(filter(const QString &)));
|
||||
connect(erase_textfield, SIGNAL(triggered()), this, SLOT(clearFilterTextField()));
|
||||
connect(filter_textfield, SIGNAL(textEdited(const QString &)), elements_panel, SLOT(filter(const QString &)));
|
||||
|
||||
connect(elements_panel, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this, SLOT(updateButtons()));
|
||||
connect(elements_panel, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(handleContextMenu(const QPoint &)));
|
||||
connect(elements_panel, SIGNAL(requestForCollectionItem(ElementsCollectionItem *)), this, SLOT(handleCollectionRequest(ElementsCollectionItem *)));
|
||||
connect(elements_panel, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this, SLOT(updateButtons()));
|
||||
connect(elements_panel, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(handleContextMenu(const QPoint &)));
|
||||
connect(elements_panel, SIGNAL(requestForCollectionItem(ElementsCollectionItem *)), this, SLOT(handleCollectionRequest(ElementsCollectionItem *)));
|
||||
connect(
|
||||
elements_panel,
|
||||
SIGNAL(requestForMoveElements(ElementsCollectionItem *, ElementsCollectionItem *, QPoint)),
|
||||
@ -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
|
||||
*/
|
||||
@ -281,10 +303,17 @@ void ElementsPanelWidget::updateButtons() {
|
||||
bool is_writable = !(elements_panel -> selectedProject() -> isReadOnly());
|
||||
prj_add_diagram -> setEnabled(is_writable);
|
||||
} else if (elements_panel -> selectedItemIsADiagram()) {
|
||||
bool is_writable = !(elements_panel -> selectedDiagram() -> project() -> isReadOnly());
|
||||
prj_del_diagram -> setEnabled(is_writable);
|
||||
Diagram *selected_diagram = elements_panel -> selectedDiagram();
|
||||
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);
|
||||
if (!item) return;
|
||||
|
||||
updateButtons();
|
||||
context_menu -> clear();
|
||||
|
||||
if (elements_panel -> itemHasLocation(item)) {
|
||||
@ -351,6 +381,8 @@ void ElementsPanelWidget::handleContextMenu(const QPoint &pos) {
|
||||
} else if (elements_panel -> itemIsADiagram(item)) {
|
||||
context_menu -> addAction(prj_prop_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 *delete_collection;
|
||||
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_;
|
||||
QMenu *context_menu;
|
||||
QAction *erase_textfield;
|
||||
@ -59,6 +59,8 @@ class ElementsPanelWidget : public QWidget {
|
||||
void requestForProjectPropertiesEdition(QETProject *);
|
||||
void requestForDiagramPropertiesEdition(Diagram *);
|
||||
void requestForDiagramDeletion(Diagram *);
|
||||
void requestForDiagramMoveUp(Diagram *);
|
||||
void requestForDiagramMoveDown(Diagram *);
|
||||
|
||||
public slots:
|
||||
void clearFilterTextField();
|
||||
@ -68,6 +70,8 @@ class ElementsPanelWidget : public QWidget {
|
||||
void editDiagramProperties();
|
||||
void newDiagram();
|
||||
void deleteDiagram();
|
||||
void moveDiagramUp();
|
||||
void moveDiagramDown();
|
||||
void newCategory();
|
||||
void newElement();
|
||||
void importElement();
|
||||
|
@ -34,10 +34,12 @@ HotspotEditor::HotspotEditor(QWidget *parent) :
|
||||
|
||||
sb_width = new QSpinBox();
|
||||
sb_width -> setMinimum(1);
|
||||
sb_width -> setMaximum(1000);
|
||||
sb_width -> setValue(3);
|
||||
sb_width -> setSuffix(tr(" \32710 px"));
|
||||
sb_height = new QSpinBox();
|
||||
sb_height -> setMinimum(1);
|
||||
sb_height -> setMaximum(1000);
|
||||
sb_height -> setValue(7);
|
||||
sb_height -> setSuffix(tr(" \32710 px"));
|
||||
|
||||
@ -223,6 +225,24 @@ QPoint HotspotEditor::offsetParts() const {
|
||||
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
|
||||
*/
|
||||
|
@ -70,6 +70,8 @@ class HotspotEditor : public QWidget {
|
||||
bool partsRectEnabled();
|
||||
bool mustTranslateParts() const;
|
||||
QPoint offsetParts() const;
|
||||
bool isReadOnly() const;
|
||||
void setReadOnly(bool);
|
||||
|
||||
public slots:
|
||||
void updateScene();
|
||||
|
@ -153,3 +153,24 @@ void InsetPropertiesWidget::setInsetProperties(const InsetProperties &inset) {
|
||||
bool InsetPropertiesWidget::displayCurrentDate() const {
|
||||
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;
|
||||
void setInsetProperties(const InsetProperties &);
|
||||
bool displayCurrentDate() const;
|
||||
bool isReadOnly() const;
|
||||
void setReadOnly(bool);
|
||||
|
||||
// attributs
|
||||
private:
|
||||
|
@ -98,6 +98,27 @@ void OrientationSetWidget::setOrientationSet(const OrientationSet &os) {
|
||||
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.
|
||||
L'orientation concernee affiche alors "Possible" et ce statut devient
|
||||
|
@ -49,6 +49,8 @@ class OrientationSetWidget : public QWidget {
|
||||
public:
|
||||
OrientationSet orientationSet() const;
|
||||
void setOrientationSet(const OrientationSet &);
|
||||
bool isReadOnly() const;
|
||||
void setReadOnly(bool);
|
||||
|
||||
private:
|
||||
void updateForm();
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include "conductorpropertieswidget.h"
|
||||
#include "qeticons.h"
|
||||
#include "qetmessagebox.h"
|
||||
#include "qettabbar.h"
|
||||
|
||||
/**
|
||||
Constructeur
|
||||
@ -102,8 +103,8 @@ void ProjectView::setProject(QETProject *project) {
|
||||
if (!project_) {
|
||||
project_ = project;
|
||||
connect(project_, SIGNAL(projectTitleChanged(QETProject *, const QString &)), this, SLOT(updateWindowTitle()));
|
||||
connect(project_, SIGNAL(readOnlyChanged (QETProject *, bool)), this, SLOT(updateWindowTitle()));
|
||||
updateWindowTitle();
|
||||
connect(project_, SIGNAL(readOnlyChanged (QETProject *, bool)), this, SLOT(adjustReadOnlyState()));
|
||||
adjustReadOnlyState();
|
||||
loadDiagrams();
|
||||
}
|
||||
}
|
||||
@ -398,6 +399,8 @@ void ProjectView::showDiagram(Diagram *diagram) {
|
||||
void ProjectView::editProjectProperties() {
|
||||
if (!project_) return;
|
||||
|
||||
bool project_is_read_only = project_ -> isReadOnly();
|
||||
|
||||
// dialogue d'edition des proprietes du projet
|
||||
QDialog properties_dialog(parentWidget());
|
||||
#ifdef Q_WS_MAC
|
||||
@ -411,22 +414,26 @@ void ProjectView::editProjectProperties() {
|
||||
// titre du projet
|
||||
QLabel *title_label = new QLabel(tr("Titre du projet :"));
|
||||
QLineEdit *title_field = new QLineEdit(project_ -> title());
|
||||
title_field -> setReadOnly(project_is_read_only);
|
||||
|
||||
// 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 :"));
|
||||
|
||||
// dimensions par defaut d'un schema
|
||||
BorderPropertiesWidget *bpw = new BorderPropertiesWidget(project_ -> defaultBorderProperties());
|
||||
bpw -> setReadOnly(project_is_read_only);
|
||||
|
||||
// proprietes par defaut d'un cartouche
|
||||
InsetPropertiesWidget *ipw = new InsetPropertiesWidget(project_ -> defaultInsetProperties(), true);
|
||||
ipw -> setReadOnly(project_is_read_only);
|
||||
|
||||
// proprietes par defaut des conducteurs
|
||||
ConductorPropertiesWidget *cpw = new ConductorPropertiesWidget(project_ -> defaultConductorProperties());
|
||||
cpw -> setContentsMargins(0, 0, 0, 0);
|
||||
cpw -> setReadOnly(project_is_read_only);
|
||||
|
||||
// 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(rejected()), &properties_dialog, SLOT(reject()));
|
||||
@ -459,7 +466,7 @@ void ProjectView::editProjectProperties() {
|
||||
vert_layout -> addWidget(buttons);
|
||||
|
||||
// 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_ -> setDefaultBorderProperties(bpw -> borderProperties());
|
||||
project_ -> setDefaultInsetProperties(ipw -> insetProperties());
|
||||
@ -490,6 +497,48 @@ void ProjectView::editDiagramProperties(Diagram *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
|
||||
lancer l'impression de toute ou partie du projet.
|
||||
@ -704,6 +753,18 @@ void ProjectView::updateWindowTitle() {
|
||||
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
|
||||
@param diagram Schema
|
||||
|
@ -54,6 +54,10 @@ class ProjectView : public QWidget {
|
||||
void editCurrentDiagramProperties();
|
||||
void editDiagramProperties(DiagramView *);
|
||||
void editDiagramProperties(Diagram *);
|
||||
void moveDiagramUp(DiagramView *);
|
||||
void moveDiagramUp(Diagram *);
|
||||
void moveDiagramDown(DiagramView *);
|
||||
void moveDiagramDown(Diagram *);
|
||||
void printProject();
|
||||
void exportProject();
|
||||
bool save();
|
||||
@ -89,6 +93,7 @@ class ProjectView : public QWidget {
|
||||
void firstTabInserted();
|
||||
void lastTabRemoved();
|
||||
void setDisplayFallbackWidget(bool);
|
||||
void adjustReadOnlyState();
|
||||
|
||||
// attributs
|
||||
private:
|
||||
|
@ -67,11 +67,13 @@ QETDiagramEditor::QETDiagramEditor(const QStringList &files, QWidget *parent) :
|
||||
connect(&(pa -> elementsPanel()), SIGNAL(requestForDiagram(Diagram *)), this, SLOT(activateDiagram(Diagram *)));
|
||||
connect(&(pa -> elementsPanel()), SIGNAL(requestForProject(QETProject *)), this, SLOT(activateProject(QETProject *)));
|
||||
|
||||
connect(pa, SIGNAL(requestForProjectClosing(QETProject *)), this, SLOT(closeProject(QETProject *)));
|
||||
connect(pa, SIGNAL(requestForProjectClosing(QETProject *)), this, SLOT(closeProject(QETProject *)));
|
||||
connect(pa, SIGNAL(requestForProjectPropertiesEdition(QETProject *)), this, SLOT(editProjectProperties(QETProject *)));
|
||||
connect(pa, SIGNAL(requestForDiagramPropertiesEdition(Diagram *)), this, SLOT(editDiagramProperties(Diagram *)));
|
||||
connect(pa, SIGNAL(requestForNewDiagram(QETProject *)), this, SLOT(addDiagramToProject(QETProject *)));
|
||||
connect(pa, SIGNAL(requestForDiagramDeletion(Diagram *)), this, SLOT(removeDiagram(Diagram *)));
|
||||
connect(pa, SIGNAL(requestForNewDiagram(QETProject *)), this, SLOT(addDiagramToProject(QETProject *)));
|
||||
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 -> setObjectName("diagram_undo");
|
||||
@ -575,9 +577,9 @@ void QETDiagramEditor::toolbar() {
|
||||
view_bar -> addAction(zoom_reset);
|
||||
|
||||
diagram_bar -> addAction(infos_diagram);
|
||||
diagram_bar -> addAction(add_text);
|
||||
diagram_bar -> addAction(conductor_default);
|
||||
diagram_bar -> addAction(conductor_reset);
|
||||
diagram_bar -> addAction(add_text);
|
||||
|
||||
// ajout de la barre d'outils a la fenetre principale
|
||||
addToolBar(Qt::TopToolBarArea, main_bar);
|
||||
@ -1094,10 +1096,10 @@ void QETDiagramEditor::slot_updateActions() {
|
||||
|
||||
// actions ayant juste besoin d'un document ouvert
|
||||
close_file -> setEnabled(opened_project);
|
||||
save_file -> setEnabled(opened_project && editable_project);
|
||||
save_file -> setEnabled(editable_project);
|
||||
save_file_sous -> setEnabled(opened_project);
|
||||
save_all -> setEnabled(opened_diagram && editable_diagram);
|
||||
prj_edit_prop -> setEnabled(editable_project);
|
||||
save_all -> setEnabled(editable_diagram);
|
||||
prj_edit_prop -> setEnabled(opened_project);
|
||||
prj_add_diagram -> setEnabled(editable_project);
|
||||
prj_del_diagram -> setEnabled(editable_project);
|
||||
prj_clean -> setEnabled(editable_project);
|
||||
@ -1111,8 +1113,8 @@ void QETDiagramEditor::slot_updateActions() {
|
||||
zoom_out -> setEnabled(opened_diagram);
|
||||
zoom_fit -> setEnabled(opened_diagram);
|
||||
zoom_reset -> setEnabled(opened_diagram);
|
||||
conductor_default -> setEnabled(editable_diagram);
|
||||
infos_diagram -> setEnabled(editable_diagram);
|
||||
conductor_default -> setEnabled(opened_diagram);
|
||||
infos_diagram -> setEnabled(opened_diagram);
|
||||
add_text -> setEnabled(editable_diagram);
|
||||
add_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
|
||||
*/
|
||||
|
@ -142,6 +142,8 @@ class QETDiagramEditor : public QMainWindow {
|
||||
void addDiagramToProject(QETProject *);
|
||||
void removeDiagram(Diagram *);
|
||||
void removeDiagramFromProject();
|
||||
void moveDiagramUp(Diagram *);
|
||||
void moveDiagramDown(Diagram *);
|
||||
void cleanCurrentProject();
|
||||
void diagramWasAdded(DiagramView *);
|
||||
void diagramIsAboutToBeRemoved(DiagramView *);
|
||||
|
@ -80,6 +80,8 @@ namespace QET {
|
||||
QIcon Forbidden;
|
||||
QIcon FullScreenEnter;
|
||||
QIcon FullScreenExit;
|
||||
QIcon GoDown;
|
||||
QIcon GoUp;
|
||||
QIcon Ground;
|
||||
QIcon Hide;
|
||||
QIcon Home;
|
||||
@ -240,6 +242,10 @@ void QET::Icons::initIcons() {
|
||||
FullScreenEnter .addFile(":/ico/22x22/view-fullscreen.png");
|
||||
FullScreenExit .addFile(":/ico/16x16/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");
|
||||
Hide .addFile(":/ico/16x16/masquer.png");
|
||||
Home .addFile(":/ico/16x16/go-home.png");
|
||||
|
@ -88,6 +88,8 @@ namespace QET {
|
||||
extern QIcon Forbidden;
|
||||
extern QIcon FullScreenEnter;
|
||||
extern QIcon FullScreenExit;
|
||||
extern QIcon GoDown;
|
||||
extern QIcon GoUp;
|
||||
extern QIcon Ground;
|
||||
extern QIcon Hide;
|
||||
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
|
||||
*/
|
||||
void QETTabBar::moveTab(int src_tab, int dst_tab) {
|
||||
#if QT_VERSION < 0x040500
|
||||
// sauvegarde les caracteristiques de l'onglet deplace
|
||||
QIcon old_tab_icon = tabIcon(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
|
||||
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 isVertical() const;
|
||||
bool isHorizontal() const;
|
||||
void moveTab(int, int);
|
||||
|
||||
protected:
|
||||
virtual void tabInserted(int);
|
||||
@ -65,7 +66,6 @@ class QETTabBar : public QTabBar {
|
||||
|
||||
private:
|
||||
bool mustMoveTab(int, int, const QPoint &) const;
|
||||
void moveTab(int, int);
|
||||
int tabForPressedPosition(const QPoint &);
|
||||
int tabForMovedPosition(const QPoint &);
|
||||
bool posMatchesTabRect(const QRect &, const QPoint &) const;
|
||||
|
@ -66,6 +66,10 @@ bool QETTabWidget::isMovable() const {
|
||||
#endif
|
||||
}
|
||||
|
||||
QETTabBar *QETTabWidget::tabBar() const {
|
||||
return(tab_bar_);
|
||||
}
|
||||
|
||||
/**
|
||||
Gere les evenements rollette sur cette barre d'onglets
|
||||
@param event Evenement rollette
|
||||
|
@ -40,6 +40,7 @@ class QETTabWidget : public QTabWidget {
|
||||
public:
|
||||
void setMovable(bool);
|
||||
bool isMovable() const;
|
||||
QETTabBar *tabBar() const;
|
||||
|
||||
protected:
|
||||
void wheelEvent(QWheelEvent *);
|
||||
|
Loading…
x
Reference in New Issue
Block a user