reflexion 0.5.3 → 0.7.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 (309) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/reflex/application.cpp +56 -7
  3. data/.doc/ext/reflex/capture_event.cpp +1 -1
  4. data/.doc/ext/reflex/chase_constraint.cpp +84 -0
  5. data/.doc/ext/reflex/clipboard.cpp +65 -0
  6. data/.doc/ext/reflex/color_event.cpp +76 -0
  7. data/.doc/ext/reflex/color_picker.cpp +113 -0
  8. data/.doc/ext/reflex/constraint.cpp +135 -0
  9. data/.doc/ext/reflex/contact_event.cpp +1 -1
  10. data/.doc/ext/reflex/control_change_event.cpp +1 -1
  11. data/.doc/ext/reflex/device.cpp +1 -1
  12. data/.doc/ext/reflex/device_event.cpp +1 -1
  13. data/.doc/ext/reflex/draw_event.cpp +1 -1
  14. data/.doc/ext/reflex/ellipse_shape.cpp +1 -1
  15. data/.doc/ext/reflex/event.cpp +1 -1
  16. data/.doc/ext/reflex/file_dialog.cpp +181 -0
  17. data/.doc/ext/reflex/file_event.cpp +103 -0
  18. data/.doc/ext/reflex/filter.cpp +1 -1
  19. data/.doc/ext/reflex/focus_event.cpp +1 -1
  20. data/.doc/ext/reflex/frame_event.cpp +1 -1
  21. data/.doc/ext/reflex/gamepad.cpp +48 -0
  22. data/.doc/ext/reflex/image_view.cpp +1 -1
  23. data/.doc/ext/reflex/key_event.cpp +1 -274
  24. data/.doc/ext/reflex/line_shape.cpp +1 -1
  25. data/.doc/ext/reflex/link_constraint.cpp +178 -0
  26. data/.doc/ext/reflex/menu.cpp +303 -0
  27. data/.doc/ext/reflex/midi.cpp +9 -2
  28. data/.doc/ext/reflex/midi_event.cpp +1 -1
  29. data/.doc/ext/reflex/motion_event.cpp +1 -1
  30. data/.doc/ext/reflex/native.cpp +40 -10
  31. data/.doc/ext/reflex/note_event.cpp +1 -1
  32. data/.doc/ext/reflex/pin.cpp +156 -0
  33. data/.doc/ext/reflex/pointer.cpp +3 -1
  34. data/.doc/ext/reflex/pointer_event.cpp +3 -3
  35. data/.doc/ext/reflex/polygon_shape.cpp +1 -1
  36. data/.doc/ext/reflex/rect_shape.cpp +1 -1
  37. data/.doc/ext/reflex/reflex.cpp +606 -237
  38. data/.doc/ext/reflex/screen.cpp +27 -1
  39. data/.doc/ext/reflex/scroll_event.cpp +1 -1
  40. data/.doc/ext/reflex/selector.cpp +5 -5
  41. data/.doc/ext/reflex/shape.cpp +1 -1
  42. data/.doc/ext/reflex/snap_constraint.cpp +125 -0
  43. data/.doc/ext/reflex/style.cpp +1 -1
  44. data/.doc/ext/reflex/style_length.cpp +4 -3
  45. data/.doc/ext/reflex/text_event.cpp +104 -0
  46. data/.doc/ext/reflex/timer.cpp +1 -1
  47. data/.doc/ext/reflex/timer_event.cpp +1 -1
  48. data/.doc/ext/reflex/update_event.cpp +1 -1
  49. data/.doc/ext/reflex/view.cpp +206 -79
  50. data/.doc/ext/reflex/wheel_constraint.cpp +142 -0
  51. data/.doc/ext/reflex/wheel_event.cpp +1 -1
  52. data/.doc/ext/reflex/window.cpp +282 -31
  53. data/.github/workflows/release-gem.yml +2 -40
  54. data/.github/workflows/tag.yml +5 -28
  55. data/.github/workflows/test.yml +1 -28
  56. data/ChangeLog.md +79 -0
  57. data/Gemfile.lock +13 -8
  58. data/README.md +1 -0
  59. data/Rakefile +13 -2
  60. data/Reflex.podspec +2 -2
  61. data/VERSION +1 -1
  62. data/ext/reflex/application.cpp +62 -7
  63. data/ext/reflex/capture_event.cpp +1 -1
  64. data/ext/reflex/chase_constraint.cpp +89 -0
  65. data/ext/reflex/clipboard.cpp +69 -0
  66. data/ext/reflex/color_event.cpp +80 -0
  67. data/ext/reflex/color_picker.cpp +121 -0
  68. data/ext/reflex/constraint.cpp +146 -0
  69. data/ext/reflex/contact_event.cpp +1 -1
  70. data/ext/reflex/control_change_event.cpp +1 -1
  71. data/ext/reflex/device.cpp +1 -1
  72. data/ext/reflex/device_event.cpp +1 -1
  73. data/ext/reflex/draw_event.cpp +1 -1
  74. data/ext/reflex/ellipse_shape.cpp +1 -1
  75. data/ext/reflex/event.cpp +1 -1
  76. data/ext/reflex/extconf.rb +4 -2
  77. data/ext/reflex/file_dialog.cpp +194 -0
  78. data/ext/reflex/file_event.cpp +108 -0
  79. data/ext/reflex/filter.cpp +1 -1
  80. data/ext/reflex/focus_event.cpp +1 -1
  81. data/ext/reflex/frame_event.cpp +1 -1
  82. data/ext/reflex/gamepad.cpp +50 -0
  83. data/ext/reflex/image_view.cpp +1 -1
  84. data/ext/reflex/key_event.cpp +1 -275
  85. data/ext/reflex/line_shape.cpp +1 -1
  86. data/ext/reflex/link_constraint.cpp +194 -0
  87. data/ext/reflex/menu.cpp +331 -0
  88. data/ext/reflex/midi.cpp +11 -3
  89. data/ext/reflex/midi_event.cpp +1 -1
  90. data/ext/reflex/motion_event.cpp +1 -1
  91. data/ext/reflex/native.cpp +40 -10
  92. data/ext/reflex/note_event.cpp +1 -1
  93. data/ext/reflex/pin.cpp +165 -0
  94. data/ext/reflex/pointer.cpp +3 -1
  95. data/ext/reflex/pointer_event.cpp +3 -3
  96. data/ext/reflex/polygon_shape.cpp +1 -1
  97. data/ext/reflex/rect_shape.cpp +1 -1
  98. data/ext/reflex/reflex.cpp +608 -237
  99. data/ext/reflex/screen.cpp +31 -2
  100. data/ext/reflex/scroll_event.cpp +1 -1
  101. data/ext/reflex/selector.cpp +5 -5
  102. data/ext/reflex/selector.h +10 -10
  103. data/ext/reflex/shape.cpp +1 -1
  104. data/ext/reflex/snap_constraint.cpp +135 -0
  105. data/ext/reflex/style.cpp +1 -1
  106. data/ext/reflex/style_length.cpp +4 -3
  107. data/ext/reflex/text_event.cpp +111 -0
  108. data/ext/reflex/timer.cpp +1 -1
  109. data/ext/reflex/timer_event.cpp +1 -1
  110. data/ext/reflex/update_event.cpp +1 -1
  111. data/ext/reflex/view.cpp +236 -96
  112. data/ext/reflex/wheel_constraint.cpp +154 -0
  113. data/ext/reflex/wheel_event.cpp +1 -1
  114. data/ext/reflex/window.cpp +318 -40
  115. data/include/reflex/application.h +19 -0
  116. data/include/reflex/clipboard.h +53 -0
  117. data/include/reflex/color_picker.h +65 -0
  118. data/include/reflex/constraint.h +275 -0
  119. data/include/reflex/defs.h +204 -195
  120. data/include/reflex/event.h +180 -88
  121. data/include/reflex/file_dialog.h +73 -0
  122. data/include/reflex/gamepad.h +3 -0
  123. data/include/reflex/menu.h +120 -0
  124. data/include/reflex/midi.h +3 -0
  125. data/include/reflex/pin.h +68 -0
  126. data/include/reflex/pointer.h +4 -0
  127. data/include/reflex/reflex.h +2 -0
  128. data/include/reflex/ruby/application.h +6 -1
  129. data/include/reflex/ruby/clipboard.h +23 -0
  130. data/include/reflex/ruby/color_picker.h +89 -0
  131. data/include/reflex/ruby/constraint.h +94 -0
  132. data/include/reflex/ruby/event.h +62 -29
  133. data/include/reflex/ruby/file_dialog.h +89 -0
  134. data/include/reflex/ruby/gamepad.h +46 -0
  135. data/include/reflex/ruby/menu.h +103 -0
  136. data/include/reflex/ruby/pin.h +40 -0
  137. data/include/reflex/ruby/reflex.h +3 -0
  138. data/include/reflex/ruby/view.h +123 -39
  139. data/include/reflex/ruby/window.h +96 -19
  140. data/include/reflex/ruby.h +3 -0
  141. data/include/reflex/screen.h +11 -2
  142. data/include/reflex/view.h +66 -27
  143. data/include/reflex/window.h +57 -12
  144. data/include/reflex.h +8 -0
  145. data/lib/reflex/application.rb +5 -5
  146. data/lib/reflex/autoinit.rb +3 -1
  147. data/lib/reflex/button.rb +3 -3
  148. data/lib/reflex/chase_constraint.rb +15 -0
  149. data/lib/reflex/clipboard.rb +19 -0
  150. data/lib/reflex/color_event.rb +16 -0
  151. data/lib/reflex/color_picker.rb +45 -0
  152. data/lib/reflex/constraint.rb +29 -0
  153. data/lib/reflex/control_change_event.rb +17 -0
  154. data/lib/reflex/extension.rb +1 -1
  155. data/lib/reflex/file_dialog.rb +70 -0
  156. data/lib/reflex/file_event.rb +37 -0
  157. data/lib/reflex/helper.rb +79 -0
  158. data/lib/reflex/key_event.rb +14 -14
  159. data/lib/reflex/link_constraint.rb +31 -0
  160. data/lib/reflex/menu.rb +92 -0
  161. data/lib/reflex/model.rb +19 -19
  162. data/lib/reflex/note_event.rb +1 -1
  163. data/lib/reflex/pin.rb +39 -0
  164. data/lib/reflex/pointer.rb +30 -1
  165. data/lib/reflex/pointer_event.rb +13 -2
  166. data/lib/reflex/reflex.rb +5 -0
  167. data/lib/reflex/shape.rb +14 -14
  168. data/lib/reflex/snap_constraint.rb +28 -0
  169. data/lib/reflex/style.rb +16 -16
  170. data/lib/reflex/text_event.rb +40 -0
  171. data/lib/reflex/timer.rb +3 -3
  172. data/lib/reflex/view.rb +85 -18
  173. data/lib/reflex/wheel_constraint.rb +28 -0
  174. data/lib/reflex/wheel_event.rb +19 -1
  175. data/lib/reflex/window.rb +25 -13
  176. data/lib/reflex.rb +23 -8
  177. data/pod.rake +1 -1
  178. data/reflex.gemspec +4 -4
  179. data/samples/constraint.rb +152 -0
  180. data/samples/ime.rb +100 -0
  181. data/samples/ios/hello/hello.xcodeproj/project.pbxproj +236 -224
  182. data/samples/menu.rb +32 -0
  183. data/samples/model.rb +3 -3
  184. data/samples/test/alert.rb +93 -0
  185. data/samples/test/always_on.rb +76 -0
  186. data/samples/test/app_background.rb +51 -0
  187. data/samples/test/boundary.rb +75 -0
  188. data/samples/test/callback_exception.rb +101 -0
  189. data/samples/test/cancel.rb +53 -0
  190. data/samples/test/color_picker.rb +63 -0
  191. data/samples/test/file_dialog.rb +102 -0
  192. data/samples/window_style.rb +156 -0
  193. data/src/application.cpp +180 -20
  194. data/src/application.h +95 -5
  195. data/src/clipboard.cpp +81 -0
  196. data/src/color_picker.cpp +113 -0
  197. data/src/color_picker.h +36 -0
  198. data/src/constraint.cpp +1662 -0
  199. data/src/constraint.h +64 -0
  200. data/src/event.cpp +416 -252
  201. data/src/event.h +13 -2
  202. data/src/file_dialog.cpp +163 -0
  203. data/src/file_dialog.h +52 -0
  204. data/src/gamepad.cpp +42 -5
  205. data/src/gamepad.h +4 -0
  206. data/src/ios/app_delegate.mm +5 -3
  207. data/src/ios/application.mm +29 -0
  208. data/src/ios/clipboard.mm +44 -0
  209. data/src/ios/color_picker.mm +19 -0
  210. data/src/ios/event.h +6 -2
  211. data/src/ios/event.mm +31 -12
  212. data/src/ios/file_dialog.mm +21 -0
  213. data/src/ios/gamepad.mm +4 -4
  214. data/src/ios/menu.mm +41 -0
  215. data/src/ios/reflex.mm +8 -0
  216. data/src/ios/screen.mm +26 -0
  217. data/src/ios/view_controller.mm +47 -42
  218. data/src/ios/window.mm +44 -9
  219. data/src/menu.cpp +387 -0
  220. data/src/menu.h +81 -0
  221. data/src/midi.cpp +61 -31
  222. data/src/osx/app_delegate.h +4 -0
  223. data/src/osx/app_delegate.mm +168 -139
  224. data/src/osx/application.mm +103 -5
  225. data/src/osx/clipboard.mm +45 -0
  226. data/src/osx/color_picker.mm +112 -0
  227. data/src/osx/event.h +10 -0
  228. data/src/osx/event.mm +114 -30
  229. data/src/osx/file_dialog.mm +168 -0
  230. data/src/osx/gamepad.mm +2 -2
  231. data/src/osx/gamepad_hid.mm +1 -1
  232. data/src/osx/menu.h +25 -0
  233. data/src/osx/menu.mm +516 -0
  234. data/src/osx/native_window.h +16 -2
  235. data/src/osx/native_window.mm +141 -57
  236. data/src/osx/opengl_view.h +2 -1
  237. data/src/osx/opengl_view.mm +229 -37
  238. data/src/osx/reflex.mm +38 -0
  239. data/src/osx/screen.mm +36 -0
  240. data/src/osx/window.mm +117 -24
  241. data/src/pin.cpp +137 -0
  242. data/src/pointer.cpp +36 -16
  243. data/src/pointer.h +10 -0
  244. data/src/rays.h +46 -0
  245. data/src/sdl/application.cpp +73 -8
  246. data/src/sdl/clipboard.cpp +39 -0
  247. data/src/sdl/color_picker.cpp +18 -0
  248. data/src/sdl/event.cpp +44 -6
  249. data/src/sdl/event.h +18 -3
  250. data/src/sdl/file_dialog.cpp +20 -0
  251. data/src/sdl/gamepad.cpp +3 -7
  252. data/src/sdl/menu.cpp +40 -0
  253. data/src/sdl/reflex.cpp +20 -0
  254. data/src/sdl/screen.cpp +36 -0
  255. data/src/sdl/window.cpp +168 -37
  256. data/src/shape.cpp +15 -10
  257. data/src/view.cpp +583 -233
  258. data/src/view.h +22 -4
  259. data/src/vk.h +416 -0
  260. data/src/win32/application.cpp +167 -12
  261. data/src/win32/application.h +20 -0
  262. data/src/win32/clipboard.cpp +210 -0
  263. data/src/win32/color_picker.cpp +82 -0
  264. data/src/win32/event.cpp +123 -11
  265. data/src/win32/event.h +22 -3
  266. data/src/win32/file_dialog.cpp +226 -0
  267. data/src/win32/gamepad.cpp +9 -2
  268. data/src/win32/menu.cpp +490 -0
  269. data/src/win32/menu.h +35 -0
  270. data/src/win32/opengl.cpp +2 -9
  271. data/src/win32/reflex.cpp +44 -3
  272. data/src/win32/screen.cpp +164 -3
  273. data/src/win32/screen.h +8 -0
  274. data/src/win32/tray.cpp +191 -0
  275. data/src/win32/tray.h +22 -0
  276. data/src/win32/vk.cpp +11 -0
  277. data/src/win32/window.cpp +858 -135
  278. data/src/win32/window.h +9 -0
  279. data/src/window.cpp +929 -183
  280. data/src/window.h +77 -33
  281. data/src/world.cpp +86 -15
  282. data/src/world.h +9 -2
  283. data/test/helper.rb +24 -0
  284. data/test/test_application.rb +101 -1
  285. data/test/test_chase_constraint.rb +122 -0
  286. data/test/test_clipboard.rb +54 -0
  287. data/test/test_color_event.rb +36 -0
  288. data/test/test_color_picker.rb +62 -0
  289. data/test/test_constraint.rb +184 -0
  290. data/test/test_event.rb +1 -1
  291. data/test/test_file_dialog.rb +48 -0
  292. data/test/test_file_event.rb +43 -0
  293. data/test/test_has_text_preedit.rb +54 -0
  294. data/test/test_key_event.rb +23 -2
  295. data/test/test_link_constraint.rb +237 -0
  296. data/test/test_menu.rb +237 -0
  297. data/test/test_pin.rb +65 -0
  298. data/test/test_pointer.rb +50 -26
  299. data/test/test_pointer_event.rb +25 -10
  300. data/test/test_reflex.rb +36 -0
  301. data/test/test_screen.rb +24 -2
  302. data/test/test_snap_constraint.rb +140 -0
  303. data/test/test_text_event.rb +54 -0
  304. data/test/test_view.rb +152 -25
  305. data/test/test_wheel_constraint.rb +125 -0
  306. data/test/test_wheel_event.rb +24 -10
  307. data/test/test_window.rb +205 -43
  308. metadata +154 -10
  309. data/.github/workflows/utils.rb +0 -127
