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. | ||||
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 |