gtk3app 0.0.0

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
+ 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: