gtk3app 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.rdoc +81 -0
- data/bin/gtk3app +3 -0
- data/data/VERSION +1 -0
- data/data/logo.png +0 -0
- data/data/ruby.png +0 -0
- data/lib/gtk3app/config.rb +127 -0
- data/lib/gtk3app/gtk3app.rb +87 -0
- data/lib/gtk3app/program.rb +73 -0
- data/lib/gtk3app/slot.rb +31 -0
- data/lib/gtk3app/version.rb +3 -0
- data/lib/gtk3app/widget/widgets.rb +55 -0
- data/lib/gtk3app.rb +28 -0
- metadata +185 -0
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
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
|
data/lib/gtk3app/slot.rb
ADDED
@@ -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,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:
|