Scribus API for plugins
A stable, high level and documented interface to the Scribus core that plugin developers can use to access the Scribus features.
scribusAPIDocument.h
1 
5 #ifndef SCRIBUSAPIDOCUMENT_H
6 #define SCRIBUSAPIDOCUMENT_H
7 
8 #include <QDebug>
9 
10 #include <QObject>
11 
12 #include <QString>
13 #include <QList>
14 #include <QStringList>
15 #include <QVector>
16 
17 #include "scribusdoc.h"
18 
19 #include "scribusAPIDocumentItem.h"
20 
21 // class ScribusDoc;
22 // class PageItem;
23 class ScPage; // for getPageRect() remove it, it's moved to ScPage
24 class MarginStruct; // for getPageRect() remove it, it's moved to ScPage
25 class PageItem;
26 
29 
31 {
32  QString title;
33  QString language;
34  QString id;
35  QString date;
36  QString author;
37  // non mandatory fields from the main screen
38  QString subject;
39  QString keywords;
40  QString description;
41  QString publisher;
42  // non mandatory fields from the further information screen
43  QString contributor;
44  QString type;
45  QString format;
46  QString source;
47  QString relation;
48  QString coverage;
49  QString rights;
51  title(""), language(""), id(""), date(""), author(""),
52  subject(""), keywords(""), description(""), publisher(""),
53  contributor(""), type(""), format(""), source(""), relation(""), coverage(""), rights("")
54  {}
55 };
56 
57 class ScribusAPIDocument : public QObject
58 {
59  Q_OBJECT
60 
61 public:
62  ScribusAPIDocument(ScribusDoc* scribusDoc) : scribusDoc{scribusDoc} {};
65 
69  void set(ScribusDoc* scribusDoc) { this->scribusDoc = scribusDoc; }
70  void setPageRange(QList<int> pageRange) { this->pageRange = pageRange; }
71 
72  QString getPath() { return scribusDoc->DocName; }
73  ScribusAPIDocumentMetadata getMetadata();
74  bool isPortrait(int pageNumber);
75  void render();
76 
77  void readItems();
78  QList<ScribusAPIDocumentItem*> getPageItems(int page) { return this->items[page];}
79  // QList<ScribusAPIDocumentItem*> getPageItems(int page) { QList<ScribusAPIDocumentItem*> result; return result;}
80  ScribusAPIDocumentItem* getCurrentItem();
81 
82  void readSections();
83  QVector< QList<int> > getSections() { return this->sections; }
84  QString getStylesAsCss();
85  QStringList getParagraphStyleNames();
86  QStringList getCharacterStyleNames();
87  QByteArray getPageAsPNG(int pageNumber, int width, int height);
88  QByteArray getPageAsPNG(int pageNumber, int maxSize);
89  QByteArray getFirstPageAsCoverImage();
90 
91  int getPageCount() { return this->scribusDoc->DocPages.count(); }
92  QString getPageNumberByIndex(int i);
93  int getSectionCount() { return this->scribusDoc->prefsData().docSectionMap.count(); }
94 private:
95  ScribusDoc* scribusDoc;
96 
97  QList<int> pageRange; // from the options
98 
99  QVector< QList<ScribusAPIDocumentItem*> > items;
100  QVector< QList<int> > sections;
101 
102  QString getStylenameSanitized(QString stylename);
103 
104 
105  static bool isDocItemTopLeftLessThan(const PageItem *docItem1, const PageItem *docItem2);
106  static bool isItemBefore(const ScribusAPIDocumentItem& item1, const ScribusAPIDocumentItem& item2);
107 
108  // ==== functions to be moved to scribusDoc? =====
109  QList<ScPage *> getPagesWithItem(PageItem* item);
110  QRect getPageRect(const ScPage* page);
111  MarginStruct getPageBleeds(const ScPage* page);
112  QList<ScPage*> getPagesList();
113 
114 };
115 
116 QDebug operator<<(QDebug dbg, const ScribusAPIDocument &scribusDocument);
117 QDebug operator<<(QDebug dbg, const ScribusAPIDocumentMetadata &metadata);
118 
119 #endif // SCRIBUSAPIDOCUMENT_H
Definition: scribusAPIDocument.h:30
Definition: scribusAPIDocumentItem.h:39
Main class for creating the GUI and interpreting the user input.
Definition: scribusAPIDocument.h:57