View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0016849 | Scribus | User Interface | public | 2022-10-14 18:12 | 2024-12-08 11:41 |
| Reporter | digirew | Assigned To | nitramr | ||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Product Version | 1.5.7 | ||||
| Target Version | 1.7.0 | Fixed in Version | 1.7.0.svn | ||
| Summary | 0016849: Properties for First line, right and left indents | ||||
| Description | I have the ability under the styles to set a numeric value for First line, right and left indents. It would be great if I had those same entry fields/values appear someplace in my text properties panels. Right now when im in text edit mode, I can move the 3 triangles on the ruler to manually adjust the first line, right and left indents, however I have no way to verify what values im setting it to. I need to be able to see that value and enter a number on the fly. im currently using 1.5.6 (no option to select that version when submitting this ticket). | ||||
| Tags | No tags attached. | ||||
| Attached Files | |||||
| Patch | Yes | ||||
|
|
I attached a screen shot of the options available when creating a "style". However, im looking for something similar in the text properties when adjusting these manually. |
|
|
I add the editing options in columns section. Additionally, I moved the tabulators button back to this section, because it is more related to these options than alignments. I hope the patch works, because the propertywidget_alignment.cpp was modified by optical margin patch too. indents_2024-11-27_01.patch (17,215 bytes)
Index: scribus/ui/propertiespalette_text.cpp
===================================================================
--- scribus/ui/propertiespalette_text.cpp (Revision 26452)
+++ scribus/ui/propertiespalette_text.cpp (Arbeitskopie)
@@ -56,13 +56,13 @@
scText->restorePreferences();
alignmentWidgets = new PropertyWidget_Alignment(this);
- scAlignment = new SectionContainer(tr("Alignment && Tabs"), "SectionTPAlignment", true, true);
+ scAlignment = new SectionContainer(tr("Alignment"), "SectionTPAlignment", true, true);
scAlignment->setCanSaveState(true);
scAlignment->setWidget(alignmentWidgets);
scAlignment->restorePreferences();
distanceWidgets = new PropertyWidget_Distance(this);
- scDistance = new SectionContainer(tr("Columns && Margins"), "SectionTPColumnsMargins", true, false);
+ scDistance = new SectionContainer(tr("Columns && Indents"), "SectionTPColumnsMargins", true, false);
scDistance->setCanSaveState(true);
scDistance->setWidget(distanceWidgets);
scDistance->restorePreferences();
@@ -391,6 +391,7 @@
textWidgets->updateStyle(newCurrent);
styleWidgets->updateStyle(newCurrent);
alignmentWidgets->updateStyle(newCurrent);
+ distanceWidgets->updateStyle(newCurrent);
}
void PropertiesPalette_Text::updateTextStyles()
@@ -422,8 +423,8 @@
void PropertiesPalette_Text::languageChange()
{
scAdvanced->setText(tr("Typography"));
- scAlignment->setText(tr("Alignment && Tabs"));
- scDistance->setText(tr("Columns && Margins"));
+ scAlignment->setText(tr("Alignment"));
+ scDistance->setText(tr("Columns && Indents"));
scFontFeatures->setText(tr("OpenType Features"));
scHyphenation->setText(tr("Hyphenation && Language"));
scOrphans->setText(tr("Orphans && Widows"));
Index: scribus/ui/propertywidget_alignment.cpp
===================================================================
--- scribus/ui/propertywidget_alignment.cpp (Revision 26452)
+++ scribus/ui/propertywidget_alignment.cpp (Arbeitskopie)
@@ -147,10 +147,8 @@
void PropertyWidget_Alignment::connectSignals()
{
- connect(tabsButton , SIGNAL(clicked()) , this, SLOT(handleTabs()), Qt::UniqueConnection);
connect(flopWidget->flopGroup, SIGNAL(idClicked(int)), this, SLOT(handleFirstLinePolicy(int)));
connect(opticalMarginsWidget, SIGNAL(opticalMarginChanged()), this, SLOT(handleOpticalMargins()) );
-// connect(opticalMarginsWidget->resetButton, SIGNAL(clicked()), this, SLOT(resetOpticalMargins()) );
connect(textAlignment , SIGNAL(State(int)) , this, SLOT(handleAlignment(int)));
connect(textVerticalAlignment, SIGNAL(State(int)), this, SLOT(handleVAlignment(int)));
connect(textDirection , SIGNAL(State(int)) , this, SLOT(handleDirection(int)));
@@ -158,10 +156,8 @@
void PropertyWidget_Alignment::disconnectSignals()
{
- disconnect(tabsButton , SIGNAL(clicked()) , this, SLOT(handleTabs()));
disconnect(flopWidget->flopGroup, SIGNAL(idClicked(int)), this, SLOT(handleFirstLinePolicy(int)));
disconnect(opticalMarginsWidget, SIGNAL(opticalMarginChanged()), this, SLOT(handleOpticalMargins()) );
-// disconnect(opticalMarginsWidget->resetButton, SIGNAL(clicked()), this, SLOT(resetOpticalMargins()) );
disconnect(textAlignment , SIGNAL(State(int)) , this, SLOT(handleAlignment(int)));
disconnect(textVerticalAlignment, SIGNAL(State(int)), this, SLOT(handleVAlignment(int)));
disconnect(textDirection , SIGNAL(State(int)) , this, SLOT(handleDirection(int)));
@@ -187,7 +183,6 @@
textVerticalAlignment->setEnabled(!m_item->isPathText());
flopWidget->setEnabled(!m_item->isPathText());
opticalMarginsWidget->setEnabled(!m_item->isPathText());
- tabsButton->setEnabled(!m_item->isPathText());
}
setEnabled(enabled);
}
@@ -286,37 +283,6 @@
m_haveItem = tmp;
}
-void PropertyWidget_Alignment::handleTabs()
-{
- if (!m_doc || !m_item)
- return;
-
- PageItem_TextFrame *tItem = m_item->asTextFrame();
- if (tItem == nullptr)
- return;
- const ParagraphStyle& style(m_doc->appMode == modeEdit ? tItem->currentStyle() : tItem->itemText.defaultStyle());
- TabManager *dia = new TabManager(this, m_doc->unitIndex(), style.tabValues(), tItem->columnWidth());
- if (dia->exec())
- {
- if (m_doc->appMode != modeEdit)
- {
- ParagraphStyle newStyle(m_item->itemText.defaultStyle());
- newStyle.setTabValues(dia->tabList());
- Selection tempSelection(this, false);
- tempSelection.addItem(m_item, true);
- m_doc->itemSelection_ApplyParagraphStyle(newStyle, &tempSelection);
- }
- else
- {
- ParagraphStyle newStyle;
- newStyle.setTabValues(dia->tabList());
- m_doc->itemSelection_ApplyParagraphStyle(newStyle);
- }
- m_item->update();
- }
- delete dia;
-}
-
void PropertyWidget_Alignment::handleAlignment(int a)
{
if (!m_haveDoc || !m_haveItem || !m_ScMW || m_ScMW->scriptIsRunning())
Index: scribus/ui/propertywidget_alignment.h
===================================================================
--- scribus/ui/propertywidget_alignment.h (Revision 26452)
+++ scribus/ui/propertywidget_alignment.h (Arbeitskopie)
@@ -53,17 +53,14 @@
void toggleLabelVisibility(bool v);
void showFirstLinePolicy(FirstLineOffsetPolicy f);
void showOpticalMargins(int e);
void showAlignment(int e);
void showDirection(int e);
private slots:
- void handleTabs();
void handleFirstLinePolicy(int);
void handleOpticalMargins();
-// void resetOpticalMargins();
-
void handleAlignment(int a);
void handleVAlignment(int a);
void handleDirection(int d);
Index: scribus/ui/propertywidget_distance.cpp
===================================================================
--- scribus/ui/propertywidget_distance.cpp (Revision 26452)
+++ scribus/ui/propertywidget_distance.cpp (Arbeitskopie)
@@ -28,23 +28,27 @@
layout()->setAlignment(Qt::AlignTop);
columnGap->setValues(0, 300, 2, 0);
- columns->setDecimals(0);
- columns->setSuffix("");
+ columns->setDecimals(0);
+ columns->setSuffix("");
- MarginStruct distances;
- distances.resetToZero();
+ MarginStruct distances;
+ distances.resetToZero();
- distanceWidget->setup(distances, 0, m_unitIndex, NewMarginWidget::DistanceWidgetFlags);
- distanceWidget->toggleLabelVisibility(false);
+ distanceWidget->setup(distances, 0, m_unitIndex, NewMarginWidget::DistanceWidgetFlags);
+ distanceWidget->toggleLabelVisibility(false);
- iconSetChange();
+ firstLineIndentSpin->setValues(-3000, 4000, 3, 0);
+ leftIndentSpin->setValues(0, 4000, 3, 0);
+ rightIndentSpin->setValues(0, 4000, 3, 0);
+
+ iconSetChange();
languageChange();
- columnGapCombo->setCurrentIndex(0);
+ columnGapCombo->setCurrentIndex(0);
- connect(ScQApp, SIGNAL(iconSetChanged()), this, SLOT(iconSetChange()));
+ connect(ScQApp, SIGNAL(iconSetChanged()), this, SLOT(iconSetChange()));
connect(ScQApp, SIGNAL(localeChanged()), this, SLOT(localeChange()));
- connect(ScQApp, SIGNAL(labelVisibilityChanged(bool)), this, SLOT(toggleLabelVisibility(bool)));
+ connect(ScQApp, SIGNAL(labelVisibilityChanged(bool)), this, SLOT(toggleLabelVisibility(bool)));
}
void PropertyWidget_Distance::setMainWindow(ScribusMainWindow* mw)
@@ -85,6 +89,16 @@
connect(m_doc , SIGNAL(docChanged()) , this, SLOT(handleSelectionChanged()));
}
+void PropertyWidget_Distance::updateStyle(const ParagraphStyle &newCurrent)
+{
+ if (!m_item)
+ return;
+
+ firstLineIndentSpin->setValue(newCurrent.firstIndent() * m_unitRatio);
+ leftIndentSpin->setValue(newCurrent.leftMargin() * m_unitRatio);
+ rightIndentSpin->setValue(newCurrent.rightMargin() * m_unitRatio);
+}
+
void PropertyWidget_Distance::setCurrentItem(PageItem *item)
{
if (!m_ScMW || m_ScMW->scriptIsRunning())
@@ -130,20 +144,22 @@
columnGap->setValue(textItem->columnWidth() * m_unitRatio);
}
- MarginStruct distances;
- distances.set(
- textItem->textToFrameDistTop(),
- textItem->textToFrameDistLeft(),
- textItem->textToFrameDistBottom(),
- textItem->textToFrameDistRight()
- );
- distanceWidget->setPageHeight(m_item->height());
- distanceWidget->setPageWidth(m_item->width());
- distanceWidget->setNewValues(distances);
-
- columnGapLabel->setVisible(columns->value() != 1);
- columnGapSizeLabel->setVisible(columns->value() != 1);
-
+ MarginStruct distances;
+ distances.set(
+ textItem->textToFrameDistTop(),
+ textItem->textToFrameDistLeft(),
+ textItem->textToFrameDistBottom(),
+ textItem->textToFrameDistRight()
+ );
+ distanceWidget->setPageHeight(m_item->height());
+ distanceWidget->setPageWidth(m_item->width());
+ distanceWidget->setNewValues(distances);
+
+ columnGapLabel->setVisible(columns->value() != 1);
+ columnGapSizeLabel->setVisible(columns->value() != 1);
+
+ updateStyle(parStyle);
+
connectSignals();
}
@@ -151,8 +167,12 @@
{
connect(columns , SIGNAL(valueChanged(double)) , this, SLOT(handleColumns()), Qt::UniqueConnection);
connect(columnGap , SIGNAL(valueChanged(double)), this, SLOT(handleColumnGap()), Qt::UniqueConnection);
- connect(columnGapCombo, SIGNAL(activated(int)) , this, SLOT(handleGapSwitch()), Qt::UniqueConnection);
- connect(distanceWidget, SIGNAL(valuesChanged(MarginStruct)), this, SLOT(handleTextDistances()), Qt::UniqueConnection);
+ connect(columnGapCombo, SIGNAL(activated(int)) , this, SLOT(handleGapSwitch()), Qt::UniqueConnection);
+ connect(distanceWidget, SIGNAL(valuesChanged(MarginStruct)), this, SLOT(handleTextDistances()), Qt::UniqueConnection);
+ connect(tabsButton , SIGNAL(clicked()) , this, SLOT(handleTabs()), Qt::UniqueConnection);
+ connect(firstLineIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()), Qt::UniqueConnection);
+ connect(rightIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()), Qt::UniqueConnection);
+ connect(leftIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()), Qt::UniqueConnection);
}
void PropertyWidget_Distance::disconnectSignals()
@@ -159,8 +179,12 @@
{
disconnect(columns , SIGNAL(valueChanged(double)) , this, SLOT(handleColumns()));
disconnect(columnGap , SIGNAL(valueChanged(double)), this, SLOT(handleColumnGap()));
- disconnect(columnGapCombo, SIGNAL(activated(int)) , this, SLOT(handleGapSwitch()));
- disconnect(distanceWidget, SIGNAL(valuesChanged(MarginStruct)), this, SLOT(handleTextDistances()));
+ disconnect(columnGapCombo, SIGNAL(activated(int)) , this, SLOT(handleGapSwitch()));
+ disconnect(distanceWidget, SIGNAL(valuesChanged(MarginStruct)), this, SLOT(handleTextDistances()));
+ disconnect(tabsButton , SIGNAL(clicked()) , this, SLOT(handleTabs()));
+ disconnect(firstLineIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()));
+ disconnect(rightIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()));
+ disconnect(leftIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()));
}
void PropertyWidget_Distance::configureWidgets()
@@ -173,6 +197,10 @@
textItem = m_item->asTable()->activeCell().textFrame();
enabled = (textItem != nullptr);
+
+ if (m_item->isPathText())
+ enabled = true;
+
enabled &= (m_doc->m_Selection->count() == 1);
if (textItem)
@@ -179,9 +207,11 @@
{
int numCols = textItem->m_columns;
- columnGapLabel->setVisible(numCols != 1);
- columnGapSizeLabel->setVisible(numCols != 1);
+ columnGapLabel->setVisible(numCols != 1);
+ columnGapSizeLabel->setVisible(numCols != 1);
}
+
+ tabsButton->setEnabled(!m_item->isPathText());
}
setEnabled(enabled);
}
@@ -209,13 +239,16 @@
// Nothing to do in this widget
}
-void PropertyWidget_Distance::iconSetChange()
-{
- IconManager &im = IconManager::instance();
-
- columnsLabel->setPixmap(im.loadPixmap("paragraph-columns"));
-}
-
+void PropertyWidget_Distance::iconSetChange()
+{
+ IconManager &im = IconManager::instance();
+
+ columnsLabel->setPixmap(im.loadPixmap("paragraph-columns"));
+ firstLineIndentLabel->setPixmap(im.loadPixmap("paragraph-indent-firstline"));
+ leftIndentLabel->setPixmap(im.loadPixmap("paragraph-indent-left"));
+ rightIndentLabel->setPixmap(im.loadPixmap("paragraph-indent-right"));
+}
+
void PropertyWidget_Distance::showColumns(int r, double g)
{
if (!m_ScMW || m_ScMW->scriptIsRunning())
@@ -372,6 +405,37 @@
m_doc->regionsChanged()->update(QRect());
}
+void PropertyWidget_Distance::handleIndents()
+{
+ if (!m_doc || !m_item || !m_ScMW || m_ScMW->scriptIsRunning())
+ return;
+
+
+ PageItem_TextFrame *tItem = m_item->asTextFrame();
+ if (tItem == nullptr)
+ return;
+
+ if (m_doc->appMode != modeEdit)
+ {
+ ParagraphStyle newStyle(m_item->itemText.defaultStyle());
+ newStyle.setFirstIndent(firstLineIndentSpin->value() / m_unitRatio);
+ newStyle.setLeftMargin(leftIndentSpin->value() / m_unitRatio);
+ newStyle.setRightMargin(rightIndentSpin->value() / m_unitRatio);
+ Selection tempSelection(this, false);
+ tempSelection.addItem(m_item, true);
+ m_doc->itemSelection_ApplyParagraphStyle(newStyle, &tempSelection);
+ }
+ else
+ {
+ ParagraphStyle newStyle;
+ newStyle.setFirstIndent(firstLineIndentSpin->value() / m_unitRatio);
+ newStyle.setLeftMargin(leftIndentSpin->value() / m_unitRatio);
+ newStyle.setRightMargin(rightIndentSpin->value() / m_unitRatio);
+ m_doc->itemSelection_ApplyParagraphStyle(newStyle);
+ }
+ m_item->update();
+}
+
void PropertyWidget_Distance::changeEvent(QEvent *e)
{
if (e->type() == QEvent::LanguageChange)
@@ -386,18 +450,28 @@
{
retranslateUi(this);
- QSignalBlocker columnGapLabelBlocker(columnGapCombo);
- int oldColGapLabel = columnGapCombo->currentIndex();
- columnGapCombo->clear();
- columnGapCombo->addItem( tr("Gap:"));
- columnGapCombo->addItem( tr("Width:"));
- columnGapCombo->setCurrentIndex(oldColGapLabel);
+ QSignalBlocker columnGapLabelBlocker(columnGapCombo);
+ int oldColGapLabel = columnGapCombo->currentIndex();
+ columnGapCombo->clear();
+ columnGapCombo->addItem( tr("Gap:"));
+ columnGapCombo->addItem( tr("Width:"));
+ columnGapCombo->setCurrentIndex(oldColGapLabel);
QString ptSuffix = tr(" pt");
QString suffix = (m_doc) ? unitGetSuffixFromIndex(m_doc->unitIndex()) : ptSuffix;
columnGap->setSuffix(suffix);
-
+ firstLineIndentSpin->setSuffix(suffix);
+ leftIndentSpin->setSuffix(suffix);
+ rightIndentSpin->setSuffix(suffix);
+
+ firstLineIndentSpin->setToolTip(tr("Indentation for first line of the paragraph"));
+ leftIndentSpin->setToolTip(tr("Indentation from the left for the whole paragraph"));
+ rightIndentSpin->setToolTip(tr("Indentation from the right for the whole paragraph"));
+ firstLineIndentLabel->setToolTip(firstLineIndentSpin->toolTip());
+ leftIndentLabel->setToolTip(leftIndentSpin->toolTip());
+ rightIndentLabel->setToolTip(rightIndentSpin->toolTip());
+ tabsButton->setToolTip(tr("Edit tab settings of text frame..."));
}
void PropertyWidget_Distance::unitChange()
@@ -406,13 +480,19 @@
return;
QSignalBlocker columnGapBlocker(columnGap);
- QSignalBlocker distancesBlocker(distanceWidget);
+ QSignalBlocker distancesBlocker(distanceWidget);
+ QSignalBlocker numberFirstLineIndentBlocker(firstLineIndentSpin);
+ QSignalBlocker numberLeftIndentBlocker(leftIndentSpin);
+ QSignalBlocker numberRightIndentBlocker(rightIndentSpin);
m_unitRatio = m_doc->unitRatio();
m_unitIndex = m_doc->unitIndex();
columnGap->setNewUnit(m_unitIndex);
- distanceWidget->setNewUnit(m_unitIndex);
+ distanceWidget->setNewUnit(m_unitIndex);
+ firstLineIndentSpin->setNewUnit(m_unitIndex);
+ leftIndentSpin->setNewUnit(m_unitIndex);
+ rightIndentSpin->setNewUnit(m_unitIndex);
}
void PropertyWidget_Distance::localeChange()
@@ -419,12 +499,18 @@
{
const QLocale& l(LocaleManager::instance().userPreferredLocale());
columnGap->setLocale(l);
- distanceWidget->setLocale(l);
+ distanceWidget->setLocale(l);
+ firstLineIndentSpin->setLocale(l);
+ leftIndentSpin->setLocale(l);
+ rightIndentSpin->setLocale(l);
}
-
-void PropertyWidget_Distance::toggleLabelVisibility(bool v)
-{
- columnGapSizeLabel->setLabelVisibility(v);
- columnGapLabel->setLabelVisibility(v);
- columnsLabel->setLabelVisibility(v);
-}
+
+void PropertyWidget_Distance::toggleLabelVisibility(bool v)
+{
+ columnGapSizeLabel->setLabelVisibility(v);
+ columnGapLabel->setLabelVisibility(v);
+ columnsLabel->setLabelVisibility(v);
+ firstLineIndentLabel->setLabelVisibility(v);
+ leftIndentLabel->setLabelVisibility(v);
+ rightIndentLabel->setLabelVisibility(v);
+}
Index: scribus/ui/propertywidget_distance.h
===================================================================
--- scribus/ui/propertywidget_distance.h (Revision 26452)
+++ scribus/ui/propertywidget_distance.h (Arbeitskopie)
@@ -42,15 +42,17 @@
void setMainWindow(ScribusMainWindow *mw);
void setDoc(ScribusDoc *d);
+ void updateStyle(const ParagraphStyle &newCurrent);
+
void handleAppModeChanged(int oldMode, int mode);
void handleSelectionChanged();
void handleUpdateRequest(int);
- void iconSetChange();
+ void iconSetChange();
void languageChange();
void unitChange();
void localeChange();
- void toggleLabelVisibility(bool v);
+ void toggleLabelVisibility(bool v);
void showColumns(int r, double g);
@@ -60,6 +62,7 @@
void handleGapSwitch();
void handleTabs();
void handleTextDistances();
+ void handleIndents();
};
#endif
|
|
|
First patch has an issue with "text on path". indents_2024-11-27_2.patch (16,624 bytes)
Index: scribus/ui/propertiespalette_text.cpp
===================================================================
--- scribus/ui/propertiespalette_text.cpp (Revision 26452)
+++ scribus/ui/propertiespalette_text.cpp (Arbeitskopie)
@@ -56,13 +56,13 @@
scText->restorePreferences();
alignmentWidgets = new PropertyWidget_Alignment(this);
- scAlignment = new SectionContainer(tr("Alignment && Tabs"), "SectionTPAlignment", true, true);
+ scAlignment = new SectionContainer(tr("Alignment"), "SectionTPAlignment", true, true);
scAlignment->setCanSaveState(true);
scAlignment->setWidget(alignmentWidgets);
scAlignment->restorePreferences();
distanceWidgets = new PropertyWidget_Distance(this);
- scDistance = new SectionContainer(tr("Columns && Margins"), "SectionTPColumnsMargins", true, false);
+ scDistance = new SectionContainer(tr("Columns && Indents"), "SectionTPColumnsMargins", true, false);
scDistance->setCanSaveState(true);
scDistance->setWidget(distanceWidgets);
scDistance->restorePreferences();
@@ -391,6 +391,7 @@
textWidgets->updateStyle(newCurrent);
styleWidgets->updateStyle(newCurrent);
alignmentWidgets->updateStyle(newCurrent);
+ distanceWidgets->updateStyle(newCurrent);
}
void PropertiesPalette_Text::updateTextStyles()
@@ -422,8 +423,8 @@
void PropertiesPalette_Text::languageChange()
{
scAdvanced->setText(tr("Typography"));
- scAlignment->setText(tr("Alignment && Tabs"));
- scDistance->setText(tr("Columns && Margins"));
+ scAlignment->setText(tr("Alignment"));
+ scDistance->setText(tr("Columns && Indents"));
scFontFeatures->setText(tr("OpenType Features"));
scHyphenation->setText(tr("Hyphenation && Language"));
scOrphans->setText(tr("Orphans && Widows"));
Index: scribus/ui/propertywidget_alignment.cpp
===================================================================
--- scribus/ui/propertywidget_alignment.cpp (Revision 26452)
+++ scribus/ui/propertywidget_alignment.cpp (Arbeitskopie)
@@ -147,10 +147,8 @@
void PropertyWidget_Alignment::connectSignals()
{
- connect(tabsButton , SIGNAL(clicked()) , this, SLOT(handleTabs()), Qt::UniqueConnection);
connect(flopWidget->flopGroup, SIGNAL(idClicked(int)), this, SLOT(handleFirstLinePolicy(int)));
connect(opticalMarginsWidget, SIGNAL(opticalMarginChanged()), this, SLOT(handleOpticalMargins()) );
-// connect(opticalMarginsWidget->resetButton, SIGNAL(clicked()), this, SLOT(resetOpticalMargins()) );
connect(textAlignment , SIGNAL(State(int)) , this, SLOT(handleAlignment(int)));
connect(textVerticalAlignment, SIGNAL(State(int)), this, SLOT(handleVAlignment(int)));
connect(textDirection , SIGNAL(State(int)) , this, SLOT(handleDirection(int)));
@@ -158,10 +156,8 @@
void PropertyWidget_Alignment::disconnectSignals()
{
- disconnect(tabsButton , SIGNAL(clicked()) , this, SLOT(handleTabs()));
disconnect(flopWidget->flopGroup, SIGNAL(idClicked(int)), this, SLOT(handleFirstLinePolicy(int)));
disconnect(opticalMarginsWidget, SIGNAL(opticalMarginChanged()), this, SLOT(handleOpticalMargins()) );
-// disconnect(opticalMarginsWidget->resetButton, SIGNAL(clicked()), this, SLOT(resetOpticalMargins()) );
disconnect(textAlignment , SIGNAL(State(int)) , this, SLOT(handleAlignment(int)));
disconnect(textVerticalAlignment, SIGNAL(State(int)), this, SLOT(handleVAlignment(int)));
disconnect(textDirection , SIGNAL(State(int)) , this, SLOT(handleDirection(int)));
@@ -187,7 +183,6 @@
textVerticalAlignment->setEnabled(!m_item->isPathText());
flopWidget->setEnabled(!m_item->isPathText());
opticalMarginsWidget->setEnabled(!m_item->isPathText());
- tabsButton->setEnabled(!m_item->isPathText());
}
setEnabled(enabled);
}
@@ -286,37 +283,6 @@
m_haveItem = tmp;
}
-void PropertyWidget_Alignment::handleTabs()
-{
- if (!m_doc || !m_item)
- return;
-
- PageItem_TextFrame *tItem = m_item->asTextFrame();
- if (tItem == nullptr)
- return;
- const ParagraphStyle& style(m_doc->appMode == modeEdit ? tItem->currentStyle() : tItem->itemText.defaultStyle());
- TabManager *dia = new TabManager(this, m_doc->unitIndex(), style.tabValues(), tItem->columnWidth());
- if (dia->exec())
- {
- if (m_doc->appMode != modeEdit)
- {
- ParagraphStyle newStyle(m_item->itemText.defaultStyle());
- newStyle.setTabValues(dia->tabList());
- Selection tempSelection(this, false);
- tempSelection.addItem(m_item, true);
- m_doc->itemSelection_ApplyParagraphStyle(newStyle, &tempSelection);
- }
- else
- {
- ParagraphStyle newStyle;
- newStyle.setTabValues(dia->tabList());
- m_doc->itemSelection_ApplyParagraphStyle(newStyle);
- }
- m_item->update();
- }
- delete dia;
-}
-
void PropertyWidget_Alignment::handleAlignment(int a)
{
if (!m_haveDoc || !m_haveItem || !m_ScMW || m_ScMW->scriptIsRunning())
Index: scribus/ui/propertywidget_alignment.h
===================================================================
--- scribus/ui/propertywidget_alignment.h (Revision 26452)
+++ scribus/ui/propertywidget_alignment.h (Arbeitskopie)
@@ -53,17 +53,14 @@
void toggleLabelVisibility(bool v);
void showFirstLinePolicy(FirstLineOffsetPolicy f);
void showOpticalMargins(int e);
void showAlignment(int e);
void showDirection(int e);
private slots:
- void handleTabs();
void handleFirstLinePolicy(int);
void handleOpticalMargins();
-// void resetOpticalMargins();
-
void handleAlignment(int a);
void handleVAlignment(int a);
void handleDirection(int d);
Index: scribus/ui/propertywidget_distance.cpp
===================================================================
--- scribus/ui/propertywidget_distance.cpp (Revision 26452)
+++ scribus/ui/propertywidget_distance.cpp (Arbeitskopie)
@@ -28,23 +28,27 @@
layout()->setAlignment(Qt::AlignTop);
columnGap->setValues(0, 300, 2, 0);
- columns->setDecimals(0);
- columns->setSuffix("");
+ columns->setDecimals(0);
+ columns->setSuffix("");
- MarginStruct distances;
- distances.resetToZero();
+ MarginStruct distances;
+ distances.resetToZero();
- distanceWidget->setup(distances, 0, m_unitIndex, NewMarginWidget::DistanceWidgetFlags);
- distanceWidget->toggleLabelVisibility(false);
+ distanceWidget->setup(distances, 0, m_unitIndex, NewMarginWidget::DistanceWidgetFlags);
+ distanceWidget->toggleLabelVisibility(false);
- iconSetChange();
+ firstLineIndentSpin->setValues(-3000, 4000, 3, 0);
+ leftIndentSpin->setValues(0, 4000, 3, 0);
+ rightIndentSpin->setValues(0, 4000, 3, 0);
+
+ iconSetChange();
languageChange();
- columnGapCombo->setCurrentIndex(0);
+ columnGapCombo->setCurrentIndex(0);
- connect(ScQApp, SIGNAL(iconSetChanged()), this, SLOT(iconSetChange()));
+ connect(ScQApp, SIGNAL(iconSetChanged()), this, SLOT(iconSetChange()));
connect(ScQApp, SIGNAL(localeChanged()), this, SLOT(localeChange()));
- connect(ScQApp, SIGNAL(labelVisibilityChanged(bool)), this, SLOT(toggleLabelVisibility(bool)));
+ connect(ScQApp, SIGNAL(labelVisibilityChanged(bool)), this, SLOT(toggleLabelVisibility(bool)));
}
void PropertyWidget_Distance::setMainWindow(ScribusMainWindow* mw)
@@ -85,6 +89,16 @@
connect(m_doc , SIGNAL(docChanged()) , this, SLOT(handleSelectionChanged()));
}
+void PropertyWidget_Distance::updateStyle(const ParagraphStyle &newCurrent)
+{
+ if (!m_item)
+ return;
+
+ firstLineIndentSpin->setValue(newCurrent.firstIndent() * m_unitRatio);
+ leftIndentSpin->setValue(newCurrent.leftMargin() * m_unitRatio);
+ rightIndentSpin->setValue(newCurrent.rightMargin() * m_unitRatio);
+}
+
void PropertyWidget_Distance::setCurrentItem(PageItem *item)
{
if (!m_ScMW || m_ScMW->scriptIsRunning())
@@ -130,20 +144,22 @@
columnGap->setValue(textItem->columnWidth() * m_unitRatio);
}
- MarginStruct distances;
- distances.set(
- textItem->textToFrameDistTop(),
- textItem->textToFrameDistLeft(),
- textItem->textToFrameDistBottom(),
- textItem->textToFrameDistRight()
- );
- distanceWidget->setPageHeight(m_item->height());
- distanceWidget->setPageWidth(m_item->width());
- distanceWidget->setNewValues(distances);
-
- columnGapLabel->setVisible(columns->value() != 1);
- columnGapSizeLabel->setVisible(columns->value() != 1);
-
+ MarginStruct distances;
+ distances.set(
+ textItem->textToFrameDistTop(),
+ textItem->textToFrameDistLeft(),
+ textItem->textToFrameDistBottom(),
+ textItem->textToFrameDistRight()
+ );
+ distanceWidget->setPageHeight(m_item->height());
+ distanceWidget->setPageWidth(m_item->width());
+ distanceWidget->setNewValues(distances);
+
+ columnGapLabel->setVisible(columns->value() != 1);
+ columnGapSizeLabel->setVisible(columns->value() != 1);
+
+ updateStyle(parStyle);
+
connectSignals();
}
@@ -151,8 +167,12 @@
{
connect(columns , SIGNAL(valueChanged(double)) , this, SLOT(handleColumns()), Qt::UniqueConnection);
connect(columnGap , SIGNAL(valueChanged(double)), this, SLOT(handleColumnGap()), Qt::UniqueConnection);
- connect(columnGapCombo, SIGNAL(activated(int)) , this, SLOT(handleGapSwitch()), Qt::UniqueConnection);
- connect(distanceWidget, SIGNAL(valuesChanged(MarginStruct)), this, SLOT(handleTextDistances()), Qt::UniqueConnection);
+ connect(columnGapCombo, SIGNAL(activated(int)) , this, SLOT(handleGapSwitch()), Qt::UniqueConnection);
+ connect(distanceWidget, SIGNAL(valuesChanged(MarginStruct)), this, SLOT(handleTextDistances()), Qt::UniqueConnection);
+ connect(tabsButton , SIGNAL(clicked()) , this, SLOT(handleTabs()), Qt::UniqueConnection);
+ connect(firstLineIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()), Qt::UniqueConnection);
+ connect(rightIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()), Qt::UniqueConnection);
+ connect(leftIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()), Qt::UniqueConnection);
}
void PropertyWidget_Distance::disconnectSignals()
@@ -159,8 +179,12 @@
{
disconnect(columns , SIGNAL(valueChanged(double)) , this, SLOT(handleColumns()));
disconnect(columnGap , SIGNAL(valueChanged(double)), this, SLOT(handleColumnGap()));
- disconnect(columnGapCombo, SIGNAL(activated(int)) , this, SLOT(handleGapSwitch()));
- disconnect(distanceWidget, SIGNAL(valuesChanged(MarginStruct)), this, SLOT(handleTextDistances()));
+ disconnect(columnGapCombo, SIGNAL(activated(int)) , this, SLOT(handleGapSwitch()));
+ disconnect(distanceWidget, SIGNAL(valuesChanged(MarginStruct)), this, SLOT(handleTextDistances()));
+ disconnect(tabsButton , SIGNAL(clicked()) , this, SLOT(handleTabs()));
+ disconnect(firstLineIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()));
+ disconnect(rightIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()));
+ disconnect(leftIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()));
}
void PropertyWidget_Distance::configureWidgets()
@@ -209,13 +233,16 @@
// Nothing to do in this widget
}
-void PropertyWidget_Distance::iconSetChange()
-{
- IconManager &im = IconManager::instance();
-
- columnsLabel->setPixmap(im.loadPixmap("paragraph-columns"));
-}
-
+void PropertyWidget_Distance::iconSetChange()
+{
+ IconManager &im = IconManager::instance();
+
+ columnsLabel->setPixmap(im.loadPixmap("paragraph-columns"));
+ firstLineIndentLabel->setPixmap(im.loadPixmap("paragraph-indent-firstline"));
+ leftIndentLabel->setPixmap(im.loadPixmap("paragraph-indent-left"));
+ rightIndentLabel->setPixmap(im.loadPixmap("paragraph-indent-right"));
+}
+
void PropertyWidget_Distance::showColumns(int r, double g)
{
if (!m_ScMW || m_ScMW->scriptIsRunning())
@@ -372,6 +399,37 @@
m_doc->regionsChanged()->update(QRect());
}
+void PropertyWidget_Distance::handleIndents()
+{
+ if (!m_doc || !m_item || !m_ScMW || m_ScMW->scriptIsRunning())
+ return;
+
+
+ PageItem_TextFrame *tItem = m_item->asTextFrame();
+ if (tItem == nullptr)
+ return;
+
+ if (m_doc->appMode != modeEdit)
+ {
+ ParagraphStyle newStyle(m_item->itemText.defaultStyle());
+ newStyle.setFirstIndent(firstLineIndentSpin->value() / m_unitRatio);
+ newStyle.setLeftMargin(leftIndentSpin->value() / m_unitRatio);
+ newStyle.setRightMargin(rightIndentSpin->value() / m_unitRatio);
+ Selection tempSelection(this, false);
+ tempSelection.addItem(m_item, true);
+ m_doc->itemSelection_ApplyParagraphStyle(newStyle, &tempSelection);
+ }
+ else
+ {
+ ParagraphStyle newStyle;
+ newStyle.setFirstIndent(firstLineIndentSpin->value() / m_unitRatio);
+ newStyle.setLeftMargin(leftIndentSpin->value() / m_unitRatio);
+ newStyle.setRightMargin(rightIndentSpin->value() / m_unitRatio);
+ m_doc->itemSelection_ApplyParagraphStyle(newStyle);
+ }
+ m_item->update();
+}
+
void PropertyWidget_Distance::changeEvent(QEvent *e)
{
if (e->type() == QEvent::LanguageChange)
@@ -386,18 +444,28 @@
{
retranslateUi(this);
- QSignalBlocker columnGapLabelBlocker(columnGapCombo);
- int oldColGapLabel = columnGapCombo->currentIndex();
- columnGapCombo->clear();
- columnGapCombo->addItem( tr("Gap:"));
- columnGapCombo->addItem( tr("Width:"));
- columnGapCombo->setCurrentIndex(oldColGapLabel);
+ QSignalBlocker columnGapLabelBlocker(columnGapCombo);
+ int oldColGapLabel = columnGapCombo->currentIndex();
+ columnGapCombo->clear();
+ columnGapCombo->addItem( tr("Gap:"));
+ columnGapCombo->addItem( tr("Width:"));
+ columnGapCombo->setCurrentIndex(oldColGapLabel);
QString ptSuffix = tr(" pt");
QString suffix = (m_doc) ? unitGetSuffixFromIndex(m_doc->unitIndex()) : ptSuffix;
columnGap->setSuffix(suffix);
-
+ firstLineIndentSpin->setSuffix(suffix);
+ leftIndentSpin->setSuffix(suffix);
+ rightIndentSpin->setSuffix(suffix);
+
+ firstLineIndentSpin->setToolTip(tr("Indentation for first line of the paragraph"));
+ leftIndentSpin->setToolTip(tr("Indentation from the left for the whole paragraph"));
+ rightIndentSpin->setToolTip(tr("Indentation from the right for the whole paragraph"));
+ firstLineIndentLabel->setToolTip(firstLineIndentSpin->toolTip());
+ leftIndentLabel->setToolTip(leftIndentSpin->toolTip());
+ rightIndentLabel->setToolTip(rightIndentSpin->toolTip());
+ tabsButton->setToolTip(tr("Edit tab settings of text frame..."));
}
void PropertyWidget_Distance::unitChange()
@@ -406,13 +474,19 @@
return;
QSignalBlocker columnGapBlocker(columnGap);
- QSignalBlocker distancesBlocker(distanceWidget);
+ QSignalBlocker distancesBlocker(distanceWidget);
+ QSignalBlocker numberFirstLineIndentBlocker(firstLineIndentSpin);
+ QSignalBlocker numberLeftIndentBlocker(leftIndentSpin);
+ QSignalBlocker numberRightIndentBlocker(rightIndentSpin);
m_unitRatio = m_doc->unitRatio();
m_unitIndex = m_doc->unitIndex();
columnGap->setNewUnit(m_unitIndex);
- distanceWidget->setNewUnit(m_unitIndex);
+ distanceWidget->setNewUnit(m_unitIndex);
+ firstLineIndentSpin->setNewUnit(m_unitIndex);
+ leftIndentSpin->setNewUnit(m_unitIndex);
+ rightIndentSpin->setNewUnit(m_unitIndex);
}
void PropertyWidget_Distance::localeChange()
@@ -419,12 +493,18 @@
{
const QLocale& l(LocaleManager::instance().userPreferredLocale());
columnGap->setLocale(l);
- distanceWidget->setLocale(l);
+ distanceWidget->setLocale(l);
+ firstLineIndentSpin->setLocale(l);
+ leftIndentSpin->setLocale(l);
+ rightIndentSpin->setLocale(l);
}
-
-void PropertyWidget_Distance::toggleLabelVisibility(bool v)
-{
- columnGapSizeLabel->setLabelVisibility(v);
- columnGapLabel->setLabelVisibility(v);
- columnsLabel->setLabelVisibility(v);
-}
+
+void PropertyWidget_Distance::toggleLabelVisibility(bool v)
+{
+ columnGapSizeLabel->setLabelVisibility(v);
+ columnGapLabel->setLabelVisibility(v);
+ columnsLabel->setLabelVisibility(v);
+ firstLineIndentLabel->setLabelVisibility(v);
+ leftIndentLabel->setLabelVisibility(v);
+ rightIndentLabel->setLabelVisibility(v);
+}
Index: scribus/ui/propertywidget_distance.h
===================================================================
--- scribus/ui/propertywidget_distance.h (Revision 26452)
+++ scribus/ui/propertywidget_distance.h (Arbeitskopie)
@@ -42,15 +42,17 @@
void setMainWindow(ScribusMainWindow *mw);
void setDoc(ScribusDoc *d);
+ void updateStyle(const ParagraphStyle &newCurrent);
+
void handleAppModeChanged(int oldMode, int mode);
void handleSelectionChanged();
void handleUpdateRequest(int);
- void iconSetChange();
+ void iconSetChange();
void languageChange();
void unitChange();
void localeChange();
- void toggleLabelVisibility(bool v);
+ void toggleLabelVisibility(bool v);
void showColumns(int r, double g);
@@ -60,6 +62,7 @@
void handleGapSwitch();
void handleTabs();
void handleTextDistances();
+ void handleIndents();
};
#endif
|
|
|
Good! Sometimes, I wonder why all programs offer the editing of the margins from the ruler: it's so uncomfortable to get exact values! Another feedback (that I don't think needs a new patch: if there is an agreement on this, the person merging this can quick make the change): some time ago I got criticized for using the term "Tabulator"... I think that they're just called "Tabs", like the tooltip on the "Tabulators..." button says. |
|
|
You're right, it seems that "tabs" are used more often than" tabulators". At least if you trust this website. https://www.linguee.com/german-english/translation/tabulator.html |
|
|
Just an update. I add "space above" and "space after" input too. "Tabulators" button has been renamed to "Tabs". I kept the pt unit for the two new input fields, like in style manager. indents_2024-11-29_1.patch (17,906 bytes)
Index: scribus/ui/propertiespalette_text.cpp
===================================================================
--- scribus/ui/propertiespalette_text.cpp (Revision 26452)
+++ scribus/ui/propertiespalette_text.cpp (Arbeitskopie)
@@ -56,13 +56,13 @@
scText->restorePreferences();
alignmentWidgets = new PropertyWidget_Alignment(this);
- scAlignment = new SectionContainer(tr("Alignment && Tabs"), "SectionTPAlignment", true, true);
+ scAlignment = new SectionContainer(tr("Alignment"), "SectionTPAlignment", true, true);
scAlignment->setCanSaveState(true);
scAlignment->setWidget(alignmentWidgets);
scAlignment->restorePreferences();
distanceWidgets = new PropertyWidget_Distance(this);
- scDistance = new SectionContainer(tr("Columns && Margins"), "SectionTPColumnsMargins", true, false);
+ scDistance = new SectionContainer(tr("Columns && Indents"), "SectionTPColumnsMargins", true, false);
scDistance->setCanSaveState(true);
scDistance->setWidget(distanceWidgets);
scDistance->restorePreferences();
@@ -391,6 +391,7 @@
textWidgets->updateStyle(newCurrent);
styleWidgets->updateStyle(newCurrent);
alignmentWidgets->updateStyle(newCurrent);
+ distanceWidgets->updateStyle(newCurrent);
}
void PropertiesPalette_Text::updateTextStyles()
@@ -422,8 +423,8 @@
void PropertiesPalette_Text::languageChange()
{
scAdvanced->setText(tr("Typography"));
- scAlignment->setText(tr("Alignment && Tabs"));
- scDistance->setText(tr("Columns && Margins"));
+ scAlignment->setText(tr("Alignment"));
+ scDistance->setText(tr("Columns && Indents"));
scFontFeatures->setText(tr("OpenType Features"));
scHyphenation->setText(tr("Hyphenation && Language"));
scOrphans->setText(tr("Orphans && Widows"));
Index: scribus/ui/propertywidget_alignment.cpp
===================================================================
--- scribus/ui/propertywidget_alignment.cpp (Revision 26452)
+++ scribus/ui/propertywidget_alignment.cpp (Arbeitskopie)
@@ -147,10 +147,8 @@
void PropertyWidget_Alignment::connectSignals()
{
- connect(tabsButton , SIGNAL(clicked()) , this, SLOT(handleTabs()), Qt::UniqueConnection);
connect(flopWidget->flopGroup, SIGNAL(idClicked(int)), this, SLOT(handleFirstLinePolicy(int)));
connect(opticalMarginsWidget, SIGNAL(opticalMarginChanged()), this, SLOT(handleOpticalMargins()) );
-// connect(opticalMarginsWidget->resetButton, SIGNAL(clicked()), this, SLOT(resetOpticalMargins()) );
connect(textAlignment , SIGNAL(State(int)) , this, SLOT(handleAlignment(int)));
connect(textVerticalAlignment, SIGNAL(State(int)), this, SLOT(handleVAlignment(int)));
connect(textDirection , SIGNAL(State(int)) , this, SLOT(handleDirection(int)));
@@ -158,10 +156,8 @@
void PropertyWidget_Alignment::disconnectSignals()
{
- disconnect(tabsButton , SIGNAL(clicked()) , this, SLOT(handleTabs()));
disconnect(flopWidget->flopGroup, SIGNAL(idClicked(int)), this, SLOT(handleFirstLinePolicy(int)));
disconnect(opticalMarginsWidget, SIGNAL(opticalMarginChanged()), this, SLOT(handleOpticalMargins()) );
-// disconnect(opticalMarginsWidget->resetButton, SIGNAL(clicked()), this, SLOT(resetOpticalMargins()) );
disconnect(textAlignment , SIGNAL(State(int)) , this, SLOT(handleAlignment(int)));
disconnect(textVerticalAlignment, SIGNAL(State(int)), this, SLOT(handleVAlignment(int)));
disconnect(textDirection , SIGNAL(State(int)) , this, SLOT(handleDirection(int)));
@@ -187,7 +183,6 @@
textVerticalAlignment->setEnabled(!m_item->isPathText());
flopWidget->setEnabled(!m_item->isPathText());
opticalMarginsWidget->setEnabled(!m_item->isPathText());
- tabsButton->setEnabled(!m_item->isPathText());
}
setEnabled(enabled);
}
@@ -286,37 +283,6 @@
m_haveItem = tmp;
}
-void PropertyWidget_Alignment::handleTabs()
-{
- if (!m_doc || !m_item)
- return;
-
- PageItem_TextFrame *tItem = m_item->asTextFrame();
- if (tItem == nullptr)
- return;
- const ParagraphStyle& style(m_doc->appMode == modeEdit ? tItem->currentStyle() : tItem->itemText.defaultStyle());
- TabManager *dia = new TabManager(this, m_doc->unitIndex(), style.tabValues(), tItem->columnWidth());
- if (dia->exec())
- {
- if (m_doc->appMode != modeEdit)
- {
- ParagraphStyle newStyle(m_item->itemText.defaultStyle());
- newStyle.setTabValues(dia->tabList());
- Selection tempSelection(this, false);
- tempSelection.addItem(m_item, true);
- m_doc->itemSelection_ApplyParagraphStyle(newStyle, &tempSelection);
- }
- else
- {
- ParagraphStyle newStyle;
- newStyle.setTabValues(dia->tabList());
- m_doc->itemSelection_ApplyParagraphStyle(newStyle);
- }
- m_item->update();
- }
- delete dia;
-}
-
void PropertyWidget_Alignment::handleAlignment(int a)
{
if (!m_haveDoc || !m_haveItem || !m_ScMW || m_ScMW->scriptIsRunning())
Index: scribus/ui/propertywidget_alignment.h
===================================================================
--- scribus/ui/propertywidget_alignment.h (Revision 26452)
+++ scribus/ui/propertywidget_alignment.h (Arbeitskopie)
@@ -53,17 +53,14 @@
void toggleLabelVisibility(bool v);
void showFirstLinePolicy(FirstLineOffsetPolicy f);
void showOpticalMargins(int e);
void showAlignment(int e);
void showDirection(int e);
private slots:
- void handleTabs();
void handleFirstLinePolicy(int);
void handleOpticalMargins();
-// void resetOpticalMargins();
-
void handleAlignment(int a);
void handleVAlignment(int a);
void handleDirection(int d);
Index: scribus/ui/propertywidget_distance.cpp
===================================================================
--- scribus/ui/propertywidget_distance.cpp (Revision 26452)
+++ scribus/ui/propertywidget_distance.cpp (Arbeitskopie)
@@ -28,23 +28,32 @@
layout()->setAlignment(Qt::AlignTop);
columnGap->setValues(0, 300, 2, 0);
- columns->setDecimals(0);
- columns->setSuffix("");
+ columns->setDecimals(0);
+ columns->setSuffix("");
- MarginStruct distances;
- distances.resetToZero();
+ MarginStruct distances;
+ distances.resetToZero();
- distanceWidget->setup(distances, 0, m_unitIndex, NewMarginWidget::DistanceWidgetFlags);
- distanceWidget->toggleLabelVisibility(false);
+ distanceWidget->setup(distances, 0, m_unitIndex, NewMarginWidget::DistanceWidgetFlags);
+ distanceWidget->toggleLabelVisibility(false);
- iconSetChange();
+ firstLineIndentSpin->setValues(-3000, 4000, 3, 0);
+ leftIndentSpin->setValues(0, 4000, 3, 0);
+ rightIndentSpin->setValues(0, 4000, 3, 0);
+
+ gapBeforeSpin->setValues(0, 300, 2, 0);
+ gapBeforeSpin->setSuffix(unitGetSuffixFromIndex(0));
+ gapAfterSpin->setValues(0, 300, 2, 0);
+ gapAfterSpin->setSuffix(unitGetSuffixFromIndex(0));
+
+ iconSetChange();
languageChange();
- columnGapCombo->setCurrentIndex(0);
+ columnGapCombo->setCurrentIndex(0);
- connect(ScQApp, SIGNAL(iconSetChanged()), this, SLOT(iconSetChange()));
+ connect(ScQApp, SIGNAL(iconSetChanged()), this, SLOT(iconSetChange()));
connect(ScQApp, SIGNAL(localeChanged()), this, SLOT(localeChange()));
- connect(ScQApp, SIGNAL(labelVisibilityChanged(bool)), this, SLOT(toggleLabelVisibility(bool)));
+ connect(ScQApp, SIGNAL(labelVisibilityChanged(bool)), this, SLOT(toggleLabelVisibility(bool)));
}
void PropertyWidget_Distance::setMainWindow(ScribusMainWindow* mw)
@@ -85,6 +94,18 @@
connect(m_doc , SIGNAL(docChanged()) , this, SLOT(handleSelectionChanged()));
}
+void PropertyWidget_Distance::updateStyle(const ParagraphStyle &newCurrent)
+{
+ if (!m_item)
+ return;
+
+ firstLineIndentSpin->setValue(newCurrent.firstIndent() * m_unitRatio);
+ leftIndentSpin->setValue(newCurrent.leftMargin() * m_unitRatio);
+ rightIndentSpin->setValue(newCurrent.rightMargin() * m_unitRatio);
+ gapBeforeSpin->setValue(newCurrent.gapBefore());
+ gapAfterSpin->setValue(newCurrent.gapAfter());
+}
+
void PropertyWidget_Distance::setCurrentItem(PageItem *item)
{
if (!m_ScMW || m_ScMW->scriptIsRunning())
@@ -130,20 +151,22 @@
columnGap->setValue(textItem->columnWidth() * m_unitRatio);
}
- MarginStruct distances;
- distances.set(
- textItem->textToFrameDistTop(),
- textItem->textToFrameDistLeft(),
- textItem->textToFrameDistBottom(),
- textItem->textToFrameDistRight()
- );
- distanceWidget->setPageHeight(m_item->height());
- distanceWidget->setPageWidth(m_item->width());
- distanceWidget->setNewValues(distances);
-
- columnGapLabel->setVisible(columns->value() != 1);
- columnGapSizeLabel->setVisible(columns->value() != 1);
-
+ MarginStruct distances;
+ distances.set(
+ textItem->textToFrameDistTop(),
+ textItem->textToFrameDistLeft(),
+ textItem->textToFrameDistBottom(),
+ textItem->textToFrameDistRight()
+ );
+ distanceWidget->setPageHeight(m_item->height());
+ distanceWidget->setPageWidth(m_item->width());
+ distanceWidget->setNewValues(distances);
+
+ columnGapLabel->setVisible(columns->value() != 1);
+ columnGapSizeLabel->setVisible(columns->value() != 1);
+
+ updateStyle(parStyle);
+
connectSignals();
}
@@ -151,8 +174,15 @@
{
connect(columns , SIGNAL(valueChanged(double)) , this, SLOT(handleColumns()), Qt::UniqueConnection);
connect(columnGap , SIGNAL(valueChanged(double)), this, SLOT(handleColumnGap()), Qt::UniqueConnection);
- connect(columnGapCombo, SIGNAL(activated(int)) , this, SLOT(handleGapSwitch()), Qt::UniqueConnection);
- connect(distanceWidget, SIGNAL(valuesChanged(MarginStruct)), this, SLOT(handleTextDistances()), Qt::UniqueConnection);
+ connect(columnGapCombo, SIGNAL(activated(int)) , this, SLOT(handleGapSwitch()), Qt::UniqueConnection);
+ connect(distanceWidget, SIGNAL(valuesChanged(MarginStruct)), this, SLOT(handleTextDistances()), Qt::UniqueConnection);
+ connect(tabsButton , SIGNAL(clicked()) , this, SLOT(handleTabs()), Qt::UniqueConnection);
+ connect(firstLineIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()), Qt::UniqueConnection);
+ connect(rightIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()), Qt::UniqueConnection);
+ connect(leftIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()), Qt::UniqueConnection);
+ connect(gapAfterSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()), Qt::UniqueConnection);
+ connect(gapBeforeSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()), Qt::UniqueConnection);
+
}
void PropertyWidget_Distance::disconnectSignals()
@@ -159,8 +189,14 @@
{
disconnect(columns , SIGNAL(valueChanged(double)) , this, SLOT(handleColumns()));
disconnect(columnGap , SIGNAL(valueChanged(double)), this, SLOT(handleColumnGap()));
- disconnect(columnGapCombo, SIGNAL(activated(int)) , this, SLOT(handleGapSwitch()));
- disconnect(distanceWidget, SIGNAL(valuesChanged(MarginStruct)), this, SLOT(handleTextDistances()));
+ disconnect(columnGapCombo, SIGNAL(activated(int)) , this, SLOT(handleGapSwitch()));
+ disconnect(distanceWidget, SIGNAL(valuesChanged(MarginStruct)), this, SLOT(handleTextDistances()));
+ disconnect(tabsButton , SIGNAL(clicked()) , this, SLOT(handleTabs()));
+ disconnect(firstLineIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()));
+ disconnect(rightIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()));
+ disconnect(leftIndentSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()));
+ disconnect(gapAfterSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()));
+ disconnect(gapBeforeSpin, SIGNAL(valueChanged(double)), this, SLOT(handleIndents()));
}
void PropertyWidget_Distance::configureWidgets()
@@ -209,13 +245,18 @@
// Nothing to do in this widget
}
-void PropertyWidget_Distance::iconSetChange()
-{
- IconManager &im = IconManager::instance();
-
- columnsLabel->setPixmap(im.loadPixmap("paragraph-columns"));
-}
-
+void PropertyWidget_Distance::iconSetChange()
+{
+ IconManager &im = IconManager::instance();
+
+ columnsLabel->setPixmap(im.loadPixmap("paragraph-columns"));
+ firstLineIndentLabel->setPixmap(im.loadPixmap("paragraph-indent-firstline"));
+ leftIndentLabel->setPixmap(im.loadPixmap("paragraph-indent-left"));
+ rightIndentLabel->setPixmap(im.loadPixmap("paragraph-indent-right"));
+ gapBeforeLabel->setPixmap(im.loadPixmap("paragraph-space-above") );
+ gapAfterLabel->setPixmap(im.loadPixmap("paragraph-space-below") );
+}
+
void PropertyWidget_Distance::showColumns(int r, double g)
{
if (!m_ScMW || m_ScMW->scriptIsRunning())
@@ -372,6 +413,41 @@
m_doc->regionsChanged()->update(QRect());
}
+void PropertyWidget_Distance::handleIndents()
+{
+ if (!m_doc || !m_item || !m_ScMW || m_ScMW->scriptIsRunning())
+ return;
+
+
+ PageItem_TextFrame *tItem = m_item->asTextFrame();
+ if (tItem == nullptr)
+ return;
+
+ if (m_doc->appMode != modeEdit)
+ {
+ ParagraphStyle newStyle(m_item->itemText.defaultStyle());
+ newStyle.setFirstIndent(firstLineIndentSpin->value() / m_unitRatio);
+ newStyle.setLeftMargin(leftIndentSpin->value() / m_unitRatio);
+ newStyle.setRightMargin(rightIndentSpin->value() / m_unitRatio);
+ newStyle.setGapBefore(gapBeforeSpin->value());
+ newStyle.setGapAfter(gapAfterSpin->value());
+ Selection tempSelection(this, false);
+ tempSelection.addItem(m_item, true);
+ m_doc->itemSelection_ApplyParagraphStyle(newStyle, &tempSelection);
+ }
+ else
+ {
+ ParagraphStyle newStyle;
+ newStyle.setFirstIndent(firstLineIndentSpin->value() / m_unitRatio);
+ newStyle.setLeftMargin(leftIndentSpin->value() / m_unitRatio);
+ newStyle.setRightMargin(rightIndentSpin->value() / m_unitRatio);
+ newStyle.setGapBefore(gapBeforeSpin->value());
+ newStyle.setGapAfter(gapAfterSpin->value());
+ m_doc->itemSelection_ApplyParagraphStyle(newStyle);
+ }
+ m_item->update();
+}
+
void PropertyWidget_Distance::changeEvent(QEvent *e)
{
if (e->type() == QEvent::LanguageChange)
@@ -386,18 +462,30 @@
{
retranslateUi(this);
- QSignalBlocker columnGapLabelBlocker(columnGapCombo);
- int oldColGapLabel = columnGapCombo->currentIndex();
- columnGapCombo->clear();
- columnGapCombo->addItem( tr("Gap:"));
- columnGapCombo->addItem( tr("Width:"));
- columnGapCombo->setCurrentIndex(oldColGapLabel);
+ QSignalBlocker columnGapLabelBlocker(columnGapCombo);
+ int oldColGapLabel = columnGapCombo->currentIndex();
+ columnGapCombo->clear();
+ columnGapCombo->addItem( tr("Gap:"));
+ columnGapCombo->addItem( tr("Width:"));
+ columnGapCombo->setCurrentIndex(oldColGapLabel);
QString ptSuffix = tr(" pt");
QString suffix = (m_doc) ? unitGetSuffixFromIndex(m_doc->unitIndex()) : ptSuffix;
columnGap->setSuffix(suffix);
-
+ firstLineIndentSpin->setSuffix(suffix);
+ leftIndentSpin->setSuffix(suffix);
+ rightIndentSpin->setSuffix(suffix);
+
+ firstLineIndentSpin->setToolTip(tr("Indentation for first line of the paragraph"));
+ leftIndentSpin->setToolTip(tr("Indentation from the left for the whole paragraph"));
+ rightIndentSpin->setToolTip(tr("Indentation from the right for the whole paragraph"));
+ firstLineIndentLabel->setToolTip(firstLineIndentSpin->toolTip());
+ leftIndentLabel->setToolTip(leftIndentSpin->toolTip());
+ rightIndentLabel->setToolTip(rightIndentSpin->toolTip());
+ tabsButton->setToolTip(tr("Edit tab settings of text frame..."));
+ gapBeforeLabel->setToolTip(tr("Space above a paragraph"));
+ gapAfterLabel->setToolTip(tr("Space below a paragraph"));
}
void PropertyWidget_Distance::unitChange()
@@ -406,13 +494,19 @@
return;
QSignalBlocker columnGapBlocker(columnGap);
- QSignalBlocker distancesBlocker(distanceWidget);
+ QSignalBlocker distancesBlocker(distanceWidget);
+ QSignalBlocker numberFirstLineIndentBlocker(firstLineIndentSpin);
+ QSignalBlocker numberLeftIndentBlocker(leftIndentSpin);
+ QSignalBlocker numberRightIndentBlocker(rightIndentSpin);
m_unitRatio = m_doc->unitRatio();
m_unitIndex = m_doc->unitIndex();
columnGap->setNewUnit(m_unitIndex);
- distanceWidget->setNewUnit(m_unitIndex);
+ distanceWidget->setNewUnit(m_unitIndex);
+ firstLineIndentSpin->setNewUnit(m_unitIndex);
+ leftIndentSpin->setNewUnit(m_unitIndex);
+ rightIndentSpin->setNewUnit(m_unitIndex);
}
void PropertyWidget_Distance::localeChange()
@@ -419,12 +513,22 @@
{
const QLocale& l(LocaleManager::instance().userPreferredLocale());
columnGap->setLocale(l);
- distanceWidget->setLocale(l);
+ distanceWidget->setLocale(l);
+ firstLineIndentSpin->setLocale(l);
+ leftIndentSpin->setLocale(l);
+ rightIndentSpin->setLocale(l);
+ gapAfterSpin->setLocale(l);
+ gapBeforeSpin->setLocale(l);
}
-
-void PropertyWidget_Distance::toggleLabelVisibility(bool v)
-{
- columnGapSizeLabel->setLabelVisibility(v);
- columnGapLabel->setLabelVisibility(v);
- columnsLabel->setLabelVisibility(v);
-}
+
+void PropertyWidget_Distance::toggleLabelVisibility(bool v)
+{
+ columnGapSizeLabel->setLabelVisibility(v);
+ columnGapLabel->setLabelVisibility(v);
+ columnsLabel->setLabelVisibility(v);
+ firstLineIndentLabel->setLabelVisibility(v);
+ leftIndentLabel->setLabelVisibility(v);
+ rightIndentLabel->setLabelVisibility(v);
+ gapBeforeLabel->setLabelVisibility(v);
+ gapAfterLabel->setLabelVisibility(v);
+}
Index: scribus/ui/propertywidget_distance.h
===================================================================
--- scribus/ui/propertywidget_distance.h (Revision 26452)
+++ scribus/ui/propertywidget_distance.h (Arbeitskopie)
@@ -42,15 +42,17 @@
void setMainWindow(ScribusMainWindow *mw);
void setDoc(ScribusDoc *d);
+ void updateStyle(const ParagraphStyle &newCurrent);
+
void handleAppModeChanged(int oldMode, int mode);
void handleSelectionChanged();
void handleUpdateRequest(int);
- void iconSetChange();
+ void iconSetChange();
void languageChange();
void unitChange();
void localeChange();
- void toggleLabelVisibility(bool v);
+ void toggleLabelVisibility(bool v);
void showColumns(int r, double g);
@@ -60,6 +62,7 @@
void handleGapSwitch();
void handleTabs();
void handleTextDistances();
+ void handleIndents();
};
#endif
|
|
|
Very nice work. Thank you martin. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2022-10-14 18:12 | digirew | New Issue | |
| 2022-10-14 18:12 | digirew | File Added: Screen Shot 2022-10-14 at 2.11.08 PM.png | |
| 2022-10-14 18:13 | digirew | Note Added: 0049786 | |
| 2024-11-27 19:51 | nitramr | Assigned To | => nitramr |
| 2024-11-27 19:51 | nitramr | Status | new => confirmed |
| 2024-11-27 19:51 | nitramr | Category | Usability => User Interface |
| 2024-11-27 19:51 | nitramr | Fixed in Version | => 1.7.0.svn |
| 2024-11-27 19:51 | nitramr | Target Version | => 1.7.0 |
| 2024-11-27 19:51 | nitramr | Patch | No => Yes |
| 2024-11-27 19:54 | nitramr | Note Added: 0051672 | |
| 2024-11-27 19:54 | nitramr | File Added: files.zip | |
| 2024-11-27 19:54 | nitramr | File Added: indents.png | |
| 2024-11-27 19:54 | nitramr | File Added: indents_2024-11-27_01.patch | |
| 2024-11-27 20:13 | nitramr | Note Added: 0051673 | |
| 2024-11-27 20:13 | nitramr | File Added: indents_2024-11-27_2.patch | |
| 2024-11-28 08:40 | ale | Note Added: 0051674 | |
| 2024-11-28 09:16 | nitramr | Note Added: 0051675 | |
| 2024-11-29 16:23 | nitramr | Note Added: 0051691 | |
| 2024-11-29 16:23 | nitramr | File Added: files-2.zip | |
| 2024-11-29 16:23 | nitramr | File Added: indents-2.png | |
| 2024-11-29 16:23 | nitramr | File Added: indents_2024-11-29_1.patch | |
| 2024-11-29 18:31 | PeterBenedek | Note Added: 0051693 | |
| 2024-12-05 19:58 | cbradney | Status | confirmed => resolved |
| 2024-12-05 19:58 | cbradney | Resolution | open => fixed |
| 2024-12-08 11:41 | cbradney | Status | resolved => closed |