r16785 by jghali - #10173: Crash on search/replace with text alignment change

scribus-commit scribus-commit at lists.scribus.net
Fri Aug 12 11:33:01 UTC 2011


Author: jghali
Date: Fri Aug 12 11:33:01 2011
New Revision: 16785

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=16785
Log:
#10173: Crash on search/replace with text alignment change

Modified:
    trunk/Scribus/scribus/ui/search.cpp
    trunk/Scribus/scribus/ui/search.h
    trunk/Scribus/scribus/ui/storyeditor.h

Modified: trunk/Scribus/scribus/ui/search.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=16785&path=/trunk/Scribus/scribus/ui/search.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/search.cpp (original)
+++ trunk/Scribus/scribus/ui/search.cpp Fri Aug 12 11:33:01 2011
@@ -65,43 +65,39 @@
 	SText->setText( tr( "Text" ) );
 	SearchLayout->addWidget( SText, 0, 0 );
 	SStyle = new QCheckBox( Search );
-	SStyle->setText( tr( "Alignment" ) );
+	SStyle->setText( tr( "Style" ) );
 	SearchLayout->addWidget( SStyle, 1, 0 );
+	SAlign = new QCheckBox( Search );
+	SAlign->setText( tr( "Alignment" ) );
+	SearchLayout->addWidget( SAlign, 2, 0 );
 	SFont = new QCheckBox( Search );
 	SFont->setText( tr( "Font" ) );
-	SearchLayout->addWidget( SFont, 2, 0 );
+	SearchLayout->addWidget( SFont, 3, 0 );
 	SSize = new QCheckBox( Search );
 	SSize->setText( tr( "Font Size" ) );
-	SearchLayout->addWidget( SSize, 3, 0 );
+	SearchLayout->addWidget( SSize, 4, 0 );
 	SEffect = new QCheckBox( Search );
 	SEffect->setText( tr( "Font Effects" ) );
-	SearchLayout->addWidget( SEffect );
+	SearchLayout->addWidget( SEffect, 5, 0 );
 	SFill = new QCheckBox( Search);
 	SFill->setText( tr( "Fill Color" ) );
-	SearchLayout->addWidget( SFill );
+	SearchLayout->addWidget( SFill, 6, 0 );
 	SFillS = new QCheckBox( Search );
 	SFillS->setText( tr( "Fill Shade" ) );
-	SearchLayout->addWidget( SFillS );
+	SearchLayout->addWidget( SFillS, 7, 0 );
 	SStroke = new QCheckBox( Search );
 	SStroke->setText( tr( "Stroke Color" ) );
-	SearchLayout->addWidget( SStroke );
+	SearchLayout->addWidget( SStroke, 8, 0 );
 	SStrokeS = new QCheckBox( Search );
 	SStrokeS->setText( tr( "Stroke Shade" ) );
-	SearchLayout->addWidget( SStrokeS, 8, 0 );
+	SearchLayout->addWidget( SStrokeS, 9, 0 );
 	STextVal = new QLineEdit( Search );
 	STextVal->setEnabled(false);
 	SearchLayout->addWidget( STextVal, 0, 1 );
 	SStyleVal = new QComboBox( Search );
 	SStyleVal->setEditable(false);
-	QString tmp_sty[] = { tr("Left"), tr("Center"), tr("Right"), tr("Block"), tr("Forced")};
-	size_t ar_sty = sizeof(tmp_sty) / sizeof(*tmp_sty);
-	for (uint a = 0; a < ar_sty; ++a)
-		SStyleVal->addItem(tmp_sty[a]);
-//	if (doc->docParagraphStyles.count() >5)
-	{
-		for (int x = 0; x < doc->paragraphStyles().count(); ++x)
-			SStyleVal->addItem(doc->paragraphStyles()[x].name());
-	}
+	for (int x = 0; x < doc->paragraphStyles().count(); ++x)
+		SStyleVal->addItem(doc->paragraphStyles()[x].name());
 	QListView *tmpView = dynamic_cast<QListView*>(SStyleVal->view()); Q_ASSERT(tmpView);
 	int tmpWidth = tmpView->sizeHintForColumn(0);
 	if (tmpWidth > 0)
@@ -109,39 +105,51 @@
 	SStyleVal->setCurrentIndex(findParagraphStyle(doc, doc->currentStyle));
 	SStyleVal->setEnabled(false);
 	SearchLayout->addWidget( SStyleVal, 1, 1 );
