Subversion Repositories Scribus

Rev

Rev 14678 | Rev 16164 | Go to most recent revision | 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
*/
14763 cbradney 7
 
3 paul 8
/***************************************************************************
9
                          customfdialog.cpp  -  description
10
                             -------------------
11
    begin                : Fri Nov 30 2001
12
    copyright            : (C) 2001 by Franz Schmid
13
    email                : Franz.Schmid@altmuehlnet.de
14
 ***************************************************************************/
15
 
16
/***************************************************************************
17
 *                                                                         *
18
 *   This program is free software; you can redistribute it and/or modify  *
19
 *   it under the terms of the GNU General Public License as published by  *
20
 *   the Free Software Foundation; either version 2 of the License, or     *
21
 *   (at your option) any later version.                                   *
22
 *                                                                         *
23
 ***************************************************************************/
24
 
10181 cbradney 25
#include <QCheckBox>
26
#include <QComboBox>
27
#include <QDir>
10114 fschmid 28
#include <QFileInfo>
10181 cbradney 29
#include <QFrame>
30
#include <QHBoxLayout>
31
#include <QIcon>
8539 subik 32
#include <QImageReader>
10181 cbradney 33
#include <QLabel>
10114 fschmid 34
#include <QPainter>
35
#include <QPixmap>
36
#include <QPushButton>
10181 cbradney 37
#include <QTextCodec>
10114 fschmid 38
#include <QVBoxLayout>
5781 cbradney 39
 
10181 cbradney 40
#include "customfdialog.h"
41
 
14659 fschmid 42
#include "fileloader.h"
43
#include "loadsaveplugin.h"
44
#include "../plugins/formatidlist.h"
14665 fschmid 45
#include "prefsmanager.h"
10242 subik 46
#include "scfilewidget.h"
5781 cbradney 47
#include "cmsettings.h"
10181 cbradney 48
#include "commonstrings.h"
3543 avox 49
#include "sccombobox.h"
10181 cbradney 50
#include "scimage.h"
1555 fschmid 51
#include "scribusstructs.h"
11731 jghali 52
#include "scslainforeader.h"
14677 fschmid 53
#include "stencilreader.h"
54
#include "scpreview.h"
14665 fschmid 55
#include "units.h"
4631 cbradney 56
#include "util.h"
10203 cbradney 57
#include "util_color.h"
10212 cbradney 58
#include "util_formats.h"
10200 cbradney 59
#include "util_icon.h"
2534 craig 60
 
10181 cbradney 61
 
10203 cbradney 62
 
3 paul 63
extern QString DocDir;
64
 
10114 fschmid 65
ImIconProvider::ImIconProvider() : QFileIconProvider()
3 paul 66
{
161 Franz 67
        fmts.clear();
7420 fschmid 68
        QString tmp[] = {"eps", "epsi", "gif", "png", "jpg", "jpeg", "xpm", "tif", "tiff", "bmp", "pbm", "pgm", "ppm", "xbm", "xpm", "psd", "pat"};
167 Franz 69
        size_t array = sizeof(tmp) / sizeof(*tmp);
70
        for (uint a = 0; a < array; ++a)
10114 fschmid 71
                fmts.append(tmp[a]);
72
        imagepm = QIcon(loadIcon("16/image-x-generic.png"));
73
        pspm = QIcon(loadIcon("postscript.png"));
74
        txtpm = QIcon(loadIcon("txt.png"));
75
        docpm = QIcon(loadIcon("doc.png"));
76
        pdfpm = QIcon(loadIcon("pdf.png"));
77
        oosxdpm = QIcon(loadIcon("ooo_draw.png"));
78
        oosxwpm = QIcon(loadIcon("ooo_writer.png"));
79
        vectorpm = QIcon(loadIcon("vectorgfx.png"));
3 paul 80
}
81
 
