Subversion Repositories Scribus

Rev

Rev 14678 | Rev 16164 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
For general Scribus (>=1.3.2) copyright and licensing information please refer
to the COPYING file provided with the program. Following this notice may exist
a copyright and/or license notice that predates the release of Scribus 1.3.2
for which a new license (GPL+exception) is in place.
*/


/***************************************************************************
                          customfdialog.cpp  -  description
                             -------------------
    begin                : Fri Nov 30 2001
    copyright            : (C) 2001 by Franz Schmid
    email                : Franz.Schmid@altmuehlnet.de
 ***************************************************************************/


/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/


#include <QCheckBox>
#include <QComboBox>
#include <QDir>
#include <QFileInfo>
#include <QFrame>
#include <QHBoxLayout>
#include <QIcon>
#include <QImageReader>
#include <QLabel>
#include <QPainter>
#include <QPixmap>
#include <QPushButton>
#include <QTextCodec>
#include <QVBoxLayout>

#include "customfdialog.h"

#include "fileloader.h"
#include "loadsaveplugin.h"
#include "../plugins/formatidlist.h"
#include "prefsmanager.h"
#include "scfilewidget.h"
#include "cmsettings.h"
#include "commonstrings.h"
#include "sccombobox.h"
#include "scimage.h"
#include "scribusstructs.h"
#include "scslainforeader.h"
#include "stencilreader.h"
#include "scpreview.h"
#include "units.h"
#include "util.h"
#include "util_color.h"
#include "util_formats.h"
#include "util_icon.h"



extern QString DocDir;

ImIconProvider::ImIconProvider() : QFileIconProvider()
{
        fmts.clear();
        QString tmp[] = {"eps", "epsi", "gif", "png", "jpg", "jpeg", "xpm", "tif", "tiff", "bmp", "pbm", "pgm", "ppm", "xbm", "xpm", "psd", "pat"};
        size_t array = sizeof(tmp) / sizeof(*tmp);
        for (uint a = 0; a < array; ++a)
                fmts.append(tmp[a]);
        imagepm = QIcon(loadIcon("16/image-x-generic.png"));
        pspm = QIcon(loadIcon("postscript.png"));
        txtpm = QIcon(loadIcon("txt.png"));
        docpm = QIcon(loadIcon("doc.png"));
        pdfpm = QIcon(loadIcon("pdf.png"));
        oosxdpm = QIcon(loadIcon("ooo_draw.png"));
        oosxwpm = QIcon(loadIcon("ooo_writer.png"));
        vectorpm = QIcon(loadIcon("vectorgfx.png"));
}

QIcon ImIconProvider::icon(const QFileInfo &fi) const
{
        QStringList allFormatsV = LoadSavePlugin::getExtensionsForImport(FORMATID_ODGIMPORT);
        QString ext = fi.suffix().toLower();
        if (ext.isEmpty())
                return QFileIconProvider::icon(fi);
        if (fmts.contains(ext, Qt::CaseInsensitive))
                return imagepm;
        else
        {
                ext = fi.completeSuffix().toLower();
                if (ext.endsWith("ps", Qt::CaseInsensitive))
                        return pspm;
                else if (ext.endsWith("txt", Qt::CaseInsensitive))
                        return txtpm;
                else if (ext.endsWith("scd", Qt::CaseInsensitive) || ext.endsWith("scd.gz", Qt::CaseInsensitive))
                        return docpm;
                else if (ext.endsWith("sla", Qt::CaseInsensitive) || ext.endsWith("sla.gz", Qt::CaseInsensitive))
                        return docpm;
                else if (ext.endsWith("pdf", Qt::CaseInsensitive))
                        return pdfpm;
                else if (ext.endsWith("sxd", Qt::CaseInsensitive))
                        return oosxdpm;
                else if (ext.endsWith("sxw", Qt::CaseInsensitive))
                        return oosxwpm;
                else if (allFormatsV.contains(ext) || ext.endsWith("sce", Qt::CaseInsensitive) || ext.endsWith("sml", Qt::CaseInsensitive) || ext.endsWith("shape", Qt::CaseInsensitive))
                        return vectorpm;
                else
                        return QFileIconProvider::icon(fi);
        }
        return QIcon();
}

