Skip to content

Commit a9a08da

Browse files
committed
Implemented double cursor for hex and ascii area
1 parent d03d8f3 commit a9a08da

3 files changed

Lines changed: 58 additions & 48 deletions

File tree

fhex.pro.user

Lines changed: 43 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!DOCTYPE QtCreatorProject>
3-
<!-- Written by QtCreator 4.6.2, 2020-02-22T21:39:46. -->
3+
<!-- Written by QtCreator 4.9.2, 2020-02-25T11:08:31. -->
44
<qtcreator>
55
<data>
66
<variable>EnvironmentId</variable>
7-
<value type="QByteArray">{1858d109-671c-414d-8c6d-528b11c0a923}</value>
7+
<value type="QByteArray">{68e0f943-aa3f-49e5-af15-6a374e05ae37}</value>
88
</data>
99
<data>
1010
<variable>ProjectExplorer.Project.ActiveTarget</variable>
@@ -54,19 +54,22 @@
5454
</data>
5555
<data>
5656
<variable>ProjectExplorer.Project.PluginSettings</variable>
57-
<valuemap type="QVariantMap"/>
57+
<valuemap type="QVariantMap">
58+
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey"/>
59+
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
60+
</valuemap>
5861
</data>
5962
<data>
6063
<variable>ProjectExplorer.Project.Target.0</variable>
6164
<valuemap type="QVariantMap">
62-
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.9.6 (qt5)</value>
63-
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.9.6 (qt5)</value>
64-
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{72b86e56-90d4-4266-a0d2-521926e6e4a3}</value>
65+
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
66+
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
67+
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{19bf5fa5-adef-42c4-8a55-f98571151d41}</value>
6568
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
6669
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
6770
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
6871
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
69-
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/greg/Scrivania/Varie/build-fhex-Qt_5_9_6_qt5-Debug</value>
72+
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gregp/Scrivania/varie/projects/build-fhex-Desktop-Debug</value>
7073
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
7174
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
7275
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -84,13 +87,11 @@
8487
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
8588
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
8689
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
87-
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
88-
<value type="QString">-w</value>
89-
<value type="QString">-r</value>
90-
</valuelist>
90+
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
9191
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
9292
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
9393
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
94+
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
9495
</valuemap>
9596
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
9697
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
@@ -103,13 +104,11 @@
103104
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
104105
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
105106
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
106-
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
107-
<value type="QString">-w</value>
108-
<value type="QString">-r</value>
109-
</valuelist>
107+
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
110108
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
111109
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
112110
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
111+
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
113112
</valuemap>
114113
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
115114
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
@@ -126,7 +125,7 @@
126125
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
127126
</valuemap>
128127
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
129-
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/greg/Scrivania/Varie/build-fhex-Qt_5_9_6_qt5-Release</value>
128+
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gregp/Scrivania/varie/projects/build-fhex-Desktop-Release</value>
130129
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
131130
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
132131
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -137,20 +136,18 @@
137136
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
138137
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
139138
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
140-
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
139+
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
141140
</valuemap>
142141
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
143142
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
144143
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
145144
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
146145
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
147-
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
148-
<value type="QString">-w</value>
149-
<value type="QString">-r</value>
150-
</valuelist>
146+
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
151147
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
152148
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
153149
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
150+
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
154151
</valuemap>
155152
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
156153
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
@@ -163,13 +160,11 @@
163160
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
164161
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
165162
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
166-
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
167-
<value type="QString">-w</value>
168-
<value type="QString">-r</value>
169-
</valuelist>
163+
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
170164
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
171165
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
172166
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
167+
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
173168
</valuemap>
174169
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
175170
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
@@ -186,7 +181,7 @@
186181
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
187182
</valuemap>
188183
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
189-
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/greg/Scrivania/Varie/build-fhex-Qt_5_9_6_qt5-Profile</value>
184+
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/gregp/Scrivania/varie/projects/build-fhex-Desktop-Profile</value>
190185
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
191186
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
192187
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -197,20 +192,18 @@
197192
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
198193
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
199194
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
200-
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
195+
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
201196
</valuemap>
202197
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
203198
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
204199
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
205200
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
206201
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
207-
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
208-
<value type="QString">-w</value>
209-
<value type="QString">-r</value>
210-
</valuelist>
202+
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
211203
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
212204
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
213205
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
206+
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
214207
</valuemap>
215208
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
216209
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
@@ -223,13 +216,11 @@
223216
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
224217
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
225218
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
226-
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
227-
<value type="QString">-w</value>
228-
<value type="QString">-r</value>
229-
</valuelist>
219+
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
230220
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
231221
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
232222
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
223+
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
233224
</valuemap>
234225
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
235226
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
@@ -261,6 +252,15 @@
261252
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
262253
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
263254
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
255+
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
256+
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
257+
<value type="QString">cpu-cycles</value>
258+
</valuelist>
259+
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
260+
<value type="int" key="Analyzer.Perf.Frequency">250</value>
261+
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
262+
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
263+
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
264264
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
265265
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
266266
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
@@ -275,6 +275,7 @@
275275
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
276276
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
277277
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
278+
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
278279
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
279280
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
280281
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
@@ -304,19 +305,17 @@
304305
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
305306
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">fhex</value>
306307
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
307-
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/greg/Scrivania/Varie/fhex/fhex.pro</value>
308-
<value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
309-
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
310-
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">fhex.pro</value>
311-
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
312-
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
313-
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default"></value>
308+
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/gregp/Scrivania/varie/projects/fhex/fhex.pro</value>
309+
<value type="QString" key="RunConfiguration.Arguments"></value>
314310
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
315311
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
316312
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
313+
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
317314
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
318315
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
319316
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
317+
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
318+
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/gregp/Scrivania/varie/projects/build-fhex-Desktop-Release</value>
320319
</valuemap>
321320
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
322321
</valuemap>
@@ -327,10 +326,10 @@
327326
</data>
328327
<data>
329328
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
330-
<value type="int">18</value>
329+
<value type="int">21</value>
331330
</data>
332331
<data>
333332
<variable>Version</variable>
334-
<value type="int">18</value>
333+
<value type="int">21</value>
335334
</data>
336335
</qtcreator>

