dropCapStyles.patch (29,889 bytes)
Index: Scribus/scribus/fileloader.cpp
===================================================================
--- Scribus/scribus/fileloader.cpp (wersja 16905)
+++ Scribus/scribus/fileloader.cpp (kopia robocza)
@@ -407,6 +407,7 @@
vg.charStyle().setFont((*currDoc->AllFonts)[tmpf]);
vg.charStyle().setFontSize(qRound(ScCLocale::toDoubleC(pg.attribute("FONTSIZE"), 12.0) * 10.0));
vg.setHasDropCap(static_cast<bool>(pg.attribute("DROP", "0").toInt()));
+ vg.setDcCharStyleName(pg.attribute("DROPCHSTYLE", ""));
vg.setDropCapLines(pg.attribute("DROPLIN", "2").toInt());
vg.setDropCapOffset(ScCLocale::toDoubleC(pg.attribute("DROPDIST"), 0.0));
vg.charStyle().setFeatures(static_cast<StyleFlag>(pg.attribute("EFFECT", "0").toInt()).featureList());
Index: Scribus/scribus/pageitem_textframe.cpp
===================================================================
--- Scribus/scribus/pageitem_textframe.cpp (wersja 16924)
+++ Scribus/scribus/pageitem_textframe.cpp (kopia robocza)
@@ -1325,7 +1325,7 @@
if (current.itemsInLine == 0)
opticalMargins = style.opticalMargins();
- const CharStyle& charStyle = (hl->ch != SpecialChars::PARSEP? itemText.charStyle(a) : itemText.paragraphStyle(a).charStyle());
+ CharStyle charStyle = (hl->ch != SpecialChars::PARSEP? itemText.charStyle(a) : style.charStyle());
chstr = ExpandToken(a);
double hlcsize10 = charStyle.fontSize() / 10.0;
double scaleV = charStyle.scaleV() / 1000.0;
@@ -1350,6 +1350,31 @@
DropCmode = false;
}
}
+ if (a == 0 || itemText.text(a-1) == SpecialChars::PARSEP)
+ {
+ if (style.hasDropCap())
+ {
+ if (style.dcCharStyleName() == tr("No Style") || style.dcCharStyleName().isEmpty())
+ {
+ const QString& curParent(style.hasParent() ? style.parent() : style.name());
+ CharStyle newStyle;
+ newStyle.setParent(m_Doc->paragraphStyle(curParent).charStyle().name());
+ charStyle.setStyle(newStyle);
+ }
+ else if (charStyle.name() != style.dcCharStyleName())
+ charStyle.setStyle(m_Doc->charStyle(style.dcCharStyleName()));
+ itemText.setCharStyle(a, chstr.length(),charStyle);
+ }
+ else if (style.dcCharStyleName() != tr("No Style") && !style.dcCharStyleName().isEmpty())
+ //hasDropCap is cleared but is set dcCharStyleName = clear drop cap char style
+ {
+ const QString& curParent(style.hasParent() ? style.parent() : style.name());
+ CharStyle newStyle;
+ newStyle.setParent(m_Doc->paragraphStyle(curParent).charStyle().name());
+ charStyle.setStyle(newStyle);
+ itemText.setCharStyle(a, chstr.length(),charStyle);
+ }
+ }
{ // local block for 'fl'
StyleFlag fl = hl->effects();
Index: Scribus/scribus/ui/propertywidget_dropcap.cpp
===================================================================
--- Scribus/scribus/ui/propertywidget_dropcap.cpp (wersja 0)
+++ Scribus/scribus/ui/propertywidget_dropcap.cpp (wersja 0)
@@ -0,0 +1,150 @@
+/*
+For general Scribus (>=1.3.2) copyright and licensing information please refer
+to the COPYING file provided with the program. Following this notice may exist
+a copyright and/or license notice that predates the release of Scribus 1.3.2
+for which a new license (GPL+exception) is in place.
+*/
+
+#include "propertywidget_dropcap.h"
+#include "scribus.h"
+#include "units.h"
+#include "util.h"
+
+PropertyWidget_DropCap::PropertyWidget_DropCap(QWidget *parent) : QFrame(parent)
+{
+ setupUi(this);
+ setFrameStyle(QFrame::Box | QFrame::Plain);
+ setLineWidth(1);
+ layout()->setAlignment( Qt::AlignTop );
+
+ languageChange();
+
+ if (!m_doc) return;
+ dropCapCharStyleCombo->updateFormatList();
+}
+
+void PropertyWidget_DropCap::setDoc(ScribusDoc *doc)
+{
+ m_doc = doc;
+ dropCapCharStyleCombo->setDoc(doc);
+
+ if (!m_doc)
+ return;
+
+ m_unitRatio = m_doc->unitRatio();
+ m_unitIndex = m_doc->unitIndex();
+ dropCapOffset->setSuffix(unitGetSuffixFromIndex(0));
+}
+
+void PropertyWidget_DropCap::unitChange()
+{
+ if (!m_doc)
+ return;
+
+ m_unitRatio = m_doc->unitRatio();
+ m_unitIndex = m_doc->unitIndex();
+
+ dropCapOffset->blockSignals(true);
+ dropCapOffset->setNewUnit( m_unitIndex );
+ dropCapOffset->blockSignals(false);
+}
+
+void PropertyWidget_DropCap::updateCharStyles()
+{
+ dropCapCharStyleCombo->updateFormatList();
+}
+
+void PropertyWidget_DropCap::displayCharStyle(const QString& name)
+{
+ bool blocked = dropCapCharStyleCombo->blockSignals(true);
+ dropCapCharStyleCombo->setFormat(name);
+ dropCapCharStyleCombo->blockSignals(blocked);
+}
+
+void PropertyWidget_DropCap::enableDropCap(bool enable)
+{
+ dropCapLines->setEnabled(enable);
+ dropCapOffset->setEnabled(enable);
+ dropCapCharStyleCombo->setEnabled(enable);
+}
+
+void PropertyWidget_DropCap::updateStyle(const ParagraphStyle& newCurrent)
+{
+ disconnectSignals ();
+ dropCapBox->setChecked(newCurrent.hasDropCap());
+ dropCapLines->setValue(newCurrent.dropCapLines());
+ dropCapOffset->setValue(newCurrent.dropCapOffset() * m_unitRatio);
+ displayCharStyle(newCurrent.dcCharStyleName());
+ connectSignals ();
+}
+
+void PropertyWidget_DropCap::connectSignals()
+{
+ connect(dropCapBox, SIGNAL(stateChanged(int)), this, SLOT(handleDropCapUse()));
+ connect(dropCapLines, SIGNAL(valueChanged(int)), this, SLOT(handleDropCapLines()));
+ connect(dropCapOffset, SIGNAL(valueChanged(double)), this, SLOT(handleDropCapOffset()));
+ connect(dropCapCharStyleCombo, SIGNAL(activated(int)), this, SLOT(handleDropCapCharStyle()));
+}
+
+void PropertyWidget_DropCap::disconnectSignals()
+{
+ disconnect(dropCapBox, SIGNAL(stateChanged(int)), this, SLOT(handleDropCapUse()));
+ disconnect(dropCapLines, SIGNAL(valueChanged(int)), this, SLOT(handleDropCapLines()));
+ disconnect(dropCapOffset, SIGNAL(valueChanged(double)), this, SLOT(handleDropCapOffset()));
+ disconnect(dropCapCharStyleCombo, SIGNAL(activated(int)), this, SLOT(handleDropCapCharStyle()));
+}
+
+void PropertyWidget_DropCap::handleDropCapUse()
+{
+ if (!m_doc) return;
+ ParagraphStyle newStyle;
+ newStyle.setHasDropCap(dropCapBox->isChecked());
+ m_doc->itemSelection_ApplyParagraphStyle(newStyle);
+ enableDropCap(dropCapBox->isChecked());
+}
+
+void PropertyWidget_DropCap::handleDropCapLines()
+{
+ if (!m_doc) return;
+ ParagraphStyle newStyle;
+ newStyle.setDropCapLines(dropCapLines->value());
+ m_doc->itemSelection_ApplyParagraphStyle(newStyle);
+}
+
+void PropertyWidget_DropCap::handleDropCapOffset()
+{
+ if (!m_doc) return;
+ ParagraphStyle newStyle;
+ newStyle.setDropCapOffset(dropCapOffset->value());
+ m_doc->itemSelection_ApplyParagraphStyle(newStyle);
+}
+
+void PropertyWidget_DropCap::handleDropCapCharStyle()
+{
+ if (!m_doc) return;
+ ParagraphStyle newStyle;
+ QString name = dropCapCharStyleCombo->currentText();
+ if (!name.isEmpty())
+ newStyle.setDcCharStyleName(name);
+ m_doc->itemSelection_ApplyParagraphStyle(newStyle);
+}
+
+void PropertyWidget_DropCap::changeEvent(QEvent *e)
+{
+ if (e->type() == QEvent::LanguageChange)
+ {
+ languageChange();
+ return;
+ }
+ QWidget::changeEvent(e);
+}
+
+void PropertyWidget_DropCap::languageChange()
+{
+ dropCapBox->setText(tr("Use Drop Caps"));
+ dropCapLinesLabel->setText(tr("Drop Caps lines"));
+ dropCapOffsetLabel->setText(tr("Drop Caps offset"));
+ dropCapCharStyleLabel->setText(tr("Drop Cap use character style..."));
+ dropCapCharStyleCombo->setToolTip("<qt>" + tr("Choose chracter style or leave blank for use default paragraph style"));
+}
+
Index: Scribus/scribus/ui/propertywidget_dropcap.h
===================================================================
--- Scribus/scribus/ui/propertywidget_dropcap.h (wersja 0)
+++ Scribus/scribus/ui/propertywidget_dropcap.h (wersja 0)
@@ -0,0 +1,42 @@
+#ifndef PROPERTYWIDGET_DropCap_H
+#define PROPERTYWIDGET_DropCap_H
+
+#include "ui_propertywidget_dropcapbase.h"
+
+#include "propertywidgetbase.h"
+
+class ParagraphStyle;
+
+class PropertyWidget_DropCap : public QFrame, private Ui::PropertyWidget_DropCapBase, public PropertyWidgetBase
+{
+ Q_OBJECT
+
+public:
+ PropertyWidget_DropCap(QWidget *parent = 0);
+ ~PropertyWidget_DropCap() {}
+
+ void updateStyle(const ParagraphStyle& newCurrent);
+ void updateCharStyles();
+ void setDoc(ScribusDoc *doc);
+ void displayCharStyle(const QString& name);
+
+protected:
+ double m_unitRatio;
+ int m_unitIndex;
+ void changeEvent(QEvent *e);
+
+public slots:
+ void languageChange();
+ void unitChange();
+ void handleDropCapUse();
+ void handleDropCapLines();
+ void handleDropCapOffset();
+ void handleDropCapCharStyle();
+
+private:
+ void connectSignals();
+ void disconnectSignals();
+ void enableDropCap(bool);
+};
+
+#endif // PROPERTYWIDGET_DropCap_H
Index: Scribus/scribus/ui/smpstylewidget.h
===================================================================
--- Scribus/scribus/ui/smpstylewidget.h (wersja 16924)
+++ Scribus/scribus/ui/smpstylewidget.h (kopia robocza)
@@ -37,7 +37,7 @@
void showLineSpacing(QList<ParagraphStyle*> &pstyles);
void showSpaceAB(QList<ParagraphStyle*> &pstyles, int unitIndex);
- void showDropCap(QList<ParagraphStyle*> &pstyles, int unitIndex);
+ void showDropCap(QList<ParagraphStyle*> &pstyles, QList<CharStyle> &cstyles, int unitIndex);
void showAlignment(QList<ParagraphStyle*> &pstyles);
void showOpticalMargin(QList<ParagraphStyle*> &pstyles);
void showMinSpace(QList<ParagraphStyle*> &pstyles);
Index: Scribus/scribus/ui/propertiespalette_text.cpp
===================================================================
--- Scribus/scribus/ui/propertiespalette_text.cpp (wersja 16924)
+++ Scribus/scribus/ui/propertiespalette_text.cpp (kopia robocza)
@@ -19,6 +19,7 @@
#include "propertiespalette_utils.h"
#include "propertywidget_advanced.h"
#include "propertywidget_distance.h"
+#include "propertywidget_dropcap.h"
#include "propertywidget_flop.h"
#include "propertywidget_optmargins.h"
#include "propertywidget_orphans.h"
@@ -75,6 +76,9 @@
orphanBox = new PropertyWidget_Orphans(textTree);
orphanItem = textTree->addWidget( tr("Orphans and Widows"), orphanBox);
+ dropcapsBox = new PropertyWidget_DropCap(textTree);
+ dropcapsItem = textTree->addWidget( tr("Drop Cap"), dropcapsBox);
+
distanceWidgets = new PropertyWidget_Distance(textTree);
distanceItem = textTree->addWidget( tr("Columns & Text Distances"), distanceWidgets);
@@ -171,6 +175,7 @@
flopBox->setDoc(m_doc);
optMargins->setDoc(m_doc);
orphanBox->setDoc(m_doc);
+ dropcapsBox->setDoc(m_doc);
pathTextWidgets->setDoc(m_doc);
fonts->RebuildList(m_doc);
@@ -203,6 +208,7 @@
flopBox->setDoc(0);
optMargins->setDoc(0);
orphanBox->setDoc(0);
+ dropcapsBox->setDoc(0);
m_haveItem = false;
@@ -280,7 +286,10 @@
/*if (updateFlags & reqColorsUpdate)
updateColorList();*/
if (updateFlags & reqCharStylesUpdate)
+ {
charStyleCombo->updateFormatList();
+ dropcapsBox->updateCharStyles();
+ }
if (updateFlags & reqParaStylesUpdate)
paraStyleCombo->updateFormatList();
if (updateFlags & reqDefFontListUpdate)
@@ -291,6 +300,7 @@
{
paraStyleCombo->setDoc(m_haveDoc ? m_doc : 0);
charStyleCombo->setDoc(m_haveDoc ? m_doc : 0);
+ dropcapsBox->setDoc(m_haveDoc ? m_doc : 0);
}
}
@@ -370,6 +380,7 @@
flopItem->setHidden(true);
distanceItem->setHidden(true);
orphanItem->setHidden(true);
+ dropcapsItem->setHidden(true);
pathTextItem->setHidden(false);
pathTextWidgets->pathTextType->setCurrentIndex(m_item->textPathType);
pathTextWidgets->flippedPathText->setChecked(m_item->textPathFlipped);
@@ -382,6 +393,7 @@
flopItem->setHidden(false);
distanceItem->setHidden(false);
orphanItem->setHidden(false);
+ dropcapsItem->setHidden(false);
pathTextItem->setHidden(true);
}
else
@@ -389,6 +401,7 @@
flopItem->setHidden(false);
distanceItem->setHidden(false);
orphanItem->setHidden(false);
+ dropcapsItem->setHidden(false);
pathTextItem->setHidden(true);
}
@@ -424,6 +437,7 @@
flopBox->unitChange();
optMargins->unitChange();
pathTextWidgets->unitChange();
+ dropcapsBox->unitChange();
m_haveItem = tmp;
}
@@ -575,6 +589,7 @@
advancedWidgets->updateStyle(newCurrent);
colorWidgets->updateStyle(newCurrent);
orphanBox->updateStyle (newCurrent);
+ dropcapsBox->updateStyle(newCurrent);
displayFontFace(charStyle.font().scName());
displayFontSize(charStyle.fontSize());
@@ -594,6 +609,7 @@
void PropertiesPalette_Text::updateCharStyles()
{
charStyleCombo->updateFormatList();
+ dropcapsBox->updateCharStyles();
}
void PropertiesPalette_Text::updateParagraphStyles()
@@ -605,6 +621,7 @@
{
paraStyleCombo->updateFormatList();
charStyleCombo->updateFormatList();
+ dropcapsBox->updateCharStyles();
}
void PropertiesPalette_Text::displayAlignment(int e)
Index: Scribus/scribus/ui/smpstylewidget.cpp
===================================================================
--- Scribus/scribus/ui/smpstylewidget.cpp (wersja 16924)
+++ Scribus/scribus/ui/smpstylewidget.cpp (kopia robocza)
@@ -93,6 +93,7 @@
//dropCapsBox->setToolTip( tr("Enable or disable drop cap"));
dropCapLines_->setToolTip( tr("Drop Cap Lines"));
dropCapOffset_->setToolTip( tr("Drop Cap Offset"));
+ dropCapCharStyleCombo->setToolTip("<qt>" + tr("Choose chracter style or leave blank for use default paragraph style"));
alignement_->setToolTip( tr("Alignment"));
tabList_->first_->setToolTip( tr("First Line Indent"));
tabList_->left_->setToolTip( tr("Left Indent"));
@@ -293,6 +294,12 @@
lineSpacing_->setEnabled(pstyle->lineSpacingMode() == ParagraphStyle::FixedLineSpacing);
dropCapLines_->setEnabled(pstyle->hasDropCap());
dropCapOffset_->setEnabled(pstyle->hasDropCap());
+ dropCapCharStyleCombo->setEnabled(pstyle->hasDropCap());
+ dropCapCharStyleCombo->clear();
+ dropCapCharStyleCombo->addItem(tr("No Style"));
+ for (int i =0; i < cstyles.count(); i++)
+ dropCapCharStyleCombo->addItem(cstyles.at(i).name());
+ setCurrentComboItem(dropCapCharStyleCombo, pstyle->dcCharStyleName().isEmpty() ? tr("No Style") : pstyle->dcCharStyleName());
QFont f(font());
f.setBold(true);
@@ -311,7 +318,6 @@
parentCombo->addItem(pstyles[i].name());
}
}
-
if (pstyle->isDefaultStyle() || !hasParent_)
parentCombo->setCurrentIndex(0);
else
@@ -339,7 +345,7 @@
{
showLineSpacing(pstyles);
showSpaceAB(pstyles, unitIndex);
- showDropCap(pstyles, unitIndex);
+ showDropCap(pstyles, cstyles, unitIndex);
showAlignment(pstyles);
showOpticalMargin(pstyles);
showMinSpace(pstyles);
@@ -433,7 +439,7 @@
spaceBelow_->setValue(tmpA);
}
-void SMPStyleWidget::showDropCap(QList<ParagraphStyle*> &pstyles, int unitIndex)
+void SMPStyleWidget::showDropCap(QList<ParagraphStyle*> &pstyles, QList<CharStyle> &cstyles, int unitIndex)
{
double unitRatio = unitGetRatioFromIndex(unitIndex);
parentDropCapButton->hide();
@@ -483,10 +489,16 @@
else
dropCapOffset_->setValue(dco * unitRatio);
+ dropCapCharStyleCombo->clear();
+ dropCapCharStyleCombo->addItem(tr("No Style"));
+ for (int i=0; i < cstyles.count(); i++)
+ dropCapCharStyleCombo->addItem(cstyles.at(i).name());
+
connect(dropCapsBox, SIGNAL(toggled(bool)), this, SLOT(slotDropCap(bool)));
dropCapsBox->setEnabled(true);
dropCapLines_->setEnabled(true);
dropCapOffset_->setEnabled(true);
+ dropCapCharStyleCombo->setEnabled(true);
}
void SMPStyleWidget::showAlignment(QList<ParagraphStyle*> &pstyles)
@@ -820,12 +832,14 @@
dropCapsBox->setEnabled(true);
dropCapLines_->setEnabled(true);
dropCapOffset_->setEnabled(true);
+ dropCapCharStyleCombo->setEnabled(true);
}
else
{
dropCapsBox->setEnabled(true);
dropCapLines_->setEnabled(false);
dropCapOffset_->setEnabled(false);
+ dropCapCharStyleCombo->setEnabled(false);
}
if (hasParent_)
parentDropCapButton->show();
Index: Scribus/scribus/ui/smtextstyles.h
===================================================================
--- Scribus/scribus/ui/smtextstyles.h (wersja 16924)
+++ Scribus/scribus/ui/smtextstyles.h (kopia robocza)
@@ -75,6 +75,7 @@
void slotDropCap(bool isOn);
void slotDropCapLines(int lines);
void slotDropCapOffset();
+ void slotDropCapCharStyle(const QString &name);
void slotSpaceAbove();
void slotSpaceBelow();
void slotAlignment();
Index: Scribus/scribus/ui/propertiespalette_text.h
===================================================================
--- Scribus/scribus/ui/propertiespalette_text.h (wersja 16924)
+++ Scribus/scribus/ui/propertiespalette_text.h (kopia robocza)
@@ -25,6 +25,7 @@
class PageItem;
class PropertyWidget_Advanced;
class PropertyWidget_Distance;
+class PropertyWidget_DropCap;
class PropertyWidget_Flop;
class PropertyWidget_OptMargins;
class PropertyWidget_Orphans;
@@ -154,7 +155,10 @@
PropertyWidget_Orphans* orphanBox;
QTreeWidgetItem* orphanItem;
-
+
+ PropertyWidget_DropCap* dropcapsBox;
+ QTreeWidgetItem* dropcapsItem;
+
PropertyWidget_PathText* pathTextWidgets;
QTreeWidgetItem* pathTextItem;
Index: Scribus/scribus/ui/propertywidget_dropcapbase.ui
===================================================================
--- Scribus/scribus/ui/propertywidget_dropcapbase.ui (wersja 0)
+++ Scribus/scribus/ui/propertywidget_dropcapbase.ui (wersja 0)
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>PropertyWidget_DropCapBase</class>
+ <widget class="QFrame" name="PropertyWidget_DropCapBase">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>211</width>
+ <height>142</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout" columnstretch="0,0">
+ <item row="1" column="0">
+ <widget class="QLabel" name="dropCapLinesLabel">
+ <property name="toolTip">
+ <string>Ensure that first lines of a paragraph won't end up separated from the rest (known as widow/orphan control)</string>
+ </property>
+ <property name="text">
+ <string>Height</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QSpinBox" name="dropCapLines">
+ <property name="suffix">
+ <string> lines</string>
+ </property>
+ <property name="maximum">
+ <number>10</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="dropCapOffsetLabel">
+ <property name="text">
+ <string>Offset</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QCheckBox" name="dropCapBox">
+ <property name="text">
+ <string>use Drop Caps</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <widget class="QLabel" name="dropCapCharStyleLabel">
+ <property name="text">
+ <string>Use Character Style</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0" colspan="2">
+ <widget class="CharStyleComboBox" name="dropCapCharStyleCombo"/>
+ </item>
+ <item row="2" column="1">
+ <widget class="ScrSpinBox" name="dropCapOffset">
+ <property name="minimum">
+ <double>-99.989999999999995</double>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>ScrSpinBox</class>
+ <extends>QDoubleSpinBox</extends>
+ <header>ui/scrspinbox.h</header>
+ </customwidget>
+ <customwidget>
+ <class>CharStyleComboBox</class>
+ <extends>QComboBox</extends>
+ <header>ui/spalette.h</header>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
Index: Scribus/scribus/ui/smpstylewidget.ui
===================================================================
--- Scribus/scribus/ui/smpstylewidget.ui (wersja 16924)
+++ Scribus/scribus/ui/smpstylewidget.ui (kopia robocza)
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>714</width>
- <height>580</height>
+ <height>599</height>
</rect>
</property>
<layout class="QVBoxLayout">
@@ -257,58 +257,59 @@
<item>
<layout class="QHBoxLayout">
<item>
- <layout class="QVBoxLayout">
- <item>
- <layout class="QHBoxLayout">
- <item>
- <widget class="QLabel" name="label">
- <property name="text">
- <string>&Lines:</string>
- </property>
- <property name="buddy">
- <cstring>dropCapLines_</cstring>
- </property>
- </widget>
- </item>
- <item>
- <widget class="SMSpinBox" name="dropCapLines_">
- <property name="minimum">
- <number>2</number>
- </property>
- <property name="maximum">
- <number>20</number>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout">
- <item>
- <widget class="QLabel" name="label_2">
- <property name="text">
- <string>Distance from Text:</string>
- </property>
- <property name="buddy">
- <cstring>dropCapOffset_</cstring>
- </property>
- </widget>
- </item>
- <item>
- <widget class="SMScrSpinBox" name="dropCapOffset_">
- <property name="minimum">
- <number>-3000</number>
- </property>
- <property name="maximum">
- <number>3000</number>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>&Lines:</string>
+ </property>
+ <property name="buddy">
+ <cstring>dropCapLines_</cstring>
+ </property>
+ </widget>
</item>
<item>
+ <widget class="SMSpinBox" name="dropCapLines_">
+ <property name="minimum">
+ <number>2</number>
+ </property>
+ <property name="maximum">
+ <number>20</number>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Distance from Text:</string>
+ </property>
+ <property name="buddy">
+ <cstring>dropCapOffset_</cstring>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="SMScrSpinBox" name="dropCapOffset_">
+ <property name="minimum">
+ <number>-3000</number>
+ </property>
+ <property name="maximum">
+ <number>3000</number>
+ </property>
+ </widget>
+ </item>
+ <item>
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
@@ -324,6 +325,16 @@
</layout>
</item>
<item>
+ <widget class="QLabel" name="dropCapCharStyleComboLabel">
+ <property name="text">
+ <string>Character Style for Drop Cap:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="SMScComboBox" name="dropCapCharStyleCombo"/>
+ </item>
+ <item>
<widget class="QToolButton" name="parentDropCapButton">
<property name="enabled">
<bool>true</bool>
Index: Scribus/scribus/ui/smtextstyles.cpp
===================================================================
--- Scribus/scribus/ui/smtextstyles.cpp (wersja 16924)
+++ Scribus/scribus/ui/smtextstyles.cpp (kopia robocza)
@@ -515,6 +515,7 @@
connect(pwidget_->dropCapsBox, SIGNAL(toggled(bool)), this, SLOT(slotDropCap(bool)));
connect(pwidget_->dropCapLines_, SIGNAL(valueChanged(int)), this, SLOT(slotDropCapLines(int)));
connect(pwidget_->dropCapOffset_, SIGNAL(valueChanged(double)), this, SLOT(slotDropCapOffset()));
+ connect(pwidget_->dropCapCharStyleCombo, SIGNAL(activated(const QString&)), this, SLOT(slotDropCapCharStyle(const QString&)));
connect(pwidget_->keepLinesStart, SIGNAL(valueChanged(int)), this, SLOT(handleKeepLinesStart()));
connect(pwidget_->keepLinesEnd, SIGNAL(valueChanged(int)), this, SLOT(handleKeepLinesEnd()));
@@ -592,6 +593,7 @@
disconnect(pwidget_->dropCapsBox, SIGNAL(toggled(bool)), this, SLOT(slotDropCap(bool)));
disconnect(pwidget_->dropCapLines_, SIGNAL(valueChanged(int)), this, SLOT(slotDropCapLines(int)));
disconnect(pwidget_->dropCapOffset_, SIGNAL(valueChanged(double)), this, SLOT(slotDropCapOffset()));
+ disconnect(pwidget_->dropCapCharStyleCombo, SIGNAL(activated(const QString&)), this, SLOT(slotDropCapCharStyle(const QString&)));
disconnect(pwidget_->parentCombo, SIGNAL(activated(const QString&)),
this, SLOT(slotParentChanged(const QString&)));
@@ -911,6 +913,23 @@
}
}
+void SMParagraphStyle::slotDropCapCharStyle(const QString& name)
+{
+ if (pwidget_->dropCapCharStyleCombo->useParentValue())
+ for (int i = 0; i < selection_.count(); ++i)
+ selection_[i]->resetDcCharStyleName();
+ else
+ for (int i = 0; i < selection_.count(); ++i)
+ selection_[i]->setDcCharStyleName(name);
+
+ if (!selectionIsDirty_)
+ {
+ selectionIsDirty_ = true;
+ emit selectionDirty();
+ }
+}
+
+
void SMParagraphStyle::handleKeepLinesStart()
{
if (pwidget_->keepLinesStart->useParentValue())
Index: Scribus/scribus/styles/paragraphstyle.attrdefs.cxx
===================================================================
--- Scribus/scribus/styles/paragraphstyle.attrdefs.cxx (wersja 16905)
+++ Scribus/scribus/styles/paragraphstyle.attrdefs.cxx (kopia robocza)
@@ -39,4 +39,5 @@
ATTRDEF(int, keepLinesEnd, KeepLinesEnd, 0)
ATTRDEF(bool, keepWithNext, KeepWithNext, false)
ATTRDEF(bool, keepTogether, KeepTogether, false)
+ATTRDEF(QString, dcCharStyleName, DcCharStyleName,"")
Index: Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp
===================================================================
--- Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp (wersja 16924)
+++ Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp (kopia robocza)
@@ -608,6 +608,8 @@
docu.writeAttribute("NACH", style.gapAfter());
if ( ! style.isInhHasDropCap())
docu.writeAttribute("DROP", static_cast<int>(style.hasDropCap()));
+ if ( ! style.isInhDcCharStyleName())
+ docu.writeAttribute("DROPCHSTYLE", style.dcCharStyleName());
if ( ! style.isInhDropCapLines())
docu.writeAttribute("DROPLIN", style.dropCapLines());
if ( ! style.isInhDropCapOffset())
Index: Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp
===================================================================
--- Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp (wersja 16924)
+++ Scribus/scribus/plugins/fileloader/scribus150format/scribus150format.cpp (kopia robocza)
@@ -2086,6 +2086,10 @@
if (attrs.hasAttribute(DROP))
newStyle.setHasDropCap(static_cast<bool>(attrs.valueAsInt(DROP)));
+ static const QString DROPCHSTYLE("DROPCHSTYLE");
+ if (attrs.hasAttribute(DROPCHSTYLE))
+ newStyle.setDcCharStyleName(attrs.valueAsString(DROPCHSTYLE));
+
static const QString DROPLIN("DROPLIN");
if (attrs.hasAttribute(DROPLIN))
newStyle.setDropCapLines(attrs.valueAsInt(DROPLIN));
Index: Scribus/scribus/CMakeLists.txt
===================================================================
--- Scribus/scribus/CMakeLists.txt (wersja 16905)
+++ Scribus/scribus/CMakeLists.txt (kopia robocza)
@@ -133,6 +133,7 @@
ui/propertiespalette_xyzbase.ui
ui/propertywidget_advancedbase.ui
ui/propertywidget_distancebase.ui
+ ui/propertywidget_dropcapbase.ui
ui/propertywidget_flopbase.ui
ui/propertywidget_optmarginsbase.ui
ui/propertywidget_orphansbase.ui
@@ -379,6 +380,7 @@
ui/propertiespalette_xyz.h
ui/propertywidget_advanced.h
ui/propertywidget_distance.h
+ ui/propertywidget_dropcap.h
ui/propertywidget_flop.h
ui/propertywidget_optmargins.h
ui/propertywidget_orphans.h
@@ -799,6 +801,7 @@
ui/propertiespalette_xyz.cpp
ui/propertywidget_advanced.cpp
ui/propertywidget_distance.cpp
+ ui/propertywidget_dropcap.cpp
ui/propertywidget_flop.cpp
ui/propertywidget_optmargins.cpp
ui/propertywidget_orphans.cpp