@@ -3,8 +3,10 @@ require_relative 'helper'
3
3
 
4
4
  class TestWheelEvent < Test::Unit::TestCase
5
5
 
6
+ R = Reflex
7
+
6
8
  def event(*args)
7
- Reflex::WheelEvent.new(*args)
9
+ R::WheelEvent.new(*args)
8
10
  end
9
11
 
10
12
  def point(*args)
@@ -13,15 +15,15 @@ class TestWheelEvent < Test::Unit::TestCase
13
15
 
14
16
  def test_initialize()
15
17
  e = event 1, 2, 3, 4, 5, 6, 7
16
- assert_equal 1, e.x
17
- assert_equal 2, e.y
18
- assert_equal 3, e.z
19
- assert_equal 4, e.dx
20
- assert_equal 5, e.dy
21
- assert_equal 6, e.dz
22
- assert_equal 7, e.modifiers
23
- assert_equal point(1, 2, 3), e. position
24
- assert_equal point(4, 5, 6), e.dposition
18
+ assert_equal 1, e.x
19
+ assert_equal 2, e.y
20
+ assert_equal 3, e.z
21
+ assert_equal 4, e.dx
22
+ assert_equal 5, e.dy
23
+ assert_equal 6, e.dz
24
+ assert_equal [:shift, :control, :alt], e.modifiers
25
+ assert_equal point(1, 2, 3), e. position
26
+ assert_equal point(4, 5, 6), e.dposition
25
27
  end