10114 fschmid 82
QIcon ImIconProvider::icon(const QFileInfo &fi) const
3 paul 83
{
14665 fschmid 84
        QStringList allFormatsV = LoadSavePlugin::getExtensionsForImport(FORMATID_ODGIMPORT);
10114 fschmid 85
        QString ext = fi.suffix().toLower();
86
        if (ext.isEmpty())
87
                return QFileIconProvider::icon(fi);
88
        if (fmts.contains(ext, Qt::CaseInsensitive))
89
                return imagepm;
3 paul 90
        else
161 Franz 91
        {
10114 fschmid 92
                ext = fi.completeSuffix().toLower();
93
                if (ext.endsWith("ps", Qt::CaseInsensitive))
94
                        return pspm;
95
                else if (ext.endsWith("txt", Qt::CaseInsensitive))
96
                        return txtpm;
97
                else if (ext.endsWith("scd", Qt::CaseInsensitive) || ext.endsWith("scd.gz", Qt::CaseInsensitive))
98
                        return docpm;
99
                else if (ext.endsWith("sla", Qt::CaseInsensitive) || ext.endsWith("sla.gz", Qt::CaseInsensitive))
100
                        return docpm;
101
                else if (ext.endsWith("pdf", Qt::CaseInsensitive))
102
                        return pdfpm;
103
                else if (ext.endsWith("sxd", Qt::CaseInsensitive))
104
                        return oosxdpm;
105
                else if (ext.endsWith("sxw", Qt::CaseInsensitive))
106
                        return oosxwpm;
14677 fschmid 107
                else if (allFormatsV.contains(ext) || ext.endsWith("sce", Qt::CaseInsensitive) || ext.endsWith("sml", Qt::CaseInsensitive) || ext.endsWith("shape", Qt::CaseInsensitive))
10114 fschmid 108
                        return vectorpm;
109
                else
110
                        return QFileIconProvider::icon(fi);
161 Franz 111
        }
10114 fschmid 112
        return QIcon();
3 paul 113
}
114
 
115
FDialogPreview::FDialogPreview(QWidget *pa) : QLabel(pa)
116
{
8539 subik 117
        setAlignment(Qt::AlignLeft | Qt::AlignTop);
10114 fschmid 118
        setFixedSize( QSize( 200, 200 ) );
3 paul 119
        setScaledContents( false );
120
        setFrameShape( QLabel::WinPanel );
121
        setFrameShadow( QLabel::Sunken );
311 Franz 122
        updtPix();
3 paul 123
}
124
 
311 Franz 125
void FDialogPreview::updtPix()
126
{
127
        QPixmap pm;
128
        QRect inside = contentsRect();
129
        pm = QPixmap(inside.width(), inside.height());
8539 subik 130
        pm.fill(Qt::white);
311 Franz 131
        setPixmap(pm);
132
}
133
 
