Newer
Older
#!/usr/bin/env ruby
require 'fox16'
include Fox
=begin
This is the "Cadillac" version of the classic "Hello, World" example;
it has not only an icon, but also a tooltip, and an accelerator.
Executing an FXIcon's constructor will cause it to deserialize the pixel-
data by associating a memory stream with the data array; the resulting icon
object will contain a pixel-array, which will be converted to an off-screen
X pixmap when the icons create() method is called. At that point, the
temporary (client-side) pixel storage will be freed.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# Construct the application object, with application name "Hello2"
# and vendor key "FoxTest". These strings are primarily used for
# interactions with the FOX registry.
application = FXApp.new("Hello2", "FoxTest")
# Construct the main window
main = FXMainWindow.new(application, "Hello", nil, nil, DECOR_ALL)
# Construct a PNG icon that we'll attach to the button. Note that the
# second argument to the constructor just needs to be a byte stream (i.e.
# a string) from some source; here, we're reading the bytes from a file
# on disk.
icon = nil
File.open(File.join("icons", "hello2.png"), "rb") { |f|
icon = FXPNGIcon.new(application, f.read)
}
# Construct the button as a child of the main window.
FXButton.new(main, "&Hello, World!\tWow, FOX is really cool!\nClick on the icon to quit the application.", icon, application, FXApp::ID_QUIT, ICON_UNDER_TEXT|JUSTIFY_BOTTOM)
# Construct the tooltip object
FXToolTip.new(application)
# Calling create() on the application recursively creates all of its
# owned resources (e.g. the application's windows)
application.create
# Show the main window
main.show(PLACEMENT_SCREEN)
# Kick off the event loop
application.run