26
28
 
27
29
  def test_dup()
@@ -34,4 +36,16 @@ class TestWheelEvent < Test::Unit::TestCase
34
36
  assert_true e3.blocked?
35
37
  end
36
38
 
39
+ def test_modifiers()
40
+ e = event 0, 0, 0, 0, 0, 0, R::MOD_CONTROL | R::MOD_SCROLL
41
+ assert_equal [:control], e.modifiers
42
+ assert_equal [:control, :scroll], e.modifiers(all: true)
43
+ end
44
+
45
+ def test_inspect()
46
+ assert_equal(
47
+ "#<Reflex::WheelEvent x:1.0 y:2.0 z:3.0 dx:4.0 dy:5.0 dz:6.79 mod:[:control, :scroll]>",
48
+ event(1, 2, 3, 4, 5, 6.789, R::MOD_CONTROL | R::MOD_SCROLL).inspect)
49
+ end
50
+
37
51
  end# TestWheelEvent
data/test/test_window.rb CHANGED
@@ -3,78 +3,94 @@ require_relative 'helper'
3
3
 
4
4
  class TestWindow < Test::Unit::TestCase
5
5
 
6
- def win(*a, **k, &b)
7
- Reflex::Window.new(*a, **k, &b)
8
- end
6
+ include HasWindow
9
7
 
