Subversion Repositories Scribus

Rev

Rev 284 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 paul 1
#include "edit1format.h"
2
#include "edit1format.moc"
280 Franz 3
#include "tabruler.h"
3 paul 4
extern QPixmap loadIcon(QString nam);
139 Franz 5
extern double UmReFaktor;
3 paul 6
#include <qmessagebox.h>
249 Franz 7
#include <qtooltip.h>
3 paul 8
 
173 Franz 9
EditStyle::EditStyle( QWidget* parent, struct StVorL *vor, QValueList<StVorL> v, bool neu, preV *Prefs, double au, int dEin, ScribusDoc *doc)
249 Franz 10
                : QDialog( parent, "EditST", true, 0)
3 paul 11
{
249 Franz 12
        setCaption( tr( "Edit Style" ) );
161 Franz 13
        setIcon(loadIcon("AppIcon.png"));
14
        AutoVal = au;
15
        DocsEin = dEin;
249 Franz 16
        EditStyleLayout = new QGridLayout( this );
17
        EditStyleLayout->setSpacing( 6 );
18
        EditStyleLayout->setMargin( 10 );
3 paul 19
 
249 Franz 20
        TextLabel1 = new QLabel( this, "TextLabel1" );
21
        TextLabel1->setText( tr( "Name:" ) );
22
        EditStyleLayout->addMultiCellWidget( TextLabel1, 0, 0, 0, 1 );
3 paul 23
 
249 Franz 24
        Name = new QLineEdit( this, "Name" );
25
        Name->setMinimumSize( QSize( 200, 22 ) );
26
        Name->setText( vor->Vname );
27
        OldName = vor->Vname;
28
        IsNew = neu;
29
        EditStyleLayout->addMultiCellWidget( Name, 1, 1, 0, 1 );
3 paul 30
 
249 Franz 31
        GroupFont = new QGroupBox( this, "GroupFont" );
32
        GroupFont->setTitle( tr( "Character" ) );
33
        GroupFont->setColumnLayout(0, Qt::Vertical );
34
        GroupFont->layout()->setSpacing( 5 );
35
        GroupFont->layout()->setMargin( 10 );
36
        GroupFontLayout = new QGridLayout( GroupFont->layout() );
37
        GroupFontLayout->setAlignment( Qt::AlignTop );
38
        TextF1 = new QLabel( GroupFont, "TextF1" );
39
        TextF1->setMinimumSize( QSize( 50, 22 ) );
40
        TextF1->setText( tr( "Face:" ) );
41
        GroupFontLayout->addWidget( TextF1, 0, 0 );
42
        FontC = new FontCombo(GroupFont, Prefs);
43
        for (int fc=0; fc<FontC->count(); ++fc)
44
        {
45
                if (FontC->text(fc) == vor->Font)
46
                {
47
                        FontC->setCurrentItem(fc);
48
                        break;
49
                }
50
        }
280 Franz 51
        GroupFontLayout->addMultiCellWidget( FontC, 0, 0, 1, 4 );
249 Franz 52
        TextF2 = new QLabel( GroupFont, "TextF2" );
53
        TextF2->setMinimumSize( QSize( 50, 22 ) );
54
        TextF2->setText( tr( "Size:" ) );
55
        GroupFontLayout->addWidget( TextF2, 1, 0 );
56
        SizeC = new MSpinBox( GroupFont, 1 );
57
        SizeC->setMinimumSize( QSize( 70, 22 ) );
58
        SizeC->setSuffix( tr( " pt" ) );
161 Franz 59
        SizeC->setMinValue(1);
60
        SizeC->setMaxValue(1024);
61
        SizeC->setValue(vor->FontSize / 10.0);
249 Franz 62
        GroupFontLayout->addWidget( SizeC, 1, 1 );
63
        EffeLabel = new QLabel( GroupFont, "EffeLabel" );
173 Franz 64
        EffeLabel->setText( tr("Effect:"));
280 Franz 65
        GroupFontLayout->addWidget( EffeLabel, 1, 2 );
173 Franz 66
        EffeS = new StyleSelect(GroupFont);
67
        EffeS->setStyle(vor->FontEffect);
280 Franz 68
        GroupFontLayout->addMultiCellWidget( EffeS, 1, 1, 3, 4, Qt::AlignLeft );
249 Franz 69
        AligLabel = new QLabel( GroupFont, "AligLabel" );
173 Franz 70
        AligLabel->setText( tr("Alignment:"));
280 Franz 71
        GroupFontLayout->addWidget( AligLabel, 2, 0 );
173 Franz 72
        AligS = new AlignSelect(GroupFont);
73
        AligS->setStyle(vor->Ausri);
280 Franz 74
        GroupFontLayout->addWidget( AligS, 2, 1, Qt::AlignLeft );
3 paul 75
 
280 Franz 76
        DropCaps = new QCheckBox( GroupFont, "DropCaps" );
77
        DropCaps->setText( tr( "Drop Caps" ) );
78
        DropCaps->setChecked(vor->Drop);
79
        GroupFontLayout->addWidget( DropCaps, 2, 2 );
80
        CapLabel = new QLabel( GroupFont, "CapLabel" );
81
        CapLabel->setText( tr("Lines:"));
82
        GroupFontLayout->addWidget( CapLabel, 2, 3, Qt::AlignRight );
83
        DropLines = new QSpinBox( GroupFont, "DropLines" );
84
        DropLines->setMinValue( 2 );
85
        DropLines->setMaxValue( 20 );
86
        DropLines->setValue(vor->DropLin);
87
        GroupFontLayout->addWidget( DropLines, 2, 4 );
88
        bool enable = vor->Drop ? true : false;
89
        DropLines->setEnabled(enable);
90
        CapLabel->setEnabled(enable);
91
 
249 Franz 92
        FillIcon = new QLabel( GroupFont, "FillIcon" );
173 Franz 93
        FillIcon->setText( tr("Fill Color:"));
280 Franz 94
        GroupFontLayout->addWidget( FillIcon, 3, 0 );
249 Franz 95
        TxFill = new QComboBox( true, GroupFont, "TxFill" );
173 Franz 96
        TxFill->setEditable(false);
280 Franz 97
        GroupFontLayout->addWidget( TxFill, 3, 1 );
173 Franz 98
        PM2 = new ShadeButton(GroupFont);
280 Franz 99
        GroupFontLayout->addWidget( PM2, 3, 2, Qt::AlignLeft );
173 Franz 100
 
249 Franz 101
        StrokeIcon = new QLabel( GroupFont, "StrokeIcon" );
102
        StrokeIcon->setText( tr("Stroke Color:"));
280 Franz 103
        GroupFontLayout->addWidget( StrokeIcon, 4, 0 );
249 Franz 104
        TxStroke = new QComboBox( true, GroupFont, "TxStroke" );
173 Franz 105
        TxStroke->setEditable(false);
280 Franz 106
        GroupFontLayout->addWidget( TxStroke, 4, 1 );
173 Franz 107
        PM1 = new ShadeButton(GroupFont);
280 Franz 108
        GroupFontLayout->addWidget( PM1, 4, 2, Qt::AlignLeft );
173 Franz 109
 
110
        TxFill->clear();
111
        TxStroke->clear();
112
        CListe::Iterator it;
113
        QPixmap pm = QPixmap(15, 15);
114
        TxFill->insertItem( tr("None"));
115
        TxStroke->insertItem( tr("None"));
116
        for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
223 Franz 117
        {
173 Franz 118
                pm.fill(doc->PageColors[it.key()].getRGBColor());
119
                TxFill->insertItem(pm, it.key());
120
                TxStroke->insertItem(pm, it.key());
223 Franz 121
        }
173 Franz 122
        StrokeIcon->setEnabled(false);
123
        TxStroke->setEnabled(false);
124
        TxFill->setCurrentText(vor->FColor);
125
        TxStroke->setCurrentText(vor->SColor);
126
        PM2->setValue(vor->FShade);
127
        PM1->setValue(vor->SShade);
128
 
280 Franz 129
        EditStyleLayout->addWidget( GroupFont, 2, 0 );
130
 
249 Franz 131
        AbstandV = new QGroupBox( this, "AbstandV" );
132
        AbstandV->setTitle( tr( "Vertical Spaces" ) );
133
        AbstandV->setColumnLayout(0, Qt::Vertical );
134
        AbstandV->layout()->setSpacing( 0 );
135
        AbstandV->layout()->setMargin( 0 );
136
        AbstandVLayout = new QGridLayout( AbstandV->layout() );
137
        AbstandVLayout->setAlignment( Qt::AlignTop );
138
        AbstandVLayout->setSpacing( 5 );
139
        AbstandVLayout->setMargin( 10 );
3 paul 140
 
249 Franz 141
        BaseGrid = new QCheckBox( AbstandV, "BaseGrid" );
142
        BaseGrid->setText( tr( "Adjust to Baseline Grid" ) );
241 Franz 143
        BaseGrid->setChecked(vor->BaseAdj);
144
        AbstandVLayout->addMultiCellWidget( BaseGrid, 0, 0, 0, 1 );
249 Franz 145
        AboveV = new MSpinBox( AbstandV, 1 );
146
        AboveV->setMinimumSize( QSize( 70, 22 ) );
147
        AboveV->setMaxValue( 300 );
148
        AboveV->setMinValue( 0 );
149
        AbstandVLayout->addWidget( AboveV, 1, 1 );
3 paul 150
 
249 Franz 151
        BelowV = new MSpinBox( AbstandV, 1 );
152
        BelowV->setMinimumSize( QSize( 70, 22 ) );
153
        BelowV->setMaxValue( 300 );
154
        BelowV->setMinValue( 0 );
241 Franz 155
        AbstandVLayout->addWidget( BelowV, 2, 1 );
3 paul 156
 
249 Franz 157
        LineSpVal = new MSpinBox( AbstandV, 1 );
158
        LineSpVal->setMinimumSize( QSize( 70, 22 ) );
159
        LineSpVal->setSuffix( tr( " pt" ) );
160
        LineSpVal->setMaxValue( 300 );
161
        LineSpVal->setMinValue( 1 );
162
        LineSpVal->setValue(vor->LineSpa);
163
        AbstandVLayout->addWidget( LineSpVal, 3, 1 );
80 Franz 164
 
249 Franz 165
        TextLabel3 = new QLabel( AbstandV, "TextLabel3" );
166
        TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)3, (QSizePolicy::SizeType)1,
