gtk3app 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6f11845611abaa142433e9f894dbc26467421a2d
4
+ data.tar.gz: 62b121e1f8cd664d6ae8ac22f3bf4f254d80aaf9
5
+ SHA512:
6
+ metadata.gz: 9f54f47674f0fe13725f37c4aa7ea2c04b5a8a6bb048815f4676bdf7e5ea43b2515763bd8ba10b715630ebccab431192092cc45f03a0ab08709f942d24d0da0d
7
+ data.tar.gz: 8be430fe3b0aa8d87786253c3fada252767a084904d3a5a318c77202dc5809cccfd13510a901fdbd572cf7edfeed605e716532de5bfc909e1f4678e52103a275
data/README.rdoc ADDED
@@ -0,0 +1,81 @@
1
+ = gt3applib
2
+
3
+ == DESCRIPTION:
4
+
5
+ _Gtk3App_ provides a _Gtk3_ application stub.
6
+
7
+ It autmatically provides for command line options parsing, user configuration, and minime windows.
8
+
9
+ == SYNOPSIS:
10
+
11
+ Given a module file such as ./my_app.rb, the module is expected to at leat provide MyApp.run(window):
12
+
13
+ module MyApp
14
+ def self.run(window)
15
+ # develop as you would on a Gtk3::Window object...
16
+ # ...probably a good idea to show all your work.
17
+ window.show_all
18
+ end
19
+ end
20
+
21
+ That's enough to get you going.
22
+ The three examples in the ./examples[https://github.com/carlosjhr64/gtk3app/tree/master/examples]
23
+ directory fully explains the rest of what _Gtk3App_ can do for you.
24
+
25
+ == HELP:
26
+
27
+ This is the gtk3app stub.
28
+ Usage:
29
+ gtk3app [options] appname ...
30
+ Options:
31
+ -h --help Show this help and exit.
32
+ -v --version Show the version and exit.
33
+ -q --quiet Set $VERBOSE to nil.
34
+ -V --verbose Set $VERBOSE to true.
35
+ -d --debug Set $DEBUG to true.
36
+ appname The name of the application to be run.
37
+
38
+ == FEATURES:
39
+
40
+ * _Such_[https://github.com/carlosjhr64/Such] wrappers.
41
+ * _Rafini_[https://github.com/carlosjhr64/rafini] refinements.
42
+ * _HelpParser_[https://github.com/carlosjhr64/help_parser] command line options parsing.
43
+ * _UserSpace_[https://github.com/carlosjhr64/user_space] XDG support.
44
+ * MiniMe, an alternative to the deprecated Gtk::StatusIcon.
45
+ * Popup Application Menu from window button 3 press event (standard left click on application).
46
+
47
+ == INSTALL:
48
+
49
+ $ sudo gem install gtk3applib
50
+
51
+ == LICENSE:
52
+
53
+ (The MIT License)
54
+
55
+ Copyright (c) 2014
56
+
57
+ Permission is hereby granted, free of charge, to any person obtaining
58
+ a copy of this software and associated documentation files (the
59
+ 'Software'), to deal in the Software without restriction, including
60
+ without limitation the rights to use, copy, modify, merge, publish,
61
+ distribute, sublicense, and/or sell copies of the Software, and to
62
+ permit persons to whom the Software is furnished to do so, subject to
63
+ the following conditions:
64
+
65
+ The above copyright notice and this permission notice shall be
66
+ included in all copies or substantial portions of the Software.
67
+
68
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
69
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
70
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
71
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
72
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
73
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
74
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
75
+
76
+ == CREDITS
77
+
78
+ Stuff here I may have taken from:
79
+
80
+ http://www.softicons.com/application-icons/ruby-programming-icons-by-ahmad-galal/ruby-gtk-icon
81
+ http://zetcode.com/gui/rubygtk/
data/bin/gtk3app ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require 'gtk3app'
3
+ Gtk3App.main
data/data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.0
data/data/logo.png ADDED
Binary file
data/data/ruby.png ADDED
Binary file
@@ -0,0 +1,127 @@
1
+ module Gtk3App
2
+
3
+ # The gem's root directory
4
+ APPDIR = File.dirname File.dirname __dir__
5
+
6
+ a0 = Rafini::Empty::ARRAY
7
+ h0 = Rafini::Empty::HASH
8
+ s0 = Rafini::Empty::STRING
9
+
10
+ # CONFIG follows the following conventions:
11
+ # * Strings and numbers are mixed case.
12
+ # * Arrays are all upper case (may except for arrays of length 1, see Such).
13
+ # * Hashes are all lower case.
14
+ # * Lower case bang! keys have special meaning in Such.
15
+ # * Note that method keys may have mixed case as the method itself.
16
+ CONFIG = {
17
+ # The command line help in standard form.
18
+ Help: <<HELP,
19
+
20
+ This is the gtk3app stub.
21
+
22
+ Usage:
23
+
24
+ gtk3app [options] appname ...
25
+
26
+ Options:
27
+
28
+ -h --help Show this help and exit.
29
+ -v --version Show the version and exit.
30
+ -q --quiet Set $VERBOSE to nil.
31
+ -V --verbose Set $VERBOSE to true.
32
+ -d --debug Set $DEBUG to true.
33
+
34
+ appname The name of the application to be run.
35
+
36
+ HELP
37
+
38
+ # The command to open with default application
39
+ Open: 'gnome-open',
40
+
41
+ Slots: 13, # The number of minime slots
42
+ SlotsDBM: "#{XDG['CACHE']}/gtk3app/slots.sdbm", # slot management database
43
+ SLOTS_OFFSET: [0,0], # The offset from the bottom right corner
44
+ SlotsScale: 25, # The size of the slots
45
+
46
+ thing: { # The application MAY overwrite some these
47
+
48
+ # Main window configuration
49
+ WINDOW: a0, # Window.new's parameters
50
+ window: h0, # window settings
51
+ window!: [:WINDOW,:window],
52
+
53
+ # Minime's configuration
54
+ # Application SHOULD NOT modify these.
55
+ MINI: a0,
56
+ mini: {
57
+ set_decorated: false,
58
+ minime: a0,
59
+ },
60
+ mini!: [:MINI,:mini],
61
+
62
+ # Fullscreen app-menu item
63
+ # Application MAY modify :FS for language
64
+ FS: ['Full Screen'],
65
+ fs: h0,
66
+ fs!: [:FS, :fs, 'activate'],
67
+
68
+ # About app-menu item
69
+ # Application MAY modify :ABOUT for language
70
+ # Application SHOULD modify :about_dialog
71
+ ABOUT: ['About'],
72
+ about: h0,
73
+ about!: [:ABOUT, :about, 'activate'],
74
+ about_dialog: {
75
+ set_program_name: 'Gtk3App',
76
+ set_version: VERSION,
77
+ set_copyright: '(c) 2014 CarlosJHR64',
78
+ set_comments: 'A Gtk3 Application Stub',
79
+ set_website: 'https://github.com/carlosjhr64/gtk3app',
80
+ set_website_label: 'See it at GitHub!',
81
+ },
82
+ # Application SHOULD modify LOGO to use it's own logo image.
83
+ Logo: "#{XDG['DATA']}/gtk3app/logo.png",
84
+ # Application SHOULD modify :HelpFile to their own help page.
85
+ HelpFile: 'https://github.com/carlosjhr64/gtk3app',
86
+ # By convention, I'm using mix case for simple String configurations in here thing.
87
+
88
+ # Help app-menu item
89
+ # Application MAY modify :HELP for language
90
+ HELP: ['Help'],
91
+ help: h0,
92
+ help!: [:HELP, :help, 'activate'],
93
+
94
+ # Minime's app-menu item.
95
+ # Application MAY modify :MINIME for language.
96
+ MINIME: ['Mini-me'],
97
+ minime: h0,
98
+ minime!: [:MINIME, :minime, 'activate'],
99
+
100
+ # Quit app-menu item.
101
+ # Application MAY modify :QUIT for language.
102
+ QUIT: ['Quit'],
103
+ quit: h0,
104
+ quit!: [:QUIT, :quit, 'activate'],
105
+
106
+ # The app menu configuration.
107
+ # The application MAY ONLY modify app_menu.append_menu_item
108
+ # by removing un-wanted app menu items.
109
+ APP_MENU: a0,
110
+ app_menu: {
111
+ append_menu_item: [:fs!, :about!, :help!, :minime!, :quit!],
112
+ },
113
+ app_menu!: [:APP_MENU, :app_menu, s0],
114
+
115
+ # Minime's app-menu configuration.
116
+ # The application SHOULD NOT modify
117
+ # (the application will have the opportunity later to modify
118
+ # minime's app-menu directly).
119
+ MINI_MENU: a0,
120
+ mini_menu: {
121
+ append_menu_item: [:quit!],
122
+ },
123
+ mini_menu!: [:MINI_MENU, :mini_menu, s0],
124
+
125
+ },
126
+ }
127
+ end
@@ -0,0 +1,87 @@
1
+ module Gtk3App
2
+ using Rafini::String
3
+ using Rafini::Hash
4
+ using Rafini::Exception
5
+
6
+ UserSpace::OPTIONS[:parser] = YAML
7
+ UserSpace::OPTIONS[:ext] = 'yml'
8
+
9
+ def self.config(mod)
10
+ # Let's get NameErrors out of the way first
11
+ appdir = mod::APPDIR
12
+ config = mod::CONFIG
13
+ version = mod::VERSION
14
+ # Create the directory name for UserSpace.
15
+ appname = mod.name.downcase
16
+ appname.prepend('gtk3app/') unless mod==Gtk3App
17
+ # UserSpace does its thing...
18
+ user_space = UserSpace.new(appname: appname, appdir: appdir)
19
+ user_space.install unless user_space.version == version
20
+ user_space.configures(config)
21
+ rescue NameError
22
+ $!.puts 'Application is not using APPDIR, VERSION, or CONFIG.'
23
+ end
24
+
25
+ def self.options=(h)
26
+ @@options=h
27
+ end
28
+
29
+ def self.options(mod=nil)
30
+ if mod
31
+ version, help = mod::VERSION, mod::CONFIG[:Help]
32
+ if help
33
+ # HelpParser enforces -h and -v for help and version respectively.
34
+ # To that we add -V, -q, and -d for verbose, quiet, and debug respectively.
35
+ options = HELP_PARSER::HelpParser.new(version, help, {verbose: :V, quiet: :q, debug: :d})
36
+ $VERBOSE = (options[:q])? nil : (options[:V])? true : false
37
+ $DEBUG = true if options[:d] # Don't get to turn off debug
38
+ mod.options = options
39
+ end
40
+ else
41
+ @@options
42
+ end
43
+ rescue NoMethodError
44
+ $!.puts 'Application is not providing options setter.'
45
+ rescue NameError
46
+ $!.puts 'Application is not using VERSION or CONFIG.'
47
+ end
48
+
49
+ def self.init(mod=Gtk3App)
50
+ Gtk3App.config mod
51
+ Gtk3App.options mod
52
+ if thing = mod::CONFIG[:thing]
53
+ Such::Thing.configure thing
54
+ end
55
+ rescue NameError
56
+ $!.puts 'Application is not using CONFIG.'
57
+ end
58
+
59
+ def self.run(appname)
60
+ require appname
61
+ app = Object.const_get File.basename(appname, '.rb').camelize
62
+ Gtk3App.init app
63
+ Program.new app
64
+ Gtk.main
65
+ end
66
+
67
+ def self.main
68
+ begin
69
+ Gtk3App.init
70
+ appname = ARGV.shift
71
+ if appname
72
+ Gtk3App.run appname
73
+ else
74
+ puts CONFIG[:Help]
75
+ end
76
+ rescue HELP_PARSER::UsageException
77
+ puts $!.message
78
+ exit 0
79
+ rescue HELP_PARSER::UsageError
80
+ $stderr.puts $!.message
81
+ exit 64
82
+ rescue StandardError
83
+ $!.puts
84
+ exit 1
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,73 @@
1
+ module Gtk3App
2
+ class Program
3
+ using Rafini::Array
4
+
5
+ def initialize(app)
6
+ Widget::MainWindow.set_icon Such::Thing::PARAMETERS[:Logo]
7
+
8
+ @window = Widget::MainWindow.new(:window!, 'delete-event'){quit!}
9
+
10
+ @app_menu = Widget::AppMenu.new(@window, :app_menu!) do |w,*_,s|
11
+ self.method(w.key).call if s=='activate'
12
+ end
13
+
14
+ @fs = false
15
+
16
+ @mini_menu = nil
17
+ if @app_menu.children.which{|item| item.key==:minime!}
18
+ @mini = Widget::MainWindow.new(:mini, 'delete-event'){quit!}
19
+ @mini_menu = Widget::AppMenu.new(@mini, :mini_menu!) do |w,*_,s|
20
+ self.method(w.key).call if s=='activate'
21
+ minime! if s=='button_press_event'
22
+ end
23
+ end
24
+
25
+ case app.method(:run).arity
26
+ when 1 then app.run(@window)
27
+ when 2 then app.run(@window, @mini_menu)
28
+ else raise "Application run method should have 2 parameters."
29
+ end
30
+ end
31
+
32
+ def fs!
33
+ @fs ? @window.unfullscreen : @window.fullscreen
34
+ @fs = !@fs
35
+ end
36
+
37
+ def about!
38
+ about = Such::AboutDialog.new :about_dialog
39
+ about.set_logo Widget::MainWindow.icon
40
+ about.run
41
+ about.destroy
42
+ end
43
+
44
+ def help!
45
+ system "#{CONFIG[:Open]} '#{Such::Thing::PARAMETERS[:HelpFile]}'"
46
+ end
47
+
48
+ def minime!
49
+ if @window.visible?
50
+ @slot = Slot.get
51
+ if @slot
52
+ s = CONFIG[:SlotsScale]
53
+ x, y = CONFIG[:SLOTS_OFFSET]
54
+ w, h = Gdk.screen_width, Gdk.screen_height
55
+ @mini.move(w-@slot*s+x, h-s+y)
56
+ @mini.keep_above=true
57
+ @window.hide
58
+ @mini.show
59
+ end
60
+ else
61
+ Slot.release(@slot) if @slot
62
+ @mini.hide
63
+ @window.show
64
+ end
65
+ end
66
+
67
+ def quit!
68
+ Slot.release(@slot) if @slot
69
+ Gtk.main_quit
70
+ end
71
+
72
+ end
73
+ end
@@ -0,0 +1,31 @@
1
+ module Gtk3App
2
+ module Slot
3
+ using Rafini::Array
4
+
5
+ def self.dbm
6
+ SDBM.open(CONFIG[:SlotsDBM]){|db|yield(db)}
7
+ end
8
+
9
+ def self.numbers
10
+ 1.upto(CONFIG[:Slots]){|n|yield(n.to_s)}
11
+ end
12
+
13
+ def self.get
14
+ alive = Sys::ProcTable.ps.select{|p|p.cmdline=~/\bruby\b.*\bgtk3app\b/}.map{|p|p.pid.to_s}.is(true)
15
+ Slot.dbm do |db|
16
+ Slot.numbers do |slot|
17
+ unless alive[db[slot]]
18
+ db[slot]=$$.to_s
19
+ return slot.to_i
20
+ end
21
+ end
22
+ end
23
+ return nil
24
+ end
25
+
26
+ def self.release(slot)
27
+ Slot.dbm{|db|db.delete(slot.to_s)}
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,3 @@
1
+ module Gtk3App
2
+ VERSION = '0.0.0'
3
+ end
@@ -0,0 +1,55 @@
1
+ module Gtk3App
2
+ module Widget
3
+
4
+ class MenuItem < Such::MenuItem
5
+ attr_accessor :key
6
+ end
7
+
8
+ class Menu < Such::Menu
9
+ def append_menu_item(key, &block)
10
+ item = MenuItem.new(self, key, &block)
11
+ item.key = key
12
+ item.show
13
+ end
14
+ end
15
+
16
+ class AppMenu < Menu
17
+ def initialize(window, *par, &block)
18
+ @block = block
19
+ window.add_events(Gdk::Event::BUTTON_PRESS_MASK)
20
+ window.signal_connect('button_press_event') do |w,e|
21
+ if e.button == 3
22
+ self.popup(nil, nil, 3, e.time)
23
+ else
24
+ block.call(w,e,'button_press_event')
25
+ end
26
+ end
27
+ super(*par)
28
+ end
29
+
30
+ def append_menu_item(key)
31
+ block_given? ? super : super(key, &@block)
32
+ end
33
+ end
34
+
35
+ class MainWindow < Such::Window
36
+ def self.set_icon(file)
37
+ @@icon = Gdk::Pixbuf.new(file: file)
38
+ end
39
+
40
+ def self.icon
41
+ @@icon
42
+ end
43
+
44
+ def initialize(*par, &block)
45
+ super(*par, &block)
46
+ self.set_icon MainWindow.icon
47
+ end
48
+
49
+ def minime(x=CONFIG[:SlotsScale])
50
+ self.set_default_size(x,x)
51
+ self.add Gtk::Image.new(pixbuf: MainWindow.icon.scale(x,x)).show
52
+ end
53
+ end
54
+ end
55
+ end
data/lib/gtk3app.rb ADDED
@@ -0,0 +1,28 @@
1
+ # Standard Libraries
2
+ require 'yaml'
3
+ require 'sdbm'
4
+
5
+ # Supporting Gems
6
+ require 'help_parser'
7
+ require 'user_space'
8
+ require 'rafini'
9
+ require 'sys/proctable'
10
+
11
+ # Workhorse Gems
12
+ require 'gtk3'
13
+ require 'such'
14
+ Such::Things.gtk_widget
15
+
16
+ ### Gtk3App ###
17
+ # Configuration
18
+ require 'gtk3app/version.rb'
19
+ require 'gtk3app/config.rb'
20
+ # Custom Widgets
21
+ require 'gtk3app/widget/widgets.rb'
22
+ # Program Flow
23
+ require 'gtk3app/slot.rb'
24
+ require 'gtk3app/program.rb'
25
+ require 'gtk3app/gtk3app.rb'
26
+
27
+ # Requires:
28
+ #`ruby`
metadata ADDED
@@ -0,0 +1,185 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gtk3app
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - carlosjhr64
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-11-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: help_parser
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.2'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.2.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.2'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.2.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: user_space
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.0'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 2.0.1
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.0'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.0.1
53
+ - !ruby/object:Gem::Dependency
54
+ name: rafini
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '0.3'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 0.3.0
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '0.3'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 0.3.0
73
+ - !ruby/object:Gem::Dependency
74
+ name: sys-proctable
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '0.9'
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 0.9.4
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.9'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 0.9.4
93
+ - !ruby/object:Gem::Dependency
94
+ name: gtk3
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: '2.2'
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 2.2.0
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '2.2'
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 2.2.0
113
+ - !ruby/object:Gem::Dependency
114
+ name: such
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: '0.2'
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: 0.2.0
123
+ type: :runtime
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '0.2'
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: 0.2.0
133
+ description: |
134
+ _Gtk3App_ provides a _Gtk3_ application stub.
135
+
136
+ It autmatically provides for command line options parsing, user configuration, and minime windows.
137
+ email: carlosjhr64@gmail.com
138
+ executables:
139
+ - gtk3app
140
+ extensions: []
141
+ extra_rdoc_files:
142
+ - README.rdoc
143
+ files:
144
+ - README.rdoc
145
+ - bin/gtk3app
146
+ - data/VERSION
147
+ - data/logo.png
148
+ - data/ruby.png
149
+ - lib/gtk3app.rb
150
+ - lib/gtk3app/config.rb
151
+ - lib/gtk3app/gtk3app.rb
152
+ - lib/gtk3app/program.rb
153
+ - lib/gtk3app/slot.rb
154
+ - lib/gtk3app/version.rb
155
+ - lib/gtk3app/widget/widgets.rb
156
+ homepage: https://github.com/carlosjhr64/gtk3app
157
+ licenses:
158
+ - MIT
159
+ metadata: {}
160
+ post_install_message:
161
+ rdoc_options:
162
+ - "--main"
163
+ - README.rdoc
164
+ require_paths:
165
+ - lib
166
+ required_ruby_version: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ version: '0'
171
+ required_rubygems_version: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ requirements:
177
+ - 'ruby: ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-linux]'
178
+ - 'system: linux/bash'
179
+ rubyforge_project:
180
+ rubygems_version: 2.4.1
181
+ signing_key:
182
+ specification_version: 4
183
+ summary: _Gtk3App_ provides a _Gtk3_ application stub.
184
+ test_files: []
185
+ has_rdoc: