fox_paradise 0.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: e26dfb3b7912622a1a465a66a5f5a93a9eb11ba4f8a3c09cf17a01b42f7043ec
4
+ data.tar.gz: f2d43768b1500f6282a9c2b30bea67fb69afaab22d8d9cc610be85455e951f77
5
+ SHA512:
6
+ metadata.gz: 5c9036a4b15ce05d6bf923430211d843456b076a77c57cb154402f52bbf5cd5593447a439d46651e454a6361c81c5afecc8b465bd39d032c1841947f664d927d
7
+ data.tar.gz: fbad1f842cb3b5fe997876929c3f2fbfd58b8ac76927775cb62b548ab06244438b6531b95170e775694129fd60bc4fae9682deb738e545b9502fe4d11ccd0a2d
data/README.md ADDED
@@ -0,0 +1,101 @@
1
+ [![forthebadge](http://forthebadge.com/images/badges/built-with-love.svg)](https://www.gobolinux.org/)
2
+ [![forthebadge](http://forthebadge.com/images/badges/made-with-ruby.svg)](https://www.ruby-lang.org/en/)
3
+ [![Gem Version](https://badge.fury.io/rb/fox_paradise.svg)](https://badge.fury.io/rb/fox_paradise)
4
+
5
+ ## Introduction
6
+
7
+ **FOX** stands for Free Objects for X. It is a small, light-weight
8
+ GUI toolkit for Linux, Windows and Mac OSX.
9
+
10
+ The **fox_paradise gem**, written in ruby, attempts to **enhance**
11
+ the default fxruby gem.
12
+
13
+ The chosen API for the fox_paradise gem has been primarily inspired by
14
+ my other GUI-related toolset project called **gtk_paradise**. API
15
+ such as **.on_clicked {}** and similar - expect more goodies to
16
+ come for the fox_paradise gem in the long run. \o/ *does a little
17
+ ASCII dance*
18
+
19
+ Personally I still use ruby-gtk primarily, since it looks so pretty
20
+ on Linux - but Fox/fxruby is easier to work with on windows
21
+ (without WSL), so I needed some code to help me "bootstrap" that
22
+ as well.
23
+
24
+ ## Installation and Using the project
25
+
26
+ gem install fox_paradise
27
+
28
+ And then:
29
+
30
+ require 'fox_paradise'
31
+
32
+ Note that this currently is hardcoded to fox16. I am using
33
+ **fox version 1.6.57**. In the future this may become more
34
+ flexible, but for now this is how it is.
35
+
36
+ Next, the content of the file called **SNIPPETS.md** will
37
+ be shown. I gather all fox-specific knowledge into that
38
+ file.
39
+
40
+ ## Auto-initializing
41
+
42
+ To auto-initialize, do simply require the fox_paradise gem
43
+ in the following manner:
44
+
45
+ require 'fox_paradise/autoinitialize'
46
+
47
+ ## Tooltips:
48
+
49
+ Tooltips can be set via:
50
+
51
+ button.tipText = ' Push Me! '
52
+
53
+ If you use the fox_paradise gem then the .hint alias exists:
54
+
55
+ button.hint = ' Push Me! '
56
+
57
+ ## Buttons:
58
+
59
+ To add a shortcut, as a key-combination, prefix the text
60
+ via '&'. Example:
61
+
62
+ button = FXButton.new(main, "&Hello, World!", nil, application, FXApp::ID_QUIT)
63
+
64
+ You can give the button HTML colours such as:
65
+
66
+ button.background_colour = :steelblue
67
+
68
+ And you can set the foreground colour as well:
69
+
70
+ button.foreground_colour = :lightblue
71
+ button.foreground = :royalblue # this works as well
72
+
73
+ This functionality depends on the **colours** gem.
74
+
75
+
76
+
77
+ ## Contact information
78
+
79
+ If your creative mind has ideas and specific suggestions to make this
80
+ gem more useful in general, feel free to drop me an email at any
81
+ time, via:
82
+
83
+ shevy@inbox.lt
84
+
85
+ Before that email I used an email account at Google gmail, but in **2021** I
86
+ decided to slowly abandon gmail for various reasons. In part this is because
87
+ the UI annoys me (on non-chrome browser loading takes too long), but also
88
+ because of Google's attempt to establish mass surveillance via its
89
+ federated cohorts sniffing (FLoC). I do not know what happened at Google,
90
+ but enough is enough - there is only so much you can take while supporting
91
+ greed. When it comes to data mining done by private groups, ultimately
92
+ the user became the product.
93
+
94
+ Do keep in mind that responding to emails may take some time,
95
+ depending on the amount of work I may have at that moment, due
96
+ to reallife time constraints. I will, however had, read feedback
97
+ eventually. Patches and code changes are welcome too, of course,
98
+ as long as they are in the spirit of the project at hand, e. g.
99
+ fitting to the general theme. For this I may make use of github
100
+ as a discussion site, but this has a low priority right now.
101
+
data/doc/README.gen ADDED
@@ -0,0 +1,75 @@
1
+ RUBY_HEADER
2
+
3
+ ## Introduction
4
+
5
+ **FOX** stands for Free Objects for X. It is a small, light-weight
6
+ GUI toolkit for Linux, Windows and Mac OSX.
7
+
8
+ The **fox_paradise gem**, written in ruby, attempts to **enhance**
9
+ the default fxruby gem.
10
+
11
+ The chosen API for the fox_paradise gem has been primarily inspired by
12
+ my other GUI-related toolset project called **gtk_paradise**. API
13
+ such as **.on_clicked {}** and similar - expect more goodies to
14
+ come for the fox_paradise gem in the long run. \o/ *does a little
15
+ ASCII dance*
16
+
17
+ Personally I still use ruby-gtk primarily, since it looks so pretty
18
+ on Linux - but Fox/fxruby is easier to work with on windows
19
+ (without WSL), so I needed some code to help me "bootstrap" that
20
+ as well.
21
+
22
+ ## Installation and Using the project
23
+
24
+ gem install fox_paradise
25
+
26
+ And then:
27
+
28
+ require 'fox_paradise'
29
+
30
+ Note that this currently is hardcoded to fox16. I am using
31
+ **fox version 1.6.57**. In the future this may become more
32
+ flexible, but for now this is how it is.
33
+
34
+ Next, the content of the file called **SNIPPETS.md** will
35
+ be shown. I gather all fox-specific knowledge into that
36
+ file.
37
+
38
+ ## Auto-initializing
39
+
40
+ To auto-initialize, do simply require the fox_paradise gem
41
+ in the following manner:
42
+
43
+ require 'fox_paradise/autoinitialize'
44
+
45
+ ## Tooltips:
46
+
47
+ Tooltips can be set via:
48
+
49
+ button.tipText = ' Push Me! '
50
+
51
+ If you use the fox_paradise gem then the .hint alias exists:
52
+
53
+ button.hint = ' Push Me! '
54
+
55
+ ## Buttons:
56
+
57
+ To add a shortcut, as a key-combination, prefix the text
58
+ via '&'. Example:
59
+
60
+ button = FXButton.new(main, "&Hello, World!", nil, application, FXApp::ID_QUIT)
61
+
62
+ You can give the button HTML colours such as:
63
+
64
+ button.background_colour = :steelblue
65
+
66
+ And you can set the foreground colour as well:
67
+
68
+ button.foreground_colour = :lightblue
69
+ button.foreground = :royalblue # this works as well
70
+
71
+ This functionality depends on the **colours** gem.
72
+
73
+ EMBED_THIS_FILE SNIPPETS.md
74
+
75
+ ADD_CONTACT_INFORMATION
data/doc/SNIPPETS.md ADDED
@@ -0,0 +1,161 @@
1
+ This file will collect fxruby-related snippets.
2
+
3
+ To require fxruby, do:
4
+
5
+ require 'fox16'
6
+
7
+ Toplevel inclusion via:
8
+
9
+ include Fox # I don't recommend it, though.
10
+
11
+ Create a new application:
12
+
13
+ application = Fox::FXApp.new # The application object is responsible for the main event loop.
14
+ application = Fox::FXApp.new('Hello World!', 'FoxTest')
15
+ application = Fox::FXApp.new
16
+
17
+ Create a new main window:
18
+
19
+ # first argument should be a FXApp instance:
20
+ main_window = Fox::FXMainWindow.new(application, 'Hello', nil, nil, DECOR_ALL)
21
+ main_window = Fox::FXMainWindow.new(application, 'Hello')
22
+
23
+ Subclass from the main window:
24
+
25
+ class HelloWindow < Fox::FXMainWindow
26
+
27
+ Create a button (button tag):
28
+
29
+ # The button should be embedded into the main-window:
30
+ FXButton.new(main_window, "&Hello, Fox World!", nil, application, FXApp::ID_QUIT)
31
+ button = FXButton.new(main_window, "Hey its me")
32
+ button = Fox::FXButton.new(main_window, "Hello, World!")
33
+
34
+ Style a button:
35
+
36
+ button = FXButton.new(parent_widget,
37
+ '&Some text',
38
+ opts: FRAME_SUNKEN|FRAME_THICK
39
+ )
40
+
41
+ button.frameStyle = FRAME_SUNKEN|FRAME_THICK # Set the frame-style in use.
42
+
43
+ Add a tooltip to the button (or to other widgets):
44
+
45
+ button.tipText = ' Push Me! '
46
+ button.hint = 'Or use this.' # This is available via the fox_paradise gem.
47
+
48
+ Add a check-button:
49
+
50
+ vertical_frame = FXVerticalFrame.new(self, LAYOUT_SIDE_RIGHT|LAYOUT_FILL_Y|PACK_UNIFORM_WIDTH)
51
+ check_button = FXCheckButton.new(vertical_frame, "Toolbar Style\tCool \"poppy\" style buttons")
52
+ check_button.connect(SEL_COMMAND) { |sender, sel, checked|
53
+ if checked
54
+ @button.buttonStyle |= BUTTON_TOOLBAR
55
+ @button.frameStyle = FRAME_RAISED
56
+ else
57
+ @button.buttonStyle &= ~BUTTON_TOOLBAR
58
+ @button.frameStyle = FRAME_RAISED|FRAME_THICK
59
+ end
60
+ }
61
+
62
+ Create a vertical frame:
63
+
64
+ vertical_frame = FXVerticalFrame.new(self, LAYOUT_SIDE_RIGHT|LAYOUT_FILL_Y|PACK_UNIFORM_WIDTH)
65
+
66
+ React to on-key-press events (on click actions, click tag, clicked tag):
67
+
68
+ button.connect(SEL_COMMAND) { |sender, selector, data|
69
+ puts 22 * 2222
70
+ }
71
+ button.connect(Fox::SEL_COMMAND) { |sender, selector, data|
72
+ puts 'Hi! And bye!'
73
+ exit
74
+ }
75
+
76
+ Create a text-view widget via FXText:
77
+
78
+ @text = FXText.new(main_window)
79
+ @text.style = FXText::STYLE_UNDERLINE # Underline the text.
80
+
81
+ Add a vertical separator:
82
+
83
+ Fox::FXVerticalSeparator.new(
84
+ main_window, Fox::LAYOUT_SIDE_RIGHT|Fox::LAYOUT_FILL_Y|Fox::SEPARATOR_RIDGE
85
+ )
86
+
87
+ Add layout hints:
88
+
89
+ button.layoutHints = LAYOUT_CENTER_X
90
+
91
+ Initialize the application:
92
+
93
+ application.create # Do this before .run()
94
+
95
+ Show stuff in the main-window:
96
+
97
+ main_window.show(PLACEMENT_SCREEN) # PLACEMENT_SCREEN ensures that the main window is visible when the program starts to run. This is equivalent to being centered.
98
+
99
+ Run the application:
100
+
101
+ application.run
102
+
103
+ To use a custom font, on a button, try:
104
+
105
+ font = Fox::FXFont.new(@app, 'times', 22)
106
+ button = Fox::FXButton.new(main_window, name)
107
+ button.setFont(font) # Set the font here.
108
+
109
+ # Or simpler via the fox_paradise_gem:
110
+
111
+ USE_THIS_FONT = Fox.font('Hack', 50)
112
+ button = Fox.button
113
+ button.use_this_font = USE_THIS_FONT
114
+
115
+ Set the font size:
116
+
117
+ @font = FXFont.new(app, "Hack,12")
118
+
119
+ Set a totally custom font:
120
+
121
+ "helvetica [bitstream],12,bold,i,normal,iso8859-1,0"
122
+
123
+ Setting a table (table tag):
124
+
125
+ @table = Fox::FXTable.new(frame, opts:
126
+ Fox::TABLE_COL_SIZABLE|Fox::TABLE_ROW_SIZABLE|Fox::LAYOUT_FILL_X|Fox::LAYOUT_FILL_Y,
127
+ padding: 2)
128
+
129
+ @table.visibleRows = 20
130
+ @table.visibleColumns = 8
131
+
132
+ @table.setTableSize(50, 14)
133
+
134
+ @table.setBackColor(Fox::FXRGB(255, 255, 255))
135
+ @table.setCellColor(0, 0, Fox::FXRGB(255, 255, 255))
136
+ @table.setCellColor(0, 1, Fox::FXRGB(255, 240, 240))
137
+ @table.setCellColor(1, 0, Fox::FXRGB(240, 255, 240))
138
+ @table.setCellColor(1, 1, Fox::FXRGB(240, 240, 255))
139
+
140
+ @table.setItemText(r, c, “r:#{r} c:#{c}”) # Set a specific text.
141
+ @table.setColumnText(c, Date::MONTHNAMES[c+1]) } # set text on a column.
142
+
143
+ Colours/Colors in fxruby:
144
+
145
+ require 'fox16/colors'
146
+ blue = Fox::FXColor::Blue # This will refer to blue.
147
+
148
+ Use a four-splitter widget:
149
+
150
+ splitter = FX4Splitter.new(self, LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y|FOURSPLITTER_TRACKING)
151
+
152
+ Create a status bar:
153
+
154
+ Fox::FXStatusBar.new(self, LAYOUT_SIDE_BOTTOM|LAYOUT_FILL_X|STATUSBAR_WITH_DRAGCORNER)
155
+
156
+ Fox and FXRuby specific links:
157
+
158
+ Documentation pertaining to Fox and FXRuby:
159
+
160
+ http://fox-toolkit.org/
161
+ http://fox-toolkit.org/ref16/hierarchy.html
data/doc/TODO.md ADDED
@@ -0,0 +1,3 @@
1
+ This file shall detail which changes ought to be made.
2
+
3
+ ------------------------------------------------------------
@@ -0,0 +1,44 @@
1
+ # =========================================================================== #
2
+ # Gemspec for fox_paradise.
3
+ # =========================================================================== #
4
+ require 'fox_paradise/version/version.rb'
5
+ require 'roebe'
6
+
7
+ Gem::Specification.new { |s|
8
+
9
+ s.name = 'fox_paradise'
10
+ s.version = Fox::VERSION
11
+ s.date = Time.now.strftime('%Y-%m-%d')
12
+
13
+ DESCRIPTION = <<-EOF
14
+
15
+ This library is called fox_paradise. It bundles together code that
16
+ can be used for the FOX toolkit, via the fxruby bindings.
17
+
18
+ The project is very beta-ish though. Do not use it for anything
19
+ in production yet.
20
+
21
+ EOF
22
+
23
+ s.summary = DESCRIPTION
24
+ s.description = DESCRIPTION
25
+
26
+ s.extra_rdoc_files = %w()
27
+
28
+ s.authors = ['Robert A. Heiler']
29
+ s.email = Roebe.email?
30
+ s.files = Dir['**/*']
31
+ s.licenses = 'LGPL-2.1'
32
+ s.homepage = 'https://rubygems.org/gems/fox_paradise'
33
+
34
+ s.required_ruby_version = '>= '+Roebe.third_most_stable_version_of_ruby
35
+ s.required_rubygems_version = '>= '+Gem::VERSION
36
+ s.rubygems_version = '>= '+Gem::VERSION
37
+
38
+ # ========================================================================= #
39
+ # Dependencies for the project:
40
+ # ========================================================================= #
41
+ s.add_dependency 'colours'
42
+ s.add_dependency 'fxruby'
43
+
44
+ }
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === FoxParadise::AdminPanel
6
+ #
7
+ # Usage example:
8
+ #
9
+ # FoxParadise::AdminPanel.new
10
+ #
11
+ # =========================================================================== #
12
+ # require 'fox_paradise/admin_panel/admin_panel.rb'
13
+ # =========================================================================== #
14
+ require 'colours'
15
+ require 'esystem/method'
16
+ require 'opn'
17
+ require 'save_file'
18
+ require 'fox16'
19
+
20
+ module FoxParadise
21
+
22
+ class AdminPanel # < Base # === Foo::AdminPanel
23
+
24
+ include Colours
25
+
26
+ # ========================================================================= #
27
+ # === initialize
28
+ # ========================================================================= #
29
+ def initialize(
30
+ commandline_arguments = nil,
31
+ run_already = true
32
+ )
33
+ reset
34
+ set_commandline_arguments(
35
+ commandline_arguments
36
+ )
37
+ run if run_already
38
+ end
39
+
40
+ # ========================================================================= #
41
+ # === reset (reset tag)
42
+ # ========================================================================= #
43
+ def reset
44
+ super()
45
+ end
46
+
47
+ # ========================================================================= #
48
+ # === set_commandline_arguments
49
+ # ========================================================================= #
50
+ def set_commandline_arguments(i = '')
51
+ i = [i].flatten.compact
52
+ @commandline_arguments = i
53
+ end
54
+
55
+ # ========================================================================= #
56
+ # === commandline_arguments?
57
+ # ========================================================================= #
58
+ def commandline_arguments?
59
+ @commandline_arguments
60
+ end
61
+
62
+ # ========================================================================= #
63
+ # === first_argument?
64
+ # ========================================================================= #
65
+ def first_argument?
66
+ @commandline_arguments.first
67
+ end; alias first? first_argument? # === first?
68
+
69
+ # ========================================================================= #
70
+ # === run (run tag)
71
+ # ========================================================================= #
72
+ def run
73
+ pp self # for debugging
74
+ end
75
+
76
+ # ========================================================================= #
77
+ # === AdminPanel[]
78
+ # ========================================================================= #
79
+ def self.[](i = '')
80
+ new(i)
81
+ end
82
+
83
+ end; end
84
+
85
+ if __FILE__ == $PROGRAM_NAME
86
+ FoxParadise::AdminPanel.new(ARGV)
87
+ end # admin_panel.rb
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'fox_paradise'
6
+
7
+ Fox.initialize_application_window
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'fox_paradise'
6
+
7
+ application = Fox.app('Hello World!', 'FoxTest')
8
+ window = Fox.window(application, 'Hello', nil, nil, Fox::DECOR_ALL)
9
+ window.width_height(1400, 800)
10
+
11
+ Fox.button(
12
+ window,
13
+ "&Hello, Fox World!",
14
+ nil, application,
15
+ Fox::FXApp::ID_QUIT
16
+ )
17
+ application.create
18
+ window.do_show
19
+ application.run
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'fox_paradise/autoinitialize'
6
+
7
+ alias e puts
8
+
9
+ window = Fox.window(Fox.application_window?, 'Hello')
10
+ button = Fox.button(window, "Hey it's me!")
11
+ button.on_clicked { |sender, selector, data|
12
+ e 'The button was clicked.' # This text will be displayed on the commandline.
13
+ }
14
+
15
+ Fox.create_then_run # rb $FOX/simple_windows.rb
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'fox_paradise/autoinitialize'
6
+
7
+ window = Fox.window(Fox.the_app?, 'Hello')
8
+
9
+ button = Fox.button(window, 'Hello, World!')
10
+ button.tipText = ' Push Me! '
11
+ button.on_clicked { exit }
12
+
13
+ Fox::FXToolTip.new(Fox.the_app?)
14
+
15
+ Fox.create_then_run # rb $FOX/tool_tip_example.rb
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'fox_paradise/autoinitialize'
6
+
7
+ USE_THIS_IMAGE = '/home/x/data/images/RPG/SARLEM/CASTLES/TulisNe_Burg.jpg'
8
+
9
+ # =========================================================================== #
10
+ # Supply your image here:
11
+ # =========================================================================== #
12
+ if ARGV.empty?
13
+ image_path = USE_THIS_IMAGE
14
+ else
15
+ image_path = ARGV.first
16
+ end
17
+
18
+ main_window = Fox.window(::Fox.main_app?, 'Hello')
19
+ # =========================================================================== #
20
+ # Add a button:
21
+ # =========================================================================== #
22
+ button = Fox.button(main_window, "Hello, World!")
23
+ button.hint = 'This will show an image.'
24
+ button.use_this_image = image_path
25
+ button.is_a_quit_button
26
+ Fox.create_then_run
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'fox_paradise/autoinitialize'
6
+
7
+ alias e puts
8
+
9
+ window = Fox.window(Fox.main_application?, :the_filename_is_the_title)
10
+ window.width_height(1400, 800)
11
+
12
+ # =========================================================================== #
13
+ # === FONT_TO_USE
14
+ # =========================================================================== #
15
+ FONT_TO_USE = Fox.font('Hack', 30)
16
+
17
+ splitter = Fox::FX4Splitter.new(
18
+ window, Fox::LAYOUT_SIDE_TOP|Fox::LAYOUT_FILL_X|Fox::LAYOUT_FILL_Y|Fox::FOURSPLITTER_TRACKING
19
+ )
20
+
21
+ button1 = Fox.button(
22
+ splitter,
23
+ '&Button1',
24
+ nil,
25
+ Fox.main_application?
26
+ )
27
+ button1.background_colour :black
28
+ button1.foreground_colour :tomato
29
+ button1.pads(80) # This combines pad_right= and pad_left=.
30
+ button1.hint = 'Button #1 can be clicked.'
31
+ button1.on_clicked { e 'Button #1 was clicked.' }
32
+ button1.use_this_font = FONT_TO_USE
33
+
34
+ button2 = Fox.button(
35
+ splitter,
36
+ 'B&utton2',
37
+ nil,
38
+ Fox.main_application?
39
+ )
40
+ button2.background_colour :lightblue
41
+ button2.foreground_colour :royalblue
42
+ button2.pads(20)
43
+ button2.hint = 'Button #2 can be clicked.'
44
+ button2.on_clicked { e 'Button #2 was clicked.' }
45
+ button2.use_this_font = FONT_TO_USE
46
+
47
+ Fox.status_bar(window)
48
+
49
+ Fox.create_then_run
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ require 'fox_paradise/autoinitialize'
6
+
7
+ alias e puts
8
+
9
+ window = Fox.window(Fox.main_application?, :the_filename_is_the_title)
10
+ window.width_height(1400, 800)
11
+
12
+ # =========================================================================== #
13
+ # === FONT_TO_USE
14
+ # =========================================================================== #
15
+ FONT_TO_USE = Fox.font('Hack', 30)
16
+
17
+ # =========================================================================== #
18
+ # Add a small separator:
19
+ # =========================================================================== #
20
+ Fox.horizontal_separator(window)
21
+
22
+ # =========================================================================== #
23
+ # Contents
24
+ # =========================================================================== #
25
+ contents = Fox.horizontal_frame(window)
26
+
27
+ # =========================================================================== #
28
+ # Switcher
29
+ # =========================================================================== #
30
+ @tabbook = Fox::FXTabBook.new(contents, opts: Fox::LAYOUT_FILL_X|Fox::LAYOUT_FILL_Y|Fox::LAYOUT_RIGHT)
31
+
32
+ # =========================================================================== #
33
+ # First tab:
34
+ # =========================================================================== #
35
+ @tab1 = Fox::FXTabItem.new(@tabbook, '&Simple List', nil)
36
+ listframe = Fox::FXHorizontalFrame.new(@tabbook, Fox::FRAME_THICK|Fox::FRAME_RAISED)
37
+ simplelist = Fox::FXList.new(listframe, opts: Fox::LIST_EXTENDEDSELECT|Fox::LAYOUT_FILL_X|Fox::LAYOUT_FILL_Y)
38
+ simplelist.use_this_font = FONT_TO_USE
39
+ simplelist.appendItem('First Entry')
40
+ simplelist.appendItem('Second Entry')
41
+ simplelist.appendItem('Third Entry')
42
+ simplelist.appendItem('Fourth Entry')
43
+
44
+ # =========================================================================== #
45
+ # Second tab:
46
+ # =========================================================================== #
47
+ @tab2 = Fox::FXTabItem.new(@tabbook, 'F&ile List', nil)
48
+
49
+ @fileframe = Fox.horizontal_frame(@tabbook, Fox::FRAME_THICK|Fox::FRAME_RAISED)
50
+
51
+ filelist = Fox::FXFileList.new(@fileframe, opts: Fox::ICONLIST_EXTENDEDSELECT|Fox::LAYOUT_FILL_X|Fox::LAYOUT_FILL_Y)
52
+
53
+ # =========================================================================== #
54
+ # Third tab (third tag):
55
+ # =========================================================================== #
56
+ @tab3 = Fox.tab_item(@tabbook, '&Buttons', nil)
57
+ dirframe = Fox::FXHorizontalFrame.new(@tabbook, Fox::FRAME_THICK|Fox::FRAME_RAISED)
58
+
59
+ splitter = Fox::FX4Splitter.new(
60
+ dirframe, Fox::LAYOUT_SIDE_TOP|Fox::LAYOUT_FILL_X|Fox::LAYOUT_FILL_Y|Fox::FOURSPLITTER_TRACKING
61
+ )
62
+
63
+ button1 = Fox.button(
64
+ splitter,
65
+ '&Button1',
66
+ nil,
67
+ Fox.main_application?
68
+ )
69
+ button1.background_colour :black
70
+ button1.foreground_colour :tomato
71
+ button1.pads(40) # This combines pad_right= and pad_left=.
72
+ button1.hint = 'Button #1 can be clicked.'
73
+ button1.on_clicked { e 'Button #1 was clicked.' }
74
+ button1.use_this_font = FONT_TO_USE
75
+
76
+ button2 = Fox.button(
77
+ splitter,
78
+ 'B&utton2',
79
+ nil,
80
+ Fox.main_application?
81
+ )
82
+ button2.background_colour :lightblue
83
+ button2.foreground_colour :royalblue
84
+ button2.pads(40)
85
+ button2.hint = 'Button #2 can be clicked.'
86
+ button2.on_clicked { e 'Button #2 was clicked.' }
87
+ button2.use_this_font = FONT_TO_USE
88
+
89
+ Fox.horizontal_separator(window)
90
+ Fox.status_bar(window)
91
+ Fox.horizontal_separator(window)
92
+
93
+ Fox.create_then_run
@@ -0,0 +1 @@
1
+ This directory contains modifications to core fox-classes.
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'fox_paradise/fox_classes/fx_app.rb'
6
+ # =========================================================================== #
7
+ module Fox
8
+
9
+ class FXApp
10
+
11
+ # ========================================================================= #
12
+ # === create_then_run
13
+ #
14
+ # This method simply combines two other methods.
15
+ # ========================================================================= #
16
+ def create_then_run
17
+ create
18
+ run
19
+ end
20
+
21
+ end; end
@@ -0,0 +1,166 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'fox_paradise/fox_classes/fx_button.rb'
6
+ # =========================================================================== #
7
+ module Fox
8
+
9
+ class FXButton
10
+
11
+ begin
12
+ require 'colours'
13
+ rescue LoadError; end
14
+
15
+ # ========================================================================= #
16
+ # === background_colour
17
+ # ========================================================================= #
18
+ def background_colour(
19
+ array = [128, 128, 0]
20
+ )
21
+ if ( array.is_a?(String) or array.is_a?(Symbol) ) and
22
+ Colours.is_a_html_colour?(array)
23
+ array = Colours.html_colour_to_rgb_value(array).split(';').map {|entry| # Is initially something like "106;90;205".
24
+ entry.to_i
25
+ }
26
+ end
27
+ self.backColor = ::Fox::FXRGB(*array)
28
+ end; alias background_colour= background_colour # === background_colour=
29
+
30
+ # ========================================================================= #
31
+ # === foreground_colour
32
+ # ========================================================================= #
33
+ def foreground_colour(
34
+ array = [128, 128, 0]
35
+ )
36
+ if ( array.is_a?(String) or array.is_a?(Symbol) ) and
37
+ Colours.is_a_html_colour?(array)
38
+ array = Colours.html_colour_to_rgb_value(array).split(';').map {|entry| # Is initially something like "106;90;205".
39
+ entry.to_i
40
+ }
41
+ end
42
+ self.textColor = ::Fox::FXRGB(*array)
43
+ end; alias foreground_colour= foreground_colour # === foreground_colour=
44
+ alias foreground= foreground_colour # === foreground=
45
+
46
+ # ========================================================================= #
47
+ # === use_this_image=
48
+ #
49
+ # This method can be used to handle images.
50
+ # ========================================================================= #
51
+ def use_this_image=(
52
+ image_path,
53
+ use_this_as_the_main_app = ::Fox.main_app?
54
+ )
55
+ dataset = File.open(image_path, 'rb').read
56
+ case image_path
57
+ # ======================================================================= #
58
+ # === png files
59
+ # ======================================================================= #
60
+ when /.png$/
61
+ self.icon = ::Fox::FXPNGIcon.new(use_this_as_the_main_app, dataset)
62
+ # ======================================================================= #
63
+ # === jpg files
64
+ # ======================================================================= #
65
+ when /.jpg$/,
66
+ /.jpeg$/
67
+ self.icon = ::Fox::FXJPGIcon.new(use_this_as_the_main_app, dataset)
68
+ end
69
+ end
70
+
71
+ # ========================================================================= #
72
+ # === on_clicked
73
+ #
74
+ # This is the method that will be run when the user clicks on the
75
+ # button, via the mouse pointer.
76
+ # ========================================================================= #
77
+ def on_clicked(&block)
78
+ connect(::Fox::SEL_COMMAND, &block)
79
+ end
80
+
81
+ # ========================================================================= #
82
+ # === is_a_quit_button
83
+ # ========================================================================= #
84
+ def is_a_quit_button
85
+ on_clicked { exit }
86
+ end
87
+
88
+ # ========================================================================= #
89
+ # === pads
90
+ #
91
+ # This refers to side-padding; the "s" stands for "side".
92
+ # ========================================================================= #
93
+ def pads(
94
+ pad_by_n_pixel = 10
95
+ )
96
+ self.pad_right = pad_by_n_pixel
97
+ self.pad_left = pad_by_n_pixel
98
+ end
99
+
100
+ # ========================================================================= #
101
+ # === hint=
102
+ #
103
+ # This method sets up the tooltip to use.
104
+ # ========================================================================= #
105
+ def hint=(
106
+ i, main_app = ::Fox.main_app?
107
+ )
108
+ self.tipText = i
109
+ ::Fox::FXToolTip.new(main_app)
110
+ end; alias fancy_tooltip= hint= # === fancy-tooltip=
111
+
112
+ alias pad_right= padRight= # === pad_right=
113
+
114
+ alias pad_left= padLeft= # === pad_left=
115
+
116
+ end
117
+
118
+
119
+ # ========================================================================= #
120
+ # === Fox.button (button tag)
121
+ #
122
+ # This method can be used to create a button.
123
+ #
124
+ # The normal "vanilla" API would look like this:
125
+ #
126
+ # FXButton.new(parent_widget,
127
+ # '&Some text',
128
+ # opts: FRAME_SUNKEN|FRAME_THICK
129
+ # )
130
+ #
131
+ # ========================================================================= #
132
+ def self.button(
133
+ onto_which_widget = nil, # The parent widget.
134
+ text = "&Hello, Fox World!",
135
+ options_hash = {},
136
+ no_idea = nil,
137
+ evidently_something_related_to_quit = :no_special_action
138
+ )
139
+ case evidently_something_related_to_quit
140
+ # ======================================================================= #
141
+ # === :pass_through
142
+ # ======================================================================= #
143
+ when :pass_through,
144
+ :no_special_action,
145
+ :default # This is also the default.
146
+ # ===================================================================== #
147
+ # In this case nothing will be done, except for setting it to 0.
148
+ # ===================================================================== #
149
+ evidently_something_related_to_quit = 0
150
+ # ======================================================================= #
151
+ # === :quit
152
+ # ======================================================================= #
153
+ when :quit
154
+ evidently_something_related_to_quit = ::Fox::FXApp::ID_QUIT
155
+ end
156
+ ::Fox::FXButton.new(
157
+ onto_which_widget,
158
+ text,
159
+ options_hash,
160
+ no_idea,
161
+ evidently_something_related_to_quit
162
+ )
163
+ end
164
+
165
+
166
+ end
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'fox_paradise/fox_classes/fx_frame.rb'
6
+ # =========================================================================== #
7
+ module Fox
8
+
9
+ class FXFrame
10
+
11
+ end; end
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'fox_paradise/fox_classes/fx_horizontal_frame.rb'
6
+ # =========================================================================== #
7
+ module Fox
8
+
9
+ class FXHorizontalFrame
10
+
11
+ end; end
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'fox_paradise/fox_classes/fx_label.rb'
6
+ # =========================================================================== #
7
+ module Fox
8
+
9
+ class FXLabel
10
+
11
+ # ========================================================================= #
12
+ # === use_this_font=
13
+ # ========================================================================= #
14
+ def use_this_font=(i)
15
+ setFont(i)
16
+ end; alias set_font use_this_font= # === set_font
17
+
18
+ end; end
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'fox_paradise/fox_classes/fx_list.rb'
6
+ # =========================================================================== #
7
+ module Fox
8
+
9
+ class FXList
10
+
11
+ # ========================================================================= #
12
+ # === use_this_font=
13
+ # ========================================================================= #
14
+ def use_this_font=(i)
15
+ setFont(i)
16
+ end; alias set_font use_this_font= # === set_font
17
+
18
+ end; end
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ module Fox
6
+
7
+ class FXMainWindow
8
+
9
+ # ========================================================================= #
10
+ # === do_show
11
+ # ========================================================================= #
12
+ def do_show(
13
+ i = ::Fox::PLACEMENT_SCREEN
14
+ )
15
+ show(i)
16
+ end
17
+
18
+ # ========================================================================= #
19
+ # === width_height
20
+ # ========================================================================= #
21
+ def width_height(
22
+ width = 1400,
23
+ height = 800
24
+ )
25
+ self.width = width
26
+ self.height = height
27
+ end
28
+
29
+ end; end
@@ -0,0 +1,204 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'fox_paradise/toplevel_methods/misc.rb'
6
+ # =========================================================================== #
7
+ module Fox
8
+
9
+ require 'fox_paradise/fox_classes/fx_app.rb'
10
+ require 'fox_paradise/fox_classes/fx_button.rb'
11
+ require 'fox_paradise/fox_classes/fx_label.rb'
12
+ require 'fox_paradise/fox_classes/fx_frame.rb'
13
+ require 'fox_paradise/fox_classes/fx_horizontal_frame.rb'
14
+ require 'fox_paradise/fox_classes/fx_list.rb'
15
+ require 'fox_paradise/fox_classes/fx_main_window.rb'
16
+
17
+ alias e puts
18
+
19
+ # ========================================================================= #
20
+ # === @application_window
21
+ #
22
+ # This variable can be used to keep track of the main application
23
+ # window.
24
+ # ========================================================================= #
25
+ @application_window = nil
26
+
27
+ # ========================================================================= #
28
+ # === Fox.application_window?
29
+ # ========================================================================= #
30
+ def self.application_window?
31
+ @application_window
32
+ end; self.instance_eval { alias the_app? application_window? } # === Fox.the_app?
33
+ self.instance_eval { alias main_app? application_window? } # === Fox.main_app?
34
+ self.instance_eval { alias main_application? application_window? } # === Fox.main_application?
35
+
36
+ # ========================================================================= #
37
+ # === Fox.set_application_window
38
+ # ========================================================================= #
39
+ def self.set_application_window(i)
40
+ @application_window = i
41
+ end
42
+
43
+ # ========================================================================= #
44
+ # === Fox.create_then_run
45
+ # ========================================================================= #
46
+ def self.create_then_run
47
+ ::Fox.application_window?.create_then_run
48
+ end
49
+
50
+ # ========================================================================= #
51
+ # === Fox.run
52
+ # ========================================================================= #
53
+ def self.run(
54
+ this = ::Fox.application_window?
55
+ )
56
+ this.run
57
+ end
58
+
59
+ # ========================================================================= #
60
+ # === Fox.initialize_application_window
61
+ #
62
+ # This method is similar to:
63
+ #
64
+ # app = Fox::FXApp.new
65
+ #
66
+ # ========================================================================= #
67
+ def self.initialize_application_window
68
+ @application_window = app # Call .app().
69
+ end
70
+
71
+ # ========================================================================= #
72
+ # === Fox.app
73
+ #
74
+ # This method can be used to create a new Fox-Application.
75
+ # ========================================================================= #
76
+ def self.app(
77
+ a = 'Hello world!',
78
+ b = 'FoxTest'
79
+ )
80
+ return ::Fox::FXApp.new(a, b)
81
+ end
82
+
83
+ # ========================================================================= #
84
+ # === Fox.font (font tag)
85
+ #
86
+ # Simplified toplevel-method to assign to a font.
87
+ # ========================================================================= #
88
+ def self.font(
89
+ use_this_font_name = 'Hack',
90
+ use_this_for_the_font_size = 20,
91
+ use_this_application = Fox.main_application?
92
+ )
93
+ Fox::FXFont.new(
94
+ use_this_application, use_this_font_name, use_this_for_the_font_size
95
+ )
96
+ end
97
+
98
+ # ========================================================================= #
99
+ # === Fox.tab_item
100
+ # ========================================================================= #
101
+ def self.tab_item(
102
+ window,
103
+ text = '&Buttons',
104
+ whatever = nil
105
+ )
106
+ Fox::FXTabItem.new(window, text,whatever)
107
+ end
108
+
109
+ # ========================================================================= #
110
+ # === Fox.filelist
111
+ # ========================================================================= #
112
+ def self.filelist(
113
+ window,
114
+ options = Fox::ICONLIST_EXTENDEDSELECT|Fox::LAYOUT_FILL_X|Fox::LAYOUT_FILL_Y
115
+ )
116
+ Fox::FXFileList.new(
117
+ window, options
118
+ )
119
+ end
120
+
121
+ # ========================================================================= #
122
+ # === Fox.horizontal_separator
123
+ #
124
+ # The first argument must be the parent window. This is mandatory.
125
+ # ========================================================================= #
126
+ def self.horizontal_separator(
127
+ window,
128
+ use_this_as_the_layout = Fox::LAYOUT_SIDE_TOP|Fox::LAYOUT_FILL_X|Fox::SEPARATOR_GROOVE
129
+ )
130
+ Fox::FXHorizontalSeparator.new(
131
+ window,
132
+ use_this_as_the_layout
133
+ )
134
+ end; self.instance_eval { alias hseparator horizontal_separator } # === Fox.hseparator
135
+
136
+ # ========================================================================= #
137
+ # === Fox.horizontal_frame (frame tag)
138
+ #
139
+ # This method will create a horizontal frame.
140
+ # ========================================================================= #
141
+ def self.horizontal_frame(
142
+ use_this_the_main_window = nil,
143
+ options_to_use = Fox::LAYOUT_SIDE_TOP|Fox::FRAME_NONE|Fox::LAYOUT_FILL_X|Fox::LAYOUT_FILL_Y|Fox::PACK_UNIFORM_WIDTH
144
+ )
145
+ Fox::FXHorizontalFrame.new(
146
+ use_this_the_main_window,
147
+ options_to_use
148
+ )
149
+ end
150
+
151
+ # ========================================================================= #
152
+ # === Fox.status_bar
153
+ #
154
+ # The first argument must be the parent window. This is mandatory.
155
+ # ========================================================================= #
156
+ def self.status_bar(
157
+ use_this_the_main_window = nil,
158
+ options_to_use = Fox::LAYOUT_SIDE_BOTTOM|Fox::LAYOUT_FILL_X|Fox::STATUSBAR_WITH_DRAGCORNER
159
+ )
160
+ Fox::FXStatusBar.new(
161
+ use_this_the_main_window,
162
+ options_to_use
163
+ )
164
+ end; self.instance_eval { alias statusbar status_bar } # === Fox.statusbar
165
+
166
+ # ========================================================================= #
167
+ # === Fox.window
168
+ #
169
+ # Note that this method will automatically call .show() on the window.
170
+ # This may be subject to change at a later time (written August 2021).
171
+ #
172
+ # This is actually a "main window".
173
+ # ========================================================================= #
174
+ def self.window(
175
+ root = :create_new,
176
+ title = '', # This is the main window's title. It will be displayed in the window's title bar.
177
+ a = nil,
178
+ b = nil,
179
+ decor_type = Fox::DECOR_ALL
180
+ )
181
+ case title
182
+ when :the_filename_is_the_title
183
+ title = File.basename($PROGRAM_NAME) # We only need the short variant.
184
+ end
185
+ case root # case tag
186
+ # ======================================================================= #
187
+ # === :create_new
188
+ # ======================================================================= #
189
+ when :create_new
190
+ root = ::Fox.app
191
+ Fox.set_application_window(root)
192
+ end
193
+ main_window = ::Fox::FXMainWindow.new(
194
+ root,
195
+ title,
196
+ a,
197
+ b,
198
+ decor_type
199
+ )
200
+ main_window.show # See the explanation on top of this method.
201
+ return main_window
202
+ end
203
+
204
+ end
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'fox_paradise/version/version.rb'
6
+ # =========================================================================== #
7
+ module Fox
8
+
9
+ # ========================================================================= #
10
+ # === VERSION
11
+ # ========================================================================= #
12
+ VERSION = '0.0.12'
13
+
14
+ end
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'fox_paradise'
6
+ # =========================================================================== #
7
+ require 'fox16' # This is the hardcoded version. It may change at a later moment in time.
8
+ require 'fox_paradise/toplevel_methods/misc.rb'
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fox_paradise
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.12
5
+ platform: ruby
6
+ authors:
7
+ - Robert A. Heiler
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-08-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: colours
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: fxruby
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: |2+
42
+
43
+ This library is called fox_paradise. It bundles together code that
44
+ can be used for the FOX toolkit, via the fxruby bindings.
45
+
46
+ The project is very beta-ish though. Do not use it for anything
47
+ in production yet.
48
+
49
+ email: shevy@inbox.lt
50
+ executables: []
51
+ extensions: []
52
+ extra_rdoc_files: []
53
+ files:
54
+ - README.md
55
+ - doc/README.gen
56
+ - doc/SNIPPETS.md
57
+ - doc/TODO.md
58
+ - fox_paradise.gemspec
59
+ - lib/fox_paradise.rb
60
+ - lib/fox_paradise/admin_panel/admin_panel.rb
61
+ - lib/fox_paradise/autoinitialize.rb
62
+ - lib/fox_paradise/examples/001_hello_world.rb
63
+ - lib/fox_paradise/examples/002_simple_window.rb
64
+ - lib/fox_paradise/examples/003_tool_tip_example.rb
65
+ - lib/fox_paradise/examples/004_show_this_image.rb
66
+ - lib/fox_paradise/examples/005_two_buttons_in_a_resizable_panel.rb
67
+ - lib/fox_paradise/examples/006_notebook_tab_example.rb
68
+ - lib/fox_paradise/fox_classes/README.md
69
+ - lib/fox_paradise/fox_classes/fx_app.rb
70
+ - lib/fox_paradise/fox_classes/fx_button.rb
71
+ - lib/fox_paradise/fox_classes/fx_frame.rb
72
+ - lib/fox_paradise/fox_classes/fx_horizontal_frame.rb
73
+ - lib/fox_paradise/fox_classes/fx_label.rb
74
+ - lib/fox_paradise/fox_classes/fx_list.rb
75
+ - lib/fox_paradise/fox_classes/fx_main_window.rb
76
+ - lib/fox_paradise/toplevel_methods/misc.rb
77
+ - lib/fox_paradise/version/version.rb
78
+ homepage: https://rubygems.org/gems/fox_paradise
79
+ licenses:
80
+ - LGPL-2.1
81
+ metadata: {}
82
+ post_install_message:
83
+ rdoc_options: []
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: 2.5.8
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: 3.2.25
96
+ requirements: []
97
+ rubygems_version: 3.2.25
98
+ signing_key:
99
+ specification_version: 4
100
+ summary: This library is called fox_paradise. It bundles together code that can be
101
+ used for the FOX toolkit, via the fxruby bindings. The project is very beta-ish
102
+ though. Do not use it for anything in production yet.
103
+ test_files: []
104
+ ...