roby 0.7.3 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +7 -5
- data/Manifest.txt +91 -16
- data/README.txt +24 -24
- data/Rakefile +92 -64
- data/app/config/app.yml +42 -43
- data/app/config/init.rb +26 -0
- data/benchmark/alloc_misc.rb +123 -0
- data/benchmark/discovery_latency.rb +67 -0
- data/benchmark/garbage_collection.rb +48 -0
- data/benchmark/genom.rb +31 -0
- data/benchmark/transactions.rb +62 -0
- data/bin/roby +1 -1
- data/bin/roby-log +16 -6
- data/doc/guide/.gitignore +2 -0
- data/doc/guide/config.yaml +34 -0
- data/doc/guide/ext/init.rb +14 -0
- data/doc/guide/ext/previous_next.rb +40 -0
- data/doc/guide/ext/rdoc_links.rb +33 -0
- data/doc/guide/index.rdoc +16 -0
- data/doc/guide/overview.rdoc +62 -0
- data/doc/guide/plan_modifications.rdoc +67 -0
- data/doc/guide/src/abstraction/achieve_with.page +8 -0
- data/doc/guide/src/abstraction/forwarding.page +8 -0
- data/doc/guide/src/abstraction/hierarchy.page +19 -0
- data/doc/guide/src/abstraction/index.page +28 -0
- data/doc/guide/src/abstraction/task_models.page +13 -0
- data/doc/guide/src/basics.template +6 -0
- data/doc/guide/src/basics/app.page +139 -0
- data/doc/guide/src/basics/code_examples.page +33 -0
- data/doc/guide/src/basics/dry.page +69 -0
- data/doc/guide/src/basics/errors.page +443 -0
- data/doc/guide/src/basics/events.page +179 -0
- data/doc/guide/src/basics/hierarchy.page +275 -0
- data/doc/guide/src/basics/index.page +11 -0
- data/doc/guide/src/basics/log_replay/goForward_1.png +0 -0
- data/doc/guide/src/basics/log_replay/goForward_2.png +0 -0
- data/doc/guide/src/basics/log_replay/goForward_3.png +0 -0
- data/doc/guide/src/basics/log_replay/goForward_4.png +0 -0
- data/doc/guide/src/basics/log_replay/goForward_5.png +0 -0
- data/doc/guide/src/basics/log_replay/hierarchy_error_1.png +0 -0
- data/doc/guide/src/basics/log_replay/hierarchy_error_2.png +0 -0
- data/doc/guide/src/basics/log_replay/hierarchy_error_3.png +0 -0
- data/doc/guide/src/basics/log_replay/plan_repair_1.png +0 -0
- data/doc/guide/src/basics/log_replay/plan_repair_2.png +0 -0
- data/doc/guide/src/basics/log_replay/plan_repair_3.png +0 -0
- data/doc/guide/src/basics/log_replay/plan_repair_4.png +0 -0
- data/doc/guide/src/basics/log_replay/roby_log_main_window.png +0 -0
- data/doc/guide/src/basics/log_replay/roby_log_relation_window.png +0 -0
- data/doc/guide/src/basics/log_replay/roby_replay_event_representation.png +0 -0
- data/doc/guide/src/basics/plan_objects.page +71 -0
- data/doc/guide/src/basics/relations_display.page +203 -0
- data/doc/guide/src/basics/roby_cycle_overview.png +0 -0
- data/doc/guide/src/basics/shell.page +102 -0
- data/doc/guide/src/basics/summary.page +32 -0
- data/doc/guide/src/basics/tasks.page +357 -0
- data/doc/guide/src/basics_shell_header.txt +16 -0
- data/doc/guide/src/cycle/cycle-overview.png +0 -0
- data/doc/guide/src/cycle/cycle-overview.svg +208 -0
- data/doc/guide/src/cycle/error_handling.page +168 -0
- data/doc/guide/src/cycle/error_instantaneous_repair.png +0 -0
- data/doc/guide/src/cycle/error_instantaneous_repair.svg +1224 -0
- data/doc/guide/src/cycle/garbage_collection.page +10 -0
- data/doc/guide/src/cycle/index.page +23 -0
- data/doc/guide/src/cycle/propagation.page +154 -0
- data/doc/guide/src/cycle/propagation_diamond.png +0 -0
- data/doc/guide/src/cycle/propagation_diamond.svg +1279 -0
- data/doc/guide/src/default.css +319 -0
- data/doc/guide/src/default.template +74 -0
- data/doc/guide/src/htmldoc.metainfo +20 -0
- data/doc/guide/src/htmldoc.virtual +18 -0
- data/doc/guide/src/images/bodybg.png +0 -0
- data/doc/guide/src/images/contbg.png +0 -0
- data/doc/guide/src/images/footerbg.png +0 -0
- data/doc/guide/src/images/gradient1.png +0 -0
- data/doc/guide/src/images/gradient2.png +0 -0
- data/doc/guide/src/index.page +7 -0
- data/doc/guide/src/introduction/index.page +29 -0
- data/doc/guide/src/introduction/install.page +133 -0
- data/doc/{papers.rdoc → guide/src/introduction/publications.page} +5 -2
- data/doc/{videos.rdoc → guide/src/introduction/videos.page} +4 -2
- data/doc/guide/src/plugins/fault_tolerance.page +44 -0
- data/doc/guide/src/plugins/index.page +11 -0
- data/doc/guide/src/plugins/subsystems.page +45 -0
- data/doc/guide/src/relations/dependency.page +89 -0
- data/doc/guide/src/relations/index.page +12 -0
- data/doc/misc/update_github +24 -0
- data/doc/tutorials/02-GoForward.rdoc +3 -3
- data/ext/graph/graph.cc +46 -0
- data/lib/roby.rb +57 -22
- data/lib/roby/app.rb +132 -112
- data/lib/roby/app/plugins/rake.rb +21 -0
- data/lib/roby/app/rake.rb +0 -7
- data/lib/roby/app/run.rb +1 -1
- data/lib/roby/app/scripts/distributed.rb +1 -2
- data/lib/roby/app/scripts/generate/bookmarks.rb +1 -1
- data/lib/roby/app/scripts/results.rb +2 -1
- data/lib/roby/app/scripts/run.rb +6 -2
- data/lib/roby/app/scripts/shell.rb +11 -11
- data/lib/roby/config.rb +1 -1
- data/lib/roby/decision_control.rb +62 -3
- data/lib/roby/distributed.rb +4 -0
- data/lib/roby/distributed/base.rb +8 -0
- data/lib/roby/distributed/communication.rb +12 -8
- data/lib/roby/distributed/connection_space.rb +61 -44
- data/lib/roby/distributed/distributed_object.rb +1 -1
- data/lib/roby/distributed/notifications.rb +22 -30
- data/lib/roby/distributed/peer.rb +13 -8
- data/lib/roby/distributed/proxy.rb +5 -5
- data/lib/roby/distributed/subscription.rb +4 -4
- data/lib/roby/distributed/transaction.rb +3 -3
- data/lib/roby/event.rb +176 -110
- data/lib/roby/exceptions.rb +12 -4
- data/lib/roby/execution_engine.rb +1604 -0
- data/lib/roby/external_process_task.rb +225 -0
- data/lib/roby/graph.rb +0 -6
- data/lib/roby/interface.rb +221 -137
- data/lib/roby/log/console.rb +5 -3
- data/lib/roby/log/data_stream.rb +94 -16
- data/lib/roby/log/dot.rb +8 -8
- data/lib/roby/log/event_stream.rb +13 -3
- data/lib/roby/log/file.rb +43 -18
- data/lib/roby/log/gui/basic_display_ui.rb +89 -0
- data/lib/roby/log/gui/chronicle_view_ui.rb +90 -0
- data/lib/roby/log/gui/data_displays.rb +4 -5
- data/lib/roby/log/gui/data_displays_ui.rb +146 -0
- data/lib/roby/log/gui/relations.rb +18 -18
- data/lib/roby/log/gui/relations_ui.rb +120 -0
- data/lib/roby/log/gui/relations_view_ui.rb +144 -0
- data/lib/roby/log/gui/replay.rb +41 -13
- data/lib/roby/log/gui/replay_controls.rb +3 -0
- data/lib/roby/log/gui/replay_controls.ui +133 -110
- data/lib/roby/log/gui/replay_controls_ui.rb +249 -0
- data/lib/roby/log/hooks.rb +19 -18
- data/lib/roby/log/logger.rb +7 -6
- data/lib/roby/log/notifications.rb +4 -4
- data/lib/roby/log/plan_rebuilder.rb +20 -22
- data/lib/roby/log/relations.rb +44 -16
- data/lib/roby/log/server.rb +1 -4
- data/lib/roby/log/timings.rb +88 -19
- data/lib/roby/plan-object.rb +135 -11
- data/lib/roby/plan.rb +408 -224
- data/lib/roby/planning/loops.rb +32 -25
- data/lib/roby/planning/model.rb +157 -51
- data/lib/roby/planning/task.rb +47 -20
- data/lib/roby/query.rb +128 -92
- data/lib/roby/relations.rb +254 -136
- data/lib/roby/relations/conflicts.rb +6 -9
- data/lib/roby/relations/dependency.rb +358 -0
- data/lib/roby/relations/ensured.rb +0 -1
- data/lib/roby/relations/error_handling.rb +0 -1
- data/lib/roby/relations/events.rb +0 -2
- data/lib/roby/relations/executed_by.rb +26 -11
- data/lib/roby/relations/planned_by.rb +14 -14
- data/lib/roby/robot.rb +46 -0
- data/lib/roby/schedulers/basic.rb +34 -0
- data/lib/roby/standalone.rb +4 -0
- data/lib/roby/standard_errors.rb +21 -15
- data/lib/roby/state/events.rb +5 -4
- data/lib/roby/support.rb +107 -6
- data/lib/roby/task-operations.rb +23 -19
- data/lib/roby/task.rb +522 -148
- data/lib/roby/task_index.rb +80 -0
- data/lib/roby/test/common.rb +283 -44
- data/lib/roby/test/distributed.rb +53 -37
- data/lib/roby/test/testcase.rb +9 -204
- data/lib/roby/test/tools.rb +3 -3
- data/lib/roby/transactions.rb +154 -111
- data/lib/roby/transactions/proxy.rb +40 -7
- data/manifest.xml +20 -0
- data/plugins/fault_injection/README.txt +0 -3
- data/plugins/fault_injection/Rakefile +2 -8
- data/plugins/fault_injection/app.rb +1 -1
- data/plugins/fault_injection/fault_injection.rb +3 -3
- data/plugins/fault_injection/test/test_fault_injection.rb +19 -25
- data/plugins/subsystems/README.txt +0 -3
- data/plugins/subsystems/Rakefile +2 -7
- data/plugins/subsystems/app.rb +27 -16
- data/plugins/subsystems/test/app/config/init.rb +3 -0
- data/plugins/subsystems/test/app/planners/main.rb +1 -1
- data/plugins/subsystems/test/app/tasks/services.rb +1 -1
- data/plugins/subsystems/test/test_subsystems.rb +23 -16
- data/test/distributed/test_communication.rb +32 -15
- data/test/distributed/test_connection.rb +28 -26
- data/test/distributed/test_execution.rb +59 -54
- data/test/distributed/test_mixed_plan.rb +34 -34
- data/test/distributed/test_plan_notifications.rb +26 -26
- data/test/distributed/test_protocol.rb +57 -48
- data/test/distributed/test_query.rb +11 -7
- data/test/distributed/test_remote_plan.rb +71 -71
- data/test/distributed/test_transaction.rb +50 -47
- data/test/mockups/external_process +28 -0
- data/test/planning/test_loops.rb +163 -119
- data/test/planning/test_model.rb +3 -3
- data/test/planning/test_task.rb +27 -7
- data/test/relations/test_conflicts.rb +3 -3
- data/test/relations/test_dependency.rb +324 -0
- data/test/relations/test_ensured.rb +2 -2
- data/test/relations/test_executed_by.rb +94 -19
- data/test/relations/test_planned_by.rb +11 -9
- data/test/suite_core.rb +6 -3
- data/test/suite_distributed.rb +1 -0
- data/test/suite_planning.rb +1 -0
- data/test/suite_relations.rb +2 -2
- data/test/tasks/test_external_process.rb +126 -0
- data/test/{test_thread_task.rb → tasks/test_thread_task.rb} +17 -20
- data/test/test_bgl.rb +21 -1
- data/test/test_event.rb +229 -155
- data/test/test_exceptions.rb +79 -80
- data/test/test_execution_engine.rb +987 -0
- data/test/test_gui.rb +1 -1
- data/test/test_interface.rb +11 -5
- data/test/test_log.rb +18 -7
- data/test/test_log_server.rb +1 -0
- data/test/test_plan.rb +229 -395
- data/test/test_query.rb +193 -35
- data/test/test_relations.rb +88 -8
- data/test/test_state.rb +55 -37
- data/test/test_support.rb +1 -1
- data/test/test_task.rb +371 -218
- data/test/test_testcase.rb +32 -16
- data/test/test_transactions.rb +211 -170
- data/test/test_transactions_proxy.rb +37 -19
- metadata +169 -71
- data/.gitignore +0 -29
- data/doc/styles/allison.css +0 -314
- data/doc/styles/allison.js +0 -316
- data/doc/styles/allison.rb +0 -276
- data/doc/styles/jamis.rb +0 -593
- data/lib/roby/control.rb +0 -746
- data/lib/roby/executives/simple.rb +0 -30
- data/lib/roby/propagation.rb +0 -562
- data/lib/roby/relations/hierarchy.rb +0 -239
- data/lib/roby/transactions/updates.rb +0 -139
- data/test/relations/test_hierarchy.rb +0 -158
- data/test/test_control.rb +0 -399
- data/test/test_propagation.rb +0 -210
data/lib/roby/log/gui/replay.rb
CHANGED
@@ -17,8 +17,12 @@ class OfflineStreamListModel < DataStreamListModel
|
|
17
17
|
newfiles = Qt::FileDialog.get_open_file_names nil, "New data stream", dir
|
18
18
|
return if newfiles.empty?
|
19
19
|
if !newfiles.empty?
|
20
|
-
|
21
|
-
|
20
|
+
newstreams = Roby.app.data_streams_of(newfiles)
|
21
|
+
if !newstreams.empty?
|
22
|
+
newstreams.each do |s|
|
23
|
+
s.open
|
24
|
+
end
|
25
|
+
return newstreams
|
22
26
|
else
|
23
27
|
Qt::MessageBox.warning nil, "Add data stream", "Cannot determine data stream type for #{newfiles.join(", ")}"
|
24
28
|
return
|
@@ -50,6 +54,8 @@ class Replay < Qt::MainWindow
|
|
50
54
|
attr_accessor :initial_time
|
51
55
|
# A set of procs which are to be called to set up the display
|
52
56
|
attr_accessor :initial_setup
|
57
|
+
# Set to true if we are playing some data right now
|
58
|
+
attr_predicate :running?, true
|
53
59
|
|
54
60
|
def initialize
|
55
61
|
super()
|
@@ -124,12 +130,14 @@ class Replay < Qt::MainWindow
|
|
124
130
|
if !time || time == Time.at(0)
|
125
131
|
min, max = displayed_streams.inject([nil, nil]) do |(min, max), stream|
|
126
132
|
stream_min, stream_max = stream.range
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
+
if stream_min && stream_max
|
134
|
+
if !min || stream_min < min
|
135
|
+
min = stream_min
|
136
|
+
end
|
137
|
+
if !max || stream_max > max
|
138
|
+
max = stream_max
|
139
|
+
end
|
140
|
+
end
|
133
141
|
[min, max]
|
134
142
|
end
|
135
143
|
|
@@ -180,6 +188,7 @@ class Replay < Qt::MainWindow
|
|
180
188
|
end
|
181
189
|
|
182
190
|
def stop
|
191
|
+
self.running = false
|
183
192
|
if play_timer
|
184
193
|
ui_controls.play.checked = false
|
185
194
|
play_timer.stop
|
@@ -197,8 +206,14 @@ class Replay < Qt::MainWindow
|
|
197
206
|
play_until(time + time_slice * play_speed)
|
198
207
|
end
|
199
208
|
slots 'play_step_timer()'
|
209
|
+
|
210
|
+
def play_next_nonempty
|
211
|
+
self.running = true
|
212
|
+
while running? && !play_step
|
213
|
+
end
|
214
|
+
end
|
200
215
|
|
201
|
-
def play_until(max_time, integrate =
|
216
|
+
def play_until(max_time, integrate = false)
|
202
217
|
start_at = Time.now
|
203
218
|
displayed_streams.inject(timeline = []) do |timeline, s|
|
204
219
|
if s.next_time
|
@@ -212,15 +227,24 @@ class Replay < Qt::MainWindow
|
|
212
227
|
return
|
213
228
|
end
|
214
229
|
|
230
|
+
needs_display = Set.new
|
215
231
|
updated_streams = Set.new
|
216
232
|
|
217
233
|
timeline.sort_by { |t, _| t }
|
218
234
|
while !timeline.empty? && (timeline[0][0] - max_time) < 0.001
|
219
235
|
@time, stream = timeline.first
|
220
236
|
|
221
|
-
|
222
|
-
|
223
|
-
|
237
|
+
unless integrate
|
238
|
+
if stream.clear_integrated
|
239
|
+
needs_display << stream
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
if stream.advance
|
244
|
+
needs_display << stream
|
245
|
+
updated_streams << stream
|
246
|
+
end
|
247
|
+
|
224
248
|
if next_time = stream.next_time
|
225
249
|
timeline[0] = [next_time, stream]
|
226
250
|
else
|
@@ -231,7 +255,7 @@ class Replay < Qt::MainWindow
|
|
231
255
|
|
232
256
|
replayed = Time.now
|
233
257
|
|
234
|
-
|
258
|
+
needs_display.each do |stream|
|
235
259
|
stream.display
|
236
260
|
end
|
237
261
|
|
@@ -250,6 +274,7 @@ class Replay < Qt::MainWindow
|
|
250
274
|
end
|
251
275
|
end
|
252
276
|
update_time_display
|
277
|
+
!updated_streams.empty?
|
253
278
|
|
254
279
|
rescue Exception => e
|
255
280
|
message = "<html>#{Qt.escape(e.message)}<ul><li>#{e.backtrace.join("</li><li>")}</li></ul></html>"
|
@@ -277,6 +302,9 @@ class Replay < Qt::MainWindow
|
|
277
302
|
replay = self.new
|
278
303
|
|
279
304
|
parser = OptionParser.new do |opt|
|
305
|
+
opt.on('--require=FILE', '-r FILE', String, 'load this file at startup') do |file|
|
306
|
+
require file
|
307
|
+
end
|
280
308
|
Ui_DataDisplays::DISPLAYS.each_value do |config_ui|
|
281
309
|
config_ui.setup_optparse(opt, replay)
|
282
310
|
end
|
@@ -1,52 +1,53 @@
|
|
1
|
-
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<ui version="4.0">
|
2
3
|
<class>ReplayControls</class>
|
3
|
-
<widget class="QWidget" name="ReplayControls"
|
4
|
-
<property name="geometry"
|
4
|
+
<widget class="QWidget" name="ReplayControls">
|
5
|
+
<property name="geometry">
|
5
6
|
<rect>
|
6
7
|
<x>0</x>
|
7
8
|
<y>0</y>
|
8
|
-
<width>
|
9
|
-
<height>
|
9
|
+
<width>442</width>
|
10
|
+
<height>167</height>
|
10
11
|
</rect>
|
11
12
|
</property>
|
12
|
-
<property name="windowTitle"
|
13
|
+
<property name="windowTitle">
|
13
14
|
<string>Form</string>
|
14
15
|
</property>
|
15
|
-
<layout class="QVBoxLayout"
|
16
|
+
<layout class="QVBoxLayout">
|
16
17
|
<item>
|
17
|
-
<widget class="QGroupBox" name="grp_play"
|
18
|
-
<property name="title"
|
18
|
+
<widget class="QGroupBox" name="grp_play">
|
19
|
+
<property name="title">
|
19
20
|
<string>Play</string>
|
20
21
|
</property>
|
21
|
-
<layout class="QVBoxLayout" >
|
22
|
+
<layout class="QVBoxLayout" name="verticalLayout">
|
22
23
|
<item>
|
23
|
-
<layout class="QHBoxLayout" >
|
24
|
+
<layout class="QHBoxLayout" name="horizontalLayout">
|
24
25
|
<item>
|
25
|
-
<widget class="QProgressBar" name="progress"
|
26
|
-
<property name="value"
|
26
|
+
<widget class="QProgressBar" name="progress">
|
27
|
+
<property name="value">
|
27
28
|
<number>0</number>
|
28
29
|
</property>
|
29
|
-
<property name="orientation"
|
30
|
+
<property name="orientation">
|
30
31
|
<enum>Qt::Horizontal</enum>
|
31
32
|
</property>
|
32
33
|
</widget>
|
33
34
|
</item>
|
34
35
|
<item>
|
35
|
-
<widget class="QPushButton" name="goto"
|
36
|
-
<property name="text"
|
36
|
+
<widget class="QPushButton" name="goto">
|
37
|
+
<property name="text">
|
37
38
|
<string>&Goto</string>
|
38
39
|
</property>
|
39
40
|
</widget>
|
40
41
|
</item>
|
41
42
|
<item>
|
42
|
-
<widget class="QLCDNumber" name="time_lcd"
|
43
|
-
<property name="numDigits"
|
43
|
+
<widget class="QLCDNumber" name="time_lcd">
|
44
|
+
<property name="numDigits">
|
44
45
|
<number>6</number>
|
45
46
|
</property>
|
46
|
-
<property name="segmentStyle"
|
47
|
+
<property name="segmentStyle">
|
47
48
|
<enum>QLCDNumber::Flat</enum>
|
48
49
|
</property>
|
49
|
-
<property name="value" stdset="0"
|
50
|
+
<property name="value" stdset="0">
|
50
51
|
<double>0.000000000000000</double>
|
51
52
|
</property>
|
52
53
|
</widget>
|
@@ -54,202 +55,224 @@
|
|
54
55
|
</layout>
|
55
56
|
</item>
|
56
57
|
<item>
|
57
|
-
<layout class="QHBoxLayout"
|
58
|
+
<layout class="QHBoxLayout">
|
58
59
|
<item>
|
59
|
-
<widget class="QLabel" name="textLabel1"
|
60
|
-
<property name="text"
|
60
|
+
<widget class="QLabel" name="textLabel1">
|
61
|
+
<property name="text">
|
61
62
|
<string>Speed</string>
|
62
63
|
</property>
|
63
|
-
<property name="wordWrap"
|
64
|
+
<property name="wordWrap">
|
64
65
|
<bool>false</bool>
|
65
66
|
</property>
|
66
67
|
</widget>
|
67
68
|
</item>
|
68
69
|
<item>
|
69
|
-
<widget class="QLineEdit" name="speed"
|
70
|
-
<property name="sizePolicy"
|
71
|
-
<sizepolicy
|
70
|
+
<widget class="QLineEdit" name="speed">
|
71
|
+
<property name="sizePolicy">
|
72
|
+
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
72
73
|
<horstretch>1</horstretch>
|
73
74
|
<verstretch>0</verstretch>
|
74
75
|
</sizepolicy>
|
75
76
|
</property>
|
76
|
-
<property name="maximumSize"
|
77
|
+
<property name="maximumSize">
|
77
78
|
<size>
|
78
79
|
<width>80</width>
|
79
80
|
<height>32767</height>
|
80
81
|
</size>
|
81
82
|
</property>
|
82
|
-
<property name="toolTip"
|
83
|
-
<string><html
|
83
|
+
<property name="toolTip">
|
84
|
+
<string><html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
84
85
|
p, li { white-space: pre-wrap; }
|
85
|
-
</style
|
86
|
-
<p style
|
87
|
-
<p style
|
88
|
-
<p style
|
86
|
+
</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
|
87
|
+
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Current playing speed</span></p>
|
88
|
+
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"><span style=" font-weight:400;">it is the factor between the time in the log file and the time of replay. For instance, 2 means that we replay twice as fast as in reality.</span></p>
|
89
|
+
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html></string>
|
89
90
|
</property>
|
90
|
-
<property name="text"
|
91
|
+
<property name="text">
|
91
92
|
<string>1</string>
|
92
93
|
</property>
|
93
|
-
<property name="alignment"
|
94
|
+
<property name="alignment">
|
94
95
|
<set>Qt::AlignRight</set>
|
95
96
|
</property>
|
96
97
|
</widget>
|
97
98
|
</item>
|
98
99
|
<item>
|
99
|
-
<widget class="QPushButton" name="slower"
|
100
|
-
<property name="toolTip"
|
101
|
-
<string><html
|
100
|
+
<widget class="QPushButton" name="slower">
|
101
|
+
<property name="toolTip">
|
102
|
+
<string><html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
102
103
|
p, li { white-space: pre-wrap; }
|
103
|
-
</style
|
104
|
-
<p style
|
104
|
+
</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
|
105
|
+
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Decrease speed</p></body></html></string>
|
105
106
|
</property>
|
106
|
-
<property name="text"
|
107
|
-
<string
|
107
|
+
<property name="text">
|
108
|
+
<string>Slower</string>
|
108
109
|
</property>
|
109
110
|
</widget>
|
110
111
|
</item>
|
111
112
|
<item>
|
112
|
-
<widget class="QPushButton" name="play"
|
113
|
-
<property name="sizePolicy"
|
114
|
-
<sizepolicy
|
113
|
+
<widget class="QPushButton" name="play">
|
114
|
+
<property name="sizePolicy">
|
115
|
+
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
115
116
|
<horstretch>2</horstretch>
|
116
117
|
<verstretch>0</verstretch>
|
117
118
|
</sizepolicy>
|
118
119
|
</property>
|
119
|
-
<property name="toolTip"
|
120
|
-
<string><html
|
120
|
+
<property name="toolTip">
|
121
|
+
<string><html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
121
122
|
p, li { white-space: pre-wrap; }
|
122
|
-
</style
|
123
|
-
<p style
|
123
|
+
</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
|
124
|
+
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Play</p></body></html></string>
|
124
125
|
</property>
|
125
|
-
<property name="text"
|
126
|
-
<string
|
126
|
+
<property name="text">
|
127
|
+
<string>Play</string>
|
127
128
|
</property>
|
128
|
-
<property name="checkable"
|
129
|
+
<property name="checkable">
|
129
130
|
<bool>true</bool>
|
130
131
|
</property>
|
131
132
|
</widget>
|
132
133
|
</item>
|
133
134
|
<item>
|
134
|
-
<widget class="QPushButton" name="faster"
|
135
|
-
<property name="toolTip"
|
136
|
-
<string><html
|
135
|
+
<widget class="QPushButton" name="faster">
|
136
|
+
<property name="toolTip">
|
137
|
+
<string><html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
137
138
|
p, li { white-space: pre-wrap; }
|
138
|
-
</style
|
139
|
-
<p style
|
139
|
+
</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
|
140
|
+
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Increase speed</p></body></html></string>
|
140
141
|
</property>
|
141
|
-
<property name="text"
|
142
|
-
<string
|
142
|
+
<property name="text">
|
143
|
+
<string>Faster</string>
|
143
144
|
</property>
|
144
145
|
</widget>
|
145
146
|
</item>
|
146
147
|
</layout>
|
147
148
|
</item>
|
148
149
|
<item>
|
149
|
-
<layout class="QHBoxLayout" >
|
150
|
+
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
150
151
|
<item>
|
151
|
-
<widget class="QToolButton" name="bookmarks"
|
152
|
-
<property name="text"
|
152
|
+
<widget class="QToolButton" name="bookmarks">
|
153
|
+
<property name="text">
|
153
154
|
<string>Bookmarks</string>
|
154
155
|
</property>
|
155
|
-
<property name="popupMode"
|
156
|
+
<property name="popupMode">
|
156
157
|
<enum>QToolButton::InstantPopup</enum>
|
157
158
|
</property>
|
158
|
-
<property name="toolButtonStyle"
|
159
|
+
<property name="toolButtonStyle">
|
159
160
|
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
160
161
|
</property>
|
161
|
-
<property name="arrowType"
|
162
|
+
<property name="arrowType">
|
162
163
|
<enum>Qt::DownArrow</enum>
|
163
164
|
</property>
|
164
165
|
</widget>
|
165
166
|
</item>
|
166
167
|
<item>
|
167
168
|
<spacer>
|
168
|
-
<property name="orientation"
|
169
|
+
<property name="orientation">
|
169
170
|
<enum>Qt::Horizontal</enum>
|
170
171
|
</property>
|
171
|
-
<property name="sizeHint" >
|
172
|
+
<property name="sizeHint" stdset="0">
|
172
173
|
<size>
|
173
|
-
<width>
|
174
|
+
<width>101</width>
|
174
175
|
<height>20</height>
|
175
176
|
</size>
|
176
177
|
</property>
|
177
178
|
</spacer>
|
178
179
|
</item>
|
179
180
|
<item>
|
180
|
-
<
|
181
|
-
<
|
182
|
-
<
|
181
|
+
<layout class="QGridLayout" name="gridLayout">
|
182
|
+
<item row="0" column="0">
|
183
|
+
<widget class="QPushButton" name="seek_start">
|
184
|
+
<property name="toolTip">
|
185
|
+
<string><html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
183
186
|
p, li { white-space: pre-wrap; }
|
184
|
-
</style
|
185
|
-
<p style
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
187
|
+
</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
|
188
|
+
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to start</p></body></html></string>
|
189
|
+
</property>
|
190
|
+
<property name="text">
|
191
|
+
<string>Go To Beginning</string>
|
192
|
+
</property>
|
193
|
+
<property name="shortcut">
|
194
|
+
<string/>
|
195
|
+
</property>
|
196
|
+
</widget>
|
197
|
+
</item>
|
198
|
+
<item row="0" column="1">
|
199
|
+
<widget class="QPushButton" name="play_step">
|
200
|
+
<property name="toolTip">
|
201
|
+
<string><html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
199
202
|
p, li { white-space: pre-wrap; }
|
200
|
-
</style
|
201
|
-
<p style
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
203
|
+
</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
|
204
|
+
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go forward one step</p></body></html></string>
|
205
|
+
</property>
|
206
|
+
<property name="text">
|
207
|
+
<string>Step</string>
|
208
|
+
</property>
|
209
|
+
</widget>
|
210
|
+
</item>
|
211
|
+
<item row="1" column="0" colspan="2">
|
212
|
+
<widget class="QPushButton" name="play_next_nonempty">
|
213
|
+
<property name="toolTip">
|
214
|
+
<string><html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
215
|
+
p, li { white-space: pre-wrap; }
|
216
|
+
</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">
|
217
|
+
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to start</p></body></html></string>
|
218
|
+
</property>
|
219
|
+
<property name="text">
|
220
|
+
<string>Play next non-empty cycle</string>
|
221
|
+
</property>
|
222
|
+
<property name="shortcut">
|
223
|
+
<string/>
|
224
|
+
</property>
|
225
|
+
</widget>
|
226
|
+
</item>
|
227
|
+
</layout>
|
207
228
|
</item>
|
208
229
|
</layout>
|
209
230
|
</item>
|
210
231
|
</layout>
|
232
|
+
<zorder>play_next_nonempty</zorder>
|
233
|
+
<zorder>faster</zorder>
|
211
234
|
</widget>
|
212
235
|
</item>
|
213
236
|
</layout>
|
214
|
-
<action name="actionBookmarksAdd"
|
215
|
-
<property name="text"
|
237
|
+
<action name="actionBookmarksAdd">
|
238
|
+
<property name="text">
|
216
239
|
<string>Add...</string>
|
217
240
|
</property>
|
218
241
|
</action>
|
219
|
-
<action name="actionGoto"
|
220
|
-
<property name="text"
|
242
|
+
<action name="actionGoto">
|
243
|
+
<property name="text">
|
221
244
|
<string>goto</string>
|
222
245
|
</property>
|
223
|
-
<property name="shortcut"
|
246
|
+
<property name="shortcut">
|
224
247
|
<string>Shift+G, G</string>
|
225
248
|
</property>
|
226
|
-
<property name="shortcutContext"
|
249
|
+
<property name="shortcutContext">
|
227
250
|
<enum>Qt::ApplicationShortcut</enum>
|
228
251
|
</property>
|
229
252
|
</action>
|
230
|
-
<action name="actionBookmarksSave"
|
231
|
-
<property name="enabled"
|
253
|
+
<action name="actionBookmarksSave">
|
254
|
+
<property name="enabled">
|
232
255
|
<bool>false</bool>
|
233
256
|
</property>
|
234
|
-
<property name="text"
|
257
|
+
<property name="text">
|
235
258
|
<string>Save</string>
|
236
259
|
</property>
|
237
260
|
</action>
|
238
|
-
<action name="actionBookmarksSaveAs"
|
239
|
-
<property name="enabled"
|
261
|
+
<action name="actionBookmarksSaveAs">
|
262
|
+
<property name="enabled">
|
240
263
|
<bool>true</bool>
|
241
264
|
</property>
|
242
|
-
<property name="text"
|
265
|
+
<property name="text">
|
243
266
|
<string>Save As</string>
|
244
267
|
</property>
|
245
268
|
</action>
|
246
|
-
<action name="actionBookmarksLoad"
|
247
|
-
<property name="text"
|
269
|
+
<action name="actionBookmarksLoad">
|
270
|
+
<property name="text">
|
248
271
|
<string>Load</string>
|
249
272
|
</property>
|
250
273
|
</action>
|
251
|
-
<action name="actionBookmarksSetMark"
|
252
|
-
<property name="text"
|
274
|
+
<action name="actionBookmarksSetMark">
|
275
|
+
<property name="text">
|
253
276
|
<string>Set mark</string>
|
254
277
|
</property>
|
255
278
|
</action>
|