Subversion Repositories Scribus

Rev

Rev 4272 | Rev 4430 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4070 subik 1
#include "scribus.h"
2
#include "sampleitem.h"
3
#include "loremipsum.h"
4077 subik 4
#include "scribusdoc.h"
4150 subik 5
#include "undomanager.h"
4070 subik 6
#include <qcolor.h>
7
#include <qstring.h>
8
 
9
extern ScribusMainWindow* ScMW;
10
 
11
 
4077 subik 12
SampleItem::SampleItem() : QObject()
4070 subik 13
{
4077 subik 14
        used = true;
15
        if (ScMW->doc == NULL)
16
        {
4150 subik 17
                ScMW->doFileNew(//pageWidth, pageHeight,
4077 subik 18
                                                                        0,0,
19
                                                                        //topMargin, leftMargin, rightMargin, bottomMargin,
20
                                                                        1, 1, 1, 1,
21
                                                                        // autoframes. It's disabled in python
22
                                                                        // columnDistance, numberCols, autoframes,
23
                                                                        0, 1, false,
24
                                                                        //pagesType, unit, firstPageOrder,
25
                                                                        1, 1, 1,
26
                                                                        //orientation, firstPageNr, "Custom");
27
                                                                        1, 1, "custom");
28
                ScMW->doc->pageSets[1/*pagesType*/].FirstPage = 1;//firstPageOrder;
29
                used = false;
30
        }
31
        doc = ScMW->doc;
4070 subik 32
        tmpStyle.Vname = "(preview temporary)";
33
        tmpStyle.LineSpaMode = 0;
4077 subik 34
        tmpStyle.LineSpa = ((doc->toolSettings.defSize / 10.0) * static_cast<double>(doc->typographicSettings.autoLineSpacing) / 100) + (doc->toolSettings.defSize / 10.0);
4070 subik 35
        tmpStyle.textAlignment = 0;
36
        tmpStyle.Indent = 0;
37
        tmpStyle.First = 0;
38
        tmpStyle.gapBefore = 0;
39
        tmpStyle.gapAfter = 0;
4077 subik 40
        tmpStyle.Font = doc->toolSettings.defFont;
41
        tmpStyle.FontSize = doc->toolSettings.defSize;
4070 subik 42
        tmpStyle.TabValues.clear();
43
        tmpStyle.Drop = false;
44
        tmpStyle.DropLin = 2;
45
        tmpStyle.DropDist = 0;
46
        tmpStyle.FontEffect = 0;
4077 subik 47
        tmpStyle.FColor = doc->toolSettings.dBrush;
48
        tmpStyle.FShade = doc->toolSettings.dShade;
49
        tmpStyle.SColor = doc->toolSettings.dPen;
50
        tmpStyle.SShade = doc->toolSettings.dShade2;
4070 subik 51
        tmpStyle.BaseAdj = false;
52
        tmpStyle.txtShadowX = 50;
53
        tmpStyle.txtShadowY = -50;
54
        tmpStyle.txtOutline = 10;
4077 subik 55
        tmpStyle.txtUnderPos = doc->typographicSettings.valueUnderlinePos;
56
        tmpStyle.txtUnderWidth = doc->typographicSettings.valueUnderlineWidth;
57
        tmpStyle.txtStrikePos = doc->typographicSettings.valueStrikeThruPos;
58
        tmpStyle.txtStrikeWidth = doc->typographicSettings.valueStrikeThruPos;
4070 subik 59
        tmpStyle.scaleH = 1000;
60
        tmpStyle.scaleV = 1000;
61
        tmpStyle.baseOff = 0;
62
        tmpStyle.kernVal = 0;
63
        bgColor = QColor(255, 255, 255);
64
}
65
 
66
SampleItem::~SampleItem()
67
{
4077 subik 68
        if (used == false)
69
        {
70
                doc->setModified(false);
4150 subik 71
                ScMW->slotFileClose();
4077 subik 72
        }
4070 subik 73
}
74
 