167
                                                TextLabel3->sizePolicy().hasHeightForWidth() ) );
168
        TextLabel3->setMinimumSize( QSize( 90, 22 ) );
284 Franz 169
        TextLabel3->setText( tr( "Line Spacing:" ) );
249 Franz 170
        AbstandVLayout->addWidget( TextLabel3, 3, 0 );
171
        TextLabel1_2_2 = new QLabel( AbstandV, "TextLabel1_2_2" );
172
        TextLabel1_2_2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)3, (QSizePolicy::SizeType)1,
173
                                       TextLabel1_2_2->sizePolicy().hasHeightForWidth() ) );
174
        TextLabel1_2_2->setMinimumSize( QSize( 90, 22 ) );
175
        TextLabel1_2_2->setText( tr( "Above:" ) );
176
        AbstandVLayout->addWidget( TextLabel1_2_2, 1, 0 );
177
        TextLabel1_2_3 = new QLabel( AbstandV, "TextLabel1_2_3" );
178
        TextLabel1_2_3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)3, (QSizePolicy::SizeType)1,
179
                                       TextLabel1_2_3->sizePolicy().hasHeightForWidth() ) );
180
        TextLabel1_2_3->setMinimumSize( QSize( 90, 22 ) );
181
        TextLabel1_2_3->setText( tr( "Below:" ) );
