Module: Fzeet

Defined in:
lib/fzeet/Menu.rb,
lib/fzeet/Common.rb,
lib/fzeet/UIRibbon.rb,
lib/fzeet/Accelerator.rb,
lib/fzeet/Application.rb,
lib/fzeet/Window/View.rb,
lib/fzeet/windows/com.rb,
lib/fzeet/windows/gdi.rb,
lib/fzeet/windows/ole.rb,
lib/fzeet/Control/Edit.rb,
lib/fzeet/windows/libc.rb,
lib/fzeet/Dialog/Common.rb,
lib/fzeet/Window/Common.rb,
lib/fzeet/Window/Dialog.rb,
lib/fzeet/Window/Window.rb,
lib/fzeet/Control/Button.rb,
lib/fzeet/Control/Common.rb,
lib/fzeet/Control/Header.rb,
lib/fzeet/Control/Static.rb,
lib/fzeet/Control/UpDown.rb,
lib/fzeet/windows/common.rb,
lib/fzeet/windows/kernel.rb,
lib/fzeet/Control/ListBox.rb,
lib/fzeet/Control/SysLink.rb,
lib/fzeet/windows/propsys.rb,
lib/fzeet/Control/ComboBox.rb,
lib/fzeet/Control/ListView.rb,
lib/fzeet/Control/TreeView.rb,
lib/fzeet/windows/uiribbon.rb,
lib/fzeet/Dialog/FileDialog.rb,
lib/fzeet/Dialog/FontDialog.rb,
lib/fzeet/windows/user/Menu.rb,
lib/fzeet/Control/ComboBoxEx.rb,
lib/fzeet/Dialog/ColorDialog.rb,
lib/fzeet/Dialog/PrintDialog.rb,
lib/fzeet/Control/ProgressBar.rb,
lib/fzeet/windows/comctl/Edit.rb,
lib/fzeet/windows/user/Common.rb,
lib/fzeet/windows/user/Window.rb,
lib/fzeet/Window/WindowMethods.rb,
lib/fzeet/windows/shell/Common.rb,
lib/fzeet/windows/user/Message.rb,
lib/fzeet/Control/MonthCalendar.rb,
lib/fzeet/windows/comctl/Button.rb,
lib/fzeet/windows/comctl/Common.rb,
lib/fzeet/windows/comctl/Header.rb,
lib/fzeet/windows/comctl/UpDown.rb,
lib/fzeet/windows/comdlg/Common.rb,
lib/fzeet/Control/DateTimePicker.rb,
lib/fzeet/Dialog/ShellFileDialog.rb,
lib/fzeet/windows/comctl/SysLink.rb,
lib/fzeet/windows/comctl/ComboBox.rb,
lib/fzeet/windows/user/MessageBox.rb,
lib/fzeet/Dialog/FindReplaceDialog.rb,
lib/fzeet/windows/shell/FileDialog.rb,
lib/fzeet/windows/user/Accelerator.rb,
lib/fzeet/windows/comctl/ComboBoxEx.rb,
lib/fzeet/windows/comdlg/FileDialog.rb,
lib/fzeet/windows/comdlg/FontDialog.rb,
lib/fzeet/windows/user/Control/Edit.rb,
lib/fzeet/windows/comctl/ProgressBar.rb,
lib/fzeet/windows/comdlg/ColorDialog.rb,
lib/fzeet/windows/comdlg/PrintDialog.rb,
lib/fzeet/windows/user/Control/Button.rb,
lib/fzeet/windows/user/Control/Common.rb,
lib/fzeet/windows/user/Control/Static.rb,
lib/fzeet/windows/comctl/MonthCalendar.rb,
lib/fzeet/windows/comctl/PropertySheet.rb,
lib/fzeet/windows/user/Control/ListBox.rb,
lib/fzeet/windows/comctl/DateTimePicker.rb,
lib/fzeet/windows/shell/BrowseForFolder.rb,
lib/fzeet/windows/user/Control/ComboBox.rb,
lib/fzeet/windows/user/SystemParametersInfo.rb

Defined Under Namespace

Modules: AcceleratorTableMethods, BitmapMethods, BrushMethods, ButtonMethods, ComboBoxExMethods, ComboBoxMethods, CursorMethods, DCMethods, DateTimePickerMethods, EditMethods, FontMethods, HeaderMethods, IconMethods, ListBoxMethods, ListViewMethods, MenuMethods, MonthCalendarMethods, ProgressBarMethods, ShellFileDialogMethods, StaticMethods, SysLinkMethods, Toggle, TreeViewMethods, UpDownMethods, WindowMethods, Windows Classes: AcceleratorTable, Application, BasicWindow, Button, ClientDC, ColorDialog, ComboBox, ComboBoxEx, Command, CommonDialog, Control, DateTimePicker, Dialog, DialogResult, Edit, FileDialog, FileOpenDialog, FileSaveDialog, FindDialog, FindReplaceDialog, FolderDialog, FontDialog, Handle, Header, IndirectFont, ListBox, ListView, Menu, Message, MonthCalendar, PARGB32, PageSetupDialog, Point, PopupMenu, PrintDialog, PrintDialogEx, ProgressBar, Rect, ReplaceDialog, ShellFileOpenDialog, ShellFileSaveDialog, ShellFolderDialog, Size, Static, SysLink, SystemBrush, SystemCursor, SystemIcon, TreeView, UIRibbon, UpDown, View, Window, WindowClass

Class Method Summary collapse

Class Method Details

.constant(c, *prefixes) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/fzeet/Common.rb', line 23

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) ⇒ Object



39
40
41
42
43
# File 'lib/fzeet/Common.rb', line 39

def flags(flags, *prefixes)
	return flags if flags.kind_of?(Integer)

	[*flags].inject(0) { |flags, flag| flags |= constant(flag, *prefixes) }
end

.message(message, opts = {}) ⇒ Object



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/fzeet/Common.rb', line 93

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 = {}) ⇒ Object



117
118
119
120
121
122
# File 'lib/fzeet/Common.rb', line 117

def question(message, opts = {})
	opts[:buttons] ||= [:yes, :no]
	opts[:icon] ||= :question

	message(message, opts)
end

.shell(name, args = nil, dir = nil, verb = 'open') ⇒ Object



124
125
126
# File 'lib/fzeet/Common.rb', line 124

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) ⇒ Object



187
188
189
190
191
# File 'lib/fzeet/Common.rb', line 187

def using(o, cleanup = :dispose)
	yield o
ensure
	o.send(cleanup)
end