? \
? about_builddate.inc
? deletePage
? docitemattrprefsbase.cpp
? docitemattrprefsbase.h
? pageitemattributesbase.cpp
? pageitemattributesbase.h
? doc/en/2
? doc/en/plugin_howto_temp.html
? doc/en/plugin_overview.html
? plugins/scriptplugin/scripter2.tar.gz
? plugins/scriptplugin/scripter2/.deps
? plugins/scriptplugin/scripter2/.libs
? plugins/scriptplugin/scripter2/Makefile
? plugins/scriptplugin/scripter2/Makefile.in
? plugins/scriptplugin/scripter2/libscripter2.la
? plugins/scriptplugin/scripter2/scripter2_base.lo
? plugins/scriptplugin/scripter2/scripter2_qtclass_qapplication.lo
? plugins/scriptplugin/scripter2/scripter2_qtclass_qframe.lo
? plugins/scriptplugin/scripter2/scripter2_qtclass_qmainwindow.lo
? plugins/scriptplugin/scripter2/scripter2_qtclass_qobject.lo
? plugins/scriptplugin/scripter2/scripter2_qtclass_qscrollview.lo
? plugins/scriptplugin/scripter2/scripter2_qtclass_qwidget.lo
? plugins/scriptplugin/scripter2/scripter2_qttype_qstring.lo
? plugins/scriptplugin/scripter2/scripter2_scribus_pageitem.lo
? plugins/scriptplugin/scripter2/scripter2_scribus_scribusdoc.lo
? plugins/scriptplugin/scripter2/scripter2_scribus_scribusmainwin.lo
? plugins/scriptplugin/scripter2/scripter2_scribus_scribusqapp.lo
? plugins/scriptplugin/scripter2/scripter2_scribus_scribusview.lo
? plugins/scriptplugin/scripter2/scripter2_scribus_scribuswin.lo
? plugins/scriptplugin/scripter2/scripter2_scribusstructs.lo
? plugins/scriptplugin/scripter2/scripter2_styles.lo
Index: editformats.cpp
===================================================================
RCS file: /cvs/Scribus/scribus/editformats.cpp,v
retrieving revision 1.28.2.26
diff -p -u -r1.28.2.26 editformats.cpp
--- editformats.cpp	10 Dec 2005 14:10:35 -0000	1.28.2.26
+++ editformats.cpp	2 Jan 2006 20:40:45 -0000
@@ -233,7 +233,7 @@ StilFormate::StilFormate( QWidget* paren
 
 void StilFormate::saveIt()
 {
-	emit saveStyle(this);
+	emit saveStyle(*this);
 }
 
 void StilFormate::selFormat(QListBoxItem *c)
Index: editformats.h
===================================================================
RCS file: /cvs/Scribus/scribus/editformats.h,v
retrieving revision 1.9.2.8
diff -p -u -r1.9.2.8 editformats.h
--- editformats.h	18 Oct 2005 06:34:37 -0000	1.9.2.8
+++ editformats.h	2 Jan 2006 20:40:45 -0000
@@ -93,7 +93,7 @@ public slots:
 	void loadStyles();
 
 signals:
-	void saveStyle(StilFormate *);
+	void saveStyle(StilFormate&);
 
 protected:
 	QHBoxLayout* StilFormateLayout;
Index: lineformats.cpp
===================================================================
RCS file: /cvs/Scribus/scribus/lineformats.cpp,v
retrieving revision 1.25.2.11
diff -p -u -r1.25.2.11 lineformats.cpp
--- lineformats.cpp	10 Dec 2005 14:10:35 -0000	1.25.2.11
+++ lineformats.cpp	2 Jan 2006 20:40:45 -0000
@@ -87,7 +87,7 @@ LineFormate::LineFormate( QWidget* paren
 
 void LineFormate::saveIt()
 {
-	emit saveStyle(this);
+	emit saveStyle(*this);
 }
 
 void LineFormate::selFormat(QListBoxItem *c)
Index: lineformats.h
===================================================================
RCS file: /cvs/Scribus/scribus/lineformats.h,v
retrieving revision 1.6.2.2
diff -p -u -r1.6.2.2 lineformats.h
--- lineformats.h	10 Aug 2005 07:14:56 -0000	1.6.2.2
+++ lineformats.h	2 Jan 2006 20:40:45 -0000
@@ -47,7 +47,7 @@ public slots:
 	void loadLStyles();
 
 signals:
-	void saveStyle(LineFormate *);
+	void saveStyle(LineFormate&);
 	
 protected:
 	QHBoxLayout* StilFormateLayout;
Index: pageitem_pathtext.cpp
===================================================================
RCS file: /cvs/Scribus/scribus/Attic/pageitem_pathtext.cpp,v
retrieving revision 1.1.2.2
diff -p -u -r1.1.2.2 pageitem_pathtext.cpp
--- pageitem_pathtext.cpp	14 Dec 2005 13:00:05 -0000	1.1.2.2
+++ pageitem_pathtext.cpp	2 Jan 2006 20:40:45 -0000
@@ -63,7 +63,6 @@ void PageItem_PathText::DrawObj_Item(ScP
 	double wide;
 	QString chx, chx2, chx3;
 	struct ScText *hl;
-	struct ZZ *Zli;
 	double dx;
 	double sp = 0;
 	double oldSp = 0;
@@ -181,8 +180,8 @@ void PageItem_PathText::DrawObj_Item(ScP
 		p->save();
 		QWMatrix savWM = p->worldMatrix();
 		p->setWorldMatrix(trafo);
-		Zli = new ZZ;
-		Zli->Zeich = chx;
+		ZZ Zli;
+		Zli.Zeich = chx;
 		if (hl->ccolor != "None")
 		{
 			QColor tmp;
@@ -195,33 +194,32 @@ void PageItem_PathText::DrawObj_Item(ScP
 			SetFarbe(&tmp, hl->cstroke, hl->cshade2);
 			p->setPen(tmp, 1, SolidLine, FlatCap, MiterJoin);
 		}
-		Zli->Farb = hl->ccolor;
-		Zli->Farb2 = hl->cstroke;
-		Zli->shade = hl->cshade;
-		Zli->shade2 = hl->cshade2;
-		Zli->xco = 0;
-		Zli->yco = BaseOffs;
-		Zli->Sele = hl->cselect;
-		Zli->Siz = chs;
-		Zli->realSiz = hl->csize;
-		Zli->Style = hl->cstyle;
-		Zli->ZFo = hl->cfont;
-		Zli->wide = wide;
-		Zli->kern = hl->csize * hl->cextra / 10000.0;
-		Zli->scale = hl->cscale;
-		Zli->scalev = hl->cscalev;
-		Zli->base = hl->cbase;
-		Zli->shadowX = hl->cshadowx;
-		Zli->shadowY = hl->cshadowx;
-		Zli->outline = hl->coutline;
-		Zli->underpos = hl->cunderpos;
-		Zli->underwidth = hl->cunderwidth;
-		Zli->strikepos = hl->cstrikepos;
-		Zli->strikewidth = hl->cstrikewidth;
-		Zli->embedded = 0;
+		Zli.Farb = hl->ccolor;
+		Zli.Farb2 = hl->cstroke;
+		Zli.shade = hl->cshade;
+		Zli.shade2 = hl->cshade2;
+		Zli.xco = 0;
+		Zli.yco = BaseOffs;
+		Zli.Sele = hl->cselect;
+		Zli.Siz = chs;
+		Zli.realSiz = hl->csize;
+		Zli.Style = hl->cstyle;
+		Zli.ZFo = hl->cfont;
+		Zli.wide = wide;
+		Zli.kern = hl->csize * hl->cextra / 10000.0;
+		Zli.scale = hl->cscale;
+		Zli.scalev = hl->cscalev;
+		Zli.base = hl->cbase;
+		Zli.shadowX = hl->cshadowx;
+		Zli.shadowY = hl->cshadowx;
+		Zli.outline = hl->coutline;
+		Zli.underpos = hl->cunderpos;
+		Zli.underwidth = hl->cunderwidth;
+		Zli.strikepos = hl->cstrikepos;
+		Zli.strikewidth = hl->cstrikewidth;
+		Zli.embedded = 0;
 		if (!m_Doc->RePos)
-			DrawZeichenS(p, Zli);
-		delete Zli;
+			DrawZeichenS(p, &Zli);
 		p->setWorldMatrix(savWM);
 		p->restore();
 		p->setZoomFactor(sc);
Index: pageitem_textframe.cpp
===================================================================
RCS file: /cvs/Scribus/scribus/Attic/pageitem_textframe.cpp,v
retrieving revision 1.1.2.19
diff -p -u -r1.1.2.19 pageitem_textframe.cpp
--- pageitem_textframe.cpp	21 Dec 2005 23:59:29 -0000	1.1.2.19
+++ pageitem_textframe.cpp	2 Jan 2006 20:40:46 -0000
@@ -1525,38 +1525,37 @@ void PageItem_TextFrame::DrawObj_Item(Sc
 									double wt = Cwidth(m_Doc, Zli2->ZFo, tabFillCharQStr, Zli2->Siz);
 									int coun = static_cast<int>((Zli2->xco - tabDist) / wt);
 									double sPos = Zli2->xco - (Zli2->xco - tabDist) + 1;
-									Zli = new ZZ;
-									Zli->Zeich = tabFillCharQStr;
-									Zli->Farb = Zli2->Farb;
-									Zli->Farb2 = Zli2->Farb2;
-									Zli->shade = Zli2->shade;
-									Zli->shade2 = Zli2->shade2;
-									Zli->yco = Zli2->yco;
-									Zli->Sele = Zli2->Sele;
-									Zli->Siz = Zli2->Siz;
-									Zli->realSiz = Zli2->realSiz;
-									Zli->Style = Zli2->Style;
-									Zli->ZFo = Zli2->ZFo;
-									Zli->wide = wt;
-									Zli->kern = 0;
-									Zli->scale = 1000;
-									Zli->scalev = 1000;
-									Zli->base = Zli2->base;
-									Zli->shadowX = Zli2->shadowX;
-									Zli->shadowY = Zli2->shadowY;
-									Zli->outline = Zli2->outline;
-									Zli->underpos = Zli2->underpos;
-									Zli->underwidth = Zli2->underwidth;
-									Zli->strikepos = Zli2->strikepos;
-									Zli->strikewidth = Zli2->strikewidth;
-									Zli->embedded = 0;
+									ZZ ZliTemp;
+									ZliTemp.Zeich = tabFillCharQStr;
+									ZliTemp.Farb = Zli2->Farb;
+									ZliTemp.Farb2 = Zli2->Farb2;
+									ZliTemp.shade = Zli2->shade;
+									ZliTemp.shade2 = Zli2->shade2;
+									ZliTemp.yco = Zli2->yco;
+									ZliTemp.Sele = Zli2->Sele;
+									ZliTemp.Siz = Zli2->Siz;
+									ZliTemp.realSiz = Zli2->realSiz;
+									ZliTemp.Style = Zli2->Style;
+									ZliTemp.ZFo = Zli2->ZFo;
+									ZliTemp.wide = wt;
+									ZliTemp.kern = 0;
+									ZliTemp.scale = 1000;
+									ZliTemp.scalev = 1000;
+									ZliTemp.base = Zli2->base;
+									ZliTemp.shadowX = Zli2->shadowX;
+									ZliTemp.shadowY = Zli2->shadowY;
+									ZliTemp.outline = Zli2->outline;
+									ZliTemp.underpos = Zli2->underpos;
+									ZliTemp.underwidth = Zli2->underwidth;
+									ZliTemp.strikepos = Zli2->strikepos;
+									ZliTemp.strikewidth = Zli2->strikewidth;
+									ZliTemp.embedded = 0;
 									for (int cx = 0; cx < coun; ++cx)
 									{
-										Zli->xco = sPos + wt * cx;
-										if (e2.intersects(pf2.xForm(QRect(qRound(Zli->xco),qRound(Zli->yco-asce), qRound(Zli->wide+1), qRound(asce+desc)))))
-											DrawZeichenS(p, Zli);
+										ZliTemp.xco = sPos + wt * cx;
+										if (e2.intersects(pf2.xForm(QRect(qRound(ZliTemp.xco),qRound(ZliTemp.yco-asce), qRound(ZliTemp.wide+1), qRound(asce+desc)))))
+											DrawZeichenS(p, &ZliTemp);
 									}
-									delete Zli;
 								}
 								if (Zli2->Zeich == QChar(9))
 									tabCc++;
@@ -1804,38 +1803,37 @@ void PageItem_TextFrame::DrawObj_Item(Sc
 							double wt = Cwidth(m_Doc, Zli2->ZFo, tabFillCharQStr, Zli2->Siz);
 							int coun = static_cast<int>((Zli2->xco - tabDist) / wt);
 							double sPos = Zli2->xco - (Zli2->xco - tabDist) + 1;
-							Zli = new ZZ;
-							Zli->Zeich = tabFillCharQStr;
-							Zli->Farb = Zli2->Farb;
-							Zli->Farb2 = Zli2->Farb2;
-							Zli->shade = Zli2->shade;
-							Zli->shade2 = Zli2->shade2;
-							Zli->yco = Zli2->yco;
-							Zli->Sele = Zli2->Sele;
-							Zli->Siz = Zli2->Siz;
-							Zli->realSiz = Zli2->realSiz;
-							Zli->Style = Zli2->Style;
-							Zli->ZFo = Zli2->ZFo;
-							Zli->wide = wt;
-							Zli->kern = 0;
-							Zli->scale = 1000;
-							Zli->scalev = 1000;
-							Zli->base = Zli2->base;
-							Zli->shadowX = Zli2->shadowX;
-							Zli->shadowY = Zli2->shadowY;
-							Zli->outline = Zli2->outline;
-							Zli->underpos = Zli2->underpos;
-							Zli->underwidth = Zli2->underwidth;
-							Zli->strikepos = Zli2->strikepos;
-							Zli->strikewidth = Zli2->strikewidth;
-							Zli->embedded = 0;
+							ZZ ZliTemp;
+							ZliTemp.Zeich = tabFillCharQStr;
+							ZliTemp.Farb = Zli2->Farb;
+							ZliTemp.Farb2 = Zli2->Farb2;
+							ZliTemp.shade = Zli2->shade;
+							ZliTemp.shade2 = Zli2->shade2;
+							ZliTemp.yco = Zli2->yco;
+							ZliTemp.Sele = Zli2->Sele;
+							ZliTemp.Siz = Zli2->Siz;
+							ZliTemp.realSiz = Zli2->realSiz;
+							ZliTemp.Style = Zli2->Style;
+							ZliTemp.ZFo = Zli2->ZFo;
+							ZliTemp.wide = wt;
+							ZliTemp.kern = 0;
+							ZliTemp.scale = 1000;
+							ZliTemp.scalev = 1000;
+							ZliTemp.base = Zli2->base;
+							ZliTemp.shadowX = Zli2->shadowX;
+							ZliTemp.shadowY = Zli2->shadowY;
+							ZliTemp.outline = Zli2->outline;
+							ZliTemp.underpos = Zli2->underpos;
+							ZliTemp.underwidth = Zli2->underwidth;
+							ZliTemp.strikepos = Zli2->strikepos;
+							ZliTemp.strikewidth = Zli2->strikewidth;
+							ZliTemp.embedded = 0;
 							for (int cx = 0; cx < coun; ++cx)
 							{
-								Zli->xco =  sPos + wt * cx;
-								if (e2.intersects(pf2.xForm(QRect(qRound(Zli->xco),qRound(Zli->yco-asce), qRound(Zli->wide+1), qRound(asce+desc)))))
-									DrawZeichenS(p, Zli);
+								ZliTemp.xco =  sPos + wt * cx;
+								if (e2.intersects(pf2.xForm(QRect(qRound(ZliTemp.xco),qRound(ZliTemp.yco-asce), qRound(ZliTemp.wide+1), qRound(asce+desc)))))
+									DrawZeichenS(p, &ZliTemp);
 							}
-							delete Zli;
 						}
 						if (Zli2->Zeich == QChar(9))
 							tabCc++;
@@ -1929,12 +1927,11 @@ void PageItem_TextFrame::DrawObj_Item(Sc
 				m_Doc->RePos = true;
 				NextBox->Dirty = false;
 				QPixmap pgPix(1, 1);
-				ScPainter *painter = new ScPainter(&pgPix, 1, 1);
-				painter->translate(0.5, 0.5);
-				NextBox->DrawObj(painter, QRect(0, 0, 1, 1));
+				ScPainter painter(&pgPix, 1, 1);
+				painter.translate(0.5, 0.5);
+				NextBox->DrawObj(&painter, QRect(0, 0, 1, 1));
 				NextBox->Dirty = true;
-				painter->end();
-				delete painter;
+				painter.end();
 				p->restore();
 				m_Doc->RePos = rep;
 			}/*
Index: scribus.cpp
===================================================================
RCS file: /cvs/Scribus/scribus/scribus.cpp,v
retrieving revision 1.228.2.660
diff -p -u -r1.228.2.660 scribus.cpp
--- scribus.cpp	2 Jan 2006 17:27:00 -0000	1.228.2.660
+++ scribus.cpp	2 Jan 2006 20:40:48 -0000
@@ -1078,10 +1078,10 @@ void ScribusMainWindow::specialActionKey
 		{
 			if (doc->selection->count() == 1)
 			{
-				struct ScText *hg = new ScText;
 				PageItem *currItem = doc->selection->itemAt(0);
 				if (unicodevalue!=-1)
 				{
+					ScText *hg = new ScText;
 					hg->ch = QString(QChar(unicodevalue));
 					doc->setScTextDefaultsFromDoc(hg);
 					hg->cselect = false;
@@ -1601,36 +1601,35 @@ bool ScribusMainWindow::arrowKeyDown()
 void ScribusMainWindow::startUpDialog()
 {
 	PrefsContext* docContext = prefsManager->prefsFile->getContext("docdirs", false);
-	NewDoc* dia = new NewDoc(this, true);
-	if (dia->exec())
+	NewDoc dia(this, true);
+	if (dia.exec())
 	{
-		if (dia->tabSelected == 0)
+		if (dia.tabSelected == 0)
 		{
-			int facingPages = dia->choosenLayout;
-			int firstPage = dia->docLayout->firstPage->currentItem();
-			double topMargin = dia->GroupRand->RandT;
-			double bottomMargin = dia->GroupRand->RandB;
-			double leftMargin = dia->GroupRand->RandL;
-			double rightMargin = dia->GroupRand->RandR;
-			double columnDistance = dia->Dist;
-			double pageWidth = dia->Pagebr;
-			double pageHeight = dia->Pageho;
-			double numberCols = dia->SpinBox10->value();
-			bool autoframes = dia->AutoFrame->isChecked();
-			int orientation = dia->Orient;
-			int pageCount=dia->PgNum->value();
-			PageSize *ps2 = new PageSize(dia->ComboBox1->currentText());
-			QString pagesize = ps2->getPageName();
-			doFileNew(pageWidth, pageHeight, topMargin, leftMargin, rightMargin, bottomMargin, columnDistance, numberCols, autoframes, facingPages, dia->ComboBox3->currentItem(), firstPage, orientation, dia->PgNr->value(), pagesize, pageCount);
+			int facingPages = dia.choosenLayout;
+			int firstPage = dia.docLayout->firstPage->currentItem();
+			double topMargin = dia.GroupRand->RandT;
+			double bottomMargin = dia.GroupRand->RandB;
+			double leftMargin = dia.GroupRand->RandL;
+			double rightMargin = dia.GroupRand->RandR;
+			double columnDistance = dia.Dist;
+			double pageWidth = dia.Pagebr;
+			double pageHeight = dia.Pageho;
+			double numberCols = dia.SpinBox10->value();
+			bool autoframes = dia.AutoFrame->isChecked();
+			int orientation = dia.Orient;
+			int pageCount=dia.PgNum->value();
+			PageSize ps2(dia.ComboBox1->currentText());
+			QString pagesize = ps2.getPageName();
+			doFileNew(pageWidth, pageHeight, topMargin, leftMargin, rightMargin, bottomMargin, columnDistance, numberCols, autoframes, facingPages, dia.ComboBox3->currentItem(), firstPage, orientation, dia.PgNr->value(), pagesize, pageCount);
 			doc->pageSets[facingPages].FirstPage = firstPage;
-			delete ps2;
 			HaveNewDoc();
 		}
 		else
 		{
-			if (dia->tabSelected == 1)
+			if (dia.tabSelected == 1)
 			{
-				QString fileName(dia->fileDialog->selectedFile());
+				QString fileName(dia.fileDialog->selectedFile());
 				if (!fileName.isEmpty())
 				{
 					docContext->set("docsopen", fileName.left(fileName.findRev("/")));
@@ -1639,47 +1638,44 @@ void ScribusMainWindow::startUpDialog()
 			}
 			else
 			{
-				QString fileName(dia->recentDocList->currentText());
+				QString fileName(dia.recentDocList->currentText());
 				if (!fileName.isEmpty())
 					loadRecent(fileName);
 			}
 		}
 	}
-	prefsManager->setShowStartupDialog(!dia->startUpDialog->isChecked());
-	delete dia;
+	prefsManager->setShowStartupDialog(!dia.startUpDialog->isChecked());
 	mainWindowStatusLabel->setText( tr("Ready"));
 }
 
 bool ScribusMainWindow::slotFileNew()
 {
 	bool retVal;
-	NewDoc* dia = new NewDoc(this);
-	if (dia->exec())
+	NewDoc dia(this);
+	if (dia.exec())
 	{
-		int facingPages = dia->choosenLayout;
-		int firstPage = dia->docLayout->firstPage->currentItem();
-		double topMargin = dia->GroupRand->RandT;
-		double bottomMargin = dia->GroupRand->RandB;
-		double leftMargin = dia->GroupRand->RandL;
-		double rightMargin = dia->GroupRand->RandR;
-		double columnDistance = dia->Dist;
-		double pageWidth = dia->Pagebr;
-		double pageHeight = dia->Pageho;
-		double numberCols = dia->SpinBox10->value();
-		bool autoframes = dia->AutoFrame->isChecked();
-		int orientation = dia->Orient;
-		int pageCount=dia->PgNum->value();
-		PageSize *ps2 = new PageSize(dia->ComboBox1->currentText());
-		QString pagesize = ps2->getPageName();
-		retVal = doFileNew(pageWidth, pageHeight, topMargin, leftMargin, rightMargin, bottomMargin, columnDistance, numberCols, autoframes, facingPages, dia->ComboBox3->currentItem(), firstPage, orientation, dia->PgNr->value(), pagesize, pageCount);
+		int facingPages = dia.choosenLayout;
+		int firstPage = dia.docLayout->firstPage->currentItem();
+		double topMargin = dia.GroupRand->RandT;
+		double bottomMargin = dia.GroupRand->RandB;
+		double leftMargin = dia.GroupRand->RandL;
+		double rightMargin = dia.GroupRand->RandR;
+		double columnDistance = dia.Dist;
+		double pageWidth = dia.Pagebr;
+		double pageHeight = dia.Pageho;
+		double numberCols = dia.SpinBox10->value();
+		bool autoframes = dia.AutoFrame->isChecked();
+		int orientation = dia.Orient;
+		int pageCount=dia.PgNum->value();
+		PageSize ps2(dia.ComboBox1->currentText());
+		QString pagesize = ps2.getPageName();
+		retVal = doFileNew(pageWidth, pageHeight, topMargin, leftMargin, rightMargin, bottomMargin, columnDistance, numberCols, autoframes, facingPages, dia.ComboBox3->currentItem(), firstPage, orientation, dia.PgNr->value(), pagesize, pageCount);
 		doc->pageSets[facingPages].FirstPage = firstPage;
 		mainWindowStatusLabel->setText( tr("Ready"));
-		delete ps2;
 		HaveNewDoc();
 	}
 	else
 		retVal = false;
-	delete dia;
 	return retVal;
 }
 
@@ -1908,13 +1904,12 @@ void ScribusMainWindow::windowsMenuActiv
 bool ScribusMainWindow::slotDocSetup()
 {
 	bool ret = false;
-	ReformDoc* dia = new ReformDoc(this, doc);
-	Q_CHECK_PTR(dia);
-	if (dia->exec())
-	{
-		slotChangeUnit(dia->getSelectedUnit(), false);
-		dia->updateDocumentSettings();
-		if (dia->imageResolutionChanged())
+	ReformDoc dia(this, doc);
+	if (dia.exec())
+	{
+		slotChangeUnit(dia.getSelectedUnit(), false);
+		dia.updateDocumentSettings();
+		if (dia.imageResolutionChanged())
 			view->RecalcPicturesRes();
 		FontSub->RebuildList(doc);
 		propertiesPalette->Fonts->RebuildList(doc);
@@ -1935,7 +1930,6 @@ bool ScribusMainWindow::slotDocSetup()
 		slotDocCh();
 		ret = true;
 	}
-	delete dia;
 	return ret;
 }
 
@@ -2811,31 +2805,31 @@ bool ScribusMainWindow::slotPageImport()
 {
 	Q_ASSERT(!doc->masterPageMode());
 	bool ret = false;
-	MergeDoc *dia = new MergeDoc(this, false, doc->DocPages.count(), doc->currentPage->pageNr() + 1);
-	if (dia->exec())
+	MergeDoc dia(this, false, doc->DocPages.count(), doc->currentPage->pageNr() + 1);
+	if (dia.exec())
 	{
 		mainWindowStatusLabel->setText( tr("Importing Pages..."));
 		qApp->setOverrideCursor(QCursor(waitCursor), true);
 		std::vector<int> pageNs;
-		parsePagesString(dia->getPageNumbers(), &pageNs, dia->getPageCounter());
+		parsePagesString(dia.getPageNumbers(), &pageNs, dia.getPageCounter());
 		int startPage, nrToImport;
 		bool doIt = true;
 		if (doc->masterPageMode())
 		{
 			if (pageNs.size() > 1)
-				loadPage(dia->getFromDoc(), pageNs[0] - 1, false);
+				loadPage(dia.getFromDoc(), pageNs[0] - 1, false);
 			doIt = false;
 		}
-		else if (dia->getCreatePageChecked())
+		else if (dia.getCreatePageChecked())
 		{
-			int importWhere=dia->getImportWhere();
+			int importWhere=dia.getImportWhere();
 			if (importWhere == 0)
-				startPage = dia->getImportWherePage();
+				startPage = dia.getImportWherePage();
 			else if (importWhere == 1)
-				startPage = dia->getImportWherePage() + 1;
+				startPage = dia.getImportWherePage() + 1;
 			else
 				startPage = doc->DocPages.count() + 1;
-			addNewPages(dia->getImportWherePage(), importWhere, pageNs.size(), doc->pageHeight, doc->pageWidth, doc->PageOri, doc->PageSize, true);
+			addNewPages(dia.getImportWherePage(), importWhere, pageNs.size(), doc->pageHeight, doc->pageWidth, doc->PageOri, doc->PageSize, true);
 			nrToImport = pageNs.size();
 		}
 		else
@@ -2880,7 +2874,7 @@ bool ScribusMainWindow::slotPageImport()
 				for (int i = 0; i < nrToImport; ++i)
 				{
 					view->GotoPa(counter);
-					loadPage(dia->getFromDoc(), pageNs[i] - 1, false);
+					loadPage(dia.getFromDoc(), pageNs[i] - 1, false);
 					counter++;
 					mainWindowProgressBar->setProgress(i + 1);
 				}
@@ -2897,7 +2891,6 @@ bool ScribusMainWindow::slotPageImport()
 		qApp->setOverrideCursor(QCursor(arrowCursor), true);
 		ret = doIt;
 	}
-	delete dia;
 	return ret;
 }
 
@@ -2908,21 +2901,18 @@ bool ScribusMainWindow::loadPage(QString
 	{
 		if (!Mpa)
 			doc->OpenNodes = outlinePalette->buildReopenVals();
-		FileLoader *fl = new FileLoader(fileName);
-		if (fl->TestFile() == -1)
+		FileLoader fl(fileName);
+		if (fl.TestFile() == -1)
 		{
-			delete fl;
 			return false;
 		}
 		doc->setLoading(true);
 		uint oldItemsCount = doc->Items->count();
-		if(!fl->LoadPage(Nr, Mpa))
+		if(!fl.LoadPage(Nr, Mpa))
 		{
-			delete fl;
 			doc->setLoading(false);
 			return false;
 		}
-		delete fl;
 		if (CMSavail && doc->CMSSettings.CMSinUse)
 		{
 			recalcColors();
@@ -3002,16 +2992,15 @@ bool ScribusMainWindow::loadDoc(QString 
 		if( !DPath.endsWith("/") )
 			DPath += "/";
 		QDir::setCurrent(DPath);
-		FileLoader *fileLoader = new FileLoader(FName);
-		if (fileLoader->TestFile() == -1)
+		FileLoader fileLoader(FName);
+		if (fileLoader.TestFile() == -1)
 		{
-			delete fileLoader;
 			qApp->setOverrideCursor(QCursor(arrowCursor), true);
 			QMessageBox::critical(this, tr("Fatal Error"), "<qt>"+tr("File %1 is not in an acceptable format").arg(FName)+"</qt>", CommonStrings::tr_OK);
 			return false;
 		}
 		bool is12doc=false;
-		if (fileLoader->TestFile() == 0)
+		if (fileLoader.TestFile() == 0)
 		{
 			qApp->setOverrideCursor(QCursor(arrowCursor), true);
 			//Scribus 1.3.x warning, remove at a later stage
@@ -3046,18 +3035,20 @@ bool ScribusMainWindow::loadDoc(QString 
 		CMSuse = false;
 #endif
 		ScMW->ScriptRunning = true;
-		bool loadSuccess=fileLoader->LoadFile();
+		bool loadSuccess=fileLoader.LoadFile();
 		//Do the font replacement check from here, when we have a GUI. TODO do this also somehow without the GUI
 		//This also gives the user the opportunity to cancel the load when finding theres a replacement required.
 		if (loadSuccess && ScQApp->usingGUI())
-			loadSuccess=fileLoader->postLoad(is12doc);
+			loadSuccess=fileLoader.postLoad(is12doc);
 		if(!loadSuccess)
 		{
 			view->close();
-			delete fileLoader;
 			delete view;
+			view = 0;
 			delete doc;
+			doc = 0;
 			delete w;
+			w = 0;
 			ScMW->ScriptRunning = false;
 			mainWindowStatusLabel->setText("");
 			mainWindowProgressBar->reset();
@@ -3066,7 +3057,7 @@ bool ScribusMainWindow::loadDoc(QString 
 				newActWin(ActWinOld);
 			return false;
 		}
-		fileLoader->informReplacementFonts();
+		fileLoader.informReplacementFonts();
 		view->unitSwitcher->setCurrentText(unitGetStrFromIndex(doc->unitIndex()));
 		view->unitChange();
 		ScMW->ScriptRunning = false;
@@ -3228,7 +3219,7 @@ bool ScribusMainWindow::loadDoc(QString 
 		}
 		propertiesPalette->updateColorList();
 		propertiesPalette->Cpal->ChooseGrad(0);
-		if (fileLoader->FileType > 1)
+		if (fileLoader.FileType > 1)
 		{
 			doc->setName(FName+tr("(converted)"));
 			QFileInfo fi(doc->DocName);
@@ -3253,7 +3244,7 @@ bool ScribusMainWindow::loadDoc(QString 
 		doc->RePos = true;
 		QPixmap pgPix(10, 10);
 		QRect rd = QRect(0,0,9,9);
-		ScPainter *painter = new ScPainter(&pgPix, pgPix.width(), pgPix.height());
+		ScPainter painter(&pgPix, pgPix.width(), pgPix.height());
 		doc->setMasterPageMode(true);
 		for (uint azz=0; azz<doc->MasterItems.count(); ++azz)
 		{
@@ -3283,7 +3274,7 @@ bool ScribusMainWindow::loadDoc(QString 
 						ite = nextItem;
 					}
 				}
-				ite->DrawObj(painter, rd);
+				ite->DrawObj(&painter, rd);
 			}
 		}
 //		RestoreBookMarks();
@@ -3306,7 +3297,7 @@ bool ScribusMainWindow::loadDoc(QString 
 				{
 					ite->Frame = true;
 					ite->UpdatePolyClip();
-					ite->DrawObj(painter, rd);
+					ite->DrawObj(&painter, rd);
 				}
 				else
 				{
@@ -3321,10 +3312,10 @@ bool ScribusMainWindow::loadDoc(QString 
 								break;
 						}
 						ite = nextItem;
-						ite->DrawObj(painter, rd);
+						ite->DrawObj(&painter, rd);
 					}
 					else
-						ite->DrawObj(painter, rd);
+						ite->DrawObj(&painter, rd);
 				}
 			}
 /*			if (doc->OldBM)
@@ -3348,10 +3339,9 @@ bool ScribusMainWindow::loadDoc(QString 
 					ite->Frame = true;
 					ite->UpdatePolyClip();
 				}
-				ite->DrawObj(painter, rd);
+				ite->DrawObj(&painter, rd);
 			}
 		}
-		delete painter;
 //		if (doc->OldBM)
 //			StoreBookmarks();
 		doc->RePos = false;
@@ -3363,12 +3353,11 @@ bool ScribusMainWindow::loadDoc(QString 
 		{
 			Apply_MasterPage(doc->DocPages.at(p)->MPageNam, p, false);
 		}
-		if (fileLoader->FileType > 1)
+		if (fileLoader.FileType > 1)
 		{
 			doc->hasName = false;
 			slotFileSaveAs();
 		}
-		delete fileLoader;
 		view->setUpdatesEnabled(true);
 		w->setUpdatesEnabled(true);
 		disconnect(wsp, SIGNAL(windowActivated(QWidget *)), this, SLOT(newActWin(QWidget *)));
@@ -3490,9 +3479,7 @@ void ScribusMainWindow::slotGetContent()
 		}
 		if (currItem->asTextFrame())
 		{
-			gtGetText* gt = new gtGetText();
-			gt->run(false);
-			delete gt;
+			gtGetText().run(false);
 			if (doc->docHyphenator->AutoCheck)
 				doc->docHyphenator->slotHyphenate(currItem);
 			for (uint a = 0; a < doc->Items->count(); ++a)
@@ -3520,9 +3507,7 @@ void ScribusMainWindow::slotFileAppend()
 {
 	if (doc->selection->count() != 0)
 	{
-		gtGetText* gt = new gtGetText();
-		gt->run(true);
-		delete gt;
+		gtGetText().run(true);
 		if (doc->docHyphenator->AutoCheck)
 			doc->docHyphenator->slotHyphenate(doc->selection->itemAt(0));
 		view->DrawNew();
@@ -3692,8 +3677,8 @@ bool ScribusMainWindow::DoFileClose()
 		view->close();
 		delete view;
 		view = NULL;
-		doc = NULL;
-		ActWin = NULL;
+		doc = NULL; // TODO: is this truthful?
+		ActWin = NULL; // TODO: is this truthful?
 		return true;
 	}
 	undoManager->removeStack(doc->DocName);
@@ -3794,13 +3779,13 @@ bool ScribusMainWindow::DoFileClose()
 	}
 	view->close();
 	delete view;
+	view = 0;
 	doc->setLoading(true);
 	layerPalette->ClearInhalt();
 	docCheckerPalette->buildErrorList(0);
 	HaveDoc--;
-	view = NULL;
 	delete doc;
-	doc = NULL;
+	doc = 0;
 	ActWin = NULL;
 	tocGenerator->setDoc(doc);
 	return true;
@@ -3872,47 +3857,47 @@ void ScribusMainWindow::slotReallyPrint(
 	ColorList usedSpots;
 	doc->getUsedColors(usedSpots, true);
 	QStringList spots = usedSpots.keys();
-	Druck *printer = new Druck(this, options.filename, options.printer, PDef.Command, prefsManager->appPrefs.GCRMode, spots);
-	printer->setMinMax(1, doc->Pages->count(), doc->currentPage->pageNr()+1);
+	Druck printer(this, options.filename, options.printer, PDef.Command, prefsManager->appPrefs.GCRMode, spots);
+	printer.setMinMax(1, doc->Pages->count(), doc->currentPage->pageNr()+1);
 	printDinUse = true;
-	connect(printer, SIGNAL(doPreview()), this, SLOT(doPrintPreview()));
-	if (printer->exec())
+	connect(&printer, SIGNAL(doPreview()), this, SLOT(doPrintPreview()));
+	if (printer.exec())
 	{
 		ReOrderText(doc, view);
 		qApp->setOverrideCursor(QCursor(waitCursor), true);
-		options.printer = printer->printerName();
-		options.filename = printer->outputFileName();
-		options.toFile = printer->outputToFile();
-		if (printer->CurrentPage->isChecked())
+		options.printer = printer.printerName();
+		options.filename = printer.outputFileName();
+		options.toFile = printer.outputToFile();
+		if (printer.CurrentPage->isChecked())
 			options.pageNumbers.push_back(doc->currentPage->pageNr()+1);
 		else
 		{
-			if (printer->RadioButton1->isChecked())
+			if (printer.RadioButton1->isChecked())
 				parsePagesString("*", &options.pageNumbers, doc->DocPages.count());
 			else
-				parsePagesString(printer->PageNr->text(), &options.pageNumbers, doc->DocPages.count());
+				parsePagesString(printer.PageNr->text(), &options.pageNumbers, doc->DocPages.count());
 		}
-		options.copies = printer->numCopies();
-		options.outputSeparations = printer->outputSeparations();
-		options.separationName = printer->separationName();
-		options.allSeparations = printer->allSeparations();
+		options.copies = printer.numCopies();
+		options.outputSeparations = printer.outputSeparations();
+		options.separationName = printer.separationName();
+		options.allSeparations = printer.allSeparations();
 		if (options.outputSeparations)
 			options.useSpotColors = true;
 		else
-			options.useSpotColors = printer->doSpot();
-		options.useColor = printer->color();
-		options.mirrorH = printer->mirrorHorizontal();
-		options.mirrorV = printer->mirrorVertical();
-		options.useICC = printer->ICCinUse();
-		options.doGCR = printer->doGCR();
-		options.PSLevel = printer->PSLevel();
-		options.setDevParam = printer->doDev();
+			options.useSpotColors = printer.doSpot();
+		options.useColor = printer.color();
+		options.mirrorH = printer.mirrorHorizontal();
+		options.mirrorV = printer.mirrorVertical();
+		options.useICC = printer.ICCinUse();
+		options.doGCR = printer.doGCR();
+		options.PSLevel = printer.PSLevel();
+		options.setDevParam = printer.doDev();
 		PDef.Pname = options.printer;
 		PDef.Dname = options.filename;
-		if (printer->OtherCom->isChecked())
+		if (printer.OtherCom->isChecked())
 		{
-			PDef.Command = printer->Command->text();
-			options.printerCommand = printer->Command->text();
+			PDef.Command = printer.Command->text();
+			options.printerCommand = printer.Command->text();
 			options.useAltPrintCommand = true;
 		}
 		else
@@ -3920,7 +3905,7 @@ void ScribusMainWindow::slotReallyPrint(
 			options.useAltPrintCommand = false;
 		}
 #ifdef HAVE_CUPS
-		options.printerOptions = printer->PrinterOpts;
+		options.printerOptions = printer.PrinterOpts;
 #endif
 #ifndef HAVE_CUPS
 		options.printerOptions = QString("");
@@ -3934,8 +3919,7 @@ void ScribusMainWindow::slotReallyPrint(
 		qApp->setOverrideCursor(QCursor(arrowCursor), true);
 	}
 	printDinUse = false;
-	disconnect(printer, SIGNAL(doPreview()), this, SLOT(doPrintPreview()));
-	delete printer;
+	disconnect(&printer, SIGNAL(doPreview()), this, SLOT(doPrintPreview()));
 	mainWindowStatusLabel->setText( tr("Ready"));
 }
 
@@ -3959,76 +3943,71 @@ bool ScribusMainWindow::doPrint(PrintOpt
 	doc->getUsedColors(usedColors);
 	fileWatcher->forceScan();
 	fileWatcher->stop();
-	PSLib *dd = new PSLib(true, prefsManager->appPrefs.AvailFonts, ReallyUsed, usedColors, false, options->useSpotColors);
-	if (dd != NULL)
+	PSLib dd(true, prefsManager->appPrefs.AvailFonts, ReallyUsed, usedColors, false, options->useSpotColors);
+	if (!options->toFile)
+		filename = PrefsPfad+"/tmp.ps";
+	else
 	{
-		if (!options->toFile)
-			filename = PrefsPfad+"/tmp.ps";
-		else
+		qApp->setOverrideCursor(QCursor(arrowCursor), true);
+		if (!overwrite(this, filename))
 		{
-			qApp->setOverrideCursor(QCursor(arrowCursor), true);
-			if (!overwrite(this, filename))
-			{
-				delete dd;
-				fileWatcher->start();
+			fileWatcher->start();
+			return true;
+		}
+		qApp->setOverrideCursor(QCursor(waitCursor), true);
+	}
+	bool PSfile = dd.PS_set_file(filename);
+	filename = QDir::convertSeparators(filename);
+	if (PSfile)
+	{
+		// Write the PS to a file
+		ScColor::UseProf = options->useICC;
+		int psCreationRetVal=dd.CreatePS(doc, options->pageNumbers, options->outputSeparations, options->separationName, options->allSeparations,
+					   options->useColor, options->mirrorH, options->mirrorV, options->useICC, options->doGCR, options->setDevParam);
+		if (psCreationRetVal!=0)
+		{
+			unlink(filename);
+			if (psCreationRetVal==2)
 				return true;
-			}
-			qApp->setOverrideCursor(QCursor(waitCursor), true);
+			else
+				return false;
 		}
-		bool PSfile = dd->PS_set_file(filename);
-		filename = QDir::convertSeparators(filename);
-		if (PSfile)
-		{
-			// Write the PS to a file
-			ScColor::UseProf = options->useICC;
-			int psCreationRetVal=dd->CreatePS(doc, options->pageNumbers, options->outputSeparations, options->separationName, options->allSeparations,
-			               options->useColor, options->mirrorH, options->mirrorV, options->useICC, options->doGCR, options->setDevParam);
-			if (psCreationRetVal!=0)
-			{
-				unlink(filename);
-				if (psCreationRetVal==2)
-					return true;
-				else
-					return false;
+		ScColor::UseProf = true;
+		if (options->PSLevel != 3)
+		{
+			// use gs to convert our PS to a lower version
+			QString tmp;
+			QStringList opts;
+			opts.append( QString("-dDEVICEWIDTHPOINTS=%1").arg(tmp.setNum(doc->pageWidth)) );
+			opts.append( QString("-dDEVICEHEIGHTPOINTS=%1").arg(tmp.setNum(doc->pageHeight)) );
+			convertPS2PS(filename, filename + ".tmp", opts, options->PSLevel);
+			moveFile( filename + ".tmp", filename );
+		}
+		if (!options->toFile)
+		{
+			// print and delete the PS file
+			QString cmd;
+			if (options->useAltPrintCommand)
+			{
+				cmd = options->printerCommand + " "+filename;
+				system(cmd);
 			}
-			ScColor::UseProf = true;
-			if (options->PSLevel != 3)
+			else
 			{
-				// use gs to convert our PS to a lower version
-				QString tmp;
-				QStringList opts;
-				opts.append( QString("-dDEVICEWIDTHPOINTS=%1").arg(tmp.setNum(doc->pageWidth)) );
-				opts.append( QString("-dDEVICEHEIGHTPOINTS=%1").arg(tmp.setNum(doc->pageHeight)) );
-				convertPS2PS(filename, filename + ".tmp", opts, options->PSLevel);
-				moveFile( filename + ".tmp", filename );
-			}
-			if (!options->toFile)
-			{
-				// print and delete the PS file
-				QString cmd;
-				if (options->useAltPrintCommand)
-				{
-					cmd = options->printerCommand + " "+filename;
-					system(cmd);
-				}
-				else
-				{
-					QString cc;
-					cmd = "lpr -P" + options->printer;
-					if (options->copies > 1)
-						cmd += " -#" + cc.setNum(options->copies);
-					cmd += options->printerOptions;
-					cmd += " "+filename;
-					system(cmd);
-				}
-				unlink(filename);
+				QString cc;
+				cmd = "lpr -P" + options->printer;
+				if (options->copies > 1)
+					cmd += " -#" + cc.setNum(options->copies);
+				cmd += options->printerOptions;
+				cmd += " "+filename;
+				system(cmd);
 			}
-			retw = true;
+			unlink(filename);
 		}
-		else
-			retw = false;
-		delete dd;
+		retw = true;
 	}
+	else
+		retw = false;
 	fileWatcher->start();
 	return retw;
 }
@@ -4134,9 +4113,7 @@ void ScribusMainWindow::slotEditCut()
 		{
 			if (currItem->isTableItem && currItem->isSingleSel)
 				return;
-			ScriXmlDoc *ss = new ScriXmlDoc();
-			BufferI = ss->WriteElem(doc, view, doc->selection);
-			Buffer2 = BufferI;
+			Buffer2 = BufferI = ScriXmlDoc().WriteElem(doc, view, doc->selection);
 			view->DeleteItem();
 		}
 		slotDocCh();
@@ -4218,10 +4195,7 @@ void ScribusMainWindow::slotEditCopy()
 		{
 			if (currItem->isTableItem && currItem->isSingleSel)
 				return;
-			ScriXmlDoc *ss = new ScriXmlDoc();
-			BufferI = ss->WriteElem(doc, view, doc->selection);
-			Buffer2 = BufferI;
-			delete ss;
+			Buffer2 = BufferI = ScriXmlDoc().WriteElem(doc, view, doc->selection);
 		}
 		BuFromApp = true;
 		ClipB->setText(BufferI);
@@ -4311,7 +4285,7 @@ void ScribusMainWindow::slotEditPaste()
 					hg->cstrikepos = it == NULL ? -1 : (*it).toInt();
 					it++;
 					hg->cstrikewidth = it == NULL ? -1 : (*it).toInt();
-					currItem->itemText.insert(currItem->CPos, hg);
+					currItem->itemText.insert(currItem->CPos, hg); // takes ownership of `hg'
 					currItem->CPos += 1;
 					hg->PRot = 0;
 					hg->PtransX = 0;
@@ -4387,19 +4361,18 @@ void ScribusMainWindow::slotEditPaste()
 				hg->PtransY = 0;
 				hg->cextra = 0;
 				hg->cembedded = currItem3;
-				currItem->itemText.insert(currItem->CPos, hg);
+				currItem->itemText.insert(currItem->CPos, hg); // takes ownership of `hg'
 				currItem->CPos += 1;
 			}
 			else
 			{
-				Serializer *ss = new Serializer("");
-				ss->Objekt = Buffer2;
+				Serializer ss("");
+				ss.Objekt = Buffer2;
 				int st = doc->currentParaStyle;
 				if (st > 5)
-					ss->GetText(currItem, st, doc->docParagraphStyles[st].Font, doc->docParagraphStyles[st].FontSize, true);
+					ss.GetText(currItem, st, doc->docParagraphStyles[st].Font, doc->docParagraphStyles[st].FontSize, true);
 				else
-					ss->GetText(currItem, st, currItem->font(), currItem->fontSize(), true);
-				delete ss;
+					ss.GetText(currItem, st, currItem->font(), currItem->fontSize(), true);
 			}
 			view->RefreshItem(currItem);
 		}
@@ -4539,16 +4512,12 @@ void ScribusMainWindow::DisableTxEdit()
 
 void ScribusMainWindow::slotHelpAbout()
 {
-	About* dia = new About(this);
-	dia->exec();
-	delete dia;
+	About(this).exec();
 }
 
 void ScribusMainWindow::slotHelpAboutPlugins()
 {
-	AboutPlugins* dia = new AboutPlugins(this);
-	dia->exec();
-	delete dia;
+	AboutPlugins(this).exec();
 }
 
 void ScribusMainWindow::slotHelpAboutQt()
@@ -4558,6 +4527,9 @@ void ScribusMainWindow::slotHelpAboutQt(
 
 void ScribusMainWindow::slotOnlineHelp()
 {
+	// FIXME: LEAK: it looks like we probably leak helpbrowser here, unless
+	// it's deleted from somewhere else. It doesn't appear to delete its self
+	// on close.
 	HelpBrowser *dia = new HelpBrowser(0, tr("Scribus Manual"), ScMW->guiLanguage);
 	dia->show();
 }
@@ -4581,10 +4553,9 @@ void ScribusMainWindow::SaveText()
 	if (!fn.isEmpty())
 	{
 		dirs->set("save_text", fn.left(fn.findRev("/")));
-		Serializer *se = new Serializer(fn);
-		se->PutText(doc->selection->itemAt(0));
-		se->Write(LoadEnc);
-		delete se;
+		Serializer se(fn);
+		se.PutText(doc->selection->itemAt(0));
+		se.Write(LoadEnc);
 	}
 }
 
@@ -4612,22 +4583,21 @@ void ScribusMainWindow::slotNewPageM()
 	NoFrameEdit();
 	view->Deselect(true);
 	QStringList base;
-	InsPage *dia = new InsPage(this, doc, doc->currentPage->pageNr(), doc->Pages->count());
-	if (dia->exec())
+	InsPage dia(this, doc, doc->currentPage->pageNr(), doc->Pages->count());
+	if (dia.exec())
 	{
-		base = dia->getMasterPages();
-		addNewPages(dia->getWherePage(),
-		            dia->getWhere(),
-		            dia->getCount(),
-					dia->heightMSpinBox->value() / doc->unitRatio(),
-					dia->widthMSpinBox->value() / doc->unitRatio(),
-					dia->orientationQComboBox->currentItem(),
-					dia->prefsPageSizeName,
-					dia->moveObjects->isChecked(),
+		base = dia.getMasterPages();
+		addNewPages(dia.getWherePage(),
+		            dia.getWhere(),
+		            dia.getCount(),
+					dia.heightMSpinBox->value() / doc->unitRatio(),
+					dia.widthMSpinBox->value() / doc->unitRatio(),
+					dia.orientationQComboBox->currentItem(),
+					dia.prefsPageSizeName,
+					dia.moveObjects->isChecked(),
 		            &base
 		            );
 	}
-	delete dia;
 }
 
 void ScribusMainWindow::addNewPages(int wo, int where, int numPages, double height, double width, int orient, QString siz, bool mov, QStringList* basedOn)
@@ -4722,34 +4692,32 @@ void ScribusMainWindow::slotNewPage(int 
 
 void ScribusMainWindow::duplicateToMasterPage()
 {
-	NewTm *dia = new NewTm(this, tr("Name:"), tr("Convert Page to Master Page"), doc);
-	dia->Answer->setText( tr("New Master Page"));
-	dia->Answer->selectAll();
+	NewTm dia(this, tr("Name:"), tr("Convert Page to Master Page"), doc);
+	dia.Answer->setText( tr("New Master Page"));
+	dia.Answer->selectAll();
 	view->Deselect(true);
-	if (dia->exec())
+	if (dia.exec())
 	{
 		int diaLinksCurrItem=0;
 		int diaLinksCount=0;
 		if (doc->currentPageLayout != singlePage)
 		{
-			diaLinksCurrItem=dia->Links->currentItem();
-			diaLinksCount=static_cast<int>(dia->Links->count());
+			diaLinksCurrItem=dia.Links->currentItem();
+			diaLinksCount=static_cast<int>(dia.Links->count());
 		}
-		QString masterPageName = dia->Answer->text();
+		QString masterPageName = dia.Answer->text();
 		while (doc->MasterNames.contains(masterPageName) || (masterPageName == "Normal"))
 		{
-			if (!dia->exec())
+			if (!dia.exec())
 			{
-				delete dia;
 				return;
 			}
-			masterPageName = dia->Answer->text();
+			masterPageName = dia.Answer->text();
 		}
 		int currentPageNumber=doc->currentPage->pageNr();
 		bool ok=doc->copyPageToMasterPage(currentPageNumber, diaLinksCurrItem, diaLinksCount, masterPageName);
 		Q_ASSERT(ok); //TODO get a return value in case the copy was not possible
 	}
-	delete dia;
 }
 
 /*!
@@ -5530,10 +5498,9 @@ void ScribusMainWindow::DeletePage()
 {
 	NoFrameEdit();
 	view->Deselect(true);
-	DelPages *dia = new DelPages(this, doc->currentPage->pageNr()+1, doc->Pages->count());
-	if (dia->exec())
-		DeletePage(dia->getFromPage(), dia->getToPage());
-	delete dia;
+	DelPages dia(this, doc->currentPage->pageNr()+1, doc->Pages->count());
+	if (dia.exec())
+		DeletePage(dia.getFromPage(), dia.getToPage());
 }
 
 void ScribusMainWindow::DeletePage(int from, int to)
@@ -5605,14 +5572,14 @@ void ScribusMainWindow::DeletePage(int f
 void ScribusMainWindow::MovePage()
 {
 	NoFrameEdit();
-	MovePages *dia = new MovePages(this, doc->currentPage->pageNr()+1, doc->Pages->count(), true);
-	if (dia->exec())
+	MovePages dia(this, doc->currentPage->pageNr()+1, doc->Pages->count(), true);
+	if (dia.exec())
 	{
 //		doc->OpenNodes = outlinePalette->buildReopenVals();
-		int from = dia->getFromPage();
-		int to = dia->getToPage();
-		int wie = dia->getWhere();
-		int wo = dia->getWherePage();
+		int from = dia.getFromPage();
+		int to = dia.getToPage();
+		int wie = dia.getWhere();
+		int wo = dia.getWherePage();
 		if ((from != wo) || (wie == 2))
 		{
 			doc->movePage(from-1, to, wo-1, wie);
@@ -5625,19 +5592,18 @@ void ScribusMainWindow::MovePage()
 		outlinePalette->BuildTree();
 		outlinePalette->reopenTree(doc->OpenNodes);
 	}
-	delete dia;
 }
 
 void ScribusMainWindow::CopyPage()
 {
 	NoFrameEdit();
-	MovePages *dia = new MovePages(this, doc->currentPage->pageNr()+1, doc->Pages->count(), false);
-	if (dia->exec())
+	MovePages dia(this, doc->currentPage->pageNr()+1, doc->Pages->count(), false);
+	if (dia.exec())
 	{
-		int pageNumberToCopy=dia->getFromPage()-1;
-		int whereToInsert=dia->getWhere();
-		int copyCount=dia->getCopyCount();
-		int wo = dia->getWherePage();
+		int pageNumberToCopy=dia.getFromPage()-1;
+		int whereToInsert=dia.getWhere();
+		int copyCount=dia.getCopyCount();
+		int wo = dia.getWherePage();
 		doc->copyPage(pageNumberToCopy, wo, whereToInsert, copyCount);
 		view->Deselect(true);
 		view->DrawNew();
@@ -5646,37 +5612,35 @@ void ScribusMainWindow::CopyPage()
 		outlinePalette->BuildTree();
 		AdjustBM();
 	}
-	delete dia;
 }
 
 void ScribusMainWindow::changePageMargins()
 {
 	int lp;
 	NoFrameEdit();
-	MarginDialog *dia = new MarginDialog(this, doc);
-	if (dia->exec())
+	MarginDialog dia(this, doc);
+	if (dia.exec())
 	{
 		if (doc->masterPageMode())
 		{
 			if (doc->currentPageLayout != singlePage)
 			{
-				lp = dia->Links->currentItem();
+				lp = dia.Links->currentItem();
 				if (lp == 0)
 					lp = 1;
-				else if (lp == static_cast<int>(dia->Links->count()-1))
+				else if (lp == static_cast<int>(dia.Links->count()-1))
 					lp = 0;
 				else
 					lp++;
 			}
-			doc->changePageMargins(dia->GroupRand->RandT, dia->GroupRand->RandB, dia->GroupRand->RandL, dia->GroupRand->RandR, dia->pageHeight, dia->pageWidth, dia->pageHeight, dia->pageWidth, dia->orientationQComboBox->currentItem(), dia->prefsPageSizeName, doc->currentPage->pageNr(), lp);
+			doc->changePageMargins(dia.GroupRand->RandT, dia.GroupRand->RandB, dia.GroupRand->RandL, dia.GroupRand->RandR, dia.pageHeight, dia.pageWidth, dia.pageHeight, dia.pageWidth, dia.orientationQComboBox->currentItem(), dia.prefsPageSizeName, doc->currentPage->pageNr(), lp);
 		}
 		else
-			doc->changePageMargins(dia->GroupRand->RandT, dia->GroupRand->RandB, dia->GroupRand->RandL, dia->GroupRand->RandR, dia->pageHeight, dia->pageWidth, dia->pageHeight, dia->pageWidth, dia->orientationQComboBox->currentItem(), dia->prefsPageSizeName, doc->currentPage->pageNr());
-		view->reformPages(dia->moveObjects->isChecked());
+			doc->changePageMargins(dia.GroupRand->RandT, dia.GroupRand->RandB, dia.GroupRand->RandL, dia.GroupRand->RandR, dia.pageHeight, dia.pageWidth, dia.pageHeight, dia.pageWidth, dia.orientationQComboBox->currentItem(), dia.prefsPageSizeName, doc->currentPage->pageNr());
+		view->reformPages(dia.moveObjects->isChecked());
 		view->DrawNew();
 		slotDocCh();
 	}
-	delete dia;
 }
 
 void ScribusMainWindow::setItemFont2(int id)
@@ -5747,13 +5711,12 @@ void ScribusMainWindow::setItemFSize(int
 	else
 	{
 		bool ok = false;
-		Query* dia = new Query(this, "New", 1, 0, tr("&Size:"), tr("Size"));
-		if (dia->exec())
+		Query dia(this, "New", 1, 0, tr("&Size:"), tr("Size"));
+		if (dia.exec())
 		{
-			c = qRound(dia->getEditText().toDouble(&ok));
+			c = qRound(dia.getEditText().toDouble(&ok));
 			if ((ok) && (c < 1025) && (c > 0))
 				view->chFSize(c*10);
-			delete dia;
 		}
 	}
 	propertiesPalette->setSize(c*10);
@@ -5796,10 +5759,10 @@ void ScribusMainWindow::setItemShade(int
 		}
 		else
 		{
-			Query* dia = new Query(this, "New", 1, 0, tr("&Shade:"), tr("Shade"));
-			if (dia->exec())
+			Query dia(this, "New", 1, 0, tr("&Shade:"), tr("Shade"));
+			if (dia.exec())
 			{
-				c = dia->getEditText().toInt(&ok);
+				c = dia.getEditText().toInt(&ok);
 				if (ok)
 				{
 					if ((currItem->itemType() == PageItem::TextFrame) || (currItem->itemType() == PageItem::PathText))
@@ -5807,7 +5770,6 @@ void ScribusMainWindow::setItemShade(int
 					else
 						view->ItemBrushShade(c);
 				}
-				delete dia;
 			}
 		}
 	}
@@ -5862,26 +5824,25 @@ void ScribusMainWindow::slotEditLineStyl
 {
 	if (HaveDoc)
 	{
-		LineFormate *dia = new LineFormate(this, doc);
-		connect(dia, SIGNAL(saveStyle(LineFormate *)), this, SLOT(saveLStyles(LineFormate *)));
-		if (dia->exec())
+		LineFormate dia(this, doc);
+		connect(&dia, SIGNAL(saveStyle(LineFormate&)), this, SLOT(saveLStyles(LineFormate&)));
+		if (dia.exec())
 			saveLStyles(dia);
-		disconnect(dia, SIGNAL(saveStyle(LineFormate *)), this, SLOT(saveLStyles(LineFormate *)));
-		delete dia;
+		disconnect(&dia, SIGNAL(saveStyle(LineFormate&)), this, SLOT(saveLStyles(LineFormate&)));
 	}
 }
 
-void ScribusMainWindow::saveLStyles(LineFormate *dia)
+void ScribusMainWindow::saveLStyles(LineFormate & dia)
 {
 	PageItem* ite;
-	doc->MLineStyles = dia->TempStyles;
+	doc->MLineStyles = dia.TempStyles;
 	for (uint d = 0; d < doc->DocItems.count(); ++d)
 	{
 		ite = doc->DocItems.at(d);
 		if (!ite->NamedLStyle.isEmpty())
 		{
 			if (!doc->MLineStyles.contains(ite->NamedLStyle))
-				ite->NamedLStyle = dia->Replacement[ite->NamedLStyle];
+				ite->NamedLStyle = dia.Replacement[ite->NamedLStyle];
 		}
 	}
 	for (uint d1 = 0; d1 < doc->MasterItems.count(); ++d1)
@@ -5890,7 +5851,7 @@ void ScribusMainWindow::saveLStyles(Line
 		if (!ite->NamedLStyle.isEmpty())
 		{
 			if (!doc->MLineStyles.contains(ite->NamedLStyle))
-				ite->NamedLStyle = dia->Replacement[ite->NamedLStyle];
+				ite->NamedLStyle = dia.Replacement[ite->NamedLStyle];
 		}
 	}
 	for (uint d1 = 0; d1 < doc->FrameItems.count(); ++d1)
@@ -5899,7 +5860,7 @@ void ScribusMainWindow::saveLStyles(Line
 		if (!ite->NamedLStyle.isEmpty())
 		{
 			if (!doc->MLineStyles.contains(ite->NamedLStyle))
-				ite->NamedLStyle = dia->Replacement[ite->NamedLStyle];
+				ite->NamedLStyle = dia.Replacement[ite->NamedLStyle];
 		}
 	}
 	propertiesPalette->SetLineFormats(doc);
@@ -5910,16 +5871,15 @@ void ScribusMainWindow::slotEditStyles()
 {
 	if (HaveDoc)
 	{
-		StilFormate *dia = new StilFormate(this, doc);
-		connect(dia, SIGNAL(saveStyle(StilFormate *)), this, SLOT(saveStyles(StilFormate *)));
-		if (dia->exec())
+		StilFormate dia(this, doc);
+		connect(&dia, SIGNAL(saveStyle(StilFormate&)), this, SLOT(saveStyles(StilFormate&)));
+		if (dia.exec())
 			saveStyles(dia);
-		disconnect(dia, SIGNAL(saveStyle(StilFormate *)), this, SLOT(saveStyles(StilFormate *)));
-		delete dia;
+		disconnect(&dia, SIGNAL(saveStyle(StilFormate&)), this, SLOT(saveStyles(StilFormate&)));
 	}
 }
 
-void ScribusMainWindow::saveStyles(StilFormate *dia)
+void ScribusMainWindow::saveStyles(StilFormate & dia)
 {
 	QValueList<uint> ers;
 	QString nn;
@@ -5937,9 +5897,9 @@ void ScribusMainWindow::saveStyles(StilF
 	{
 		ff = false;
 		nn = doc->docParagraphStyles[a].Vname;
-		for (uint b=0; b<dia->TempVorl.count(); ++b)
+		for (uint b=0; b<dia.TempVorl.count(); ++b)
 		{
-			if (nn == dia->TempVorl[b].Vname)
+			if (nn == dia.TempVorl[b].Vname)
 			{
 				nr = b;
 				ff = true;
@@ -5950,19 +5910,19 @@ void ScribusMainWindow::saveStyles(StilF
 			ers.append(nr);
 		else
 		{
-			for (uint b=0; b<dia->TempVorl.count(); ++b)
+			for (uint b=0; b<dia.TempVorl.count(); ++b)
 			{
 				struct PageItem::TabRecord tb;
 				tabEQ = false;
-				if ((doc->docParagraphStyles[a].TabValues.count() == 0) && (dia->TempVorl[b].TabValues.count() == 0))
+				if ((doc->docParagraphStyles[a].TabValues.count() == 0) && (dia.TempVorl[b].TabValues.count() == 0))
 					tabEQ = true;
 				else
 				{
-					for (uint t1 = 0; t1 < dia->TempVorl[b].TabValues.count(); t1++)
+					for (uint t1 = 0; t1 < dia.TempVorl[b].TabValues.count(); t1++)
 					{
-						tb.tabPosition = dia->TempVorl[b].TabValues[t1].tabPosition;
-						tb.tabType = dia->TempVorl[b].TabValues[t1].tabType;
-						tb.tabFillChar = dia->TempVorl[b].TabValues[t1].tabFillChar;
+						tb.tabPosition = dia.TempVorl[b].TabValues[t1].tabPosition;
+						tb.tabType = dia.TempVorl[b].TabValues[t1].tabType;
+						tb.tabFillChar = dia.TempVorl[b].TabValues[t1].tabFillChar;
 						for (uint t2 = 0; t2 < doc->docParagraphStyles[a].TabValues.count(); t2++)
 						{
 							struct PageItem::TabRecord tb2;
@@ -5979,35 +5939,35 @@ void ScribusMainWindow::saveStyles(StilF
 							break;
 					}
 				}
-				if ((doc->docParagraphStyles[a].LineSpa == dia->TempVorl[b].LineSpa) &&
-					(doc->docParagraphStyles[a].LineSpaMode == dia->TempVorl[b].LineSpaMode) &&
-					(doc->docParagraphStyles[a].Indent == dia->TempVorl[b].Indent) &&
-					(doc->docParagraphStyles[a].First == dia->TempVorl[b].First) &&
-					(doc->docParagraphStyles[a].textAlignment == dia->TempVorl[b].textAlignment) &&
-					(doc->docParagraphStyles[a].gapBefore == dia->TempVorl[b].gapBefore) &&
-					(doc->docParagraphStyles[a].gapAfter == dia->TempVorl[b].gapAfter) &&
-					(doc->docParagraphStyles[a].Font == dia->TempVorl[b].Font) &&
-					(tabEQ) && (doc->docParagraphStyles[a].DropDist == dia->TempVorl[b].DropDist) &&
-					(doc->docParagraphStyles[a].Drop == dia->TempVorl[b].Drop) &&
-					(doc->docParagraphStyles[a].DropLin == dia->TempVorl[b].DropLin) &&
-					(doc->docParagraphStyles[a].FontEffect == dia->TempVorl[b].FontEffect) &&
-					(doc->docParagraphStyles[a].FColor == dia->TempVorl[b].FColor) &&
-					(doc->docParagraphStyles[a].FShade == dia->TempVorl[b].FShade) &&
-					(doc->docParagraphStyles[a].SColor == dia->TempVorl[b].SColor) &&
-					(doc->docParagraphStyles[a].SShade == dia->TempVorl[b].SShade) &&
-					(doc->docParagraphStyles[a].BaseAdj == dia->TempVorl[b].BaseAdj) &&
-					(doc->docParagraphStyles[a].txtShadowX == dia->TempVorl[b].txtShadowX) &&
-					(doc->docParagraphStyles[a].txtShadowY == dia->TempVorl[b].txtShadowY) &&
-					(doc->docParagraphStyles[a].txtOutline == dia->TempVorl[b].txtOutline) &&
-					(doc->docParagraphStyles[a].txtUnderPos == dia->TempVorl[b].txtUnderPos) &&
-					(doc->docParagraphStyles[a].txtUnderWidth == dia->TempVorl[b].txtUnderWidth) &&
-					(doc->docParagraphStyles[a].txtStrikePos == dia->TempVorl[b].txtStrikePos) &&
-					(doc->docParagraphStyles[a].txtStrikeWidth == dia->TempVorl[b].txtStrikeWidth) &&
-					(doc->docParagraphStyles[a].scaleH == dia->TempVorl[b].scaleH) &&
-					(doc->docParagraphStyles[a].scaleV == dia->TempVorl[b].scaleV) &&
-					(doc->docParagraphStyles[a].baseOff == dia->TempVorl[b].baseOff) &&
-					(doc->docParagraphStyles[a].kernVal == dia->TempVorl[b].kernVal) &&
-					(doc->docParagraphStyles[a].FontSize == dia->TempVorl[b].FontSize))
+				if ((doc->docParagraphStyles[a].LineSpa == dia.TempVorl[b].LineSpa) &&
+					(doc->docParagraphStyles[a].LineSpaMode == dia.TempVorl[b].LineSpaMode) &&
+					(doc->docParagraphStyles[a].Indent == dia.TempVorl[b].Indent) &&
+					(doc->docParagraphStyles[a].First == dia.TempVorl[b].First) &&
+					(doc->docParagraphStyles[a].textAlignment == dia.TempVorl[b].textAlignment) &&
+					(doc->docParagraphStyles[a].gapBefore == dia.TempVorl[b].gapBefore) &&
+					(doc->docParagraphStyles[a].gapAfter == dia.TempVorl[b].gapAfter) &&
+					(doc->docParagraphStyles[a].Font == dia.TempVorl[b].Font) &&
+					(tabEQ) && (doc->docParagraphStyles[a].DropDist == dia.TempVorl[b].DropDist) &&
+					(doc->docParagraphStyles[a].Drop == dia.TempVorl[b].Drop) &&
+					(doc->docParagraphStyles[a].DropLin == dia.TempVorl[b].DropLin) &&
+					(doc->docParagraphStyles[a].FontEffect == dia.TempVorl[b].FontEffect) &&
+					(doc->docParagraphStyles[a].FColor == dia.TempVorl[b].FColor) &&
+					(doc->docParagraphStyles[a].FShade == dia.TempVorl[b].FShade) &&
+					(doc->docParagraphStyles[a].SColor == dia.TempVorl[b].SColor) &&
+					(doc->docParagraphStyles[a].SShade == dia.TempVorl[b].SShade) &&
+					(doc->docParagraphStyles[a].BaseAdj == dia.TempVorl[b].BaseAdj) &&
+					(doc->docParagraphStyles[a].txtShadowX == dia.TempVorl[b].txtShadowX) &&
+					(doc->docParagraphStyles[a].txtShadowY == dia.TempVorl[b].txtShadowY) &&
+					(doc->docParagraphStyles[a].txtOutline == dia.TempVorl[b].txtOutline) &&
+					(doc->docParagraphStyles[a].txtUnderPos == dia.TempVorl[b].txtUnderPos) &&
+					(doc->docParagraphStyles[a].txtUnderWidth == dia.TempVorl[b].txtUnderWidth) &&
+					(doc->docParagraphStyles[a].txtStrikePos == dia.TempVorl[b].txtStrikePos) &&
+					(doc->docParagraphStyles[a].txtStrikeWidth == dia.TempVorl[b].txtStrikeWidth) &&
+					(doc->docParagraphStyles[a].scaleH == dia.TempVorl[b].scaleH) &&
+					(doc->docParagraphStyles[a].scaleV == dia.TempVorl[b].scaleV) &&
+					(doc->docParagraphStyles[a].baseOff == dia.TempVorl[b].baseOff) &&
+					(doc->docParagraphStyles[a].kernVal == dia.TempVorl[b].kernVal) &&
+					(doc->docParagraphStyles[a].FontSize == dia.TempVorl[b].FontSize))
 				{
 				nr = b;
 				ff = true;
@@ -6018,16 +5978,16 @@ void ScribusMainWindow::saveStyles(StilF
 				ers.append(nr);
 			else
 			{
-				if (dia->ReplaceList.count() != 0)
+				if (dia.ReplaceList.count() != 0)
 				{
-					QString ne = dia->ReplaceList[nn];
+					QString ne = dia.ReplaceList[nn];
 					if (ne == tr("No Style"))
 						ers.append(0);
 					else
 					{
-						for (uint b=0; b<dia->TempVorl.count(); ++b)
+						for (uint b=0; b<dia.TempVorl.count(); ++b)
 						{
-							if (ne == dia->TempVorl[b].Vname)
+							if (ne == dia.TempVorl[b].Vname)
 							{
 								nr = b;
 								ff = true;
@@ -6085,44 +6045,44 @@ void ScribusMainWindow::saveStyles(StilF
 						if (cabneu > 0)
 						{
 							if (ite->itemText.at(e)->cfont == (*doc->AllFonts)[doc->docParagraphStyles[cabori].Font])
-								ite->itemText.at(e)->cfont = (*doc->AllFonts)[dia->TempVorl[cabneu].Font];
+								ite->itemText.at(e)->cfont = (*doc->AllFonts)[dia.TempVorl[cabneu].Font];
 							if (ite->itemText.at(e)->csize == doc->docParagraphStyles[cabori].FontSize)
-								ite->itemText.at(e)->csize = dia->TempVorl[cabneu].FontSize;
+								ite->itemText.at(e)->csize = dia.TempVorl[cabneu].FontSize;
 							if ((ite->itemText.at(e)->cstyle & 1919 ) == doc->docParagraphStyles[cabori].FontEffect)
 							{
 								ite->itemText.at(e)->cstyle &= ~1919;
-								ite->itemText.at(e)->cstyle |= dia->TempVorl[cabneu].FontEffect;
+								ite->itemText.at(e)->cstyle |= dia.TempVorl[cabneu].FontEffect;
 							}
 							if (ite->itemText.at(e)->ccolor == doc->docParagraphStyles[cabori].FColor)
-								ite->itemText.at(e)->ccolor = dia->TempVorl[cabneu].FColor;
+								ite->itemText.at(e)->ccolor = dia.TempVorl[cabneu].FColor;
 							if (ite->itemText.at(e)->cshade == doc->docParagraphStyles[cabori].FShade)
-								ite->itemText.at(e)->cshade = dia->TempVorl[cabneu].FShade;
+								ite->itemText.at(e)->cshade = dia.TempVorl[cabneu].FShade;
 							if (ite->itemText.at(e)->cstroke == doc->docParagraphStyles[cabori].SColor)
-								ite->itemText.at(e)->cstroke = dia->TempVorl[cabneu].SColor;
+								ite->itemText.at(e)->cstroke = dia.TempVorl[cabneu].SColor;
 							if (ite->itemText.at(e)->cshade2 == doc->docParagraphStyles[cabori].SShade)
-								ite->itemText.at(e)->cshade2 = dia->TempVorl[cabneu].SShade;
+								ite->itemText.at(e)->cshade2 = dia.TempVorl[cabneu].SShade;
 							if (ite->itemText.at(e)->cshadowx == doc->docParagraphStyles[cabori].txtShadowX)
-								ite->itemText.at(e)->cshadowx = dia->TempVorl[cabneu].txtShadowX;
+								ite->itemText.at(e)->cshadowx = dia.TempVorl[cabneu].txtShadowX;
 							if (ite->itemText.at(e)->cshadowy == doc->docParagraphStyles[cabori].txtShadowY)
-								ite->itemText.at(e)->cshadowy = dia->TempVorl[cabneu].txtShadowY;
+								ite->itemText.at(e)->cshadowy = dia.TempVorl[cabneu].txtShadowY;
 							if (ite->itemText.at(e)->coutline == doc->docParagraphStyles[cabori].txtOutline)
-								ite->itemText.at(e)->coutline = dia->TempVorl[cabneu].txtOutline;
+								ite->itemText.at(e)->coutline = dia.TempVorl[cabneu].txtOutline;
 							if (ite->itemText.at(e)->cunderpos == doc->docParagraphStyles[cabori].txtUnderPos)
-								ite->itemText.at(e)->cunderpos = dia->TempVorl[cabneu].txtUnderPos;
+								ite->itemText.at(e)->cunderpos = dia.TempVorl[cabneu].txtUnderPos;
 							if (ite->itemText.at(e)->cunderwidth == doc->docParagraphStyles[cabori].txtUnderWidth)
-								ite->itemText.at(e)->cunderwidth = dia->TempVorl[cabneu].txtUnderWidth;
+								ite->itemText.at(e)->cunderwidth = dia.TempVorl[cabneu].txtUnderWidth;
 							if (ite->itemText.at(e)->cstrikepos == doc->docParagraphStyles[cabori].txtStrikePos)
-								ite->itemText.at(e)->cstrikepos = dia->TempVorl[cabneu].txtStrikePos;
+								ite->itemText.at(e)->cstrikepos = dia.TempVorl[cabneu].txtStrikePos;
 							if (ite->itemText.at(e)->cstrikewidth == doc->docParagraphStyles[cabori].txtStrikeWidth)
-								ite->itemText.at(e)->cstrikewidth = dia->TempVorl[cabneu].txtStrikeWidth;
+								ite->itemText.at(e)->cstrikewidth = dia.TempVorl[cabneu].txtStrikeWidth;
 							if (ite->itemText.at(e)->cscale == doc->docParagraphStyles[cabori].scaleH)
-								ite->itemText.at(e)->cscale = dia->TempVorl[cabneu].scaleH;
+								ite->itemText.at(e)->cscale = dia.TempVorl[cabneu].scaleH;
 							if (ite->itemText.at(e)->cscalev == doc->docParagraphStyles[cabori].scaleV)
-								ite->itemText.at(e)->cscalev = dia->TempVorl[cabneu].scaleV;
+								ite->itemText.at(e)->cscalev = dia.TempVorl[cabneu].scaleV;
 							if (ite->itemText.at(e)->cbase == doc->docParagraphStyles[cabori].baseOff)
-								ite->itemText.at(e)->cbase = dia->TempVorl[cabneu].baseOff;
+								ite->itemText.at(e)->cbase = dia.TempVorl[cabneu].baseOff;
 							if (ite->itemText.at(e)->cextra == doc->docParagraphStyles[cabori].kernVal)
-								ite->itemText.at(e)->cextra = dia->TempVorl[cabneu].kernVal;
+								ite->itemText.at(e)->cextra = dia.TempVorl[cabneu].kernVal;
 						}
 						else
 						{
@@ -6170,44 +6130,44 @@ void ScribusMainWindow::saveStyles(StilF
 						if (cabneu > 0)
 						{
 							if (chars->at(e)->cfont == doc->docParagraphStyles[cabori].Font)
-								chars->at(e)->cfont = dia->TempVorl[cabneu].Font;
+								chars->at(e)->cfont = dia.TempVorl[cabneu].Font;
 							if (chars->at(e)->csize == doc->docParagraphStyles[cabori].FontSize)
-								chars->at(e)->csize = dia->TempVorl[cabneu].FontSize;
+								chars->at(e)->csize = dia.TempVorl[cabneu].FontSize;
 							if ((chars->at(e)->cstyle & 1919 ) == doc->docParagraphStyles[cabori].FontEffect)
 							{
 								chars->at(e)->cstyle &= ~1919;
-								chars->at(e)->cstyle |= dia->TempVorl[cabneu].FontEffect;
+								chars->at(e)->cstyle |= dia.TempVorl[cabneu].FontEffect;
 							}
 							if (chars->at(e)->ccolor == doc->docParagraphStyles[cabori].FColor)
-								chars->at(e)->ccolor = dia->TempVorl[cabneu].FColor;
+								chars->at(e)->ccolor = dia.TempVorl[cabneu].FColor;
 							if (chars->at(e)->cshade == doc->docParagraphStyles[cabori].FShade)
-								chars->at(e)->cshade = dia->TempVorl[cabneu].FShade;
+								chars->at(e)->cshade = dia.TempVorl[cabneu].FShade;
 							if (chars->at(e)->cstroke == doc->docParagraphStyles[cabori].SColor)
-								chars->at(e)->cstroke = dia->TempVorl[cabneu].SColor;
+								chars->at(e)->cstroke = dia.TempVorl[cabneu].SColor;
 							if (chars->at(e)->cshade2 == doc->docParagraphStyles[cabori].SShade)
-								chars->at(e)->cshade2 = dia->TempVorl[cabneu].SShade;
+								chars->at(e)->cshade2 = dia.TempVorl[cabneu].SShade;
 							if (chars->at(e)->cshadowx == doc->docParagraphStyles[cabori].txtShadowX)
-								chars->at(e)->cshadowx = dia->TempVorl[cabneu].txtShadowX;
+								chars->at(e)->cshadowx = dia.TempVorl[cabneu].txtShadowX;
 							if (chars->at(e)->cshadowy == doc->docParagraphStyles[cabori].txtShadowY)
-								chars->at(e)->cshadowy = dia->TempVorl[cabneu].txtShadowY;
+								chars->at(e)->cshadowy = dia.TempVorl[cabneu].txtShadowY;
 							if (chars->at(e)->coutline == doc->docParagraphStyles[cabori].txtOutline)
-								chars->at(e)->coutline = dia->TempVorl[cabneu].txtOutline;
+								chars->at(e)->coutline = dia.TempVorl[cabneu].txtOutline;
 							if (chars->at(e)->cunderpos == doc->docParagraphStyles[cabori].txtUnderPos)
-								chars->at(e)->cunderpos = dia->TempVorl[cabneu].txtUnderPos;
+								chars->at(e)->cunderpos = dia.TempVorl[cabneu].txtUnderPos;
 							if (chars->at(e)->cunderwidth == doc->docParagraphStyles[cabori].txtUnderWidth)
-								chars->at(e)->cunderwidth = dia->TempVorl[cabneu].txtUnderWidth;
+								chars->at(e)->cunderwidth = dia.TempVorl[cabneu].txtUnderWidth;
 							if (chars->at(e)->cstrikepos == doc->docParagraphStyles[cabori].txtStrikePos)
-								chars->at(e)->cstrikepos = dia->TempVorl[cabneu].txtStrikePos;
+								chars->at(e)->cstrikepos = dia.TempVorl[cabneu].txtStrikePos;
 							if (chars->at(e)->cstrikewidth == doc->docParagraphStyles[cabori].txtStrikeWidth)
-								chars->at(e)->cstrikewidth = dia->TempVorl[cabneu].txtStrikeWidth;
+								chars->at(e)->cstrikewidth = dia.TempVorl[cabneu].txtStrikeWidth;
 							if (chars->at(e)->cscale == doc->docParagraphStyles[cabori].scaleH)
-								chars->at(e)->cscale = dia->TempVorl[cabneu].scaleH;
+								chars->at(e)->cscale = dia.TempVorl[cabneu].scaleH;
 							if (chars->at(e)->cscalev == doc->docParagraphStyles[cabori].scaleV)
-								chars->at(e)->cscalev = dia->TempVorl[cabneu].scaleV;
+								chars->at(e)->cscalev = dia.TempVorl[cabneu].scaleV;
 							if (chars->at(e)->cbase == doc->docParagraphStyles[cabori].baseOff)
-								chars->at(e)->cbase = dia->TempVorl[cabneu].baseOff;
+								chars->at(e)->cbase = dia.TempVorl[cabneu].baseOff;
 							if (chars->at(e)->cextra == doc->docParagraphStyles[cabori].kernVal)
-								chars->at(e)->cextra = dia->TempVorl[cabneu].kernVal;
+								chars->at(e)->cextra = dia.TempVorl[cabneu].kernVal;
 						}
 						else
 						{
@@ -6237,7 +6197,7 @@ void ScribusMainWindow::saveStyles(StilF
 			CurrStED->Editor->currentParaStyle = ers[CurrStED->Editor->currentParaStyle];
 		}
 	}
-	doc->docParagraphStyles = dia->TempVorl;
+	doc->docParagraphStyles = dia.TempVorl;
 	if (CurrStED != NULL)
 	{
 		if (CurrStED->Editor->StyledText.count() != 0)
@@ -6304,8 +6264,8 @@ void ScribusMainWindow::slotEditColors()
 		edc = doc->PageColors;
 	else
 		edc = prefsManager->colorSet();
-	Farbmanager* dia = new Farbmanager(this, edc, HaveDoc, prefsManager->colorSetName(), prefsManager->appPrefs.CustomColorSets);
-	if (dia->exec())
+	Farbmanager dia(this, edc, HaveDoc, prefsManager->colorSetName(), prefsManager->appPrefs.CustomColorSets);
+	if (dia.exec())
 	{
 		if (HaveDoc)
 		{
@@ -6314,11 +6274,11 @@ void ScribusMainWindow::slotEditColors()
 			PageItem *ite;
 			QColor tmpc;
 			slotDocCh();
-			doc->PageColors = dia->EditColors;
+			doc->PageColors = dia.EditColors;
 			propertiesPalette->updateColorList();
 			propertiesPalette->updateCList();
 			updateColorMenu();
-			ers = dia->Ersatzliste;
+			ers = dia.Ersatzliste;
 			if (!ers.isEmpty())
 			{
 				QMap<QString,QString>::Iterator it;
@@ -6481,14 +6441,13 @@ void ScribusMainWindow::slotEditColors()
 		}
 		else
 		{
-			prefsManager->setColorSet(dia->EditColors);
-			prefsManager->setColorSetName(dia->LoadColSet->text());
+			prefsManager->setColorSet(dia.EditColors);
+			prefsManager->setColorSetName(dia.LoadColSet->text());
 			propertiesPalette->Cpal->SetColors(prefsManager->colorSet());
 		}
 	}
 	if (!HaveDoc)
-		prefsManager->appPrefs.CustomColorSets = dia->CColSet;
-	delete dia;
+		prefsManager->appPrefs.CustomColorSets = dia.CColSet;
 }
 
 void ScribusMainWindow::setPenFarbe(QString farbe)
@@ -6619,16 +6578,16 @@ void ScribusMainWindow::ObjektDupM()
 {
 	slotSelect();
 	NoFrameEdit();
-	Mdup *dia = new Mdup(this, DispX * doc->unitRatio(), DispY * doc->unitRatio(), doc->unitIndex());
-	if (dia->exec())
+	Mdup dia(this, DispX * doc->unitRatio(), DispY * doc->unitRatio(), doc->unitIndex());
+	if (dia.exec())
 	{
 		bool savedAlignGrid = doc->useRaster;
 		bool savedAlignGuides = doc->SnapGuides;
 		doc->useRaster = false;
 		doc->SnapGuides = false;
-		int anz = dia->Ncopies->value();
-		double dH = dia->ShiftH->value() / doc->unitRatio();
-		double dV = dia->ShiftV->value() / doc->unitRatio();
+		int anz = dia.Ncopies->value();
+		double dH = dia.ShiftH->value() / doc->unitRatio();
+		double dV = dia.ShiftV->value() / doc->unitRatio();
 		double dH2 = dH;
 		double dV2 = dV;
 		int a;
@@ -6656,7 +6615,6 @@ void ScribusMainWindow::ObjektDupM()
 		doc->useRaster = savedAlignGrid;
 		doc->SnapGuides = savedAlignGuides;
 	}
-	delete dia;
 }
 
 void ScribusMainWindow::selectItemsFromOutlines(int Page, int Item, bool single)
@@ -6719,7 +6677,7 @@ void ScribusMainWindow::buildFontMenu()
 	int a;
 	QString b = " ";
 	SCFontsIterator it(prefsManager->appPrefs.AvailFonts);
-	FontSub = new FontCombo(0);
+	FontSub = new FontCombo(0); // TODO: LEAK? Where is this deleted?
 	FontMenu->insertItem(FontSub);
 	connect(FontSub, SIGNAL(activated(int)), this, SLOT(setItemFont2(int)));
 	FontMenu->insertSeparator();
@@ -6752,10 +6710,10 @@ void ScribusMainWindow::slotPrefsOrg()
 	int oldGUIFontSize=prefsManager->guiFontSize();
 	//double oldDisplayScale=prefsManager->displayScale();
 	setAppMode(modeNormal);
-	Preferences *dia = new Preferences(this);
-	if (dia->exec())
+	Preferences dia(this);
+	if (dia.exec())
 	{
-		dia->updatePreferences();
+		dia.updatePreferences();
 		prefsManager->SavePrefs();
 		DocDir = prefsManager->documentDir();
 		scrapbookPalette->rebuildView();
@@ -6786,7 +6744,6 @@ void ScribusMainWindow::slotPrefsOrg()
 		SetShortCut();
 		emit prefsChanged();
 	}
-	delete dia;
 }
 
 void ScribusMainWindow::ShowSubs()
@@ -6830,33 +6787,32 @@ void ScribusMainWindow::doPrintPreview()
 	}
 	if (HaveDoc)
 	{
-		PPreview *dia = new PPreview(this, view, doc, HavePngAlpha, HaveTiffSep);
+		PPreview dia(this, view, doc, HavePngAlpha, HaveTiffSep);
 		previewDinUse = true;
-		connect(dia, SIGNAL(doPrint()), this, SLOT(slotReallyPrint()));
-		dia->exec();
+		connect(&dia, SIGNAL(doPrint()), this, SLOT(slotReallyPrint()));
+		dia.exec();
 		PrefsManager *prefsManager=PrefsManager::instance();
-		prefsManager->appPrefs.PrPr_Mode = dia->EnableCMYK->isChecked();
-		prefsManager->appPrefs.PrPr_AlphaText = dia->AliasText->isChecked();
-		prefsManager->appPrefs.PrPr_AlphaGraphics = dia->AliasGr->isChecked();
-		prefsManager->appPrefs.PrPr_Transparency = dia->AliasTr->isChecked();
+		prefsManager->appPrefs.PrPr_Mode = dia.EnableCMYK->isChecked();
+		prefsManager->appPrefs.PrPr_AlphaText = dia.AliasText->isChecked();
+		prefsManager->appPrefs.PrPr_AlphaGraphics = dia.AliasGr->isChecked();
+		prefsManager->appPrefs.PrPr_Transparency = dia.AliasTr->isChecked();
 		if (HaveTiffSep != 0)
 		{
-			prefsManager->appPrefs.PrPr_C = dia->EnableCMYK_C->isChecked();
-			prefsManager->appPrefs.PrPr_M = dia->EnableCMYK_M->isChecked();
-			prefsManager->appPrefs.PrPr_Y = dia->EnableCMYK_Y->isChecked();
-			prefsManager->appPrefs.PrPr_K = dia->EnableCMYK_K->isChecked();
+			prefsManager->appPrefs.PrPr_C = dia.EnableCMYK_C->isChecked();
+			prefsManager->appPrefs.PrPr_M = dia.EnableCMYK_M->isChecked();
+			prefsManager->appPrefs.PrPr_Y = dia.EnableCMYK_Y->isChecked();
+			prefsManager->appPrefs.PrPr_K = dia.EnableCMYK_K->isChecked();
 		}
 		else
 		{
-			prefsManager->appPrefs.PrPr_C = dia->flagsVisible["Cyan"]->isChecked();
-			prefsManager->appPrefs.PrPr_M = dia->flagsVisible["Magenta"]->isChecked();
-			prefsManager->appPrefs.PrPr_Y = dia->flagsVisible["Yellow"]->isChecked();
-			prefsManager->appPrefs.PrPr_K = dia->flagsVisible["Black"]->isChecked();
+			prefsManager->appPrefs.PrPr_C = dia.flagsVisible["Cyan"]->isChecked();
+			prefsManager->appPrefs.PrPr_M = dia.flagsVisible["Magenta"]->isChecked();
+			prefsManager->appPrefs.PrPr_Y = dia.flagsVisible["Yellow"]->isChecked();
+			prefsManager->appPrefs.PrPr_K = dia.flagsVisible["Black"]->isChecked();
 		}
-		prefsManager->appPrefs.Gcr_Mode = dia->EnableGCR->isChecked();
-		disconnect(dia, SIGNAL(doPrint()), this, SLOT(slotReallyPrint()));
+		prefsManager->appPrefs.Gcr_Mode = dia.EnableGCR->isChecked();
+		disconnect(&dia, SIGNAL(doPrint()), this, SLOT(slotReallyPrint()));
 		previewDinUse = false;
-		delete dia;
 		QFile::remove(PrefsPfad+"/tmp.ps");
 		QFile::remove(PrefsPfad+"/sc.png");
 		QDir d(PrefsPfad+"/", "sc.tif*", QDir::Name, QDir::Files | QDir::NoSymLinks);
@@ -6915,16 +6871,12 @@ bool ScribusMainWindow::DoSaveAsEps(QStr
 	doc->getUsedColors(usedColors);
 	fileWatcher->forceScan();
 	fileWatcher->stop();
-	PSLib *dd = new PSLib(false, prefsManager->appPrefs.AvailFonts, ReallyUsed, usedColors, false, true);
-	if (dd != NULL)
-	{
-		if (dd->PS_set_file(fn))
-			dd->CreatePS(doc, /*view, */pageNs, false, tr("All"), spots, true, false, false, true, prefsManager->appPrefs.GCRMode, false);
-		else
-			return_value = false;
-		delete dd;
-		qApp->setOverrideCursor(QCursor(arrowCursor), true);
-	}
+	PSLib dd(false, prefsManager->appPrefs.AvailFonts, ReallyUsed, usedColors, false, true);
+	if (dd.PS_set_file(fn))
+		dd.CreatePS(doc, /*view, */pageNs, false, tr("All"), spots, true, false, false, true, prefsManager->appPrefs.GCRMode, false);
+	else
+		return_value = false;
+	qApp->setOverrideCursor(QCursor(arrowCursor), true);
 	fileWatcher->start();
 	return return_value;
 }
@@ -7003,12 +6955,11 @@ void ScribusMainWindow::reallySaveAsEps(
 bool ScribusMainWindow::getPDFDriver(QString fn, QString nam, int Components, std::vector<int> &pageNs, QMap<int,QPixmap> thumbs)
 {
 	bool ret = false;
-	PDFlib *dia = new PDFlib(doc);
+	PDFlib dia(doc);
 	fileWatcher->forceScan();
 	fileWatcher->stop();
-	ret = dia->doExport(fn, nam, Components, pageNs, thumbs);
+	ret = dia.doExport(fn, nam, Components, pageNs, thumbs);
 	fileWatcher->start();
-	delete dia;
 	return ret;
 }
 
@@ -7080,18 +7031,18 @@ void ScribusMainWindow::doSaveAsPDF()
 		}
 		doc->PDF_Options.SubsetList = tmpEm;
 	}
-	PDF_Opts *dia = new PDF_Opts(this, doc->DocName, ReallyUsed, view, &doc->PDF_Options, doc->PDF_Options.PresentVals, &PDFXProfiles, prefsManager->appPrefs.AvailFonts, doc->unitRatio(), &ScMW->PrinterProfiles);
-	if (dia->exec())
+	PDF_Opts dia(this, doc->DocName, ReallyUsed, view, &doc->PDF_Options, doc->PDF_Options.PresentVals, &PDFXProfiles, prefsManager->appPrefs.AvailFonts, doc->unitRatio(), &ScMW->PrinterProfiles);
+	if (dia.exec())
 	{
 		qApp->setOverrideCursor(QCursor(waitCursor), true);
-		dia->updateDocOptions();
+		dia.updateDocOptions();
 		ReOrderText(doc, view);
-		QString pageString(dia->getPagesString());
+		QString pageString(dia.getPagesString());
 		std::vector<int> pageNs;
 		uint pageNumbersSize;
 		QMap<int,QPixmap> thumbs;
-		int components=dia->colorSpaceComponents();
-		QString nam(dia->cmsDescriptor());
+		int components=dia.colorSpaceComponents();
+		QString nam(dia.cmsDescriptor());
 		QString fileName = doc->PDF_Options.Datei;
 		parsePagesString(pageString, &pageNs, doc->DocPages.count());
 		if (doc->PDF_Options.doMultiFile)
@@ -7119,7 +7070,6 @@ void ScribusMainWindow::doSaveAsPDF()
 				{
 					qApp->setOverrideCursor(QCursor(arrowCursor), true);
 					QMessageBox::warning(this, CommonStrings::trWarning, tr("Cannot write the file: \n%1").arg(doc->PDF_Options.Datei), CommonStrings::tr_OK);
-					delete dia;
 					return;
 				}
 				aa++;
@@ -7143,7 +7093,6 @@ void ScribusMainWindow::doSaveAsPDF()
 		}
 		qApp->setOverrideCursor(QCursor(arrowCursor), true);
 	}