182
        AbstandVLayout->addWidget( TextLabel1_2_3, 2, 0 );
183
        EditStyleLayout->addWidget( AbstandV, 2, 1 );
3 paul 184
 
280 Franz 185
        GroupBox10 = new QGroupBox( this, "GroupBox10" );
186
        GroupBox10->setTitle( tr( "Tabulators and Indentation" ) );
187
        GroupBox10->setColumnLayout(0, Qt::Vertical );
188
        GroupBox10->layout()->setSpacing( 0 );
189
        GroupBox10->layout()->setMargin( 0 );
190
        GroupBox10Layout = new QVBoxLayout(GroupBox10->layout());
191
        GroupBox10Layout->setAlignment( Qt::AlignTop );
192
        GroupBox10Layout->setSpacing( 5 );
193
        GroupBox10Layout->setMargin( 10 );
194
        TabList = new Tabruler(GroupBox10, true, DocsEin, vor->TabValues, -1);
195
        TabList->setIndentSpin(vor->Indent);
317 Franz 196
        TabList->setIndent();
280 Franz 197
        TabList->setFirstSpin(vor->First);
198
        TabList->setFirst();
199
        GroupBox10Layout->addWidget( TabList );
200
 
201
        EditStyleLayout->addMultiCellWidget( GroupBox10, 3, 3, 0, 1 );
