libui 0.0.7 → 0.0.11

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a70af9cdc5c6bdd0ff971474bfc3e7c7facaf9e3cd04af4375d40953e3827b7d
4
- data.tar.gz: 19b9c62a9003a5a097ff1643a783fa3a9bb72d36c06e1eb65f361d7679f51398
3
+ metadata.gz: c60340ec43dace0a242ef186a57ef756931f286350555b97c39baff6d072d6cb
4
+ data.tar.gz: fbf6e4dbd6ae9018fc6227c17f9250326b6b0850e764bb04d13780a764b8d777
5
5
  SHA512:
6
- metadata.gz: 9df4e5b0fb7a71c02b9b8715ebecf02cf0367829448d959ed1bd89fca65fd40fa51db37ee38b58546d60edb33c03719a183116f64fd95149081de711d095b9cb
7
- data.tar.gz: 27daac95b0cc02f44ca94b9ea11e3f91ef983806a1bef3319689d4dc60596f600d0673369fe165fe6e01470dae61dcf4ba6f6c80fd0cc5df5cf26c291a547466
6
+ metadata.gz: 6d5618424d35ed377ae722b925dc5b2c808317e8b1d6657b0108db0d4e2cd9a8d65acc338e708eaad53bfa5733a6d6488e58a58ff428e94ffbae0d8c4db7a6f0
7
+ data.tar.gz: '095d839f03a9e511d2912c8c7310c02143f2a2968af301237b1f31184b0f85592ce0fb8a379768b0a79837ed7a3789f01c5280a20829690400807bd1d5c2b82d'
data/README.md CHANGED
@@ -1,9 +1,9 @@
1
- # libui
1
+ # LibUI
2
2
 
