iup-ffi 0.12.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 (64) hide show
  1. checksums.yaml +7 -0
  2. data/LICENCE.txt +21 -0
  3. data/README.rdoc +348 -0
  4. data/lib/iup-ffi-plain.rb +9 -0
  5. data/lib/iup-ffi.rb +76 -0
  6. data/lib/plain/iupcdlib.rb +107 -0
  7. data/lib/plain/iupcontrolslib.rb +24 -0
  8. data/lib/plain/iupimglib.rb +14 -0
  9. data/lib/plain/iupimlib.rb +16 -0
  10. data/lib/plain/iuplib.rb +209 -0
  11. data/lib/plain/scintilla-lib.rb +15 -0
  12. data/lib/wrapped/attribute-builders.rb +105 -0
  13. data/lib/wrapped/attribute-reference.rb +27 -0
  14. data/lib/wrapped/background-box.rb +33 -0
  15. data/lib/wrapped/button.rb +108 -0
  16. data/lib/wrapped/callback-setter.rb +78 -0
  17. data/lib/wrapped/canvas.rb +467 -0
  18. data/lib/wrapped/colourbar.rb +94 -0
  19. data/lib/wrapped/colourdialog.rb +63 -0
  20. data/lib/wrapped/common-attributes.rb +64 -0
  21. data/lib/wrapped/constants.rb +953 -0
  22. data/lib/wrapped/dial.rb +87 -0
  23. data/lib/wrapped/dialog.rb +176 -0
  24. data/lib/wrapped/dialogs.rb +106 -0
  25. data/lib/wrapped/drag-drop-attributes.rb +57 -0
  26. data/lib/wrapped/dynamic-fill-methods.rb +27 -0
  27. data/lib/wrapped/expander.rb +65 -0
  28. data/lib/wrapped/filedialog.rb +93 -0
  29. data/lib/wrapped/fill.rb +26 -0
  30. data/lib/wrapped/fontdialog.rb +42 -0
  31. data/lib/wrapped/frame.rb +47 -0
  32. data/lib/wrapped/gridbox.rb +94 -0
  33. data/lib/wrapped/hbox.rb +49 -0
  34. data/lib/wrapped/image-attributes.rb +27 -0
  35. data/lib/wrapped/image.rb +118 -0
  36. data/lib/wrapped/internal-drag-drop-attributes.rb +21 -0
  37. data/lib/wrapped/iup-global.rb +51 -0
  38. data/lib/wrapped/label.rb +98 -0
  39. data/lib/wrapped/link.rb +59 -0
  40. data/lib/wrapped/list.rb +353 -0
  41. data/lib/wrapped/matrix.rb +233 -0
  42. data/lib/wrapped/menu.rb +50 -0
  43. data/lib/wrapped/menuitem.rb +80 -0
  44. data/lib/wrapped/messagedialog.rb +51 -0
  45. data/lib/wrapped/progressbar.rb +48 -0
  46. data/lib/wrapped/progressdialog.rb +111 -0
  47. data/lib/wrapped/radio.rb +43 -0
  48. data/lib/wrapped/scintilla.rb +277 -0
  49. data/lib/wrapped/scrollbar-attributes.rb +141 -0
  50. data/lib/wrapped/scrollbox.rb +147 -0
  51. data/lib/wrapped/separator.rb +11 -0
  52. data/lib/wrapped/splitbox.rb +48 -0
  53. data/lib/wrapped/stretchbox.rb +42 -0
  54. data/lib/wrapped/submenu.rb +34 -0
  55. data/lib/wrapped/tabs.rb +149 -0
  56. data/lib/wrapped/text.rb +225 -0
  57. data/lib/wrapped/timer.rb +42 -0
  58. data/lib/wrapped/toggle.rb +98 -0
  59. data/lib/wrapped/tree.rb +465 -0
  60. data/lib/wrapped/val.rb +97 -0
  61. data/lib/wrapped/vbox.rb +51 -0
  62. data/lib/wrapped/widget.rb +137 -0
  63. data/lib/wrapped/zbox.rb +54 -0
  64. metadata +124 -0
