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