Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
164 Franz 1
#include "search.h"
2
#include "search.moc"
3
 
4
#include <qvariant.h>
5
#include <qcheckbox.h>
6
#include <qcombobox.h>
7
#include <qgroupbox.h>
8
#include <qlineedit.h>
189 Franz 9
#include <qlabel.h>
164 Franz 10
#include <qpushbutton.h>
11
#include <qlayout.h>
12
#include <qtooltip.h>
13
#include <qwhatsthis.h>
166 Franz 14
#include <qmessagebox.h>
164 Franz 15
#include "mspinbox.h"
16
#include "fontcombo.h"
17
#include "page.h"
843 tsoots 18
#include "prefsfile.h"
19
#include "prefscontext.h"
167 Franz 20
#include "styleselect.h"
173 Franz 21
#include "shadebutton.h"
356 Franz 22
#include "story.h"
23
#include "scribus.h"
838 cbradney 24
 
356 Franz 25
extern ScribusApp* ScApp;
164 Franz 26
extern QPixmap loadIcon(QString nam);
843 tsoots 27
extern PrefsFile* prefsFile;
164 Franz 28
 
29
 
1065 cbradney 30
SearchReplace::SearchReplace( QWidget* parent, ScribusDoc *doc, ApplicationPrefs *Prefs, PageItem* ite, bool mode )
164 Franz 31
                                                        : QDialog( parent, "SearchReplace", true, 0 )