10
8
  def point(*a) Reflex::Point.new(*a) end
11
9
  def bounds(*a) Reflex::Bounds.new(*a) end
12
10
 
13
11
  def test_show_hide_hidden()
14
- w = win
15
- assert_true w.hidden
12
+ w = window
13
+ assert_true w.hidden?
16
14
  w.show
17
- assert_false w.hidden
15
+ assert_false w.hidden?
18
16
  w.hide
19
- assert_true w.hidden
17
+ assert_true w.hidden?
20
18
  end
21
19
 
22
20
  def test_hidden_count()
23
- w = win
21
+ w = window
24
22
  w.hide
25
- assert_true w.hidden
23
+ assert_true w.hidden?
26
24
  w.show
27
- assert_true w.hidden
25
+ assert_true w.hidden?
28
26
  w.show
29
- assert_false w.hidden
27
+ assert_false w.hidden?
30
28
  end
31
29
 
32
30
  def test_coord_conversion()
33
- w = win x: 100, y: 200
31
+ w = window x: 100, y: 200
34
32
  assert_equal [400, 300], w.from_screen(500).to_a
35
33
  assert_equal [600, 700], w. to_screen(500).to_a
36
34
  end
37
35
 
38
36
  def test_title()
39
- w = win
37
+ w = window
40
38
  assert_equal '', w.title