202
 
249 Franz 203
        Layout17 = new QHBoxLayout;
204
        Layout17->setSpacing( 6 );
205
        Layout17->setMargin( 0 );
206
        QSpacerItem* spacer2 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
207
        Layout17->addItem( spacer2 );
208
        OkButton = new QPushButton( this, "OkButton" );
209
        OkButton->setText( tr( "OK" ) );
210
        Layout17->addWidget( OkButton );
211
        QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
212
        Layout17->addItem( spacer );
213
        Cancel = new QPushButton( this, "Cancel" );
214
        Cancel->setText( tr( "Cancel" ) );
215
        OkButton->setDefault( true );
216
        Layout17->addWidget( Cancel );
217
        QSpacerItem* spacer_3 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
218
        Layout17->addItem( spacer_3 );
219
        EditStyleLayout->addMultiCellLayout( Layout17, 4, 4, 0, 1 );
220
        werte = vor;
221
        allV = v;
222
        // tooltips
223
        QToolTip::add( Name, tr( "Name of your paragraph style" ) );
224
        QToolTip::add( FontC, tr( "Font of selected text or object" ) );
225
        QToolTip::add( SizeC, tr( "Font Size" ) );
226
        QToolTip::add( TxFill, tr( "Color of text fill" ) );
227
        QToolTip::add( TxStroke, tr( "Color of text stroke" ) );
228
        QToolTip::add( DropCaps, tr( "Provides an oversized first letter for a paragraph. Used for stylistic effect" ) );
229
        QToolTip::add( DropLines, tr( "Determines the overall height, in line numbers, of the Drop Caps" ) );
230
        QToolTip::add( BaseGrid, tr( "Align text to baseline grid" ) );
231
        QToolTip::add( AboveV, tr( "Spacing above the paragraph" ) );
232
        QToolTip::add( BelowV, tr( "Spacing below the paragraph" ) );
233
        QToolTip::add( LineSpVal, tr( "Line Spacing" ) );
234
 
235
        // signals and slots connections
236
        connect( Cancel, SIGNAL( clicked() ), this, SLOT( reject() ) );
237
        connect( OkButton, SIGNAL( clicked() ), this, SLOT( Verlassen() ) );
238
        connect( DropCaps, SIGNAL( clicked() ), this, SLOT( ManageDrops() ) );
239
        connect(SizeC, SIGNAL(valueChanged(int)), this, SLOT(FontChange()));
240
        connect(EffeS, SIGNAL(State(int)), this, SLOT(ColorChange()));
161 Franz 241
        AboveV->setDecimals(10);
242
        BelowV->setDecimals(10);
223 Franz 243
        /* PFJ - 29.02.04 - Altered switch so only case 2 is tested */