FDialogPreview::FDialogPreview(QWidget *pa) : QLabel(pa)
{
        setAlignment(Qt::AlignLeft | Qt::AlignTop);
        setFixedSize( QSize( 200, 200 ) );
        setScaledContents( false );
        setFrameShape( QLabel::WinPanel );
        setFrameShadow( QLabel::Sunken );
        updtPix();
}

void FDialogPreview::updtPix()
{
        QPixmap pm;
        QRect inside = contentsRect();
        pm = QPixmap(inside.width(), inside.height());
        pm.fill(Qt::white);
        setPixmap(pm);
}

void FDialogPreview::GenPreview(QString name)
{
        QPixmap pm;
        QString Buffer = "";
        updtPix();
        if (name.isEmpty())
                return;
        QFileInfo fi = QFileInfo(name);
        if (fi.isDir())
                return;
        int w = pixmap()->width();
        int h = pixmap()->height();
        bool mode = false;
        QString ext = fi.suffix().toLower();
        QString formatD(FormatsManager::instance()->extensionListForFormat(FormatsManager::IMAGESIMGFRAME, 1));
        QStringList formats = formatD.split("|");
        formats.append("pat");
       
        QStringList allFormatsV = LoadSavePlugin::getExtensionsForPreview(FORMATID_ODGIMPORT);
        if (ext.isEmpty())
                ext = getImageType(name);
        if (formats.contains(ext.toUtf8()))
        {
                ScImage im;
                //No doc to send data anyway, so no doc to get into scimage.
                CMSettings cms(0, "", Intent_Perceptual);
                cms.allowColorManagement(false);
                if (im.loadPicture(name, 1, cms, ScImage::Thumbnail, 72, &mode))
                {
                        int ix,iy;
                        if ((im.imgInfo.exifDataValid) && (!im.imgInfo.exifInfo.thumbnail.isNull()))
                        {
                                ix = im.imgInfo.exifInfo.width;
                                iy = im.imgInfo.exifInfo.height;
                        }
                        else
                        {
                                ix = im.width();
                                iy = im.height();
                        }
                        int xres = im.imgInfo.xres;
                        int yres = im.imgInfo.yres;
                        QString tmp = "";
                        QString tmp2 = "";
                        QImage im2 = im.scaled(w - 5, h - 44, Qt::KeepAspectRatio, Qt::SmoothTransformation);
                        QPainter p;
                        QBrush b(QColor(205,205,205), loadIcon("testfill.png"));
                        // Qt4 FIXME imho should be better
                        pm = *pixmap();
                        p.begin(&pm);
                        p.fillRect(0, 0, w, h-44, b);
                        p.fillRect(0, h-44, w, 44, QColor(255, 255, 255));
                        p.drawImage((w - im2.width()) / 2, (h - 44 - im2.height()) / 2, im2);
                        p.drawText(2, h-29, tr("Size:")+" "+tmp.setNum(ix)+" x "+tmp2.setNum(iy));
                        p.drawText(2, h-17, tr("Resolution:")+" "+tmp.setNum(xres)+" x "+tmp2.setNum(yres)+" "+ tr("DPI"));
                        QString cSpace;
                        if ((extensionIndicatesPDF(ext) || extensionIndicatesEPSorPS(ext)) && (im.imgInfo.type != ImageType7))
                                cSpace = tr("Unknown");
                        else
                                cSpace=colorSpaceText(im.imgInfo.colorspace);
                        p.drawText(2, h-5, tr("Colorspace:")+" "+cSpace);
                        p.end();
                        setPixmap(pm);
                        repaint();
                }
        }
        else if (allFormatsV.contains(ext.toUtf8()))
        {
                FileLoader *fileLoader = new FileLoader(name);
                int testResult = fileLoader->TestFile();
                delete fileLoader;
                if ((testResult != -1) && (testResult >= FORMATID_ODGIMPORT))
                {
                        const FileFormat * fmt = LoadSavePlugin::getFormatById(testResult);
                        if( fmt )
                        {
                                QImage im = fmt->readThumbnail(name);
                                if (!im.isNull())
                                {
                                        QString desc = tr("Size:")+" ";
                                        desc += value2String(im.text("XSize").toDouble(), PrefsManager::instance()->appPrefs.docSetupPrefs.docUnitIndex, true, true);
                                        desc += " x ";
                                        desc += value2String(im.text("YSize").toDouble(), PrefsManager::instance()->appPrefs.docSetupPrefs.docUnitIndex, true, true);
                                        im = im.scaled(w - 5, h - 21, Qt::KeepAspectRatio, Qt::SmoothTransformation);
                                        QPainter p;
                                        QBrush b(QColor(205,205,205), loadIcon("testfill.png"));
                                        pm = *pixmap();
                                        p.begin(&pm);
                                        p.fillRect(0, 0, w, h-21, b);
                                        p.fillRect(0, h-21, w, 21, QColor(255, 255, 255));
                                        p.drawImage((w - im.width()) / 2, (h - 21 - im.height()) / 2, im);
                                        p.drawText(2, h-5, desc);
                                        p.end();
                                        setPixmap(pm);
                                        repaint();
                                }
                        }
                }
        }
        else if (ext.toUtf8() == "sml")
        {
                QPixmap pmi;
                QByteArray cf;
                if (loadRawText(name, cf))
                {
                        QString f = QString::fromUtf8(cf.data());
                        StencilReader *pre = new StencilReader();
                        pmi = pre->createPreview(f);
                        QImage im = pmi.toImage();
                        im = im.scaled(w - 5, h - 21, Qt::KeepAspectRatio, Qt::SmoothTransformation);
                        QPainter p;
                        QBrush b(QColor(205,205,205), loadIcon("testfill.png"));
                        pm = *pixmap();
                        p.begin(&pm);
                        p.fillRect(0, 0, w, h-21, b);
                        p.fillRect(0, h-21, w, 21, QColor(255, 255, 255));
                        p.drawImage((w - im.width()) / 2, (h - 21 - im.height()) / 2, im);
                        QString desc = tr("Size:")+QString(" %1 x %2").arg(im.width()).arg(im.height());
                        p.drawText(2, h-5, desc);
                        p.end();
                        setPixmap(pm);
                        repaint();
                        delete pre;
                }
        }
        else if (ext.toUtf8() == "shape")
        {
                QByteArray cf;
                if (loadRawText(name, cf))
                {
                        QString f = QString::fromUtf8(cf.data());
                        StencilReader *pre = new StencilReader();
                        QString f2 = pre->createShape(f);
                        ScPreview *pre2 = new ScPreview();
                        QImage im = pre2->createPreview(f2);
                        im = im.scaled(w - 5, h - 21, Qt::KeepAspectRatio, Qt::SmoothTransformation);
                        QPainter p;
                        QBrush b(QColor(205,205,205), loadIcon("testfill.png"));
                        pm = *pixmap();
                        p.begin(&pm);
                        p.fillRect(0, 0, w, h-21, b);
                        p.fillRect(0, h-21, w, 21, QColor(255, 255, 255));
                        p.drawImage((w - im.width()) / 2, (h - 21 - im.height()) / 2, im);
                        QString desc = tr("Size:")+QString(" %1 x %2").arg(im.width()).arg(im.height());
                        p.drawText(2, h-5, desc);
                        p.end();
                        setPixmap(pm);
                        repaint();
                        delete pre;
                        delete pre2;
                }
        }
        else if (ext.toUtf8() == "sce")
        {
                QByteArray cf;
                if (loadRawText(name, cf))
                {
                        QString f;
                        if (cf.left(16) == "<SCRIBUSELEMUTF8")
                                f = QString::fromUtf8(cf.data());
                        else
                                f = cf.data();
                        ScPreview *pre = new ScPreview();
                        QImage im = pre->createPreview(f);
                        im = im.scaled(w - 5, h - 21, Qt::KeepAspectRatio, Qt::SmoothTransformation);
                        QPainter p;
                        QBrush b(QColor(205,205,205), loadIcon("testfill.png"));
                        pm = *pixmap();
                        p.begin(&pm);
                        p.fillRect(0, 0, w, h-21, b);
                        p.fillRect(0, h-21, w, 21, QColor(255, 255, 255));
                        p.drawImage((w - im.width()) / 2, (h - 21 - im.height()) / 2, im);
                        QString desc = tr("Size:")+QString(" %1 x %2").arg(im.width()).arg(im.height());
                        p.drawText(2, h-5, desc);
                        p.end();
                        setPixmap(pm);
                        repaint();
                        delete pre;
                }
        }
        else
        {
                ScSlaInfoReader slaInfos;
                if (slaInfos.readInfos(name))
                {
                        QString Title = tr("Title:")+" ";
                        QString ti2 = slaInfos.title();
                        if (ti2.isEmpty())
                                ti2= tr("No Title");
                        Title += ti2+"\n";
                        QString Author = tr("Author:")+" ";
                        QString au2 = slaInfos.author();
                        if (au2.isEmpty())
                                au2 = tr("Unknown");
                        Author += au2+"\n";
                        QString Format =  tr("File Format:")+" ";
                        QString fm2 = slaInfos.format();
                        if (fm2.isEmpty())
                                fm2 = tr("Unknown");
                        Format += fm2;
                        setText( tr("Scribus Document")+"\n\n"+Title+Author+Format);
                }
                else  if ((ext == "txt") || (ext == "html") || (ext == "xml"))
                {
                        if (loadText(name, &Buffer))
                                setText(Buffer.left(200));
                }
        }
}