+	SAlignVal = new QComboBox( Search );
+	SAlignVal->setEditable(false);
+	QString tmp_sty[] = { tr("Left"), tr("Center"), tr("Right"), tr("Block"), tr("Forced")};
+	size_t ar_sty = sizeof(tmp_sty) / sizeof(*tmp_sty);
+	for (uint a = 0; a < ar_sty; ++a)
+		SAlignVal->addItem( tmp_sty[a] );
+	tmpView = dynamic_cast<QListView*>(SAlignVal->view()); Q_ASSERT(tmpView);
+	tmpWidth = tmpView->sizeHintForColumn(0);
+	if (tmpWidth > 0)
+		tmpView->setMinimumWidth(tmpWidth + 24);
+	SAlignVal->setEnabled(false);
+	SearchLayout->addWidget( SAlignVal, 2, 1 );
 	SFontVal = new FontCombo(Search);
 	SFontVal->setMaximumSize(190, 30);
 	setCurrentComboItem(SFontVal, doc->currentStyle.charStyle().font().scName());
 	SFontVal->setEnabled(false);
-	SearchLayout->addWidget( SFontVal, 2, 1 );
+	SearchLayout->addWidget( SFontVal, 3, 1 );
 	SSizeVal = new ScrSpinBox( 0.5, 2048, Search, 0 );
 	SSizeVal->setValue( doc->currentStyle.charStyle().fontSize() / 10.0 );
 	SSizeVal->setEnabled(false);
-	SearchLayout->addWidget( SSizeVal, 3, 1 );
+	SearchLayout->addWidget( SSizeVal, 4, 1 );
 	SEffVal = new StyleSelect( Search );
 	SEffVal->setStyle(0);
 	SEffVal->setEnabled(false);
-	SearchLayout->addWidget( SEffVal, 4, 1, Qt::AlignLeft );
+	SearchLayout->addWidget( SEffVal, 5, 1, Qt::AlignLeft );
 	SFillVal = new ColorCombo( Search );
 	SFillVal->setEditable(false);
 	SFillVal->updateBox(doc->PageColors, ColorCombo::fancyPixmaps, true);
 	SFillVal->setMinimumWidth(SFillVal->view()->maximumViewportSize().width() + 24);
 	setCurrentComboItem(SFillVal, doc->currentStyle.charStyle().fillColor());
 	SFillVal->setEnabled(false);
-	SearchLayout->addWidget( SFillVal, 5, 1 );
+	SearchLayout->addWidget( SFillVal, 6, 1 );
 	SFillSVal = new ShadeButton(Search);
 	SFillSVal->setEnabled(false);
-	SearchLayout->addWidget( SFillSVal, 6, 1, Qt::AlignLeft );
+	SearchLayout->addWidget( SFillSVal, 7, 1, Qt::AlignLeft );
 	SStrokeVal = new ColorCombo( Search );
 	SStrokeVal->setEditable(false);
 	SStrokeVal->updateBox(doc->PageColors, ColorCombo::fancyPixmaps, true);
 	SStrokeVal->view()->setMinimumWidth(SStrokeVal->view()->maximumViewportSize().width() + 24);
 	setCurrentComboItem(SStrokeVal, doc->currentStyle.charStyle().strokeColor());
 	SStrokeVal->setEnabled(false);
-	SearchLayout->addWidget( SStrokeVal, 7, 1 );
+	SearchLayout->addWidget( SStrokeVal, 8, 1 );
 	SStrokeSVal =  new ShadeButton(Search);
 	SStrokeSVal->setEnabled(false);
-	SearchLayout->addWidget( SStrokeSVal, 8, 1, Qt::AlignLeft );
+	SearchLayout->addWidget( SStrokeSVal, 9, 1, Qt::AlignLeft );
 	SelLayout->addWidget( Search );
 
 	Replace = new QGroupBox( this );
@@ -154,41 +162,39 @@
 	RText->setText( tr( "Text" ) );
 	ReplaceLayout->addWidget( RText, 0, 0 );
 	RStyle = new QCheckBox( Replace );
-	RStyle->setText( tr( "Alignment" ) );
+	RStyle->setText( tr( "Style" ) );
 	ReplaceLayout->addWidget( RStyle, 1, 0 );