41
39
  w.title = 'A'
42
40
  assert_equal 'A', w.title
43
41
  end
44
42
 
45
43
  def test_frame()
46
- w = win
44
+ w = window
47
45
  b = w.frame.dup
48
46
  assert_equal b, w.frame
49
47
 
50
- min_width = w.frame.width
51
- minw = -> value {[min_width, value].max}
48
+ w.frame = 1; assert_equal [0, 0, 1, 1], w.frame.to_a
49
+ w.frame = [1]; assert_equal [0, 0, 1, 1], w.frame.to_a
50
+ w.frame = [1, 2]; assert_equal [0, 0, 1, 2], w.frame.to_a
51
+ w.frame = [1, 2, 3]; assert_equal [0, 0, 1, 2], w.frame.to_a
52
+ w.frame = [1, 2, 3]; assert_equal [0, 0, 0, 1, 2, 0], w.frame.to_a(3)
53
+ w.frame = [1, 2, 3, 4]; assert_equal [1, 2, 3, 4], w.frame.to_a
54
+ w.frame = [1, 2, 3, 4]; assert_equal [1, 2, 0, 3, 4, 0], w.frame.to_a(3)
55
+ w.frame = [1, 2, 3, 4, 5, 6]; assert_equal [1, 2, 4, 5], w.frame.to_a
56
+ w.frame = [1, 2, 3, 4, 5, 6]; assert_equal [1, 2, 0, 4, 5, 0], w.frame.to_a(3)
57
+
58
+ w.frame = point(1); assert_equal [0, 0, 1, 1], w.frame.to_a
59
+ w.frame = [point(1)]; assert_equal [0, 0, 1, 1], w.frame.to_a
60
+ w.frame = point(1, 2); assert_equal [0, 0, 1, 2], w.frame.to_a
61
+ w.frame = [point(1, 2)]; assert_equal [0, 0, 1, 2], w.frame.to_a
62
+ w.frame = [point(1, 2), point(3, 4)]; assert_equal [1, 2, 3, 4], w.frame.to_a
63
+ w.frame = [point(1, 2), point(3, 4)]; assert_equal [1, 2, 0, 3, 4, 0], w.frame.to_a(3)
64
+ w.frame = [point(1, 2, 3), point(4, 5, 6)]; assert_equal [1, 2, 4, 5], w.frame.to_a
65
+ w.frame = [point(1, 2, 3), point(4, 5, 6)]; assert_equal [1, 2, 0, 4, 5, 0], w.frame.to_a(3)
66
+
67
+ w.frame = bounds(1, 2, 3, 4, 5, 6); assert_equal [1, 2, 0, 4, 5, 0], w.frame.to_a(3)
68
+ w.frame = [bounds(1, 2, 3, 4, 5, 6)]; assert_equal [1, 2, 0, 4, 5, 0], w.frame.to_a(3)
69
+ end
70
+
71
+ def test_frame_without_titlebar()
72
+ w = window titlebar: []
73
+ b = [100, 100, 300, 400]
52
74
 