-	delete dia;
 }
 
 void ScribusMainWindow::AddBookMark(PageItem *ite)
@@ -7181,6 +7130,7 @@ void ScribusMainWindow::RestoreBookMarks
 	BookMItem* ip;
 	BookMItem* ip2 = NULL;
 	BookMItem* ip3 = NULL;
+	// TODO: LEAK? How do these get cleaned up?
 	BookMItem *ite = new BookMItem(bookmarkPalette->BView, &(*it2));
 	bookmarkPalette->BView->NrItems++;
 	++it2;
@@ -7259,8 +7209,8 @@ void ScribusMainWindow::slotElemRead(QSt
 {
 	if (doc == docc)
 		NoFrameEdit();
-	ScriXmlDoc *ss = new ScriXmlDoc();
-	if(ss->ReadElem(Name, prefsManager->appPrefs.AvailFonts, docc, x, y, art, loca, prefsManager->appPrefs.GFontSub, vie))
+	ScriXmlDoc ss;
+	if(ss.ReadElem(Name, prefsManager->appPrefs.AvailFonts, docc, x, y, art, loca, prefsManager->appPrefs.GFontSub, vie))
 	{
 		vie->DrawNew();
 		if (doc == docc)
@@ -7276,7 +7226,6 @@ void ScribusMainWindow::slotElemRead(QSt
 			slotDocCh();
 		}
 	}
-	delete ss;
 }
 
 void ScribusMainWindow::slotChangeUnit(int unitIndex, bool draw)
@@ -7291,11 +7240,10 @@ void ScribusMainWindow::slotChangeUnit(i
 
 void ScribusMainWindow::ManageJava()
 {
-	JavaDocs *dia = new JavaDocs(this, doc, view);
-	connect(dia, SIGNAL(docChanged(bool)), this, SLOT(slotDocCh(bool )));
-	dia->exec();
-	disconnect(dia, SIGNAL(docChanged(bool)), this, SLOT(slotDocCh(bool )));
-	delete dia;
+	JavaDocs dia(this, doc, view);
+	connect(&dia, SIGNAL(docChanged(bool)), this, SLOT(slotDocCh(bool )));
+	dia.exec();
+	disconnect(&dia, SIGNAL(docChanged(bool)), this, SLOT(slotDocCh(bool )));
 }
 
 void ScribusMainWindow::manageMasterPages(QString temp)
@@ -7310,7 +7258,7 @@ void ScribusMainWindow::manageMasterPage
 		}
 		else
 		{
-			MasterPagesPalette *dia = new MasterPagesPalette(this, doc, view, temp);
+			MasterPagesPalette *dia = new MasterPagesPalette(this, doc, view, temp); // FIXME: LEAK? Where's this deleted?
 			//connect(dia, SIGNAL(createNew(int)), this, SLOT(slotNewMasterPage(int)));
 			connect(dia, SIGNAL(removePage(int )), this, SLOT(DeletePage2(int )));
 			connect(dia, SIGNAL(loadPage(QString, int, bool)), this, SLOT(loadPage(QString, int, bool)));
@@ -7387,21 +7335,21 @@ void ScribusMainWindow::manageMasterPage
 void ScribusMainWindow::ApplyMasterPage()
 {
 	Q_ASSERT(!doc->masterPageMode());
-	ApplyMasterPageDialog *dia = new ApplyMasterPageDialog(this);
-	dia->setup(doc, doc->currentPage->MPageNam);
-	if (dia->exec())
+	ApplyMasterPageDialog dia(this);
+	dia.setup(doc, doc->currentPage->MPageNam);
+	if (dia.exec())
 	{
-		QString masterPageName = dia->getMasterPageName();
-		int pageSelection = dia->getPageSelection(); //0=current, 1=even, 2=odd, 3=all
+		QString masterPageName = dia.getMasterPageName();
+		int pageSelection = dia.getPageSelection(); //0=current, 1=even, 2=odd, 3=all
 		if (pageSelection==0) //current page only
 			Apply_MasterPage(masterPageName, doc->currentPage->pageNr(), false);
 		else
 		{
 			int startPage, endPage;
-			if (dia->usingRange())
+			if (dia.usingRange())
 			{
-				startPage=dia->getFromPage()-1; //Pages start from 0, not 1
-				endPage=dia->getToPage();
+				startPage=dia.getFromPage()-1; //Pages start from 0, not 1
+				endPage=dia.getToPage();
 			}
 			else
 			{
@@ -7426,7 +7374,6 @@ void ScribusMainWindow::ApplyMasterPage(
 	view->DrawNew();
 	slotDocCh();
 	pagePalette->Rebuild();
-	delete dia;
 }
 
 void ScribusMainWindow::Apply_MasterPage(QString in, int Snr, bool reb)
@@ -7682,11 +7629,10 @@ void ScribusMainWindow::StatusPic()
 {
 	if (HaveDoc)
 	{
-		PicStatus *dia = new PicStatus(this, doc, view);
-		connect(dia, SIGNAL(selectPage(int)), this, SLOT(selectPagesFromOutlines(int)));
-		connect(dia, SIGNAL(selectMasterPage(QString)), this, SLOT(manageMasterPages(QString)));
-		dia->exec();
-		delete dia;
+		PicStatus dia(this, doc, view);
+		connect(&dia, SIGNAL(selectPage(int)), this, SLOT(selectPagesFromOutlines(int)));
+		connect(&dia, SIGNAL(selectMasterPage(QString)), this, SLOT(manageMasterPages(QString)));
+		dia.exec();
 	}
 }
 
@@ -7695,34 +7641,33 @@ QString ScribusMainWindow::CFileDialog(Q
                                 bool *docom, bool *doFont)
 {
 	QString retval = "";
-	CustomFDialog *dia = new CustomFDialog(this, wDir, caption, filter, Pre, mod, comp, cod, onlyDirs);
+	CustomFDialog dia(this, wDir, caption, filter, Pre, mod, comp, cod, onlyDirs);
 	if (!defNa.isEmpty())
 	{
 		QFileInfo f(defNa);
-		dia->setExtension(f.extension(true));
-		dia->setZipExtension(f.extension(true) + ".gz");
-		dia->setSelection(defNa);
+		dia.setExtension(f.extension(true));
+		dia.setZipExtension(f.extension(true) + ".gz");
+		dia.setSelection(defNa);
 	}
 	if (onlyDirs)
 	{
-		dia->SaveZip->setChecked(*docom);
-		dia->WFonts->setChecked(*doFont);
+		dia.SaveZip->setChecked(*docom);
+		dia.WFonts->setChecked(*doFont);
 	}
-	if (dia->exec() == QDialog::Accepted)
+	if (dia.exec() == QDialog::Accepted)
 	{
 		LoadEnc = "";
 		if (!onlyDirs)
-			LoadEnc = cod ? dia->TxCodeM->currentText() : QString("");
+			LoadEnc = cod ? dia.TxCodeM->currentText() : QString("");
 		else
 		{
-			*docom = dia->SaveZip->isChecked();
-			*doFont = dia->WFonts->isChecked();
+			*docom = dia.SaveZip->isChecked();
+			*doFont = dia.WFonts->isChecked();
 		}
 		this->repaint();
 		qApp->eventLoop()->processEvents(QEventLoop::ExcludeUserInput);
-		retval = dia->selectedFile();
+		retval = dia.selectedFile();
 	}
-	delete dia;
 	return retval;
 }
 
@@ -7890,8 +7835,8 @@ void ScribusMainWindow::ModifyAnnot()
 			int AnActType = currItem->annotation().ActionType();
 			QString AnAction = currItem->annotation().Action();
 			QString An_Extern = currItem->annotation().Extern();
-			Annota *dia = new Annota(this, currItem, doc->DocPages.count(), static_cast<int>(doc->pageWidth), static_cast<int>(doc->pageHeight), view);
-			if (dia->exec())
+			Annota dia(this, currItem, doc->DocPages.count(), static_cast<int>(doc->pageWidth), static_cast<int>(doc->pageHeight), view);
+			if (dia.exec())
 				slotDocCh();
 			else
 			{
@@ -7900,14 +7845,12 @@ void ScribusMainWindow::ModifyAnnot()
 				currItem->annotation().setAction(AnAction);
 				currItem->annotation().setExtern(An_Extern);
 			}
-			delete dia;
 		}
 		else
 		{
-			Annot *dia = new Annot(this, currItem, doc->DocPages.count(), static_cast<int>(doc->pageWidth), static_cast<int>(doc->pageHeight), doc->PageColors, view);
-			if (dia->exec())
+			Annot dia(this, currItem, doc->DocPages.count(), static_cast<int>(doc->pageWidth), static_cast<int>(doc->pageHeight), doc->PageColors, view);
+			if (dia.exec())
 				slotDocCh();
-			delete dia;
 		}
 	}
 }
@@ -7924,10 +7867,9 @@ void ScribusMainWindow::SetShortCut()
 
 void ScribusMainWindow::PutScrap()
 {
-	ScriXmlDoc *ss = new ScriXmlDoc();
-	QString objectString = ss->WriteElem(doc, view, doc->selection);
+	ScriXmlDoc ss;
+	QString objectString = ss.WriteElem(doc, view, doc->selection);
 	scrapbookPalette->ObjFromMenu(objectString);
-	delete ss;
 }
 
 void ScribusMainWindow::changeLayer(int )
@@ -8026,18 +7968,17 @@ void ScribusMainWindow::initHyphenator()
 			QString ext = fi.extension(false).lower();
 			if (ext == "qm")
 			{
-    			QTranslator *trans = new QTranslator(0);
-				trans->load(pfad + d2[dc]);
+    			QTranslator trans(0);
+				trans.load(pfad + d2[dc]);
 
 				QString translatedLang;
 				for (QMap<QString, QStringList>::Iterator it=InstLang.begin(); it!=InstLang.end(); ++it)
 				{
 					translatedLang="";
-					translatedLang = trans->findMessage("ScribusMainWindow", it.key(), "").translation();
+					translatedLang = trans.findMessage("ScribusMainWindow", it.key(), "").translation();
 					if (!translatedLang.isEmpty())
 						it.data().append(translatedLang);
 				}
-				delete trans;
 			}
 		}
 	}
@@ -8125,9 +8066,7 @@ void ScribusMainWindow::ManageGuides()
 {
 	if (HaveDoc)
 	{
-		GuideManager *dia = new GuideManager(this);
-		dia->exec();
-		delete dia;
+		GuideManager(this).exec();
 	}
 }
 
@@ -8175,13 +8114,12 @@ void ScribusMainWindow::ImageEffects()
 		if (docSelectionCount != 0)
 		{
 			PageItem *currItem = doc->selection->itemAt(0);
-			EffectsDialog* dia = new EffectsDialog(this, currItem, doc);
-			if (dia->exec())
+			EffectsDialog dia(this, currItem, doc);
+			if (dia.exec())
 			{
-				currItem->effectsInUse = dia->effectsList;
+				currItem->effectsInUse = dia.effectsList;
 				view->UpdatePic();
 			}
-			delete dia;
 			slotDocCh();
 		}
 	}