+	RAlign = new QCheckBox( Replace );
+	RAlign->setText( tr( "Alignment" ) );
+	ReplaceLayout->addWidget( RAlign, 2, 0 );
 	RFont = new QCheckBox( Replace );
 	RFont->setText( tr( "Font" ) );
-	ReplaceLayout->addWidget( RFont, 2, 0 );
+	ReplaceLayout->addWidget( RFont, 3, 0 );
 	RSize = new QCheckBox( Replace );
 	RSize->setText( tr( "Font Size" ) );
-	ReplaceLayout->addWidget( RSize, 3, 0 );
+	ReplaceLayout->addWidget( RSize, 4, 0 );
 	REffect = new QCheckBox( Replace );
 	REffect->setText( tr( "Font Effects" ) );
-	ReplaceLayout->addWidget( REffect, 4, 0 );
+	ReplaceLayout->addWidget( REffect, 5, 0 );
 	RFill = new QCheckBox( Replace );
 	RFill->setText( tr( "Fill Color" ) );
-	ReplaceLayout->addWidget( RFill, 5, 0 );
+	ReplaceLayout->addWidget( RFill, 6, 0 );
 	RFillS = new QCheckBox( Replace );
 	RFillS->setText( tr( "Fill Shade" ) );
-	ReplaceLayout->addWidget( RFillS, 6, 0 );
+	ReplaceLayout->addWidget( RFillS, 7, 0 );
 	RStroke = new QCheckBox( Replace );
 	RStroke->setText( tr( "Stroke Color" ) );
-	ReplaceLayout->addWidget( RStroke, 7, 0 );
+	ReplaceLayout->addWidget( RStroke, 8, 0 );
 	RStrokeS = new QCheckBox( Replace );
 	RStrokeS->setText( tr( "Stroke Shade" ) );
-	ReplaceLayout->addWidget( RStrokeS, 8, 0 );
+	ReplaceLayout->addWidget( RStrokeS, 9, 0 );
 	RTextVal = new QLineEdit( Replace );
 	RTextVal->setEnabled(false);
 	ReplaceLayout->addWidget( RTextVal, 0, 1 );
 	RStyleVal = new QComboBox( Replace );
 	RStyleVal->setEditable(false);
-	for (uint a = 0; a < ar_sty; ++a)
-		RStyleVal->addItem(tmp_sty[a]);
-//	if (doc->docParagraphStyles.count() > 5)
-	{
-		for (int x = 0; x < doc->paragraphStyles().count(); ++x)
-			RStyleVal->addItem(doc->paragraphStyles()[x].name());
-	}
+	for (int x = 0; x < doc->paragraphStyles().count(); ++x)
+		RStyleVal->addItem(doc->paragraphStyles()[x].name());
 	tmpView = dynamic_cast<QListView*>(RStyleVal->view()); Q_ASSERT(tmpView);
 	tmpWidth = tmpView->sizeHintForColumn(0);
 	if (tmpWidth > 0)
@@ -196,39 +202,49 @@
 	RStyleVal->setCurrentIndex(findParagraphStyle(doc, doc->currentStyle));
 	RStyleVal->setEnabled(false);
 	ReplaceLayout->addWidget( RStyleVal, 1, 1 );
+	RAlignVal = new QComboBox( Replace );
+	RAlignVal->setEditable(false);
+	for (uint a = 0; a < ar_sty; ++a)
+		RAlignVal->addItem(tmp_sty[a]);
+	tmpView = dynamic_cast<QListView*>(RAlignVal->view()); Q_ASSERT(tmpView);
+	tmpWidth = tmpView->sizeHintForColumn(0);
+	if (tmpWidth > 0)
+		tmpView->setMinimumWidth(tmpWidth + 24);
+	RAlignVal->setEnabled(false);
+	ReplaceLayout->addWidget( RAlignVal, 2, 1 );
 	RFontVal = new FontCombo(Replace);
 	RFontVal->setMaximumSize(190, 30);
 	setCurrentComboItem(RFontVal, doc->currentStyle.charStyle().font().scName());
 	RFontVal->setEnabled(false);