53
- w.frame = 1; assert_equal [0, 0, minw[1], 1], w.frame.to_a
54
- w.frame = [1]; assert_equal [0, 0, minw[1], 1], w.frame.to_a
55
- w.frame = [1, 2]; assert_equal [0, 0, minw[1], 2], w.frame.to_a
56
- w.frame = [1, 2, 3]; assert_equal [0, 0, minw[1], 2], w.frame.to_a
57
- w.frame = [1, 2, 3]; assert_equal [0, 0, 0, minw[1], 2, 0], w.frame.to_a(3)
58
- w.frame = [1, 2, 3, 4]; assert_equal [1, 2, minw[3], 4], w.frame.to_a
59
- w.frame = [1, 2, 3, 4]; assert_equal [1, 2, 0, minw[3], 4, 0], w.frame.to_a(3)
60
- w.frame = [1, 2, 3, 4, 5, 6]; assert_equal [1, 2, minw[4], 5], w.frame.to_a
61
- w.frame = [1, 2, 3, 4, 5, 6]; assert_equal [1, 2, 0, minw[4], 5, 0], w.frame.to_a(3)
75
+ w.frame = b
76
+ assert_equal b, w.frame.to_a
62
77
 
63
- w.frame = point(1); assert_equal [0, 0, minw[1], 1], w.frame.to_a
64
- w.frame = [point(1)]; assert_equal [0, 0, minw[1], 1], w.frame.to_a
65
- w.frame = point(1, 2); assert_equal [0, 0, minw[1], 2], w.frame.to_a
66
- w.frame = [point(1, 2)]; assert_equal [0, 0, minw[1], 2], w.frame.to_a
67
- w.frame = [point(1, 2), point(3, 4)]; assert_equal [1, 2, minw[3], 4], w.frame.to_a
68
- w.frame = [point(1, 2), point(3, 4)]; assert_equal [1, 2, 0, minw[3], 4, 0], w.frame.to_a(3)
69
- w.frame = [point(1, 2, 3), point(4, 5, 6)]; assert_equal [1, 2, minw[4], 5], w.frame.to_a
70
- w.frame = [point(1, 2, 3), point(4, 5, 6)]; assert_equal [1, 2, 0, minw[4], 5, 0], w.frame.to_a(3)
78
+ w.frame = w.frame
79
+ assert_equal b, w.frame.to_a
80
+ end
71
81
 