@@ -0,0 +1,137 @@
1
+ module Iup
2
+
3
+ # Parent class for controls in the library.
4
+ #
5
+ class Widget
6
+ extend AttributeBuilders
7
+ include CommonAttributes
8
+ include CallbackSetter
9
+
10
+ # Unique reference to widget.
11
+ attr_reader :handle
12
+
13
+ # The C handle name for this widget
14
+ def assign_handle name
15
+ IupLib.IupSetHandle name, @handle
16
+ end
17
+
18
+ @@controlslib = false
19
+
20
+ # Ensure the controls library is opened
21
+ def open_controls
22
+ unless @@controlslib
23
+ ControlsLib.IupControlsOpen
24
+ @@controlslib = true
25
+ end
26
+ end
27
+
28
+ # -- common callbacks
29
+
30
+ # Called right after an element is mapped and its layout updated
31
+ def map_cb callback
32
+ unless callback.arity.zero?
33
+ raise ArgumentError, 'map_cb callback must take 0 arguments'
34
+ end
35
+ cb = Proc.new do |ih|
36
+ callback.call
37
+ end
38
+ define_callback cb, 'MAP_CB', :plain
39
+ end
40
+
41
+ # Called right before an element is unmapped
42
+ def unmap_cb callback
43
+ unless callback.arity.zero?
44
+ raise ArgumentError, 'unmap_cb callback must take 0 arguments'
45
+ end
46
+ cb = Proc.new do |ih|
47
+ callback.call
48
+ end
49
+ define_callback cb, 'UNMAP_CB', :plain
50
+ end
51
+
52
+ # Action generated when an element is given keyboard focus
53
+ def getfocus_cb callback
54
+ unless callback.arity.zero?
55
+ raise ArgumentError, 'getfocus_cb callback must take 0 arguments'
56
+ end
57
+ cb = Proc.new do |ih|
58
+ callback.call
59
+ end
60
+ define_callback cb, 'GETFOCUS_CB', :plain
61
+ end
62
+
63
+ # Action generated when an element loses keyboard focus
64
+ def killfocus_cb callback
65
+ unless callback.arity.zero?
66
+ raise ArgumentError, 'killfocus_cb callback must take 0 arguments'
67
+ end
68
+ cb = Proc.new do |ih|
69
+ callback.call
70
+ end
71
+ define_callback cb, 'KILLFOCUS_CB', :plain
72
+ end
73
+
74
+ # Action generated when the mouse enters the element
75
+ def enterwindow_cb callback
76
+ unless callback.arity.zero?
77
+ raise ArgumentError, 'enterwindow_cb callback must take 0 arguments'
78
+ end
79
+ cb = Proc.new do |ih|
80
+ callback.call
81
+ end
82
+ define_callback cb, 'ENTERWINDOW_CB', :plain
83
+ end
84
+
85
+ # Action generated when the mouse leaves the element
86
+ def leavewindow_cb callback
87
+ unless callback.arity.zero?
88
+ raise ArgumentError, 'leavewindow_cb callback must take 0 arguments'
89
+ end
90
+ cb = Proc.new do |ih|
91
+ callback.call
92
+ end
93
+ define_callback cb, 'LEAVEWINDOW_CB', :plain
94
+ end
95
+
96
+ # Action generated when a keyboard event occurs.
97
+ # k_any takes a 1-argument callback, the argument
98
+ # being the character that is pressed.
99
+ def k_any callback
100
+ unless callback.arity == 1
101
+ raise ArgumentError, 'k_any callback must take 1 argument, a character'
102
+ end
103
+ cb = Proc.new do |ih, c|
104
+ callback.call c
105
+ end
106
+ define_callback cb, 'K_ANY', :i_i
107
+ end
108
+
109
+ # Action generated when the user presses F1 at a control
110
+ def help_cb callback
111
+ unless callback.arity.zero?
112
+ raise ArgumentError, 'help_cb callback must take 0 arguments'
113
+ end
114
+ cb = Proc.new do |ih|
115
+ callback.call
116
+ end
117
+ define_callback cb, 'HELP_CB', :plain_v
118
+ end
119
+
120
+ private
121
+
122
+ # given an array of widgets,
123
+ # convert into format widget1, :pointer, widget2, ... , :pointer, nil
124
+ def widget_list widgets
125
+ result = []
126
+
127
+ widgets.each do |widget|
128
+ result << widget.handle
129
+ result << :pointer
130
+ end
131
+
132
+ result << nil
133
+
134
+ return result
135
+ end
136
+ end
137
+ end
@@ -0,0 +1,54 @@
1
+ module Iup
2
+
3
+ # A ZBox is a container class, which stores a list of widgets but only
4
+ # displays one of them.
5
+ #
6
+ # == Attributes
7
+ #
8
+ # alignment:: alignment of visible child.
9
+ # Values: 'north' / 'south' / 'east' / 'west'/
10
+ # 'ne' / 'nw' / 'se' / 'sw' / 'acenter'
11
+ # clientoffset:: <b>read-only</b>, returns current offset of box in its client
12
+ # as "widthxheight".
13
+ # clientsize:: <b>read-only</b>, returns current size of box as "widthxheight".
14
+ # expand:: Allows container to fill available space in indicated direction.
15
+ # Values 'no' / 'horizontal' / 'vertical' / 'yes'.
16
+ # gap:: Number of pixels between children, default value of 0.
17
+ # rastersize:: Size of the container, in pixels, value as "widthxheight".
18
+ # size:: Size of the container, in character units, value as "widthxheight".
19
+ #
20
+ class ZBox < Widget
21
+ include DynamicFillMethods
22
+
23
+ # Creates an instance of the ZBox.
24
+ # *widgets:: one or more child widgets
25
+ # block:: optional block to set up the box's attributes.
26
+ def initialize *widgets, &block
27
+ @handle = IupLib.IupZbox *widget_list(widgets)
28
+
29
+ # run any provided block on instance, to set up further attributes
30
+ self.instance_eval &block if block_given?
31
+ end
32
+
33
+ # -- attributes
34
+
35
+ # Returns the visible child, accessed by its index position.
36
+ def valuepos val=nil?
37
+ if val.nil?
38
+ result = IupLib.IupGetAttribute(@handle, 'VALUEPOS').first
39
+ result.to_i
40
+ else
41
+ IupLib.IupSetAttribute @handle, 'VALUEPOS', (val.to_i - 1).to_s
42
+ end
43
+ end
44
+
45
+ define_attribute :alignment
46
+ define_readonly :clientoffset
47
+ define_readonly :clientsize
48
+ define_attribute :expand
49
+ define_attribute :gap
50
+ define_attribute :rastersize
51
+ define_attribute :size
52
+ end
53
+
54
+ end
metadata ADDED
@@ -0,0 +1,124 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: iup-ffi
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.12.0
5
+ platform: ruby
6
+ authors:
7
+ - Peter Lane
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: ffi
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '1.12'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '1.12'
26
+ description: |2
27
+ FFI binding for Ruby to the IUP portable user interface toolkit. The library
28
+ provides both a low-level binding to the C library calls, and a high-level
29
+ wrapping of most widgets to give a more natural Ruby syntax.
30
+ email: peterlane@gmx.com
31
+ executables: []
32
+ extensions: []
33
+ extra_rdoc_files:
34
+ - LICENCE.txt
35
+ - README.rdoc
36
+ files:
37
+ - LICENCE.txt
38
+ - README.rdoc
39
+ - lib/iup-ffi-plain.rb
40
+ - lib/iup-ffi.rb
41
+ - lib/plain/iupcdlib.rb
42
+ - lib/plain/iupcontrolslib.rb
43
+ - lib/plain/iupimglib.rb
44
+ - lib/plain/iupimlib.rb
45
+ - lib/plain/iuplib.rb
46
+ - lib/plain/scintilla-lib.rb
47
+ - lib/wrapped/attribute-builders.rb
48
+ - lib/wrapped/attribute-reference.rb
49
+ - lib/wrapped/background-box.rb
50
+ - lib/wrapped/button.rb
51
+ - lib/wrapped/callback-setter.rb
52
+ - lib/wrapped/canvas.rb
53
+ - lib/wrapped/colourbar.rb
54
+ - lib/wrapped/colourdialog.rb
55
+ - lib/wrapped/common-attributes.rb
56
+ - lib/wrapped/constants.rb
57
+ - lib/wrapped/dial.rb
58
+ - lib/wrapped/dialog.rb
59
+ - lib/wrapped/dialogs.rb
60
+ - lib/wrapped/drag-drop-attributes.rb
61
+ - lib/wrapped/dynamic-fill-methods.rb
62
+ - lib/wrapped/expander.rb
63
+ - lib/wrapped/filedialog.rb
64
+ - lib/wrapped/fill.rb
65
+ - lib/wrapped/fontdialog.rb
66
+ - lib/wrapped/frame.rb
67
+ - lib/wrapped/gridbox.rb
68
+ - lib/wrapped/hbox.rb
69
+ - lib/wrapped/image-attributes.rb
70
+ - lib/wrapped/image.rb
71
+ - lib/wrapped/internal-drag-drop-attributes.rb
72
+ - lib/wrapped/iup-global.rb
73
+ - lib/wrapped/label.rb
74
+ - lib/wrapped/link.rb
75
+ - lib/wrapped/list.rb
76
+ - lib/wrapped/matrix.rb
77
+ - lib/wrapped/menu.rb
78
+ - lib/wrapped/menuitem.rb
79
+ - lib/wrapped/messagedialog.rb
80
+ - lib/wrapped/progressbar.rb
81
+ - lib/wrapped/progressdialog.rb
82
+ - lib/wrapped/radio.rb
83
+ - lib/wrapped/scintilla.rb
84
+ - lib/wrapped/scrollbar-attributes.rb
85
+ - lib/wrapped/scrollbox.rb
86
+ - lib/wrapped/separator.rb
87
+ - lib/wrapped/splitbox.rb
88
+ - lib/wrapped/stretchbox.rb
89
+ - lib/wrapped/submenu.rb
90
+ - lib/wrapped/tabs.rb
91
+ - lib/wrapped/text.rb
92
+ - lib/wrapped/timer.rb
93
+ - lib/wrapped/toggle.rb
94
+ - lib/wrapped/tree.rb
95
+ - lib/wrapped/val.rb
96
+ - lib/wrapped/vbox.rb
97
+ - lib/wrapped/widget.rb
98
+ - lib/wrapped/zbox.rb
99
+ homepage: https://rubygems.org/gems/iup-ffi
100
+ licenses:
101
+ - MIT
102
+ metadata:
103
+ documentation_uri: https://rubydoc.info/gems/iup-ffi
104
+ source_code_uri: https://codeberg.org/peterlane/iup-ffi
105
+ rdoc_options:
106
+ - "-m"
107
+ - README.rdoc
108
+ require_paths:
109
+ - lib
110
+ required_ruby_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: '2.0'
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ requirements: []
121
+ rubygems_version: 4.0.3
122
+ specification_version: 4
123
+ summary: An FFI binding for Ruby to the IUP portable user interface toolkit.
124
+ test_files: []