@@ -8189,12 +8127,7 @@ void ScribusMainWindow::ImageEffects()
 
 QString ScribusMainWindow::Collect(bool compress, bool withFonts, const QString& )
 {
-	CollectForOutput *c = new CollectForOutput(withFonts, compress);
-	Q_CHECK_PTR(c);
-	QString ret = c->collect();
-	delete c;
-	c=NULL;
-	return ret;
+	return CollectForOutput(withFonts, compress).collect();
 }
 
 void ScribusMainWindow::ReorgFonts()
@@ -8293,15 +8226,14 @@ void ScribusMainWindow::emergencySave()
 				std::cout << "Saving: " << doc->DocName+".emergency" << std::endl;
 				doc->autoSaveTimer->stop();
 				//disconnect(ActWin, SIGNAL(Schliessen()), ScMW, SLOT(DoFileClose()));
-				ScriXmlDoc *ss = new ScriXmlDoc();
-				ss->WriteDoc(doc->DocName+".emergency", doc, 0);
-				delete ss;
+				ScriXmlDoc().WriteDoc(doc->DocName+".emergency", doc, 0);
 			}
 			view->close();
 			uint numPages=doc->Pages->count();
 			for (uint a=0; a<numPages; ++a)
 				delete doc->Pages->at(a);
 			delete doc;