32
{
189 Franz 33
        setCaption( tr( "Search/Replace" ) );
164 Franz 34
        setIcon(loadIcon("AppIcon.png"));
35
        QPixmap pm;
36
        pm = QPixmap(30, 15);
1065 cbradney 37
        ColorList::Iterator it;
164 Franz 38
        Item = ite;
39
        Doc = doc;
166 Franz 40
        NotFound = false;
189 Franz 41
        SMode = mode;
42
        SearchReplaceLayout = new QVBoxLayout( this, 10, 5, "SearchReplaceLayout");
356 Franz 43
        SelLayout = new QHBoxLayout( 0, 0, 6, "SelLayout");
44
        Search = new QGroupBox( this, "Search" );
45
        Search->setTitle( tr( "Search for:" ) );
46
        Search->setColumnLayout(0, Qt::Vertical );
47
        Search->layout()->setSpacing( 2 );
48
        Search->layout()->setMargin( 5 );
49
        SearchLayout = new QGridLayout( Search->layout() );
50
        SearchLayout->setAlignment( Qt::AlignTop );
51
        SText = new QCheckBox( Search, "SText" );
52
        SText->setText( tr( "Text" ) );
53
        SearchLayout->addWidget( SText, 0, 0 );
54
        SStyle = new QCheckBox( Search, "SStyle" );
55
        SStyle->setText( tr( "Paragraph Style" ) );
56
        SearchLayout->addWidget( SStyle, 1, 0 );
57
        SFont = new QCheckBox( Search, "SFont" );
58
        SFont->setText( tr( "Font" ) );
59
        SearchLayout->addWidget( SFont, 2, 0 );
60
        SSize = new QCheckBox( Search, "SSize" );
61
        SSize->setText( tr( "Font Size" ) );
62
        SearchLayout->addWidget( SSize, 3, 0 );
63
        SEffect = new QCheckBox( Search, "SEffect" );
64
        SEffect->setText( tr( "Font Effects" ) );
65
        SearchLayout->addWidget( SEffect, 4, 0 );
66
        SFill = new QCheckBox( Search, "SFill" );
67
        SFill->setText( tr( "Fill Color" ) );
68
        SearchLayout->addWidget( SFill, 5, 0 );
69
        SFillS = new QCheckBox( Search, "SFillS" );
70
        SFillS->setText( tr( "Fill Shade" ) );
71
        SearchLayout->addWidget( SFillS, 6, 0 );
72
        SStroke = new QCheckBox( Search, "SStroke" );
73
        SStroke->setText( tr( "Stroke Color" ) );
74
        SearchLayout->addWidget( SStroke, 7, 0 );
75
        SStrokeS = new QCheckBox( Search, "SStrokeS" );
76
        SStrokeS->setText( tr( "Stroke Shade" ) );
77
        SearchLayout->addWidget( SStrokeS, 8, 0 );
78
        STextVal = new QLineEdit( Search, "STextVal" );
79
        STextVal->setEnabled(false);
80
        SearchLayout->addWidget( STextVal, 0, 1 );
81
        SStyleVal = new QComboBox( true, Search, "SStyleVal" );
82
        SStyleVal->setEditable(false);
83
        QString tmp_sty[] = { tr("Left"), tr("Center"), tr("Right"), tr("Block"), tr("Forced")};
84
        size_t ar_sty = sizeof(tmp_sty) / sizeof(*tmp_sty);
85
        for (uint a = 0; a < ar_sty; ++a)
86
                SStyleVal->insertItem(tmp_sty[a]);
1065 cbradney 87
        if (doc->docParagraphStyles.count() > 5)
168 Franz 88
        {
1065 cbradney 89
                for (uint x = 5; x < doc->docParagraphStyles.count(); ++x)
90
                        SStyleVal->insertItem(doc->docParagraphStyles[x].Vname);
356 Franz 91
        }
92
        SStyleVal->listBox()->setMinimumWidth(SStyleVal->listBox()->maxItemWidth()+24);
1065 cbradney 93
        SStyleVal->setCurrentItem(doc->currentParaStyle);
356 Franz 94
        SStyleVal->setEnabled(false);
95
        SearchLayout->addWidget( SStyleVal, 1, 1 );
96
        SFontVal = new FontCombo(Search, Prefs);
97
        SFontVal->setMaximumSize(190, 30);
98
        SFontVal->setCurrentText(doc->CurrFont);
99
        SFontVal->setEnabled(false);
100
        SearchLayout->addWidget( SFontVal, 2, 1 );
101
        SSizeVal = new MSpinBox( Search, 1 );
102
        SSizeVal->setSuffix( tr( " pt" ) );
103
        SSizeVal->setMinValue( 1 );
104
        SSizeVal->setMaxValue( 1024 );
105
        SSizeVal->setValue( doc->CurrFontSize / 10.0 );
106
        SSizeVal->setEnabled(false);
107
        SearchLayout->addWidget( SSizeVal, 3, 1 );
108
        SEffVal = new StyleSelect( Search );
109
        SEffVal->setStyle(0);
110
        SEffVal->setEnabled(false);
111
        SearchLayout->addWidget( SEffVal, 4, 1, Qt::AlignLeft );
112
        SFillVal = new QComboBox( true, Search, "SFillVal" );
113
        SFillVal->setEditable(false);
114
        SFillVal->insertItem( tr("None"));
115
        for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
116
        {
117
                pm.fill(doc->PageColors[it.key()].getRGBColor());
118
                SFillVal->insertItem(pm, it.key());
119
        }
120
        SFillVal->listBox()->setMinimumWidth(SFillVal->listBox()->maxItemWidth()+24);
121
        SFillVal->setCurrentText(doc->CurrTextFill);
122
        SFillVal->setEnabled(false);
123
        SearchLayout->addWidget( SFillVal, 5, 1 );
124
        SFillSVal = new ShadeButton(Search);
125
        SFillSVal->setEnabled(false);
126
        SearchLayout->addWidget( SFillSVal, 6, 1, Qt::AlignLeft );
127
        SStrokeVal = new QComboBox( true, Search, "SStrokeVal" );
128
        SStrokeVal->setEditable(false);
129
        SStrokeVal->insertItem( tr("None"));
130
        for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
131
        {
132
                pm.fill(doc->PageColors[it.key()].getRGBColor());
133
                SStrokeVal->insertItem(pm, it.key());
134
        }
135
        SStrokeVal->listBox()->setMinimumWidth(SStrokeVal->listBox()->maxItemWidth()+24);
136
        SStrokeVal->setCurrentText(doc->CurrTextStroke);
137
        SStrokeVal->setEnabled(false);
138
        SearchLayout->addWidget( SStrokeVal, 7, 1 );
139
        SStrokeSVal =  new ShadeButton(Search);
140
        SStrokeSVal->setEnabled(false);
141
        SearchLayout->addWidget( SStrokeSVal, 8, 1, Qt::AlignLeft );
142
        SelLayout->addWidget( Search );
164 Franz 143
 
356 Franz 144
        Replace = new QGroupBox( this, "Replace" );
145
        Replace->setTitle( tr( "Replace with:" ) );
146
        Replace->setColumnLayout(0, Qt::Vertical );
147
        Replace->layout()->setSpacing( 2 );
148
        Replace->layout()->setMargin( 5 );
149
        ReplaceLayout = new QGridLayout( Replace->layout() );
150
        ReplaceLayout->setAlignment( Qt::AlignTop );
151
        RText = new QCheckBox( Replace, "RText" );
152
        RText->setText( tr( "Text" ) );
153
        ReplaceLayout->addWidget( RText, 0, 0 );
154
        RStyle = new QCheckBox( Replace, "RStyle" );
155
        RStyle->setText( tr( "Paragraph Style" ) );
156
        ReplaceLayout->addWidget( RStyle, 1, 0 );
157
        RFont = new QCheckBox( Replace, "RFont" );
158
        RFont->setText( tr( "Font" ) );
159
        ReplaceLayout->addWidget( RFont, 2, 0 );
160
        RSize = new QCheckBox( Replace, "RSize" );
161
        RSize->setText( tr( "Font Size" ) );
162
        ReplaceLayout->addWidget( RSize, 3, 0 );
163
        REffect = new QCheckBox( Replace, "REffect" );
164
        REffect->setText( tr( "Font Effects" ) );
165
        ReplaceLayout->addWidget( REffect, 4, 0 );
166
        RFill = new QCheckBox( Replace, "RFill" );
167
        RFill->setText( tr( "Fill Color" ) );
168
        ReplaceLayout->addWidget( RFill, 5, 0 );
169
        RFillS = new QCheckBox( Replace, "RFillS" );
170
        RFillS->setText( tr( "Fill Shade" ) );
171
        ReplaceLayout->addWidget( RFillS, 6, 0 );
172
        RStroke = new QCheckBox( Replace, "RStroke" );
173
        RStroke->setText( tr( "Stroke Color" ) );
174
        ReplaceLayout->addWidget( RStroke, 7, 0 );
175
        RStrokeS = new QCheckBox( Replace, "RStrokeS" );
176
        RStrokeS->setText( tr( "Stroke Shade" ) );
177
        ReplaceLayout->addWidget( RStrokeS, 8, 0 );
178
        RTextVal = new QLineEdit( Replace, "RTextVal" );
179
        RTextVal->setEnabled(false);
180
        ReplaceLayout->addWidget( RTextVal, 0, 1 );
181
        RStyleVal = new QComboBox( true, Replace, "RStyleVal" );
182
        RStyleVal->setEditable(false);
183
        for (uint a = 0; a < ar_sty; ++a)
184
                RStyleVal->insertItem(tmp_sty[a]);
1065 cbradney 185
        if (doc->docParagraphStyles.count() > 5)
356 Franz 186
        {
1065 cbradney 187
                for (uint x = 5; x < doc->docParagraphStyles.count(); ++x)
188
                        RStyleVal->insertItem(doc->docParagraphStyles[x].Vname);
168 Franz 189
        }
356 Franz 190
        RStyleVal->listBox()->setMinimumWidth(RStyleVal->listBox()->maxItemWidth()+24);
1065 cbradney 191
        RStyleVal->setCurrentItem(doc->currentParaStyle);
356 Franz 192
        RStyleVal->setEnabled(false);
193
        ReplaceLayout->addWidget( RStyleVal, 1, 1 );
194
        RFontVal = new FontCombo(Replace, Prefs);
195
        RFontVal->setMaximumSize(190, 30);
196
        RFontVal->setCurrentText(doc->CurrFont);
197
        RFontVal->setEnabled(false);
198
        ReplaceLayout->addWidget( RFontVal, 2, 1 );
199
        RSizeVal = new MSpinBox( Replace, 1 );
200
        RSizeVal->setSuffix( tr( " pt" ) );
201
        RSizeVal->setMinValue( 1 );
202
        RSizeVal->setMaxValue( 1024 );
203
        RSizeVal->setValue( doc->CurrFontSize / 10.0 );
204
        RSizeVal->setEnabled(false);
205
        ReplaceLayout->addWidget( RSizeVal, 3, 1 );
206
        REffVal = new StyleSelect( Replace );
207
        REffVal->setStyle(0);
208
        REffVal->setEnabled(false);
209
        ReplaceLayout->addWidget( REffVal, 4, 1, Qt::AlignLeft );
210
        RFillVal = new QComboBox( true, Replace, "RFillVal" );
211
        RFillVal->setEditable(false);
212
        RFillVal->insertItem( tr("None"));
213
        for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
168 Franz 214
        {
356 Franz 215
                pm.fill(doc->PageColors[it.key()].getRGBColor());
216
                RFillVal->insertItem(pm, it.key());
168 Franz 217
        }
356 Franz 218
        RFillVal->listBox()->setMinimumWidth(RFillVal->listBox()->maxItemWidth()+24);
219
        RFillVal->setCurrentText(doc->CurrTextFill);
220
        RFillVal->setEnabled(false);
221
        ReplaceLayout->addWidget( RFillVal, 5, 1 );
222
        RFillSVal = new ShadeButton(Replace);
223
        RFillSVal->setEnabled(false);
224
        ReplaceLayout->addWidget( RFillSVal, 6, 1, Qt::AlignLeft );
225
        RStrokeVal = new QComboBox( true, Replace, "RStrokeVal" );
226
        RStrokeVal->setEditable(false);
227
        RStrokeVal->insertItem( tr("None"));
228
        for (it = doc->PageColors.begin(); it != doc->PageColors.end(); ++it)
229
        {
230
                pm.fill(doc->PageColors[it.key()].getRGBColor());
231
                RStrokeVal->insertItem(pm, it.key());
232
        }
233
        RStrokeVal->listBox()->setMinimumWidth(RStrokeVal->listBox()->maxItemWidth()+24);
234
        RStrokeVal->setCurrentText(doc->CurrTextStroke);
235
        RStrokeVal->setEnabled(false);
236
        ReplaceLayout->addWidget( RStrokeVal, 7, 1 );
237
        RStrokeSVal = new ShadeButton(Replace);;
238
        RStrokeSVal->setEnabled(false);
239
        ReplaceLayout->addWidget( RStrokeSVal, 8, 1, Qt::AlignLeft );
240
        SelLayout->addWidget( Replace );
241
        SearchReplaceLayout->addLayout( SelLayout );
164 Franz 242
 
189 Franz 243
        OptsLayout = new QHBoxLayout( 0, 0, 6, "OptsLayout");
348 Franz 244
        Word = new QCheckBox( tr( "&Whole Word" ), this, "Word" );
189 Franz 245
        if (mode)
246
                Word->setEnabled(false);
247
        OptsLayout->addWidget( Word );
348 Franz 248
        CaseIgnore = new QCheckBox( tr( "&Ignore Case" ), this, "CaseIgnore" );
189 Franz 249
        if (mode)
250
                CaseIgnore->setEnabled(false);
251
        OptsLayout->addWidget( CaseIgnore );
252
        SearchReplaceLayout->addLayout( OptsLayout );
173 Franz 253
 
189 Franz 254
        ButtonsLayout = new QHBoxLayout( 0, 0, 4, "ButtonsLayout");
348 Franz 255
        DoSearch = new QPushButton( tr( "&Search" ), this, "DoSearch" );
189 Franz 256
        DoSearch->setDefault( true );
257
        ButtonsLayout->addWidget( DoSearch );
348 Franz 258
        DoReplace = new QPushButton( tr( "&Replace" ), this, "DoReplace" );
189 Franz 259
        DoReplace->setEnabled(false);
260
        ButtonsLayout->addWidget( DoReplace );
348 Franz 261
        AllReplace = new QPushButton( tr( "Replace &All" ), this, "DoReplace" );
189 Franz 262
        AllReplace->setEnabled(false);
263
        ButtonsLayout->addWidget( AllReplace );
843 tsoots 264
        clearButton = new QPushButton(tr("C&lear"), this, "clearButton");
265
        ButtonsLayout->addWidget(clearButton);
348 Franz 266
        Leave = new QPushButton( tr( "&Close" ), this, "Leave" );
189 Franz 267
        ButtonsLayout->addWidget( Leave );
268
        SearchReplaceLayout->addLayout( ButtonsLayout );
164 Franz 269
 
189 Franz 270
        resize(minimumSizeHint());
164 Franz 271
 
189 Franz 272
 // signals and slots connections
843 tsoots 273
        connect( Leave, SIGNAL( clicked() ), this, SLOT( writePrefs() ) );
189 Franz 274
        connect( DoSearch, SIGNAL( clicked() ), this, SLOT( slotSearch() ) );
275
        connect( DoReplace, SIGNAL( clicked() ), this, SLOT( slotReplace() ) );
276
        connect( AllReplace, SIGNAL( clicked() ), this, SLOT( slotReplaceAll() ) );
356 Franz 277
        connect( SText, SIGNAL( clicked() ), this, SLOT( enableTxSearch() ) );
278
        connect( SStyle, SIGNAL( clicked() ), this, SLOT( enableStyleSearch() ) );
279
        connect( SFont, SIGNAL( clicked() ), this, SLOT( enableFontSearch() ) );
280
        connect( SSize, SIGNAL( clicked() ), this, SLOT( enableSizeSearch() ) );
281
        connect( SEffect, SIGNAL( clicked() ), this, SLOT( enableEffSearch() ) );
282
        connect( SFill, SIGNAL( clicked() ), this, SLOT( enableFillSearch() ) );
283
        connect( SFillS, SIGNAL( clicked() ), this, SLOT( enableFillSSearch() ) );
284
        connect( SStrokeS, SIGNAL( clicked() ), this, SLOT( enableStrokeSSearch() ) );
285
        connect( SStroke, SIGNAL( clicked() ), this, SLOT( enableStrokeSearch() ) );
286
        connect( RText, SIGNAL( clicked() ), this, SLOT( enableTxReplace() ) );
287
        connect( RStyle, SIGNAL( clicked() ), this, SLOT( enableStyleReplace() ) );
288
        connect( RFont, SIGNAL( clicked() ), this, SLOT( enableFontReplace() ) );
289
        connect( RSize, SIGNAL( clicked() ), this, SLOT( enableSizeReplace() ) );
290
        connect( REffect, SIGNAL( clicked() ), this, SLOT( enableEffReplace() ) );
291
        connect( RFill, SIGNAL( clicked() ), this, SLOT( enableFillReplace() ) );
292
        connect( RStroke, SIGNAL( clicked() ), this, SLOT( enableStrokeReplace() ) );
293
        connect( RFillS, SIGNAL( clicked() ), this, SLOT( enableFillSReplace() ) );
294
        connect( RStrokeS, SIGNAL( clicked() ), this, SLOT( enableStrokeSReplace() ) );
843 tsoots 295
        connect(clearButton, SIGNAL(clicked()), this, SLOT(clear()));
164 Franz 296
 
189 Franz 297
 // tab order
356 Franz 298
        setTabOrder( SText, SStyle );
299
        setTabOrder( SStyle, SFont );
300
        setTabOrder( SFont, SSize );
301
        setTabOrder( SSize, SEffect );
302
        setTabOrder( SEffect, SFill );
303
        setTabOrder( SFill, SStroke );
304
        setTabOrder( SStroke, STextVal );
305
        setTabOrder( STextVal, SStyleVal );
306
        setTabOrder( SStyleVal, SFontVal );
307
        setTabOrder( SFontVal, SSizeVal );
308
        setTabOrder( SSizeVal, SEffVal );
309
        setTabOrder( SEffVal, SFillVal );
310
        setTabOrder( SFillVal, SStrokeVal );
311
        setTabOrder( SStrokeVal, RText );
312
        setTabOrder( RText, RStyle );
313
        setTabOrder( RStyle, RFont );
314
        setTabOrder( RFont, RSize );
315
        setTabOrder( RSize, REffect );
316
        setTabOrder( REffect, RFill );
317
        setTabOrder( RFill, RStroke );
318
        setTabOrder( RStroke, RTextVal );
319
        setTabOrder( RTextVal, RStyleVal );
320
        setTabOrder( RStyleVal, RFontVal );
321
        setTabOrder( RFontVal, RSizeVal );
322
        setTabOrder( RSizeVal, REffVal );
323
        setTabOrder( REffVal, RFillVal );
324
        setTabOrder( RFillVal, RStrokeVal );
325
        setTabOrder( RStrokeVal, Word );
326
        setTabOrder( Word, CaseIgnore );
327
        setTabOrder( CaseIgnore, DoSearch );
328
        setTabOrder( DoSearch, DoReplace );
329
        setTabOrder( DoReplace, AllReplace );
330
        setTabOrder( AllReplace, Leave );
843 tsoots 331
 
332
        prefs = prefsFile->getContext("SearchReplace");
333
        readPrefs();
164 Franz 334
}
335
 