-	ReplaceLayout->addWidget( RFontVal, 2, 1 );
+	ReplaceLayout->addWidget( RFontVal, 3, 1 );
 	RSizeVal = new ScrSpinBox( 0.5, 2048, Replace, 0 );
 	RSizeVal->setValue( doc->currentStyle.charStyle().fontSize() / 10.0 );
 	RSizeVal->setEnabled(false);
-	ReplaceLayout->addWidget( RSizeVal, 3, 1 );
+	ReplaceLayout->addWidget( RSizeVal, 4, 1 );
 	REffVal = new StyleSelect( Replace );
 	REffVal->setStyle(0);
 	REffVal->setEnabled(false);
-	ReplaceLayout->addWidget( REffVal, 4, 1, Qt::AlignLeft );
+	ReplaceLayout->addWidget( REffVal, 5, 1, Qt::AlignLeft );
 	RFillVal = new ColorCombo( true, Replace );
 	RFillVal->setEditable(false);
 	RFillVal->updateBox(doc->PageColors, ColorCombo::fancyPixmaps, true);
 	RFillVal->view()->setMinimumWidth(RFillVal->view()->maximumViewportSize().width() + 24);
 	setCurrentComboItem(RFillVal, doc->currentStyle.charStyle().fillColor());
 	RFillVal->setEnabled(false);
-	ReplaceLayout->addWidget( RFillVal, 5, 1 );
+	ReplaceLayout->addWidget( RFillVal, 6, 1 );
 	RFillSVal = new ShadeButton(Replace);
 	RFillSVal->setEnabled(false);
-	ReplaceLayout->addWidget( RFillSVal, 6, 1, Qt::AlignLeft );
+	ReplaceLayout->addWidget( RFillSVal, 7, 1, Qt::AlignLeft );
 	RStrokeVal = new ColorCombo( true, Replace );
 	RStrokeVal->setEditable(false);
 	RStrokeVal->updateBox(doc->PageColors, ColorCombo::fancyPixmaps, true);
 	RStrokeVal->view()->setMinimumWidth(RStrokeVal->view()->maximumViewportSize().width() + 24);
 	setCurrentComboItem(RStrokeVal, doc->currentStyle.charStyle().strokeColor());
 	RStrokeVal->setEnabled(false);
-	ReplaceLayout->addWidget( RStrokeVal, 7, 1 );
+	ReplaceLayout->addWidget( RStrokeVal, 8, 1 );
 	RStrokeSVal = new ShadeButton(Replace);;
 	RStrokeSVal->setEnabled(false);
-	ReplaceLayout->addWidget( RStrokeSVal, 8, 1, Qt::AlignLeft );
+	ReplaceLayout->addWidget( RStrokeSVal, 9, 1, Qt::AlignLeft );
 	SelLayout->addWidget( Replace );
 	SearchReplaceLayout->addLayout( SelLayout );
 
@@ -272,6 +288,7 @@
 	connect( AllReplace, SIGNAL( clicked() ), this, SLOT( slotReplaceAll() ) );
 	connect( SText, SIGNAL( clicked() ), this, SLOT( enableTxSearch() ) );
 	connect( SStyle, SIGNAL( clicked() ), this, SLOT( enableStyleSearch() ) );
+	connect( SAlign, SIGNAL( clicked() ), this, SLOT( enableAlignSearch() ) );
 	connect( SFont, SIGNAL( clicked() ), this, SLOT( enableFontSearch() ) );
 	connect( SSize, SIGNAL( clicked() ), this, SLOT( enableSizeSearch() ) );
 	connect( SEffect, SIGNAL( clicked() ), this, SLOT( enableEffSearch() ) );
@@ -281,6 +298,7 @@
 	connect( SStroke, SIGNAL( clicked() ), this, SLOT( enableStrokeSearch() ) );
 	connect( RText, SIGNAL( clicked() ), this, SLOT( enableTxReplace() ) );
 	connect( RStyle, SIGNAL( clicked() ), this, SLOT( enableStyleReplace() ) );
+	connect( RAlign, SIGNAL( clicked() ), this, SLOT( enableAlignReplace() ) );
 	connect( RFont, SIGNAL( clicked() ), this, SLOT( enableFontReplace() ) );
 	connect( RSize, SIGNAL( clicked() ), this, SLOT( enableSizeReplace() ) );
 	connect( REffect, SIGNAL( clicked() ), this, SLOT( enableEffReplace() ) );