+			doc = 0;
 			ActWin->close();
 		}
 	}
@@ -8314,14 +8246,13 @@ void ScribusMainWindow::EditTabs()
 		if (doc->selection->count() != 0)
 		{
 			PageItem *currItem = doc->selection->itemAt(0);
-			TabManager *dia = new TabManager(this, doc->unitIndex(), currItem->TabValues, currItem->width());
-			if (dia->exec())
+			TabManager dia(this, doc->unitIndex(), currItem->TabValues, currItem->width());
+			if (dia.exec())
 			{
-				currItem->TabValues = dia->tmpTab;
+				currItem->TabValues = dia.tmpTab;
 				view->RefreshItem(currItem);
 				slotDocCh();
 			}
-			delete dia;
 		}
 	}
 }
@@ -8331,13 +8262,12 @@ void ScribusMainWindow::SearchText()
 	PageItem *currItem = doc->selection->itemAt(0);
 	setAppMode(modeEdit);
 	currItem->CPos = 0;
-	SearchReplace* dia = new SearchReplace(this, doc, currItem);
-	connect(dia, SIGNAL(NewFont(const QString&)), this, SLOT(SetNewFont(const QString&)));
-	connect(dia, SIGNAL(NewAbs(int)), this, SLOT(setAbsValue(int)));
-	dia->exec();
-	disconnect(dia, SIGNAL(NewFont(const QString&)), this, SLOT(SetNewFont(const QString&)));
-	disconnect(dia, SIGNAL(NewAbs(int)), this, SLOT(setAbsValue(int)));
-	delete dia;
+	SearchReplace dia(this, doc, currItem);
+	connect(&dia, SIGNAL(NewFont(const QString&)), this, SLOT(SetNewFont(const QString&)));
+	connect(&dia, SIGNAL(NewAbs(int)), this, SLOT(setAbsValue(int)));
+	dia.exec();
+	disconnect(&dia, SIGNAL(NewFont(const QString&)), this, SLOT(SetNewFont(const QString&)));
+	disconnect(&dia, SIGNAL(NewAbs(int)), this, SLOT(setAbsValue(int)));
 	slotSelect();
 }
 
