gluby-tk 0.1.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4ad90cf42c1588d6db4fb155446f3a1b886e4e3f
4
+ data.tar.gz: cc7d20313f3eb5d67ba937ab9e2609cf8427fd9e
5
+ SHA512:
6
+ metadata.gz: 660e04649c0488660ff22af4f726f5ee9345e31eeb24d0cc2c759c6fa6e6e3617d236b1c686e8b159557e063ae5a9cc58f7277c97d57a395fd9404d34bf5828e
7
+ data.tar.gz: b954a8701a12e455cda5fd7b431ec3bca205d50b67c05a164c739c6cf93302842c989f3ee9854cc6bae7f8e7e0f62e9645abe1b217d2c822312efe1fbc783118
@@ -0,0 +1,33 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'optparse'
4
+ require "gluby-tk"
5
+
6
+ # options = {}
7
+
8
+ # OptionParser.new do |parser|
9
+ # parser.on("--new APP_NAME") do |name|
10
+ # puts "HERE"
11
+ # options[:app_name] = name
12
+ # end
13
+ # end.parse!
14
+
15
+ # if options.keys.include?(:app_name)
16
+ # puts "time to create #{options[:app_name]}"
17
+ # else
18
+ # GlubyTK.hi
19
+ # end
20
+
21
+ puts "No commands specified - exiting now..." and exit(0) if ARGV.empty?
22
+
23
+ if ARGV[0] == "new"
24
+ if ARGV[1].nil? || ARGV[1].strip.empty?
25
+ puts "No app name specified - exiting now..."
26
+ exit(1)
27
+ else
28
+ puts "Creating #{ARGV[1]}..."
29
+ GlubyTK::Generator.create(ARGV[1])
30
+ end
31
+ end
32
+
33
+ exit(0)
@@ -0,0 +1,5 @@
1
+ class String
2
+ def humanize
3
+ self.gsub("_", " ").gsub("-", " ").split(" ").map(&:capitalize).join("")
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ require "gluby-tk/version"
2
+ require "gluby-tk/generator"
3
+ require "core_ext/string"
4
+
5
+ module GlubyTK
6
+
7
+ end
@@ -0,0 +1,132 @@
1
+ module GlubyTK
2
+ class Generator
3
+ def self.create app_name
4
+ puts "#{app_name} already exists!" and exit(1) if File.exist?(app_name)
5
+ root = "#{Dir.pwd}/#{app_name}"
6
+ directories = [
7
+ "assets",
8
+ "assets/images",
9
+ "interface",
10
+ "src",
11
+ "src/model",
12
+ "src/view",
13
+ "src/controller"
14
+ ]
15
+
16
+ templates = [
17
+ "src/application.rb",
18
+ ]
19
+
20
+ # Create root directory
21
+ Dir.mkdir "#{Dir.pwd}/#{app_name}"
22
+
23
+ # Create sub-directories
24
+ directories.each do |dir|
25
+ Dir.mkdir "#{root}/#{dir}"
26
+ end
27
+
28
+ # Create includes file
29
+ File.open("#{root}/src/includes.rb", "w+") { |file|
30
+ file.write(get_template_contents("includes.rb.template"))
31
+ }
32
+
33
+ # Create base module
34
+ module_name = "#{app_name.downcase}"
35
+ main_file = "#{root}/#{module_name}.rb"
36
+ File.open(main_file, "w+") { |file|
37
+ # file.write("module #{module_name.humanize}\n\nend\n")
38
+ file.write(get_template_contents("boot.rb.template"))
39
+ }
40
+
41
+ app_id = module_name.humanize.downcase
42
+ # Create Application
43
+ File.open("#{root}/src/application.rb", "w+") { |file|
44
+
45
+ file.write("class Application < Gtk::Application
46
+ def initialize
47
+ super('app.#{app_id}', :handles_open)
48
+ # TODO: Go to login screen if user is not ready logged in
49
+ signal_connect 'activate' do |application|
50
+ @window = ApplicationWindow.new(:application => application)
51
+ @window.present
52
+ end
53
+ end
54
+ end
55
+ ")
56
+ }
57
+
58
+ # Create ApplicationWindow
59
+ File.open("#{root}/src/view/application_window.rb", "w+") { |file|
60
+ file.write("class ApplicationWindow < Gtk::ApplicationWindow
61
+ type_register
62
+ class << self
63
+ def init
64
+ set_template(:resource => '/app/#{app_id}/ApplicationWindow.glade')
65
+ # Specify the any UI elements you need to reference in code using the glade ID
66
+ [\"main_box\", \"welcome_label\"].each{|child_id| bind_template_child(child_id)}
67
+ end
68
+ end
69
+
70
+ def initialize(application: application)
71
+ super(application: application)
72
+ end
73
+ end")
74
+ }
75
+
76
+ File.open("#{root}/interface/interface.gresource.xml", "w+") { |file|
77
+ file.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>
78
+ <gresources>
79
+ <gresource prefix=\"/app/#{app_id}\">
80
+ <file preprocess=\"xml-stripblanks\">ApplicationWindow.glade</file>
81
+ </gresource>
82
+ </gresources>
83
+ ")
84
+ }
85
+
86
+ File.open("#{root}/interface/ApplicationWindow.glade", "w+") { |file|
87
+ file.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>
88
+ <!-- Generated with glade 3.20.0 -->
89
+ <interface>
90
+ <requires lib=\"gtk+\" version=\"3.20\"/>
91
+ <template class=\"ApplicationWindow\" parent=\"GtkApplicationWindow\">
92
+ <property name=\"can_focus\">False</property>
93
+ <property name=\"window_position\">center</property>
94
+ <property name=\"icon_name\">computer</property>
95
+ <property name=\"gravity\">center</property>
96
+ <property name=\"show_menubar\">False</property>
97
+ <child>
98
+ <object class=\"GtkBox\" id=\"main_box\">
99
+ <property name=\"width_request\">300</property>
100
+ <property name=\"height_request\">300</property>
101
+ <property name=\"visible\">True</property>
102
+ <property name=\"can_focus\">False</property>
103
+ <property name=\"orientation\">vertical</property>
104
+ <child>
105
+ <object class=\"GtkLabel\" id=\"welcome_label\">
106
+ <property name=\"visible\">True</property>
107
+ <property name=\"can_focus\">False</property>
108
+ <property name=\"label\" translatable=\"yes\">Welcome to #{module_name.humanize}!\n\nBuilt with RGTK</property>
109
+ </object>
110
+ <packing>
111
+ <property name=\"expand\">False</property>
112
+ <property name=\"fill\">True</property>
113
+ <property name=\"position\">0</property>
114
+ </packing>
115
+ </child>
116
+ </object>
117
+ </child>
118
+ </template>
119
+ </interface>
120
+ ")
121
+ }
122
+ end
123
+
124
+ def self.get_template_contents(template_name)
125
+ File.read("#{template_dir}#{template_name}")
126
+ end
127
+
128
+ def self.template_dir
129
+ "#{File.dirname(File.dirname(File.dirname(__FILE__)))}/templates/"
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,3 @@
1
+ module GlubyTK
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,19 @@
1
+ $: << 'src'
2
+ require 'includes'
3
+
4
+ data_path = "#{File.expand_path(File.dirname(__FILE__))}/interface"
5
+
6
+ gresource_bin = "#{data_path}/interface.gresource"
7
+ gresource_xml = "#{data_path}/interface.gresource.xml"
8
+
9
+ system("glib-compile-resources", "--target", gresource_bin, "--sourcedir", File.dirname(gresource_xml), gresource_xml)
10
+
11
+ at_exit do
12
+ FileUtils.rm_f(gresource_bin)
13
+ end
14
+
15
+ resource = Gio::Resource.load(gresource_bin)
16
+ Gio::Resources.register(resource)
17
+
18
+ # Start application
19
+ Application.new.run
@@ -0,0 +1,10 @@
1
+ # Search paths
2
+ $: << 'src/model/'
3
+ $: << 'src/view/'
4
+ $: << 'src/controller/'
5
+ $: << 'src/helpers/'
6
+
7
+ # Dependencies
8
+ require 'gtk3'
9
+ require 'application_window'
10
+ require 'application'
metadata ADDED
@@ -0,0 +1,94 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gluby-tk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - i2097i
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-03-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.14'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.14'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: gtk3
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 3.1.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 3.1.1
55
+ description: A tool for creating GTK applications using Ruby and Glade
56
+ email:
57
+ - i2097i@hotmail.com
58
+ executables:
59
+ - gluby-tk
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - bin/gluby-tk
64
+ - lib/core_ext/string.rb
65
+ - lib/gluby-tk.rb
66
+ - lib/gluby-tk/generator.rb
67
+ - lib/gluby-tk/version.rb
68
+ - templates/boot.rb.template
69
+ - templates/includes.rb.template
70
+ homepage: https://github.com/i2097i/gluby-tk
71
+ licenses:
72
+ - MIT
73
+ metadata: {}
74
+ post_install_message:
75
+ rdoc_options: []
76
+ require_paths:
77
+ - lib
78
+ required_ruby_version: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ requirements: []
89
+ rubyforge_project:
90
+ rubygems_version: 2.5.1
91
+ signing_key:
92
+ specification_version: 4
93
+ summary: Ruby+GTK+Glade
94
+ test_files: []