336
void SearchReplace::slotSearch()
337
{
189 Franz 338
        if (SMode)
456 fschmid 339
                ScApp->view->slotDoCurs(false);
357 Franz 340
        slotDoSearch();
341
        if (SMode)
189 Franz 342
        {
456 fschmid 343
                ScApp->view->slotDoCurs(true);
344
                ScApp->view->RefreshItem(Item);
189 Franz 345
        }
169 Franz 346
}
347
 
348
void SearchReplace::slotDoSearch()
349
{
164 Franz 350
        DoReplace->setEnabled(false);
351
        AllReplace->setEnabled(false);
356 Franz 352
        if (SMode)
353
        {
1065 cbradney 354
                for (uint a = 0; a < Item->itemText.count(); ++a)
355
                        Item->itemText.at(a)->cselect = false;
356 Franz 356
                Item->HasSel = false;
357
        }
164 Franz 358
        QString fCol = "";
359
        QString sCol = "";
360
        QString sFont = "";
361
        QString sText = "";
166 Franz 362
        NotFound = true;
164 Franz 363
        int sStyle = 0;
364
        int sSize = 0;
167 Franz 365
        int sEff = 0;
173 Franz 366
        int sFillSh = 100;
367
        int sStrokeSh = 100;
164 Franz 368
        bool rep = false;
369
        bool found = true;
167 Franz 370
        if ((RFill->isChecked()) || (RStroke->isChecked()) || (RStyle->isChecked()) || (RFont->isChecked())
173 Franz 371
                || (RStrokeS->isChecked()) || (RFillS->isChecked()) || (RSize->isChecked()) || (RText->isChecked())
372
                || (REffect->isChecked()))
164 Franz 373
                rep = true;
374
        if (SText->isChecked())
375
                sText = STextVal->text();
376
        if (CaseIgnore->isChecked())
377
                sText = sText.lower();
167 Franz 378
        if (SEffect->isChecked())
379
                sEff = SEffVal->getStyle();
164 Franz 380
        if (SFill->isChecked())
381
                fCol = SFillVal->currentText();
173 Franz 382
        if (SFillS->isChecked())
383
                sFillSh = SFillSVal->getValue();
164 Franz 384
        if (SStroke->isChecked())
385
                sCol = SStrokeVal->currentText();
173 Franz 386
        if (SStrokeS->isChecked())
387
                sStrokeSh = SStrokeSVal->getValue();
164 Franz 388
        if (SFont->isChecked())
389
                sFont = SFontVal->currentText();
390
        if (SStyle->isChecked())
391
                sStyle = SStyleVal->currentItem();
392
        if (SSize->isChecked())
393
                sSize = qRound(SSizeVal->value() * 10);
394
        if (sText.length() > 0)
395
                found = false;
396
        uint inde = 0;
397
        uint as = Item->CPos;
398
        ReplStart = as;
173 Franz 399
        uint a;
356 Franz 400
        if (SMode)
168 Franz 401
        {
1065 cbradney 402
                for (a = as; a < Item->itemText.count(); ++a)
164 Franz 403
                {
356 Franz 404
                        if (SText->isChecked())
405
                        {
1065 cbradney 406
                                QString chx = Item->itemText.at(a)->ch;
356 Franz 407
                                if (CaseIgnore->isChecked())
408
                                        chx = chx.lower();
409
                                found = chx == sText.mid(inde, 1) ? true : false;
410
                                if ((Word->isChecked()) && (inde == 0) && (chx[0].isSpace()))
411
                                        found = true;
412
                        }
413
                        else
166 Franz 414
                                found = true;
356 Franz 415
                        if (SSize->isChecked())
167 Franz 416
                        {
1065 cbradney 417
                                if (Item->itemText.at(a)->csize != sSize)
356 Franz 418
                                        found = false;
167 Franz 419
                        }
356 Franz 420
                        if (SFont->isChecked())
168 Franz 421
                        {
1789 fschmid 422
                                if (Item->itemText.at(a)->cfont->SCName != sFont)
356 Franz 423
                                        found = false;
168 Franz 424
                        }
356 Franz 425
                        if (SStyle->isChecked())
168 Franz 426
                        {
1065 cbradney 427
                                if (Item->itemText.at(a)->cab != sStyle)
356 Franz 428
                                        found = false;
429
                        }
430
                        if (SStroke->isChecked())
431
                        {
1065 cbradney 432
                                if (Item->itemText.at(a)->cstroke != sCol)
356 Franz 433
                                        found = false;
434
                        }
435
                        if (SStrokeS->isChecked())
436
                        {
1065 cbradney 437
                                if (Item->itemText.at(a)->cshade2 != sStrokeSh)
356 Franz 438
                                        found = false;
439
                        }
440
                        if (SFillS->isChecked())
441
                        {
1065 cbradney 442
                                if (Item->itemText.at(a)->cshade != sFillSh)
356 Franz 443
                                        found = false;
444
                        }
445
                        if (SEffect->isChecked())
168 Franz 446
                                {
2188 fschmid 447
                                if ((Item->itemText.at(a)->cstyle & 1919) != sEff)
356 Franz 448
                                        found = false;
168 Franz 449
                                }
356 Franz 450
                        if (SFill->isChecked())
451
                        {                      
1065 cbradney 452
                                if (Item->itemText.at(a)->ccolor != fCol)
356 Franz 453
                                        found = false;
454
                        }
455
                        if (found)
456
                        {
1065 cbradney 457
                                Item->itemText.at(a)->cselect = true;
356 Franz 458
                                Item->HasSel = true;
459
                                if (rep)
168 Franz 460
                                {
356 Franz 461
                                        DoReplace->setEnabled(true);
462
                                        AllReplace->setEnabled(true);
463
                                }
464
                                Item->CPos = a+1;
465
                                if (SText->isChecked())
466
                                {
467
                                        if (inde == 0)
468
                                                ReplStart = a;
469
                                        inde++;
1065 cbradney 470
                                        if ((Word->isChecked()) && (inde == 1) && (Item->itemText.at(a)->ch[0].isSpace()))
356 Franz 471
                                        {
472
                                                inde--;
1065 cbradney 473
                                                Item->itemText.at(a)->cselect = false;
356 Franz 474
                                        }
475
                                        if ((Word->isChecked()) && (inde == sText.length()) &&
1065 cbradney 476
                                                (!Item->itemText.at(QMIN(Item->MaxChars-1,a+1))->ch[0].isSpace()))
356 Franz 477
                                        {
478
                                                for (uint xx = ReplStart; xx < a+1; ++xx)
1065 cbradney 479
                                                        Item->itemText.at(QMIN(xx,Item->MaxChars-1))->cselect = false;
356 Franz 480
                                                Item->HasSel = false;
481
                                                inde = 0;
482
                                                found = false;
483
                                        }
484
                                        else
485
                                        {
486
                                                if (inde == sText.length())
487
                                                        break;
488
                                        }
489
                                }
490
                                else
491
                                        break;
492
                        }
493
                        else
494
                        {
495
                                if (SText->isChecked())
496
                                {
166 Franz 497
                                        for (uint xx = ReplStart; xx < a+1; ++xx)
1065 cbradney 498
                                                Item->itemText.at(QMIN(xx,Item->MaxChars-1))->cselect = false;
166 Franz 499
                                        Item->HasSel = false;
168 Franz 500
                                }
356 Franz 501
                                inde = 0;
168 Franz 502
                        }
503
                }
1065 cbradney 504
                if ((!found) || (a == Item->itemText.count()))
168 Franz 505
                {
356 Franz 506
                        Doc->DoDrawing = true;
456 fschmid 507
                        ScApp->view->RefreshItem(Item);
356 Franz 508
                        DoReplace->setEnabled(false);
509
                        AllReplace->setEnabled(false);
2150 cbradney 510
                        QMessageBox::information(this, tr("Search/Replace"), tr("Search finished"), tr("&OK"));
356 Franz 511
                        Item->CPos = 0;
512
                        NotFound = false;
513
                }
514
        }
515
        else
516
        {
517
                if (ScApp->CurrStED != NULL)
518
                {
357 Franz 519
                        int p, i;
520
                        ScApp->CurrStED->Editor->getCursorPosition(&p, &i);
521
                        uint inde = 0;
522
                        int as = i;
523
                        uint fpa = p;
524
                        int fch = i;
525
                        found = false;
356 Franz 526
                        if (ScApp->CurrStED->Editor->StyledText.count() != 0)
164 Franz 527
                        {
357 Franz 528
                                for (uint pa = p; pa < ScApp->CurrStED->Editor->StyledText.count(); ++pa)
356 Franz 529
                                {
530
                                        SEditor::ChList *chars;
531
                                        chars = ScApp->CurrStED->Editor->StyledText.at(pa);
357 Franz 532
                                        if (SText->isChecked())
356 Franz 533
                                        {
357 Franz 534
                                                if (Word->isChecked())
356 Franz 535
                                                {
357 Franz 536
                                                        QRegExp rx( "(\\b"+sText+"\\b)" );
356 Franz 537
                                                        if (CaseIgnore->isChecked())
357 Franz 538
                                                                as = rx.search( ScApp->CurrStED->Editor->text(pa).lower(), i );
539
                                                        else
540
                                                                as = rx.search( ScApp->CurrStED->Editor->text(pa), i );
356 Franz 541
                                                }
542
                                                else
357 Franz 543
                                                {
544
                                                        if (CaseIgnore->isChecked())
545
                                                                as = ScApp->CurrStED->Editor->text(pa).lower().find(sText, i);
546
                                                        else
547
                                                                as = ScApp->CurrStED->Editor->text(pa).find(sText, i);
548
                                                }
549
                                                if (as != -1)
550
                                                {
551
                                                        fch = as;
552
                                                        fpa = pa;
356 Franz 553
                                                        found = true;
357 Franz 554
                                                        inde = 0;
555
                                                        for (uint ap = 0; ap < sText.length(); ++ap)
356 Franz 556
                                                        {
357 Franz 557
                                                                struct PtiSmall *hg;
558
                                                                hg = chars->at(as+ap);
559
                                                                if ((SSize->isChecked()) && (hg->csize != sSize))
560
                                                                        found = false;
561
                                                                if ((SFont->isChecked()) && (hg->cfont != sFont))
562
                                                                        found = false;
563
                                                                if ((SStyle->isChecked()) && (hg->cab != sStyle))
564
                                                                        found = false;
565
                                                                if ((SStroke->isChecked()) && (hg->cstroke != sCol))
566
                                                                        found = false;
567
                                                                if ((SStrokeS->isChecked()) && (hg->cshade2 != sStrokeSh))
568
                                                                        found = false;
569
                                                                if ((SFillS->isChecked()) && (hg->cshade != sFillSh))
570
                                                                        found = false;
2188 fschmid 571
                                                                if ((SEffect->isChecked()) && ((hg->cstyle & 1919) != sEff))
357 Franz 572
                                                                        found = false;
573
                                                                if ((SFill->isChecked()) && (hg->ccolor != fCol))
574
                                                                        found = false;
356 Franz 575
                                                                inde++;
576
                                                        }
357 Franz 577
                                                        i = as + inde;
578
                                                        if (found)
356 Franz 579
                                                                break;
580
                                                }
357 Franz 581
                                                else
582
                                                {
583
                                                        i = 0;
584
                                                        inde = 0;
585
                                                }
356 Franz 586
                                        }
357 Franz 587
                                        else
588
                                        {
589
                                                for (uint e = i; e < chars->count(); ++e)
590
                                                {
591
                                                        found = true;
592
                                                        inde = 1;
593
                                                        struct PtiSmall *hg;
594
                                                        hg = chars->at(e);
595
                                                        if ((SSize->isChecked()) && (hg->csize != sSize))
596
                                                                found = false;
597
                                                        if ((SFont->isChecked()) && (hg->cfont != sFont))
598
                                                                found = false;
599
                                                        if ((SStyle->isChecked()) && (hg->cab != sStyle))
600
                                                                found = false;
601
                                                        if ((SStroke->isChecked()) && (hg->cstroke != sCol))
602
                                                                found = false;
603
                                                        if ((SStrokeS->isChecked()) && (hg->cshade2 != sStrokeSh))
604
                                                                found = false;
605
                                                        if ((SFillS->isChecked()) && (hg->cshade != sFillSh))
606
                                                                found = false;
2188 fschmid 607
                                                        if ((SEffect->isChecked()) && ((hg->cstyle & 1919) != sEff))
357 Franz 608
                                                                found = false;
609
                                                        if ((SFill->isChecked()) && (hg->ccolor != fCol))
610
                                                                found = false;
611
                                                        if (found)
612
                                                        {
613
                                                                fch = e;
614
                                                                fpa = pa;
615
                                                                break;
616
                                                        }
617
                                                }
618
                                                if (found)
619
                                                        break;
620
                                                else
621
                                                        i = 0;
622
                                        }
356 Franz 623
                                }
357 Franz 624
                                if (found)
625
                                {
626
                                        ScApp->CurrStED->Editor->setSelection(fpa, fch, fpa, fch+inde);
627
                                        ScApp->CurrStED->updateProps(fpa, fch);
628
                                        ScApp->CurrStED->Editor->setCursorPosition(fpa, fch+inde);
629
                                        if (rep)
630
                                        {
631
                                                DoReplace->setEnabled(true);
632
                                                AllReplace->setEnabled(true);
633
                                        }
634
                                }
635
                                else
636
                                {
2150 cbradney 637
                                        QMessageBox::information(this, tr("Search/Replace"), tr("Search finished"), tr("&OK"));
357 Franz 638
                                        NotFound = false;
639
                                        ScApp->CurrStED->Editor->removeSelection();
640
                                        ScApp->CurrStED->Editor->setCursorPosition(0, 0);
641
                                }
168 Franz 642
                        }
164 Franz 643
                }
168 Franz 644
        }
169 Franz 645
}
646
 
