mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-20 16:20:52 +01:00
Link single element widget, set live edit enable.
In properties dock widget, no need to click on apply button, change are apply immediately. git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3992 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -120,6 +120,7 @@ class Element : public QetGraphicsItem {
|
|||||||
kind link_type_;
|
kind link_type_;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
void linkedElementChanged(); //This signal is emtied when the linked elements with this element change
|
||||||
void elementInfoChange(DiagramContext old_info, DiagramContext new_info);
|
void elementInfoChange(DiagramContext old_info, DiagramContext new_info);
|
||||||
|
|
||||||
//METHODS related to information
|
//METHODS related to information
|
||||||
|
|||||||
@@ -49,9 +49,11 @@ MasterElement::~MasterElement() {
|
|||||||
* For this class element must be a slave
|
* For this class element must be a slave
|
||||||
* @param elmt
|
* @param elmt
|
||||||
*/
|
*/
|
||||||
void MasterElement::linkToElement(Element *elmt) {
|
void MasterElement::linkToElement(Element *elmt)
|
||||||
// check if element is slave and if isn't already linked
|
{
|
||||||
if (elmt->linkType() == Slave && !connected_elements.contains(elmt)) {
|
// check if element is slave and if isn't already linked
|
||||||
|
if (elmt->linkType() == Slave && !connected_elements.contains(elmt))
|
||||||
|
{
|
||||||
connected_elements << elmt;
|
connected_elements << elmt;
|
||||||
elmt->linkToElement(this);
|
elmt->linkToElement(this);
|
||||||
|
|
||||||
@@ -60,6 +62,7 @@ void MasterElement::linkToElement(Element *elmt) {
|
|||||||
connect(elmt, SIGNAL(xChanged()), cri_, SLOT(updateLabel()));
|
connect(elmt, SIGNAL(xChanged()), cri_, SLOT(updateLabel()));
|
||||||
connect(elmt, SIGNAL(yChanged()), cri_, SLOT(updateLabel()));
|
connect(elmt, SIGNAL(yChanged()), cri_, SLOT(updateLabel()));
|
||||||
cri_ -> updateLabel();
|
cri_ -> updateLabel();
|
||||||
|
emit linkedElementChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,12 +70,14 @@ void MasterElement::linkToElement(Element *elmt) {
|
|||||||
* @brief MasterElement::unlinkAllElements
|
* @brief MasterElement::unlinkAllElements
|
||||||
* Unlink all of the element in the QList connected_elements
|
* Unlink all of the element in the QList connected_elements
|
||||||
*/
|
*/
|
||||||
void MasterElement::unlinkAllElements() {
|
void MasterElement::unlinkAllElements()
|
||||||
// if this element is free no need to do something
|
{
|
||||||
if (!isFree()) {
|
// if this element is free no need to do something
|
||||||
foreach(Element *elmt, connected_elements) {
|
if (!isFree())
|
||||||
|
{
|
||||||
|
foreach(Element *elmt, connected_elements)
|
||||||
unlinkElement(elmt);
|
unlinkElement(elmt);
|
||||||
}
|
emit linkedElementChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,6 +101,7 @@ void MasterElement::unlinkElement(Element *elmt)
|
|||||||
|
|
||||||
cri_ -> updateLabel();
|
cri_ -> updateLabel();
|
||||||
aboutDeleteXref();
|
aboutDeleteXref();
|
||||||
|
emit linkedElementChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ void ReportElement::linkToElement(Element * elmt)
|
|||||||
updateLabel();
|
updateLabel();
|
||||||
|
|
||||||
elmt -> linkToElement(this);
|
elmt -> linkToElement(this);
|
||||||
|
emit linkedElementChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,7 +91,8 @@ void ReportElement::linkToElement(Element * elmt)
|
|||||||
*/
|
*/
|
||||||
void ReportElement::unlinkAllElements()
|
void ReportElement::unlinkAllElements()
|
||||||
{
|
{
|
||||||
if (!isFree()){
|
if (!isFree())
|
||||||
|
{
|
||||||
QList <Element *> tmp_elmt = connected_elements;
|
QList <Element *> tmp_elmt = connected_elements;
|
||||||
|
|
||||||
foreach(Element *elmt, connected_elements)
|
foreach(Element *elmt, connected_elements)
|
||||||
@@ -107,6 +109,7 @@ void ReportElement::unlinkAllElements()
|
|||||||
elmt -> setHighlighted(false);
|
elmt -> setHighlighted(false);
|
||||||
elmt -> unlinkAllElements();
|
elmt -> unlinkAllElements();
|
||||||
}
|
}
|
||||||
|
emit linkedElementChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -50,9 +50,11 @@ SlaveElement::~SlaveElement() {
|
|||||||
* For this class element must be a master
|
* For this class element must be a master
|
||||||
* @param elmt
|
* @param elmt
|
||||||
*/
|
*/
|
||||||
void SlaveElement::linkToElement(Element *elmt) {
|
void SlaveElement::linkToElement(Element *elmt)
|
||||||
// check if element is master and if isn't already linked
|
{
|
||||||
if (elmt->linkType() == Master && !connected_elements.contains(elmt)) {
|
// check if element is master and if isn't already linked
|
||||||
|
if (elmt->linkType() == Master && !connected_elements.contains(elmt))
|
||||||
|
{
|
||||||
if(!isFree()) unlinkAllElements();
|
if(!isFree()) unlinkAllElements();
|
||||||
connected_elements << elmt;
|
connected_elements << elmt;
|
||||||
|
|
||||||
@@ -64,6 +66,7 @@ void SlaveElement::linkToElement(Element *elmt) {
|
|||||||
|
|
||||||
updateLabel();
|
updateLabel();
|
||||||
elmt -> linkToElement(this);
|
elmt -> linkToElement(this);
|
||||||
|
emit linkedElementChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,12 +74,14 @@ void SlaveElement::linkToElement(Element *elmt) {
|
|||||||
* @brief SlaveElement::unlinkAllElements
|
* @brief SlaveElement::unlinkAllElements
|
||||||
* Unlink all of the element in the QList connected_elements
|
* Unlink all of the element in the QList connected_elements
|
||||||
*/
|
*/
|
||||||
void SlaveElement::unlinkAllElements() {
|
void SlaveElement::unlinkAllElements()
|
||||||
// if this element is free no need to do something
|
{
|
||||||
if (!isFree()) {
|
// if this element is free no need to do something
|
||||||
foreach(Element *elmt, connected_elements) {
|
if (!isFree())
|
||||||
|
{
|
||||||
|
foreach(Element *elmt, connected_elements)
|
||||||
unlinkElement(elmt);
|
unlinkElement(elmt);
|
||||||
}
|
emit linkedElementChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,6 +108,7 @@ void SlaveElement::unlinkElement(Element *elmt)
|
|||||||
updateLabel();
|
updateLabel();
|
||||||
elmt -> unlinkElement (this) ;
|
elmt -> unlinkElement (this) ;
|
||||||
elmt -> setHighlighted (false);
|
elmt -> setHighlighted (false);
|
||||||
|
emit linkedElementChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ void DiagramPropertiesEditorDockWidget::selectionChanged()
|
|||||||
{
|
{
|
||||||
QGraphicsItem *item = m_diagram->selectedItems().first();
|
QGraphicsItem *item = m_diagram->selectedItems().first();
|
||||||
|
|
||||||
|
//Edit an element
|
||||||
if (Element *elmt = dynamic_cast<Element*>(item))
|
if (Element *elmt = dynamic_cast<Element*>(item))
|
||||||
{
|
{
|
||||||
if (m_edited_qgi_type == ElementQGIType && editors().size() == 1)
|
if (m_edited_qgi_type == ElementQGIType && editors().size() == 1)
|
||||||
@@ -93,17 +94,22 @@ void DiagramPropertiesEditorDockWidget::selectionChanged()
|
|||||||
m_edited_qgi_type = ElementQGIType;
|
m_edited_qgi_type = ElementQGIType;
|
||||||
addEditor(new ElementPropertiesWidget(elmt, this));
|
addEditor(new ElementPropertiesWidget(elmt, this));
|
||||||
}
|
}
|
||||||
|
//Edit an image
|
||||||
else if (DiagramImageItem *image = dynamic_cast<DiagramImageItem *>(item))
|
else if (DiagramImageItem *image = dynamic_cast<DiagramImageItem *>(item))
|
||||||
{
|
{
|
||||||
clear();
|
clear();
|
||||||
m_edited_qgi_type = ImageQGIType;
|
m_edited_qgi_type = ImageQGIType;
|
||||||
addEditor(new ImagePropertiesWidget(image, this));
|
addEditor(new ImagePropertiesWidget(image, this));
|
||||||
}
|
}
|
||||||
|
//Unknow type, we clear the dock
|
||||||
else
|
else
|
||||||
clear();
|
clear();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
clear();
|
clear();
|
||||||
|
|
||||||
|
foreach(PropertiesEditorWidget *pew, editors())
|
||||||
|
pew->setLiveEdit(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -107,6 +107,17 @@ void ElementPropertiesWidget::reset() {
|
|||||||
foreach (PropertiesEditorWidget *pew, m_list_editor) pew->reset();
|
foreach (PropertiesEditorWidget *pew, m_list_editor) pew->reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ElementPropertiesWidget::setLiveEdit(bool live_edit)
|
||||||
|
{
|
||||||
|
if (m_live_edit == live_edit) return true;
|
||||||
|
m_live_edit = live_edit;
|
||||||
|
|
||||||
|
foreach (AbstractElementPropertiesEditorWidget *aepew, m_list_editor)
|
||||||
|
aepew->setLiveEdit(m_live_edit);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ElementPropertiesWidget::findInPanel
|
* @brief ElementPropertiesWidget::findInPanel
|
||||||
* If m_element is a custom element, emit findElementRequired
|
* If m_element is a custom element, emit findElementRequired
|
||||||
@@ -158,7 +169,7 @@ void ElementPropertiesWidget::updateUi()
|
|||||||
qDeleteAll(m_list_editor); m_list_editor.clear();
|
qDeleteAll(m_list_editor); m_list_editor.clear();
|
||||||
if(m_general_widget) delete m_general_widget; m_general_widget = nullptr;
|
if(m_general_widget) delete m_general_widget; m_general_widget = nullptr;
|
||||||
|
|
||||||
//Add tab according to the element
|
//Create editor according to the type of element
|
||||||
switch (m_element -> linkType())
|
switch (m_element -> linkType())
|
||||||
{
|
{
|
||||||
case Element::Simple:
|
case Element::Simple:
|
||||||
@@ -183,9 +194,15 @@ void ElementPropertiesWidget::updateUi()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (PropertiesEditorWidget *pew, m_list_editor) m_tab->addTab(pew, pew->title());
|
//Add each editors in tab widget
|
||||||
|
foreach (AbstractElementPropertiesEditorWidget *aepew, m_list_editor)
|
||||||
|
{
|
||||||
|
aepew->setLiveEdit(m_live_edit);
|
||||||
|
m_tab->addTab(aepew, aepew->title());
|
||||||
|
}
|
||||||
addGeneralWidget();
|
addGeneralWidget();
|
||||||
|
|
||||||
|
//Go to the tab, edited at the beginning of this method
|
||||||
if (!tab_text.isEmpty())
|
if (!tab_text.isEmpty())
|
||||||
{
|
{
|
||||||
for(int i=0 ; i<m_tab->count() ; ++i)
|
for(int i=0 ; i<m_tab->count() ; ++i)
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ class ElementPropertiesWidget : public AbstractElementPropertiesEditorWidget
|
|||||||
void setElement(Element *element);
|
void setElement(Element *element);
|
||||||
void apply();
|
void apply();
|
||||||
void reset();
|
void reset();
|
||||||
|
bool setLiveEdit(bool live_edit);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void findInPanel ();
|
void findInPanel ();
|
||||||
|
|||||||
@@ -220,6 +220,12 @@ void ElementSelectorWidget::buildInterface() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ElementSelectorWidget::setSelectedElement(const int i)
|
||||||
|
{
|
||||||
|
selected_element = elements_list.at(i);
|
||||||
|
emit elementSelected(selected_element);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ElementSelectorWidget::showElementFromList
|
* @brief ElementSelectorWidget::showElementFromList
|
||||||
* Show the element at the position i in @elements_list
|
* Show the element at the position i in @elements_list
|
||||||
|
|||||||
@@ -48,14 +48,17 @@ class ElementSelectorWidget : public QWidget
|
|||||||
|
|
||||||
QStringList filter () const;
|
QStringList filter () const;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void elementSelected (Element *element);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void filtered(const QString &str);
|
void filtered(const QString &str);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void buildInterface();
|
void buildInterface();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void setSelectedElement (const int i) {selected_element = elements_list.at(i);}
|
void setSelectedElement (const int i);
|
||||||
void showElementFromList (const int i);
|
void showElementFromList (const int i);
|
||||||
void showedElementWasDeleted ();
|
void showedElementWasDeleted ();
|
||||||
|
|
||||||
|
|||||||
@@ -34,12 +34,12 @@ LinkSingleElementWidget::LinkSingleElementWidget(Element *elmt, QWidget *parent)
|
|||||||
AbstractElementPropertiesEditorWidget(parent),
|
AbstractElementPropertiesEditorWidget(parent),
|
||||||
ui(new Ui::LinkSingleElementWidget),
|
ui(new Ui::LinkSingleElementWidget),
|
||||||
esw_(0),
|
esw_(0),
|
||||||
unlink_widget(0),
|
|
||||||
unlink_(false),
|
unlink_(false),
|
||||||
search_field(0)
|
search_field(nullptr)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
connect(ui->folio_combo_box, SIGNAL(currentIndexChanged(int)), this, SLOT(setNewList()));
|
connect(ui->folio_combo_box, SIGNAL(currentIndexChanged(int)), this, SLOT(setNewList()));
|
||||||
|
connect(ui->m_unlink_pb, SIGNAL(clicked()), this, SLOT(unlinkClicked()));
|
||||||
setElement(elmt);
|
setElement(elmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,12 +59,16 @@ LinkSingleElementWidget::~LinkSingleElementWidget() {
|
|||||||
void LinkSingleElementWidget::setElement(Element *element)
|
void LinkSingleElementWidget::setElement(Element *element)
|
||||||
{
|
{
|
||||||
if (m_element == element) return;
|
if (m_element == element) return;
|
||||||
|
|
||||||
|
//Remove connection of previous edited element
|
||||||
if (m_element)
|
if (m_element)
|
||||||
{
|
{
|
||||||
disconnect(m_element->diagram()->project(), &QETProject::diagramRemoved, this, &LinkSingleElementWidget::diagramWasRemovedFromProject);
|
disconnect(m_element->diagram()->project(), &QETProject::diagramRemoved, this, &LinkSingleElementWidget::diagramWasRemovedFromProject);
|
||||||
|
disconnect(m_element, &Element::linkedElementChanged, this, &LinkSingleElementWidget::updateUi);
|
||||||
diagram_list.clear();
|
diagram_list.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Setup the new element, connection and ui
|
||||||
m_element = element;
|
m_element = element;
|
||||||
diagram_list << m_element->diagram()->project()->diagrams();
|
diagram_list << m_element->diagram()->project()->diagrams();
|
||||||
|
|
||||||
@@ -76,13 +80,15 @@ void LinkSingleElementWidget::setElement(Element *element)
|
|||||||
filter_ = Element::Simple;
|
filter_ = Element::Simple;
|
||||||
|
|
||||||
connect(m_element->diagram()->project(), &QETProject::diagramRemoved, this, &LinkSingleElementWidget::diagramWasRemovedFromProject);
|
connect(m_element->diagram()->project(), &QETProject::diagramRemoved, this, &LinkSingleElementWidget::diagramWasRemovedFromProject);
|
||||||
|
connect(m_element, &Element::linkedElementChanged, this, &LinkSingleElementWidget::updateUi, Qt::QueuedConnection);
|
||||||
|
|
||||||
buildInterface();
|
updateUi();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief LinkSingleElementWidget::apply
|
* @brief LinkSingleElementWidget::apply
|
||||||
* Apply the new property of the edited element
|
* Apply the new property of the edited element by pushing
|
||||||
|
* the associated undo command to parent project undo stack
|
||||||
*/
|
*/
|
||||||
void LinkSingleElementWidget::apply()
|
void LinkSingleElementWidget::apply()
|
||||||
{
|
{
|
||||||
@@ -106,6 +112,10 @@ QUndoCommand *LinkSingleElementWidget::associatedUndo() const
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief LinkSingleElementWidget::title
|
||||||
|
* @return the title used for this editor
|
||||||
|
*/
|
||||||
QString LinkSingleElementWidget::title() const
|
QString LinkSingleElementWidget::title() const
|
||||||
{
|
{
|
||||||
if (m_element->linkType() == Element::AllReport)
|
if (m_element->linkType() == Element::AllReport)
|
||||||
@@ -118,8 +128,73 @@ QString LinkSingleElementWidget::title() const
|
|||||||
* @brief LinkSingleElementWidget::updateUi
|
* @brief LinkSingleElementWidget::updateUi
|
||||||
* Update the content of this widget
|
* Update the content of this widget
|
||||||
*/
|
*/
|
||||||
void LinkSingleElementWidget::updateUi() {
|
void LinkSingleElementWidget::updateUi()
|
||||||
buildInterface();
|
{
|
||||||
|
//Fill the combo box for filter the result by folio
|
||||||
|
ui->folio_combo_box->blockSignals(true);
|
||||||
|
ui->folio_combo_box->clear();
|
||||||
|
ui->folio_combo_box->addItem(tr("Tous"));
|
||||||
|
|
||||||
|
foreach (Diagram *d, diagram_list)
|
||||||
|
{
|
||||||
|
QString title = d->title();
|
||||||
|
if (title.isEmpty()) title = tr("Sans titre");
|
||||||
|
title.prepend(QString::number(d->folioIndex() + 1) + " ");
|
||||||
|
ui->folio_combo_box->addItem(title);
|
||||||
|
}
|
||||||
|
ui->folio_combo_box->blockSignals(false);
|
||||||
|
|
||||||
|
unlink_ = false;
|
||||||
|
buildList();
|
||||||
|
|
||||||
|
//Update the behavior of link/unlink button
|
||||||
|
if (m_element->isFree())
|
||||||
|
{
|
||||||
|
ui->button_linked->setDisabled(true);
|
||||||
|
ui->m_unlink_widget->hide();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ui->m_unlink_widget->show();
|
||||||
|
|
||||||
|
buildSearchField();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief LinkSingleElementWidget::setLiveEdit
|
||||||
|
* @param live_edit
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
bool LinkSingleElementWidget::setLiveEdit(bool live_edit)
|
||||||
|
{
|
||||||
|
if (m_live_edit == live_edit) return true;
|
||||||
|
m_live_edit = live_edit;
|
||||||
|
|
||||||
|
if (m_live_edit)
|
||||||
|
enableLiveEdit();
|
||||||
|
else
|
||||||
|
disableLiveEdit();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief LinkSingleElementWidget::enableLiveEdit
|
||||||
|
*/
|
||||||
|
void LinkSingleElementWidget::enableLiveEdit()
|
||||||
|
{
|
||||||
|
if (!esw_) return;
|
||||||
|
connect(esw_, &ElementSelectorWidget::elementSelected, this, &LinkSingleElementWidget::apply);
|
||||||
|
connect(ui->m_unlink_pb, &QPushButton::clicked, this, &LinkSingleElementWidget::apply);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief LinkSingleElementWidget::disableLiveEdit
|
||||||
|
*/
|
||||||
|
void LinkSingleElementWidget::disableLiveEdit()
|
||||||
|
{
|
||||||
|
if (!esw_) return;
|
||||||
|
disconnect(esw_, &ElementSelectorWidget::elementSelected, this, &LinkSingleElementWidget::apply);
|
||||||
|
disconnect(ui->m_unlink_pb, &QPushButton::clicked, this, &LinkSingleElementWidget::apply);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -142,38 +217,6 @@ void LinkSingleElementWidget::buildList()
|
|||||||
buildSearchField();
|
buildSearchField();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief LinkSingleElementWidget::buildLinkUnlinkButton
|
|
||||||
* Build the button link or unlink according to the current edited
|
|
||||||
* element, if is already linked with a master element or not
|
|
||||||
*/
|
|
||||||
void LinkSingleElementWidget::buildLinkUnlinkButton()
|
|
||||||
{
|
|
||||||
if (m_element->isFree())
|
|
||||||
{
|
|
||||||
ui->button_linked->setDisabled(true);
|
|
||||||
if (unlink_widget)
|
|
||||||
{
|
|
||||||
ui->main_layout->removeWidget(unlink_widget);
|
|
||||||
delete unlink_widget; unlink_widget = nullptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (!unlink_widget)
|
|
||||||
{
|
|
||||||
ui->button_linked->setEnabled(true);
|
|
||||||
unlink_widget = new QWidget(this);
|
|
||||||
QHBoxLayout *unlink_layout = new QHBoxLayout(unlink_widget);
|
|
||||||
QLabel *lb = new QLabel(tr("Cet élément est déjà lié."), unlink_widget);
|
|
||||||
QPushButton *pb = new QPushButton(tr("Délier"), unlink_widget);
|
|
||||||
connect(pb, SIGNAL(clicked()), this, SLOT(unlinkClicked()));
|
|
||||||
unlink_layout->addWidget(lb);
|
|
||||||
unlink_layout->addStretch();
|
|
||||||
unlink_layout->addWidget(pb);
|
|
||||||
ui->main_layout->insertWidget(0, unlink_widget);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief LinkSingleElementWidget::buildSearchField
|
* @brief LinkSingleElementWidget::buildSearchField
|
||||||
* Build a line edit for search element by they information,
|
* Build a line edit for search element by they information,
|
||||||
@@ -182,8 +225,10 @@ void LinkSingleElementWidget::buildLinkUnlinkButton()
|
|||||||
void LinkSingleElementWidget::buildSearchField()
|
void LinkSingleElementWidget::buildSearchField()
|
||||||
{
|
{
|
||||||
//If there isn't string to filter, we remove the search field
|
//If there isn't string to filter, we remove the search field
|
||||||
if (esw_->filter().isEmpty()) {
|
if (esw_->filter().isEmpty())
|
||||||
if (search_field) {
|
{
|
||||||
|
if (search_field)
|
||||||
|
{
|
||||||
ui -> header_layout -> removeWidget(search_field);
|
ui -> header_layout -> removeWidget(search_field);
|
||||||
delete search_field;
|
delete search_field;
|
||||||
search_field = nullptr;
|
search_field = nullptr;
|
||||||
@@ -257,32 +302,6 @@ void LinkSingleElementWidget::setUpCompleter()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief LinkSingleElementWidget::buildInterface
|
|
||||||
* Build the interface of this widget
|
|
||||||
*/
|
|
||||||
void LinkSingleElementWidget::buildInterface()
|
|
||||||
{
|
|
||||||
ui->folio_combo_box->blockSignals(true);
|
|
||||||
ui->folio_combo_box->clear();
|
|
||||||
ui->folio_combo_box->addItem(tr("Tous"));
|
|
||||||
|
|
||||||
//Fill the combo box for filter the result by folio
|
|
||||||
foreach (Diagram *d, diagram_list)
|
|
||||||
{
|
|
||||||
QString title = d->title();
|
|
||||||
if (title.isEmpty()) title = tr("Sans titre");
|
|
||||||
title.prepend(QString::number(d->folioIndex() + 1) + " ");
|
|
||||||
ui->folio_combo_box->addItem(title);
|
|
||||||
}
|
|
||||||
ui->folio_combo_box->blockSignals(false);
|
|
||||||
|
|
||||||
unlink_ = false;
|
|
||||||
buildList();
|
|
||||||
buildLinkUnlinkButton();
|
|
||||||
buildSearchField();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief LinkSingleElementWidget::setNewList
|
* @brief LinkSingleElementWidget::setNewList
|
||||||
* Set the list according to the selected diagram in the combo_box
|
* Set the list according to the selected diagram in the combo_box
|
||||||
@@ -299,8 +318,7 @@ void LinkSingleElementWidget::setNewList()
|
|||||||
*/
|
*/
|
||||||
void LinkSingleElementWidget::unlinkClicked()
|
void LinkSingleElementWidget::unlinkClicked()
|
||||||
{
|
{
|
||||||
ui->main_layout->removeWidget(unlink_widget);
|
ui->m_unlink_widget->hide();
|
||||||
delete unlink_widget; unlink_widget = nullptr;
|
|
||||||
unlink_ = true;
|
unlink_ = true;
|
||||||
setNewList();
|
setNewList();
|
||||||
}
|
}
|
||||||
@@ -334,5 +352,5 @@ void LinkSingleElementWidget::diagramWasRemovedFromProject()
|
|||||||
diagram_list << m_element->diagram()->project()->diagrams();
|
diagram_list << m_element->diagram()->project()->diagrams();
|
||||||
//We use a timer because if the removed diagram contain the master element linked to the edited element
|
//We use a timer because if the removed diagram contain the master element linked to the edited element
|
||||||
//we must to wait for this elements be unlinked, else the list of available master isn't up to date
|
//we must to wait for this elements be unlinked, else the list of available master isn't up to date
|
||||||
QTimer::singleShot(10, this, SLOT(buildInterface()));
|
QTimer::singleShot(10, this, SLOT(updateUi()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,17 +53,22 @@ class LinkSingleElementWidget : public AbstractElementPropertiesEditorWidget
|
|||||||
void apply();
|
void apply();
|
||||||
QUndoCommand *associatedUndo() const;
|
QUndoCommand *associatedUndo() const;
|
||||||
QString title() const;
|
QString title() const;
|
||||||
|
|
||||||
|
public slots:
|
||||||
void updateUi();
|
void updateUi();
|
||||||
|
|
||||||
private:
|
public:
|
||||||
|
bool setLiveEdit(bool live_edit);
|
||||||
|
|
||||||
|
private :
|
||||||
|
void enableLiveEdit();
|
||||||
|
void disableLiveEdit();
|
||||||
void buildList();
|
void buildList();
|
||||||
void buildLinkUnlinkButton();
|
|
||||||
void buildSearchField();
|
void buildSearchField();
|
||||||
QList <Element *> availableElements();
|
QList <Element *> availableElements();
|
||||||
void setUpCompleter();
|
void setUpCompleter();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void buildInterface();
|
|
||||||
void setNewList();
|
void setNewList();
|
||||||
void unlinkClicked();
|
void unlinkClicked();
|
||||||
void on_button_this_clicked();
|
void on_button_this_clicked();
|
||||||
@@ -75,7 +80,6 @@ class LinkSingleElementWidget : public AbstractElementPropertiesEditorWidget
|
|||||||
Ui::LinkSingleElementWidget *ui;
|
Ui::LinkSingleElementWidget *ui;
|
||||||
ElementSelectorWidget *esw_;
|
ElementSelectorWidget *esw_;
|
||||||
QList <Diagram *> diagram_list;
|
QList <Diagram *> diagram_list;
|
||||||
QWidget *unlink_widget;
|
|
||||||
bool unlink_;
|
bool unlink_;
|
||||||
Element::kind filter_;
|
Element::kind filter_;
|
||||||
QLineEdit *search_field;
|
QLineEdit *search_field;
|
||||||
|
|||||||
@@ -16,6 +16,39 @@
|
|||||||
<layout class="QVBoxLayout" name="main_layout">
|
<layout class="QVBoxLayout" name="main_layout">
|
||||||
<item>
|
<item>
|
||||||
<layout class="QVBoxLayout" name="header_layout">
|
<layout class="QVBoxLayout" name="header_layout">
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="m_unlink_widget" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>Cet élément est déjà lié</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="m_unlink_pb">
|
||||||
|
<property name="text">
|
||||||
|
<string>Délier</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label">
|
<widget class="QLabel" name="label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|||||||
Reference in New Issue
Block a user