75
void SampleItem::setText(QString aText)
76
{
77
        text = aText;
78
}
79
 
80
void SampleItem::setLoremIpsum(int para)
81
{
82
        LoremParser *m = new LoremParser("loremipsum.xml");
83
        text = m->createLorem(para);
84
        text = QString::fromUtf8(text);
85
        delete m;
86
}
87
 
88
void SampleItem::setStyle(ParagraphStyle aStyle)
89
{
90
        tmpStyle = aStyle;
91
}
92
 
93
void SampleItem::setBgColor(QColor c)
94
{
95
        bgColor = c;
96
}
97
 
98
void SampleItem::setLineSpaMode(int lineSpaMode)
99
{
100
        tmpStyle.LineSpaMode = lineSpaMode;
101
}
102
 
103
void SampleItem::setLineSpa(double lineSpa)
104
{
105
        tmpStyle.LineSpa = lineSpa;
106
}
107
 
108
void SampleItem::setTextAlignment(int textAlignment)
109
{
110
        tmpStyle.textAlignment = textAlignment;
111
}
112
 
113
void SampleItem::setIndent(double indent)
114
{
115
        tmpStyle.Indent = indent;
116
}
117
 
118
void SampleItem::setFirst(double first)
119
{
120
        tmpStyle.First = first;
121
}
122
 
123
void SampleItem::setGapBefore(double gapBefore)
124
{
125
        tmpStyle.gapBefore = gapBefore;
126
}
127
 
128
void SampleItem::setGapAfter(double gapAfter)
129
{
130
        tmpStyle.gapAfter = gapAfter;
131
}
132
 
133
void SampleItem::setFont(QString font)
134
{
135
        tmpStyle.Font = font;
136
}
137
 
4077 subik 138
void SampleItem::setFontSize(int fontSize, bool autoLineSpa)
4070 subik 139
{
140
        tmpStyle.FontSize = fontSize;
4077 subik 141
        if (autoLineSpa)
142
                tmpStyle.LineSpa = ((fontSize / 10)  * (doc->typographicSettings.autoLineSpacing / 100) + (fontSize / 10));
4070 subik 143
}
144
 
145
/*void SampleItem::setTabValues(QValueList<PageItem::TabRecord> tabValues)
146
{
147
        tmpStyle.TabValues = tabValues;
148
}*/
149
 
150
void SampleItem::setDrop(bool drop)
151
{
152
        tmpStyle.Drop = drop;
153
}
154
 
155
void SampleItem::setDropLin(int dropLin)
156
{
157
        tmpStyle.DropLin = dropLin;
158
}
159
 
160
void SampleItem::setDropDist(double dropDist)
161
{
162
        tmpStyle.DropDist = dropDist;
163
}
164
 
165
void SampleItem::setFontEffect(int fontEffect)
166
{
167
        tmpStyle.FontEffect = fontEffect;
168
}
169
 
170
void SampleItem::setFColor(QString fColor)
171
{
172
        tmpStyle.FColor = fColor;
173
}
174
 
175
void SampleItem::setFShade(int fShade)
176
{
177
        tmpStyle.FShade = fShade;
178
}
179
 
180
void SampleItem::setSColor(QString sColor)
181
{
182
        tmpStyle.SColor = sColor;
183
}
184
 
185
void SampleItem::setSShade(int sShade)
186
{
187
        tmpStyle.SShade = sShade;
188
}
189
 
190
void SampleItem::setBaseAdj(bool baseAdj)
191
{
192
        tmpStyle.BaseAdj = baseAdj;
193
}
194
 
195
void SampleItem::setTxtShadowX(int txtShadowX)
196
{
197
        tmpStyle.txtShadowX = txtShadowX;
198
}
199
 
200
void SampleItem::setTxtShadowY(int txtShadowY)
201
{
202
        tmpStyle.txtShadowY = txtShadowY;
203
}
204
 
