Subversion Repositories Scribus

Rev

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

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