3 paul 134
void FDialogPreview::GenPreview(QString name)
135
{
136
        QPixmap pm;
137
        QString Buffer = "";
12090 fschmid 138
        updtPix();
139
        if (name.isEmpty())
140
                return;
3 paul 141
        QFileInfo fi = QFileInfo(name);
142
        if (fi.isDir())
143
                return;
311 Franz 144
        int w = pixmap()->width();
145
        int h = pixmap()->height();
1505 fschmid 146
        bool mode = false;
10499 fschmid 147
        QString ext = fi.suffix().toLower();
13966 fschmid 148
        QString formatD(FormatsManager::instance()->extensionListForFormat(FormatsManager::IMAGESIMGFRAME, 1));
149
        QStringList formats = formatD.split("|");
6412 fschmid 150
        formats.append("pat");
14659 fschmid 151
 
14678 fschmid 152
        QStringList allFormatsV = LoadSavePlugin::getExtensionsForPreview(FORMATID_ODGIMPORT);
6808 fschmid 153
        if (ext.isEmpty())
154
                ext = getImageType(name);
8539 subik 155
        if (formats.contains(ext.toUtf8()))
161 Franz 156
        {
2004 fschmid 157
                ScImage im;
5781 cbradney 158
                //No doc to send data anyway, so no doc to get into scimage.
14170 jghali 159
                CMSettings cms(0, "", Intent_Perceptual);
14467 jghali 160
                cms.allowColorManagement(false);
161
                if (im.loadPicture(name, 1, cms, ScImage::Thumbnail, 72, &mode))
161 Franz 162
                {
3703 fschmid 163
                        int ix,iy;
164
                        if ((im.imgInfo.exifDataValid) && (!im.imgInfo.exifInfo.thumbnail.isNull()))
165
                        {
3706 fschmid 166
                                ix = im.imgInfo.exifInfo.width;
167
                                iy = im.imgInfo.exifInfo.height;
3703 fschmid 168
                        }
169
                        else
170
                        {
171
                                ix = im.width();
172
                                iy = im.height();
173
                        }
2004 fschmid 174
                        int xres = im.imgInfo.xres;
175
                        int yres = im.imgInfo.yres;
1915 fschmid 176
                        QString tmp = "";
177
                        QString tmp2 = "";
14659 fschmid 178
                        QImage im2 = im.scaled(w - 5, h - 44, Qt::KeepAspectRatio, Qt::SmoothTransformation);
1915 fschmid 179
                        QPainter p;
6020 fschmid 180
                        QBrush b(QColor(205,205,205), loadIcon("testfill.png"));
8539 subik 181
                        // Qt4 FIXME imho should be better
8702 fschmid 182
                        pm = *pixmap();
183
                        p.begin(&pm);
6020 fschmid 184
                        p.fillRect(0, 0, w, h-44, b);
185
                        p.fillRect(0, h-44, w, 44, QColor(255, 255, 255));
186
                        p.drawImage((w - im2.width()) / 2, (h - 44 - im2.height()) / 2, im2);
1915 fschmid 187
                        p.drawText(2, h-29, tr("Size:")+" "+tmp.setNum(ix)+" x "+tmp2.setNum(iy));
188
                        p.drawText(2, h-17, tr("Resolution:")+" "+tmp.setNum(xres)+" x "+tmp2.setNum(yres)+" "+ tr("DPI"));
189
                        QString cSpace;
11331 jghali 190
                        if ((extensionIndicatesPDF(ext) || extensionIndicatesEPSorPS(ext)) && (im.imgInfo.type != ImageType7))
1915 fschmid 191
                                cSpace = tr("Unknown");
192
                        else
10121 cbradney 193
                                cSpace=colorSpaceText(im.imgInfo.colorspace);
1915 fschmid 194
                        p.drawText(2, h-5, tr("Colorspace:")+" "+cSpace);
195
                        p.end();
8702 fschmid 196
                        setPixmap(pm);
1915 fschmid 197
                        repaint();
1798 fschmid 198
                }
161 Franz 199
        }
14659 fschmid 200
        else if (allFormatsV.contains(ext.toUtf8()))
201
        {
202
                FileLoader *fileLoader = new FileLoader(name);
203
                int testResult = fileLoader->TestFile();
204
                delete fileLoader;
205
                if ((testResult != -1) && (testResult >= FORMATID_ODGIMPORT))
206
                {
207
                        const FileFormat * fmt = LoadSavePlugin::getFormatById(testResult);
208
                        if( fmt )
209
                        {
210
                                QImage im = fmt->readThumbnail(name);
211
                                if (!im.isNull())
212
                                {
14665 fschmid 213
                                        QString desc = tr("Size:")+" ";
214
                                        desc += value2String(im.text("XSize").toDouble(), PrefsManager::instance()->appPrefs.docSetupPrefs.docUnitIndex, true, true);
215
                                        desc += " x ";
216
                                        desc += value2String(im.text("YSize").toDouble(), PrefsManager::instance()->appPrefs.docSetupPrefs.docUnitIndex, true, true);
217
                                        im = im.scaled(w - 5, h - 21, Qt::KeepAspectRatio, Qt::SmoothTransformation);
14659 fschmid 218
                                        QPainter p;
219
                                        QBrush b(QColor(205,205,205), loadIcon("testfill.png"));
220
                                        pm = *pixmap();
221
                                        p.begin(&pm);
14665 fschmid 222
                                        p.fillRect(0, 0, w, h-21, b);
223
                                        p.fillRect(0, h-21, w, 21, QColor(255, 255, 255));
224
                                        p.drawImage((w - im.width()) / 2, (h - 21 - im.height()) / 2, im);
225
                                        p.drawText(2, h-5, desc);
14659 fschmid 226
                                        p.end();
227
                                        setPixmap(pm);
228
                                        repaint();
229
                                }
230
                        }
231
                }
232
        }
14677 fschmid 233
        else if (ext.toUtf8() == "sml")
234
        {
235
                QPixmap pmi;
236
                QByteArray cf;
237
                if (loadRawText(name, cf))
238
                {
239
                        QString f = QString::fromUtf8(cf.data());
240
                        StencilReader *pre = new StencilReader();
241
                        pmi = pre->createPreview(f);
242
                        QImage im = pmi.toImage();
243
                        im = im.scaled(w - 5, h - 21, Qt::KeepAspectRatio, Qt::SmoothTransformation);
244
                        QPainter p;
245
                        QBrush b(QColor(205,205,205), loadIcon("testfill.png"));
246
                        pm = *pixmap();
247
                        p.begin(&pm);
248
                        p.fillRect(0, 0, w, h-21, b);
249
                        p.fillRect(0, h-21, w, 21, QColor(255, 255, 255));
250
                        p.drawImage((w - im.width()) / 2, (h - 21 - im.height()) / 2, im);
251
                        QString desc = tr("Size:")+QString(" %1 x %2").arg(im.width()).arg(im.height());
252
                        p.drawText(2, h-5, desc);
253
                        p.end();
254
                        setPixmap(pm);
255
                        repaint();
256
                        delete pre;
257
                }
258
        }
259
        else if (ext.toUtf8() == "shape")
260
        {
261
                QByteArray cf;
262
                if (loadRawText(name, cf))
263
                {
264
                        QString f = QString::fromUtf8(cf.data());
265
                        StencilReader *pre = new StencilReader();
266
                        QString f2 = pre->createShape(f);
267
                        ScPreview *pre2 = new ScPreview();
14763 cbradney 268
                        QImage im = pre2->createPreview(f2);
14677 fschmid 269
                        im = im.scaled(w - 5, h - 21, Qt::KeepAspectRatio, Qt::SmoothTransformation);
270
                        QPainter p;
271
                        QBrush b(QColor(205,205,205), loadIcon("testfill.png"));
272
                        pm = *pixmap();
273
                        p.begin(&pm);
274
                        p.fillRect(0, 0, w, h-21, b);
275
                        p.fillRect(0, h-21, w, 21, QColor(255, 255, 255));
276
                        p.drawImage((w - im.width()) / 2, (h - 21 - im.height()) / 2, im);
277
                        QString desc = tr("Size:")+QString(" %1 x %2").arg(im.width()).arg(im.height());
278
                        p.drawText(2, h-5, desc);
279
                        p.end();
280
                        setPixmap(pm);
281
                        repaint();
282
                        delete pre;
283
                        delete pre2;
284
                }
285
        }
286
        else if (ext.toUtf8() == "sce")
287
        {
288
                QByteArray cf;
289
                if (loadRawText(name, cf))
290
                {
291
                        QString f;
292
                        if (cf.left(16) == "<SCRIBUSELEMUTF8")
293
                                f = QString::fromUtf8(cf.data());
294
                        else
295
                                f = cf.data();
296
                        ScPreview *pre = new ScPreview();
14763 cbradney 297
                        QImage im = pre->createPreview(f);
14677 fschmid 298
                        im = im.scaled(w - 5, h - 21, Qt::KeepAspectRatio, Qt::SmoothTransformation);
299
                        QPainter p;
300
                        QBrush b(QColor(205,205,205), loadIcon("testfill.png"));
301
                        pm = *pixmap();
302
                        p.begin(&pm);
303
                        p.fillRect(0, 0, w, h-21, b);
304
                        p.fillRect(0, h-21, w, 21, QColor(255, 255, 255));
305
                        p.drawImage((w - im.width()) / 2, (h - 21 - im.height()) / 2, im);
306
                        QString desc = tr("Size:")+QString(" %1 x %2").arg(im.width()).arg(im.height());
307
                        p.drawText(2, h-5, desc);
308
                        p.end();
309
                        setPixmap(pm);
310
                        repaint();
311
                        delete pre;
312
                }
313
        }
3 paul 314
        else
161 Franz 315
        {
11731 jghali 316
                ScSlaInfoReader slaInfos;
317
                if (slaInfos.readInfos(name))
3 paul 318
                {
11731 jghali 319
                        QString Title = tr("Title:")+" ";
320
                        QString ti2 = slaInfos.title();
321
                        if (ti2.isEmpty())
322
                                ti2= tr("No Title");
323
                        Title += ti2+"\n";
324
                        QString Author = tr("Author:")+" ";
325
                        QString au2 = slaInfos.author();
326
                        if (au2.isEmpty())
327
                                au2 = tr("Unknown");
328
                        Author += au2+"\n";
329
                        QString Format =  tr("File Format:")+" ";
330
                        QString fm2 = slaInfos.format();
331
                        if (fm2.isEmpty())
332
                                fm2 = tr("Unknown");
333
                        Format += fm2;
334
                        setText( tr("Scribus Document")+"\n\n"+Title+Author+Format);
335
                }
336
                else  if ((ext == "txt") || (ext == "html") || (ext == "xml"))
337
                {
338
                        if (loadText(name, &Buffer))
3 paul 339
                                setText(Buffer.left(200));
340
                }
161 Franz 341
        }
4182 subik 342
}
3 paul 343
 