CustomFDialog::CustomFDialog(QWidget *parent, QString wDir, QString caption, QString filter, int flags)
                        : QDialog(parent), optionFlags(flags)
{
        setModal(true);
        setWindowTitle(caption);
        setWindowIcon(QIcon(loadIcon("AppIcon.png")));
        vboxLayout = new QVBoxLayout(this);
        vboxLayout->setSpacing(5);
        vboxLayout->setMargin(10);
    hboxLayout = new QHBoxLayout;
        hboxLayout->setSpacing(5);
        hboxLayout->setMargin(0);
        fileDialog = new ScFileWidget(this);
        hboxLayout->addWidget(fileDialog);
        fileDialog->setIconProvider(new ImIconProvider());
        fileDialog->setFilter(filter);
        fileDialog->selectFilter(filter);
        fileDialog->setDirectory(wDir);
        vboxLayout1 = new QVBoxLayout;
        vboxLayout1->setSpacing(0);
        vboxLayout1->setMargin(0);
        vboxLayout1->setContentsMargins(0, 37, 0, 0);
        vboxLayout1->setAlignment( Qt::AlignTop );
        pw = new FDialogPreview( this );
        pw->setMinimumSize(QSize(200, 200));
        pw->setMaximumSize(QSize(200, 200));
        vboxLayout1->addWidget(pw);
        hboxLayout->addLayout(vboxLayout1);
        vboxLayout->addLayout(hboxLayout);
    QHBoxLayout *hboxLayout1 = new QHBoxLayout;
        hboxLayout1->setSpacing(5);
        hboxLayout1->setContentsMargins(9, 0, 0, 0);
        showPreview = new QCheckBox(this);
        showPreview->setText( tr("Show Preview"));
        showPreview->setToolTip( tr("Show a preview and information for the selected file"));
        showPreview->setChecked(true);
        previewIsShown = true;
        hboxLayout1->addWidget(showPreview);
        QSpacerItem *spacerItem = new QSpacerItem(2, 2, QSizePolicy::Expanding, QSizePolicy::Minimum);
        hboxLayout1->addItem(spacerItem);
        OKButton = new QPushButton( CommonStrings::tr_OK, this);
        OKButton->setDefault( true );
        hboxLayout1->addWidget( OKButton );
        CancelB = new QPushButton( CommonStrings::tr_Cancel, this);
        CancelB->setAutoDefault( false );
        hboxLayout1->addWidget( CancelB );
        vboxLayout->addLayout(hboxLayout1);
        SaveZip=NULL;
        WithFonts=NULL;
        WithProfiles=NULL;
        if (flags & fdDirectoriesOnly)
        {
                Layout = new QFrame(this);
                Layout1 = new QHBoxLayout(Layout);
                Layout1->setSpacing( 0 );
                Layout1->setContentsMargins(9, 0, 0, 0);
                SaveZip = new QCheckBox( tr( "&Compress File" ), Layout);
                Layout1->addWidget(SaveZip, Qt::AlignLeft);
                QSpacerItem* spacer = new QSpacerItem( 2, 2, QSizePolicy::Expanding, QSizePolicy::Minimum );
                Layout1->addItem( spacer );
                vboxLayout->addWidget(Layout);
                LayoutC = new QFrame(this);
                Layout1C = new QHBoxLayout(LayoutC);
                Layout1C->setSpacing( 0 );
                Layout1C->setContentsMargins(9, 0, 0, 0);
                WithFonts = new QCheckBox( tr( "&Include Fonts" ), LayoutC);
                Layout1C->addWidget(WithFonts, Qt::AlignLeft);
                WithProfiles = new QCheckBox( tr( "&Include Color Profiles" ), LayoutC);
                Layout1C->addWidget(WithProfiles, Qt::AlignLeft);
                QSpacerItem* spacer2 = new QSpacerItem( 2, 2, QSizePolicy::Expanding, QSizePolicy::Minimum );
                Layout1C->addItem( spacer2 );
                vboxLayout->addWidget(LayoutC);
                fileDialog->setFileMode(QFileDialog::DirectoryOnly);
                pw->hide();
                showPreview->setVisible(false);
                showPreview->setChecked(false);
                previewIsShown = false;
        }
        else
        {
                if (flags & fdCompressFile)
                {
                        Layout = new QFrame(this);
                        Layout1 = new QHBoxLayout(Layout);
                        Layout1->setSpacing( 5 );
                        Layout1->setContentsMargins(9, 0, 0, 0);
                        SaveZip = new QCheckBox( tr( "&Compress File" ), Layout);
                        Layout1->addWidget(SaveZip);
                        QSpacerItem* spacer = new QSpacerItem( 2, 2, QSizePolicy::Expanding, QSizePolicy::Minimum );
                        Layout1->addItem( spacer );
                }
                if (flags & fdExistingFiles)
                        fileDialog->setFileMode(QFileDialog::ExistingFile);
                else
                {
                        fileDialog->setFileMode(QFileDialog::AnyFile);
                        if (flags & fdCompressFile)
                                vboxLayout->addWidget(Layout);
                }
               
                if (SaveZip!=NULL)
                        SaveZip->setToolTip( "<qt>" + tr( "Compress the Scribus document on save" ) + "</qt>");
                if (WithFonts!=NULL)
                        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>");
                if (WithProfiles!=NULL)
                        WithProfiles->setToolTip( "<qt>" + tr( "Include color profiles when collecting files for the document" ) + "</qt>");
               
                if (flags & fdShowCodecs)
                {
                        LayoutC = new QFrame(this);
                        Layout1C = new QHBoxLayout(LayoutC);
                        Layout1C->setSpacing( 0 );
                        Layout1C->setContentsMargins(9, 0, 0, 0);
                        TxCodeT = new QLabel(this);
                        TxCodeT->setText( tr("Encoding:"));
                        Layout1C->addWidget(TxCodeT);
                        TxCodeM = new ScComboBox(LayoutC);
                        TxCodeM->setEditable(false);
                        QString tmp_txc[] = {"ISO 8859-1", "ISO 8859-2", "ISO 8859-3",
                                                                "ISO 8859-4", "ISO 8859-5", "ISO 8859-6",
                                                                "ISO 8859-7", "ISO 8859-8", "ISO 8859-9",
                                                                "ISO 8859-10", "ISO 8859-13", "ISO 8859-14",
                                                                "ISO 8859-15", "UTF-8", "UTF-16", "KOI8-R", "KOI8-U",
                                                                "CP1250", "CP1251", "CP1252", "CP1253",
                                                                "CP1254", "CP1255", "CP1256", "CP1257",
                                                                "Apple Roman"};
                        size_t array = sizeof(tmp_txc) / sizeof(*tmp_txc);
                        for (uint a = 0; a < array; ++a)
                                TxCodeM->addItem(tmp_txc[a]);
                        QString localEn = QTextCodec::codecForLocale()->name();
                        if (localEn == "ISO-10646-UCS-2")
                                localEn = "UTF-16";
                        bool hasIt = false;
                        for (int cc = 0; cc < TxCodeM->count(); ++cc)
                        {
                                if (TxCodeM->itemText(cc) == localEn)
                                {
                                        TxCodeM->setCurrentIndex(cc);
                                        hasIt = true;
                                        break;
                                }
                        }
                        if (!hasIt)
                        {
                                TxCodeM->addItem(localEn);
                                TxCodeM->setCurrentIndex(TxCodeM->count()-1);
                        }
                        TxCodeM->setMinimumSize(QSize(200, 0));
                        Layout1C->addWidget(TxCodeM);
                        QSpacerItem* spacer2 = new QSpacerItem( 2, 2, QSizePolicy::Expanding, QSizePolicy::Minimum );
                        Layout1C->addItem( spacer2 );
                        vboxLayout->addWidget(LayoutC);
                }
                bool setter2 = flags & fdHidePreviewCheckBox;
                if (!setter2)
                {
                        bool setter = flags & fdShowPreview;
                        showPreview->setChecked(setter);
                        previewIsShown = setter;
                        pw->setVisible(setter);
                }
                else
                {
                        showPreview->hide();
                        previewIsShown = false;
                        pw->setVisible(false);
                }
                if (flags & fdCompressFile)
                        connect(SaveZip, SIGNAL(clicked()), this, SLOT(handleCompress()));
        }
#if QT_VERSION >= 0x040600
        fileDialog->setNameFilterDetailsVisible(false);
#else
        fileDialog->setOption(QFileDialog::HideNameFilterDetails);
#endif
        extZip = "gz";
        connect(OKButton, SIGNAL(clicked()), this, SLOT(accept()));
        connect(CancelB, SIGNAL(clicked()), this, SLOT(reject()));
        connect(showPreview, SIGNAL(clicked()), this, SLOT(togglePreview()));
        connect(fileDialog, SIGNAL(currentChanged(const QString &)), this, SLOT(fileClicked(const QString &)));
        connect(fileDialog, SIGNAL(filesSelected(const QStringList &)), this, SLOT(accept()));
        connect(fileDialog, SIGNAL(accepted()), this, SLOT(accept()));
        connect(fileDialog, SIGNAL(rejected()), this, SLOT(reject()));
        resize(minimumSizeHint());
}


