-
Notifications
You must be signed in to change notification settings - Fork 351
/
Copy pathpdfsplittool.h
90 lines (72 loc) · 2.32 KB
/
pdfsplittool.h
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 Header_PDF_SplitTool
#define Header_PDF_SplitTool
#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 = nullptr, 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