241 Franz 244
        QString ein, measure[] = { tr(" pt"), tr(" mm"), tr(" in"), tr(" p")};
223 Franz 245
        ein = measure[dEin];
246
        if (dEin == 2)
161 Franz 247
        {
249 Franz 248
                AboveV->setDecimals(10000);
249
                BelowV->setDecimals(10000);
161 Franz 250
        }
249 Franz 251
        AboveV->setSuffix(ein);
252
        BelowV->setSuffix(ein);
253
        BelowV->setValue(vor->Anach * UmReFaktor);
254
        AboveV->setValue(vor->Avor * UmReFaktor);
174 Franz 255
        ColorChange();
3 paul 256
}
257
 
173 Franz 258
void EditStyle::ColorChange()
259
{
260
        int s = EffeS->getStyle();
261
        bool enabled = (s & 4) ? true : false;
262
        StrokeIcon->setEnabled(enabled);
263
        TxStroke->setEnabled(enabled);
264
}
265
 
153 Franz 266
void EditStyle::ManageDrops()
267
{
161 Franz 268
        bool enabled = DropCaps->isChecked() ? true : false;
269
        DropLines->setEnabled(enabled);
270
        CapLabel->setEnabled(enabled);
153 Franz 271
}
272
 
273
void EditStyle::FontChange()
3 paul 274
{
153 Franz 275
        double val = SizeC->value();
276
        LineSpVal->setValue((val  * AutoVal / 100) + val);
3 paul 277
}
278
 
279
void EditStyle::Verlassen()
280
{
281
        if (IsNew)
161 Franz 282
        {
283
                for (uint x=0; x<allV.count()-1; ++x)
3 paul 284
                {
161 Franz 285
                        if (Name->text() == allV[x].Vname)
3 paul 286
                        {
249 Franz 287
                                QMessageBox::information(this, tr("Warning"), tr("Name of the Style is not unique"), tr("OK"),
288
                                                         0, 0, 0, QMessageBox::Ok);
289
                                Name->selectAll();
112 Franz 290
                                Name->setFocus();
3 paul 291
                                return;
292
                        }
293
                }
161 Franz 294
        }
3 paul 295
        else
161 Franz 296
        {
297
                if (OldName != Name->text())
3 paul 298
                {
161 Franz 299
                        for (uint x=0; x<allV.count(); ++x)
3 paul 300
                        {
161 Franz 301
                                if (Name->text() == allV[x].Vname)
3 paul 302
                                {
249 Franz 303
                                        QMessageBox::information(this, tr("Warning"), tr("Name of the Style is not unique"),
304
                                                                 tr("OK"),0, 0, 0, QMessageBox::Ok);
305
                                        Name->selectAll();
112 Franz 306
                                        Name->setFocus();
3 paul 307
                                        return;
308
                                }
309
                        }
310
                }
161 Franz 311
        }
173 Franz 312
        werte->FontEffect = EffeS->getStyle();
313
        werte->Ausri = AligS->getStyle();
146 Franz 314
        werte->LineSpa = LineSpVal->value();
280 Franz 315
        werte->Indent = TabList->getIndent();
316
        werte->First = TabList->getFirst();
146 Franz 317
        werte->Avor = AboveV->value() / UmReFaktor;
318
        werte->Anach = BelowV->value() / UmReFaktor;
3 paul 319
        werte->Vname = Name->text();
320
        werte->Font = FontC->currentText();
146 Franz 321
        werte->FontSize = qRound(SizeC->value() * 10.0);
153 Franz 322
        werte->Drop = DropCaps->isChecked();
323
        werte->DropLin = DropLines->value();
173 Franz 324
        werte->FColor = TxFill->currentText();
325
        werte->FShade = PM2->getValue();
326
        werte->SColor = TxStroke->currentText();
327
        werte->SShade = PM1->getValue();
241 Franz 328
        werte->BaseAdj = BaseGrid->isChecked();
280 Franz 329
        werte->TabValues = TabList->getTabVals();
3 paul 330
        accept();
331
}