roby 0.8.0 → 3.0.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.
Files changed (644) hide show
  1. checksums.yaml +7 -0
  2. data/.deep-cover.rb +3 -0
  3. data/.gitattributes +1 -0
  4. data/.gitignore +24 -0
  5. data/.simplecov +10 -0
  6. data/.travis.yml +17 -0
  7. data/.yardopts +4 -0
  8. data/Gemfile +15 -0
  9. data/README.md +11 -0
  10. data/Rakefile +47 -177
  11. data/benchmark/{alloc_misc.rb → attic/alloc_misc.rb} +2 -2
  12. data/benchmark/{discovery_latency.rb → attic/discovery_latency.rb} +19 -19
  13. data/benchmark/{garbage_collection.rb → attic/garbage_collection.rb} +9 -9
  14. data/benchmark/{genom.rb → attic/genom.rb} +0 -0
  15. data/benchmark/attic/transactions.rb +62 -0
  16. data/benchmark/plan_basic_operations.rb +28 -0
  17. data/benchmark/relations/graph.rb +63 -0
  18. data/benchmark/ruby/identity.rb +18 -0
  19. data/benchmark/ruby/set_intersect_vs_hash_merge.rb +39 -0
  20. data/benchmark/ruby/yield_vs_block.rb +35 -0
  21. data/benchmark/run +5 -0
  22. data/benchmark/synthetic_plan_modifications_with_transactions.rb +79 -0
  23. data/benchmark/transactions.rb +99 -51
  24. data/bin/roby +38 -197
  25. data/bin/roby-display +14 -0
  26. data/bin/roby-log +3 -176
  27. data/doc/guide/{src → attic}/abstraction/achieve_with.page +1 -1
  28. data/doc/guide/{src → attic}/abstraction/forwarding.page +1 -1
  29. data/doc/guide/{src → attic}/abstraction/hierarchy.page +1 -1
  30. data/doc/guide/{src → attic}/abstraction/index.page +1 -1
  31. data/doc/guide/{src → attic}/abstraction/task_models.page +1 -1
  32. data/doc/guide/{overview.rdoc → attic/cycle/api_overview.rdoc} +6 -1
  33. data/doc/guide/{src → attic}/cycle/cycle-overview.png +0 -0
  34. data/doc/guide/{src → attic}/cycle/cycle-overview.svg +0 -0
  35. data/doc/guide/attic/cycle/error_handling.page +98 -0
  36. data/doc/guide/{src → attic}/cycle/error_instantaneous_repair.png +0 -0
  37. data/doc/guide/{src → attic}/cycle/error_instantaneous_repair.svg +0 -0
  38. data/doc/guide/{src/cycle/error_handling.page → attic/cycle/error_sources.page} +46 -89
  39. data/doc/guide/{src → attic}/cycle/garbage_collection.page +1 -1
  40. data/doc/guide/{src → attic}/cycle/index.page +1 -1
  41. data/doc/guide/{src → attic}/cycle/propagation.page +11 -1
  42. data/doc/guide/{src → attic}/cycle/propagation_diamond.png +0 -0
  43. data/doc/guide/{src → attic}/cycle/propagation_diamond.svg +0 -0
  44. data/doc/guide/attic/plans/building_plans.page +89 -0
  45. data/doc/guide/attic/plans/code.page +192 -0
  46. data/doc/guide/{src/basics → attic/plans}/events.page +3 -4
  47. data/doc/guide/attic/plans/index.page +7 -0
  48. data/doc/guide/{plan_modifications.rdoc → attic/plans/plan_modifications.rdoc} +5 -3
  49. data/doc/guide/{src/basics → attic/plans}/plan_objects.page +2 -1
  50. data/doc/guide/attic/plans/querying_plans.page +5 -0
  51. data/doc/guide/{src/basics → attic/plans}/tasks.page +20 -20
  52. data/doc/guide/config.yaml +7 -4
  53. data/doc/guide/ext/extended_menu.rb +29 -0
  54. data/doc/guide/ext/init.rb +6 -0
  55. data/doc/guide/ext/rdoc_links.rb +7 -6
  56. data/doc/guide/src/advanced_concepts/history.page +5 -0
  57. data/doc/guide/src/advanced_concepts/index.page +11 -0
  58. data/doc/guide/src/advanced_concepts/recognizing_patterns.page +83 -0
  59. data/doc/guide/src/advanced_concepts/scheduling.page +87 -0
  60. data/doc/guide/src/advanced_concepts/transactions.page +5 -0
  61. data/doc/guide/src/advanced_concepts/unreachability.page +42 -0
  62. data/doc/guide/src/base.template +96 -0
  63. data/doc/guide/src/basics_shell_header.txt +5 -7
  64. data/doc/guide/src/building/action_coordination.page +96 -0
  65. data/doc/guide/src/building/actions.page +124 -0
  66. data/doc/guide/src/building/file_layout.page +71 -0
  67. data/doc/guide/src/building/index.page +50 -0
  68. data/doc/guide/src/building/patterns.page +86 -0
  69. data/doc/guide/src/building/patterns_forwarding.png +0 -0
  70. data/doc/guide/src/building/patterns_forwarding.svg +277 -0
  71. data/doc/guide/src/building/runtime.page +95 -0
  72. data/doc/guide/src/building/task_models.page +94 -0
  73. data/doc/guide/src/building/tasks.page +284 -0
  74. data/doc/guide/src/concepts/error_handling.page +100 -0
  75. data/doc/guide/src/concepts/exception_propagation.png +0 -0
  76. data/doc/guide/src/concepts/exception_propagation.svg +445 -0
  77. data/doc/guide/src/concepts/execution.page +85 -0
  78. data/doc/guide/src/concepts/execution.png +0 -0
  79. data/doc/guide/src/concepts/execution.svg +573 -0
  80. data/doc/guide/src/concepts/execution_cycle.png +0 -0
  81. data/doc/guide/src/concepts/garbage_collection.page +57 -0
  82. data/doc/guide/src/concepts/index.page +27 -0
  83. data/doc/guide/src/concepts/plans.page +101 -0
  84. data/doc/guide/src/concepts/policy.page +31 -0
  85. data/doc/guide/src/concepts/reactor.page +61 -0
  86. data/doc/guide/src/concepts/simple_plan_example.png +0 -0
  87. data/doc/guide/src/concepts/simple_plan_example.svg +376 -0
  88. data/doc/guide/src/default.template +9 -74
  89. data/doc/guide/src/event_relations/forward.page +71 -0
  90. data/doc/guide/src/event_relations/index.page +12 -0
  91. data/doc/guide/src/event_relations/scheduling_constraints.page +43 -0
  92. data/doc/guide/src/event_relations/signal.page +55 -0
  93. data/doc/guide/src/event_relations/temporal_constraints.page +77 -0
  94. data/doc/guide/src/htmldoc.metainfo +21 -8
  95. data/doc/guide/src/index.page +8 -3
  96. data/doc/guide/src/{introduction/install.page → installation/index.page} +37 -25
  97. data/doc/guide/src/installation/publications.page +14 -0
  98. data/doc/guide/src/{introduction → installation}/videos.page +14 -7
  99. data/doc/guide/src/interacting/index.page +16 -0
  100. data/doc/guide/src/interacting/run.page +33 -0
  101. data/doc/guide/src/interacting/shell.page +95 -0
  102. data/doc/guide/src/plugins/creating_plugins.page +72 -0
  103. data/doc/guide/src/plugins/index.page +27 -5
  104. data/doc/guide/src/plugins/{fault_tolerance.page → standard_plugins/fault_tolerance.page} +2 -2
  105. data/doc/guide/src/plugins/standard_plugins/index.page +11 -0
  106. data/doc/guide/src/plugins/{subsystems.page → standard_plugins/subsystems.page} +2 -2
  107. data/doc/guide/src/style_screen.css +687 -0
  108. data/doc/guide/src/task_relations/dependency.page +107 -0
  109. data/doc/guide/src/task_relations/executed_by.page +77 -0
  110. data/doc/guide/src/task_relations/index.page +12 -0
  111. data/doc/guide/src/task_relations/new_relations.page +119 -0
  112. data/doc/guide/src/task_relations/planned_by.page +46 -0
  113. data/doc/guide/src/tutorial/app.page +117 -0
  114. data/doc/guide/src/{basics → tutorial}/code_examples.page +6 -5
  115. data/doc/guide/src/{basics → tutorial}/dry.page +15 -15
  116. data/doc/guide/src/{basics → tutorial}/errors.page +43 -68
  117. data/doc/guide/src/tutorial/events.page +195 -0
  118. data/doc/guide/src/{basics → tutorial}/hierarchy.page +53 -52
  119. data/doc/guide/src/tutorial/index.page +13 -0
  120. data/doc/guide/src/tutorial/log_replay/goForward_1.png +0 -0
  121. data/doc/guide/src/tutorial/log_replay/goForward_2.png +0 -0
  122. data/doc/guide/src/tutorial/log_replay/goForward_3.png +0 -0
  123. data/doc/guide/src/{basics → tutorial}/log_replay/goForward_4.png +0 -0
  124. data/doc/guide/src/tutorial/log_replay/goForward_5.png +0 -0
  125. data/doc/guide/src/{basics → tutorial}/log_replay/hierarchy_error_1.png +0 -0
  126. data/doc/guide/src/{basics → tutorial}/log_replay/hierarchy_error_2.png +0 -0
  127. data/doc/guide/src/{basics → tutorial}/log_replay/hierarchy_error_3.png +0 -0
  128. data/doc/guide/src/tutorial/log_replay/moveto_code_error.png +0 -0
  129. data/doc/guide/src/{basics → tutorial}/log_replay/plan_repair_1.png +0 -0
  130. data/doc/guide/src/{basics → tutorial}/log_replay/plan_repair_2.png +0 -0
  131. data/doc/guide/src/{basics → tutorial}/log_replay/plan_repair_3.png +0 -0
  132. data/doc/guide/src/tutorial/log_replay/plan_repair_4.png +0 -0
  133. data/doc/guide/src/tutorial/log_replay/roby_log_main_window.png +0 -0
  134. data/doc/guide/src/{basics → tutorial}/log_replay/roby_log_relation_window.png +0 -0
  135. data/doc/guide/src/{basics → tutorial}/log_replay/roby_replay_event_representation.png +0 -0
  136. data/doc/guide/src/tutorial/relations_display.page +153 -0
  137. data/doc/guide/src/{basics → tutorial}/roby_cycle_overview.png +0 -0
  138. data/doc/guide/src/tutorial/shell.page +121 -0
  139. data/doc/guide/src/{basics → tutorial}/summary.page +1 -1
  140. data/doc/guide/src/tutorial/tasks.page +374 -0
  141. data/lib/roby.rb +102 -47
  142. data/lib/roby/actions.rb +17 -0
  143. data/lib/roby/actions/action.rb +80 -0
  144. data/lib/roby/actions/interface.rb +45 -0
  145. data/lib/roby/actions/library.rb +23 -0
  146. data/lib/roby/actions/models/action.rb +224 -0
  147. data/lib/roby/actions/models/coordination_action.rb +58 -0
  148. data/lib/roby/actions/models/interface.rb +22 -0
  149. data/lib/roby/actions/models/interface_base.rb +294 -0
  150. data/lib/roby/actions/models/library.rb +12 -0
  151. data/lib/roby/actions/models/method_action.rb +90 -0
  152. data/lib/roby/actions/task.rb +114 -0
  153. data/lib/roby/and_generator.rb +125 -0
  154. data/lib/roby/app.rb +2795 -829
  155. data/lib/roby/app/autotest_console_reporter.rb +138 -0
  156. data/lib/roby/app/base.rb +21 -0
  157. data/lib/roby/app/cucumber.rb +2 -0
  158. data/lib/roby/app/cucumber/controller.rb +439 -0
  159. data/lib/roby/app/cucumber/helpers.rb +280 -0
  160. data/lib/roby/app/cucumber/world.rb +32 -0
  161. data/lib/roby/app/debug.rb +136 -0
  162. data/lib/roby/app/gen.rb +2 -0
  163. data/lib/roby/app/rake.rb +178 -38
  164. data/lib/roby/app/robot_config.rb +9 -0
  165. data/lib/roby/app/robot_names.rb +115 -0
  166. data/lib/roby/app/run.rb +3 -2
  167. data/lib/roby/app/scripts.rb +72 -0
  168. data/lib/roby/app/scripts/autotest.rb +173 -0
  169. data/lib/roby/app/scripts/display.rb +2 -0
  170. data/lib/roby/app/scripts/restart.rb +52 -0
  171. data/lib/roby/app/scripts/results.rb +17 -8
  172. data/lib/roby/app/scripts/run.rb +155 -24
  173. data/lib/roby/app/scripts/shell.rb +147 -62
  174. data/lib/roby/app/scripts/test.rb +107 -22
  175. data/lib/roby/app/test_reporter.rb +74 -0
  176. data/lib/roby/app/test_server.rb +159 -0
  177. data/lib/roby/app/vagrant.rb +47 -0
  178. data/lib/roby/backports.rb +16 -0
  179. data/lib/roby/cli/display.rb +190 -0
  180. data/lib/roby/cli/exceptions.rb +17 -0
  181. data/lib/roby/cli/gen/actions/class.rb +5 -0
  182. data/lib/roby/cli/gen/actions/test.rb +6 -0
  183. data/lib/roby/cli/gen/app/.yardopts +6 -0
  184. data/lib/roby/cli/gen/app/README.md +28 -0
  185. data/lib/roby/cli/gen/app/Rakefile +15 -0
  186. data/{app → lib/roby/cli/gen/app}/config/app.yml +29 -39
  187. data/lib/roby/cli/gen/app/models/.gitattributes +1 -0
  188. data/{app → lib/roby/cli/gen/app/scripts}/controllers/.gitattributes +0 -0
  189. data/{app/data/.gitattributes → lib/roby/cli/gen/app/test/.gitignore} +0 -0
  190. data/lib/roby/cli/gen/class/class.rb +6 -0
  191. data/lib/roby/cli/gen/class/test.rb +7 -0
  192. data/lib/roby/cli/gen/helpers.rb +203 -0
  193. data/lib/roby/cli/gen/module/module.rb +5 -0
  194. data/lib/roby/cli/gen/module/test.rb +6 -0
  195. data/lib/roby/cli/gen/roby_app/config/init.rb +17 -0
  196. data/lib/roby/cli/gen/roby_app/config/robots/robot.rb +40 -0
  197. data/lib/roby/cli/gen/task/class.rb +44 -0
  198. data/lib/roby/cli/gen/task/test.rb +6 -0
  199. data/lib/roby/cli/gen_main.rb +120 -0
  200. data/lib/roby/cli/log.rb +276 -0
  201. data/lib/roby/cli/log/flamegraph.html +499 -0
  202. data/lib/roby/cli/log/flamegraph_renderer.rb +88 -0
  203. data/lib/roby/cli/main.rb +153 -0
  204. data/lib/roby/coordination.rb +60 -0
  205. data/lib/roby/coordination/action_script.rb +25 -0
  206. data/lib/roby/coordination/action_state_machine.rb +125 -0
  207. data/lib/roby/coordination/actions.rb +106 -0
  208. data/lib/roby/coordination/base.rb +145 -0
  209. data/lib/roby/coordination/calculus.rb +40 -0
  210. data/lib/roby/coordination/child.rb +28 -0
  211. data/lib/roby/coordination/event.rb +29 -0
  212. data/lib/roby/coordination/fault_handler.rb +25 -0
  213. data/lib/roby/coordination/fault_handling_task.rb +13 -0
  214. data/lib/roby/coordination/fault_response_table.rb +110 -0
  215. data/lib/roby/coordination/models/action_script.rb +64 -0
  216. data/lib/roby/coordination/models/action_state_machine.rb +224 -0
  217. data/lib/roby/coordination/models/actions.rb +191 -0
  218. data/lib/roby/coordination/models/arguments.rb +55 -0
  219. data/lib/roby/coordination/models/base.rb +176 -0
  220. data/lib/roby/coordination/models/capture.rb +86 -0
  221. data/lib/roby/coordination/models/child.rb +35 -0
  222. data/lib/roby/coordination/models/event.rb +41 -0
  223. data/lib/roby/coordination/models/exceptions.rb +42 -0
  224. data/lib/roby/coordination/models/fault_handler.rb +219 -0
  225. data/lib/roby/coordination/models/fault_response_table.rb +77 -0
  226. data/lib/roby/coordination/models/root.rb +22 -0
  227. data/lib/roby/coordination/models/script.rb +283 -0
  228. data/lib/roby/coordination/models/task.rb +184 -0
  229. data/lib/roby/coordination/models/task_from_action.rb +50 -0
  230. data/lib/roby/coordination/models/task_from_as_plan.rb +33 -0
  231. data/lib/roby/coordination/models/task_from_instanciation_object.rb +31 -0
  232. data/lib/roby/coordination/models/task_from_variable.rb +27 -0
  233. data/lib/roby/coordination/models/task_with_dependencies.rb +48 -0
  234. data/lib/roby/coordination/models/variable.rb +32 -0
  235. data/lib/roby/coordination/script.rb +200 -0
  236. data/lib/roby/coordination/script_instruction.rb +12 -0
  237. data/lib/roby/coordination/task.rb +45 -0
  238. data/lib/roby/coordination/task_base.rb +69 -0
  239. data/lib/roby/coordination/task_script.rb +293 -0
  240. data/lib/roby/coordination/task_state_machine.rb +308 -0
  241. data/lib/roby/decision_control.rb +33 -21
  242. data/lib/roby/distributed_object.rb +76 -0
  243. data/lib/roby/droby.rb +17 -0
  244. data/lib/roby/droby/droby_id.rb +6 -0
  245. data/lib/roby/droby/enable.rb +153 -0
  246. data/lib/roby/droby/event_logger.rb +189 -0
  247. data/lib/roby/droby/event_logging.rb +57 -0
  248. data/lib/roby/droby/exceptions.rb +14 -0
  249. data/lib/roby/droby/identifiable.rb +22 -0
  250. data/lib/roby/droby/logfile.rb +141 -0
  251. data/lib/roby/droby/logfile/client.rb +176 -0
  252. data/lib/roby/droby/logfile/file_format.md +97 -0
  253. data/lib/roby/droby/logfile/index.rb +117 -0
  254. data/lib/roby/droby/logfile/reader.rb +139 -0
  255. data/lib/roby/droby/logfile/server.rb +199 -0
  256. data/lib/roby/droby/logfile/writer.rb +114 -0
  257. data/lib/roby/droby/marshal.rb +264 -0
  258. data/lib/roby/droby/marshallable.rb +12 -0
  259. data/lib/roby/droby/null_event_logger.rb +25 -0
  260. data/lib/roby/droby/object_manager.rb +205 -0
  261. data/lib/roby/droby/peer_id.rb +6 -0
  262. data/lib/roby/droby/plan_rebuilder.rb +373 -0
  263. data/lib/roby/droby/rebuilt_plan.rb +160 -0
  264. data/lib/roby/droby/remote_droby_id.rb +6 -0
  265. data/lib/roby/droby/timepoints.rb +205 -0
  266. data/lib/roby/droby/timepoints_ctf.metadata.erb +101 -0
  267. data/lib/roby/droby/timepoints_ctf.rb +125 -0
  268. data/lib/roby/droby/v5.rb +14 -0
  269. data/lib/roby/droby/v5/builtin.rb +120 -0
  270. data/lib/roby/droby/v5/droby_class.rb +45 -0
  271. data/lib/roby/droby/v5/droby_constant.rb +81 -0
  272. data/lib/roby/droby/v5/droby_dump.rb +1026 -0
  273. data/lib/roby/droby/v5/droby_id.rb +44 -0
  274. data/lib/roby/droby/v5/droby_model.rb +82 -0
  275. data/lib/roby/droby/v5/peer_id.rb +10 -0
  276. data/lib/roby/droby/v5/remote_droby_id.rb +42 -0
  277. data/lib/roby/event.rb +79 -957
  278. data/lib/roby/event_constraints.rb +835 -0
  279. data/lib/roby/event_generator.rb +1047 -0
  280. data/lib/roby/event_structure/causal_link.rb +6 -0
  281. data/lib/roby/event_structure/forwarding.rb +6 -0
  282. data/lib/roby/event_structure/precedence.rb +7 -0
  283. data/lib/roby/event_structure/signal.rb +8 -0
  284. data/lib/roby/event_structure/temporal_constraints.rb +640 -0
  285. data/lib/roby/exceptions.rb +446 -152
  286. data/lib/roby/executable_plan.rb +549 -0
  287. data/lib/roby/execution_engine.rb +1997 -950
  288. data/lib/roby/filter_generator.rb +26 -0
  289. data/lib/roby/gui/chronicle_view.rb +225 -0
  290. data/lib/roby/gui/chronicle_widget.rb +925 -0
  291. data/lib/roby/gui/dot_id.rb +11 -0
  292. data/lib/roby/gui/exception_view.rb +44 -0
  293. data/lib/roby/gui/log_display.rb +273 -0
  294. data/lib/roby/gui/model_views.rb +2 -0
  295. data/lib/roby/gui/model_views/action_interface.rb +53 -0
  296. data/lib/roby/gui/model_views/task.rb +47 -0
  297. data/lib/roby/gui/model_views/task.rhtml +41 -0
  298. data/lib/roby/gui/object_info_view.rb +89 -0
  299. data/lib/roby/gui/plan_dot_layout.rb +427 -0
  300. data/lib/roby/gui/plan_rebuilder_widget.rb +357 -0
  301. data/lib/roby/gui/qt4_toMSecsSinceEpoch.rb +8 -0
  302. data/lib/roby/gui/relations_view.rb +278 -0
  303. data/lib/roby/gui/relations_view/relations.ui +139 -0
  304. data/lib/roby/gui/relations_view/relations_canvas.rb +1088 -0
  305. data/lib/roby/gui/relations_view/relations_config.rb +292 -0
  306. data/lib/roby/gui/relations_view/relations_view.ui +53 -0
  307. data/lib/roby/gui/scheduler_view.css +24 -0
  308. data/lib/roby/gui/scheduler_view.rb +46 -0
  309. data/lib/roby/gui/scheduler_view.rhtml +53 -0
  310. data/lib/roby/gui/stepping.rb +93 -0
  311. data/lib/roby/gui/stepping.ui +181 -0
  312. data/lib/roby/gui/styles.rb +81 -0
  313. data/lib/roby/gui/task_display_configuration.rb +42 -0
  314. data/lib/roby/gui/task_state_at.rb +38 -0
  315. data/lib/roby/hooks.rb +26 -0
  316. data/lib/roby/interface.rb +136 -469
  317. data/lib/roby/interface/async.rb +20 -0
  318. data/lib/roby/interface/async/action_monitor.rb +188 -0
  319. data/lib/roby/interface/async/interface.rb +498 -0
  320. data/lib/roby/interface/async/job_monitor.rb +213 -0
  321. data/lib/roby/interface/async/log.rb +238 -0
  322. data/lib/roby/interface/async/new_job_listener.rb +79 -0
  323. data/lib/roby/interface/async/ui_connector.rb +183 -0
  324. data/lib/roby/interface/client.rb +553 -0
  325. data/lib/roby/interface/command.rb +24 -0
  326. data/lib/roby/interface/command_argument.rb +16 -0
  327. data/lib/roby/interface/command_library.rb +92 -0
  328. data/lib/roby/interface/droby_channel.rb +174 -0
  329. data/lib/roby/interface/exceptions.rb +22 -0
  330. data/lib/roby/interface/interface.rb +655 -0
  331. data/lib/roby/interface/job.rb +47 -0
  332. data/lib/roby/interface/rest.rb +10 -0
  333. data/lib/roby/interface/rest/api.rb +29 -0
  334. data/lib/roby/interface/rest/helpers.rb +24 -0
  335. data/lib/roby/interface/rest/server.rb +212 -0
  336. data/lib/roby/interface/server.rb +154 -0
  337. data/lib/roby/interface/shell_client.rb +468 -0
  338. data/lib/roby/interface/shell_subcommand.rb +24 -0
  339. data/lib/roby/interface/subcommand_client.rb +35 -0
  340. data/lib/roby/interface/tcp.rb +168 -0
  341. data/lib/roby/models/arguments.rb +112 -0
  342. data/lib/roby/models/plan_object.rb +83 -0
  343. data/lib/roby/models/task.rb +835 -0
  344. data/lib/roby/models/task_event.rb +62 -0
  345. data/lib/roby/models/task_service.rb +78 -0
  346. data/lib/roby/or_generator.rb +88 -0
  347. data/lib/roby/plan.rb +1751 -864
  348. data/lib/roby/plan_object.rb +611 -0
  349. data/lib/roby/plan_service.rb +200 -0
  350. data/lib/roby/promise.rb +332 -0
  351. data/lib/roby/queries.rb +23 -0
  352. data/lib/roby/queries/and_matcher.rb +32 -0
  353. data/lib/roby/queries/any.rb +27 -0
  354. data/lib/roby/queries/code_error_matcher.rb +58 -0
  355. data/lib/roby/queries/event_generator_matcher.rb +9 -0
  356. data/lib/roby/queries/execution_exception_matcher.rb +165 -0
  357. data/lib/roby/queries/index.rb +165 -0
  358. data/lib/roby/queries/localized_error_matcher.rb +149 -0
  359. data/lib/roby/queries/matcher_base.rb +107 -0
  360. data/lib/roby/queries/none.rb +27 -0
  361. data/lib/roby/queries/not_matcher.rb +30 -0
  362. data/lib/roby/queries/op_matcher.rb +8 -0
  363. data/lib/roby/queries/or_matcher.rb +30 -0
  364. data/lib/roby/queries/plan_object_matcher.rb +363 -0
  365. data/lib/roby/queries/query.rb +188 -0
  366. data/lib/roby/queries/task_event_generator_matcher.rb +86 -0
  367. data/lib/roby/queries/task_matcher.rb +344 -0
  368. data/lib/roby/relations.rb +42 -678
  369. data/lib/roby/relations/bidirectional_directed_adjacency_graph.rb +492 -0
  370. data/lib/roby/relations/directed_relation_support.rb +268 -0
  371. data/lib/roby/relations/event_relation_graph.rb +19 -0
  372. data/lib/roby/relations/fork_merge_visitor.rb +154 -0
  373. data/lib/roby/relations/graph.rb +533 -0
  374. data/lib/roby/relations/models/directed_relation_support.rb +11 -0
  375. data/lib/roby/relations/models/graph.rb +75 -0
  376. data/lib/roby/relations/models/task_relation_graph.rb +18 -0
  377. data/lib/roby/relations/space.rb +380 -0
  378. data/lib/roby/relations/task_relation_graph.rb +20 -0
  379. data/lib/roby/robot.rb +85 -38
  380. data/lib/roby/schedulers/basic.rb +155 -25
  381. data/lib/roby/schedulers/null.rb +20 -0
  382. data/lib/roby/schedulers/reporting.rb +31 -0
  383. data/lib/roby/schedulers/state.rb +129 -0
  384. data/lib/roby/schedulers/temporal.rb +91 -0
  385. data/lib/roby/singletons.rb +87 -0
  386. data/lib/roby/standalone.rb +4 -2
  387. data/lib/roby/standard_errors.rb +405 -82
  388. data/lib/roby/state.rb +6 -3
  389. data/lib/roby/state/conf_model.rb +5 -0
  390. data/lib/roby/state/events.rb +181 -95
  391. data/lib/roby/state/goal_model.rb +77 -0
  392. data/lib/roby/state/open_struct.rb +591 -0
  393. data/lib/roby/state/open_struct_model.rb +68 -0
  394. data/lib/roby/state/pos.rb +45 -45
  395. data/lib/roby/state/shapes.rb +11 -11
  396. data/lib/roby/state/state_model.rb +303 -0
  397. data/lib/roby/state/task.rb +43 -0
  398. data/lib/roby/support.rb +88 -148
  399. data/lib/roby/task.rb +1361 -1750
  400. data/lib/roby/task_arguments.rb +428 -0
  401. data/lib/roby/task_event.rb +127 -0
  402. data/lib/roby/task_event_generator.rb +337 -0
  403. data/lib/roby/task_service.rb +6 -0
  404. data/lib/roby/task_structure/conflicts.rb +104 -0
  405. data/lib/roby/task_structure/dependency.rb +932 -0
  406. data/lib/roby/task_structure/error_handling.rb +118 -0
  407. data/lib/roby/task_structure/executed_by.rb +234 -0
  408. data/lib/roby/task_structure/planned_by.rb +90 -0
  409. data/lib/roby/tasks/aggregator.rb +37 -0
  410. data/lib/roby/tasks/external_process.rb +275 -0
  411. data/lib/roby/tasks/group.rb +27 -0
  412. data/lib/roby/tasks/null.rb +19 -0
  413. data/lib/roby/tasks/parallel.rb +43 -0
  414. data/lib/roby/tasks/sequence.rb +88 -0
  415. data/lib/roby/tasks/simple.rb +21 -0
  416. data/lib/roby/{thread_task.rb → tasks/thread.rb} +50 -24
  417. data/lib/roby/tasks/timeout.rb +17 -0
  418. data/lib/roby/tasks/virtual.rb +55 -0
  419. data/lib/roby/template_plan.rb +7 -0
  420. data/lib/roby/test/aruba_minitest.rb +74 -0
  421. data/lib/roby/test/assertion.rb +16 -0
  422. data/lib/roby/test/assertions.rb +490 -0
  423. data/lib/roby/test/common.rb +368 -591
  424. data/lib/roby/test/dsl.rb +149 -0
  425. data/lib/roby/test/error.rb +18 -0
  426. data/lib/roby/test/event_reporter.rb +83 -0
  427. data/lib/roby/test/execution_expectations.rb +1134 -0
  428. data/lib/roby/test/expect_execution.rb +151 -0
  429. data/lib/roby/test/minitest_helpers.rb +166 -0
  430. data/lib/roby/test/roby_app_helpers.rb +200 -0
  431. data/lib/roby/test/run_planners.rb +155 -0
  432. data/lib/roby/test/self.rb +112 -0
  433. data/lib/roby/test/spec.rb +198 -0
  434. data/lib/roby/test/tasks/empty_task.rb +4 -4
  435. data/lib/roby/test/tasks/goto.rb +28 -27
  436. data/lib/roby/test/teardown_plans.rb +100 -0
  437. data/lib/roby/test/testcase.rb +239 -307
  438. data/lib/roby/test/tools.rb +159 -155
  439. data/lib/roby/test/validate_state_machine.rb +75 -0
  440. data/lib/roby/transaction.rb +1125 -0
  441. data/lib/roby/transaction/event_generator_proxy.rb +63 -0
  442. data/lib/roby/transaction/plan_object_proxy.rb +99 -0
  443. data/lib/roby/transaction/plan_service_proxy.rb +43 -0
  444. data/lib/roby/transaction/proxying.rb +120 -0
  445. data/lib/roby/transaction/task_event_generator_proxy.rb +19 -0
  446. data/lib/roby/transaction/task_proxy.rb +135 -0
  447. data/lib/roby/until_generator.rb +30 -0
  448. data/lib/roby/version.rb +5 -0
  449. data/lib/roby/yard.rb +169 -0
  450. data/lib/yard-roby.rb +1 -0
  451. data/manifest.xml +32 -6
  452. data/roby.gemspec +59 -0
  453. metadata +788 -587
  454. data/Manifest.txt +0 -321
  455. data/NOTES +0 -4
  456. data/README.txt +0 -166
  457. data/TODO.txt +0 -146
  458. data/app/README.txt +0 -24
  459. data/app/Rakefile +0 -8
  460. data/app/config/ROBOT.rb +0 -5
  461. data/app/config/init.rb +0 -33
  462. data/app/config/roby.yml +0 -3
  463. data/app/controllers/ROBOT.rb +0 -2
  464. data/app/planners/ROBOT/main.rb +0 -6
  465. data/app/planners/main.rb +0 -5
  466. data/app/scripts/distributed +0 -3
  467. data/app/scripts/generate/bookmarks +0 -3
  468. data/app/scripts/replay +0 -3
  469. data/app/scripts/results +0 -3
  470. data/app/scripts/run +0 -3
  471. data/app/scripts/server +0 -3
  472. data/app/scripts/shell +0 -3
  473. data/app/scripts/test +0 -3
  474. data/app/tasks/.gitattributes +0 -0
  475. data/app/tasks/ROBOT/.gitattributes +0 -0
  476. data/bin/roby-shell +0 -25
  477. data/doc/guide/src/basics/app.page +0 -139
  478. data/doc/guide/src/basics/index.page +0 -11
  479. data/doc/guide/src/basics/log_replay/goForward_1.png +0 -0
  480. data/doc/guide/src/basics/log_replay/goForward_2.png +0 -0
  481. data/doc/guide/src/basics/log_replay/goForward_3.png +0 -0
  482. data/doc/guide/src/basics/log_replay/goForward_5.png +0 -0
  483. data/doc/guide/src/basics/log_replay/plan_repair_4.png +0 -0
  484. data/doc/guide/src/basics/log_replay/roby_log_main_window.png +0 -0
  485. data/doc/guide/src/basics/relations_display.page +0 -203
  486. data/doc/guide/src/basics/shell.page +0 -102
  487. data/doc/guide/src/default.css +0 -319
  488. data/doc/guide/src/introduction/index.page +0 -29
  489. data/doc/guide/src/introduction/publications.page +0 -14
  490. data/doc/guide/src/relations/dependency.page +0 -89
  491. data/doc/guide/src/relations/index.page +0 -12
  492. data/ext/droby/dump.cc +0 -175
  493. data/ext/droby/extconf.rb +0 -3
  494. data/ext/graph/algorithm.cc +0 -746
  495. data/ext/graph/extconf.rb +0 -7
  496. data/ext/graph/graph.cc +0 -575
  497. data/ext/graph/graph.hh +0 -183
  498. data/ext/graph/iterator_sequence.hh +0 -102
  499. data/ext/graph/undirected_dfs.hh +0 -226
  500. data/ext/graph/undirected_graph.hh +0 -421
  501. data/lib/roby/app/scripts/generate/bookmarks.rb +0 -162
  502. data/lib/roby/app/scripts/replay.rb +0 -31
  503. data/lib/roby/app/scripts/server.rb +0 -18
  504. data/lib/roby/basic_object.rb +0 -151
  505. data/lib/roby/config.rb +0 -14
  506. data/lib/roby/distributed.rb +0 -36
  507. data/lib/roby/distributed/base.rb +0 -448
  508. data/lib/roby/distributed/communication.rb +0 -875
  509. data/lib/roby/distributed/connection_space.rb +0 -616
  510. data/lib/roby/distributed/distributed_object.rb +0 -206
  511. data/lib/roby/distributed/drb.rb +0 -62
  512. data/lib/roby/distributed/notifications.rb +0 -531
  513. data/lib/roby/distributed/peer.rb +0 -555
  514. data/lib/roby/distributed/protocol.rb +0 -529
  515. data/lib/roby/distributed/proxy.rb +0 -343
  516. data/lib/roby/distributed/subscription.rb +0 -311
  517. data/lib/roby/distributed/transaction.rb +0 -498
  518. data/lib/roby/external_process_task.rb +0 -225
  519. data/lib/roby/graph.rb +0 -160
  520. data/lib/roby/log.rb +0 -3
  521. data/lib/roby/log/chronicle.rb +0 -303
  522. data/lib/roby/log/console.rb +0 -74
  523. data/lib/roby/log/data_stream.rb +0 -275
  524. data/lib/roby/log/dot.rb +0 -279
  525. data/lib/roby/log/event_stream.rb +0 -161
  526. data/lib/roby/log/file.rb +0 -396
  527. data/lib/roby/log/gui/basic_display.ui +0 -83
  528. data/lib/roby/log/gui/basic_display_ui.rb +0 -89
  529. data/lib/roby/log/gui/chronicle.rb +0 -26
  530. data/lib/roby/log/gui/chronicle_view.rb +0 -40
  531. data/lib/roby/log/gui/chronicle_view.ui +0 -70
  532. data/lib/roby/log/gui/chronicle_view_ui.rb +0 -90
  533. data/lib/roby/log/gui/data_displays.rb +0 -171
  534. data/lib/roby/log/gui/data_displays.ui +0 -155
  535. data/lib/roby/log/gui/data_displays_ui.rb +0 -146
  536. data/lib/roby/log/gui/notifications.rb +0 -26
  537. data/lib/roby/log/gui/relations.rb +0 -269
  538. data/lib/roby/log/gui/relations.ui +0 -123
  539. data/lib/roby/log/gui/relations_ui.rb +0 -120
  540. data/lib/roby/log/gui/relations_view.rb +0 -185
  541. data/lib/roby/log/gui/relations_view.ui +0 -149
  542. data/lib/roby/log/gui/relations_view_ui.rb +0 -144
  543. data/lib/roby/log/gui/replay.rb +0 -366
  544. data/lib/roby/log/gui/replay_controls.rb +0 -206
  545. data/lib/roby/log/gui/replay_controls.ui +0 -282
  546. data/lib/roby/log/gui/replay_controls_ui.rb +0 -249
  547. data/lib/roby/log/gui/runtime.rb +0 -130
  548. data/lib/roby/log/hooks.rb +0 -186
  549. data/lib/roby/log/logger.rb +0 -203
  550. data/lib/roby/log/notifications.rb +0 -244
  551. data/lib/roby/log/plan_rebuilder.rb +0 -468
  552. data/lib/roby/log/relations.rb +0 -1084
  553. data/lib/roby/log/server.rb +0 -547
  554. data/lib/roby/log/sqlite.rb +0 -47
  555. data/lib/roby/log/timings.rb +0 -233
  556. data/lib/roby/plan-object.rb +0 -371
  557. data/lib/roby/planning.rb +0 -13
  558. data/lib/roby/planning/loops.rb +0 -309
  559. data/lib/roby/planning/model.rb +0 -1012
  560. data/lib/roby/planning/task.rb +0 -180
  561. data/lib/roby/query.rb +0 -655
  562. data/lib/roby/relations/conflicts.rb +0 -67
  563. data/lib/roby/relations/dependency.rb +0 -358
  564. data/lib/roby/relations/ensured.rb +0 -19
  565. data/lib/roby/relations/error_handling.rb +0 -22
  566. data/lib/roby/relations/events.rb +0 -7
  567. data/lib/roby/relations/executed_by.rb +0 -208
  568. data/lib/roby/relations/influence.rb +0 -10
  569. data/lib/roby/relations/planned_by.rb +0 -63
  570. data/lib/roby/state/information.rb +0 -55
  571. data/lib/roby/state/state.rb +0 -367
  572. data/lib/roby/task-operations.rb +0 -186
  573. data/lib/roby/task_index.rb +0 -80
  574. data/lib/roby/test/distributed.rb +0 -230
  575. data/lib/roby/test/tasks/simple_task.rb +0 -23
  576. data/lib/roby/transactions.rb +0 -507
  577. data/lib/roby/transactions/proxy.rb +0 -325
  578. data/plugins/fault_injection/History.txt +0 -4
  579. data/plugins/fault_injection/README.txt +0 -34
  580. data/plugins/fault_injection/Rakefile +0 -12
  581. data/plugins/fault_injection/TODO.txt +0 -0
  582. data/plugins/fault_injection/app.rb +0 -52
  583. data/plugins/fault_injection/fault_injection.rb +0 -89
  584. data/plugins/fault_injection/test/test_fault_injection.rb +0 -78
  585. data/plugins/subsystems/README.txt +0 -37
  586. data/plugins/subsystems/Rakefile +0 -13
  587. data/plugins/subsystems/app.rb +0 -182
  588. data/plugins/subsystems/test/app/README +0 -24
  589. data/plugins/subsystems/test/app/Rakefile +0 -8
  590. data/plugins/subsystems/test/app/config/app.yml +0 -71
  591. data/plugins/subsystems/test/app/config/init.rb +0 -12
  592. data/plugins/subsystems/test/app/config/roby.yml +0 -3
  593. data/plugins/subsystems/test/app/planners/main.rb +0 -20
  594. data/plugins/subsystems/test/app/scripts/distributed +0 -3
  595. data/plugins/subsystems/test/app/scripts/replay +0 -3
  596. data/plugins/subsystems/test/app/scripts/results +0 -3
  597. data/plugins/subsystems/test/app/scripts/run +0 -3
  598. data/plugins/subsystems/test/app/scripts/server +0 -3
  599. data/plugins/subsystems/test/app/scripts/shell +0 -3
  600. data/plugins/subsystems/test/app/scripts/test +0 -3
  601. data/plugins/subsystems/test/app/tasks/services.rb +0 -15
  602. data/plugins/subsystems/test/test_subsystems.rb +0 -78
  603. data/test/distributed/test_communication.rb +0 -195
  604. data/test/distributed/test_connection.rb +0 -284
  605. data/test/distributed/test_execution.rb +0 -378
  606. data/test/distributed/test_mixed_plan.rb +0 -341
  607. data/test/distributed/test_plan_notifications.rb +0 -238
  608. data/test/distributed/test_protocol.rb +0 -525
  609. data/test/distributed/test_query.rb +0 -106
  610. data/test/distributed/test_remote_plan.rb +0 -491
  611. data/test/distributed/test_transaction.rb +0 -466
  612. data/test/mockups/external_process +0 -28
  613. data/test/mockups/tasks.rb +0 -27
  614. data/test/planning/test_loops.rb +0 -432
  615. data/test/planning/test_model.rb +0 -427
  616. data/test/planning/test_task.rb +0 -126
  617. data/test/relations/test_conflicts.rb +0 -42
  618. data/test/relations/test_dependency.rb +0 -324
  619. data/test/relations/test_ensured.rb +0 -38
  620. data/test/relations/test_executed_by.rb +0 -224
  621. data/test/relations/test_planned_by.rb +0 -56
  622. data/test/suite_core.rb +0 -29
  623. data/test/suite_distributed.rb +0 -10
  624. data/test/suite_planning.rb +0 -4
  625. data/test/suite_relations.rb +0 -8
  626. data/test/tasks/test_external_process.rb +0 -126
  627. data/test/tasks/test_thread_task.rb +0 -70
  628. data/test/test_bgl.rb +0 -528
  629. data/test/test_event.rb +0 -969
  630. data/test/test_exceptions.rb +0 -591
  631. data/test/test_execution_engine.rb +0 -987
  632. data/test/test_gui.rb +0 -20
  633. data/test/test_interface.rb +0 -43
  634. data/test/test_log.rb +0 -125
  635. data/test/test_log_server.rb +0 -133
  636. data/test/test_plan.rb +0 -418
  637. data/test/test_query.rb +0 -424
  638. data/test/test_relations.rb +0 -260
  639. data/test/test_state.rb +0 -432
  640. data/test/test_support.rb +0 -16
  641. data/test/test_task.rb +0 -1181
  642. data/test/test_testcase.rb +0 -138
  643. data/test/test_transactions.rb +0 -610
  644. data/test/test_transactions_proxy.rb +0 -216
