Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
#!/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.
=end
# 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