virtualbox-ws 0.0.1 → 0.0.2

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 (128) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/Gemfile +2 -1
  4. data/Gemfile.lock +2 -0
  5. data/LICENSE.md +5 -0
  6. data/README.md +57 -22
  7. data/lib/core_ext/string.rb +5 -0
  8. data/lib/virtualbox-ws.rb +2 -6
  9. data/lib/virtualbox/base.rb +31 -0
  10. data/lib/virtualbox/classes/additions_facility.rb +28 -0
  11. data/lib/virtualbox/classes/appliance.rb +51 -0
  12. data/lib/virtualbox/classes/audio_adapter.rb +33 -0
  13. data/lib/virtualbox/classes/bandwidth_control.rb +36 -0
  14. data/lib/virtualbox/classes/bandwidth_group.rb +29 -0
  15. data/lib/virtualbox/classes/bios_settings.rb +81 -0
  16. data/lib/virtualbox/classes/console.rb +201 -0
  17. data/lib/virtualbox/classes/dhcp_server.rb +52 -0
  18. data/lib/virtualbox/classes/directory.rb +27 -0
  19. data/lib/virtualbox/classes/display.rb +47 -0
  20. data/lib/virtualbox/classes/event.rb +32 -0
  21. data/lib/virtualbox/classes/event_listener.rb +14 -0
  22. data/lib/virtualbox/classes/event_source.rb +62 -0
  23. data/lib/virtualbox/classes/events/additions_state_changed_event.rb +7 -0
  24. data/lib/virtualbox/classes/events/bandwidth_group_changed_event.rb +13 -0
  25. data/lib/virtualbox/classes/events/can_show_window_event.rb +7 -0
  26. data/lib/virtualbox/classes/events/clipboard_mode_changed_event.rb +12 -0
  27. data/lib/virtualbox/classes/events/cpu_changed_event.rb +16 -0
  28. data/lib/virtualbox/classes/events/cpu_execution_cap_changed_event.rb +12 -0
  29. data/lib/virtualbox/classes/events/drag_and_drop_mode_changed_event.rb +12 -0
  30. data/lib/virtualbox/classes/events/event_source_changed_event.rb +17 -0
  31. data/lib/virtualbox/classes/events/extra_data_can_change_event.rb +20 -0
  32. data/lib/virtualbox/classes/events/extra_data_changed_event.rb +20 -0
  33. data/lib/virtualbox/classes/events/guest_keyboard_event.rb +12 -0
  34. data/lib/virtualbox/classes/events/guest_monitor_changed_event.rb +32 -0
  35. data/lib/virtualbox/classes/events/guest_mouse_event.rb +32 -0
  36. data/lib/virtualbox/classes/events/guest_property_changed_event.rb +20 -0
  37. data/lib/virtualbox/classes/events/host_pci_device_plug_event.rb +24 -0
  38. data/lib/virtualbox/classes/events/keyboard_leds_changed_event.rb +20 -0
  39. data/lib/virtualbox/classes/events/machine_data_changed_event.rb +12 -0
  40. data/lib/virtualbox/classes/events/machine_event.rb +12 -0
  41. data/lib/virtualbox/classes/events/machine_registered_event.rb +12 -0
  42. data/lib/virtualbox/classes/events/machine_state_changed_event.rb +12 -0
  43. data/lib/virtualbox/classes/events/medium_changed_event.rb +13 -0
  44. data/lib/virtualbox/classes/events/medium_registered_event.rb +20 -0
  45. data/lib/virtualbox/classes/events/mouse_capability_changed_event.rb +20 -0
  46. data/lib/virtualbox/classes/events/mouse_pointer_shape_changed_event.rb +36 -0
  47. data/lib/virtualbox/classes/events/nat_redirect_event.rb +40 -0
  48. data/lib/virtualbox/classes/events/network_adapter_changed_event.rb +13 -0
  49. data/lib/virtualbox/classes/events/parallel_port_changed_event.rb +13 -0
  50. data/lib/virtualbox/classes/events/reusable_event.rb +18 -0
  51. data/lib/virtualbox/classes/events/runtime_error_event.rb +20 -0
  52. data/lib/virtualbox/classes/events/serial_port_changed_event.rb +13 -0
  53. data/lib/virtualbox/classes/events/session_state_changed_event.rb +12 -0
  54. data/lib/virtualbox/classes/events/shared_folder_changed_event.rb +12 -0
  55. data/lib/virtualbox/classes/events/show_window_event.rb +12 -0
  56. data/lib/virtualbox/classes/events/snapshot_changed_event.rb +7 -0
  57. data/lib/virtualbox/classes/events/snapshot_deleted_event.rb +7 -0
  58. data/lib/virtualbox/classes/events/snapshot_event.rb +12 -0
  59. data/lib/virtualbox/classes/events/snapshot_taken_event.rb +7 -0
  60. data/lib/virtualbox/classes/events/state_changed_event.rb +12 -0
  61. data/lib/virtualbox/classes/events/storage_controller_changed_event.rb +7 -0
  62. data/lib/virtualbox/classes/events/storage_device_changed_event.rb +16 -0
  63. data/lib/virtualbox/classes/events/usb_controller_changed_event.rb +7 -0
  64. data/lib/virtualbox/classes/events/usb_device_state_changed_event.rb +17 -0
  65. data/lib/virtualbox/classes/events/v_box_svc_availability_chaged_event.rb +12 -0
  66. data/lib/virtualbox/classes/events/veto_event.rb +21 -0
  67. data/lib/virtualbox/classes/events/vrde_server_changed_event.rb +7 -0
  68. data/lib/virtualbox/classes/events/vrde_server_info_changed_event.rb +7 -0
  69. data/lib/virtualbox/classes/file.rb +73 -0
  70. data/lib/virtualbox/classes/fs_obj_info.rb +84 -0
  71. data/lib/virtualbox/classes/guest.rb +134 -0
  72. data/lib/virtualbox/classes/guest_directory.rb +7 -0
  73. data/lib/virtualbox/classes/guest_file.rb +7 -0
  74. data/lib/virtualbox/classes/guest_fs_obj_info.rb +7 -0
  75. data/lib/virtualbox/classes/guest_process.rb +7 -0
  76. data/lib/virtualbox/classes/guest_session.rb +232 -0
  77. data/lib/virtualbox/classes/host.rb +172 -0
  78. data/lib/virtualbox/classes/host_network_interface.rb +78 -0
  79. data/lib/virtualbox/classes/host_usb_device.rb +12 -0
  80. data/lib/virtualbox/classes/host_usb_device_filter.rb +16 -0
  81. data/lib/virtualbox/classes/keyboard.rb +29 -0
  82. data/lib/virtualbox/classes/machine.rb +922 -0
  83. data/lib/virtualbox/classes/managed_object_ref.rb +15 -0
  84. data/lib/virtualbox/classes/medium.rb +224 -0
  85. data/lib/virtualbox/classes/medium_format.rb +30 -0
  86. data/lib/virtualbox/classes/mouse.rb +37 -0
  87. data/lib/virtualbox/classes/nat_engine.rb +107 -0
  88. data/lib/virtualbox/classes/network_adapter.rb +171 -0
  89. data/lib/virtualbox/classes/parallel_port.rb +44 -0
  90. data/lib/virtualbox/classes/performance_collector.rb +51 -0
  91. data/lib/virtualbox/classes/performance_metric.rb +40 -0
  92. data/lib/virtualbox/classes/process.rb +67 -0
  93. data/lib/virtualbox/classes/progress.rb +111 -0
  94. data/lib/virtualbox/classes/serial_port.rb +60 -0
  95. data/lib/virtualbox/classes/session.rb +32 -0
  96. data/lib/virtualbox/classes/shared_folder.rb +32 -0
  97. data/lib/virtualbox/classes/snapshot.rb +44 -0
  98. data/lib/virtualbox/classes/storage_controller.rb +60 -0
  99. data/lib/virtualbox/classes/system_properties.rb +209 -0
  100. data/lib/virtualbox/classes/usb_controller.rb +58 -0
  101. data/lib/virtualbox/classes/usb_device.rb +56 -0
  102. data/lib/virtualbox/classes/usb_device_filter.rb +96 -0
  103. data/lib/virtualbox/classes/vfs_explorer.rb +51 -0
  104. data/lib/virtualbox/classes/virtual_box.rb +242 -0
  105. data/lib/virtualbox/classes/virtual_box_error_info.rb +29 -0
  106. data/lib/virtualbox/classes/virtual_system_description.rb +38 -0
  107. data/lib/virtualbox/classes/vrde_server.rb +80 -0
  108. data/lib/virtualbox/classes/vrde_server_info.rb +68 -0
  109. data/lib/virtualbox/classes/websession_manager.rb +33 -0
  110. data/lib/virtualbox/connection.rb +56 -31
  111. data/virtualbox-ws.gemspec +5 -4
  112. metadata +122 -20
  113. data/lib/virtualbox/classes/i_bios_settings.rb +0 -7
  114. data/lib/virtualbox/classes/i_console.rb +0 -16
  115. data/lib/virtualbox/classes/i_host.rb +0 -15
  116. data/lib/virtualbox/classes/i_host_network_interface.rb +0 -9
  117. data/lib/virtualbox/classes/i_machine.rb +0 -40
  118. data/lib/virtualbox/classes/i_managed_object_ref.rb +0 -6
  119. data/lib/virtualbox/classes/i_medium.rb +0 -13
  120. data/lib/virtualbox/classes/i_medium_format.rb +0 -6
  121. data/lib/virtualbox/classes/i_network_adapter.rb +0 -12
  122. data/lib/virtualbox/classes/i_session.rb +0 -6
  123. data/lib/virtualbox/classes/i_system_properties.rb +0 -18
  124. data/lib/virtualbox/classes/i_virtualbox.rb +0 -17
  125. data/lib/virtualbox/classes/i_web_session_manager.rb +0 -21
  126. data/lib/virtualbox/core_ext/string.rb +0 -9
  127. data/lib/virtualbox/enumerations.rb +0 -6
  128. data/lib/virtualbox/i_base.rb +0 -51