@@ -306,7 +324,8 @@
 	setTabOrder( SFill, SStroke );
 	setTabOrder( SStroke, STextVal );
 	setTabOrder( STextVal, SStyleVal );
-	setTabOrder( SStyleVal, SFontVal );
+	setTabOrder( SStyleVal, SAlignVal );
+	setTabOrder( SAlignVal, SFontVal );
 	setTabOrder( SFontVal, SSizeVal );
 	setTabOrder( SSizeVal, SEffVal );
 	setTabOrder( SEffVal, SFillVal );
@@ -320,7 +339,8 @@
 	setTabOrder( RFill, RStroke );
 	setTabOrder( RStroke, RTextVal );
 	setTabOrder( RTextVal, RStyleVal );
-	setTabOrder( RStyleVal, RFontVal );
+	setTabOrder( RStyleVal, RAlignVal );
+	setTabOrder( RAlignVal, RFontVal );
 	setTabOrder( RFontVal, RSizeVal );
 	setTabOrder( RSizeVal, REffVal );
 	setTabOrder( REffVal, RFillVal );
@@ -364,6 +384,7 @@
 	QString sText = "";
 	NotFound = true;
 	int sStyle = 0;
+	int sAlign = 0;
 	int sSize = 0;
 	int sEff = 0;
 	int sFillSh = 100;
@@ -392,6 +413,8 @@
 		sFont = SFontVal->currentText();
 	if (SStyle->isChecked())
 		sStyle = SStyleVal->currentIndex();
+	if (SAlign->isChecked())
+		sAlign = SAlignVal->currentIndex();
 	if (SSize->isChecked())
 		sSize = qRound(SSizeVal->value() * 10);
 	if (sText.length() > 0)
@@ -428,10 +451,15 @@
 #ifndef NLS_PROTO
 			if (SStyle->isChecked())
 			{
-//				if (Item->itemText.item(a)->cab != sStyle)
-//					found = false;
+				if (Item->itemText.paragraphStyle(a).parent() != Doc->paragraphStyles()[sStyle].name())
+					found = false;
 			}
 #endif
+			if (SAlign->isChecked())
+			{
+				if (Item->itemText.paragraphStyle(a).alignment() != sAlign)
+					found = false;
+			}
 			if (SStroke->isChecked())
 			{
 				if (Item->itemText.charStyle(a).strokeColor() != sCol)
@@ -448,10 +476,10 @@
 					found = false;
 			}
 			if (SEffect->isChecked())
-				{
+			{
 				if ((Item->itemText.charStyle(a).effects() & 1919) != sEff)
 					found = false;
-				}
+			}
 			if (SFill->isChecked())
 			{
 				if (Item->itemText.charStyle(a).fillColor() != fCol)
@@ -466,7 +494,7 @@
 					DoReplace->setEnabled(true);
 					AllReplace->setEnabled(true);
 				}
-				Item->itemText.setCursorPosition(a + 1);
+				Item->itemText.setCursorPosition(a+1);
 				if (SText->isChecked())
 				{
 					if (inde == 0)
@@ -540,13 +568,16 @@
 						int selStart = cursor.selectionStart();
 						for (int ap = 0; ap < sText.length(); ++ap)
 						{
+							const ParagraphStyle& parStyle = storyTextEdit->StyledText.paragraphStyle(selStart + ap);
 							const CharStyle& charStyle = storyTextEdit->StyledText.charStyle(selStart + ap);
 							if (SSize->isChecked() && (charStyle.fontSize() != sSize))
 								found = false;
 							if (SFont->isChecked() && (charStyle.font().scName() != sFont))
 								found = false;
-//							if (SStyle->isChecked() && (hg->cab != sStyle))
-//								found = false;
+							if (SStyle->isChecked() && (parStyle.parent() != Doc->paragraphStyles()[sStyle].name()))
+								found = false;
+							if (SAlign->isChecked() && (parStyle.alignment() != sAlign))
+								found = false;
 							if (SFill->isChecked() && (charStyle.fillColor() != fCol))
 								found = false;
 							if (SStroke->isChecked() && (charStyle.strokeColor() != sCol))
@@ -568,13 +599,16 @@
 					for (int i = position; i < styledText.length(); ++i)
 					{
 						found = true;
+						const ParagraphStyle& parStyle = storyTextEdit->StyledText.paragraphStyle(i);
 						const CharStyle& charStyle = styledText.charStyle(i);
 						if (SSize->isChecked() && (charStyle.fontSize() != sSize))
 							found = false;
 						if (SFont->isChecked() && (charStyle.font().scName() != sFont))
 							found = false;
-//						if (SStyle->isChecked() && (hg->cab != sStyle))
-//							found = false;
+						if (SStyle->isChecked() && (parStyle.parent() != Doc->paragraphStyles()[sStyle].name()))
+							found = false;
+						if (SAlign->isChecked() && (parStyle.alignment() != sAlign))
+							found = false;
 						if (SFill->isChecked() && (charStyle.fillColor() != fCol))
 							found = false;
 						if (SFillS->isChecked() && (charStyle.fillShade() != sFillSh))
@@ -657,19 +691,29 @@
 					for (cx = cs; cx < repl.length(); ++cx)
 						Item->itemText.insertChars(ReplStart+cx, repl.mid(cx,1), true); 
 					// FIXME:NLS also replace styles!!
-					Item->itemText.setCursorPosition(ReplStart + cx);
 				}
 				else
 				{
 					for (cs = 0; cs < repl.length(); ++cs)
 						Item->itemText.replaceChar(ReplStart+cs, repl[cs]);
 					Item->itemText.removeChars(ReplStart+cs, sear.length() - cs);
-					Item->itemText.setCursorPosition(ReplStart + cs);
 				}
 			}
 		}
 		if (RStyle->isChecked())