@@ -8389,9 +8319,7 @@ void ScribusMainWindow::slotCharSelect()
 		PageItem *currItem = doc->selection->itemAt(0);
 		if ((currItem->asTextFrame()) && (doc->appMode == modeEdit))
 		{
-			CharSelect *dia = new CharSelect(this, currItem);
-			dia->exec();
-			delete dia;
+			CharSelect(this, currItem).exec();
 		}
 	}
 }
@@ -8436,9 +8364,7 @@ void ScribusMainWindow::getImageInfo()
 		{
 			if (pageItem->itemType() == PageItem::ImageFrame)
 			{
-				ImageInfoDialog *dia = new ImageInfoDialog(this, &pageItem->pixm.imgInfo);
-				dia->exec();
-				delete dia;
+				ImageInfoDialog(this, &pageItem->pixm.imgInfo).exec();
 			}
 		}
 	}
@@ -8451,12 +8377,11 @@ void ScribusMainWindow::objectAttributes
 		PageItem *pageItem = doc->selection->itemAt(0);
 		if (pageItem!=NULL)
 		{
-			PageItemAttributes *pageItemAttrs = new PageItemAttributes( this );
-			pageItemAttrs->setup(pageItem->getObjectAttributes(), &doc->docItemAttributes);
+			PageItemAttributes pageItemAttrs( this );
+			pageItemAttrs.setup(pageItem->getObjectAttributes(), &doc->docItemAttributes);
 			//CB TODO Probably want this non modal in the future
-			if (pageItemAttrs->exec()==QDialog::Accepted)
-				pageItem->setObjectAttributes(pageItemAttrs->getNewAttributes());
-			delete pageItemAttrs;
+			if (pageItemAttrs.exec()==QDialog::Accepted)
+				pageItem->setObjectAttributes(pageItemAttrs.getNewAttributes());
 		}
 	}
 }
