mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-09-13 20:23:04 +02:00
Search and replace : Add two search options, contain text/entire word and case sensitive/insensitive
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5620 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
parent
d2bcfb8887
commit
dab22aeed1
@ -210,7 +210,10 @@ void SearchAndReplaceWidget::setHideAdvanced(bool hide) const
|
|||||||
ui->m_conductor_pb ->setHidden(hide);
|
ui->m_conductor_pb ->setHidden(hide);
|
||||||
ui->m_tree_widget ->setHidden(hide);
|
ui->m_tree_widget ->setHidden(hide);
|
||||||
ui->m_replace_pb ->setHidden(hide);
|
ui->m_replace_pb ->setHidden(hide);
|
||||||
ui->m_replace_all_pb->setHidden(hide);
|
ui->m_replace_all_pb ->setHidden(hide);
|
||||||
|
ui->m_mode ->setHidden(hide);
|
||||||
|
ui->m_mode_cb ->setHidden(hide);
|
||||||
|
ui->m_case_sensitive_cb->setHidden(hide);
|
||||||
QSize size = ui->m_v_spacer->sizeHint();
|
QSize size = ui->m_v_spacer->sizeHint();
|
||||||
ui->m_v_spacer->changeSize(size.width(), size.height(), QSizePolicy::Minimum, hide ? QSizePolicy::Expanding : QSizePolicy::Ignored);
|
ui->m_v_spacer->changeSize(size.width(), size.height(), QSizePolicy::Minimum, hide ? QSizePolicy::Expanding : QSizePolicy::Ignored);
|
||||||
}
|
}
|
||||||
@ -274,6 +277,7 @@ void SearchAndReplaceWidget::fillItemsList()
|
|||||||
QTreeWidgetItem *qtwi = new QTreeWidgetItem(m_indi_text_qtwi);
|
QTreeWidgetItem *qtwi = new QTreeWidgetItem(m_indi_text_qtwi);
|
||||||
qtwi->setText(0, iti->toPlainText());
|
qtwi->setText(0, iti->toPlainText());
|
||||||
qtwi->setCheckState(0, Qt::Checked);
|
qtwi->setCheckState(0, Qt::Checked);
|
||||||
|
qtwi->setData(0, Qt::UserRole, iti->toPlainText());
|
||||||
m_text_hash.insert(qtwi, QPointer<IndependentTextItem>(iti));
|
m_text_hash.insert(qtwi, QPointer<IndependentTextItem>(iti));
|
||||||
}
|
}
|
||||||
m_indi_text_qtwi->sortChildren(0, Qt::AscendingOrder);
|
m_indi_text_qtwi->sortChildren(0, Qt::AscendingOrder);
|
||||||
@ -364,19 +368,49 @@ void SearchAndReplaceWidget::search()
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool match = false;
|
bool match = false;
|
||||||
for (QTreeWidgetItem *qtwi : ui->m_tree_widget->findItems(str, Qt::MatchContains | Qt::MatchRecursive)) //Search in all items
|
Qt::MatchFlags flags;
|
||||||
|
|
||||||
|
//Search on the text displayed at column 0 of each item
|
||||||
|
if (ui->m_mode_cb->currentIndex() == 0) {
|
||||||
|
flags = Qt::MatchContains | Qt::MatchRecursive; //Contain string
|
||||||
|
} else {
|
||||||
|
flags = Qt::MatchFixedString | Qt::MatchRecursive; //entire word
|
||||||
|
}
|
||||||
|
if (ui->m_case_sensitive_cb->isChecked()) {
|
||||||
|
flags = flags | Qt::MatchCaseSensitive;
|
||||||
|
}
|
||||||
|
for (QTreeWidgetItem *qtwi : ui->m_tree_widget->findItems(str, flags))
|
||||||
{
|
{
|
||||||
match = true;
|
match = true;
|
||||||
qtwi->setHidden(false);
|
qtwi->setHidden(false);
|
||||||
setVisibleAllParents(qtwi);
|
setVisibleAllParents(qtwi);
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<QTreeWidgetItem *> qtwi_list = m_diagram_hash.keys();
|
//Extended search,
|
||||||
|
//on each string stored in column 0 with role : UserRole
|
||||||
|
QList<QTreeWidgetItem *> qtwi_list;
|
||||||
|
qtwi_list.append(m_diagram_hash.keys());
|
||||||
qtwi_list.append(m_element_hash.keys());
|
qtwi_list.append(m_element_hash.keys());
|
||||||
|
qtwi_list.append(m_text_hash.keys());
|
||||||
for (QTreeWidgetItem *qtwi : qtwi_list)
|
for (QTreeWidgetItem *qtwi : qtwi_list)
|
||||||
{
|
{
|
||||||
QStringList list = qtwi->data(0, Qt::UserRole).toStringList();
|
QStringList list = qtwi->data(0, Qt::UserRole).toStringList();
|
||||||
if (!list.filter(str, Qt::CaseInsensitive).isEmpty())
|
|
||||||
|
if(ui->m_mode_cb->currentIndex() == 0)
|
||||||
|
{
|
||||||
|
//Contain string
|
||||||
|
list = list.filter(str, ui->m_case_sensitive_cb->isChecked()? Qt::CaseSensitive : Qt::CaseInsensitive);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//entire word
|
||||||
|
QRegularExpression rx("\\b" + str + "\\b");
|
||||||
|
if (!ui->m_case_sensitive_cb->isChecked()) {
|
||||||
|
rx.setPatternOptions(QRegularExpression::CaseInsensitiveOption);
|
||||||
|
}
|
||||||
|
list = list.filter(rx);
|
||||||
|
}
|
||||||
|
if (!list.isEmpty())
|
||||||
{
|
{
|
||||||
match = true;
|
match = true;
|
||||||
qtwi->setHidden(false);
|
qtwi->setHidden(false);
|
||||||
@ -971,3 +1005,25 @@ void SearchAndReplaceWidget::on_m_element_pb_clicked()
|
|||||||
m_worker.m_element_context = DiagramContext();
|
m_worker.m_element_context = DiagramContext();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief SearchAndReplaceWidget::on_m_mode_cb_currentIndexChanged
|
||||||
|
* Update the search when user change mode.
|
||||||
|
* @param index
|
||||||
|
*/
|
||||||
|
void SearchAndReplaceWidget::on_m_mode_cb_currentIndexChanged(int index)
|
||||||
|
{
|
||||||
|
Q_UNUSED(index);
|
||||||
|
search();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief SearchAndReplaceWidget::on_m_case_sensitive_cb_stateChanged
|
||||||
|
* Update the search when change the case sensitive
|
||||||
|
* @param arg1
|
||||||
|
*/
|
||||||
|
void SearchAndReplaceWidget::on_m_case_sensitive_cb_stateChanged(int arg1)
|
||||||
|
{
|
||||||
|
Q_UNUSED(arg1);
|
||||||
|
search();
|
||||||
|
}
|
||||||
|
@ -75,6 +75,8 @@ class SearchAndReplaceWidget : public QWidget
|
|||||||
void on_m_replace_pb_clicked();
|
void on_m_replace_pb_clicked();
|
||||||
void on_m_replace_all_pb_clicked();
|
void on_m_replace_all_pb_clicked();
|
||||||
void on_m_element_pb_clicked();
|
void on_m_element_pb_clicked();
|
||||||
|
void on_m_mode_cb_currentIndexChanged(int index);
|
||||||
|
void on_m_case_sensitive_cb_stateChanged(int arg1);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::SearchAndReplaceWidget *ui;
|
Ui::SearchAndReplaceWidget *ui;
|
||||||
|
@ -150,25 +150,35 @@
|
|||||||
</item>
|
</item>
|
||||||
<item row="0" column="3" rowspan="3">
|
<item row="0" column="3" rowspan="3">
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item row="1" column="1" colspan="2">
|
<item row="1" column="0">
|
||||||
<widget class="QLineEdit" name="m_replace_le">
|
<widget class="QLabel" name="m_replace">
|
||||||
<property name="placeholderText">
|
<property name="text">
|
||||||
<string>Champ texte de folio</string>
|
<string>Remplacer :</string>
|
||||||
</property>
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1" colspan="6">
|
||||||
|
<widget class="QLineEdit" name="m_search_le">
|
||||||
<property name="clearButtonEnabled">
|
<property name="clearButtonEnabled">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="3">
|
<item row="1" column="5">
|
||||||
<widget class="QPushButton" name="m_folio_pb">
|
<widget class="QPushButton" name="m_element_pb">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Folio</string>
|
<string>Élément</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1" colspan="5">
|
<item row="1" column="1" colspan="3">
|
||||||
<widget class="QLineEdit" name="m_search_le">
|
<widget class="QLineEdit" name="m_replace_le">
|
||||||
|
<property name="placeholderText">
|
||||||
|
<string>Champ texte de folio</string>
|
||||||
|
</property>
|
||||||
<property name="clearButtonEnabled">
|
<property name="clearButtonEnabled">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
@ -181,17 +191,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="4">
|
<item row="1" column="6">
|
||||||
<widget class="QPushButton" name="m_element_pb">
|
|
||||||
<property name="enabled">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Élément</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="5">
|
|
||||||
<widget class="QPushButton" name="m_conductor_pb">
|
<widget class="QPushButton" name="m_conductor_pb">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
@ -201,14 +201,38 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QLabel" name="m_replace">
|
<widget class="QLabel" name="m_mode">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Remplacer :</string>
|
<string>Mode :</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="4">
|
||||||
|
<widget class="QPushButton" name="m_folio_pb">
|
||||||
|
<property name="text">
|
||||||
|
<string>Folio</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="2" column="1">
|
||||||
|
<widget class="QComboBox" name="m_mode_cb">
|
||||||
|
<property name="frame">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Texte brut</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Mots entiers</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="3">
|
||||||
<spacer name="horizontalSpacer">
|
<spacer name="horizontalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
@ -221,6 +245,13 @@
|
|||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="2" column="2">
|
||||||
|
<widget class="QCheckBox" name="m_case_sensitive_cb">
|
||||||
|
<property name="text">
|
||||||
|
<string>Sensible à la casse</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="4" colspan="2">
|
<item row="2" column="4" colspan="2">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user