+		{
+			int oldMode = Doc->appMode;
+			Doc->appMode = modeEdit;
 			Doc->itemSelection_SetNamedParagraphStyle(Doc->paragraphStyles()[RStyleVal->currentIndex()].name());
+			Doc->appMode = oldMode;
+		}
+		if (RAlign->isChecked())
+		{
+			int oldMode = Doc->appMode;
+			Doc->appMode = modeEdit;
+			Doc->itemSelection_SetAlignment(RAlignVal->currentIndex());
+			Doc->appMode = oldMode;
+		}
 		if (RFill->isChecked())
 			Doc->itemSelection_SetFillColor(RFillVal->currentText());
 		if (RFillS->isChecked())
@@ -729,7 +773,9 @@
 //				se->newAlign(se->Editor->currentParaStyle);
 			}
 			if (RStyle->isChecked())
-				se->newAlign(RStyleVal->currentIndex());
+				se->newStyle(Doc->paragraphStyles()[RStyleVal->currentIndex()].name());
+			if (RAlign->isChecked())
+				se->newAlign(RAlignVal->currentIndex());
 			if (RFill->isChecked())
 				se->newTxFill(RFillVal->currentIndex(), -1);
 			if (RFillS->isChecked())
@@ -784,7 +830,12 @@
 
 void SearchReplace::enableStyleSearch()
 {
-	SStyleVal->setEnabled(SStyle->isChecked());
+	SStyleVal->setEnabled(SStyleVal->count() ? SStyle->isChecked() : false);
+}
+
+void SearchReplace::enableAlignSearch()
+{
+	SAlignVal->setEnabled(SAlign->isChecked());
 }
 
 void SearchReplace::enableFontSearch()
@@ -834,6 +885,11 @@
 	RStyleVal->setEnabled(RStyle->isChecked());
 }
 