@@ -8548,13 +8473,11 @@ void ScribusMainWindow::mouseReleaseEven
 
 void ScribusMainWindow::insertSampleText()
 {
-	LoremManager *m = new LoremManager(this, "m", true, 0);
+	LoremManager m(this, "m", true, 0);
 	if (prefsManager->appPrefs.useStandardLI)
-		m->insertLoremIpsum("loremipsum.xml", prefsManager->appPrefs.paragraphsLI);
+		m.insertLoremIpsum("loremipsum.xml", prefsManager->appPrefs.paragraphsLI);
 	else
-		m->exec();
-	delete(m);
-	m=NULL;
+		m.exec();
 }
 
 void ScribusMainWindow::languageChange()
Index: scribus.h
===================================================================
RCS file: /cvs/Scribus/scribus/scribus.h,v
retrieving revision 1.60.2.170
diff -p -u -r1.60.2.170 scribus.h
--- scribus.h	2 Jan 2006 17:15:26 -0000	1.60.2.170
+++ scribus.h	2 Jan 2006 20:40:48 -0000
@@ -442,9 +442,9 @@ public slots:
 	void buildFontMenu();
 	void slotPrefsOrg();
 	void slotEditStyles();
-	void saveStyles(StilFormate *dia);
+	void saveStyles(StilFormate & dia);
 	void slotEditLineStyles();
-	void saveLStyles(LineFormate *dia);
+	void saveLStyles(LineFormate & dia);
 	void setNewAbStyle(int a);
 	void setAbsValue(int a);
 	void selectItemsFromOutlines(int Page, int Item, bool single = false);
