roby 0.7.3 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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>
|