+void SearchReplace::enableAlignReplace()
+{
+	RAlignVal->setEnabled(RAlign->isChecked());
+}
+
 void SearchReplace::enableFontReplace()
 {
 	RFontVal->setEnabled(RFont->isChecked());
@@ -871,7 +927,7 @@
 
 void SearchReplace::clear()
 {
-
+	SAlign->setChecked(false);
 	SStroke->setChecked(false);
 	SFill->setChecked(false);
 	SStrokeS->setChecked(false);
@@ -885,6 +941,7 @@
 	STextVal->setText("");
 	int currentParaStyle = findParagraphStyle(Doc, Doc->currentStyle);
 	SStyleVal->setCurrentIndex(currentParaStyle);
+	RAlignVal->setCurrentIndex(Doc->currentStyle.alignment());
 	setCurrentComboItem(SFontVal, Doc->currentStyle.charStyle().font().scName());
 	setCurrentComboItem(SFillVal, Doc->currentStyle.charStyle().fillColor());
 	setCurrentComboItem(SStrokeVal, Doc->currentStyle.charStyle().strokeColor());
@@ -899,6 +956,7 @@
 	RText->setChecked(false);
 	RTextVal->setText("");
 	RStyleVal->setCurrentIndex(currentParaStyle);
+	RAlignVal->setCurrentIndex(Doc->currentStyle.alignment());
 	setCurrentComboItem(RFontVal, Doc->currentStyle.charStyle().font().scName());
 	setCurrentComboItem(RFillVal, Doc->currentStyle.charStyle().fillColor());
 	setCurrentComboItem(RStrokeVal, Doc->currentStyle.charStyle().strokeColor());
@@ -934,16 +992,19 @@
 	SSize->setChecked(prefs->getBool("SSize", false));
 	SFont->setChecked(prefs->getBool("SFont", false));
 	SStyle->setChecked(prefs->getBool("SStyle", false));
+	SAlign->setChecked(prefs->getBool("SAlign", false));
 	SText->setChecked(prefs->getBool("SText", false));
 	SEffect->setChecked(prefs->getBool("SEffect", false));
 	REffect->setChecked(prefs->getBool("REffect", false));
 	STextVal->setText(prefs->get("STextVal", ""));
 	int tmp = prefs->getInt("SStyleVal", findParagraphStyle(Doc, Doc->currentStyle));
 	if (tmp < 0 || tmp >= SStyleVal->count())
-		SStyleVal->setCurrentIndex(0);
-	else
-		SStyleVal->setCurrentIndex(tmp);
-
+		tmp = 0;
+	SStyleVal->setCurrentIndex(tmp);
+	tmp = prefs->getInt("SAlignVal", Doc->currentStyle.alignment());
+	if (tmp < 0 || tmp >= SAlignVal->count())
+		tmp = 0;
+	SAlignVal->setCurrentIndex(tmp);
 	setCurrentComboItem(SFontVal, prefs->get("SFontVal", Doc->currentStyle.charStyle().font().scName()));
 	setCurrentComboItem(SFillVal, prefs->get("SFillVal", Doc->currentStyle.charStyle().fillColor()));
 	setCurrentComboItem(SStrokeVal, prefs->get("SStrokeVal", Doc->currentStyle.charStyle().strokeColor()));
@@ -955,13 +1016,17 @@
 	RSize->setChecked(prefs->getBool("RSize", false));
 	RFont->setChecked(prefs->getBool("RFont", false));
 	RStyle->setChecked(prefs->getBool("RStyle", false));
+	RAlign->setChecked(prefs->getBool("RAlign", false));
 	RText->setChecked(prefs->getBool("RText", false));
 	RTextVal->setText(prefs->get("RTextVal", ""));
 	tmp = prefs->getInt("RStyleVal", findParagraphStyle(Doc, Doc->currentStyle));
 	if (tmp < 0 || tmp >= RStyleVal->count())
-		RStyleVal->setCurrentIndex(0);
-	else
-		RStyleVal->setCurrentIndex(tmp);
+		tmp = 0;
+	RStyleVal->setCurrentIndex(tmp);
+	tmp = prefs->getInt("RAlignVal", Doc->currentStyle.alignment());
+	if (tmp < 0 || tmp >= RAlignVal->count())
+		tmp = 0;
+	RAlignVal->setCurrentIndex(tmp);
 	setCurrentComboItem(RFontVal, prefs->get("RFontVal", Doc->currentStyle.charStyle().font().scName()));
 	setCurrentComboItem(RFillVal, prefs->get("RFillVal", Doc->currentStyle.charStyle().fillColor()));
 	setCurrentComboItem(RStrokeVal, prefs->get("RStrokeVal", Doc->currentStyle.charStyle().strokeColor()));
@@ -970,6 +1035,7 @@
 	CaseIgnore->setChecked(prefs->getBool("CaseIgnore", false));
 	enableTxSearch();
 	enableStyleSearch();
+	enableAlignSearch();
 	enableFontSearch();
 	enableSizeSearch();
 	enableEffSearch();
@@ -979,6 +1045,7 @@
 	enableStrokeSSearch();
 	enableTxReplace();
 	enableStyleReplace();
+	enableAlignReplace();
 	enableFontReplace();
 	enableSizeReplace();
 	enableEffReplace();
@@ -997,11 +1064,13 @@
 	prefs->set("SSize", SSize->isChecked());
 	prefs->set("SFont", SFont->isChecked());
 	prefs->set("SStyle", SStyle->isChecked());
+	prefs->set("SAlign", SAlign->isChecked());
 	prefs->set("SText", SText->isChecked());
 	prefs->set("SEffect", SEffect->isChecked());
 	prefs->set("REffect", REffect->isChecked());
 	prefs->set("STextVal", STextVal->text());
 	prefs->set("SStyleVal", SStyleVal->currentIndex());
+	prefs->set("SAlignVal", SAlignVal->currentIndex());
 	prefs->set("SFontVal", SFontVal->currentText());
 	prefs->set("SSizeVal", SSizeVal->value());
 	prefs->set("SFillVal", SFillVal->currentText());
@@ -1013,9 +1082,11 @@
 	prefs->set("RSize", RSize->isChecked());
 	prefs->set("RFont", RFont->isChecked());
 	prefs->set("RStyle", RStyle->isChecked());
+	prefs->set("RAlign", RAlign->isChecked());
 	prefs->set("RText", RText->isChecked());
 	prefs->set("RTextVal", RTextVal->text());
 	prefs->set("RStyleVal", RStyleVal->currentText());
+	prefs->set("RAlignVal", RAlignVal->currentIndex());
 	prefs->set("RFontVal", RFontVal->currentText());
 	prefs->set("RSizeVal", RSizeVal->value());
 	prefs->set("RFillVal", RFillVal->currentText());

Modified: trunk/Scribus/scribus/ui/search.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=16785&path=/trunk/Scribus/scribus/ui/search.h
==============================================================================
--- trunk/Scribus/scribus/ui/search.h (original)
+++ trunk/Scribus/scribus/ui/search.h Fri Aug 12 11:33:01 2011
@@ -48,11 +48,13 @@
 	QCheckBox* SSize;
 	QCheckBox* SFont;
 	QCheckBox* SStyle;
+	QCheckBox* SAlign;
 	QCheckBox* SText;
 	QCheckBox* SEffect;
 	QCheckBox* REffect;
 	QLineEdit* STextVal;
 	QComboBox* SStyleVal;
+	QComboBox* SAlignVal;
 	FontCombo* SFontVal;
 	ScrSpinBox* SSizeVal;
 	ColorCombo* SFillVal;
@@ -67,9 +69,11 @@
 	QCheckBox* RSize;
 	QCheckBox* RFont;
 	QCheckBox* RStyle;
+	QCheckBox* RAlign;
 	QCheckBox* RText;
 	QLineEdit* RTextVal;
 	QComboBox* RStyleVal;
+	QComboBox* RAlignVal;
 	FontCombo* RFontVal;
 	ScrSpinBox* RSizeVal;
 	ColorCombo* RFillVal;
@@ -98,6 +102,7 @@
 	virtual void slotReplaceAll();
 	virtual void enableTxSearch();
 	virtual void enableStyleSearch();
+	virtual void enableAlignSearch();
 	virtual void enableFontSearch();
 	virtual void enableSizeSearch();
 	virtual void enableEffSearch();
@@ -107,6 +112,7 @@
 	virtual void enableStrokeSSearch();
 	virtual void enableTxReplace();
 	virtual void enableStyleReplace();
+	virtual void enableAlignReplace();
 	virtual void enableFontReplace();
 	virtual void enableSizeReplace();
 	virtual void enableEffReplace();

Modified: trunk/Scribus/scribus/ui/storyeditor.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=16785&path=/trunk/Scribus/scribus/ui/storyeditor.h
==============================================================================
--- trunk/Scribus/scribus/ui/storyeditor.h (original)
+++ trunk/Scribus/scribus/ui/storyeditor.h Fri Aug 12 11:33:01 2011
@@ -391,6 +391,7 @@
 	bool activFromApp;
 
 public slots:
+	void newStyle(const QString&);
 	void newAlign(int st);
 	void newTxFill(int c, int s);
 	void newTxStroke(int c, int s);
@@ -436,7 +437,6 @@
 	void updateProps(QTextCursor &cur);
 	void updateProps(int p, int ch);
 
-	void newStyle(const QString&);
 	void changeStyleSB(int pa, const QString&);
 	void changeStyle();
 	void updateStatus();




More information about the scribus-commit mailing list