10114 fschmid 344
CustomFDialog::CustomFDialog(QWidget *parent, QString wDir, QString caption, QString filter, int flags)
345
                        : QDialog(parent), optionFlags(flags)
3 paul 346
{
10114 fschmid 347
        setModal(true);
348
        setWindowTitle(caption);
349
        setWindowIcon(QIcon(loadIcon("AppIcon.png")));
350
        vboxLayout = new QVBoxLayout(this);
351
        vboxLayout->setSpacing(5);
352
        vboxLayout->setMargin(10);
353
    hboxLayout = new QHBoxLayout;
354
        hboxLayout->setSpacing(5);
355
        hboxLayout->setMargin(0);
10242 subik 356
        fileDialog = new ScFileWidget(this);
10114 fschmid 357
        hboxLayout->addWidget(fileDialog);
358
        fileDialog->setIconProvider(new ImIconProvider());
359
        fileDialog->setFilter(filter);
360
        fileDialog->selectFilter(filter);
361
        fileDialog->setDirectory(wDir);
362
        vboxLayout1 = new QVBoxLayout;
363
        vboxLayout1->setSpacing(0);
364
        vboxLayout1->setMargin(0);
365
        vboxLayout1->setContentsMargins(0, 37, 0, 0);
366
        vboxLayout1->setAlignment( Qt::AlignTop );
367
        pw = new FDialogPreview( this );
368
        pw->setMinimumSize(QSize(200, 200));
369
        pw->setMaximumSize(QSize(200, 200));
370
        vboxLayout1->addWidget(pw);
371
        hboxLayout->addLayout(vboxLayout1);
372
        vboxLayout->addLayout(hboxLayout);
373
    QHBoxLayout *hboxLayout1 = new QHBoxLayout;
374
        hboxLayout1->setSpacing(5);
375
        hboxLayout1->setContentsMargins(9, 0, 0, 0);
376
        showPreview = new QCheckBox(this);
377
        showPreview->setText( tr("Show Preview"));
12208 cbradney 378
        showPreview->setToolTip( tr("Show a preview and information for the selected file"));
10114 fschmid 379
        showPreview->setChecked(true);
380
        previewIsShown = true;
381
        hboxLayout1->addWidget(showPreview);
382
        QSpacerItem *spacerItem = new QSpacerItem(2, 2, QSizePolicy::Expanding, QSizePolicy::Minimum);
383
        hboxLayout1->addItem(spacerItem);
384
        OKButton = new QPushButton( CommonStrings::tr_OK, this);
385
        OKButton->setDefault( true );
386
        hboxLayout1->addWidget( OKButton );
387
        CancelB = new QPushButton( CommonStrings::tr_Cancel, this);
388
        CancelB->setAutoDefault( false );
389
        hboxLayout1->addWidget( CancelB );
390
        vboxLayout->addLayout(hboxLayout1);
12208 cbradney 391
        SaveZip=NULL;
392
        WithFonts=NULL;
393
        WithProfiles=NULL;
5846 jghali 394
        if (flags & fdDirectoriesOnly)
161 Franz 395
        {
9901 cbradney 396
                Layout = new QFrame(this);
10114 fschmid 397
                Layout1 = new QHBoxLayout(Layout);
310 Franz 398
                Layout1->setSpacing( 0 );
10114 fschmid 399
                Layout1->setContentsMargins(9, 0, 0, 0);
400
                SaveZip = new QCheckBox( tr( "&Compress File" ), Layout);
310 Franz 401
                Layout1->addWidget(SaveZip, Qt::AlignLeft);
10114 fschmid 402
                QSpacerItem* spacer = new QSpacerItem( 2, 2, QSizePolicy::Expanding, QSizePolicy::Minimum );
310 Franz 403
                Layout1->addItem( spacer );
10114 fschmid 404
                vboxLayout->addWidget(Layout);
9901 cbradney 405
                LayoutC = new QFrame(this);
10114 fschmid 406
                Layout1C = new QHBoxLayout(LayoutC);
310 Franz 407
                Layout1C->setSpacing( 0 );
10114 fschmid 408
                Layout1C->setContentsMargins(9, 0, 0, 0);
409
                WithFonts = new QCheckBox( tr( "&Include Fonts" ), LayoutC);
5843 jghali 410
                Layout1C->addWidget(WithFonts, Qt::AlignLeft);
10435 cbradney 411
                WithProfiles = new QCheckBox( tr( "&Include Color Profiles" ), LayoutC);
5843 jghali 412
                Layout1C->addWidget(WithProfiles, Qt::AlignLeft);
10114 fschmid 413
                QSpacerItem* spacer2 = new QSpacerItem( 2, 2, QSizePolicy::Expanding, QSizePolicy::Minimum );
310 Franz 414
                Layout1C->addItem( spacer2 );
10114 fschmid 415
                vboxLayout->addWidget(LayoutC);
416
                fileDialog->setFileMode(QFileDialog::DirectoryOnly);
417
                pw->hide();
418
                showPreview->setVisible(false);
419
                showPreview->setChecked(false);
420
                previewIsShown = false;
161 Franz 421
        }
3 paul 422
        else
161 Franz 423
        {
5846 jghali 424
                if (flags & fdCompressFile)
161 Franz 425
                {
9901 cbradney 426
                        Layout = new QFrame(this);
10114 fschmid 427
                        Layout1 = new QHBoxLayout(Layout);
428
                        Layout1->setSpacing( 5 );
429
                        Layout1->setContentsMargins(9, 0, 0, 0);
430
                        SaveZip = new QCheckBox( tr( "&Compress File" ), Layout);
310 Franz 431
                        Layout1->addWidget(SaveZip);
10114 fschmid 432
                        QSpacerItem* spacer = new QSpacerItem( 2, 2, QSizePolicy::Expanding, QSizePolicy::Minimum );
310 Franz 433
                        Layout1->addItem( spacer );
434
                }
5846 jghali 435
                if (flags & fdExistingFiles)
10114 fschmid 436
                        fileDialog->setFileMode(QFileDialog::ExistingFile);
310 Franz 437
                else
438
                {
10114 fschmid 439
                        fileDialog->setFileMode(QFileDialog::AnyFile);
5846 jghali 440
                        if (flags & fdCompressFile)
10114 fschmid 441
                                vboxLayout->addWidget(Layout);
310 Franz 442
                }
12208 cbradney 443
 
444
                if (SaveZip!=NULL)
445
                        SaveZip->setToolTip( "<qt>" + tr( "Compress the Scribus document on save" ) + "</qt>");
446
                if (WithFonts!=NULL)
447
                        WithFonts->setToolTip( "<qt>" + tr( "Include fonts when collecting files for the document. Be sure to know and understand licensing information for any fonts you collect and possibly redistribute." ) + "</qt>");
448
                if (WithProfiles!=NULL)
449
                        WithProfiles->setToolTip( "<qt>" + tr( "Include color profiles when collecting files for the document" ) + "</qt>");
450
 
5846 jghali 451
                if (flags & fdShowCodecs)
310 Franz 452
                {
9901 cbradney 453
                        LayoutC = new QFrame(this);
10114 fschmid 454
                        Layout1C = new QHBoxLayout(LayoutC);
310 Franz 455
                        Layout1C->setSpacing( 0 );
10114 fschmid 456
                        Layout1C->setContentsMargins(9, 0, 0, 0);
310 Franz 457
                        TxCodeT = new QLabel(this);
458
                        TxCodeT->setText( tr("Encoding:"));
10114 fschmid 459
                        Layout1C->addWidget(TxCodeT);
10508 cbradney 460
                        TxCodeM = new ScComboBox(LayoutC);
310 Franz 461
                        TxCodeM->setEditable(false);
4182 subik 462
                        QString tmp_txc[] = {"ISO 8859-1", "ISO 8859-2", "ISO 8859-3",
463
                                                                "ISO 8859-4", "ISO 8859-5", "ISO 8859-6",
464
                                                                "ISO 8859-7", "ISO 8859-8", "ISO 8859-9",
465
                                                                "ISO 8859-10", "ISO 8859-13", "ISO 8859-14",
7358 fschmid 466
                                                                "ISO 8859-15", "UTF-8", "UTF-16", "KOI8-R", "KOI8-U",
4182 subik 467
                                                                "CP1250", "CP1251", "CP1252", "CP1253",
468
                                                                "CP1254", "CP1255", "CP1256", "CP1257",
469
                                                                "Apple Roman"};
310 Franz 470
                        size_t array = sizeof(tmp_txc) / sizeof(*tmp_txc);
471
                        for (uint a = 0; a < array; ++a)
10499 fschmid 472
                                TxCodeM->addItem(tmp_txc[a]);
310 Franz 473
                        QString localEn = QTextCodec::codecForLocale()->name();
7358 fschmid 474
                        if (localEn == "ISO-10646-UCS-2")
475
                                localEn = "UTF-16";
310 Franz 476
                        bool hasIt = false;
477
                        for (int cc = 0; cc < TxCodeM->count(); ++cc)
15 Franz 478
                        {
10499 fschmid 479
                                if (TxCodeM->itemText(cc) == localEn)
310 Franz 480
                                {
10499 fschmid 481
                                        TxCodeM->setCurrentIndex(cc);
310 Franz 482
                                        hasIt = true;
483
                                        break;
484
                                }
15 Franz 485
                        }
310 Franz 486
                        if (!hasIt)
487
                        {
10499 fschmid 488
                                TxCodeM->addItem(localEn);
489
                                TxCodeM->setCurrentIndex(TxCodeM->count()-1);
310 Franz 490
                        }
491
                        TxCodeM->setMinimumSize(QSize(200, 0));
492
                        Layout1C->addWidget(TxCodeM);
10114 fschmid 493
                        QSpacerItem* spacer2 = new QSpacerItem( 2, 2, QSizePolicy::Expanding, QSizePolicy::Minimum );
310 Franz 494
                        Layout1C->addItem( spacer2 );
10114 fschmid 495
                        vboxLayout->addWidget(LayoutC);
161 Franz 496
                }
12121 fschmid 497
                bool setter2 = flags & fdHidePreviewCheckBox;
498
                if (!setter2)
499
                {
500
                        bool setter = flags & fdShowPreview;
501
                        showPreview->setChecked(setter);
502
                        previewIsShown = setter;
503
                        pw->setVisible(setter);
504
                }
505
                else
506
                {
507
                        showPreview->hide();
508
                        previewIsShown = false;
509
                        pw->setVisible(false);
510
                }
5846 jghali 511
                if (flags & fdCompressFile)
4182 subik 512
                        connect(SaveZip, SIGNAL(clicked()), this, SLOT(handleCompress()));
161 Franz 513
        }
14061 fschmid 514
#if QT_VERSION >= 0x040600
515
        fileDialog->setNameFilterDetailsVisible(false);
516
#else
517
        fileDialog->setOption(QFileDialog::HideNameFilterDetails);
518
#endif
4182 subik 519
        extZip = "gz";
10114 fschmid 520
        connect(OKButton, SIGNAL(clicked()), this, SLOT(accept()));
521
        connect(CancelB, SIGNAL(clicked()), this, SLOT(reject()));
522
        connect(showPreview, SIGNAL(clicked()), this, SLOT(togglePreview()));
523
        connect(fileDialog, SIGNAL(currentChanged(const QString &)), this, SLOT(fileClicked(const QString &)));
524
        connect(fileDialog, SIGNAL(filesSelected(const QStringList &)), this, SLOT(accept()));
10908 jghali 525
        connect(fileDialog, SIGNAL(accepted()), this, SLOT(accept()));
10471 subik 526
        connect(fileDialog, SIGNAL(rejected()), this, SLOT(reject()));
10114 fschmid 527
        resize(minimumSizeHint());
3 paul 528
}
529
 