3
3
  ![build](https://github.com/kojix2/libui/workflows/build/badge.svg)
4
4
  [![Gem Version](https://badge.fury.io/rb/libui.svg)](https://badge.fury.io/rb/libui)
5
5
 
6
- :radio_button: [libui](https://github.com/andlabs/libui) - a portable GUI library -for Ruby
6
+ :radio_button: [libui](https://github.com/andlabs/libui) - a portable GUI library - for Ruby
7
7
 
8
8
  ## Installation
9
9
 
@@ -20,25 +20,29 @@ gem install libui
20
20
  |---------|-----|-------|
21
21
  |<img src="https://user-images.githubusercontent.com/5798442/103118046-900ea780-46b0-11eb-81fc-32626762e4df.png">|<img src="https://user-images.githubusercontent.com/5798442/103118059-99980f80-46b0-11eb-9d12-324ec4d297c9.png">|<img src="https://user-images.githubusercontent.com/5798442/103118068-a0bf1d80-46b0-11eb-8c5c-3bdcc3dcfb26.png">|
22
22
 
23
+ Note: If you are using the 32-bit (x86) version of Ruby, you need to download the 32-bit (x86) native dll. See [Development](#development).
24
+
23
25
  ## Usage
24
26
 
25
27
  ```ruby
26
28
  require 'libui'
29
+
27
30
  UI = LibUI
28
31
 
29
32
  UI.init
30
33
 
31
- main_window = UI.new_window('hello world', 300, 200, 1)
32
- UI.window_on_closing(main_window) do
33
- puts 'Bye Bye'
34
- UI.control_destroy(main_window)
35
- UI.quit
36
- 0
37
- end
34
+ main_window = UI.new_window('hello world', 200, 100, 1)
38
35
 
39
36
  button = UI.new_button('Button')
37
+
40
38
  UI.button_on_clicked(button) do
41
39
  UI.msg_box(main_window, 'Information', 'You clicked the button')
40
+ end
41
+
42
+ UI.window_on_closing(main_window) do
43
+ puts 'Bye Bye'
44
+ UI.control_destroy(main_window)
45
+ UI.quit
42
46
  0
43
47
  end
44
48
 
@@ -58,7 +62,6 @@ Compared to original libui written in C,
58
62
  * The method names are snake_case.
59
63
  * If the last argument is nil, it can be omitted.
60
64
  * You can pass a block as a callback.
61
- * Please return 0 explicitly in the block.
62
65
  * The block will be converted to a Proc object and added to the last argument.
63
66
  * Even in that case, it is possible to omit the last argument nil.
64
67
 
@@ -66,6 +69,7 @@ Compared to original libui written in C,
66
69
 
67
70
  * At the moment, it is not object-oriented.
68
71
  * Instead of providing a half-baked object-oriented approach, leave it as is.
72
+ * [A list of DSLs for LibUI.](https://github.com/kojix2/LibUI/wiki/DSL-for-LibUI)
69
73
 
70
74
  ### How to use fiddle pointers?
71
75
 
@@ -101,35 +105,79 @@ UI.font_button_on_changed(font_button) do
101
105
  end
102
106
  ```
103
107
 
108
+ * Callbacks
109
+ * In Ruby/Fiddle, C callback function is written as an object of
110
+ `Fiddle::Closure::BlockCaller` or `Fiddle::Closure`.
111
+ In this case, you need to be careful about Ruby's garbage collection.
112
+ If the function object is collected, memory will be freed
113
+ and a segmentation violation will occur when the callback is invoked.
114
+
115
+ ```ruby
116
+ # to a local variable to prevent it from being collected by GC.
117
+ handler.MouseEvent = (c1 = Fiddle::Closure::BlockCaller.new(0, [0]) {})
118
+ handler.MouseCrossed = (c2 = Fiddle::Closure::BlockCaller.new(0, [0]) {})
119
+ handler.DragBroken = (c3 = Fiddle::Closure::BlockCaller.new(0, [0]) {})
120
+ ```
121
+
104
122
  ### How to create an executable (.exe) on Windows
105
123
 
106
124
  OCRA (One-Click Ruby Application) builds Windows executables from Ruby source code.
107
125
  * https://github.com/larsch/ocra/
108
126
 
127
+ In order to build a exe with Ocra, include 3 DLLs from ruby_builtin_dlls folder:
128
+
129
+ ```sh
130
+ ocra examples/control_gallery.rb ^
131
+ --dll ruby_builtin_dlls/libssp-0.dll ^
132
+ --dll ruby_builtin_dlls/libgmp-10.dll ^
133
+ --dll ruby_builtin_dlls/libffi-7.dll ^
134
+ --gem-all=fiddle ^
135
+ ```
136
+
137
+ Add additional options below if necessary.
138
+
139
+ ```sh
140
+ --window ^
141
+ --add-all-core ^
142
+ --chdir-first ^
143
+ --icon assets\app.ico ^
144
+ --verbose ^
145
+ --output out\gallery.exe
146
+ ```
147
+
109
148
  ## Development
110
149
 
111
150
  ```sh
112
151
  git clone https://github.com/kojix2/libui
113
152
  cd libui
114
153
  bundle install
115
- bundle exec rake vendor:all
154
+ bundle exec rake vendor:all_x64 # download shared libraries for all platforms
116
155
  bundle exec rake test
117
156
  ```
118
157
 
119
- Use the following rake tasks to download the libui binary files and save them in the vendor directory.
158
+ You can use the following rake tasks to download the shared library required for your platform.
120
159
 
121
160
  `rake -T`
122
161
 
123
162
  ```
124
- rake vendor:all # Download libui.so, libui.dylib, and libui.dll to ve...
125
- rake vendor:linux # Download libui.so for Linux to vendor directory
126
- rake vendor:mac # Download libui.dylib for Mac to vendor directory
127
- rake vendor:windows # Download libui.dll for Windows to vendor directory
163
+ rake vendor:all_x64 # Download libui.so, libui.dylib, and libui.dll to...
164
+ rake vendor:linux_x64 # Download libui.so for Linux to vendor directory
165
+ rake vendor:linux_x86 # Download libui.so for Linux to vendor directory
166
+ rake vendor:mac_x64 # Download libui.dylib for Mac to vendor directory
167
+ rake vendor:windows_x64 # Download libui.dll for Windows to vendor directory
168
+ rake vendor:windows_x86 # Download libui.dll for Windows to vendor directory
128
169
  ```
129
170
 
171
+ For example, If you are using a 32-bit (x86) version of Ruby on Windows, type `rake vendor:windows_x86`.
172
+
173
+ Or Set environment variable `LIBUIDIR` to specify the path to the shared library.
174
+
130
175
  ## Contributing
131
176
 
132
- Bug reports and pull requests are welcome on GitHub at https://github.com/kojix2/libui.
177
+ Would you like to add your commits to libui?
178
+ * Please feel free to send us your [pull requests](https://github.com/kojix2/libui/pulls).
179
+ * Small corrections, such as typofixes, are appreciated.
180
+ * Did you find any bugs? Write it in the [issues](https://github.com/kojix2/LibUI/issue) section!
133
181
 
134
182
  ## Acknowledgement
135
183
 
data/lib/libui/ffi.rb CHANGED
@@ -1,74 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'fiddle/import'
4
-
5
- module Fiddle
6
- # Change the Function to hold a little more information.
7
- # FIXME: Give inner_function a better name.
8
- class Function
9
- attr_accessor :inner_functions, :argtype
10
- end
11
-
12
- module Importer
13
- def parse_signature(signature, tymap = nil)
14
- tymap ||= {}
15
- ctype, func, args = case compact(signature)
16
- when /^(?:[\w\*\s]+)\(\*(\w+)\((.*?)\)\)(?:\[\w*\]|\(.*?\));?$/
17
- [TYPE_VOIDP, Regexp.last_match(1), Regexp.last_match(2)]
18
- when /^([\w\*\s]+[*\s])(\w+)\((.*?)\);?$/
19
- [parse_ctype(Regexp.last_match(1).strip, tymap), Regexp.last_match(2), Regexp.last_match(3)]
20
- else
21
- raise("can't parserake the function prototype: #{signature}")
22
- end
23
- symname = func
24
- inner_funcs = [] # Added
25
- argtype = split_arguments(args).collect.with_index do |arg, idx| # Added with_index
26
- # Check if it is a function pointer or not
27
- if arg =~ /\(\*.*\)\(.*\)/ # Added
28
- # From the arguments, create a notation that looks like a function declaration
29
- # int(*f)(int *, void *) -> int f(int *, void *)
30
- func_arg = arg.sub('(*', ' ').sub(')', '') # Added
31
- # Use Fiddle's parse_signature method again.
32
- inner_funcs[idx] = parse_signature(func_arg) # Added
33
- end # Added
34
- parse_ctype(arg, tymap)
35
- end
36
- # Added inner_funcs. Original method return only 3 values.
37
- [symname, ctype, argtype, inner_funcs]
38
- end
39
-
40
- def extern(signature, *opts)
41
- symname, ctype, argtype, inner_funcs = parse_signature(signature, type_alias)
42
- opt = parse_bind_options(opts)
43
- f = import_function(symname, ctype, argtype, opt[:call_type])
44
-
45
- f.inner_functions = inner_funcs # Added
46
- f.argtype = argtype # Added
47
-
48
- name = symname.gsub(/@.+/, '')
49
- @func_map[name] = f
50
- # define_method(name){|*args,&block| f.call(*args,&block)}
51
- begin
52
- /^(.+?):(\d+)/ =~ caller.first
53
- file = Regexp.last_match(1)
54
- line = Regexp.last_match(2).to_i
55
- rescue StandardError
56
- file, line = __FILE__, __LINE__ + 3
57
- end
58
- module_eval(<<-EOS, file, line)
59
- def #{name}(*args, &block)
60
- @func_map['#{name}'].call(*args,&block)
61
- end
62
- EOS
63
- module_function(name)
64
- f
65
- end
66
- end
67
- end
4
+ require_relative 'fiddle_patch'
68
5
 
69
6
  module LibUI
70
7
  module FFI
71
8
  extend Fiddle::Importer
9
+ extend FiddlePatch
72
10
 
73
11
  begin
74
12
  dlload LibUI.ffi_lib
@@ -96,6 +34,9 @@ module LibUI
96
34
  'size_t Size'
97
35
  ]
98
36
 
37
+ # https://github.com/andlabs/libui/blob/master/ui.h
38
+ # keep same order
39
+
99
40
  try_extern 'const char *uiInit(uiInitOptions *options)'
100
41
  try_extern 'void uiUninit(void)'
101
42
  try_extern 'void uiFreeInitError(const char *err)'
@@ -0,0 +1,79 @@
1
+ module LibUI
2
+ module FiddlePatch
3
+ def parse_signature(signature, tymap = nil)
4
+ tymap ||= {}
5
+ ctype, func, args = case compact(signature)
6
+ when /^(?:[\w\*\s]+)\(\*(\w+)\((.*?)\)\)(?:\[\w*\]|\(.*?\));?$/
7
+ [TYPE_VOIDP, Regexp.last_match(1), Regexp.last_match(2)]
8
+ when /^([\w\*\s]+[*\s])(\w+)\((.*?)\);?$/
9
+ [parse_ctype(Regexp.last_match(1).strip, tymap), Regexp.last_match(2), Regexp.last_match(3)]
10
+ else
11
+ raise("can't parserake the function prototype: #{signature}")
12
+ end
13
+ symname = func
14
+ callback_argument_types = {} # Added
15
+ argtype = split_arguments(args).collect.with_index do |arg, idx| # Added with_index
16
+ # Check if it is a function pointer or not
17
+ if arg =~ /\(\*.*\)\(.*\)/ # Added
18
+ # From the arguments, create a notation that looks like a function declaration
19
+ # int(*f)(int *, void *) -> int f(int *, void *)
20
+ func_arg = arg.sub('(*', ' ').sub(')', '') # Added
21
+ # Use Fiddle's parse_signature method again.
22
+ callback_argument_types[idx] = parse_signature(func_arg) # Added
23
+ end
24
+ parse_ctype(arg, tymap)
25
+ end
26
+ # Added callback_argument_types. Original method return only 3 values.
27
+ [symname, ctype, argtype, callback_argument_types]
28
+ end
29
+
30
+ def extern(signature, *opts)
31
+ symname, ctype, argtype, callback_argument_types = parse_signature(signature, type_alias)
32
+ opt = parse_bind_options(opts)
33
+ func = import_function(symname, ctype, argtype, opt[:call_type])
34
+
35
+ # callback_argument_types
36
+ func.instance_variable_set(:@callback_argument_types,
37
+ callback_argument_types) # Added
38
+ # attr_reader
39
+ def func.callback_argument_types
40
+ @callback_argument_types
41
+ end
42
+
43
+ # argument_types
44
+ # Ruby 2.7 Fiddle::Function dose not have @argument_types
45
+ # Ruby 3.0 Fiddle::Function has @argument_types
46
+ if func.instance_variable_defined?(:@argument_types)
47
+ # check if @argument_types are the same
48
+ if func.instance_variable_get(:@argument_types) != argtype
49
+ warn "#{symname} func.argument_types:#{func.argument_types} != argtype #{argtype}"
50
+ end
51
+ else
52
+ func.instance_variable_set(:@argument_types, argtype)
53
+ end
54
+ # attr_reader
55
+ def func.argument_types
56
+ @argument_types
57
+ end
58
+
59
+ name = symname.gsub(/@.+/, '')
60
+ @func_map[name] = func
61
+ # define_method(name){|*args,&block| f.call(*args,&block)}
62
+ begin
63
+ /^(.+?):(\d+)/ =~ caller.first
64
+ file = Regexp.last_match(1)
65
+ line = Regexp.last_match(2).to_i
66
+ rescue StandardError
67
+ file, line = __FILE__, __LINE__ + 3
68
+ end
69
+ module_eval(<<-EOS, file, line)
70
+ def #{name}(*args, &block)
71
+ @func_map['#{name}'].call(*args,&block)
72
+ end
73
+ EOS
74
+ module_function(name)
75
+ func
76
+ end
77
+ end
78
+ private_constant :FiddlePatch
79
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LibUI
4
+ module LibUIBase
5
+ FFI.func_map.each_key do |original_method_name|
6
+ name = Utils.convert_to_ruby_method(original_method_name)
7
+ func = FFI.func_map[original_method_name]
8
+
9
+ define_method(name) do |*args, &blk|
10
+ # Assume that block is the last argument.
11
+ args << blk if blk
12
+
13
+ # The proc object is converted to a Closure::BlockCaller object.
14
+ args.map!.with_index do |arg, idx|
15
+ if arg.is_a?(Proc)
16
+ # The types of the function arguments are recorded beforehand.
17
+ # See the monkey patch in ffi.rb.
18
+ callback = Fiddle::Closure::BlockCaller.new(
19
+ *func.callback_argument_types[idx][1..2], &arg
20
+ )
21
+ # Protect from GC
22
+ # See https://github.com/kojix2/LibUI/issues/8
23
+ receiver = args[0]
24
+ if receiver.instance_variable_defined?(:@callbacks)
25
+ receiver.instance_variable_get(:@callbacks) << callback
26
+ else
27
+ receiver.instance_variable_set(:@callbacks, [callback])
28
+ end
29
+ callback
30
+ else
31
+ arg
32
+ end
33
+ end
34
+
35
+ # Make it possible to omit the last nil. This may be an over-optimization.
36
+ siz = func.argument_types.size - 1
37
+ args[siz] = nil if args.size == siz
38
+
39
+ FFI.public_send(original_method_name, *args)
40
+ end
41
+ end
42
+ end
43
+
44
+ private_constant :LibUIBase
45
+ end
data/lib/libui/utils.rb CHANGED
@@ -8,7 +8,7 @@ module LibUI
8
8
  # Converting camel case to underscore case in ruby
9
9
  # https://stackoverflow.com/questions/1509915/converting-camel-case-to-underscore-case-in-ruby#1509939
10
10
  def underscore(str)
11
- str.gsub(/::/, '/')
11
+ str.gsub(/::/, '/') # Maybe we don't need it.
12
12
  .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
13
13
  .gsub(/([a-z\d])([A-Z])/, '\1_\2')
14
14
  .tr('-', '_')
data/lib/libui/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LibUI
4
- VERSION = '0.0.7'
4
+ VERSION = '0.0.11'
5
5
  end
data/lib/libui.rb CHANGED
@@ -10,14 +10,7 @@ module LibUI
10
10
  attr_accessor :ffi_lib
11
11
  end
12
12
 
13
- lib_name = case RbConfig::CONFIG['host_os']
14
- when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
15
- 'libui.dll'
16
- when /darwin|mac os/
17
- 'libui.dylib'
18
- else
19
- 'libui.so'
20
- end
13
+ lib_name = "libui.#{RbConfig::CONFIG['SOEXT']}"
21
14
 
22
15
  self.ffi_lib = if ENV['LIBUIDIR'] && !ENV['LIBUIDIR'].empty?
23
16
  File.expand_path(lib_name, ENV['LIBUIDIR'])
@@ -26,45 +19,185 @@ module LibUI
26
19
  end
27
20
 
28
21
  require_relative 'libui/ffi'
22
+ require_relative 'libui/libui_base'
23
+
24
+ extend LibUIBase
29
25
 
30
26
  class << self
31
- FFI.func_map.each_key do |original_method_name|
32
- name = Utils.convert_to_ruby_method(original_method_name)
33
- func = FFI.func_map[original_method_name]
34
-
35
- define_method(name) do |*args, &blk|
36
- # Assume that block is the last argument.
37
- args << blk if blk
38
-
39
- # The proc object is converted to a Closure::BlockCaller object.
40
- args.map!.with_index do |arg, idx|
41
- if arg.is_a?(Proc)
42
- # The types of the function arguments are recorded beforehand.
43
- # See the monkey patch in ffi.rb.
44
- Fiddle::Closure::BlockCaller.new(*func.inner_functions[idx][1..2], &arg)
45
- else
46
- arg
47
- end
48
- end
49
-
50
- # Make it possible to omit the last nil. This may be an over-optimization.
51
- siz = func.argtype.size - 1
52
- args[siz] = nil if args.size == siz
53
-
54
- FFI.public_send(original_method_name, *args)
55
- end
56
- end
27
+ def init(opt = FFI::InitOptions.malloc)
28
+ i = super(opt)
29
+ return if i.size.zero?
57
30
 
58
- module CustomMethods
59
- def init(opt = FFI::InitOptions.malloc)
60
- i = super(opt)
61
- unless i.size.zero?
62
- warn 'error'
63
- warn UI.free_init_error(init)
64
- end
65
- end
31
+ warn 'error'
32
+ warn UI.free_init_error(init)
66
33
  end
67
-
68
- prepend CustomMethods
69
34
  end
35
+
36
+ # UI_ENUM
37
+ # https://github.com/andlabs/libui/blob/master/ui.h
38
+
39
+ # ForEach
40
+ ForEachContinue = 0
41
+ ForEachStop = 1
42
+
43
+ # WindowResizeEdge
44
+ WindowResizeEdgeLeft = 0
45
+ WindowResizeEdgeTop = 1
46
+ WindowResizeEdgeRight = 2
47
+ WindowResizeEdgeBottom = 3
48
+ WindowResizeEdgeTopLeft = 4
49
+ WindowResizeEdgeTopRight = 5
50
+ WindowResizeEdgeBottomLeft = 6
51
+ WindowResizeEdgeBottomRight = 7
52
+
53
+ # DrawBrushType
54
+ DrawBrushTypeSolid = 0
55
+ DrawBrushTypeLinearGradient = 1
56
+ DrawBrushTypeRadialGradient = 2
57
+ DrawBrushTypeImage = 3
58
+
59
+ # DrawLineCap
60
+ DrawLineCapFlat = 0
61
+ DrawLineCapRound = 1
62
+ DrawLineCapSquare = 2
63
+
64
+ # DrawLineJoin
65
+ DrawLineJoinMiter = 0
66
+ DrawLineJoinRound = 1
67
+ DrawLineJoinBevel = 2
68
+
69
+ DrawDefaultMiterLimit = 10.0
70
+
71
+ # DrawFillMode
72
+ DrawFillModeWinding = 0
73
+ DrawFillModeAlternate = 1
74
+
75
+ # AttributeType
76
+ AttributeTypeFamily = 0
77
+ AttributeTypeSize = 1
78
+ AttributeTypeWeight = 2
79
+ AttributeTypeItalic = 3
80
+ AttributeTypeStretch = 4
81
+ AttributeTypeColor = 5
82
+ AttributeTypeBackground = 6
83
+ AttributeTypeUnderline = 7
84
+ AttributeTypeUnderlineColor = 8
85
+ AttributeTypeFeatures = 9
86
+
87
+ # TextWeight
88
+ TextWeightMinimum = 0
89
+ TextWeightThin = 100
90
+ TextWeightUltraLight = 200
91
+ TextWeightLight = 300
92
+ TextWeightBook = 350
93
+ TextWeightNormal = 400
94
+ TextWeightMedium = 500
95
+ TextWeightSemiBold = 600
96
+ TextWeightBold = 700
97
+ TextWeightUltraBold = 800
98
+ TextWeightHeavy = 900
99
+ TextWeightUltraHeavy = 950
100
+ TextWeightMaximum = 1000
101
+
102
+ # TextItalic
103
+ TextItalicNormal = 0
104
+ TextItalicOblique = 1
105
+ TextItalicItalic = 2
106
+
107
+ # TextStretch
108
+ TextStretchUltraCondensed = 0
109
+ TextStretchExtraCondensed = 1
110
+ TextStretchCondensed = 2
111
+ TextStretchSemiCondensed = 3
112
+ TextStretchNormal = 4
113
+ TextStretchSemiExpanded = 5
114
+ TextStretchExpanded = 6
115
+ TextStretchExtraExpanded = 7
116
+ TextStretchUltraExpanded = 8
117
+
118
+ # Underline
119
+ UnderlineNone = 0
120
+ UnderlineSingle = 1
121
+ UnderlineDouble = 2
122
+ UnderlineSuggestion = 3
123
+
124
+ # UnderlineColor
125
+ UnderlineColorCustom = 0
126
+ UnderlineColorSpelling = 1
127
+ UnderlineColorGrammar = 2
128
+ UnderlineColorAuxiliary = 3
129
+
130
+ # DrawTextAlign
131
+ DrawTextAlignLeft = 0
132
+ DrawTextAlignCenter = 1
133
+ DrawTextAlignRight = 2
134
+
135
+ # Modifiers
136
+ ModifierCtrl = (1 << 0)
137
+ ModifierAlt = (1 << 1)
138
+ ModifierShift = (1 << 2)
139
+ ModifierSuper = (1 << 3)
140
+
141
+ # ExtKey
142
+ ExtKeyEscape = 1
143
+ ExtKeyInsert = 2
144
+ ExtKeyDelete = 3
145
+ ExtKeyHome = 4
146
+ ExtKeyEnd = 5
147
+ ExtKeyPageUp = 6
148
+ ExtKeyPageDown = 7
149
+ ExtKeyUp = 8
150
+ ExtKeyDown = 9
151
+ ExtKeyLeft = 10
152
+ ExtKeyRight = 11
153
+ ExtKeyF1 = 12
154
+ ExtKeyF2 = 13
155
+ ExtKeyF3 = 14
156
+ ExtKeyF4 = 15
157
+ ExtKeyF5 = 16
158
+ ExtKeyF6 = 17
159
+ ExtKeyF7 = 18
160
+ ExtKeyF8 = 19
161
+ ExtKeyF9 = 20
162
+ ExtKeyF10 = 21
163
+ ExtKeyF11 = 22
164
+ ExtKeyF12 = 23
165
+ ExtKeyN0 = 24
166
+ ExtKeyN1 = 25
167
+ ExtKeyN2 = 26
168
+ ExtKeyN3 = 27
169
+ ExtKeyN4 = 28
170
+ ExtKeyN5 = 29
171
+ ExtKeyN6 = 30
172
+ ExtKeyN7 = 31
173
+ ExtKeyN8 = 32
174
+ ExtKeyN9 = 33
175
+ ExtKeyNDot = 34
176
+ ExtKeyNEnter = 35
177
+ ExtKeyNAdd = 36
178
+ ExtKeyNSubtract = 37
179
+ ExtKeyNMultiply = 38
180
+ ExtKeyNDivide = 39
181
+
182
+ # Align
183
+ AlignFill = 0
184
+ AlignStart = 1
185
+ AlignCenter = 2
186
+ AlignEnd = 3
187
+
188
+ # At
189
+ AtLeading = 0
190
+ AtTop = 1
191
+ AtTrailing = 2
192
+ AtBottom = 3
193
+
194
+ # TableValueType
195
+ TableValueTypeString = 0
196
+ TableValueTypeImage = 1
197
+ TableValueTypeInt = 2
198
+ TableValueTypeColor = 3
199
+
200
+ # editable
201
+ TableModelColumnNeverEditable = -1
202
+ TableModelColumnAlwaysEditable = -2
70
203
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - kojix2
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-26 00:00:00.000000000 Z
11
+ date: 2021-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -91,6 +91,8 @@ files:
91
91
  - README.md
92
92
  - lib/libui.rb
93
93
  - lib/libui/ffi.rb
94
+ - lib/libui/fiddle_patch.rb
95
+ - lib/libui/libui_base.rb
94
96
  - lib/libui/utils.rb
95
97
  - lib/libui/version.rb
96
98
  - vendor/LICENSE
@@ -117,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
119
  - !ruby/object:Gem::Version
118
120
  version: '0'
119
121
  requirements: []
120
- rubygems_version: 3.2.3
122
+ rubygems_version: 3.2.22
121
123
  signing_key:
122
124
  specification_version: 4
123
125
  summary: Ruby bindings to libui