72
- w.frame = bounds(1, 2, 3, 4, 5, 6); assert_equal [1, 2, 0, minw[4], 5, 0], w.frame.to_a(3)
73
- w.frame = [bounds(1, 2, 3, 4, 5, 6)]; assert_equal [1, 2, 0, minw[4], 5, 0], w.frame.to_a(3)
82
+ def test_menu()
83
+ w = window
84
+ m = Reflex::Menu.new
85
+ assert_nil w.menu
86
+ w.menu = m
87
+ assert_equal m, w.menu
88
+ w.menu = nil
89
+ assert_nil w.menu
74
90
  end
75
91
 
76
92
  def test_closable?()
77
- w = win
93
+ w = window
78
94
  assert_true w.closable?
79
95
 
80
96
  w.closable = false
@@ -91,7 +107,7 @@ class TestWindow < Test::Unit::TestCase
91
107
  end
92
108
 
93
109
  def test_minimizable?()
94
- w = win
110
+ w = window
95
111
  assert_true w.minimizable?
96
112
 
97
113
  w.minimizable = false
@@ -108,7 +124,7 @@ class TestWindow < Test::Unit::TestCase
108
124
  end
109
125
 
110
126
  def test_resizable?()
111
- w = win
127
+ w = window
112
128
  assert_true w.resizable?
113
129
 
114
130
  w.resizable = false
@@ -124,8 +140,87 @@ class TestWindow < Test::Unit::TestCase
124
140
  assert_true w.resizable?
125
141
  end
126
142
 
143
+ def test_titlebar()
144
+ w = window
145
+ assert_equal [:buttons, :background], w.titlebar
146
+
147
+ w.titlebar = [:background]
148
+ assert_equal [:background], w.titlebar
149
+
150
+ if win32?
151
+ assert_raise(ArgumentError) {w.titlebar = [:buttons]}.then do |e|
152
+ assert_match(/buttons.*needs.*background/i, e.message)
153
+ end
154
+ else
155
+ w.titlebar = [:buttons]
156
+ assert_equal [:buttons], w.titlebar
157
+ end
158
+
159
+ w.titlebar = []
160
+ assert_equal [], w.titlebar
161
+
162
+ w.titlebar = [:buttons, :background]
163
+ assert_equal [:buttons, :background], w.titlebar
164
+
165
+ assert_equal [], window(titlebar: []).titlebar
166
+
167
+ assert_raise(ArgumentError) {w.titlebar = [:unknown]}
168
+ end
169
+
170
+ def test_unlisted?()
171
+ w = window
172
+ assert_false w.unlisted?
173
+
174
+ w.unlisted = true
175
+ assert_true w.unlisted?
176
+
177
+ w.unlisted = false
178
+ assert_false w.unlisted?
179
+
180
+ assert_true window(unlisted: true).unlisted?
181
+ end
182
+
183
+ def test_shadow?()
184
+ titlebar = win32? ? [] : [:buttons, :background]
185
+ w = window titlebar: titlebar
186
+ assert_true w.shadow?
187
+
188
+ w.shadow = false
189
+ assert_false w.shadow?
190
+
191
+ w.shadow = true
192
+ assert_true w.shadow?
193
+
194
+ w.shadow false
195
+ assert_false w.shadow?
196
+
197
+ w.shadow true
198
+ assert_true w.shadow?
199
+
200
+ assert_false window(titlebar: titlebar, shadow: false).shadow?
201
+ end
202
+
203
+ def test_transparent?()
204
+ w = window
205
+ assert_false w.transparent?
206
+
207
+ w.transparent = true
208
+ assert_true w.transparent?
209
+
210
+ w.transparent = false
211
+ assert_false w.transparent?
212
+
213
+ w.transparent true
214
+ assert_true w.transparent?
215
+
216
+ w.transparent false
217
+ assert_false w.transparent?
218
+
219
+ assert_true window(transparent: true).transparent?
220
+ end
221
+
127
222
  def test_fullscreen?()
