1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
#ifndef PDFSPLITTOOL_H
#define PDFSPLITTOOL_H
#include <QDialog>
#include <QList>
#include <QPair>
#include <QString>
#include <QFileInfo>
namespace Ui {
class PDFSplitTool;
}
typedef QPair<int, int> PageRange;
class PDFSplitMergeTool : public QDialog
{
Q_OBJECT
public:
explicit PDFSplitMergeTool(QWidget *parent = 0, const QString &infile = QString());
~PDFSplitMergeTool();
private slots:
void outputFileDialog();
void addInput();
void inputFileDialog();
void removeInput();
void moveUpInput();
void moveDownInput();
void addPageRange(QLayout *parentLayout = 0);
void removePageRange();
void moveUpPageRange();
void moveDownPageRange();
void go();
private:
void moveInput(int delta);
void movePageRange(int delta);
void resyncRows();
Ui::PDFSplitTool *ui;
signals:
void runCommand(const QString &command, const QFileInfo &masterFile, const QFileInfo ¤tFile, int linenr);
};
class MultiProcessX: public QObject
{
Q_OBJECT
protected:
//cache commands and run them all at once, because we do not have access to the build manager here
QStringList temporaryFiles;
QList<QPair<QString, QFileInfo> > pendingCmds;
QString createTemporaryFileName(const QString &extension);
void run(const QString &cmd, const QFileInfo &master = QFileInfo());
void execute();
virtual ~MultiProcessX();
signals:
void runCommand(const QString &command, const QFileInfo &masterFile, const QFileInfo ¤tFile, int linenr);
};
class PDFSplitMerge: public MultiProcessX
{
public:
virtual void split(const QString &outputFile, const QString &inputFile, const PageRange &range);
virtual void split(const QString &outputFile, const QString &inputFile, const QList<PageRange> &range);
virtual void merge(const QString &outputFile, const QStringList &inputFiles);
virtual void splitMerge(const QString &outputFile, const QList<QPair<QString, QList<PageRange> > > &inputs);
};
class PDFSplitMergeGS: public PDFSplitMerge
{
public:
PDFSplitMergeGS();
virtual void split(const QString &outputFile, const QString &inputFile, const PageRange &range);
virtual void merge(const QString &outputFile, const QStringList &inputFiles);
};
class PDFSplitMergePDFPages: public PDFSplitMerge
{
public:
virtual void splitMerge(const QString &outputFile, const QList<QPair<QString, QList<PageRange> > > &inputs);
};
#endif // PDFSPLITTOOL_H
|