@@ -0,0 +1,201 @@
1
+ module VBox
2
+ class Console < Base
3
+
4
+ attr_reader :ref
5
+
6
+ # Attributes
7
+
8
+ def machine
9
+ machine = VBox::WebService.send_request(:i_console_get_machine, _this)
10
+ VBox::Machine.new(machine)
11
+ end
12
+
13
+ def state
14
+ VBox::WebService.send_request(:i_console_get_machine_state, _this)
15
+ end
16
+
17
+ def guest
18
+ guest = VBox::WebService.send_request(:i_console_get_guest, _this)
19
+ VBox::Guest.new(guest)
20
+ end
21
+
22
+ def keyboard
23
+ guest = VBox::WebService.send_request(:i_console_get_keyboard, _this)
24
+ VBox::Keyboard.new(guest)
25
+ end
26
+
27
+ def mouse
28
+ guest = VBox::WebService.send_request(:i_console_get_mouse, _this)
29
+ VBox::Mouse.new(guest)
30
+ end
31
+
32
+ def remote_usb_devices
33
+ remote_usb_devices = VBox::WebService.send_request(:i_console_get_remote_usb_devices, _this)
34
+ remote_usb_devices.map do |remote_usb_device|
35
+ VBox::HostUSBDevice.new(remote_usb_device)
36
+ end
37
+ end
38
+
39
+ def shared_folders
40
+ shared_folders = VBox::WebService.send_request(:i_console_get_shared_folders, _this)
41
+ shared_folders.map do |shared_folder|
42
+ VBox::SharedFolder.new(shared_folder)
43
+ end
44
+ end
45
+
46
+ def vrde_server_info
47
+ vrde_server_info = VBox::WebService.send_request(:i_console_get_vrde_server_info, _this)
48
+ VBox::VRDEServerInfo.new(vrde_server_info)
49
+ end
50
+
51
+ def event_source
52
+ event_source = VBox::WebService.send_request(:i_console_get_event_source, _this)
53
+ VBox::EventSource.new(event_source)
54
+ end
55
+
56
+ def attached_pci_devices
57
+ VBox::WebService.send_request(:i_console_get_attached_pci_devices, _this)
58
+ end
59
+
60
+ def use_host_clipboard
61
+ VBox::WebService.send_request(:i_console_get_use_host_clipboard, _this)
62
+ end
63
+
64
+ def use_host_clipboard=(use_host_clipboard)
65
+ VBox::WebService.send_request(:i_console_set_use_host_clipboard,
66
+ _this.merge(:use_host_clipboard => use_host_clipboard))
67
+ end
68
+
69
+ # Methods
70
+
71
+ def adopt_saved_state(args={})
72
+ ensure_hash(args)
73
+ VBox::WebService.send_request(:i_console_adopt_saved_state, _this.merge(args))
74
+ end
75
+
76
+ def attach_usb_device(args={})
77
+ ensure_hash(args)
78
+ VBox::WebService.send_request(:i_console_attach_usb_device, _this.merge(args))
79
+ end
80
+
81
+ def create_shared_folder(args={})
82
+ ensure_hash(args)
83
+ VBox::WebService.send_request(:i_console_create_shared_folder, _this.merge(args))
84
+ end
85
+
86
+ def delete_snapshot(args={})
87
+ ensure_hash(args)
88
+ progress = VBox::WebService.send_request(:i_console_delete_snapshot, _this.merge(args))
89
+ VBox::Progress.new(progress)
90
+ end
91
+
92
+ def delete_snapshot_and_all_children(args={})
93
+ ensure_hash(args)
94
+ progress = VBox::WebService.send_request(:i_console_delete_snapshot_and_all_children, _this.merge(args))
95
+ VBox::Progress.new(progress)
96
+ end
97
+
98
+ def delete_snapshot_range(args={})
99
+ ensure_hash(args)
100
+ progress = VBox::WebService.send_request(:i_console_delete_snapshot_range, _this.merge(args))
101
+ VBox::Progress.new(progress)
102
+ end
103
+
104
+ def detach_usb_device(args={})
105
+ ensure_hash(args)
106
+ usb_device = VBox::WebService.send_request(:i_console_detach_usb_device, _this.merge(args))
107
+ VBox::USBDevice.new(usb_device)
108
+ end
109
+
110
+ def discard_saved_state(args={})
111
+ ensure_hash(args)
112
+ VBox::WebService.send_request(:i_console_discard_saved_state, _this.merge(args))
113
+ end
114
+
115
+ def find_usb_device_by_address(args={})
116
+ ensure_hash(args)
117
+ usb_device = VBox::WebService.send_request(:i_console_find_usb_device_by_address, _this.merge(args))
118
+ VBox::USBDevice.new(usb_device)
119
+ end
120
+
121
+ def find_usb_device_by_id(args={})
122
+ ensure_hash(args)
123
+ usb_device = VBox::WebService.send_request(:i_console_find_usb_device_by_id, _this.merge(args))
124
+ VBox::USBDevice.new(usb_device)
125
+ end
126
+
127
+ def get_device_activity(args={})
128
+ ensure_hash(args)
129
+ VBox::WebService.send_request(:i_console_get_device_activity, _this.merge(args))
130
+ end
131
+
132
+ def get_guest_entered_acpi_mode
133
+ VBox::WebService.send_request(:i_console_get_guest_entered_acpi_mode, _this)
134
+ end
135
+
136
+ def get_power_button_handled
137
+ VBox::WebService.send_request(:i_console_get_power_button_handled, _this)
138
+ end
139
+
140
+ def pause
141
+ VBox::WebService.send_request(:i_console_pause, _this)
142
+ end
143
+
144
+ def power_button
145
+ VBox::WebService.send_request(:i_console_power_button, _this)
146
+ end
147
+
148
+ def power_down
149
+ progress = VBox::WebService.send_request(:i_console_power_down, _this)
150
+ VBox::Progress.new(progress)
151
+ end
152
+
153
+ def power_up
154
+ progress = VBox::WebService.send_request(:i_console_power_up, _this)
155
+ VBox::Progress.new(progress)
156
+ end
157
+
158
+ def power_up_paused
159
+ progress = VBox::WebService.send_request(:i_console_power_up_paused, _this)
160
+ VBox::Progress.new(progress)
161
+ end
162
+
163
+ def remove_shared_folder(args={})
164
+ ensure_hash(args)
165
+ VBox::WebService.send_request(:i_console_remove_shared_folder, _this.merge(args))
166
+ end
167
+
168
+ def reset
169
+ VBox::WebService.send_request(:i_console_reset, _this)
170
+ end
171
+
172
+ def restore_snapshot(args={})
173
+ ensure_hash(args)
174
+ progress = VBox::WebService.send_request(:i_console_restore_snapshot, _this.merge(args))
175
+ VBox::Progress.new(progress)
176
+ end
177
+
178
+ def resume
179
+ VBox::WebService.send_request(:i_console_resume, _this)
180
+ end
181
+
182
+ def save_state
183
+ progress = VBox::WebService.send_request(:i_console_save_state, _this)
184
+ VBox::Progress.new(progress)
185
+ end
186
+
187
+ def sleep_button
188
+ VBox::WebService.send_request(:i_console_sleep_button, _this)
189
+ end
190
+
191
+ def take_snapshot
192
+ progress = VBox::WebService.send_request(:i_console_take_snapshot, _this)
193
+ VBox::Progress.new(progress)
194
+ end
195
+
196
+ def teleport(args={})
197
+ progress = VBox::WebService.send_request(:i_console_teleport, _this.merge(args))
198
+ VBox::Progress.new(progress)
199
+ end
200
+ end
201
+ end
@@ -0,0 +1,52 @@
1
+ module VBox
2
+ class DHCPServer < Base
3
+
4
+ attr_reader :ref
5
+
6
+ # Attributes
7
+
8
+ def enabled
9
+ VBox::WebService.send_request(:i_dhcp_server_get_enabled, _this)
10
+ end
11
+
12
+ def enabled=(enabled)
13
+ VBox::WebService.send_request(:i_dhcp_server_set_enabled, _this.merge(:enabled => enabled))
14
+ end
15
+
16
+ def ip_address
17
+ VBox::WebService.send_request(:i_dhcp_server_get_ip_address, _this)
18
+ end
19
+
20
+ def network_mask
21
+ VBox::WebService.send_request(:i_dhcp_server_get_network_mask, _this)
22
+ end
23
+
24
+ def network_name
25
+ VBox::WebService.send_request(:i_dhcp_server_get_network_name, _this)
26
+ end
27
+
28
+ def lower_ip
29
+ VBox::WebService.send_request(:i_dhcp_server_get_lower_ip, _this)
30
+ end
31
+
32
+ def upper_ip
33
+ VBox::WebService.send_request(:i_dhcp_server_get_upper_ip, _this)
34
+ end
35
+
36
+ # Methods
37
+
38
+ def set_configuration(args={})
39
+ ensure_hash(args)
40
+ VBox::WebService.send_request(:i_dhcp_server_set_configuration, _this.merge(args))
41
+ end
42
+
43
+ def start(args={})
44
+ ensure_hash(args)
45
+ VBox::WebService.send_request(:i_dhcp_server_start, _this.merge(args))
46
+ end
47
+
48
+ def stop
49
+ VBox::WebService.send_request(:i_dhcp_server_stop, _this)
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,27 @@
1
+ module VBox
2
+ class Directory < Base
3
+
4
+ attr_reader :ref
5
+
6
+ # Attributes
7
+
8
+ def directory_name
9
+ VBox::WebService.send_request(:i_directory_get_directory_name, _this)
10
+ end
11
+
12
+ def filter
13
+ VBox::WebService.send_request(:i_directory_get_filter, _this)
14
+ end
15
+
16
+ # Methods
17
+
18
+ def close
19
+ VBox::WebService.send_request(:i_directory_close, _this)
20
+ end
21
+
22
+ def read
23
+ entry = VBox::WebService.send_request(:i_directory_read, _this)
24
+ VBox::FsObjInfo.new(entry)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,47 @@
1
+ module VBox
2
+ class Display < Base
3
+
4
+ attr_reader :ref
5
+
6
+ # Methods
7
+
8
+ def get_screen_resolution(args={})
9
+ ensure_hash(args)
10
+ VBox::WebService.send_request(:i_display_get_screen_resolution, _this.merge(args))
11
+ end
12
+
13
+ def invalidate_and_update
14
+ VBox::WebService.send_request(:i_display_invalidate_and_update, _this)
15
+ end
16
+
17
+ def resize_completed(args={})
18
+ ensure_hash(args)
19
+ VBox::WebService.send_request(:i_display_resize_completed, _this.merge(args))
20
+ end
21
+
22
+ def set_seamless_mode(args={})
23
+ ensure_hash(args)
24
+ VBox::WebService.send_request(:i_display_set_seamless_mode, _this.merge(args))
25
+ end
26
+
27
+ def set_video_mode_hint(args={})
28
+ ensure_hash(args)
29
+ VBox::WebService.send_request(:i_display_set_video_mode_hint, _this.merge(args))
30
+ end
31
+
32
+ def take_screen_shot_png_to_array(args={})
33
+ ensure_hash(args)
34
+ VBox::WebService.send_request(:i_display_take_screen_shot_png_to_array, _this.merge(args))
35
+ end
36
+
37
+ def take_screen_shot_to_array(args={})
38
+ ensure_hash(args)
39
+ VBox::WebService.send_request(:i_display_take_screen_shot_to_array, _this.merge(args))
40
+ end
41
+
42
+ def viewport_changed(args={})
43
+ ensure_hash(args)
44
+ VBox::WebService.send_request(:i_display_viewport_changed, _this.merge(args))
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,32 @@
1
+ module VBox
2
+ class Event < Base
3
+
4
+ attr_reader :ref
5
+
6
+ # Attributes
7
+
8
+ def type
9
+ VBox::WebService.send_request(:i_event_get_type, _this)
10
+ end
11
+
12
+ def source
13
+ source = VBox::WebService.send_request(:i_event_get_source, _this)
14
+ VBox::EventSource.new(source)
15
+ end
16
+
17
+ def waitable
18
+ VBox::WebService.send_request(:i_event_get_waitable, _this)
19
+ end
20
+
21
+ # Methods
22
+
23
+ def set_processed
24
+ VBox::WebService.send_request(:i_event_set_processed, _this)
25
+ end
26
+
27
+ def wait_processed(args={})
28
+ ensure_hash(args)
29
+ VBox::WebService.send_request(:i_event_set_processed, _this.merge(args))
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,14 @@
1
+ module VBox
2
+ class EventListener < Base
3
+
4
+ attr_reader :ref
5
+
6
+ # Methods
7
+
8
+ def handle_event(args={})
9
+ ensure_hash(args)
10
+ args[:event] = args[:event].ref if args.has_key?(:event) & args[:event].respond_to?(:ref)
11
+ VBox::WebService.send_request(:i_event_listener_handle_event, _this.merge(args))
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,62 @@
1
+ module VBox
2
+ class EventSource < Base
3
+
4
+ attr_reader :ref
5
+
6
+ # Methods
7
+
8
+ def create_aggregator(args={})
9
+ ensure_hash(args)
10
+ if args.has_key?(:subordinates)
11
+ args[:subordinates].map! do |subordinate|
12
+ subordinate.respond_to?(:ref) ? subordinate.ref : subordinate
13
+ end
14
+ end
15
+ event_source = VBox::WebService.send_request(:i_event_source_create_aggregator, _this.merge(args))
16
+ VBox::EventSource.new(event_source)
17
+ end
18
+
19
+ def create_listener
20
+ event_listener = VBox::WebService.send_request(:i_event_source_create_listener, _this)
21
+ VBox::EventListener.new(event_listener)
22
+ end
23
+
24
+ def event_processed(args={})
25
+ ensure_hash(args)
26
+ args[:listener] = args[:listener].ref if args.has_key?(:listener) & args[:listener].respond_to?(:ref)
27
+ args[:event] = args[:event].ref if args.has_key?(:event) & args[:event].respond_to?(:ref)
28
+ VBox::WebService.send_request(:i_event_source_event_processed, _this.merge(args))
29
+ end
30
+
31
+ def fire_event(args={})
32
+ ensure_hash(args)
33
+ args[:event] = args[:event].ref if args.has_key?(:event) & args[:event].respond_to?(:ref)
34
+ VBox::WebService.send_request(:i_event_source_fire_event, _this.merge(args))
35
+ end
36
+
37
+ def get_event(args={})
38
+ ensure_hash(args)
39
+ args[:listener] = args[:listener].ref if args.has_key?(:listener) & args[:listener].respond_to?(:ref)
40
+ event_obj_ref = VBox::WebService.send_request(:i_event_source_get_event, _this.merge(args))
41
+ if event_obj_ref.nil?
42
+ nil
43
+ else
44
+ event = VBox::Event.new(event_obj_ref)
45
+ event_subclass = event.type.split('On')[1] + 'Event'
46
+ VBox.const_get(event_subclass).new(event_obj_ref)
47
+ end
48
+ end
49
+
50
+ def register_listener(args={})
51
+ ensure_hash(args)
52
+ args[:listener] = args[:listener].ref if args.has_key?(:listener) & args[:listener].respond_to?(:ref)
53
+ VBox::WebService.send_request(:i_event_source_register_listener, _this.merge(args))
54
+ end
55
+
56
+ def unregister_listener(args={})
57
+ ensure_hash(args)
58
+ args[:listener] = args[:listener].ref if args.has_key?(:listener) & args[:listener].respond_to?(:ref)
59
+ VBox::WebService.send_request(:i_event_source_unregister_listener, _this.merge(args))
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,7 @@
1
+ module VBox
2
+ class AdditionsStateChangedEvent < Event
3
+
4
+ attr_reader :ref
5
+
6
+ end
7
+ end