@@ -1,155 +0,0 @@
1
- <ui version="4.0" >
2
- <class>DataDisplays</class>
3
- <widget class="QWidget" name="DataDisplays" >
4
- <property name="geometry" >
5
- <rect>
6
- <x>0</x>
7
- <y>0</y>
8
- <width>548</width>
9
- <height>508</height>
10
- </rect>
11
- </property>
12
- <property name="windowTitle" >
13
- <string>Form</string>
14
- </property>
15
- <layout class="QVBoxLayout" >
16
- <property name="margin" >
17
- <number>9</number>
18
- </property>
19
- <property name="spacing" >
20
- <number>6</number>
21
- </property>
22
- <item>
23
- <widget class="QGroupBox" name="groupBox" >
24
- <property name="title" >
25
- <string>Data sources</string>
26
- </property>
27
- <layout class="QVBoxLayout" >
28
- <property name="margin" >
29
- <number>9</number>
30
- </property>
31
- <property name="spacing" >
32
- <number>6</number>
33
- </property>
34
- <item>
35
- <widget class="QListView" name="streams" />
36
- </item>
37
- <item>
38
- <layout class="QHBoxLayout" >
39
- <property name="margin" >
40
- <number>0</number>
41
- </property>
42
- <property name="spacing" >
43
- <number>6</number>
44
- </property>
45
- <item>
46
- <spacer>
47
- <property name="orientation" >
48
- <enum>Qt::Horizontal</enum>
49
- </property>
50
- <property name="sizeHint" >
51
- <size>
52
- <width>40</width>
53
- <height>20</height>
54
- </size>
55
- </property>
56
- </spacer>
57
- </item>
58
- <item>
59
- <widget class="QPushButton" name="add_stream" >
60
- <property name="text" >
61
- <string>&amp;Add</string>
62
- </property>
63
- </widget>
64
- </item>
65
- <item>
66
- <widget class="QPushButton" name="remove_stream" >
67
- <property name="text" >
68
- <string>Remove</string>
69
- </property>
70
- </widget>
71
- </item>
72
- </layout>
73
- </item>
74
- </layout>
75
- </widget>
76
- </item>
77
- <item>
78
- <widget class="QGroupBox" name="displaysGroup" >
79
- <property name="title" >
80
- <string>Displays</string>
81
- </property>
82
- <layout class="QVBoxLayout" >
83
- <property name="margin" >
84
- <number>9</number>
85
- </property>
86
- <property name="spacing" >
87
- <number>6</number>
88
- </property>
89
- <item>
90
- <layout class="QHBoxLayout" >
91
- <property name="margin" >
92
- <number>0</number>
93
- </property>
94
- <property name="spacing" >
95
- <number>6</number>
96
- </property>
97
- <item>
98
- <widget class="QComboBox" name="display_types" >
99
- <property name="sizePolicy" >
100
- <sizepolicy>
101
- <hsizetype>5</hsizetype>
102
- <vsizetype>0</vsizetype>
103
- <horstretch>1</horstretch>
104
- <verstretch>0</verstretch>
105
- </sizepolicy>
106
- </property>
107
- <item>
108
- <property name="text" >
109
- <string>Relations</string>
110
- </property>
111
- </item>
112
- <item>
113
- <property name="text" >
114
- <string>Chronicle</string>
115
- </property>
116
- </item>
117
- <item>
118
- <property name="text" >
119
- <string>Notifications</string>
120
- </property>
121
- </item>
122
- </widget>
123
- </item>
124
- <item>
125
- <widget class="QPushButton" name="display_add" >
126
- <property name="text" >
127
- <string>&amp;Add</string>
128
- </property>
129
- </widget>
130
- </item>
131
- </layout>
132
- </item>
133
- <item>
134
- <widget class="QToolBox" name="display_configs" >
135
- <property name="sizePolicy" >
136
- <sizepolicy>
137
- <hsizetype>5</hsizetype>
138
- <vsizetype>3</vsizetype>
139
- <horstretch>0</horstretch>
140
- <verstretch>0</verstretch>
141
- </sizepolicy>
142
- </property>
143
- <property name="currentIndex" >
144
- <number>-1</number>
145
- </property>
146
- </widget>
147
- </item>
148
- </layout>
149
- </widget>
150
- </item>
151
- </layout>
152
- </widget>
153
- <resources/>
154
- <connections/>
155
- </ui>
@@ -1,146 +0,0 @@
1
- =begin
2
- ** Form generated from reading ui file 'data_displays.ui'
3
- **
4
- ** Created: Mon Jan 25 15:21:37 2010
5
- ** by: Qt User Interface Compiler version 4.5.3
6
- **
7
- ** WARNING! All changes made in this file will be lost when recompiling ui file!
8
- =end
9
-
10
- class Ui_DataDisplays
11
- attr_reader :vboxLayout
12
- attr_reader :groupBox
13
- attr_reader :vboxLayout1
14
- attr_reader :streams
15
- attr_reader :hboxLayout
16
- attr_reader :spacerItem
17
- attr_reader :add_stream
18
- attr_reader :remove_stream
19
- attr_reader :displaysGroup
20
- attr_reader :vboxLayout2
21
- attr_reader :hboxLayout1
22
- attr_reader :display_types
23
- attr_reader :display_add
24
- attr_reader :display_configs
25
-
26
- def setupUi(dataDisplays)
27
- if dataDisplays.objectName.nil?
28
- dataDisplays.objectName = "dataDisplays"
29
- end
30
- dataDisplays.resize(548, 508)
31
- @vboxLayout = Qt::VBoxLayout.new(dataDisplays)
32
- @vboxLayout.spacing = 6
33
- @vboxLayout.margin = 9
34
- @vboxLayout.objectName = "vboxLayout"
35
- @groupBox = Qt::GroupBox.new(dataDisplays)
36
- @groupBox.objectName = "groupBox"
37
- @vboxLayout1 = Qt::VBoxLayout.new(@groupBox)
38
- @vboxLayout1.spacing = 6
39
- @vboxLayout1.margin = 9
40
- @vboxLayout1.objectName = "vboxLayout1"
41
- @streams = Qt::ListView.new(@groupBox)
42
- @streams.objectName = "streams"
43
-
44
- @vboxLayout1.addWidget(@streams)
45
-
46
- @hboxLayout = Qt::HBoxLayout.new()
47
- @hboxLayout.spacing = 6
48
- @hboxLayout.margin = 0
49
- @hboxLayout.objectName = "hboxLayout"
50
- @spacerItem = Qt::SpacerItem.new(40, 20, Qt::SizePolicy::Expanding, Qt::SizePolicy::Minimum)
51
-
52
- @hboxLayout.addItem(@spacerItem)
53
-
54
- @add_stream = Qt::PushButton.new(@groupBox)
55
- @add_stream.objectName = "add_stream"
56
-
57
- @hboxLayout.addWidget(@add_stream)
58
-
59
- @remove_stream = Qt::PushButton.new(@groupBox)
60
- @remove_stream.objectName = "remove_stream"
61
-
62
- @hboxLayout.addWidget(@remove_stream)
63
-
64
-
65
- @vboxLayout1.addLayout(@hboxLayout)
66
-
67
-
68
- @vboxLayout.addWidget(@groupBox)
69
-
70
- @displaysGroup = Qt::GroupBox.new(dataDisplays)
71
- @displaysGroup.objectName = "displaysGroup"
72
- @vboxLayout2 = Qt::VBoxLayout.new(@displaysGroup)
73
- @vboxLayout2.spacing = 6
74
- @vboxLayout2.margin = 9
75
- @vboxLayout2.objectName = "vboxLayout2"
76
- @hboxLayout1 = Qt::HBoxLayout.new()
77
- @hboxLayout1.spacing = 6
78
- @hboxLayout1.margin = 0
79
- @hboxLayout1.objectName = "hboxLayout1"
80
- @display_types = Qt::ComboBox.new(@displaysGroup)
81
- @display_types.objectName = "display_types"
82
- @sizePolicy = Qt::SizePolicy.new(5, 0)
83
- @sizePolicy.setHorizontalStretch(1)
84
- @sizePolicy.setVerticalStretch(0)
85
- @sizePolicy.heightForWidth = @display_types.sizePolicy.hasHeightForWidth
86
- @display_types.sizePolicy = @sizePolicy
87
-
88
- @hboxLayout1.addWidget(@display_types)
89
-
90
- @display_add = Qt::PushButton.new(@displaysGroup)
91
- @display_add.objectName = "display_add"
92
-
93
- @hboxLayout1.addWidget(@display_add)
94
-
95
-
96
- @vboxLayout2.addLayout(@hboxLayout1)
97
-
98
- @display_configs = Qt::ToolBox.new(@displaysGroup)
99
- @display_configs.objectName = "display_configs"
100
- @sizePolicy1 = Qt::SizePolicy.new(5, 3)
101
- @sizePolicy1.setHorizontalStretch(0)
102
- @sizePolicy1.setVerticalStretch(0)
103
- @sizePolicy1.heightForWidth = @display_configs.sizePolicy.hasHeightForWidth
104
- @display_configs.sizePolicy = @sizePolicy1
105
-
106
- @vboxLayout2.addWidget(@display_configs)
107
-
108
-
109
- @vboxLayout.addWidget(@displaysGroup)
110
-
111
-
112
- retranslateUi(dataDisplays)
113
-
114
- @display_configs.setCurrentIndex(-1)
115
-
116
-
117
- Qt::MetaObject.connectSlotsByName(dataDisplays)
118
- end # setupUi
119
-
120
- def setup_ui(dataDisplays)
121
- setupUi(dataDisplays)
122
- end
123
-
124
- def retranslateUi(dataDisplays)
125
- dataDisplays.windowTitle = Qt::Application.translate("DataDisplays", "Form", nil, Qt::Application::UnicodeUTF8)
126
- @groupBox.title = Qt::Application.translate("DataDisplays", "Data sources", nil, Qt::Application::UnicodeUTF8)
127
- @add_stream.text = Qt::Application.translate("DataDisplays", "&Add", nil, Qt::Application::UnicodeUTF8)
128
- @remove_stream.text = Qt::Application.translate("DataDisplays", "Remove", nil, Qt::Application::UnicodeUTF8)
129
- @displaysGroup.title = Qt::Application.translate("DataDisplays", "Displays", nil, Qt::Application::UnicodeUTF8)
130
- @display_types.insertItems(0, [Qt::Application.translate("DataDisplays", "Relations", nil, Qt::Application::UnicodeUTF8),
131
- Qt::Application.translate("DataDisplays", "Chronicle", nil, Qt::Application::UnicodeUTF8),
132
- Qt::Application.translate("DataDisplays", "Notifications", nil, Qt::Application::UnicodeUTF8)])
133
- @display_add.text = Qt::Application.translate("DataDisplays", "&Add", nil, Qt::Application::UnicodeUTF8)
134
- end # retranslateUi
135
-
136
- def retranslate_ui(dataDisplays)
137
- retranslateUi(dataDisplays)
138
- end
139
-
140
- end
141
-
142
- module Ui
143
- class DataDisplays < Ui_DataDisplays
144
- end
145
- end # module Ui
146
-
@@ -1,26 +0,0 @@
1
- require 'roby/log/gui/basic_display_ui'
2
- require 'roby/log/notifications'
3
-
4
- module Ui
5
- class NotificationsConfig < Ui::BasicDisplayConfig
6
- attr_reader :streams_model
7
-
8
- def setupUi(streams_model, widget)
9
- super(widget)
10
-
11
- display = Roby::Log::NotificationsDisplay.new
12
- @streams_model = FilteredDataStreamListModel.new(stream, display, 'roby-events', streams_model.streams)
13
- Qt::Object.connect(stream, SIGNAL("currentIndexChanged(int)"), @streams_model, SLOT("selectedStream()"))
14
- @streams_model.source_model = streams_model
15
- stream.model = @streams_model
16
- display
17
- end
18
-
19
- def self.setup_optparse(opt, replay)
20
- opt.on("--notifications") do
21
- replay.add_display('Notifications')
22
- end
23
- end
24
- end
25
- end
26
-
@@ -1,269 +0,0 @@
1
- require 'Qt4'
2
- require 'roby'
3
- require 'roby/log/relations'
4
- require 'roby/log/gui/relations_ui'
5
-
6
- module Ui
7
- # Manage relations using a two-level tree structure. The relation
8
- # categories (tasks and events) have a model index of (row, column, nil)
9
- # while the relations have a model index of (row, column, category), where
10
- # category is TASK_ROOT_INDEX for task relations and EVENT_ROOT_INDEX for
11
- # event relations
12
- class RelationConfigModel < Qt::AbstractItemModel
13
- COL_NAME = 0
14
- COL_COLOR = 1
15
-
16
- TASK_ROOT_INDEX = 0
17
- EVENT_ROOT_INDEX = 1
18
- CATEGORIES = ['Task structure']
19
-
20
- def event_root_index; createIndex(EVENT_ROOT_INDEX, 0, -1) end
21
- def task_root_index; createIndex(TASK_ROOT_INDEX, 0, -1) end
22
-
23
- attr_reader :relations
24
- attr_reader :display
25
- def initialize(display)
26
- super()
27
-
28
- @current_color = 0
29
- @display = display
30
- @relations = []
31
-
32
- relations[TASK_ROOT_INDEX] = Roby::Log::RelationsDisplay.all_task_relations
33
-
34
- RelationConfigModel.detect_qtruby_behaviour(createIndex(0, 0, 0))
35
- end
36
-
37
- QTRUBY_INDEX_USING_POINTERS = 1
38
- QTRUBY_INDEX_USING_OBJECTIDS = 2
39
- def self.detect_qtruby_behaviour(idx)
40
- if idx.internalPointer == 0
41
- @@qtruby_behaviour = QTRUBY_INDEX_USING_POINTERS
42
- elsif idx.internalId == 1
43
- @@qtruby_behaviour = QTRUBY_INDEX_USING_OBJECTIDS
44
- end
45
- end
46
-
47
- def self.category_from_index(idx)
48
- if @@qtruby_behaviour == QTRUBY_INDEX_USING_POINTERS
49
- idx.internalPointer
50
- else
51
- idx.internalId >> 1
52
- end
53
- end
54
-
55
- def index(row, column, parent)
56
- if parent.valid? && RelationConfigModel.category_from_index(parent) == -1
57
- createIndex(row, column, parent.row)
58
- elsif row < relations.size
59
- createIndex(row, column, -1)
60
- else
61
- Qt::ModelIndex.new
62
- end
63
- end
64
-
65
- def parent(index)
66
- category = RelationConfigModel.category_from_index(index)
67
- if !index.valid? || category == -1 then Qt::ModelIndex.new
68
- else createIndex(category, 0, -1) end
69
- end
70
- def columnCount(parent); 2 end
71
- def hasChildren(parent); !parent.valid? || RelationConfigModel.category_from_index(parent) == -1 end
72
- def rowCount(parent)
73
- if !parent.valid? then relations.size
74
- else relations[parent.row].size end
75
- end
76
- def headerData(section, orientation, role)
77
- return Qt::Variant.new unless role == Qt::DisplayRole && orientation == Qt::Horizontal
78
- value = if section == 0 then "Relation"
79
- else "Color" end
80
- Qt::Variant.new(value)
81
- end
82
- def data(index, role)
83
- return Qt::Variant.new unless index.valid?
84
-
85
- category = RelationConfigModel.category_from_index(index)
86
- value = if category == -1
87
- if index.column == COL_NAME && role == Qt::DisplayRole
88
- CATEGORIES[index.row]
89
- end
90
- else
91
- relation = relations[category][index.row]
92
- if index.column == COL_NAME && role == Qt::CheckStateRole
93
- if display.relation_enabled?(relation) then Qt::Checked.to_i
94
- elsif display.layout_relation?(relation) then Qt::PartiallyChecked.to_i
95
- else Qt::Unchecked.to_i
96
- end
97
- elsif index.column == COL_NAME && role == Qt::DisplayRole
98
- relation.name.gsub(/.*Structure::/, '')
99
- elsif index.column == COL_COLOR && role == Qt::DisplayRole
100
- display.relation_color(relation)
101
- end
102
- end
103
-
104
- if value then Qt::Variant.new(value)
105
- else Qt::Variant.new
106
- end
107
- end
108
- def setData(index, value, role)
109
- category = RelationConfigModel.category_from_index(index)
110
- relation = relations[category][index.row]
111
- if role == Qt::CheckStateRole
112
- case value.to_i
113
- when Qt::Checked.to_i
114
- display.enable_relation(relation)
115
- when Qt::PartiallyChecked.to_i
116
- display.layout_relation(relation)
117
- else
118
- display.ignore_relation(relation)
119
- end
120
- else
121
- display.update_relation_color(relation, value.to_string)
122
- end
123
- display.update
124
- emit dataChanged(index, index)
125
- end
126
- def flags(index)
127
- if !index.valid? || RelationConfigModel.category_from_index(index) == -1 then Qt::ItemIsEnabled
128
- else
129
- flags = Qt::ItemIsSelectable | Qt::ItemIsTristate | Qt::ItemIsEnabled | Qt::ItemIsUserCheckable
130
- if index.column == 1
131
- flags = Qt::ItemIsEditable | flags
132
- end
133
- flags
134
- end
135
- end
136
- end
137
- class RelationDelegate < Qt::ItemDelegate
138
- MAX_WIDTH = 50
139
- def createEditor(parent, option, index)
140
- color = index.model.data(index, Qt::DisplayRole).to_string
141
- new_color = Qt::ColorDialog.get_color(Qt::Color.new(color))
142
- index.model.setData(index, Qt::Variant.new(new_color.name), Qt::DisplayRole)
143
-
144
- nil
145
- end
146
- def paint(painter, option, index)
147
- if index.column == 1 && RelationConfigModel.category_from_index(index) >= 0
148
- color = index.model.data(index, Qt::DisplayRole).to_string
149
- rect = option.rect
150
- rect.adjust(1, 1, -1, -1)
151
- if rect.width > MAX_WIDTH
152
- rect.width = MAX_WIDTH
153
- end
154
- painter.fill_rect rect, Qt::Brush.new(Qt::Color.new(color))
155
- else
156
- super
157
- end
158
- end
159
- end
160
-
161
- class LayoutMethodModel < Qt::AbstractListModel
162
- METHODS = ["Auto", "dot [rankdir=LR]", "dot [rankdir=TB]", "circo", "neato [overlap=false]", "neato [overlap=false,mode=hier]", "twopi", "fdp"]
163
- attr_reader :display, :combo
164
- def initialize(display, combo)
165
- super()
166
- @display, @combo = display, combo
167
- end
168
-
169
- def rowCount(parent)
170
- return 0 if parent.valid?
171
- return METHODS.size
172
- end
173
- def data(index, role)
174
- return Qt::Variant.new unless role == Qt::DisplayRole && index.valid?
175
- Qt::Variant.new(METHODS[index.row])
176
- end
177
- def layout_method(index)
178
- end
179
-
180
- def flags(index)
181
- Qt::ItemIsSelectable | Qt::ItemIsEnabled
182
- end
183
-
184
- def selected
185
- index = combo.current_index
186
- display.layout_method = if index == 0 then nil
187
- else METHODS[index]
188
- end
189
- end
190
- slots 'selected()'
191
- end
192
-
193
- class RelationsConfig
194
- attr_reader :current_color
195
- attr_reader :relation_color
196
- attr_reader :relation_item
197
- attr_reader :model
198
- attr_reader :delegate
199
-
200
- def initialize(*args)
201
- super()
202
- if !system("dot", "-V")
203
- raise "the 'dot' tool is unavailable"
204
- end
205
- end
206
-
207
- def setupUi(streams_model, widget)
208
- super(widget)
209
-
210
- display = Roby::Log::RelationsDisplay.new
211
- @model = RelationConfigModel.new(display)
212
- @delegate = RelationDelegate.new
213
- relations.set_item_delegate @delegate
214
- relations.header.resize_mode = Qt::HeaderView::Stretch
215
- relations.model = @model
216
- relations.set_expanded model.task_root_index, true
217
- relations.set_expanded model.event_root_index, true
218
-
219
- @streams_model = FilteredDataStreamListModel.new(stream, display, 'roby-events', streams_model.streams)
220
- Qt::Object.connect(stream, SIGNAL("currentIndexChanged(int)"), @streams_model, SLOT("selectedStream()"))
221
- @streams_model.source_model = streams_model
222
- stream.model = @streams_model
223
-
224
- @layout_model = LayoutMethodModel.new(display, layout_method)
225
- Qt::Object.connect(layout_method, SIGNAL("currentIndexChanged(int)"), @layout_model, SLOT("selected()"))
226
- layout_method.model = @layout_model
227
-
228
- display
229
- end
230
-
231
- def self.setup_optparse(opt, replay)
232
- opt.on("--relations=REL1,REL2", Array, "create a relation display with the given relations") do |relations|
233
- replay.initial_setup << lambda do |gui|
234
- all_relations = Roby::Log::RelationsDisplay.all_task_relations
235
- if relations.include?("all")
236
- relations = all_relations
237
- else
238
- relations.map! do |relname|
239
- rel = all_relations.find { |rel| rel.name =~ /#{relname}/ }
240
- unless rel
241
- STDERR.puts "Unknown relation #{relname}. Available relations are:"
242
- STDERR.puts " Tasks: " + all_relations.map { |r| r.name.gsub(/.*Structure::/, '') }.join(", ")
243
- exit(1)
244
- end
245
-
246
- rel
247
- end
248
- end
249
-
250
- if relation_display = gui.add_display('Relations')
251
- relations.each do |rel|
252
- relation_display.enable_relation(rel)
253
- end
254
- end
255
- end
256
- end
257
- end
258
- end
259
- end
260
-
261
- if $0 == __FILE__
262
- a = Qt::Application.new(ARGV)
263
- u = Ui::RelationsConfig.new
264
- w = Qt::Widget.new
265
- u.setupUi(w)
266
- w.show
267
- a.exec
268
- end
269
-