module Fzeet
Constants
- Bstr
- Container
- Decimal
- Dialog
- Frame
- Handle
- MDIChild
- Point
- PropVariant
- Rect
- SafeArray
- Size
- SystemTime
- Variant
- View
- Window
Public Class Methods
constant(c, *prefixes)
click to toggle source
# File lib/fzeet/windows/core/Common.rb, line 141 def constant(c, *prefixes) return c if c.kind_of?(Integer) || c.kind_of?(FFI::Pointer) c = c.upcase prefixes.map! { |prefix| prefix = prefix.upcase "#{prefix}#{c}".tap { |name| return Windows.const_get(name) if Windows.const_defined?(name) } } raise "Constant not found: #{c} (tried: #{prefixes.join(', ')})." end
flags(flags, *prefixes)
click to toggle source
# File lib/fzeet/windows/core/Common.rb, line 157 def flags(flags, *prefixes) return flags if flags.kind_of?(Integer) [*flags].inject(0) { |result, flag| result |= constant(flag, *prefixes) } end
message(message, opts = {})
click to toggle source
# File lib/fzeet/windows/user/MessageBox.rb, line 73 def message(message, opts = {}) _opts = { window: Application.window, caption: Application.name, buttons: [:ok], icon: :information } badopts = opts.keys - _opts.keys; raise "Bad option(s): #{badopts.join(', ')}." unless badopts.empty? _opts.merge!(opts) defbutton = nil defbutton = if [*_opts[:buttons]].find.with_index { |button, i| defbutton = i + 1; button =~ /^[A-Z]/ } constant(defbutton.to_s, :mb_defbutton) else 0 end flags = constant([*_opts[:buttons]].join(''), :mb_) | defbutton | constant(_opts[:icon], :mb_icon) DialogResult.new( Windows.DetonateLastError(0, :MessageBox, _opts[:window] && _opts[:window].handle, message.to_s, _opts[:caption].to_s, flags) ) end
question(message, opts = {})
click to toggle source
# File lib/fzeet/windows/user/MessageBox.rb, line 97 def question(message, opts = {}) opts[:buttons] ||= [:yes, :no] opts[:icon] ||= :question message(message, opts) end
shell(name, args = nil, dir = nil, verb = 'open')
click to toggle source
# File lib/fzeet/windows/shell/Common.rb, line 336 def shell(name, args = nil, dir = nil, verb = 'open') raise 'ShellExecute failed.' unless Windows.ShellExecute(nil, verb, name, args, dir, Windows::SW_NORMAL).to_i > 32 end
using(o, cleanup = :dispose) { |o| ... }
click to toggle source
# File lib/fzeet/windows/core/Common.rb, line 165 def using(o, cleanup = :dispose) yield o ensure o.send(cleanup) end
Private Instance Methods
constant(c, *prefixes)
click to toggle source
# File lib/fzeet/windows/core/Common.rb, line 141 def constant(c, *prefixes) return c if c.kind_of?(Integer) || c.kind_of?(FFI::Pointer) c = c.upcase prefixes.map! { |prefix| prefix = prefix.upcase "#{prefix}#{c}".tap { |name| return Windows.const_get(name) if Windows.const_defined?(name) } } raise "Constant not found: #{c} (tried: #{prefixes.join(', ')})." end
flags(flags, *prefixes)
click to toggle source
# File lib/fzeet/windows/core/Common.rb, line 157 def flags(flags, *prefixes) return flags if flags.kind_of?(Integer) [*flags].inject(0) { |result, flag| result |= constant(flag, *prefixes) } end
message(message, opts = {})
click to toggle source
# File lib/fzeet/windows/user/MessageBox.rb, line 73 def message(message, opts = {}) _opts = { window: Application.window, caption: Application.name, buttons: [:ok], icon: :information } badopts = opts.keys - _opts.keys; raise "Bad option(s): #{badopts.join(', ')}." unless badopts.empty? _opts.merge!(opts) defbutton = nil defbutton = if [*_opts[:buttons]].find.with_index { |button, i| defbutton = i + 1; button =~ /^[A-Z]/ } constant(defbutton.to_s, :mb_defbutton) else 0 end flags = constant([*_opts[:buttons]].join(''), :mb_) | defbutton | constant(_opts[:icon], :mb_icon) DialogResult.new( Windows.DetonateLastError(0, :MessageBox, _opts[:window] && _opts[:window].handle, message.to_s, _opts[:caption].to_s, flags) ) end
question(message, opts = {})
click to toggle source
# File lib/fzeet/windows/user/MessageBox.rb, line 97 def question(message, opts = {}) opts[:buttons] ||= [:yes, :no] opts[:icon] ||= :question message(message, opts) end
shell(name, args = nil, dir = nil, verb = 'open')
click to toggle source
# File lib/fzeet/windows/shell/Common.rb, line 336 def shell(name, args = nil, dir = nil, verb = 'open') raise 'ShellExecute failed.' unless Windows.ShellExecute(nil, verb, name, args, dir, Windows::SW_NORMAL).to_i > 32 end
using(o, cleanup = :dispose) { |o| ... }
click to toggle source
# File lib/fzeet/windows/core/Common.rb, line 165 def using(o, cleanup = :dispose) yield o ensure o.send(cleanup) end