10114 fschmid 530
 
531
void CustomFDialog::fileClicked(const QString &path)
3 paul 532
{
10114 fschmid 533
        if (previewIsShown)
534
                pw->GenPreview(path);
3 paul 535
}
536
 
10114 fschmid 537
void CustomFDialog::togglePreview()
3 paul 538
{
10114 fschmid 539
        previewIsShown = !previewIsShown;
540
        pw->setVisible(previewIsShown);
14659 fschmid 541
        if (previewIsShown)
542
        {
543
                QStringList sel = fileDialog->selectedFiles();
544
                if (!sel.isEmpty())
545
                        pw->GenPreview(QDir::fromNativeSeparators(sel[0]));
546
        }
3 paul 547
}
548
 
10114 fschmid 549
void CustomFDialog::setSelection(QString sel)
550
{
10199 jghali 551
        fileDialog->selectFile( QFileInfo(sel).fileName() );
10114 fschmid 552
        if (previewIsShown)
553
                pw->GenPreview(sel);
554
}
555
 
556
QString CustomFDialog::selectedFile()
557
{
558
        QStringList sel = fileDialog->selectedFiles();
559
        if (!sel.isEmpty())
13235 jghali 560
                return QDir::fromNativeSeparators(sel[0]);
10114 fschmid 561
        return QString();
562
}
563
 