205
void SampleItem::setTxtOutline(int txtOutline)
206
{
207
        tmpStyle.txtOutline = txtOutline;
208
}
209
 
210
void SampleItem::setTxtUnderPos(int txtUnderPos)
211
{
212
        tmpStyle.txtUnderPos = txtUnderPos;
213
}
214
 
215
void SampleItem::setTxtUnderWidth(int txtUnderWidth)
216
{
217
        tmpStyle.txtUnderWidth = txtUnderWidth;
218
}
219
 
220
void SampleItem::setTxtStrikePos(int txtStrikePos)
221
{
222
        tmpStyle.txtStrikePos = txtStrikePos;
223
}
224
 
225
void SampleItem::setTxtStrikeWidth(int txtStrikeWidth)
226
{
227
        tmpStyle.txtStrikeWidth = txtStrikeWidth;
228
}
229
 
230
void SampleItem::setScaleH(int scaleH)
231
{
232
        tmpStyle.scaleH = scaleH;
233
}
234
 
235
void SampleItem::setScaleV(int scaleV)
236
{
237
        tmpStyle.scaleV = scaleV;
238
}
239
 
240
void SampleItem::setBaseOff(int baseOff)
241
{
242
        tmpStyle.baseOff = baseOff;
243
}
244
 
245
void SampleItem::setKernVal(int kernVal)
246
{
247
        tmpStyle.kernVal = kernVal;
248
}
249
 
250
QPixmap SampleItem::getSample(int width, int height)
251
{
4150 subik 252
        UndoManager::instance()->setUndoEnabled(false); // disable undo
253
 
4272 subik 254
        PageItem_TextFrame *previewItem = new PageItem_TextFrame(doc, 0, 0, width, width, 0, "None", "None");
4070 subik 255
        QPixmap pm(width, height);
256
        ScPainter *painter = new ScPainter(&pm, width, height, 0, 0);
4374 subik 257
        double sca = 1.0; // original scale to set back at the end...
4070 subik 258
 
4077 subik 259
        if (ScMW->view != NULL)
4374 subik 260
        {
4077 subik 261
                sca = ScMW->view->getScale();
4374 subik 262
                ScMW->view->setScale(1.0);
263
        }
4077 subik 264
 
4070 subik 265
        QFont fo = QFont(tmpStyle.Font);
4077 subik 266
        fo.setPointSize(qRound(doc->toolSettings.defSize / 10.0));
267
        doc->AddFont(tmpStyle.Font, qRound(doc->toolSettings.defSize / 10.0));
268
        doc->docParagraphStyles.append(tmpStyle);
269
        int tmpIndex = doc->docParagraphStyles.count() - 1;
4070 subik 270
 
271
        previewItem->FrameType = PageItem::TextFrame;
272
        previewItem->itemText.clear();
4073 cbradney 273
        previewItem->setFont(tmpStyle.Font);
4070 subik 274
        previewItem->Cols = 1;
275
        for (uint i = 0; i < text.length(); ++i)
276
        {
277
                ScText *hg = new ScText;
278
                hg->ch = text.at(i);
279
                if ((hg->ch == QChar(10)) || (hg->ch == QChar(5)))
280
                        hg->ch = QChar(13);
281
                previewItem->itemText.append(hg);
282
        }
4374 subik 283
        ScMW->view->chAbStyle(previewItem, tmpIndex);
4070 subik 284
        previewItem->DrawObj(painter, QRect(0, 0, width, height));
285
        painter->end();
286
        delete(painter);
4374 subik 287
        delete previewItem;
288
 
4077 subik 289
        if (ScMW->view != NULL)
290
                ScMW->view->setScale(sca);
291
        doc->docParagraphStyles.remove(doc->docParagraphStyles.fromLast());
4150 subik 292
        UndoManager::instance()->setUndoEnabled(true);
4070 subik 293
        return pm;
294
}