647
void SearchReplace::slotReplace()
648
{
189 Franz 649
        if (SMode)
456 fschmid 650
                ScApp->view->slotDoCurs(false);
357 Franz 651
        slotDoReplace();
652
        if (SMode)
189 Franz 653
        {
456 fschmid 654
                ScApp->view->slotDoCurs(true);
655
                ScApp->view->RefreshItem(Item);
189 Franz 656
        }
164 Franz 657
}
658
 
169 Franz 659
void SearchReplace::slotDoReplace()
164 Franz 660
{
357 Franz 661
        if (SMode)
168 Franz 662
        {
357 Franz 663
                QString repl, sear;
664
                uint cs, cx;
1065 cbradney 665
                struct ScText *hg;
357 Franz 666
                if (RText->isChecked())
168 Franz 667
                {
357 Franz 668
                        repl = RTextVal->text();
669
                        sear = STextVal->text();
670
                        if (sear.length() == repl.length())
166 Franz 671
                        {
672
                                for (cs = 0; cs < sear.length(); ++cs)
1065 cbradney 673
                                        Item->itemText.at(ReplStart+cs)->ch = repl[cs];
357 Franz 674
                        }
675
                        else
676
                        {
677
                                if (sear.length() < repl.length())
168 Franz 678
                                {
357 Franz 679
                                        for (cs = 0; cs < sear.length(); ++cs)
1065 cbradney 680
                                                Item->itemText.at(ReplStart+cs)->ch = repl[cs];
357 Franz 681
                                        for (cx = cs; cx < repl.length(); ++cx)
168 Franz 682
                                        {
1065 cbradney 683
                                                hg = new ScText;
357 Franz 684
                                                hg->ch = repl[cx];
685
                                                if (RSize->isChecked())
686
                                                        hg->csize = qRound(RSizeVal->value() * 10.0);
687
                                                else
688
                                                        hg->csize = Doc->CurrFontSize;
689
                                                if (RFill->isChecked())
690
                                                        hg->ccolor = RFillVal->currentText();
691
                                                else
692
                                                        hg->ccolor = Doc->CurrTextFill;
693
                                                hg->cshade = Doc->CurrTextFillSh;
694
                                                if (RStroke->isChecked())
695
                                                        hg->cstroke = RStrokeVal->currentText();
696
                                                else
697
                                                        hg->cstroke = Doc->CurrTextStroke;
698
                                                hg->cshade2 = Doc->CurrTextStrokeSh;
699
                                                hg->cscale = Doc->CurrTextScale;
700
                                                hg->cselect = true;
701
                                                hg->cstyle = Doc->CurrentStyle;
702
                                                if (RStyle->isChecked())
703
                                                        hg->cab = RStyleVal->currentItem();
704
                                                else
1065 cbradney 705
                                                        hg->cab = Doc->currentParaStyle;
706
                                                if (Doc->docParagraphStyles[hg->cab].Font != "")
357 Franz 707
                                                {
1789 fschmid 708
                                                        hg->cfont = (*Doc->AllFonts)[Doc->docParagraphStyles[hg->cab].Font];
1065 cbradney 709
                                                        hg->csize = Doc->docParagraphStyles[hg->cab].FontSize;
710
                                                        hg->cstyle = Doc->docParagraphStyles[hg->cab].FontEffect;
357 Franz 711
                                                }
712
                                                if (RFont->isChecked())
1789 fschmid 713
                                                        hg->cfont = (*Doc->AllFonts)[RFontVal->currentText()];
357 Franz 714
                                                else
1789 fschmid 715
                                                        hg->cfont = (*Doc->AllFonts)[Doc->CurrFont];
357 Franz 716
                                                hg->cextra = 0;
717
                                                hg->xp = 0;
718
                                                hg->yp = 0;
719
                                                hg->PRot = 0;
720
                                                hg->PtransX = 0;
721
                                                hg->PtransY = 0;
1789 fschmid 722
                                                Item->itemText.insert(ReplStart+cx, hg);
168 Franz 723
                                        }
357 Franz 724
                                        Item->CPos = ReplStart+cx;
168 Franz 725
                                }
357 Franz 726
                                else
727
                                {
728
                                        for (cs = 0; cs < repl.length(); ++cs)
1065 cbradney 729
                                                Item->itemText.at(ReplStart+cs)->ch = repl[cs];
357 Franz 730
                                        for (uint cxx = cs; cxx < sear.length(); ++cxx)
1065 cbradney 731
                                                Item->itemText.remove(ReplStart+cs);
357 Franz 732
                                        Item->CPos = ReplStart+cs;
733
                                }
168 Franz 734
                        }
166 Franz 735
                }
357 Franz 736
                if (RStyle->isChecked())
737
                        emit NewAbs(RStyleVal->currentItem());
738
                if (RFill->isChecked())
456 fschmid 739
                        ScApp->view->ItemTextBrush(RFillVal->currentText());
357 Franz 740
                if (RFillS->isChecked())
456 fschmid 741
                        ScApp->view->ItemTextBrushS(RFillSVal->getValue());
357 Franz 742
                if (RStroke->isChecked())
456 fschmid 743
                        ScApp->view->ItemTextPen(RStrokeVal->currentText());
357 Franz 744
                if (RStrokeS->isChecked())
456 fschmid 745
                        ScApp->view->ItemTextPenS(RStrokeSVal->getValue());
357 Franz 746
                if (RFont->isChecked())
747
                        emit NewFont(RFontVal->currentText());
748
                if (RSize->isChecked())
456 fschmid 749
                        ScApp->view->chFSize(qRound(RSizeVal->value() * 10.0));
357 Franz 750
                if (REffect->isChecked())
167 Franz 751
                        {
357 Franz 752
                        int s = REffVal->getStyle();
753
                        Doc->CurrentStyle = s;
1065 cbradney 754
                        if (Item->itemText.count() != 0)
167 Franz 755
                                {
1065 cbradney 756
                                for (uint a = 0; a < Item->itemText.count(); ++a)
167 Franz 757
                                        {
1065 cbradney 758
                                        if (Item->itemText.at(a)->cselect)
357 Franz 759
                                                {
2188 fschmid 760
                                                Item->itemText.at(a)->cstyle &= ~1919;
1065 cbradney 761
                                                Item->itemText.at(a)->cstyle |= s;
357 Franz 762
                                                }
167 Franz 763
                                        }
764
                                }
765
                        }
1065 cbradney 766
                for (uint a = 0; a < Item->itemText.count(); ++a)
767
                        Item->itemText.at(a)->cselect = false;
357 Franz 768
        }
769
        else
770
        {
771
                if (ScApp->CurrStED != NULL)
772
                {
773
                        if (RStyle->isChecked())
774
                                ScApp->CurrStED->newAlign(RStyleVal->currentItem());
775
                        if (RFill->isChecked())
776
                                ScApp->CurrStED->newTxFill(RFillVal->currentItem(), -1);
777
                        if (RFillS->isChecked())
778
                                ScApp->CurrStED->newTxFill(-1, RFillSVal->getValue());
779
                        if (RStroke->isChecked())
780
                                ScApp->CurrStED->newTxStroke(RStrokeVal->currentItem(), -1);
781
                        if (RStrokeS->isChecked())
782
                                ScApp->CurrStED->newTxStroke(-1, RStrokeSVal->getValue());
783
                        if (RFont->isChecked())
784
                                ScApp->CurrStED->newTxFont(RFontVal->currentText());
785
                        if (RSize->isChecked())
786
                                ScApp->CurrStED->newTxSize(RSizeVal->value());
787
                        if (REffect->isChecked())
788
                                ScApp->CurrStED->newTxStyle(REffVal->getStyle());
789
                        if (RText->isChecked())
790
                        {
791
                                disconnect(ScApp->CurrStED->Editor, SIGNAL(cursorPositionChanged(int, int)), ScApp->CurrStED, SLOT(updateProps(int, int)));
792
                                int PStart, PEnd, SelStart, SelEnd;
793
                                ScApp->CurrStED->Editor->getSelection(&PStart, &SelStart, &PEnd, &SelEnd);
794
                                ScApp->CurrStED->Editor->insChars(RTextVal->text());
795
                                ScApp->CurrStED->Editor->setSelection(PStart, SelStart, PEnd, SelEnd);
796
                                ScApp->CurrStED->Editor->removeSelectedText();
797
                                ScApp->CurrStED->Editor->setStyle(ScApp->CurrStED->Editor->CurrentStyle);
798
                                ScApp->CurrStED->Editor->setFarbe(ScApp->CurrStED->Editor->CurrTextFill, ScApp->CurrStED->Editor->CurrTextFillSh);
799
                                ScApp->CurrStED->Editor->insert(RTextVal->text());
800
                                connect(ScApp->CurrStED->Editor, SIGNAL(cursorPositionChanged(int, int)), ScApp->CurrStED, SLOT(updateProps(int, int)));
1065 cbradney 801
                                ScApp->CurrStED->newAlign(ScApp->CurrStED->Editor->currentParaStyle);
357 Franz 802
                        }
167 Franz 803
                }
357 Franz 804
        }
164 Franz 805
        DoReplace->setEnabled(false);
806
        AllReplace->setEnabled(false);
357 Franz 807
                slotDoSearch();
164 Franz 808
}
809
 