128
- w = win
223
+ w = window
129
224
  assert_false w.fullscreen?
130
225
 
131
226
  w.fullscreen = true
@@ -141,8 +236,75 @@ class TestWindow < Test::Unit::TestCase
141
236
  assert_false w.fullscreen?
142
237
  end
143
238
 
239
+ def test_always_on_top_and_bottom?()
240
+ w = window
241
+ assert_false w.always_on_top?
242
+ assert_false w.always_on_bottom?
243
+
244
+ w.always_on_top = true
245
+ assert_true w.always_on_top?
246
+ assert_false w.always_on_bottom?
247
+
248
+ assert_true window(always_on_top: true).always_on_top?
249
+
250
+ if linux?
251
+ assert_raise(Rucy::NativeError) {w.always_on_bottom = true}
252
+ return
253
+ else
254
+ assert_true window(always_on_bottom: true).always_on_bottom?
255
+ end
256
+
257
+ w.always_on_bottom = true
258
+ assert_false w.always_on_top?
259
+ assert_true w.always_on_bottom?
260
+
261
+ w.always_on_bottom = false
262
+ assert_false w.always_on_top?
263
+ assert_false w.always_on_bottom?
264
+ end
265
+
266
+ def test_pointer_through?()
267
+ w = window
268
+ assert_false w.pointer_through?
269
+
270
+ if linux?
271
+ assert_raise(Rucy::NativeError) {w.pointer_through = true}
272
+ return
273
+ end
274
+
275
+ w.pointer_through = true
276
+ assert_true w.pointer_through?
277
+
278
+ w.pointer_through = false
279
+ assert_false w.pointer_through?
280
+
281
+ w.pointer_through true
282
+ assert_true w.pointer_through?
283
+
284
+ w.pointer_through false
285
+ assert_false w.pointer_through?
286
+
287
+ assert_true window(pointer_through: true).pointer_through?
288
+ end
289
+
290
+ def test_pointer_through_alpha()
291
+ w = window
292
+ assert_equal 1, w.pointer_through_alpha
293
+
294
+ w.pointer_through_alpha = 0.5
295
+ assert_equal 0.5, w.pointer_through_alpha
296
+
297
+ w.pointer_through_alpha 0
298
+ assert_equal 0, w.pointer_through_alpha
299
+
300
+ assert_raise(ArgumentError) {w.pointer_through_alpha = -0.1}
301
+ assert_raise(ArgumentError) {w.pointer_through_alpha = 1.1}
302
+
303
+ assert_equal 0.5, window(pointer_through_alpha: 0.5).pointer_through_alpha
304
+ end
305
+
144
306
  def test_orientations()
145
- w = win
307
+ w = window
146
308
  assert_equal [], w.orientations
147
309
 
148
310
  assert_raise(ArgumentError) {w.orientations = [:portrait]}.then do |e|
@@ -154,11 +316,11 @@ class TestWindow < Test::Unit::TestCase
154
316
  end
155
317
 
156
318
  def test_screen()
157
- assert_not_nil win.screen
319
+ assert_not_nil window.screen
158
320
  end
159
321
 
160
322
  def test_root()
161
- w = win
323
+ w = window
162
324
  assert_not_nil w.root
163
325
  assert_nil w.root.parent
164
326
  assert_equal 'ROOT', w.root.name
@@ -166,7 +328,7 @@ class TestWindow < Test::Unit::TestCase
166
328
  end
167
329
 
168
330
  def test_inspect()
169
- assert_match %r|#<Reflex::Window:0x\w{16}>|, win.inspect
331
+ assert_match %r|#<Reflex::Window:0x\w{16}>|, window.inspect
170
332
  end
171
333
 
172
334
  end# TestWindow