564
void CustomFDialog::addWidgets(QWidget *widgets)
565
{
566
        vboxLayout->addWidget(widgets);
567
}
568
 
569
CustomFDialog::~CustomFDialog()
570
{
571
}
572
 
4182 subik 573
void CustomFDialog::handleCompress()
3 paul 574
{
4182 subik 575
        QFileInfo tmp;
576
        tmp.setFile(selectedFile());
10499 fschmid 577
        QString e(tmp.completeSuffix());
10603 fschmid 578
        QStringList ex = e.split(".", QString::SkipEmptyParts);
6810 fschmid 579
        QString baseExt = "";
8545 cbradney 580
        for (int a = 0; a < ex.count(); a++)
6810 fschmid 581
        {
582
                if ((ex[a] != "sla") && (ex[a] != "SLA") && (ex[a] != "gz") && (ex[a] != "GZ"))
583
                        baseExt += "."+ex[a];
584
        }
3 paul 585
        if (SaveZip->isChecked())
161 Franz 586
        {
4182 subik 587
                if (e != extZip)
6810 fschmid 588
                        tmp.setFile(tmp.baseName() + baseExt + "." + extZip);
161 Franz 589
        }
3 paul 590
        else
161 Franz 591
        {
4182 subik 592
                if (e != ext)
6810 fschmid 593
                        tmp.setFile(tmp.baseName() + baseExt + "." + ext);
161 Franz 594
        }
4182 subik 595
        setSelection(tmp.fileName());
3 paul 596
}
4182 subik 597
 
598
void CustomFDialog::setExtension(QString e)
599
{
600
        ext = e;
601
}
602
 
603
QString CustomFDialog::extension()
604
{
605
        return ext;
606
}
607
 
608
void CustomFDialog::setZipExtension(QString e)
609
{
610
        extZip = e;
611
}
612
 
613
QString CustomFDialog::zipExtension()
614
{
615
        return extZip;
616
}