src/qhexedit.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ void QHexEdit::setCursorPosition(qint64 position)
157157
// 1. delete old cursor
158158
_blink = false;
159159
viewport()->update(_cursorRect);
160+
viewport()->update(_secondCursor);
160161

161162
// 2. Check, if cursor in range?
162163
if (position > (_chunks->size() * 2 - 1))
@@ -186,6 +187,7 @@ void QHexEdit::setCursorPosition(qint64 position)
186187
// 4. Immediately draw new cursor
187188
_blink = true;
188189
viewport()->update(_cursorRect);
190+
viewport()->update(_secondCursor);
189191
emit currentAddressChanged(_bPosCurrent);
190192
}
191193

@@ -973,18 +975,25 @@ void QHexEdit::paintEvent(QPaintEvent *event)
973975
}
974976
else
975977
{
976-
if (_blink && hasFocus())
978+
if (_blink && hasFocus()) {
977979
painter.fillRect(_cursorRect, this->palette().color(QPalette::WindowText));
980+
if (_editAreaIsAscii) {
981+
int pos = (hexPositionInShowData % (_bytesPerLine*2));
982+
_secondCursor = QRect(_pxPosHexX - pxOfsX + ((pos*2 - pos/2) * _pxCharWidth), _pxCursorY + _pxCursorWidth, _pxCharWidth, _pxCursorWidth);
983+
} else {
984+
_secondCursor = QRect(_pxPosAsciiX - pxOfsX + (((hexPositionInShowData/2) % _bytesPerLine) * _pxCharWidth), _pxCursorY + _pxCursorWidth, _pxCharWidth, _pxCursorWidth);
985+
}
986+
painter.fillRect(_secondCursor, this->palette().color(QPalette::WindowText));
987+
}
978988
}
979989

980990
if (_editAreaIsAscii)
981991
{
982992
// every 2 hex there is 1 ascii
983993
int asciiPositionInShowData = hexPositionInShowData / 2;
984994
int ch = (uchar)_dataShown.at(asciiPositionInShowData);
985-
if (ch < ' ' || ch > '~')
986-
ch = '.';
987-
painter.drawText(_pxCursorX - pxOfsX, _pxCursorY - 2, QChar(ch));
995+
if ((ch >= ' ') && (ch <= '~'))
996+
painter.drawText(_pxCursorX - pxOfsX, _pxCursorY - 2, QChar(ch));
988997
}
989998
else
990999
{
@@ -1193,6 +1202,7 @@ void QHexEdit::updateCursor()
11931202
else
11941203
_blink = true;
11951204
viewport()->update(_cursorRect);
1205+
viewport()->update(_secondCursor);
11961206
}
11971207

11981208
QPoint QHexEdit::getOffsetPos(qint64 offset) {

src/qhexedit.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,7 @@ private slots:
447447
QTimer _cursorTimer; // for blinking cursor
448448
qint64 _cursorPosition; // absolute position of cursor, 1 Byte == 2 tics
449449
QRect _cursorRect; // physical dimensions of cursor
450+
QRect _secondCursor;
450451
QByteArray _data; // QHexEdit's data, when setup with QByteArray
451452
QByteArray _dataShown; // data in the current View
452453
QByteArray _hexDataShown; // data in view, transformed to hex

0 commit comments

Comments
 (0)