| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- #ifndef QHEXEDIT_P_H
- #define QHEXEDIT_P_H
- /** \cond docNever */
- #include <QtGui>
- #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
- #include <QtWidgets>
- #endif
- #include "xbytearray.h"
- class QHexEditPrivate : public QWidget
- {
- Q_OBJECT
- public:
- QHexEditPrivate(QScrollArea *parent);
- void setAddressAreaColor(QColor const &color);
- QColor addressAreaColor();
- void setAddressOffset(int offset);
- int addressOffset();
- void setCursorPos(int position);
- int cursorPos();
- void setData(QByteArray const &data);
- QByteArray data();
- void setHighlightingColor(QColor const &color);
- QColor highlightingColor();
- void setOverwriteMode(bool overwriteMode);
- bool overwriteMode();
- void setReadOnly(bool readOnly);
- bool isReadOnly();
- void setSelectionColor(QColor const &color);
- QColor selectionColor();
- XByteArray & xData();
- int indexOf(const QByteArray & ba, int from = 0);
- void insert(int index, const QByteArray & ba);
- void insert(int index, char ch);
- int lastIndexOf(const QByteArray & ba, int from = 0);
- void remove(int index, int len=1);
- void replace(int index, char ch);
- void replace(int index, const QByteArray & ba);
- void replace(int pos, int len, const QByteArray & after);
- void setAddressArea(bool addressArea);
- void setAddressWidth(int addressWidth);
- void setAsciiArea(bool asciiArea);
- void setHighlighting(bool mode);
- virtual void setFont(const QFont &font);
- void undo();
- void redo();
- QString toRedableString();
- QString selectionToReadableString();
- signals:
- void currentAddressChanged(int address);
- void currentSizeChanged(int size);
- void dataChanged();
- void overwriteModeChanged(bool state);
- protected:
- void keyPressEvent(QKeyEvent * event);
- void mouseMoveEvent(QMouseEvent * event);
- void mousePressEvent(QMouseEvent * event);
- void paintEvent(QPaintEvent *event);
- int cursorPos(QPoint pos); // calc cursorpos from graphics position. DOES NOT STORE POSITION
- void resetSelection(int pos); // set selectionStart and selectionEnd to pos
- void resetSelection(); // set selectionEnd to selectionStart
- void setSelection(int pos); // set min (if below init) or max (if greater init)
- int getSelectionBegin();
- int getSelectionEnd();
- private slots:
- void updateCursor();
- private:
- void adjust();
- void ensureVisible();
- QColor _addressAreaColor;
- QColor _highlightingColor;
- QColor _selectionColor;
- QScrollArea *_scrollArea;
- QTimer _cursorTimer;
- QUndoStack *_undoStack;
- XByteArray _xData; // Hält den Inhalt des Hex Editors
- bool _blink; // true: then cursor blinks
- bool _renderingRequired; // Flag to store that rendering is necessary
- bool _addressArea; // left area of QHexEdit
- bool _asciiArea; // medium area
- bool _highlighting; // highlighting of changed bytes
- bool _overwriteMode;
- bool _readOnly; // true: the user can only look and navigate
- int _charWidth, _charHeight; // char dimensions (dpendend on font)
- int _cursorX, _cursorY; // graphics position of the cursor
- int _cursorPosition; // character positioin in stream (on byte ends in to steps)
- int _xPosAdr, _xPosHex, _xPosAscii; // graphics x-position of the areas
- int _selectionBegin; // First selected char
- int _selectionEnd; // Last selected char
- int _selectionInit; // That's, where we pressed the mouse button
- int _size;
- };
- /** \endcond docNever */
- #endif
|