810
void SearchReplace::slotReplaceAll()
811
{
189 Franz 812
        if (SMode)
168 Franz 813
        {
456 fschmid 814
                ScApp->view->slotDoCurs(false);
189 Franz 815
                Doc->DoDrawing = false;
357 Franz 816
        }
817
        do
818
        {
819
                slotDoReplace();
820
//              slotDoSearch();
821
        }
822
        while (NotFound);
823
        if (SMode)
824
        {
189 Franz 825
                Doc->DoDrawing = true;
456 fschmid 826
                ScApp->view->slotDoCurs(true);
827
                ScApp->view->RefreshItem(Item);
168 Franz 828
        }
164 Franz 829
}
830
 
831
void SearchReplace::enableTxSearch()
832
{
833
        bool setter = SText->isChecked();
834
        STextVal->setEnabled(setter);
166 Franz 835
        Word->setEnabled(setter);
164 Franz 836
        CaseIgnore->setEnabled(setter);
357 Franz 837
        if (setter)
838
                STextVal->setFocus();
164 Franz 839
}
840
 
841
void SearchReplace::enableStyleSearch()
842
{
843
        SStyleVal->setEnabled(SStyle->isChecked());
844
}
845
 
846
void SearchReplace::enableFontSearch()
847
{
848
        SFontVal->setEnabled(SFont->isChecked());
849
}
850
 