Index: scribusview.cpp
===================================================================
RCS file: /cvs/Scribus/scribus/scribusview.cpp,v
retrieving revision 1.76.2.425
diff -p -u -r1.76.2.425 scribusview.cpp
--- scribusview.cpp	31 Dec 2005 11:30:40 -0000	1.76.2.425
+++ scribusview.cpp	2 Jan 2006 20:40:51 -0000
@@ -250,14 +250,14 @@ void ScribusView::drawContents(QPainter 
 	if ((clipw > 0) && (cliph > 0))
 	{
 		QPoint vr = contentsToViewport(QPoint(clipx, clipy));
-		ScPainter *painter = new ScPainter(viewport(), clipw, cliph, vr.x(), vr.y());
-		painter->clear(paletteBackgroundColor());
-		painter->translate(-Doc->minCanvasCoordinate.x()*Scale, -Doc->minCanvasCoordinate.y()*Scale);
-		painter->translate(-clipx, -clipy);
-		painter->setLineWidth(1);
-		painter->setFillMode(ScPainter::Solid);
-//		painter->translate(0.5, 0.5);
-		painter->setZoomFactor(1.0);
+		ScPainter painter(viewport(), clipw, cliph, vr.x(), vr.y());
+		painter.clear(paletteBackgroundColor());
+		painter.translate(-Doc->minCanvasCoordinate.x()*Scale, -Doc->minCanvasCoordinate.y()*Scale);
+		painter.translate(-clipx, -clipy);
+		painter.setLineWidth(1);
+		painter.setFillMode(ScPainter::Solid);
+//		painter.translate(0.5, 0.5);
+		painter.setZoomFactor(1.0);
 /* Draw Page Outlines */
 		if (!Doc->masterPageMode())
 		{
@@ -272,16 +272,16 @@ void ScribusView::drawContents(QPainter 
 				drawRect.moveBy(qRound(-Doc->minCanvasCoordinate.x() * Scale), qRound(-Doc->minCanvasCoordinate.y() * Scale));
 				if (drawRect.intersects(QRect(clipx, clipy, clipw, cliph)))
 				{
-					painter->setFillMode(ScPainter::Solid);
-					painter->setPen(black, 1, SolidLine, FlatCap, MiterJoin);
-					painter->setBrush(QColor(128,128,128));
-					painter->drawRect(x+5, y+5, w, h);
+					painter.setFillMode(ScPainter::Solid);
+					painter.setPen(black, 1, SolidLine, FlatCap, MiterJoin);
+					painter.setBrush(QColor(128,128,128));
+					painter.drawRect(x+5, y+5, w, h);
 					if (a == Doc->currentPageNumber())
-						painter->setPen(red, 2, SolidLine, FlatCap, MiterJoin);
+						painter.setPen(red, 2, SolidLine, FlatCap, MiterJoin);
 					else
-						painter->setPen(black, 1, SolidLine, FlatCap, MiterJoin);
-					painter->setBrush(Doc->papColor);
-					painter->drawRect(x, y, w, h);
+						painter.setPen(black, 1, SolidLine, FlatCap, MiterJoin);
+					painter.setBrush(Doc->papColor);
+					painter.drawRect(x, y, w, h);
 					if (Doc->guidesSettings.before)
 						DrawPageMarks(painter, Doc->Pages->at(a), QRect(clipx, clipy, clipw, cliph));
 				}
@@ -313,12 +313,12 @@ void ScribusView::drawContents(QPainter 
 			drawRect.moveBy(qRound(-Doc->minCanvasCoordinate.x() * Scale), qRound(-Doc->minCanvasCoordinate.y() * Scale));
 			if (drawRect.intersects(QRect(clipx, clipy, clipw, cliph)))
 			{
-				painter->setFillMode(ScPainter::Solid);
-				painter->setPen(black, 1, SolidLine, FlatCap, MiterJoin);
-				painter->setBrush(QColor(128,128,128));
-				painter->drawRect(x+5, y+5, w, h);
-				painter->setBrush(Doc->papColor);
-				painter->drawRect(x, y, w, h);
+				painter.setFillMode(ScPainter::Solid);
+				painter.setPen(black, 1, SolidLine, FlatCap, MiterJoin);
+				painter.setBrush(QColor(128,128,128));
+				painter.drawRect(x+5, y+5, w, h);
+				painter.setBrush(Doc->papColor);
+				painter.drawRect(x, y, w, h);
 				if (Doc->guidesSettings.before)
 					DrawPageMarks(painter, Doc->currentPage, QRect(clipx, clipy, clipw, cliph));
 			}
@@ -328,9 +328,9 @@ void ScribusView::drawContents(QPainter 
 		}
 		if ((Doc->selection->count() != 0) || (linkedFramesToShow.count() != 0))
 		{
-			double z = painter->zoomFactor();
-			painter->setZoomFactor(Scale);
-			painter->save();
+			double z = painter.zoomFactor();
+			painter.setZoomFactor(Scale);
+			painter.save();
 			PageItem *currItem;
 			if ((Doc->guidesSettings.linkShown) && (linkedFramesToShow.count() != 0))
 				currItem = linkedFramesToShow.at(0);
@@ -448,14 +448,12 @@ void ScribusView::drawContents(QPainter 
 					}
 				}
 			}
-			painter->setLineWidth(1);
-			painter->setPenOpacity(1.0);
-			painter->restore();
-			painter->setZoomFactor(z);
+			painter.setLineWidth(1);
+			painter.setPenOpacity(1.0);
+			painter.restore();
+			painter.setZoomFactor(z);
 		}
-		painter->end();
-		delete painter;
-		painter=NULL;
+		painter.end();
 	}
 	if (Doc->selection->count() != 0)
 	{
@@ -496,9 +494,9 @@ void ScribusView::drawContents(QPainter 
 //	qDebug( "Time elapsed: %d ms", tim.elapsed() );
 }
 
-void ScribusView::DrawMasterItems(ScPainter *painter, Page *page, QRect clip)
+void ScribusView::DrawMasterItems(ScPainter & painter, Page *page, QRect clip)
 {
-	double z = painter->zoomFactor();
+	double z = painter.zoomFactor();
 	if (!page->MPageNam.isEmpty())
 	{
 		Page* Mp = Doc->MasterPages.at(Doc->MasterNames[page->MPageNam]);
@@ -546,7 +544,7 @@ void ScribusView::DrawMasterItems(ScPain
 							currItem->Dirty = true;
 						QRect oldR(currItem->getRedrawBounding(Scale));
 						if (clip.intersects(oldR))
-							currItem->DrawObj(painter, clip);
+							currItem->DrawObj(&painter, clip);
 						currItem->OwnPage = savedOwnPage;
 						if (!currItem->ChangedMasterItem)
 						{
@@ -577,28 +575,28 @@ void ScribusView::DrawMasterItems(ScPain
 						QRect oldR(currItem->getRedrawBounding(Scale));
 						if (clip.intersects(oldR))
 						{
-							painter->setZoomFactor(Scale);
-							painter->save();
-							painter->translate(currItem->xPos()*Scale, currItem->yPos()*Scale);
-							painter->rotate(currItem->rotation());
+							painter.setZoomFactor(Scale);
+							painter.save();
+							painter.translate(currItem->xPos()*Scale, currItem->yPos()*Scale);
+							painter.rotate(currItem->rotation());
 							if (currItem->lineColor() != "None")
 							{
 								QColor tmp;
 								currItem->SetFarbe(&tmp, currItem->lineColor(), currItem->lineShade());
 								if ((currItem->TopLine) || (currItem->RightLine) || (currItem->BottomLine) || (currItem->LeftLine))
 								{
-									painter->setPen(tmp, currItem->Pwidth, currItem->PLineArt, Qt::SquareCap, currItem->PLineJoin);
+									painter.setPen(tmp, currItem->Pwidth, currItem->PLineArt, Qt::SquareCap, currItem->PLineJoin);
 									if (currItem->TopLine)
-										painter->drawLine(FPoint(0.0, 0.0), FPoint(currItem->width(), 0.0));
+										painter.drawLine(FPoint(0.0, 0.0), FPoint(currItem->width(), 0.0));
 									if (currItem->RightLine)
-										painter->drawLine(FPoint(currItem->width(), 0.0), FPoint(currItem->width(), currItem->height()));
+										painter.drawLine(FPoint(currItem->width(), 0.0), FPoint(currItem->width(), currItem->height()));
 									if (currItem->BottomLine)
-										painter->drawLine(FPoint(currItem->width(), currItem->height()), FPoint(0.0, currItem->height()));
+										painter.drawLine(FPoint(currItem->width(), currItem->height()), FPoint(0.0, currItem->height()));
 									if (currItem->LeftLine)
-										painter->drawLine(FPoint(0.0, currItem->height()), FPoint(0.0, 0.0));
+										painter.drawLine(FPoint(0.0, currItem->height()), FPoint(0.0, 0.0));
 								}
 							}
-							painter->restore();
+							painter.restore();
 						}
 						if (!currItem->ChangedMasterItem)
 						{
@@ -612,13 +610,13 @@ void ScribusView::DrawMasterItems(ScPain
 			}
 		}
 	}
-	painter->setZoomFactor(z);
+	painter.setZoomFactor(z);
 }
 
-void ScribusView::DrawPageItems(ScPainter *painter, QRect clip)
+void ScribusView::DrawPageItems(ScPainter & painter, QRect clip)
 {
 	linkedFramesToShow.clear();
-	double z = painter->zoomFactor();
+	double z = painter.zoomFactor();
 	if (Doc->Items->count() != 0)
 	{
 		QPainter p;
@@ -660,7 +658,7 @@ void ScribusView::DrawPageItems(ScPainte
 						if (forceRedraw)
 							currItem->Dirty = false;
 //						if ((!Mpressed) || (Doc->EditClip))
-							currItem->DrawObj(painter, clip);
+							currItem->DrawObj(&painter, clip);
 						currItem->Redrawn = true;
 						if ((currItem->asTextFrame()) && ((currItem->NextBox != 0) || (currItem->BackBox != 0)))
 						{
@@ -716,71 +714,71 @@ void ScribusView::DrawPageItems(ScPainte
 					QRect oldR(currItem->getRedrawBounding(Scale));
 					if (clip.intersects(oldR))
 					{
-						painter->setZoomFactor(Scale);
-						painter->save();
-						painter->translate(currItem->xPos()*Scale, currItem->yPos()*Scale);
-						painter->rotate(currItem->rotation());
+						painter.setZoomFactor(Scale);
+						painter.save();
+						painter.translate(currItem->xPos()*Scale, currItem->yPos()*Scale);
+						painter.rotate(currItem->rotation());
 						if (currItem->lineColor() != "None")
 						{
 							QColor tmp;
 							currItem->SetFarbe(&tmp, currItem->lineColor(), currItem->lineShade());
 							if ((currItem->TopLine) || (currItem->RightLine) || (currItem->BottomLine) || (currItem->LeftLine))
 							{
-								painter->setPen(tmp, currItem->Pwidth, currItem->PLineArt, Qt::SquareCap, currItem->PLineJoin);
+								painter.setPen(tmp, currItem->Pwidth, currItem->PLineArt, Qt::SquareCap, currItem->PLineJoin);
 								if (currItem->TopLine)
-									painter->drawLine(FPoint(0.0, 0.0), FPoint(currItem->width(), 0.0));
+									painter.drawLine(FPoint(0.0, 0.0), FPoint(currItem->width(), 0.0));
 								if (currItem->RightLine)
-									painter->drawLine(FPoint(currItem->width(), 0.0), FPoint(currItem->width(), currItem->height()));
+									painter.drawLine(FPoint(currItem->width(), 0.0), FPoint(currItem->width(), currItem->height()));
 								if (currItem->BottomLine)
-									painter->drawLine(FPoint(currItem->width(), currItem->height()), FPoint(0.0, currItem->height()));
+									painter.drawLine(FPoint(currItem->width(), currItem->height()), FPoint(0.0, currItem->height()));
 								if (currItem->LeftLine)
-									painter->drawLine(FPoint(0.0, currItem->height()), FPoint(0.0, 0.0));
+									painter.drawLine(FPoint(0.0, currItem->height()), FPoint(0.0, 0.0));
 							}
 						}
-						painter->restore();
+						painter.restore();
 					}
 				}
 			}
 			Lnr++;
 		}
 	}
-	painter->setZoomFactor(z);
+	painter.setZoomFactor(z);
 }
 
-void ScribusView::DrawPageMarks(ScPainter *p, Page *page, QRect)
+void ScribusView::DrawPageMarks(ScPainter & painter, Page *page, QRect)
 {
 	double lw = 0.5 / Scale;
-	double z = p->zoomFactor();
-	p->save();
-	p->setZoomFactor(Scale);
-	p->translate(page->xOffset() * Scale, page->yOffset() * Scale);
-	p->setLineWidth(lw);
+	double z = painter.zoomFactor();
+	painter.save();
+	painter.setZoomFactor(Scale);
+	painter.translate(page->xOffset() * Scale, page->yOffset() * Scale);
+	painter.setLineWidth(lw);
 	double pageHeight=page->height();
 	double pageWidth=page->width();
 	//Draw the margins
 	if (Doc->guidesSettings.marginsShown)
 	{
-		p->setPen(Doc->guidesSettings.margColor);
+		painter.setPen(Doc->guidesSettings.margColor);
 		if (Doc->marginColored)
 		{
-			p->setBrush(Doc->guidesSettings.margColor);
-			p->drawRect(0, 0, pageWidth, page->Margins.Top);
-			p->drawRect(0, page->Margins.Top, page->Margins.Left, pageHeight - page->Margins.Top);
-			p->drawRect(page->Margins.Left, pageHeight - page->Margins.Bottom, pageWidth - page->Margins.Right - page->Margins.Left, page->Margins.Bottom);
-			p->drawRect(pageWidth - page->Margins.Right, page->Margins.Top, page->Margins.Right, pageHeight-page->Margins.Top);
-		}
-		p->setPen(Doc->guidesSettings.margColor);
-		p->drawLine(FPoint(0, page->Margins.Top), FPoint(pageWidth, page->Margins.Top));
-		p->drawLine(FPoint(0, pageHeight - page->Margins.Bottom), FPoint(pageWidth, pageHeight - page->Margins.Bottom));
-		p->drawLine(FPoint(page->Margins.Left, 0), FPoint(page->Margins.Left, pageHeight));
-		p->drawLine(FPoint(pageWidth - page->Margins.Right, 0), FPoint(pageWidth - page->Margins.Right, pageHeight));
+			painter.setBrush(Doc->guidesSettings.margColor);
+			painter.drawRect(0, 0, pageWidth, page->Margins.Top);
+			painter.drawRect(0, page->Margins.Top, page->Margins.Left, pageHeight - page->Margins.Top);
+			painter.drawRect(page->Margins.Left, pageHeight - page->Margins.Bottom, pageWidth - page->Margins.Right - page->Margins.Left, page->Margins.Bottom);
+			painter.drawRect(pageWidth - page->Margins.Right, page->Margins.Top, page->Margins.Right, pageHeight-page->Margins.Top);
+		}
+		painter.setPen(Doc->guidesSettings.margColor);
+		painter.drawLine(FPoint(0, page->Margins.Top), FPoint(pageWidth, page->Margins.Top));
+		painter.drawLine(FPoint(0, pageHeight - page->Margins.Bottom), FPoint(pageWidth, pageHeight - page->Margins.Bottom));
+		painter.drawLine(FPoint(page->Margins.Left, 0), FPoint(page->Margins.Left, pageHeight));
+		painter.drawLine(FPoint(pageWidth - page->Margins.Right, 0), FPoint(pageWidth - page->Margins.Right, pageHeight));
 	}
 	//Draw the baseline grid
 	if (Doc->guidesSettings.baseShown)
 	{
-		p->setPen(Doc->guidesSettings.baseColor, lw, SolidLine, FlatCap, MiterJoin);
+		painter.setPen(Doc->guidesSettings.baseColor, lw, SolidLine, FlatCap, MiterJoin);
 		for (double yg = Doc->typographicSettings.offsetBaseGrid; yg < pageHeight; yg += Doc->typographicSettings.valueBaseGrid)
-			p->drawLine(FPoint(0, yg), FPoint(pageWidth, yg));
+			painter.drawLine(FPoint(0, yg), FPoint(pageWidth, yg));
 	}
 	//Draw the grid lines
 	if (Doc->guidesSettings.gridShown)
@@ -797,37 +795,37 @@ void ScribusView::DrawPageMarks(ScPainte
 		{
 			double i,start;
 			i = Doc->guidesSettings.majorGrid;
-			p->setPen(Doc->guidesSettings.majorColor, lw, SolidLine, FlatCap, MiterJoin);
+			painter.setPen(Doc->guidesSettings.majorColor, lw, SolidLine, FlatCap, MiterJoin);
 			start=floor(sty/i);
 			start*=i;
 			for (double b = start; b < endy; b+=i)
-				p->drawLine(FPoint(0, b), FPoint(pageWidth, b));
+				painter.drawLine(FPoint(0, b), FPoint(pageWidth, b));
 			start=floor(stx/i);
 			start*=i;
 			for (double b = start; b <= endx; b+=i)
-				p->drawLine(FPoint(b, 0), FPoint(b, pageHeight));
+				painter.drawLine(FPoint(b, 0), FPoint(b, pageHeight));
 			i = Doc->guidesSettings.minorGrid;
-			p->setPen(Doc->guidesSettings.minorColor, lw, DotLine, FlatCap, MiterJoin);
+			painter.setPen(Doc->guidesSettings.minorColor, lw, DotLine, FlatCap, MiterJoin);
 			start=floor(sty/i);
 			start*=i;
 			for (double b = start; b < endy; b+=i)
-				p->drawLine(FPoint(0, b), FPoint(pageWidth, b));
+				painter.drawLine(FPoint(0, b), FPoint(pageWidth, b));
 			start=floor(stx/i);
 			start*=i;
 			for (double b = start; b <= endx; b+=i)
-				p->drawLine(FPoint(b, 0), FPoint(b, pageHeight));
+				painter.drawLine(FPoint(b, 0), FPoint(b, pageHeight));
 		}
 	}
 	//Draw the guides
 	if (Doc->guidesSettings.guidesShown)
 	{
-		p->setPen(Doc->guidesSettings.guideColor, lw, DotLine, FlatCap, MiterJoin);
+		painter.setPen(Doc->guidesSettings.guideColor, lw, DotLine, FlatCap, MiterJoin);
 		if (page->XGuides.count() != 0)
 		{
 			for (uint xg = 0; xg < page->XGuides.count(); ++xg)
 			{
 				if ((page->XGuides[xg] >= 0) && (page->XGuides[xg] <= page->width()))
-					p->drawLine(FPoint(page->XGuides[xg], 0), FPoint(page->XGuides[xg], pageHeight));
+					painter.drawLine(FPoint(page->XGuides[xg], 0), FPoint(page->XGuides[xg], pageHeight));
 			}
 		}
 		if (page->YGuides.count() != 0)
@@ -835,12 +833,12 @@ void ScribusView::DrawPageMarks(ScPainte
 			for (uint yg = 0; yg < page->YGuides.count(); ++yg)
 			{
 				if ((page->YGuides[yg] >= 0) && (page->YGuides[yg] <= pageHeight))
-					p->drawLine(FPoint(0, page->YGuides[yg]), FPoint(page->width(), page->YGuides[yg]));
+					painter.drawLine(FPoint(0, page->YGuides[yg]), FPoint(page->width(), page->YGuides[yg]));
 			}
 		}
 	}
-	p->restore();
-	p->setZoomFactor(z);
+	painter.restore();
+	painter.setZoomFactor(z);
 }
 
 void ScribusView::leaveEvent(QEvent *)
@@ -891,10 +889,9 @@ void ScribusView::contentsDragEnterEvent
 //		SeleItemPos(e->pos());
 		QUrl ur(text);
 		QFileInfo fi = QFileInfo(ur.path());
-		ScriXmlDoc *ss = new ScriXmlDoc();
 		if (fi.exists())
 			text = ur.path();
-		if(ss->ReadElemHeader(text,fi.exists(), &gx, &gy, &gw, &gh))
+		if(ScriXmlDoc().ReadElemHeader(text,fi.exists(), &gx, &gy, &gw, &gh))
 		{
 			GroupX = e->pos().x() / Scale;
 			GroupY = e->pos().y() / Scale;
@@ -911,8 +908,6 @@ void ScribusView::contentsDragEnterEvent
 //			PaintSizeRect(&p, QRect(pv, QPoint(pv.x()+qRound(gw), pv.y()+qRound(gh))));
 			p.end();
 		}
-		delete ss;
-		ss=NULL;
 	}
 }
 
@@ -1141,14 +1136,12 @@ void ScribusView::contentsDropEvent(QDro
 				{
 					if (!Doc->leaveDrag)
 					{
-						QPopupMenu *pmen = new QPopupMenu();
+						QPopupMenu pmen;
 						qApp->setOverrideCursor(QCursor(ArrowCursor), true);
-						pmen->insertItem( tr("Copy Here"));
-						pmen->insertItem( tr("Move Here"));
-						pmen->insertItem( tr("Cancel"));
-						re = pmen->indexOf(pmen->exec(QCursor::pos()));
-						delete pmen;
-						pmen=NULL;
+						pmen.insertItem( tr("Copy Here"));
+						pmen.insertItem( tr("Move Here"));
+						pmen.insertItem( tr("Cancel"));
+						re = pmen.indexOf(pmen.exec(QCursor::pos()));
 					}
 					else
 						re = 1;
@@ -1416,22 +1409,19 @@ void ScribusView::contentsMouseReleaseEv
 				emit PaintingDone();
 				return;
 			}
-			InsertTable *dia = new InsertTable(this, static_cast<int>(Th / 6), static_cast<int>(Tw / 6));
-			if (!dia->exec())
 			{
-				p.drawRect(AreaR);
+				InsertTable dia(this, static_cast<int>(Th / 6), static_cast<int>(Tw / 6));
+				if (dia.exec())
+				{
+					p.drawRect(AreaR);
+					p.end();
+					Doc->appMode = modeNormal;
+					emit PaintingDone();
+				}
 				p.end();
-				Doc->appMode = modeNormal;
-				emit PaintingDone();
-				delete dia;
-				dia=NULL;
-				return;
+				Cols = dia.Cols->value();
+				Rows = dia.Rows->value();
 			}
-			p.end();
-			Cols = dia->Cols->value();
-			Rows = dia->Rows->value();
-			delete dia;
-			dia=NULL;
 			deltaX = Tw / Cols;
 			deltaY = Th / Rows;
 			offX = 0.0;
@@ -1621,39 +1611,37 @@ void ScribusView::contentsMouseReleaseEv
 	}
 	if ((!GetItem(&currItem)) && (m->button() == RightButton) && (!Doc->DragP) && (Doc->appMode == modeNormal))
 	{
-		QPopupMenu *pmen = new QPopupMenu();
+		QPopupMenu pmen;
 		if (ScMW->Buffer2.startsWith("<SCRIBUSELEM"))
 		{
 			Mxp = m->x();
 			Myp = m->y();
-			pmen->insertItem( tr("&Paste") , this, SLOT(PasteToPage()));
-			pmen->insertSeparator();
+			pmen.insertItem( tr("&Paste") , this, SLOT(PasteToPage()));
+			pmen.insertSeparator();
 		}
 		setObjectUndoMode();
-		ScMW->scrActions["editUndoAction"]->addTo(pmen);
-		ScMW->scrActions["editRedoAction"]->addTo(pmen);
-		pmen->insertSeparator();
-		ScMW->scrActions["viewShowMargins"]->addTo(pmen);
-		ScMW->scrActions["viewShowFrames"]->addTo(pmen);
-		ScMW->scrActions["viewShowImages"]->addTo(pmen);
-		ScMW->scrActions["viewShowGrid"]->addTo(pmen);
-		ScMW->scrActions["viewShowGuides"]->addTo(pmen);
-		ScMW->scrActions["viewShowBaseline"]->addTo(pmen);
-		ScMW->scrActions["viewShowTextChain"]->addTo(pmen);
-		ScMW->scrActions["viewRulerMode"]->addTo(pmen);
-		pmen->insertSeparator();
-//		pmen->insertItem( tr("Unit"), unitSwitcher);
-//		pmen->insertSeparator();
-		ScMW->scrActions["viewSnapToGrid"]->addTo(pmen);
-		ScMW->scrActions["viewSnapToGuides"]->addTo(pmen);
-		pmen->insertSeparator();
-		ScMW->scrActions["pageApplyMasterPage"]->addTo(pmen);
-		ScMW->scrActions["pageManageGuides"]->addTo(pmen);
-		ScMW->scrActions["pageManageMargins"]->addTo(pmen);
-		pmen->exec(QCursor::pos());
+		ScMW->scrActions["editUndoAction"]->addTo(&pmen);
+		ScMW->scrActions["editRedoAction"]->addTo(&pmen);
+		pmen.insertSeparator();
+		ScMW->scrActions["viewShowMargins"]->addTo(&pmen);
+		ScMW->scrActions["viewShowFrames"]->addTo(&pmen);
+		ScMW->scrActions["viewShowImages"]->addTo(&pmen);
+		ScMW->scrActions["viewShowGrid"]->addTo(&pmen);
+		ScMW->scrActions["viewShowGuides"]->addTo(&pmen);
+		ScMW->scrActions["viewShowBaseline"]->addTo(&pmen);
+		ScMW->scrActions["viewShowTextChain"]->addTo(&pmen);
+		ScMW->scrActions["viewRulerMode"]->addTo(&pmen);
+		pmen.insertSeparator();
+//		pmen.insertItem( tr("Unit"), unitSwitcher);
+//		pmen.insertSeparator();
+		ScMW->scrActions["viewSnapToGrid"]->addTo(&pmen);
+		ScMW->scrActions["viewSnapToGuides"]->addTo(&pmen);
+		pmen.insertSeparator();
+		ScMW->scrActions["pageApplyMasterPage"]->addTo(&pmen);
+		ScMW->scrActions["pageManageGuides"]->addTo(&pmen);
+		ScMW->scrActions["pageManageMargins"]->addTo(&pmen);
+		pmen.exec(QCursor::pos());
 		setGlobalUndoMode();
-		delete pmen;
-		pmen=NULL;
 		return;
 	}
 	if ((Doc->appMode != modeMagnifier) && (!Doc->EditClip) && (Doc->appMode != modeDrawBezierLine))
@@ -3117,13 +3105,10 @@ void ScribusView::contentsMouseMoveEvent
 				Doc->DragElements.clear();
 				for (uint dre=0; dre<Doc->selection->count(); ++dre)
 					Doc->DragElements.append(Doc->selection->itemAt(dre)->ItemNr);
-				ScriXmlDoc *ss = new ScriXmlDoc();
-				QDragObject *dr = new QTextDrag(ss->WriteElem(Doc, this, Doc->selection), this);
+				QDragObject *dr = new QTextDrag(ScriXmlDoc().WriteElem(Doc, this, Doc->selection), this);
 				dr->setPixmap(loadIcon("DragPix.xpm"));
 				if (!dr->drag())
 					qDebug("ScribusView::contentsMouseMoveEvent: couldn't start drag operation!");
-				delete ss;
-				ss=NULL;
 				Doc->DragP = false;
 				Doc->leaveDrag = false;
 				Mpressed = false;
@@ -4491,15 +4476,13 @@ void ScribusView::contentsMousePressEven
 						cc = QApplication::clipboard()->text(QClipboard::Clipboard);
 					if (!cc.isNull())
 					{
-						Serializer *ss = new Serializer("");
-						ss->Objekt = cc;
+						Serializer ss("");
+						ss.Objekt = cc;
 						int st = Doc->currentParaStyle;
 						if (st > 5)
-							ss->GetText(currItem, st, Doc->docParagraphStyles[st].Font, Doc->docParagraphStyles[st].FontSize, true);
+							ss.GetText(currItem, st, Doc->docParagraphStyles[st].Font, Doc->docParagraphStyles[st].FontSize, true);
 						else
-							ss->GetText(currItem, st, currItem->font(), currItem->fontSize(), true);
-						delete ss;
-						ss=NULL;
+							ss.GetText(currItem, st, currItem->font(), currItem->fontSize(), true);
 						if (Doc->docHyphenator->AutoCheck)
 							Doc->docHyphenator->slotHyphenate(currItem);
 						for (uint a = 0; a < Doc->Items->count(); ++a)
@@ -7805,10 +7788,7 @@ void ScribusView::ToggleSizeLock()
 
 void ScribusView::sentToScrap()
 {
-	ScriXmlDoc *ss = new ScriXmlDoc();
-	emit ToScrap(ss->WriteElem(Doc, this, Doc->selection));
-	delete ss;
-	ss=NULL;
+	emit ToScrap(ScriXmlDoc().WriteElem(Doc, this, Doc->selection));
 }
 
 void ScribusView::ToBack()
@@ -8658,26 +8638,24 @@ QImage ScribusView::MPageToPixmap(QStrin
 		setScale(1.0);
 		previewMode = true;
 		pm = QImage(clipw, cliph, 32, QImage::BigEndian);
-		ScPainter *painter = new ScPainter(&pm, pm.width(), pm.height());
-		painter->clear(white);
-		painter->translate(-clipx, -clipy);
-		painter->setLineWidth(1);
-		painter->setBrush(Doc->papColor);
-		painter->drawRect(clipx, clipy, clipw, cliph);
+		ScPainter painter(&pm, pm.width(), pm.height());
+		painter.clear(white);
+		painter.translate(-clipx, -clipy);
+		painter.setLineWidth(1);
+		painter.setBrush(Doc->papColor);
+		painter.drawRect(clipx, clipy, clipw, cliph);
 		//Hmm do we need master page mode before this? Seiten.cpp uses this function.
 		DrawPageItems(painter, QRect(clipx, clipy, clipw, cliph));
 		Doc->guidesSettings.framesShown = frs;
 		setScale(sca);
 		Doc->currentPage = act;
-		painter->end();
+		painter.end();
 		double sx = im.width() / static_cast<double>(maxGr);
 		double sy = im.height() / static_cast<double>(maxGr);
 		if (sy < sx)
 			im = pm.smoothScale(static_cast<int>(pm.width() / sx), static_cast<int>(pm.height() / sx));
 		else
 			im = pm.smoothScale(static_cast<int>(pm.width() / sy), static_cast<int>(pm.height() / sy));
-		delete painter;
-		painter=NULL;
 		previewMode = false;
 	}
 	return im;
@@ -8701,17 +8679,17 @@ QImage ScribusView::PageToPixmap(int Nr,
 		Page* act = Doc->currentPage;
 		Doc->currentPage = Doc->Pages->at(Nr);
 		pm = QImage(clipw, cliph, 32, QImage::BigEndian);
-		ScPainter *painter = new ScPainter(&pm, pm.width(), pm.height());
-		painter->clear(Doc->papColor);
-		painter->translate(-clipx, -clipy);
-		painter->setFillMode(ScPainter::Solid);
-		painter->setPen(black, 1, SolidLine, FlatCap, MiterJoin);
-		painter->setBrush(Doc->papColor);
-		painter->drawRect(clipx, clipy, clipw, cliph);
-//		painter->translate(0.5, 0.5);
+		ScPainter painter(&pm, pm.width(), pm.height());
+		painter.clear(Doc->papColor);
+		painter.translate(-clipx, -clipy);
+		painter.setFillMode(ScPainter::Solid);
+		painter.setPen(black, 1, SolidLine, FlatCap, MiterJoin);
+		painter.setBrush(Doc->papColor);
+		painter.drawRect(clipx, clipy, clipw, cliph);
+//		painter.translate(0.5, 0.5);
 		DrawMasterItems(painter, Doc->Pages->at(Nr), QRect(clipx, clipy, clipw, cliph));
 		DrawPageItems(painter, QRect(clipx, clipy, clipw, cliph));
-		painter->end();
+		painter.end();
 		Doc->guidesSettings.framesShown = frs;
 		setScale(sca);
 		Doc->currentPage = act;
@@ -8721,8 +8699,6 @@ QImage ScribusView::PageToPixmap(int Nr,
 			im = pm.smoothScale(static_cast<int>(pm.width() / sx), static_cast<int>(pm.height() / sx));
 		else
 			im = pm.smoothScale(static_cast<int>(pm.width() / sy), static_cast<int>(pm.height() / sy));
-		delete painter;
-		painter=NULL;
 		previewMode = false;
 	}
 	return im;
@@ -10097,10 +10073,7 @@ void ScribusView::editExtendedImagePrope
 		PageItem *Item = Doc->selection->itemAt(0);
 		if (Item->pixm.imgInfo.valid)
 		{
-			ExtImageProps* dia = new ExtImageProps(this, &Item->pixm.imgInfo, Item, this);
-			dia->exec();
-			delete dia;
-			dia=NULL;
+			ExtImageProps(this, &Item->pixm.imgInfo, Item, this).exec();
 		}
 	}
 }
@@ -11183,13 +11156,12 @@ void ScribusView::setScale(const double 
 	unitChange();
 }
 
-void ScribusView::drawLinkFrameLine(ScPainter* painter, FPoint &start, FPoint &end)
+void ScribusView::drawLinkFrameLine(ScPainter & painter, FPoint &start, FPoint &end)
 {
 //CB FIXME Add some checking that the painter is setup?
-	Q_ASSERT(painter!=NULL);
-	painter->setPen(black, 1.0 / Scale, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin);
-	painter->setPenOpacity(1.0);
-	painter->drawLine(start, end);
+	painter.setPen(black, 1.0 / Scale, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin);
+	painter.setPenOpacity(1.0);
+	painter.drawLine(start, end);
 	QWMatrix arrowTrans;
 	arrowTrans.translate(end.x(), end.y());
 	double r = atan2(end.y()-start.y(), end.x()-start.x())*(180.0/M_PI);
@@ -11203,10 +11175,10 @@ void ScribusView::drawLinkFrameLine(ScPa
 	arrow.addQuadPoint(-15, 5, -15, 5, -15, 5, -15, 5);
 	arrow.addQuadPoint(-12, 0, -12, 0, -12, 0, -12, 0);
 	arrow.map(arrowTrans);
-	painter->setBrush(painter->pen());
-	painter->setBrushOpacity(1.0);
-	painter->setLineWidth(0);
-	painter->setFillMode(ScPainter::Solid);
-	painter->setupPolygon(&arrow);
-	painter->fillPath();
+	painter.setBrush(painter.pen());
+	painter.setBrushOpacity(1.0);
+	painter.setLineWidth(0);
+	painter.setFillMode(ScPainter::Solid);
+	painter.setupPolygon(&arrow);
+	painter.fillPath();
 }
Index: scribusview.h
===================================================================
RCS file: /cvs/Scribus/scribus/scribusview.h,v
retrieving revision 1.14.2.106
diff -p -u -r1.14.2.106 scribusview.h
--- scribusview.h	28 Dec 2005 11:52:12 -0000	1.14.2.106
+++ scribusview.h	2 Jan 2006 20:40:51 -0000
@@ -128,9 +128,6 @@ public:
 	bool previewMode;
 	FPoint RCenter;
 	FPointArray RecordP;
-	void DrawMasterItems(ScPainter *painter, Page *page, QRect clip);
-	void DrawPageItems(ScPainter *painter, QRect clip);
-	void DrawPageMarks(ScPainter *p, Page* page, QRect clip);
 	//CB This MUST now be called AFTER a call to doc->addPage or doc->addMasterPage as it
 	//does NOT create a page anymore.
 	Page* addPage(int nr, bool mov = true);
@@ -360,7 +357,10 @@ protected: // Protected methods
 	virtual void setHBarGeometry(QScrollBar &bar, int x, int y, int w, int h);
 	virtual void setVBarGeometry(QScrollBar &bar, int x, int y, int w, int h);
 
-	void drawLinkFrameLine(ScPainter* painter, FPoint &start, FPoint &end);
+	void drawLinkFrameLine(ScPainter & painter, FPoint &start, FPoint &end);
+	void DrawMasterItems(ScPainter & painter, Page *page, QRect clip);
+	void DrawPageItems(ScPainter & painter, QRect clip);
+	void DrawPageMarks(ScPainter & p, Page* page, QRect clip);
 
 signals:
 	void changeUN(int);
Index: story.cpp
===================================================================
RCS file: /cvs/Scribus/scribus/story.cpp,v
retrieving revision 1.58.2.108
diff -p -u -r1.58.2.108 story.cpp
--- story.cpp	31 Dec 2005 10:21:05 -0000	1.58.2.108
+++ story.cpp	2 Jan 2006 20:40:52 -0000
@@ -53,19 +53,21 @@
 extern QPixmap loadIcon(QString nam);
 
 
-SideBar::SideBar(QWidget *pa) : QLabel(pa)
+SideBar::SideBar(QWidget *pa) : QLabel(pa),
+	offs(0),
+	editor(0),
+	noUpdt(true),
+	inRep(false),
+	pmen(0)
 {
 	setEraseColor(QColor(255,255,255));
-	offs = 0;
-	editor = 0;
-	noUpdt = true;
-	inRep = false;
 	setMinimumWidth(fontMetrics().width( tr("No Style") )+30);
 }
 
 void SideBar::mouseReleaseEvent(QMouseEvent *m)
 {
 	CurrentPar = editor->paragraphAt(QPoint(2, m->y()+offs));
+	Q_ASSERT(pmen == 0);
 	pmen = new QPopupMenu();
 	Spalette* Spal = new Spalette(this);
 	Spal->setFormats(editor->doc);
@@ -79,10 +81,11 @@ void SideBar::mouseReleaseEvent(QMouseEv
 	else
 		Spal->setFormat(0);
 	connect(Spal, SIGNAL(newStyle(int)), this, SLOT(setPStyle(int)));
-	pmen->insertItem(Spal);
+	pmen->insertItem(Spal); // pmen takes ownership of SPal
 	pmen->insertItem( tr("Edit Styles..."), this, SLOT(editStyles()));
 	pmen->exec(QCursor::pos());
 	delete pmen;
+	pmen = 0;
 }
 
 void SideBar::editStyles()
@@ -90,8 +93,10 @@ void SideBar::editStyles()
 	emit sigEditStyles();
 }
 
+// WARNING: only to be called from within mouseReleaseEvent(...), where pmen is set.
 void SideBar::setPStyle(int s)
 {
+	Q_ASSERT(pmen);
 	emit ChangeStyle(CurrentPar, s);
 	pmen->activateItemAt(0);
 }
@@ -2866,14 +2871,13 @@ void StoryEditor::updateStatus()
 void StoryEditor::Do_insSp()
 {
 	blockUpdate = true;
-	CharSelect *dia = new CharSelect(this, currItem, Editor->CurrFont);
-	dia->exec();
-	if (!dia->getCharacters().isEmpty())
+	CharSelect dia(this, currItem, Editor->CurrFont);
+	dia.exec();
+	if (!dia.getCharacters().isEmpty())
 	{
-		Editor->insChars(dia->getCharacters());
-		Editor->insert(dia->getCharacters());
+		Editor->insChars(dia.getCharacters());
+		Editor->insert(dia.getCharacters());
 	}
-	delete dia;
 	blockUpdate = false;
 }
 
@@ -3106,11 +3110,10 @@ void StoryEditor::updateTextFrame()
 	bool rep = currDoc->RePos;
 	currDoc->RePos = true;
 	QPixmap pgPix(1, 1);
-	ScPainter *painter = new ScPainter(&pgPix, 1, 1);
-	painter->translate(0.5, 0.5);
-	nextItem->DrawObj(painter, QRect(0, 0, 1, 1));
-	painter->end();
-	delete painter;
+	ScPainter painter(&pgPix, 1, 1);
+	painter.translate(0.5, 0.5);
+	nextItem->DrawObj(&painter, QRect(0, 0, 1, 1));
+	painter.end();
 	currDoc->RePos = rep;
 	nb2 = nextItem;
 	while (nb2 != 0)
@@ -3131,9 +3134,7 @@ void StoryEditor::SearchText()
 {
 	blockUpdate = true;
 	EditorBar->setRepaint(false);
-	SearchReplace* dia = new SearchReplace(this, currDoc, currItem, false);
-	dia->exec();
-	delete dia;
+	SearchReplace(this, currDoc, currItem, false).exec();
 	qApp->processEvents();
 	blockUpdate = false;
 	EditorBar->setRepaint(true);
@@ -3151,12 +3152,13 @@ void StoryEditor::slotEditStyles()
 	disconnect(AlignTools, SIGNAL(NewAlign(int)), this, SLOT(newAlign(int)));
 	//emit EditSt();
 
-	StilFormate *dia = new StilFormate(this, currDoc);
-	connect(dia, SIGNAL(saveStyle(StilFormate *)), ScMW, SLOT(saveStyles(StilFormate *)));
-	if (dia->exec())
-		ScMW->saveStyles(dia);
-	disconnect(dia, SIGNAL(saveStyle(StilFormate *)), ScMW, SLOT(saveStyles(StilFormate *)));
-	delete dia;
+	{
+		StilFormate dia(this, currDoc);
+		connect(&dia, SIGNAL(saveStyle(StilFormate&)), ScMW, SLOT(saveStyles(StilFormate&)));
+		if (dia.exec())
+			ScMW->saveStyles(dia);
+		disconnect(&dia, SIGNAL(saveStyle(StilFormate&)), ScMW, SLOT(saveStyles(StilFormate&)));
+	}
 
 	AlignTools->Spal->setFormats(currDoc);
 	AlignTools->SetAlign(Editor->currentParaStyle);
@@ -3482,10 +3484,10 @@ void StoryEditor::LoadTextFile()
 		if (!fileName.isEmpty())
 		{
 			dirs->set("story_load", fileName.left(fileName.findRev("/")));
-			Serializer *ss = new Serializer(fileName);
-			if (ss->Read(LoadEnc))
+			Serializer ss(fileName);
+			if (ss.Read(LoadEnc))
 			{
-				QString data = ss->GetObjekt();
+				QString data = ss.GetObjekt();
 				data.replace(QRegExp("\r"), "");
 				data.replace(QRegExp("\n"), QChar(13));
 				Editor->loadText(data, currItem);
@@ -3493,7 +3495,6 @@ void StoryEditor::LoadTextFile()
 				emenu->setItemEnabled(Mcopy, 0);
 				emenu->setItemEnabled(Mcut, 0);
 				emenu->setItemEnabled(Mdel, 0);
-				delete ss;
 			}
 		}
 		EditorBar->setRepaint(true);
@@ -3522,10 +3523,9 @@ void StoryEditor::SaveTextFile()
 	if (!fileName.isEmpty())
 	{
 		dirs->set("story_save", fileName.left(fileName.findRev("/")));
-		Serializer *ss = new Serializer(fileName);
-		ss->Objekt = Editor->text();
-		ss->Write(LoadEnc);
-		delete ss;
+		Serializer ss(fileName);
+		ss.Objekt = Editor->text();
+		ss.Write(LoadEnc);
 	}
 	blockUpdate = false;
 }
Index: story.h
===================================================================
RCS file: /cvs/Scribus/scribus/story.h,v
retrieving revision 1.27.2.30
diff -p -u -r1.27.2.30 story.h
--- story.h	12 Nov 2005 13:56:08 -0000	1.27.2.30
+++ story.h	2 Jan 2006 20:40:52 -0000
@@ -162,7 +162,6 @@ public:
 	int offs;
 	int CurrentPar;
 	SEditor *editor;
-	QPopupMenu *pmen;
 	bool noUpdt;
 	bool inRep;
 
@@ -176,12 +175,18 @@ signals:
 	void sigEditStyles();
 
 public slots:
-	void setPStyle(int s);
 	void doMove(int x, int y);
 	void doRepaint();
 	void setRepaint(bool r);
 	//! slot raising style manager
 	void editStyles();
+
+private slots:
+	void setPStyle(int s);
+
+private:
+	// Managed in mouseReleaseEvent, used by setPStyle
+	QPopupMenu *pmen;
 };
 
 class SCRIBUS_API SToolBColorF : public QToolBar
Index: plugins/scriptplugin/cmddialog.cpp
===================================================================
RCS file: /cvs/Scribus/scribus/plugins/scriptplugin/cmddialog.cpp,v
retrieving revision 1.12.2.22
diff -p -u -r1.12.2.22 cmddialog.cpp
--- plugins/scriptplugin/cmddialog.cpp	5 Dec 2005 12:04:52 -0000	1.12.2.22
+++ plugins/scriptplugin/cmddialog.cpp	2 Jan 2006 20:40:52 -0000
@@ -103,12 +103,13 @@ PyObject *scribus_newstyledialog(PyObjec
 	It simulates user mouse clicking in the style dialogs. Ugly.
 	Unpleasant. Etc. But working. */
 	uint styleCount = ScMW->doc->docParagraphStyles.count();
-	StilFormate *dia2 = new StilFormate(ScMW, ScMW->doc);
-	QApplication::setOverrideCursor(QCursor(Qt::ArrowCursor));
-	dia2->neuesFormat();
-	QApplication::restoreOverrideCursor();
-	ScMW->saveStyles(dia2);
-	delete dia2;
+	{
+		StilFormate dia2(ScMW, ScMW->doc);
+		QApplication::setOverrideCursor(QCursor(Qt::ArrowCursor));
+		dia2.neuesFormat();
+		QApplication::restoreOverrideCursor();
+		ScMW->saveStyles(dia2);
+	}
 	if (styleCount == ScMW->doc->docParagraphStyles.count())
 	{
 		Py_INCREF(Py_None);
