39 #ifndef __OPENFLUID_UIWARESDEV_WARESRCFILEEDITOR_HPP__
40 #define __OPENFLUID_UIWARESDEV_WARESRCFILEEDITOR_HPP__
43 #include <QPlainTextEdit>
46 #include <QSignalMapper>
55 #include <openfluid/ui/config.hpp>
58 namespace openfluid {
namespace ui {
namespace waresdev {
61 class WareSrcSyntaxHighlighter;
71 void updateLineNumberAreaWidth();
73 void highlightCurrentLine();
75 void updateLineNumberArea(
const QRect& Rect,
int);
77 void onChanged(
bool Changed);
79 void onInsertRequested(
const QString& Str);
81 void insertCompletion();
83 void onCompletionPopupCurrentRowChanged(
const QModelIndex &Current,
const QModelIndex& Previous);
93 QStringList m_ContentList;
95 QColor Red = QColor(openfluid::ui::config::LINEMARKER_ERRCOLOR);
96 QColor Orange = QColor(openfluid::ui::config::LINEMARKER_WARNCOLOR);
103 m_MajorMarkerType(MsgType)
105 QString Cleared = Content.trimmed();
106 if (!Cleared.isEmpty())
108 m_ContentList.append(Cleared);
117 QColor getColor()
const
131 QString getContent()
const
133 if (m_ContentList.isEmpty())
138 if (m_ContentList.size() == 1)
140 return QString(
"<html>%1</html>").arg(m_ContentList[0]);
143 return QString(
"• %1").arg(m_ContentList.join(
"<br/>• "));
155 m_MajorMarkerType = MsgType;
158 m_ContentList.append(Content.trimmed());
164 #if (QT_VERSION_MAJOR < 6)
165 QRegExp m_SelectionTagsRegExp;
166 QRegExp m_AllTagsRegExp;
167 QRegExp m_WordPartRegExp;
169 QRegularExpression m_SelectionTagsRegExp;
170 QRegularExpression m_AllTagsRegExp;
171 QRegularExpression m_WordPartRegExp;
174 QWidget* mp_LineNumberArea;
177 QColor m_LineNbAreaColor = QColor(
"#F8F8FF");
178 QColor m_LineNbTextColor = QColor(
"#999999");
180 QString m_IndentString;
182 int m_SpaceCharWidth;
186 QSignalMapper* mp_SignalMapper;
188 QMap<QString, QMenu*> m_InsertionMenus;
190 QCompleter* mp_Completer;
192 QMap<QTextBlock, LineMarker> m_LineMarkersByBlock;
194 bool m_ShowLineMarkers =
true;
198 QTextCursor TextCursor;
200 QTextBlock FirstBlock;
209 QString CommentExtraSpaceString =
" ";
211 void writeString(
const QString& Str,
int InitialIndentInSpaceNb);
213 void insertNewLine();
215 bool findString(
const QString& StringToFind, QTextDocument::FindFlags Options);
217 bool replaceString(
const QString& StringToFind,
const QString& StringForReplace, Qt::CaseSensitivity Cs);
219 int getLeadingSpacesCount(
const QString& QStr);
221 bool hasCharInBlockBeforePos(
int Pos);
223 void selectText(
int StartPos,
int EndPos);
225 SelectionData createSelectionData();
227 void addLinePrefix(
const QString& PrefixStr,
const QTextBlock& Block);
236 int removeLinePrefix(
const QString& PrefixStr,
const QTextBlock& Block);
238 void addMultilinePrefix(
const QString& PrefixStr);
240 void removeMultilinePrefix(
const QString& PrefixStr);
242 void handleSelectionCommenting();
283 const QString& StringForReplace, QTextDocument::FindFlags Options, QString& Message);
330 QAction* mp_ShowMarkersAction =
nullptr;
347 if (Event->type() == QEvent::ToolTip)
349 QHelpEvent* HelpEvent =
static_cast<QHelpEvent*
>(Event);
352 return QWidget::event(Event);
364 QMenu* Menu =
new QMenu();
365 Menu->addAction(mp_ShowMarkersAction);
366 Menu->exec(Event->globalPos());
376 setStyleSheet(
"QToolTip {min-width:300px;}");
381 mp_ShowMarkersAction->setCheckable(
true);
383 connect(mp_ShowMarkersAction, SIGNAL(triggered(
bool)), mp_Editor, SLOT(setShowLineMarkers(
bool)));
Definition: DefaultAction.hpp:54
QVector< Rule > Rules
Definition: CompletionProvider.hpp:108
FindReplaceAction
Definition: FindReplaceDialog.hpp:68
Definition: WareSrcFileEditor.hpp:323
LineNumberArea(WareSrcFileEditor *Editor)
Definition: WareSrcFileEditor.hpp:373
void paintEvent(QPaintEvent *Event)
Definition: WareSrcFileEditor.hpp:335
QSize sizeHint() const
Definition: WareSrcFileEditor.hpp:391
bool event(QEvent *Event)
Definition: WareSrcFileEditor.hpp:345
void contextMenuEvent(QContextMenuEvent *Event)
Definition: WareSrcFileEditor.hpp:360
Definition: WareFileEditor.hpp:55
Definition: WareSrcFileEditor.hpp:65
int lineNumberAreaWidth()
void saveContentToPath(const QString &Path)
void setShowLineMarkers(bool ShowMarkers)
void contextMenuEvent(QContextMenuEvent *Event)
void editorTxtChanged(WareFileEditor *Editor, bool Changed)
bool getShowLineMarkers()
bool findReplace(FindReplaceDialog::FindReplaceAction Action, const QString &StringToFind, const QString &StringForReplace, QTextDocument::FindFlags Options, QString &Message)
void updateLineNumberArea()
void selectLine(int LineNumber)
void lineNumberAreaPaintEvent(QPaintEvent *Event)
void tooltipEvent(const QPoint &Position)
QString getSelectedText()
void resizeEvent(QResizeEvent *Event)
virtual ~WareSrcFileEditor()
void addLineMessage(WareSrcMsgParser::WareSrcMsg Message)
void keyPressEvent(QKeyEvent *Event)
WareSrcFileEditor(const QString &FilePath, QWidget *Parent=nullptr)
Definition: WareSrcMsgParser.hpp:68
MessageType
Definition: WareSrcMsgParser.hpp:72
Definition: WareSrcSyntaxHighlighter.hpp:55
#define OPENFLUID_API
Definition: dllexport.hpp:86
Definition: ApplicationException.hpp:47