851
void SearchReplace::enableSizeSearch()
852
{
853
        SSizeVal->setEnabled(SSize->isChecked());
854
}
855
 
167 Franz 856
void SearchReplace::enableEffSearch()
857
{
858
        SEffVal->setEnabled(SEffect->isChecked());
859
}
860
 
164 Franz 861
void SearchReplace::enableFillSearch()
862
{
863
        SFillVal->setEnabled(SFill->isChecked());
864
}
865
 
173 Franz 866
void SearchReplace::enableFillSSearch()
867
{
868
        SFillSVal->setEnabled(SFillS->isChecked());
869
}
870
 
164 Franz 871
void SearchReplace::enableStrokeSearch()
872
{
873
        SStrokeVal->setEnabled(SStroke->isChecked());
874
}
875
 
173 Franz 876
void SearchReplace::enableStrokeSSearch()
877
{
878
        SStrokeSVal->setEnabled(SStrokeS->isChecked());
879
}
880
 
164 Franz 881
void SearchReplace::enableTxReplace()
882
{
883
        RTextVal->setEnabled(RText->isChecked());
357 Franz 884
        if (RText->isChecked())
885
                RTextVal->setFocus();
164 Franz 886
}
887
 
888
void SearchReplace::enableStyleReplace()
889
{
890
        RStyleVal->setEnabled(RStyle->isChecked());
891
}
892
 
