View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0017688 | Scribus | Usability | public | 2025-11-17 07:10 | 2025-11-21 21:55 |
| Reporter | bgc | Assigned To | |||
| Priority | normal | Severity | feature | Reproducibility | N/A |
| Status | new | Resolution | open | ||
| Product Version | 1.7.1.svn | ||||
| Summary | 0017688: Advanced selection of items with a paragraph style (draft patch included) | ||||
| Description | I have written a draft patch to: - In the advanced selection dialog box, Include a checkbox to use a paragraph style, and a combo box to contain paragraph style display names. - Try and select multiple items in the document, which have a style name containing the paragraph style name. I wanted to have separate selection boxes for each item, but I don't understand how the overall selection box is created. | ||||
| Tags | No tags attached. | ||||
| Attached Files | nov-17.patch (25,406 bytes)
diff --git a/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp b/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
index bb7163a..c9df02c 100644
--- a/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
+++ b/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
@@ -109,7 +109,7 @@ QString Scribus150Format::saveElements(double xp, double yp, double wp, double h
// Write paragraph styles
names = lists.styleNames();
- styleList = m_Doc->getSortedStyleList();
+ styleList = m_Doc->getSortedParagraphStyleList();
for (int i = 0; i < styleList.count(); ++i)
{
const ParagraphStyle& paragraphStyle = m_Doc->paragraphStyles()[styleList[i]];
@@ -205,7 +205,7 @@ bool Scribus150Format::saveStory(StoryText& story, PageItem* item, QByteArray& d
// Write paragraph styles
names = lists.styleNames();
- styleList = m_Doc->getSortedStyleList();
+ styleList = m_Doc->getSortedParagraphStyleList();
for (int i = 0; i < styleList.count(); ++i)
{
const ParagraphStyle& paragraphStyle = m_Doc->paragraphStyles()[styleList[i]];
@@ -797,7 +797,7 @@ void Scribus150Format::writeHyphenatorLists(ScXmlStreamWriter& docu) const
void Scribus150Format::writeParagraphStyles(ScXmlStreamWriter & docu) const
{
- QList<int> styleList = m_Doc->getSortedStyleList();
+ QList<int> styleList = m_Doc->getSortedParagraphStyleList();
for (int a = 0; a < styleList.count(); ++a)
{
putPStyle(docu, m_Doc->paragraphStyles()[styleList[a]], "STYLE");
diff --git a/scribus/plugins/fileloader/scribus170format/scribus170format_save.cpp b/scribus/plugins/fileloader/scribus170format/scribus170format_save.cpp
index 93435b7..d4f75d7 100644
--- a/scribus/plugins/fileloader/scribus170format/scribus170format_save.cpp
+++ b/scribus/plugins/fileloader/scribus170format/scribus170format_save.cpp
@@ -109,7 +109,7 @@ QString Scribus170Format::saveElements(double xp, double yp, double wp, double h
// Write paragraph styles
names = lists.styleNames();
- styleList = m_Doc->getSortedStyleList();
+ styleList = m_Doc->getSortedParagraphStyleList();
for (int i = 0; i < styleList.count(); ++i)
{
const ParagraphStyle& paragraphStyle = m_Doc->paragraphStyles()[styleList[i]];
@@ -205,7 +205,7 @@ bool Scribus170Format::saveStory(StoryText& story, PageItem* item, QByteArray& d
// Write paragraph styles
names = lists.styleNames();
- styleList = m_Doc->getSortedStyleList();
+ styleList = m_Doc->getSortedParagraphStyleList();
for (int i = 0; i < styleList.count(); ++i)
{
const ParagraphStyle& paragraphStyle = m_Doc->paragraphStyles()[styleList[i]];
@@ -799,7 +799,7 @@ void Scribus170Format::writeHyphenatorLists(ScXmlStreamWriter& docu) const
void Scribus170Format::writeParagraphStyles(ScXmlStreamWriter & docu) const
{
- QList<int> styleList = m_Doc->getSortedStyleList();
+ QList<int> styleList = m_Doc->getSortedParagraphStyleList();
for (int i = 0; i < styleList.count(); ++i)
{
putPStyle(docu, m_Doc->paragraphStyles()[styleList[i]], "STYLE");
diff --git a/scribus/plugins/fileloader/scribus171format/scribus171format_save.cpp b/scribus/plugins/fileloader/scribus171format/scribus171format_save.cpp
index ea195db..943930d 100644
--- a/scribus/plugins/fileloader/scribus171format/scribus171format_save.cpp
+++ b/scribus/plugins/fileloader/scribus171format/scribus171format_save.cpp
@@ -109,7 +109,7 @@ QString Scribus171Format::saveElements(double xp, double yp, double wp, double h
// Write paragraph styles
names = lists.styleNames();
- styleList = m_Doc->getSortedStyleList();
+ styleList = m_Doc->getSortedParagraphStyleList();
for (int i = 0; i < styleList.count(); ++i)
{
const ParagraphStyle& paragraphStyle = m_Doc->paragraphStyles()[styleList[i]];
@@ -205,7 +205,7 @@ bool Scribus171Format::saveStory(StoryText& story, PageItem* item, QByteArray& d
// Write paragraph styles
names = lists.styleNames();
- styleList = m_Doc->getSortedStyleList();
+ styleList = m_Doc->getSortedParagraphStyleList();
for (int i = 0; i < styleList.count(); ++i)
{
const ParagraphStyle& paragraphStyle = m_Doc->paragraphStyles()[styleList[i]];
@@ -794,7 +794,7 @@ void Scribus171Format::writeHyphenatorLists(ScXmlStreamWriter& docu) const
void Scribus171Format::writeParagraphStyles(ScXmlStreamWriter & docu) const
{
- QList<int> styleList = m_Doc->getSortedStyleList();
+ QList<int> styleList = m_Doc->getSortedParagraphStyleList();
for (int i = 0; i < styleList.count(); ++i)
{
putPStyle(docu, m_Doc->paragraphStyles()[styleList[i]], "ParagraphStyle");
diff --git a/scribus/scribus.cpp b/scribus/scribus.cpp
index c1457a8..105e5c0 100644
--- a/scribus/scribus.cpp
+++ b/scribus/scribus.cpp
@@ -2019,7 +2019,7 @@ void ScribusMainWindow::startUpDialog()
{
bool docSet = false;
PrefsContext* docContext = m_prefsManager.prefsFile->getContext("docdirs", false);
- NewDocDialog* dia = new NewDocDialog(this, m_recentDocsList, true, ScCore->getGuiLanguage());
+ NewDocDialog* dia = new NewDocDialog(this, m_recentDocsList, true, ScCore->getGuiLanguage());
if (dia->exec())
{
if (dia->tabSelected() == NewDocDialog::NewDocumentTab)
@@ -4879,8 +4879,8 @@ void ScribusMainWindow::slotEditPastePlainText()
void ScribusMainWindow::SelectAllOnLayer()
{
ColorList UsedC;
- doc->getUsedColors(UsedC);
- QScopedPointer<selectDialog> dia(new selectDialog(this, UsedC, doc->unitIndex()));
+ doc->getUsedColors(UsedC);
+ QScopedPointer<selectDialog> dia(new selectDialog(this, doc, doc->getSortedParagraphStyleList(), UsedC, doc->unitIndex()));
if (!dia->exec())
return;
@@ -4890,6 +4890,15 @@ void ScribusMainWindow::SelectAllOnLayer()
int docCurrentPage = doc->currentPageNumber();
doc->m_Selection->delaySignalsOn();
int range = dia->getSelectionRange();
+ // Attribute flags
+ bool useParagraphStyle = false;
+ bool useType = false;
+ bool useFill = false;
+ bool useLine = false;
+ bool useLWidth = false;
+ bool usePrint = false;
+ bool useLocked = false;
+ bool useResize = false;
for (int i = 0; i < docItemsCount; ++i)
{
currItem = doc->Items->at(i);
@@ -4901,14 +4910,16 @@ void ScribusMainWindow::SelectAllOnLayer()
continue;
if (dia->useAttributes())
{
- bool useType = false;
- bool useFill = false;
- bool useLine = false;
- bool useLWidth = false;
- bool usePrint = false;
- bool useLocked = false;
- bool useResize = false;
- dia->getUsedAttributes(useType, useFill, useLine, useLWidth, usePrint, useLocked, useResize);
+ useParagraphStyle = false;
+ useType = false;
+ useFill = false;
+ useLine = false;
+ useLWidth = false;
+ usePrint = false;
+ useLocked = false;
+ useResize = false;
+ dia->getUsedAttributes(useParagraphStyle, useType, useFill, useLine, useLWidth, usePrint, useLocked, useResize);
+ int ParagraphStyle = 0;
int Type = 0;
QString fill;
QString line;
@@ -4916,8 +4927,23 @@ void ScribusMainWindow::SelectAllOnLayer()
bool Print = false;
bool Locked = false;
bool Resize = false;
- dia->getUsedAttributesValues(Type, fill, line, LWidth, Print, Locked, Resize);
+ dia->getUsedAttributesValues(ParagraphStyle, Type, fill, line, LWidth, Print, Locked, Resize);
LWidth = LWidth / doc->unitRatio();
+ if (useParagraphStyle) {
+ if (ParagraphStyle < m_doc->paragraphStyles().count()) {
+ qDebug() << QString("currItem style name contains \"%1\": %2")
+ .arg(m_doc->paragraphStyles()[ParagraphStyle].displayName())
+ .arg(currItem->currentStyle().displayName().contains(m_doc->paragraphStyles()[ParagraphStyle].displayName()));
+ }
+ // Greedy match for paragraph style name, for now
+ if (ParagraphStyle < m_doc->paragraphStyles().count() &&
+ !currItem->currentStyle().displayName().contains(m_doc->paragraphStyles()[ParagraphStyle].displayName())
+ )
+ {
+ currItem->setFillColor("Black");
+ continue;
+ }
+ }
if (useType && (Type != currItem->realItemType()))
continue;
if (useFill && ((fill != currItem->fillColor()) || (currItem->GrType != 0)))
@@ -4939,8 +4965,8 @@ void ScribusMainWindow::SelectAllOnLayer()
}
}
doc->m_Selection->delaySignalsOff();
- if (doc->m_Selection->count() > 1)
- doc->m_Selection->setGroupRect();
+ if (doc->m_Selection->count() > 1 && !useParagraphStyle)
+ //doc->m_Selection->setGroupRect();
view->DrawNew();
}
diff --git a/scribus/scribusdoc.cpp b/scribus/scribusdoc.cpp
index d5dc3c2..878b685 100644
--- a/scribus/scribusdoc.cpp
+++ b/scribus/scribusdoc.cpp
@@ -1059,7 +1059,7 @@ bool ScribusDoc::charStyleExists(const QString& styleName) const
return m_docCharStyles.contains(styleName);
}
-QList<int> ScribusDoc::getSortedStyleList() const
+QList<int> ScribusDoc::getSortedParagraphStyleList() const
{
QList<int> retList;
for (int i = 0; i < m_docParagraphStyles.count(); ++i)
diff --git a/scribus/scribusdoc.h b/scribus/scribusdoc.h
index 3891138..a6ce362 100644
--- a/scribus/scribusdoc.h
+++ b/scribus/scribusdoc.h
@@ -637,7 +637,7 @@ public:
bool styleExists(const QString& styleName) const;
bool charStyleExists(const QString& styleName) const;
- QList<int> getSortedStyleList() const;
+ QList<int> getSortedParagraphStyleList() const;
QList<int> getSortedCharStyleList() const;
QList<int> getSortedTableStyleList() const;
QList<int> getSortedCellStyleList() const;
diff --git a/scribus/selection.cpp b/scribus/selection.cpp
index 678568a..4b559c9 100644
--- a/scribus/selection.cpp
+++ b/scribus/selection.cpp
@@ -187,7 +187,7 @@ bool Selection::addItem(PageItem *item, bool /*ignoreGUI*/)
item->setSelected(true);
m_sigSelectionChanged = true;
}
- sendSignals();
+ //sendSignals();
return true;
}
return false;
@@ -621,7 +621,7 @@ void Selection::sendSignals(bool guiConnect)
{
if (m_isGUISelection && (m_delaySignals <= 0))
{
- setGroupRect();
+ setGroupRect();
// JG - We should probably add an m_sigSelectionChanged here
// to avoid multiple connectItemToGUI() if sendSignals() is called
// several times successively (but does that happen?)
diff --git a/scribus/ui/selectobjects.cpp b/scribus/ui/selectobjects.cpp
index e0b3e53..29b2276 100644
--- a/scribus/ui/selectobjects.cpp
+++ b/scribus/ui/selectobjects.cpp
@@ -28,11 +28,15 @@ for which a new license (GPL+exception) is in place.
#include "commonstrings.h"
#include "iconmanager.h"
-selectDialog::selectDialog(QWidget* parent, const ColorList &availableColors, int unitIndex) : QDialog(parent)
+selectDialog::selectDialog(QWidget* parent, ScribusDoc* document, const QList<int> &availableParagraphStyles, const ColorList &availableColors, int unitIndex) : QDialog(parent)
{
setupUi(this);
setModal(true);
setWindowIcon(IconManager::instance().loadIcon("app-icon"));
+ m_paragraphStyles = availableParagraphStyles;
+ for (auto &styleId : availableParagraphStyles) {
+ paragraphStyleCombo->addItem(document->paragraphStyles()[styleId].displayName());
+ }
backgroundCombo->setPixmapType(ColorCombo::fancyPixmaps);
backgroundCombo->setColors(availableColors, true);
lineCombo->setPixmapType(ColorCombo::fancyPixmaps);
@@ -59,8 +63,9 @@ bool selectDialog::useAttributes() const
return attributeGroup->isChecked();
}
-void selectDialog::getUsedAttributes(bool &Type, bool &Fill, bool &Line, bool &LWidth, bool &Print, bool &Locked, bool &Resize)
+void selectDialog::getUsedAttributes(bool &ParagraphStyle, bool &Type, bool &Fill, bool &Line, bool &LWidth, bool &Print, bool &Locked, bool &Resize)
{
+ ParagraphStyle = useParagraphStyle->isChecked();
Type = useItemType->isChecked();
Fill = useFillColor->isChecked();
Line = useLineColor->isChecked();
@@ -70,8 +75,12 @@ void selectDialog::getUsedAttributes(bool &Type, bool &Fill, bool &Line, bool &L
Resize = useResizeState->isChecked();
}
-void selectDialog::getUsedAttributesValues(int &Type, QString &Fill, QString &Line, double &LWidth, bool &Print, bool &Locked, bool &Resize)
+void selectDialog::getUsedAttributesValues(int &ParagraphStyle, int &Type, QString &Fill, QString &Line, double &LWidth, bool &Print, bool &Locked, bool &Resize)
{
+ if (useParagraphStyle->isChecked())
+ {
+ ParagraphStyle = m_paragraphStyles.at(paragraphStyleCombo->currentIndex());
+ }
if (useItemType->isChecked())
{
Type = itemTypeCombo->currentIndex();
diff --git a/scribus/ui/selectobjects.h b/scribus/ui/selectobjects.h
index 1d473e2..768baed 100644
--- a/scribus/ui/selectobjects.h
+++ b/scribus/ui/selectobjects.h
@@ -37,13 +37,15 @@ class SCRIBUS_API selectDialog : public QDialog, Ui::selectDialog
Q_OBJECT
public:
- selectDialog(QWidget* parent, const ColorList &availableColors, int unitIndex);
+ selectDialog(QWidget* parent, ScribusDoc* document, const QList<int> &availableParagraphStyles, const ColorList &availableColors, int unitIndex);
~selectDialog() {};
int getSelectionRange() const;
bool useAttributes() const;
- void getUsedAttributes(bool &Type, bool &Fill, bool &Line, bool &LWidth, bool &Print, bool &Locked, bool &Resize);
- void getUsedAttributesValues(int &Type, QString &Fill, QString &Line, double &LWidth, bool &Print, bool &Locked, bool &Resize);
+ void getUsedAttributes(bool &ParagraphStyle, bool &Type, bool &Fill, bool &Line, bool &LWidth, bool &Print, bool &Locked, bool &Resize);
+ void getUsedAttributesValues(int &ParagraphStyle, int &Type, QString &Fill, QString &Line, double &LWidth, bool &Print, bool &Locked, bool &Resize);
+private:
+ QList<int> m_paragraphStyles;
};
#endif
diff --git a/scribus/ui/selectobjects.ui b/scribus/ui/selectobjects.ui
index 1af2fea..ff8d6d2 100644
--- a/scribus/ui/selectobjects.ui
+++ b/scribus/ui/selectobjects.ui
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>423</width>
- <height>321</height>
+ <width>457</width>
+ <height>451</height>
</rect>
</property>
<property name="sizePolicy">
@@ -20,30 +20,30 @@
<string>Select All Items</string>
</property>
<property name="modal">
- <bool>true</bool>
- </property>
- <layout class="QVBoxLayout">
- <property name="leftMargin">
- <number>9</number>
- </property>
- <property name="topMargin">
- <number>9</number>
- </property>
- <property name="rightMargin">
- <number>9</number>
- </property>
- <property name="bottomMargin">
- <number>9</number>
- </property>
- <item>
- <widget class="QGroupBox" name="rangeGroup">
+ <bool>true</bool>
+ </property>
+ <layout class="QVBoxLayout">
+ <property name="leftMargin">
+ <number>9</number>
+ </property>
+ <property name="topMargin">
+ <number>9</number>
+ </property>
+ <property name="rightMargin">
+ <number>9</number>
+ </property>
+ <property name="bottomMargin">
+ <number>9</number>
+ </property>
+ <item>
+ <widget class="QGroupBox" name="rangeGroup">
<property name="title">
- <string>Select All Items</string>
- </property>
- <layout class="QHBoxLayout">
- <item>
- <widget class="QRadioButton" name="buttonCurrentPage">
- <property name="toolTip">
+ <string>Select All Items</string>
+ </property>
+ <layout class="QHBoxLayout">
+ <item>
+ <widget class="QRadioButton" name="buttonCurrentPage">
+ <property name="toolTip">
<string>Select all items on the current page</string>
</property>
<property name="text">
@@ -89,12 +89,56 @@
<bool>true</bool>
</property>
<property name="checked">
- <bool>false</bool>
- </property>
- <layout class="QGridLayout">
- <item row="0" column="0">
- <widget class="QCheckBox" name="useItemType">
- <property name="toolTip">
+ <bool>false</bool>
+ </property>
+ <layout class="QGridLayout">
+ <item row="6" column="1">
+ <widget class="QComboBox" name="lockStateCombo">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="currentIndex">
+ <number>1</number>
+ </property>
+ <item>
+ <property name="text">
+ <string>Yes</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>No</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="ColorCombo" name="backgroundCombo">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="1">
+ <widget class="QComboBox" name="resizeStateCombo">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <item>
+ <property name="text">
+ <string>Yes</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>No</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QCheckBox" name="useItemType">
+ <property name="toolTip">
<string>Select based on item type</string>
</property>
<property name="text">
@@ -102,7 +146,34 @@
</property>
</widget>
</item>
- <item row="0" column="1">
+ <item row="5" column="1">
+ <widget class="QComboBox" name="printStateCombo">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <item>
+ <property name="text">
+ <string>Yes</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>No</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QCheckBox" name="useFillColor">
+ <property name="toolTip">
+ <string>Select based on the color that the item is filled with</string>
+ </property>
+ <property name="text">
+ <string>Fill Color</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
<widget class="QComboBox" name="itemTypeCombo">
<property name="enabled">
<bool>false</bool>
@@ -144,139 +215,85 @@
</item>
</widget>
</item>
- <item row="1" column="0">
- <widget class="QCheckBox" name="useFillColor">
+ <item row="4" column="0">
+ <widget class="QCheckBox" name="useLineWidth">
<property name="toolTip">
- <string>Select based on the color that the item is filled with</string>
+ <string>Select based on the width of the line of the item</string>
</property>
<property name="text">
- <string>Fill Color</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="ColorCombo" name="backgroundCombo">
- <property name="enabled">
- <bool>false</bool>
+ <string>Line Width</string>
</property>
</widget>
</item>
- <item row="2" column="0">
- <widget class="QCheckBox" name="useLineColor">
+ <item row="5" column="0">
+ <widget class="QCheckBox" name="usePrintState">
<property name="toolTip">
- <string>Select based on the color of the line or outline</string>
+ <string>Select items based on whether they will be printed or not</string>
</property>
<property name="text">
- <string>Line Color</string>
+ <string>Printable</string>
</property>
</widget>
</item>
- <item row="2" column="1">
+ <item row="3" column="1">
<widget class="ColorCombo" name="lineCombo">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
- <item row="3" column="0">
- <widget class="QCheckBox" name="useLineWidth">
+ <item row="6" column="0">
+ <widget class="QCheckBox" name="useLockedState">
<property name="toolTip">
- <string>Select based on the width of the line of the item</string>
+ <string>Select items based on their locked status</string>
</property>
<property name="text">
- <string>Line Width</string>
+ <string>Locked</string>
</property>
</widget>
</item>
- <item row="3" column="1">
+ <item row="4" column="1">
<widget class="ScrSpinBox" name="lineWidthSpin">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
- <item row="4" column="0">
- <widget class="QCheckBox" name="usePrintState">
+ <item row="3" column="0">
+ <widget class="QCheckBox" name="useLineColor">
<property name="toolTip">
- <string>Select items based on whether they will be printed or not</string>
+ <string>Select based on the color of the line or outline</string>
</property>
<property name="text">
- <string>Printable</string>
- </property>
- </widget>
- </item>
- <item row="4" column="1">
- <widget class="QComboBox" name="printStateCombo">
- <property name="enabled">
- <bool>false</bool>
+ <string>Line Color</string>
</property>
- <item>
- <property name="text">
- <string>Yes</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>No</string>
- </property>
- </item>
</widget>
</item>
- <item row="5" column="0">
- <widget class="QCheckBox" name="useLockedState">
+ <item row="7" column="0">
+ <widget class="QCheckBox" name="useResizeState">
<property name="toolTip">
- <string>Select items based on their locked status</string>
+ <string>Select items based on whether they have their size locked or not</string>
</property>
<property name="text">
- <string>Locked</string>
- </property>
- </widget>
- </item>
- <item row="5" column="1">
- <widget class="QComboBox" name="lockStateCombo">
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="currentIndex">
- <number>1</number>
+ <string>Resizable</string>
</property>
- <item>
- <property name="text">
- <string>Yes</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>No</string>
- </property>
- </item>
</widget>
</item>
- <item row="6" column="0">
- <widget class="QCheckBox" name="useResizeState">
+ <item row="0" column="0">
+ <widget class="QCheckBox" name="useParagraphStyle">
<property name="toolTip">
- <string>Select items based on whether they have their size locked or not</string>
+ <string>Select based on item type</string>
</property>
<property name="text">
- <string>Resizable</string>
+ <string>Paragraph Style</string>
</property>
</widget>
</item>
- <item row="6" column="1">
- <widget class="QComboBox" name="resizeStateCombo">
+ <item row="0" column="1">
+ <widget class="QComboBox" name="paragraphStyleCombo">
<property name="enabled">
<bool>false</bool>
</property>
- <item>
- <property name="text">
- <string>Yes</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>No</string>
- </property>
- </item>
</widget>
</item>
</layout>
@@ -285,10 +302,10 @@
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
- <enum>Qt::Horizontal</enum>
+ <enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="standardButtons">
- <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ <set>QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok</set>
</property>
</widget>
</item>
@@ -452,5 +469,21 @@
</hint>
</hints>
</connection>
+ <connection>
+ <sender>useParagraphStyle</sender>
+ <signal>clicked(bool)</signal>
+ <receiver>paragraphStyleCombo</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>123</x>
+ <y>159</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>333</x>
+ <y>159</y>
+ </hint>
+ </hints>
+ </connection>
</connections>
</ui>
| ||||
| Patch | Yes | ||||
|
|
Updated patch, seems to be working now. nov-20.patch (28,411 bytes)
diff --git a/scribus/CMakeLists.txt b/scribus/CMakeLists.txt
index c565798..5cf8856 100644
--- a/scribus/CMakeLists.txt
+++ b/scribus/CMakeLists.txt
@@ -147,7 +147,10 @@ else()
endif()
message(STATUS "Autogen Include Path: ${SCRIBUS_AUTOGEN_INCLUDE_PATH}")
+
+
if(HAVE_OSG)
+
add_executable(${EXE_NAME}
${SCRIBUS_MAIN_CPP}
${SCRIBUS_SOURCES}
@@ -160,8 +163,9 @@ if(HAVE_OSG)
${SCRIBUS_WIN32_ONLY_SOURCES}
${GESTURE_FRAME_PREVIEW_SOURCES}
${SCRIBUS_PRC_SOURCES}
- )
+ )
else()
+
add_executable(${EXE_NAME}
${SCRIBUS_MAIN_CPP}
${SCRIBUS_SOURCES}
@@ -173,7 +177,7 @@ else()
${SCRIBUS_TEXT_SOURCES}
${SCRIBUS_WIN32_ONLY_SOURCES}
${GESTURE_FRAME_PREVIEW_SOURCES}
- )
+ )
endif ()
if(WANT_PCH)
diff --git a/scribus/canvas.cpp b/scribus/canvas.cpp
index e3fa486..d5b99a1 100644
--- a/scribus/canvas.cpp
+++ b/scribus/canvas.cpp
@@ -983,10 +983,10 @@ void Canvas::drawContents(QPainter *psx, int clipx, int clipy, int clipw, int cl
if (!m_doc->masterPageMode())
{
- drawBackgroundPageOutlines(painter, clipx, clipy, clipw, cliph);
+ drawBackgroundPageOutlines(painter, clipx, clipy, clipw, cliph);
m_viewMode.linkedFramesToShow.clear();
QRectF clip(clipx, clipy, clipw, cliph);
- DrawPageBorder(painter, clip);
+ DrawPageBorder(painter, clip);
if (m_viewMode.viewAsPreview)
{
FPointArray PoLine;
diff --git a/scribus/canvasmode.cpp b/scribus/canvasmode.cpp
index b6a9c24..f561b8f 100644
--- a/scribus/canvasmode.cpp
+++ b/scribus/canvasmode.cpp
@@ -205,10 +205,10 @@ void CanvasMode::drawSelectionHandles(QPainter *psx, QRectF selectionRect, bool
double w = selectionRect.width();
double h = selectionRect.height();
- QPen p = m_pen["selection-handle"];
+ QPen p = m_pen["selection-handle"];
if (insideGroup)
- p = m_pen["selection-group-inside"];
+ p = m_pen["selection-group-inside"];
drawSelectionHandle(psx, QPointF(x, y), p, m_canvas->scale());
drawSelectionHandle(psx, QPointF(x + w / 2.0, y), p, m_canvas->scale());
@@ -264,30 +264,30 @@ void CanvasMode::drawSelection(QPainter* psx, bool drawHandles)
x = 0;
y = 0;
}
- psx->setPen(m_pen["selection-group-inside"]);
- psx->setBrush(m_brush["selection-group-inside"]);
- psx->drawRect(QRectF(x, y, w, h));
+ psx->setPen(m_pen["selection-group"]);
+ psx->setBrush(m_brush["selection-group-inside"]);
+ psx->drawRect(QRectF(x, y, w, h));
psx->restore();
}
- }
+ }
+
psx->save();
psx->setPen(m_pen["selection-group"]);
double x, y, w, h;
m_doc->m_Selection->getVisualGroupRect(&x, &y, &w, &h);
-
psx->translate(x,y);
x = 0;
y = 0;
-
- psx->setPen(m_pen["selection-group"]);
+ psx->setPen(m_pen["selection-group"]);
+ psx->setPen(QPen(QBrush(Qt::green),5.0));
psx->setBrush(m_brush["selection-group"]);
- psx->drawRect(QRectF(x, y, w, h));
- if (drawHandles)
- drawSelectionHandles(psx, QRectF(x, y, w, h));
- psx->restore();
+ //psx->drawRect(QRectF(x, y, w, h));
+ if (drawHandles)
+ drawSelectionHandles(psx, QRectF(x, y, w, h));
+ psx->restore();
}
else if (m_doc->m_Selection->count() != 0)
- {
+ {
int docSelectionCount = m_doc->m_Selection->count();
PageItem *currItem;
for (int a = 0; a < docSelectionCount; ++a)
diff --git a/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp b/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
index bb7163a..c9df02c 100644
--- a/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
+++ b/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
@@ -109,7 +109,7 @@ QString Scribus150Format::saveElements(double xp, double yp, double wp, double h
// Write paragraph styles
names = lists.styleNames();
- styleList = m_Doc->getSortedStyleList();
+ styleList = m_Doc->getSortedParagraphStyleList();
for (int i = 0; i < styleList.count(); ++i)
{
const ParagraphStyle& paragraphStyle = m_Doc->paragraphStyles()[styleList[i]];
@@ -205,7 +205,7 @@ bool Scribus150Format::saveStory(StoryText& story, PageItem* item, QByteArray& d
// Write paragraph styles
names = lists.styleNames();
- styleList = m_Doc->getSortedStyleList();
+ styleList = m_Doc->getSortedParagraphStyleList();
for (int i = 0; i < styleList.count(); ++i)
{
const ParagraphStyle& paragraphStyle = m_Doc->paragraphStyles()[styleList[i]];
@@ -797,7 +797,7 @@ void Scribus150Format::writeHyphenatorLists(ScXmlStreamWriter& docu) const
void Scribus150Format::writeParagraphStyles(ScXmlStreamWriter & docu) const
{
- QList<int> styleList = m_Doc->getSortedStyleList();
+ QList<int> styleList = m_Doc->getSortedParagraphStyleList();
for (int a = 0; a < styleList.count(); ++a)
{
putPStyle(docu, m_Doc->paragraphStyles()[styleList[a]], "STYLE");
diff --git a/scribus/plugins/fileloader/scribus170format/scribus170format_save.cpp b/scribus/plugins/fileloader/scribus170format/scribus170format_save.cpp
index 93435b7..d4f75d7 100644
--- a/scribus/plugins/fileloader/scribus170format/scribus170format_save.cpp
+++ b/scribus/plugins/fileloader/scribus170format/scribus170format_save.cpp
@@ -109,7 +109,7 @@ QString Scribus170Format::saveElements(double xp, double yp, double wp, double h
// Write paragraph styles
names = lists.styleNames();
- styleList = m_Doc->getSortedStyleList();
+ styleList = m_Doc->getSortedParagraphStyleList();
for (int i = 0; i < styleList.count(); ++i)
{
const ParagraphStyle& paragraphStyle = m_Doc->paragraphStyles()[styleList[i]];
@@ -205,7 +205,7 @@ bool Scribus170Format::saveStory(StoryText& story, PageItem* item, QByteArray& d
// Write paragraph styles
names = lists.styleNames();
- styleList = m_Doc->getSortedStyleList();
+ styleList = m_Doc->getSortedParagraphStyleList();
for (int i = 0; i < styleList.count(); ++i)
{
const ParagraphStyle& paragraphStyle = m_Doc->paragraphStyles()[styleList[i]];
@@ -799,7 +799,7 @@ void Scribus170Format::writeHyphenatorLists(ScXmlStreamWriter& docu) const
void Scribus170Format::writeParagraphStyles(ScXmlStreamWriter & docu) const
{
- QList<int> styleList = m_Doc->getSortedStyleList();
+ QList<int> styleList = m_Doc->getSortedParagraphStyleList();
for (int i = 0; i < styleList.count(); ++i)
{
putPStyle(docu, m_Doc->paragraphStyles()[styleList[i]], "STYLE");
diff --git a/scribus/plugins/fileloader/scribus171format/scribus171format_save.cpp b/scribus/plugins/fileloader/scribus171format/scribus171format_save.cpp
index ea195db..943930d 100644
--- a/scribus/plugins/fileloader/scribus171format/scribus171format_save.cpp
+++ b/scribus/plugins/fileloader/scribus171format/scribus171format_save.cpp
@@ -109,7 +109,7 @@ QString Scribus171Format::saveElements(double xp, double yp, double wp, double h
// Write paragraph styles
names = lists.styleNames();
- styleList = m_Doc->getSortedStyleList();
+ styleList = m_Doc->getSortedParagraphStyleList();
for (int i = 0; i < styleList.count(); ++i)
{
const ParagraphStyle& paragraphStyle = m_Doc->paragraphStyles()[styleList[i]];
@@ -205,7 +205,7 @@ bool Scribus171Format::saveStory(StoryText& story, PageItem* item, QByteArray& d
// Write paragraph styles
names = lists.styleNames();
- styleList = m_Doc->getSortedStyleList();
+ styleList = m_Doc->getSortedParagraphStyleList();
for (int i = 0; i < styleList.count(); ++i)
{
const ParagraphStyle& paragraphStyle = m_Doc->paragraphStyles()[styleList[i]];
@@ -794,7 +794,7 @@ void Scribus171Format::writeHyphenatorLists(ScXmlStreamWriter& docu) const
void Scribus171Format::writeParagraphStyles(ScXmlStreamWriter & docu) const
{
- QList<int> styleList = m_Doc->getSortedStyleList();
+ QList<int> styleList = m_Doc->getSortedParagraphStyleList();
for (int i = 0; i < styleList.count(); ++i)
{
putPStyle(docu, m_Doc->paragraphStyles()[styleList[i]], "ParagraphStyle");
diff --git a/scribus/scribus.cpp b/scribus/scribus.cpp
index c1457a8..e93a6ca 100644
--- a/scribus/scribus.cpp
+++ b/scribus/scribus.cpp
@@ -2019,7 +2019,7 @@ void ScribusMainWindow::startUpDialog()
{
bool docSet = false;
PrefsContext* docContext = m_prefsManager.prefsFile->getContext("docdirs", false);
- NewDocDialog* dia = new NewDocDialog(this, m_recentDocsList, true, ScCore->getGuiLanguage());
+ NewDocDialog* dia = new NewDocDialog(this, m_recentDocsList, true, ScCore->getGuiLanguage());
if (dia->exec())
{
if (dia->tabSelected() == NewDocDialog::NewDocumentTab)
@@ -4879,17 +4879,25 @@ void ScribusMainWindow::slotEditPastePlainText()
void ScribusMainWindow::SelectAllOnLayer()
{
ColorList UsedC;
- doc->getUsedColors(UsedC);
- QScopedPointer<selectDialog> dia(new selectDialog(this, UsedC, doc->unitIndex()));
+ doc->getUsedColors(UsedC);
+ QScopedPointer<selectDialog> dia(new selectDialog(this, doc, doc->getSortedParagraphStyleList(), UsedC, doc->unitIndex()));
if (!dia->exec())
return;
-
PageItem *currItem;
view->deselectItems();
int docItemsCount = doc->Items->count();
int docCurrentPage = doc->currentPageNumber();
doc->m_Selection->delaySignalsOn();
int range = dia->getSelectionRange();
+ // Attribute flags
+ bool useParagraphStyle = false;
+ bool useType = false;
+ bool useFill = false;
+ bool useLine = false;
+ bool useLWidth = false;
+ bool usePrint = false;
+ bool useLocked = false;
+ bool useResize = false;
for (int i = 0; i < docItemsCount; ++i)
{
currItem = doc->Items->at(i);
@@ -4901,14 +4909,16 @@ void ScribusMainWindow::SelectAllOnLayer()
continue;
if (dia->useAttributes())
{
- bool useType = false;
- bool useFill = false;
- bool useLine = false;
- bool useLWidth = false;
- bool usePrint = false;
- bool useLocked = false;
- bool useResize = false;
- dia->getUsedAttributes(useType, useFill, useLine, useLWidth, usePrint, useLocked, useResize);
+ useParagraphStyle = false;
+ useType = false;
+ useFill = false;
+ useLine = false;
+ useLWidth = false;
+ usePrint = false;
+ useLocked = false;
+ useResize = false;
+ dia->getUsedAttributes(useParagraphStyle, useType, useFill, useLine, useLWidth, usePrint, useLocked, useResize);
+ int ParagraphStyle = 0;
int Type = 0;
QString fill;
QString line;
@@ -4916,8 +4926,19 @@ void ScribusMainWindow::SelectAllOnLayer()
bool Print = false;
bool Locked = false;
bool Resize = false;
- dia->getUsedAttributesValues(Type, fill, line, LWidth, Print, Locked, Resize);
+ dia->getUsedAttributesValues(ParagraphStyle, Type, fill, line, LWidth, Print, Locked, Resize);
LWidth = LWidth / doc->unitRatio();
+ if (useParagraphStyle) {
+ // Greedy match for paragraph style name, for now
+ // m_doc isn't current; use doc
+ if (ParagraphStyle < doc->paragraphStyles().count() &&
+ !currItem->currentStyle().displayName().contains(doc->paragraphStyles()[ParagraphStyle].displayName())
+ )
+ {
+ //currItem->setFillColor("Black");
+ continue;
+ }
+ }
if (useType && (Type != currItem->realItemType()))
continue;
if (useFill && ((fill != currItem->fillColor()) || (currItem->GrType != 0)))
@@ -4939,8 +4960,9 @@ void ScribusMainWindow::SelectAllOnLayer()
}
}
doc->m_Selection->delaySignalsOff();
- if (doc->m_Selection->count() > 1)
- doc->m_Selection->setGroupRect();
+ if (doc->m_Selection->count() > 1) {
+ doc->m_Selection->setGroupRect();
+ }
view->DrawNew();
}
diff --git a/scribus/scribusdoc.cpp b/scribus/scribusdoc.cpp
index d5dc3c2..878b685 100644
--- a/scribus/scribusdoc.cpp
+++ b/scribus/scribusdoc.cpp
@@ -1059,7 +1059,7 @@ bool ScribusDoc::charStyleExists(const QString& styleName) const
return m_docCharStyles.contains(styleName);
}
-QList<int> ScribusDoc::getSortedStyleList() const
+QList<int> ScribusDoc::getSortedParagraphStyleList() const
{
QList<int> retList;
for (int i = 0; i < m_docParagraphStyles.count(); ++i)
diff --git a/scribus/scribusdoc.h b/scribus/scribusdoc.h
index 3891138..a6ce362 100644
--- a/scribus/scribusdoc.h
+++ b/scribus/scribusdoc.h
@@ -637,7 +637,7 @@ public:
bool styleExists(const QString& styleName) const;
bool charStyleExists(const QString& styleName) const;
- QList<int> getSortedStyleList() const;
+ QList<int> getSortedParagraphStyleList() const;
QList<int> getSortedCharStyleList() const;
QList<int> getSortedTableStyleList() const;
QList<int> getSortedCellStyleList() const;
diff --git a/scribus/selection.cpp b/scribus/selection.cpp
index 678568a..4b559c9 100644
--- a/scribus/selection.cpp
+++ b/scribus/selection.cpp
@@ -187,7 +187,7 @@ bool Selection::addItem(PageItem *item, bool /*ignoreGUI*/)
item->setSelected(true);
m_sigSelectionChanged = true;
}
- sendSignals();
+ //sendSignals();
return true;
}
return false;
@@ -621,7 +621,7 @@ void Selection::sendSignals(bool guiConnect)
{
if (m_isGUISelection && (m_delaySignals <= 0))
{
- setGroupRect();
+ setGroupRect();
// JG - We should probably add an m_sigSelectionChanged here
// to avoid multiple connectItemToGUI() if sendSignals() is called
// several times successively (but does that happen?)
diff --git a/scribus/ui/selectobjects.cpp b/scribus/ui/selectobjects.cpp
index e0b3e53..29b2276 100644
--- a/scribus/ui/selectobjects.cpp
+++ b/scribus/ui/selectobjects.cpp
@@ -28,11 +28,15 @@ for which a new license (GPL+exception) is in place.
#include "commonstrings.h"
#include "iconmanager.h"
-selectDialog::selectDialog(QWidget* parent, const ColorList &availableColors, int unitIndex) : QDialog(parent)
+selectDialog::selectDialog(QWidget* parent, ScribusDoc* document, const QList<int> &availableParagraphStyles, const ColorList &availableColors, int unitIndex) : QDialog(parent)
{
setupUi(this);
setModal(true);
setWindowIcon(IconManager::instance().loadIcon("app-icon"));
+ m_paragraphStyles = availableParagraphStyles;
+ for (auto &styleId : availableParagraphStyles) {
+ paragraphStyleCombo->addItem(document->paragraphStyles()[styleId].displayName());
+ }
backgroundCombo->setPixmapType(ColorCombo::fancyPixmaps);
backgroundCombo->setColors(availableColors, true);
lineCombo->setPixmapType(ColorCombo::fancyPixmaps);
@@ -59,8 +63,9 @@ bool selectDialog::useAttributes() const
return attributeGroup->isChecked();
}
-void selectDialog::getUsedAttributes(bool &Type, bool &Fill, bool &Line, bool &LWidth, bool &Print, bool &Locked, bool &Resize)
+void selectDialog::getUsedAttributes(bool &ParagraphStyle, bool &Type, bool &Fill, bool &Line, bool &LWidth, bool &Print, bool &Locked, bool &Resize)
{
+ ParagraphStyle = useParagraphStyle->isChecked();
Type = useItemType->isChecked();
Fill = useFillColor->isChecked();
Line = useLineColor->isChecked();
@@ -70,8 +75,12 @@ void selectDialog::getUsedAttributes(bool &Type, bool &Fill, bool &Line, bool &L
Resize = useResizeState->isChecked();
}
-void selectDialog::getUsedAttributesValues(int &Type, QString &Fill, QString &Line, double &LWidth, bool &Print, bool &Locked, bool &Resize)
+void selectDialog::getUsedAttributesValues(int &ParagraphStyle, int &Type, QString &Fill, QString &Line, double &LWidth, bool &Print, bool &Locked, bool &Resize)
{
+ if (useParagraphStyle->isChecked())
+ {
+ ParagraphStyle = m_paragraphStyles.at(paragraphStyleCombo->currentIndex());
+ }
if (useItemType->isChecked())
{
Type = itemTypeCombo->currentIndex();
diff --git a/scribus/ui/selectobjects.h b/scribus/ui/selectobjects.h
index 1d473e2..768baed 100644
--- a/scribus/ui/selectobjects.h
+++ b/scribus/ui/selectobjects.h
@@ -37,13 +37,15 @@ class SCRIBUS_API selectDialog : public QDialog, Ui::selectDialog
Q_OBJECT
public:
- selectDialog(QWidget* parent, const ColorList &availableColors, int unitIndex);
+ selectDialog(QWidget* parent, ScribusDoc* document, const QList<int> &availableParagraphStyles, const ColorList &availableColors, int unitIndex);
~selectDialog() {};
int getSelectionRange() const;
bool useAttributes() const;
- void getUsedAttributes(bool &Type, bool &Fill, bool &Line, bool &LWidth, bool &Print, bool &Locked, bool &Resize);
- void getUsedAttributesValues(int &Type, QString &Fill, QString &Line, double &LWidth, bool &Print, bool &Locked, bool &Resize);
+ void getUsedAttributes(bool &ParagraphStyle, bool &Type, bool &Fill, bool &Line, bool &LWidth, bool &Print, bool &Locked, bool &Resize);
+ void getUsedAttributesValues(int &ParagraphStyle, int &Type, QString &Fill, QString &Line, double &LWidth, bool &Print, bool &Locked, bool &Resize);
+private:
+ QList<int> m_paragraphStyles;
};
#endif
diff --git a/scribus/ui/selectobjects.ui b/scribus/ui/selectobjects.ui
index 1af2fea..ff8d6d2 100644
--- a/scribus/ui/selectobjects.ui
+++ b/scribus/ui/selectobjects.ui
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>423</width>
- <height>321</height>
+ <width>457</width>
+ <height>451</height>
</rect>
</property>
<property name="sizePolicy">
@@ -20,30 +20,30 @@
<string>Select All Items</string>
</property>
<property name="modal">
- <bool>true</bool>
- </property>
- <layout class="QVBoxLayout">
- <property name="leftMargin">
- <number>9</number>
- </property>
- <property name="topMargin">
- <number>9</number>
- </property>
- <property name="rightMargin">
- <number>9</number>
- </property>
- <property name="bottomMargin">
- <number>9</number>
- </property>
- <item>
- <widget class="QGroupBox" name="rangeGroup">
+ <bool>true</bool>
+ </property>
+ <layout class="QVBoxLayout">
+ <property name="leftMargin">
+ <number>9</number>
+ </property>
+ <property name="topMargin">
+ <number>9</number>
+ </property>
+ <property name="rightMargin">
+ <number>9</number>
+ </property>
+ <property name="bottomMargin">
+ <number>9</number>
+ </property>
+ <item>
+ <widget class="QGroupBox" name="rangeGroup">
<property name="title">
- <string>Select All Items</string>
- </property>
- <layout class="QHBoxLayout">
- <item>
- <widget class="QRadioButton" name="buttonCurrentPage">
- <property name="toolTip">
+ <string>Select All Items</string>
+ </property>
+ <layout class="QHBoxLayout">
+ <item>
+ <widget class="QRadioButton" name="buttonCurrentPage">
+ <property name="toolTip">
<string>Select all items on the current page</string>
</property>
<property name="text">
@@ -89,12 +89,56 @@
<bool>true</bool>
</property>
<property name="checked">
- <bool>false</bool>
- </property>
- <layout class="QGridLayout">
- <item row="0" column="0">
- <widget class="QCheckBox" name="useItemType">
- <property name="toolTip">
+ <bool>false</bool>
+ </property>
+ <layout class="QGridLayout">
+ <item row="6" column="1">
+ <widget class="QComboBox" name="lockStateCombo">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="currentIndex">
+ <number>1</number>
+ </property>
+ <item>
+ <property name="text">
+ <string>Yes</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>No</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="ColorCombo" name="backgroundCombo">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="1">
+ <widget class="QComboBox" name="resizeStateCombo">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <item>
+ <property name="text">
+ <string>Yes</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>No</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QCheckBox" name="useItemType">
+ <property name="toolTip">
<string>Select based on item type</string>
</property>
<property name="text">
@@ -102,7 +146,34 @@
</property>
</widget>
</item>
- <item row="0" column="1">
+ <item row="5" column="1">
+ <widget class="QComboBox" name="printStateCombo">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <item>
+ <property name="text">
+ <string>Yes</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>No</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QCheckBox" name="useFillColor">
+ <property name="toolTip">
+ <string>Select based on the color that the item is filled with</string>
+ </property>
+ <property name="text">
+ <string>Fill Color</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
<widget class="QComboBox" name="itemTypeCombo">
<property name="enabled">
<bool>false</bool>
@@ -144,139 +215,85 @@
</item>
</widget>
</item>
- <item row="1" column="0">
- <widget class="QCheckBox" name="useFillColor">
+ <item row="4" column="0">
+ <widget class="QCheckBox" name="useLineWidth">
<property name="toolTip">
- <string>Select based on the color that the item is filled with</string>
+ <string>Select based on the width of the line of the item</string>
</property>
<property name="text">
- <string>Fill Color</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="ColorCombo" name="backgroundCombo">
- <property name="enabled">
- <bool>false</bool>
+ <string>Line Width</string>
</property>
</widget>
</item>
- <item row="2" column="0">
- <widget class="QCheckBox" name="useLineColor">
+ <item row="5" column="0">
+ <widget class="QCheckBox" name="usePrintState">
<property name="toolTip">
- <string>Select based on the color of the line or outline</string>
+ <string>Select items based on whether they will be printed or not</string>
</property>
<property name="text">
- <string>Line Color</string>
+ <string>Printable</string>
</property>
</widget>
</item>
- <item row="2" column="1">
+ <item row="3" column="1">
<widget class="ColorCombo" name="lineCombo">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
- <item row="3" column="0">
- <widget class="QCheckBox" name="useLineWidth">
+ <item row="6" column="0">
+ <widget class="QCheckBox" name="useLockedState">
<property name="toolTip">
- <string>Select based on the width of the line of the item</string>
+ <string>Select items based on their locked status</string>
</property>
<property name="text">
- <string>Line Width</string>
+ <string>Locked</string>
</property>
</widget>
</item>
- <item row="3" column="1">
+ <item row="4" column="1">
<widget class="ScrSpinBox" name="lineWidthSpin">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
- <item row="4" column="0">
- <widget class="QCheckBox" name="usePrintState">
+ <item row="3" column="0">
+ <widget class="QCheckBox" name="useLineColor">
<property name="toolTip">
- <string>Select items based on whether they will be printed or not</string>
+ <string>Select based on the color of the line or outline</string>
</property>
<property name="text">
- <string>Printable</string>
- </property>
- </widget>
- </item>
- <item row="4" column="1">
- <widget class="QComboBox" name="printStateCombo">
- <property name="enabled">
- <bool>false</bool>
+ <string>Line Color</string>
</property>
- <item>
- <property name="text">
- <string>Yes</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>No</string>
- </property>
- </item>
</widget>
</item>
- <item row="5" column="0">
- <widget class="QCheckBox" name="useLockedState">
+ <item row="7" column="0">
+ <widget class="QCheckBox" name="useResizeState">
<property name="toolTip">
- <string>Select items based on their locked status</string>
+ <string>Select items based on whether they have their size locked or not</string>
</property>
<property name="text">
- <string>Locked</string>
- </property>
- </widget>
- </item>
- <item row="5" column="1">
- <widget class="QComboBox" name="lockStateCombo">
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="currentIndex">
- <number>1</number>
+ <string>Resizable</string>
</property>
- <item>
- <property name="text">
- <string>Yes</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>No</string>
- </property>
- </item>
</widget>
</item>
- <item row="6" column="0">
- <widget class="QCheckBox" name="useResizeState">
+ <item row="0" column="0">
+ <widget class="QCheckBox" name="useParagraphStyle">
<property name="toolTip">
- <string>Select items based on whether they have their size locked or not</string>
+ <string>Select based on item type</string>
</property>
<property name="text">
- <string>Resizable</string>
+ <string>Paragraph Style</string>
</property>
</widget>
</item>
- <item row="6" column="1">
- <widget class="QComboBox" name="resizeStateCombo">
+ <item row="0" column="1">
+ <widget class="QComboBox" name="paragraphStyleCombo">
<property name="enabled">
<bool>false</bool>
</property>
- <item>
- <property name="text">
- <string>Yes</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>No</string>
- </property>
- </item>
</widget>
</item>
</layout>
@@ -285,10 +302,10 @@
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
- <enum>Qt::Horizontal</enum>
+ <enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="standardButtons">
- <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ <set>QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok</set>
</property>
</widget>
</item>
@@ -452,5 +469,21 @@
</hint>
</hints>
</connection>
+ <connection>
+ <sender>useParagraphStyle</sender>
+ <signal>clicked(bool)</signal>
+ <receiver>paragraphStyleCombo</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>123</x>
+ <y>159</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>333</x>
+ <y>159</y>
+ </hint>
+ </hints>
+ </connection>
</connections>
</ui>
|
|
|
Four "style" comments: - in your patch your including formatting changes to a file that is not related to the feature (CMakeLists.txt) - for the Scribus code, you need to use tabs for indenting, not spaces - don't comment out lines of code, just remove them. - in the Scribus code, braces are alway on their own line (sadly, the team tends to prefer that and then leave out braces for single line bodies) |
|
|
Alright. I can write another patch to follow those suggestions. |
|
|
Updated patch, following suggestions by ale. nov-21.patch (15,941 bytes)
diff --git a/scribus/scribus.cpp b/scribus/scribus.cpp
index fb61617..5505d87 100644
--- a/scribus/scribus.cpp
+++ b/scribus/scribus.cpp
@@ -4880,7 +4880,7 @@ void ScribusMainWindow::SelectAllOnLayer()
{
ColorList UsedC;
doc->getUsedColors(UsedC);
- QScopedPointer<selectDialog> dia(new selectDialog(this, UsedC, doc->unitIndex()));
+ QScopedPointer<selectDialog> dia(new selectDialog(this, doc, UsedC, doc->unitIndex()));
if (!dia->exec())
return;
@@ -4901,6 +4901,7 @@ void ScribusMainWindow::SelectAllOnLayer()
continue;
if (dia->useAttributes())
{
+ bool useParagraphStyle = false;
bool useType = false;
bool useFill = false;
bool useLine = false;
@@ -4908,7 +4909,8 @@ void ScribusMainWindow::SelectAllOnLayer()
bool usePrint = false;
bool useLocked = false;
bool useResize = false;
- dia->getUsedAttributes(useType, useFill, useLine, useLWidth, usePrint, useLocked, useResize);
+ dia->getUsedAttributes(useParagraphStyle, useType, useFill, useLine, useLWidth, usePrint, useLocked, useResize);
+ int ParagraphStyle = 0;
int Type = 0;
QString fill;
QString line;
@@ -4916,8 +4918,12 @@ void ScribusMainWindow::SelectAllOnLayer()
bool Print = false;
bool Locked = false;
bool Resize = false;
- dia->getUsedAttributesValues(Type, fill, line, LWidth, Print, Locked, Resize);
+ dia->getUsedAttributesValues(ParagraphStyle, Type, fill, line, LWidth, Print, Locked, Resize);
LWidth = LWidth / doc->unitRatio();
+ if (useParagraphStyle
+ && ParagraphStyle < doc->paragraphStyles().count()
+ && !currItem->currentStyle().displayName().contains(doc->paragraphStyles()[ParagraphStyle].displayName()))
+ continue;
if (useType && (Type != currItem->realItemType()))
continue;
if (useFill && ((fill != currItem->fillColor()) || (currItem->GrType != 0)))
diff --git a/scribus/ui/selectobjects.cpp b/scribus/ui/selectobjects.cpp
index e0b3e53..d7fe174 100644
--- a/scribus/ui/selectobjects.cpp
+++ b/scribus/ui/selectobjects.cpp
@@ -28,11 +28,16 @@ for which a new license (GPL+exception) is in place.
#include "commonstrings.h"
#include "iconmanager.h"
-selectDialog::selectDialog(QWidget* parent, const ColorList &availableColors, int unitIndex) : QDialog(parent)
+selectDialog::selectDialog(QWidget* parent, ScribusDoc* document, const ColorList &availableColors, int unitIndex) : QDialog(parent)
{
setupUi(this);
setModal(true);
setWindowIcon(IconManager::instance().loadIcon("app-icon"));
+ m_paragraphStyles = document->getSortedStyleList();
+ for (auto &styleId : m_paragraphStyles)
+ {
+ paragraphStyleCombo->addItem(document->paragraphStyles()[styleId].displayName());
+ }
backgroundCombo->setPixmapType(ColorCombo::fancyPixmaps);
backgroundCombo->setColors(availableColors, true);
lineCombo->setPixmapType(ColorCombo::fancyPixmaps);
@@ -59,8 +64,9 @@ bool selectDialog::useAttributes() const
return attributeGroup->isChecked();
}
-void selectDialog::getUsedAttributes(bool &Type, bool &Fill, bool &Line, bool &LWidth, bool &Print, bool &Locked, bool &Resize)
+void selectDialog::getUsedAttributes(bool &ParagraphStyle, bool &Type, bool &Fill, bool &Line, bool &LWidth, bool &Print, bool &Locked, bool &Resize)
{
+ ParagraphStyle = useParagraphStyle->isChecked();
Type = useItemType->isChecked();
Fill = useFillColor->isChecked();
Line = useLineColor->isChecked();
@@ -70,8 +76,12 @@ void selectDialog::getUsedAttributes(bool &Type, bool &Fill, bool &Line, bool &L
Resize = useResizeState->isChecked();
}
-void selectDialog::getUsedAttributesValues(int &Type, QString &Fill, QString &Line, double &LWidth, bool &Print, bool &Locked, bool &Resize)
+void selectDialog::getUsedAttributesValues(int &ParagraphStyle, int &Type, QString &Fill, QString &Line, double &LWidth, bool &Print, bool &Locked, bool &Resize)
{
+ if (useParagraphStyle->isChecked())
+ {
+ ParagraphStyle = m_paragraphStyles.at(paragraphStyleCombo->currentIndex());
+ }
if (useItemType->isChecked())
{
Type = itemTypeCombo->currentIndex();
diff --git a/scribus/ui/selectobjects.h b/scribus/ui/selectobjects.h
index 1d473e2..68df73f 100644
--- a/scribus/ui/selectobjects.h
+++ b/scribus/ui/selectobjects.h
@@ -37,13 +37,15 @@ class SCRIBUS_API selectDialog : public QDialog, Ui::selectDialog
Q_OBJECT
public:
- selectDialog(QWidget* parent, const ColorList &availableColors, int unitIndex);
+ selectDialog(QWidget* parent, ScribusDoc* document, const ColorList &availableColors, int unitIndex);
~selectDialog() {};
int getSelectionRange() const;
bool useAttributes() const;
- void getUsedAttributes(bool &Type, bool &Fill, bool &Line, bool &LWidth, bool &Print, bool &Locked, bool &Resize);
- void getUsedAttributesValues(int &Type, QString &Fill, QString &Line, double &LWidth, bool &Print, bool &Locked, bool &Resize);
+ void getUsedAttributes(bool &ParagraphStyle, bool &Type, bool &Fill, bool &Line, bool &LWidth, bool &Print, bool &Locked, bool &Resize);
+ void getUsedAttributesValues(int &ParagraphStyle, int &Type, QString &Fill, QString &Line, double &LWidth, bool &Print, bool &Locked, bool &Resize);
+private:
+ QList<int> m_paragraphStyles;
};
#endif
diff --git a/scribus/ui/selectobjects.ui b/scribus/ui/selectobjects.ui
index 1af2fea..6760999 100644
--- a/scribus/ui/selectobjects.ui
+++ b/scribus/ui/selectobjects.ui
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>423</width>
- <height>321</height>
+ <width>457</width>
+ <height>388</height>
</rect>
</property>
<property name="sizePolicy">
@@ -20,30 +20,30 @@
<string>Select All Items</string>
</property>
<property name="modal">
- <bool>true</bool>
- </property>
- <layout class="QVBoxLayout">
- <property name="leftMargin">
- <number>9</number>
- </property>
- <property name="topMargin">
- <number>9</number>
- </property>
- <property name="rightMargin">
- <number>9</number>
- </property>
- <property name="bottomMargin">
- <number>9</number>
- </property>
- <item>
- <widget class="QGroupBox" name="rangeGroup">
+ <bool>true</bool>
+ </property>
+ <layout class="QVBoxLayout">
+ <property name="leftMargin">
+ <number>9</number>
+ </property>
+ <property name="topMargin">
+ <number>9</number>
+ </property>
+ <property name="rightMargin">
+ <number>9</number>
+ </property>
+ <property name="bottomMargin">
+ <number>9</number>
+ </property>
+ <item>
+ <widget class="QGroupBox" name="rangeGroup">
<property name="title">
- <string>Select All Items</string>
- </property>
- <layout class="QHBoxLayout">
- <item>
- <widget class="QRadioButton" name="buttonCurrentPage">
- <property name="toolTip">
+ <string>Select All Items</string>
+ </property>
+ <layout class="QHBoxLayout">
+ <item>
+ <widget class="QRadioButton" name="buttonCurrentPage">
+ <property name="toolTip">
<string>Select all items on the current page</string>
</property>
<property name="text">
@@ -89,20 +89,88 @@
<bool>true</bool>
</property>
<property name="checked">
- <bool>false</bool>
- </property>
- <layout class="QGridLayout">
- <item row="0" column="0">
- <widget class="QCheckBox" name="useItemType">
- <property name="toolTip">
- <string>Select based on item type</string>
+ <bool>false</bool>
+ </property>
+ <layout class="QGridLayout">
+ <item row="2" column="1">
+ <widget class="ColorCombo" name="backgroundCombo">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="0">
+ <widget class="QCheckBox" name="useLockedState">
+ <property name="toolTip">
+ <string>Select items based on their locked status</string>
</property>
<property name="text">
- <string>Item Type</string>
+ <string>Locked</string>
</property>
</widget>
</item>
- <item row="0" column="1">
+ <item row="5" column="0">
+ <widget class="QCheckBox" name="usePrintState">
+ <property name="toolTip">
+ <string>Select items based on whether they will be printed or not</string>
+ </property>
+ <property name="text">
+ <string>Printable</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="ScrSpinBox" name="lineWidthSpin">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QCheckBox" name="useLineWidth">
+ <property name="toolTip">
+ <string>Select based on the width of the line of the item</string>
+ </property>
+ <property name="text">
+ <string>Line Width</string>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="1">
+ <widget class="QComboBox" name="resizeStateCombo">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <item>
+ <property name="text">
+ <string>Yes</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>No</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="5" column="1">
+ <widget class="QComboBox" name="printStateCombo">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <item>
+ <property name="text">
+ <string>Yes</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>No</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="1" column="1">
<widget class="QComboBox" name="itemTypeCombo">
<property name="enabled">
<bool>false</bool>
@@ -144,24 +212,24 @@
</item>
</widget>
</item>
- <item row="1" column="0">
- <widget class="QCheckBox" name="useFillColor">
+ <item row="7" column="0">
+ <widget class="QCheckBox" name="useResizeState">
<property name="toolTip">
- <string>Select based on the color that the item is filled with</string>
+ <string>Select items based on whether they have their size locked or not</string>
</property>
<property name="text">
- <string>Fill Color</string>
+ <string>Resizable</string>
</property>
</widget>
</item>
- <item row="1" column="1">
- <widget class="ColorCombo" name="backgroundCombo">
+ <item row="3" column="1">
+ <widget class="ColorCombo" name="lineCombo">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
- <item row="2" column="0">
+ <item row="3" column="0">
<widget class="QCheckBox" name="useLineColor">
<property name="toolTip">
<string>Select based on the color of the line or outline</string>
@@ -171,68 +239,27 @@
</property>
</widget>
</item>
- <item row="2" column="1">
- <widget class="ColorCombo" name="lineCombo">
- <property name="enabled">
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item row="3" column="0">
- <widget class="QCheckBox" name="useLineWidth">
- <property name="toolTip">
- <string>Select based on the width of the line of the item</string>
- </property>
- <property name="text">
- <string>Line Width</string>
- </property>
- </widget>
- </item>
- <item row="3" column="1">
- <widget class="ScrSpinBox" name="lineWidthSpin">
- <property name="enabled">
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item row="4" column="0">
- <widget class="QCheckBox" name="usePrintState">
+ <item row="1" column="0">
+ <widget class="QCheckBox" name="useItemType">
<property name="toolTip">
- <string>Select items based on whether they will be printed or not</string>
+ <string>Select based on item type</string>
</property>
<property name="text">
- <string>Printable</string>
- </property>
- </widget>
- </item>
- <item row="4" column="1">
- <widget class="QComboBox" name="printStateCombo">
- <property name="enabled">
- <bool>false</bool>
+ <string>Item Type</string>
</property>
- <item>
- <property name="text">
- <string>Yes</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>No</string>
- </property>
- </item>
</widget>
</item>
- <item row="5" column="0">
- <widget class="QCheckBox" name="useLockedState">
+ <item row="2" column="0">
+ <widget class="QCheckBox" name="useFillColor">
<property name="toolTip">
- <string>Select items based on their locked status</string>
+ <string>Select based on the color that the item is filled with</string>
</property>
<property name="text">
- <string>Locked</string>
+ <string>Fill Color</string>
</property>
</widget>
</item>
- <item row="5" column="1">
+ <item row="6" column="1">
<widget class="QComboBox" name="lockStateCombo">
<property name="enabled">
<bool>false</bool>
@@ -252,31 +279,21 @@
</item>
</widget>
</item>
- <item row="6" column="0">
- <widget class="QCheckBox" name="useResizeState">
+ <item row="0" column="0">
+ <widget class="QCheckBox" name="useParagraphStyle">
<property name="toolTip">
- <string>Select items based on whether they have their size locked or not</string>
+ <string>Select based on item type</string>
</property>
<property name="text">
- <string>Resizable</string>
+ <string>Paragraph Style</string>
</property>
</widget>
</item>
- <item row="6" column="1">
- <widget class="QComboBox" name="resizeStateCombo">
+ <item row="0" column="1">
+ <widget class="QComboBox" name="paragraphStyleCombo">
<property name="enabled">
<bool>false</bool>
</property>
- <item>
- <property name="text">
- <string>Yes</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>No</string>
- </property>
- </item>
</widget>
</item>
</layout>
@@ -285,10 +302,10 @@
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
- <enum>Qt::Horizontal</enum>
+ <enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="standardButtons">
- <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ <set>QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok</set>
</property>
</widget>
</item>
@@ -452,5 +469,21 @@
</hint>
</hints>
</connection>
+ <connection>
+ <sender>useParagraphStyle</sender>
+ <signal>clicked(bool)</signal>
+ <receiver>paragraphStyleCombo</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>123</x>
+ <y>127</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>333</x>
+ <y>127</y>
+ </hint>
+ </hints>
+ </connection>
</connections>
</ui>
|
|
|
Looks better : - ) ... Or more conform. I read through your patch and my first impression is good. But there are two things that make we wonder: - What do you mean by "I wanted to have separate selection boxes for each item, but I don't understand how the overall selection box is created."? - What is the use case for the feature? What is the action, after having selected all the items containing a specific paragraph style? |
|
|
It was my misunderstanding: it was because the "selection-group-inside" brush and pen weren't very visible, and I thought there was something wrong with the selection functionality. I still don't fully understand how selection works, but I'm confident it is working as it should be. I think this would be useful for selecting multiple objects, when "Search/Replace" is unavailable, and for moving objects onto another layer. I've tested my changes with output generated by the calendar generator script, and it puts the elements on the same layer, except for the image frames. This could be improved by matching against separate attributes on objects, but this may be out of scope. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2025-11-17 07:10 | bgc | New Issue | |
| 2025-11-17 07:10 | bgc | File Added: nov-17.patch | |
| 2025-11-20 03:18 | bgc | Note Added: 0053285 | |
| 2025-11-20 03:18 | bgc | File Added: nov-20.patch | |
| 2025-11-20 07:36 | ale | Note Added: 0053287 | |
| 2025-11-20 09:21 | bgc | Note Added: 0053288 | |
| 2025-11-21 03:29 | bgc | Note Added: 0053293 | |
| 2025-11-21 03:29 | bgc | File Added: nov-21.patch | |
| 2025-11-21 20:45 | ale | Note Added: 0053294 | |
| 2025-11-21 21:55 | bgc | Note Added: 0053295 |