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