893
void SearchReplace::enableFontReplace()
894
{
895
        RFontVal->setEnabled(RFont->isChecked());
896
}
897
 
898
void SearchReplace::enableSizeReplace()
899
{
900
        RSizeVal->setEnabled(RSize->isChecked());
901
}
902
 
167 Franz 903
void SearchReplace::enableEffReplace()
904
{
905
        REffVal->setEnabled(REffect->isChecked());
906
}
907
 
164 Franz 908
void SearchReplace::enableFillReplace()
909
{
910
        RFillVal->setEnabled(RFill->isChecked());
911
}
912
 
173 Franz 913
void SearchReplace::enableFillSReplace()
914
{
915
        RFillSVal->setEnabled(RFillS->isChecked());
916
}
917
 
164 Franz 918
void SearchReplace::enableStrokeReplace()
919
{
920
        RStrokeVal->setEnabled(RStroke->isChecked());
921
}
922
 
173 Franz 923
void SearchReplace::enableStrokeSReplace()
924
{
925
        RStrokeSVal->setEnabled(RStrokeS->isChecked());
926
}
927
 
843 tsoots 928
void SearchReplace::clear()
929
{
930
 
931
        SStroke->setChecked(false);
932
        SFill->setChecked(false);
933
        SStrokeS->setChecked(false);
934
        SFillS->setChecked(false);
935
        SSize->setChecked(false);
936
        SFont->setChecked(false);
937
        SStyle->setChecked(false);
938
        SText->setChecked(false);
939
        SEffect->setChecked(false);
940
        REffect->setChecked(false);
941
        STextVal->setText("");
1065 cbradney 942
        SStyleVal->setCurrentItem(Doc->currentParaStyle);
843 tsoots 943
        SFontVal->setCurrentText(Doc->CurrFont);
944
        SSizeVal->setValue(Doc->CurrFontSize / 10.0);
945
        SFillVal->setCurrentText(Doc->CurrTextFill);
946
        SStrokeVal->setCurrentText(Doc->CurrTextStroke);
947
        RStroke->setChecked(false);
948
        RStrokeS->setChecked(false);
949
        RFill->setChecked(false);
950
        RFillS->setChecked(false);
951
        RSize->setChecked(false);
952
        RFont->setChecked(false);
953
        RStyle->setChecked(false);
954
        RText->setChecked(false);
955
        RTextVal->setText("");
1065 cbradney 956
        RStyleVal->setCurrentItem(Doc->currentParaStyle);
843 tsoots 957
        RFontVal->setCurrentText(Doc->CurrFont);
958
        RSizeVal->setValue(Doc->CurrFontSize / 10.0);
959
        RFillVal->setCurrentText(Doc->CurrTextFill);
960
        RStrokeVal->setCurrentText(Doc->CurrTextStroke);
961
        Word->setChecked(false);
962
        CaseIgnore->setChecked(false);
963
        enableTxSearch();
964
        enableStyleSearch();
965
        enableFontSearch();
966
        enableSizeSearch();
967
        enableEffSearch();
968
        enableFillSearch();
969
        enableFillSSearch();
970
        enableStrokeSearch();
971
        enableStrokeSSearch();
972
        enableTxReplace();
973
        enableStyleReplace();
974
        enableFontReplace();
975
        enableSizeReplace();
976
        enableEffReplace();
977
        enableFillReplace();
978
        enableFillSReplace();
979
        enableStrokeReplace();
980
        enableStrokeSReplace();
981
}
982
 
