mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-03-19 18:09:59 +01:00
link single element widget : minor improvement
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3946 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -37,6 +37,7 @@ class PropertiesEditorWidget : public QWidget
|
|||||||
virtual void reset() {}
|
virtual void reset() {}
|
||||||
virtual QUndoCommand *associatedUndo () const;
|
virtual QUndoCommand *associatedUndo () const;
|
||||||
virtual QString title() const;
|
virtual QString title() const;
|
||||||
|
virtual void updateUi() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PROPERTIESEDITORWIDGET_H
|
#endif // PROPERTIESEDITORWIDGET_H
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ void ElementSelectorWidget::clear() {
|
|||||||
elements_list.clear();
|
elements_list.clear();
|
||||||
in_filter.clear();
|
in_filter.clear();
|
||||||
out_filter.clear();
|
out_filter.clear();
|
||||||
|
selected_element = nullptr;
|
||||||
if(showed_element) showed_element->setHighlighted(false);
|
if(showed_element) showed_element->setHighlighted(false);
|
||||||
foreach(QWidget *w, content_list) {
|
foreach(QWidget *w, content_list) {
|
||||||
ui->scroll_layout_->removeWidget(w);
|
ui->scroll_layout_->removeWidget(w);
|
||||||
|
|||||||
@@ -57,8 +57,7 @@ LinkSingleElementWidget::LinkSingleElementWidget(Element *elmt, QWidget *parent)
|
|||||||
* @brief LinkSingleElementWidget::~LinkSingleElementWidget
|
* @brief LinkSingleElementWidget::~LinkSingleElementWidget
|
||||||
* Default destructor
|
* Default destructor
|
||||||
*/
|
*/
|
||||||
LinkSingleElementWidget::~LinkSingleElementWidget()
|
LinkSingleElementWidget::~LinkSingleElementWidget() {
|
||||||
{
|
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +65,8 @@ LinkSingleElementWidget::~LinkSingleElementWidget()
|
|||||||
* @brief LinkSingleElementWidget::apply
|
* @brief LinkSingleElementWidget::apply
|
||||||
* Apply the new property of the edited element
|
* Apply the new property of the edited element
|
||||||
*/
|
*/
|
||||||
void LinkSingleElementWidget::apply() {
|
void LinkSingleElementWidget::apply()
|
||||||
|
{
|
||||||
QUndoCommand *undo = associatedUndo();
|
QUndoCommand *undo = associatedUndo();
|
||||||
if (undo)
|
if (undo)
|
||||||
element_->diagram()->undoStack().push(undo);
|
element_->diagram()->undoStack().push(undo);
|
||||||
@@ -95,15 +95,29 @@ QString LinkSingleElementWidget::title() const
|
|||||||
return tr("Référence croisée (esclave)");
|
return tr("Référence croisée (esclave)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief LinkSingleElementWidget::updateUi
|
||||||
|
* Update the content of this widget
|
||||||
|
*/
|
||||||
|
void LinkSingleElementWidget::updateUi()
|
||||||
|
{
|
||||||
|
setNewList();
|
||||||
|
buildLinkUnlinkButton();
|
||||||
|
buildSearchField();
|
||||||
|
unlink_ = false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief LinkSingleElementWidget::buildInterface
|
* @brief LinkSingleElementWidget::buildInterface
|
||||||
* Build the interface of this widget
|
* Build the interface of this widget
|
||||||
*/
|
*/
|
||||||
void LinkSingleElementWidget::buildInterface() {
|
void LinkSingleElementWidget::buildInterface()
|
||||||
|
{
|
||||||
ui->folio_combo_box->addItem(tr("Tous"));
|
ui->folio_combo_box->addItem(tr("Tous"));
|
||||||
|
|
||||||
//Fill the combo box for filter the result by folio
|
//Fill the combo box for filter the result by folio
|
||||||
foreach (Diagram *d, diagram_list) {
|
foreach (Diagram *d, diagram_list)
|
||||||
|
{
|
||||||
QString title = d->title();
|
QString title = d->title();
|
||||||
if (title.isEmpty()) title = tr("Sans titre");
|
if (title.isEmpty()) title = tr("Sans titre");
|
||||||
title.prepend(QString::number(d->folioIndex() + 1) + " ");
|
title.prepend(QString::number(d->folioIndex() + 1) + " ");
|
||||||
@@ -111,11 +125,7 @@ void LinkSingleElementWidget::buildInterface() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
buildList();
|
buildList();
|
||||||
|
buildLinkUnlinkButton();
|
||||||
element_->isFree() ?
|
|
||||||
ui->button_linked->setDisabled(true) :
|
|
||||||
buildUnlinkButton();
|
|
||||||
|
|
||||||
buildSearchField();
|
buildSearchField();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -125,26 +135,42 @@ void LinkSingleElementWidget::buildInterface() {
|
|||||||
* the list is fill with the element find in the
|
* the list is fill with the element find in the
|
||||||
* required folio (folio selected with the combo box)
|
* required folio (folio selected with the combo box)
|
||||||
*/
|
*/
|
||||||
void LinkSingleElementWidget::buildList() {
|
void LinkSingleElementWidget::buildList()
|
||||||
|
{
|
||||||
esw_ = new ElementSelectorWidget(availableElements(), this);
|
esw_ = new ElementSelectorWidget(availableElements(), this);
|
||||||
ui->content_layout->addWidget(esw_);
|
ui->content_layout->addWidget(esw_);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief LinkSingleElementWidget::buildUnlinkButton
|
* @brief LinkSingleElementWidget::buildLinkUnlinkButton
|
||||||
* Build a widget with button 'unlink' if the edited
|
* Build the button link or unlink according to the current edited
|
||||||
* element is already linked with a master element
|
* element, if is already linked with a master element or not
|
||||||
*/
|
*/
|
||||||
void LinkSingleElementWidget::buildUnlinkButton() {
|
void LinkSingleElementWidget::buildLinkUnlinkButton()
|
||||||
unlink_widget = new QWidget(this);
|
{
|
||||||
QHBoxLayout *unlink_layout = new QHBoxLayout(unlink_widget);
|
if (element_->isFree())
|
||||||
QLabel *lb = new QLabel(tr("Cet élément est déjà lié."), unlink_widget);
|
{
|
||||||
QPushButton *pb = new QPushButton(tr("Délier"), unlink_widget);
|
ui->button_linked->setEnabled(true);
|
||||||
connect(pb, SIGNAL(clicked()), this, SLOT(unlinkClicked()));
|
if (unlink_widget)
|
||||||
unlink_layout->addWidget(lb);
|
{
|
||||||
unlink_layout->addStretch();
|
ui->main_layout->removeWidget(unlink_widget);
|
||||||
unlink_layout->addWidget(pb);
|
delete unlink_widget; unlink_widget = nullptr;
|
||||||
ui->main_layout->insertWidget(0, unlink_widget);
|
}
|
||||||
|
}
|
||||||
|
else if (!unlink_widget)
|
||||||
|
{
|
||||||
|
ui->button_linked->setDisabled(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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -152,7 +178,8 @@ void LinkSingleElementWidget::buildUnlinkButton() {
|
|||||||
* Build a line edit for search element by they information,
|
* Build a line edit for search element by they information,
|
||||||
* like label or information
|
* like label or information
|
||||||
*/
|
*/
|
||||||
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) {
|
||||||
@@ -163,13 +190,14 @@ void LinkSingleElementWidget::buildSearchField() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!search_field) search_field = new QLineEdit(this);
|
if(!search_field)
|
||||||
#if QT_VERSION >= 0x040700
|
{
|
||||||
search_field -> setPlaceholderText(tr("Rechercher"));
|
search_field = new QLineEdit(this);
|
||||||
#endif
|
search_field -> setPlaceholderText(tr("Rechercher"));
|
||||||
|
connect(search_field, SIGNAL(textChanged(QString)), esw_, SLOT(filtered(QString)));
|
||||||
|
ui->header_layout->addWidget(search_field);
|
||||||
|
}
|
||||||
setUpCompleter();
|
setUpCompleter();
|
||||||
connect(search_field, SIGNAL(textChanged(QString)), esw_, SLOT(filtered(QString)));
|
|
||||||
ui->header_layout->addWidget(search_field);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -178,29 +206,32 @@ void LinkSingleElementWidget::buildSearchField() {
|
|||||||
* to be linked with the edited element.
|
* to be linked with the edited element.
|
||||||
* This methode take care of the combo box "find in diagram"
|
* This methode take care of the combo box "find in diagram"
|
||||||
*/
|
*/
|
||||||
QList <Element *> LinkSingleElementWidget::availableElements() {
|
QList <Element *> LinkSingleElementWidget::availableElements()
|
||||||
|
{
|
||||||
QList <Element *> elmt_list;
|
QList <Element *> elmt_list;
|
||||||
//if element isn't free and unlink isn't pressed, return an empty list
|
//if element isn't free and unlink isn't pressed, return an empty list
|
||||||
if (!element_->isFree() && !unlink_) return elmt_list;
|
if (!element_->isFree() && !unlink_) return elmt_list;
|
||||||
|
|
||||||
int i = ui->folio_combo_box->currentIndex();
|
int i = ui->folio_combo_box->currentIndex();
|
||||||
//find in all diagram of this project
|
//find in all diagram of this project
|
||||||
if (i == 0) {
|
if (i == 0)
|
||||||
|
{
|
||||||
ElementProvider ep(element_->diagram()->project());
|
ElementProvider ep(element_->diagram()->project());
|
||||||
if (filter_ & Element::AllReport)
|
if (filter_ & Element::AllReport)
|
||||||
elmt_list = ep.freeElement(filter_);
|
elmt_list = ep.freeElement(filter_);
|
||||||
else
|
else
|
||||||
elmt_list = ep.find(filter_);
|
elmt_list = ep.find(filter_);
|
||||||
}
|
}
|
||||||
//find in single diagram
|
//find in single diagram
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
ElementProvider ep (diagram_list.at(i-1));
|
ElementProvider ep (diagram_list.at(i-1));
|
||||||
if (filter_ & Element::AllReport)
|
if (filter_ & Element::AllReport)
|
||||||
elmt_list = ep.freeElement(filter_);
|
elmt_list = ep.freeElement(filter_);
|
||||||
else
|
else
|
||||||
elmt_list = ep.find(filter_);
|
elmt_list = ep.find(filter_);
|
||||||
}
|
}
|
||||||
//If element is linked, remove is parent from the list
|
//If element is linked, remove is parent from the list
|
||||||
if(!element_->isFree()) elmt_list.removeAll(element_->linkedElements().first());
|
if(!element_->isFree()) elmt_list.removeAll(element_->linkedElements().first());
|
||||||
|
|
||||||
return elmt_list;
|
return elmt_list;
|
||||||
@@ -210,8 +241,10 @@ QList <Element *> LinkSingleElementWidget::availableElements() {
|
|||||||
* @brief LinkSingleElementWidget::setUpCompleter
|
* @brief LinkSingleElementWidget::setUpCompleter
|
||||||
* Setup the completer of search_field
|
* Setup the completer of search_field
|
||||||
*/
|
*/
|
||||||
void LinkSingleElementWidget::setUpCompleter() {
|
void LinkSingleElementWidget::setUpCompleter()
|
||||||
if (search_field) {
|
{
|
||||||
|
if (search_field)
|
||||||
|
{
|
||||||
search_field -> clear();
|
search_field -> clear();
|
||||||
delete search_field -> completer();
|
delete search_field -> completer();
|
||||||
|
|
||||||
@@ -227,7 +260,8 @@ void LinkSingleElementWidget::setUpCompleter() {
|
|||||||
* @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
|
||||||
*/
|
*/
|
||||||
void LinkSingleElementWidget::setNewList() {
|
void LinkSingleElementWidget::setNewList()
|
||||||
|
{
|
||||||
esw_->setList(availableElements());
|
esw_->setList(availableElements());
|
||||||
buildSearchField();
|
buildSearchField();
|
||||||
}
|
}
|
||||||
@@ -236,10 +270,10 @@ void LinkSingleElementWidget::setNewList() {
|
|||||||
* @brief LinkSingleElementWidget::unlinkClicked
|
* @brief LinkSingleElementWidget::unlinkClicked
|
||||||
* Action when 'unlink' button is clicked
|
* Action when 'unlink' button is clicked
|
||||||
*/
|
*/
|
||||||
void LinkSingleElementWidget::unlinkClicked() {
|
void LinkSingleElementWidget::unlinkClicked()
|
||||||
|
{
|
||||||
ui->main_layout->removeWidget(unlink_widget);
|
ui->main_layout->removeWidget(unlink_widget);
|
||||||
delete unlink_widget;
|
delete unlink_widget; unlink_widget = nullptr;
|
||||||
unlink_widget = 0;
|
|
||||||
unlink_ = true;
|
unlink_ = true;
|
||||||
setNewList();
|
setNewList();
|
||||||
}
|
}
|
||||||
@@ -256,7 +290,8 @@ void LinkSingleElementWidget::on_button_this_clicked() {
|
|||||||
* @brief FolioReportProperties::on_button_linked_clicked
|
* @brief FolioReportProperties::on_button_linked_clicked
|
||||||
* Action when push button "linked report" is clicked
|
* Action when push button "linked report" is clicked
|
||||||
*/
|
*/
|
||||||
void LinkSingleElementWidget::on_button_linked_clicked() {
|
void LinkSingleElementWidget::on_button_linked_clicked()
|
||||||
|
{
|
||||||
if (element_->isFree()) return;
|
if (element_->isFree()) return;
|
||||||
esw_->showElement(element_->linkedElements().first());
|
esw_->showElement(element_->linkedElements().first());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,14 +51,15 @@ class LinkSingleElementWidget : public PropertiesEditorWidget
|
|||||||
void apply();
|
void apply();
|
||||||
QUndoCommand *associatedUndo() const;
|
QUndoCommand *associatedUndo() const;
|
||||||
QString title() const;
|
QString title() const;
|
||||||
|
void updateUi();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void buildInterface();
|
void buildInterface();
|
||||||
void buildList();
|
void buildList();
|
||||||
void buildUnlinkButton();
|
void buildLinkUnlinkButton();
|
||||||
void buildSearchField();
|
void buildSearchField();
|
||||||
QList <Element *> availableElements();
|
QList <Element *> availableElements();
|
||||||
void setUpCompleter();
|
void setUpCompleter();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void setNewList();
|
void setNewList();
|
||||||
|
|||||||
Reference in New Issue
Block a user