void CustomFDialog::fileClicked(const QString &path)
{
        if (previewIsShown)
                pw->GenPreview(path);
}

void CustomFDialog::togglePreview()
{
        previewIsShown = !previewIsShown;
        pw->setVisible(previewIsShown);
        if (previewIsShown)
        {
                QStringList sel = fileDialog->selectedFiles();
                if (!sel.isEmpty())
                        pw->GenPreview(QDir::fromNativeSeparators(sel[0]));
        }
}

void CustomFDialog::setSelection(QString sel)
{
        fileDialog->selectFile( QFileInfo(sel).fileName() );
        if (previewIsShown)
                pw->GenPreview(sel);
}

QString CustomFDialog::selectedFile()
{
        QStringList sel = fileDialog->selectedFiles();
        if (!sel.isEmpty())
                return QDir::fromNativeSeparators(sel[0]);
        return QString();
}

void CustomFDialog::addWidgets(QWidget *widgets)
{
        vboxLayout->addWidget(widgets);
}

CustomFDialog::~CustomFDialog()
{
}

void CustomFDialog::handleCompress()
{
        QFileInfo tmp;
        tmp.setFile(selectedFile());
        QString e(tmp.completeSuffix());
        QStringList ex = e.split(".", QString::SkipEmptyParts);
        QString baseExt = "";
        for (int a = 0; a < ex.count(); a++)
        {
                if ((ex[a] != "sla") && (ex[a] != "SLA") && (ex[a] != "gz") && (ex[a] != "GZ"))
                        baseExt += "."+ex[a];
        }
        if (SaveZip->isChecked())
        {
                if (e != extZip)
                        tmp.setFile(tmp.baseName() + baseExt + "." + extZip);
        }
        else
        {
                if (e != ext)
                        tmp.setFile(tmp.baseName() + baseExt + "." + ext);
        }
        setSelection(tmp.fileName());
}

void CustomFDialog::setExtension(QString e)
{
        ext = e;
}

QString CustomFDialog::extension()
{
        return ext;
}

void CustomFDialog::setZipExtension(QString e)
{
        extZip = e;
}

QString CustomFDialog::zipExtension()
{
        return extZip;
}