983
void SearchReplace::readPrefs()
984
{
985
        SStroke->setChecked(prefs->getBool("SStroke", false));
986
        SFill->setChecked(prefs->getBool("SFill", false));
987
        SStrokeS->setChecked(prefs->getBool("SStrokeS", false));
988
        SFillS->setChecked(prefs->getBool("SFillS", false));
989
        SSize->setChecked(prefs->getBool("SSize", false));
990
        SFont->setChecked(prefs->getBool("SFont", false));
991
        SStyle->setChecked(prefs->getBool("SStyle", false));
992
        SText->setChecked(prefs->getBool("SText", false));
993
        SEffect->setChecked(prefs->getBool("SEffect", false));
994
        REffect->setChecked(prefs->getBool("REffect", false));
995
        STextVal->setText(prefs->get("STextVal", ""));
1065 cbradney 996
        int tmp = prefs->getInt("SStyleVal", Doc->currentParaStyle);
843 tsoots 997
        if (tmp < 0 || tmp >= SStyleVal->count())
998
                SStyleVal->setCurrentItem(0);
999
        else
1000
                SStyleVal->setCurrentItem(tmp);
1001
 
1002
        SFontVal->setCurrentText(prefs->get("SFontVal", Doc->CurrFont));
1003
        SSizeVal->setValue(prefs->getDouble("SSizeVal", Doc->CurrFontSize / 10.0));
1004
        SFillVal->setCurrentText(prefs->get("SFillVal", Doc->CurrTextFill));
1005
        SStrokeVal->setCurrentText(prefs->get("SStrokeVal", Doc->CurrTextStroke));
1006
        RStroke->setChecked(prefs->getBool("RStroke", false));
1007
        RStrokeS->setChecked(prefs->getBool("RStrokeS", false));
1008
        RFill->setChecked(prefs->getBool("RFill", false));
1009
        RFillS->setChecked(prefs->getBool("RFillS", false));
1010
        RSize->setChecked(prefs->getBool("RSize", false));
1011
        RFont->setChecked(prefs->getBool("RFont", false));
1012
        RStyle->setChecked(prefs->getBool("RStyle", false));
1013
        RText->setChecked(prefs->getBool("RText", false));
1014
        RTextVal->setText(prefs->get("RTextVal", ""));
1065 cbradney 1015
        tmp = prefs->getInt("RStyleVal", Doc->currentParaStyle);
843 tsoots 1016
        if (tmp < 0 || tmp >= RStyleVal->count())
1017
                RStyleVal->setCurrentItem(0);
1018
        else
1019
                RStyleVal->setCurrentItem(tmp);
1020
        RFontVal->setCurrentText(prefs->get("RFontVal", Doc->CurrFont));
1021
        RSizeVal->setValue(prefs->getDouble("RSizeVal", Doc->CurrFontSize / 10.0));
1022
        RFillVal->setCurrentText(prefs->get("RFillVal", Doc->CurrTextFill));
1023
        RStrokeVal->setCurrentText(prefs->get("RStrokeVal", Doc->CurrTextFill));
1024
        Word->setChecked(prefs->getBool("Word", false));
1025
        CaseIgnore->setChecked(prefs->getBool("CaseIgnore", false));
1026
        enableTxSearch();
1027
        enableStyleSearch();
1028
        enableFontSearch();
1029
        enableSizeSearch();
1030
        enableEffSearch();
1031
        enableFillSearch();
1032
        enableFillSSearch();
1033
        enableStrokeSearch();
1034
        enableStrokeSSearch();
1035
        enableTxReplace();
1036
        enableStyleReplace();
1037
        enableFontReplace();
1038
        enableSizeReplace();
1039
        enableEffReplace();
1040
        enableFillReplace();
1041
        enableFillSReplace();
1042
        enableStrokeReplace();
1043
        enableStrokeSReplace();
1044
}
1045
 
1046
void SearchReplace::writePrefs()
1047
{
1048
        prefs->set("SStroke", SStroke->isChecked());
1049
        prefs->set("SFill", SFill->isChecked());
1050
        prefs->set("SStrokeS", SStrokeS->isChecked());
1051
        prefs->set("SFillS", SFillS->isChecked());
1052
        prefs->set("SSize", SSize->isChecked());
1053
        prefs->set("SFont", SFont->isChecked());
1054
        prefs->set("SStyle", SStyle->isChecked());
1055
        prefs->set("SText", SText->isChecked());
1056
        prefs->set("SEffect", SEffect->isChecked());
1057
        prefs->set("REffect", REffect->isChecked());
1058
        prefs->set("STextVal", STextVal->text());
1059
        prefs->set("SStyleVal", SStyleVal->currentItem());
1060
        prefs->set("SFontVal", SFontVal->currentText());
1061
        prefs->set("SSizeVal", SSizeVal->value());
1062
        prefs->set("SFillVal", SFillVal->currentText());
1063
        prefs->set("SStrokeVal", SStrokeVal->currentText());
1064
        prefs->set("RStroke", RStroke->isChecked());
1065
        prefs->set("RStrokeS", RStrokeS->isChecked());
1066
        prefs->set("RFill", RFill->isChecked());
1067
        prefs->set("RFillS", RFillS->isChecked());
1068
        prefs->set("RSize", RSize->isChecked());
1069
        prefs->set("RFont", RFont->isChecked());
1070
        prefs->set("RStyle", RStyle->isChecked());
1071
        prefs->set("RText", RText->isChecked());
1072
        prefs->set("RTextVal", RTextVal->text());
1073
        prefs->set("RStyleVal", RStyleVal->currentText());
1074
        prefs->set("RFontVal", RFontVal->currentText());
1075
        prefs->set("RSizeVal", RSizeVal->value());
1076
        prefs->set("RFillVal", RFillVal->currentText());
1077
        prefs->set("RStrokeVal", RStrokeVal->currentText());
1078
        prefs->set("Word", Word->isChecked());
1079
        prefs->set("CaseIgnore", CaseIgnore->isChecked());
1080
        accept();
1081
}