#ifndef MDI_CHILD_H
#define MDI_CHILD_H
#include <QTextEdit>
#include <QTextBrowser>
#include <QTabWidget>
class MarkdownHighlighter;
#define NON_TABBED_CHILD 1
#if NON_TABBED_CHILD
class MdiChild : public QTextEdit
#else
class MdiChild : public QTabWidget
#endif
{
Q_OBJECT
public:
MdiChild();
~MdiChild();
void newFile();
bool loadFile(const QString &fileName);
bool save();
bool saveAs();
bool saveFile(const QString &fileName);
QString userFriendlyCurrentFile();
QString currentFile() { return curFile; }
QString tmpFileName() { return tmpFile; } // For preview of PDF file
QString currentStyle() { return curStyle; }
QString currentTemplate() { return curTemplate; }
void markdownSelection(const char* preText, const char* postText);
void insertText(const char* text);
void bold();
void italic();
void quote();
void code();
void heading1();
void heading2();
void heading3();
void heading4();
void hyperlink();
void image();
void unorderedList();
void orderedList();
void horizontalRule();
void timestamp();
void pageNumber();
void pageCount();
void del();
void undo();
void redo();
void find();
void findNext();
void findPrevious();
void goToLine();
void cut() { return editor->cut(); }
void copy() { return editor->copy(); }
void paste() { return editor->paste(); }
void selectAll() { return editor->selectAll(); }
QString toPlainText() { return editor->toPlainText(); }
bool hasSelection() { return editor->textCursor().hasSelection(); }
signals:
void closing();
void documentContentsChanged();
private slots:
void documentWasModified();
protected:
void closeEvent(QCloseEvent *event) override;
private:
bool maybeSave();
void setCurrentFile(const QString &fileName);
QString strippedName(const QString &fullFileName);
void newTempName();
QString curFile;
QString tmpFile;
bool isUntitled;
QString curStyle;
QString curTemplate;
QTextEdit* editor;
QTextEdit* preview;
MarkdownHighlighter* highlighter;
//QTextBrowser preview;
};
#endif // MDI_CHILD_H