| 
									
										
										
										
											2013-08-29 23:35:09 -04:00
										 |  |  | #ifndef QHEXEDIT_P_H
 | 
					
						
							|  |  |  | #define QHEXEDIT_P_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** \cond docNever */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <QtGui>
 | 
					
						
							| 
									
										
										
										
											2014-08-19 21:34:00 +10:00
										 |  |  | #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
 | 
					
						
							|  |  |  | #include <QtWidgets>
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2013-08-29 23:35:09 -04:00
										 |  |  | #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
 | 
					
						
							|  |  |  | 
 |