knjrbfw 0.0.3

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.
Files changed (208) hide show
  1. data/.document +5 -0
  2. data/.rspec +1 -0
  3. data/Gemfile +14 -0
  4. data/Gemfile.lock +32 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.rdoc +19 -0
  7. data/Rakefile +49 -0
  8. data/VERSION +1 -0
  9. data/lib/knj/.gitignore +1 -0
  10. data/lib/knj/arrayext.rb +157 -0
  11. data/lib/knj/autoload/activesupport.rb +2 -0
  12. data/lib/knj/autoload/backups/facets_dictionary.rb +430 -0
  13. data/lib/knj/autoload/backups/parsedate.rb +53 -0
  14. data/lib/knj/autoload/backups/ping.rb +64 -0
  15. data/lib/knj/autoload/cinch.rb +2 -0
  16. data/lib/knj/autoload/erubis.rb +6 -0
  17. data/lib/knj/autoload/facebooker.rb +3 -0
  18. data/lib/knj/autoload/facets_dictionary.rb +7 -0
  19. data/lib/knj/autoload/gd2.rb +2 -0
  20. data/lib/knj/autoload/gettext.rb +9 -0
  21. data/lib/knj/autoload/gtk2.rb +5 -0
  22. data/lib/knj/autoload/json_autoload.rb +7 -0
  23. data/lib/knj/autoload/magick.rb +6 -0
  24. data/lib/knj/autoload/mysql.rb +6 -0
  25. data/lib/knj/autoload/parsedate.rb +1 -0
  26. data/lib/knj/autoload/ping.rb +64 -0
  27. data/lib/knj/autoload/rexml.rb +12 -0
  28. data/lib/knj/autoload/soap.rb +3 -0
  29. data/lib/knj/autoload/sqlite3.rb +6 -0
  30. data/lib/knj/autoload/tmail.rb +6 -0
  31. data/lib/knj/autoload/twitter.rb +2 -0
  32. data/lib/knj/autoload/xmlsimple.rb +6 -0
  33. data/lib/knj/autoload/zip.rb +6 -0
  34. data/lib/knj/autoload.rb +136 -0
  35. data/lib/knj/compiler.rb +53 -0
  36. data/lib/knj/cpufreq.rb +40 -0
  37. data/lib/knj/datarow.rb +256 -0
  38. data/lib/knj/datestamp.rb +91 -0
  39. data/lib/knj/datet.rb +448 -0
  40. data/lib/knj/degulesider.rb +46 -0
  41. data/lib/knj/erb/apache_knjerb.conf +8 -0
  42. data/lib/knj/erb/cache/README +1 -0
  43. data/lib/knj/erb/erb.rb +21 -0
  44. data/lib/knj/erb/erb_1.9.rb +13 -0
  45. data/lib/knj/erb/erb_cache_clean.rb +20 -0
  46. data/lib/knj/erb/erb_fcgi.rb +44 -0
  47. data/lib/knj/erb/erb_fcgi_1.9.rb +44 -0
  48. data/lib/knj/erb/erb_fcgi_jruby.rb +7 -0
  49. data/lib/knj/erb/erb_jruby.rb +22 -0
  50. data/lib/knj/erb/include.rb +248 -0
  51. data/lib/knj/errors.rb +19 -0
  52. data/lib/knj/eruby.rb +224 -0
  53. data/lib/knj/event_filemod.rb +53 -0
  54. data/lib/knj/event_handler.rb +69 -0
  55. data/lib/knj/exchangerates.rb +39 -0
  56. data/lib/knj/ext/webrick.rb +31 -0
  57. data/lib/knj/filesystem.rb +8 -0
  58. data/lib/knj/fs/drivers/filesystem.rb +14 -0
  59. data/lib/knj/fs/drivers/ftp.rb +33 -0
  60. data/lib/knj/fs/drivers/ssh.rb +28 -0
  61. data/lib/knj/fs/fs.rb +36 -0
  62. data/lib/knj/gettext_fallback.rb +17 -0
  63. data/lib/knj/gettext_threadded.rb +77 -0
  64. data/lib/knj/google_sitemap.rb +59 -0
  65. data/lib/knj/gtk2.rb +277 -0
  66. data/lib/knj/gtk2_cb.rb +85 -0
  67. data/lib/knj/gtk2_menu.rb +57 -0
  68. data/lib/knj/gtk2_statuswindow.rb +64 -0
  69. data/lib/knj/gtk2_tv.rb +63 -0
  70. data/lib/knj/hash_methods.rb +37 -0
  71. data/lib/knj/http.rb +190 -0
  72. data/lib/knj/includes/appserver_cli.rb +39 -0
  73. data/lib/knj/ip2location.rb +22 -0
  74. data/lib/knj/ironruby-gtk2/button.rb +19 -0
  75. data/lib/knj/ironruby-gtk2/dialog.rb +44 -0
  76. data/lib/knj/ironruby-gtk2/entry.rb +9 -0
  77. data/lib/knj/ironruby-gtk2/gdk_event.rb +3 -0
  78. data/lib/knj/ironruby-gtk2/gdk_eventbutton.rb +13 -0
  79. data/lib/knj/ironruby-gtk2/gdk_pixbuf.rb +11 -0
  80. data/lib/knj/ironruby-gtk2/gladexml.rb +104 -0
  81. data/lib/knj/ironruby-gtk2/glib.rb +15 -0
  82. data/lib/knj/ironruby-gtk2/gtk2.rb +148 -0
  83. data/lib/knj/ironruby-gtk2/gtk_builder.rb +31 -0
  84. data/lib/knj/ironruby-gtk2/gtk_cellrenderertext.rb +5 -0
  85. data/lib/knj/ironruby-gtk2/gtk_combobox.rb +19 -0
  86. data/lib/knj/ironruby-gtk2/gtk_filechooserbutton.rb +5 -0
  87. data/lib/knj/ironruby-gtk2/gtk_liststore.rb +18 -0
  88. data/lib/knj/ironruby-gtk2/gtk_menu.rb +5 -0
  89. data/lib/knj/ironruby-gtk2/gtk_menuitem.rb +7 -0
  90. data/lib/knj/ironruby-gtk2/gtk_statusicon.rb +8 -0
  91. data/lib/knj/ironruby-gtk2/gtk_treeiter.rb +24 -0
  92. data/lib/knj/ironruby-gtk2/gtk_treeselection.rb +16 -0
  93. data/lib/knj/ironruby-gtk2/gtk_treeview.rb +19 -0
  94. data/lib/knj/ironruby-gtk2/gtk_treeviewcolumn.rb +32 -0
  95. data/lib/knj/ironruby-gtk2/iconsize.rb +3 -0
  96. data/lib/knj/ironruby-gtk2/image.rb +15 -0
  97. data/lib/knj/ironruby-gtk2/label.rb +19 -0
  98. data/lib/knj/ironruby-gtk2/stock.rb +4 -0
  99. data/lib/knj/ironruby-gtk2/tests/test.glade +15 -0
  100. data/lib/knj/ironruby-gtk2/tests/test_2.rb +22 -0
  101. data/lib/knj/ironruby-gtk2/tests/test_ironruby_window.rb +47 -0
  102. data/lib/knj/ironruby-gtk2/vbox.rb +5 -0
  103. data/lib/knj/ironruby-gtk2/window.rb +23 -0
  104. data/lib/knj/jruby-gtk2/builder/test_builder.glade +43 -0
  105. data/lib/knj/jruby-gtk2/builder/test_builder.rb +19 -0
  106. data/lib/knj/jruby-gtk2/builder/test_builder.ui +43 -0
  107. data/lib/knj/jruby-gtk2/builder.rb +27 -0
  108. data/lib/knj/jruby-gtk2/cellrenderertext.rb +12 -0
  109. data/lib/knj/jruby-gtk2/checkbutton.rb +3 -0
  110. data/lib/knj/jruby-gtk2/combobox.rb +29 -0
  111. data/lib/knj/jruby-gtk2/dialog.rb +44 -0
  112. data/lib/knj/jruby-gtk2/eventbutton.rb +21 -0
  113. data/lib/knj/jruby-gtk2/gladexml.rb +99 -0
  114. data/lib/knj/jruby-gtk2/gtk-4.0.jar +0 -0
  115. data/lib/knj/jruby-gtk2/gtk2.rb +246 -0
  116. data/lib/knj/jruby-gtk2/hbox.rb +10 -0
  117. data/lib/knj/jruby-gtk2/iconsize.rb +5 -0
  118. data/lib/knj/jruby-gtk2/image.rb +10 -0
  119. data/lib/knj/jruby-gtk2/liststore.rb +56 -0
  120. data/lib/knj/jruby-gtk2/menu.rb +40 -0
  121. data/lib/knj/jruby-gtk2/progressbar.rb +12 -0
  122. data/lib/knj/jruby-gtk2/statusicon.rb +8 -0
  123. data/lib/knj/jruby-gtk2/stock.rb +8 -0
  124. data/lib/knj/jruby-gtk2/tests/test_glade_window.glade +163 -0
  125. data/lib/knj/jruby-gtk2/tests/test_glade_window.rb +47 -0
  126. data/lib/knj/jruby-gtk2/tests/test_normal_window.rb +17 -0
  127. data/lib/knj/jruby-gtk2/tests/test_trayicon.png +0 -0
  128. data/lib/knj/jruby-gtk2/tests/test_trayicon.rb +18 -0
  129. data/lib/knj/jruby-gtk2/treeview.rb +105 -0
  130. data/lib/knj/jruby-gtk2/vbox.rb +12 -0
  131. data/lib/knj/jruby-gtk2/window.rb +11 -0
  132. data/lib/knj/jruby_compiler.rb +14 -0
  133. data/lib/knj/knj.rb +19 -0
  134. data/lib/knj/knj_controller.rb +13 -0
  135. data/lib/knj/knjdb/dbtime.rb +30 -0
  136. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql.rb +327 -0
  137. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_columns.rb +130 -0
  138. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_indexes.rb +30 -0
  139. data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb +255 -0
  140. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3.rb +93 -0
  141. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_columns.rb +151 -0
  142. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_indexes.rb +29 -0
  143. data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb +300 -0
  144. data/lib/knj/knjdb/libknjdb.rb +438 -0
  145. data/lib/knj/knjdb/libknjdb_java_sqlite3.rb +83 -0
  146. data/lib/knj/knjdb/libknjdb_row.rb +149 -0
  147. data/lib/knj/knjdb/libknjdb_sqlite3_ironruby.rb +69 -0
  148. data/lib/knj/knjdb/mysql-connector-java-5.1.13-bin.jar +0 -0
  149. data/lib/knj/knjdb/sqlitejdbc-v056.jar +0 -0
  150. data/lib/knj/libqt.rb +75 -0
  151. data/lib/knj/libqt_window.rb +10 -0
  152. data/lib/knj/locale_strings.rb +3 -0
  153. data/lib/knj/locales.rb +54 -0
  154. data/lib/knj/maemo/fremantle-calendar/fremantle-calendar.rb +56 -0
  155. data/lib/knj/mail.rb +75 -0
  156. data/lib/knj/mailobj.rb +82 -0
  157. data/lib/knj/mount.rb +115 -0
  158. data/lib/knj/notify.rb +13 -0
  159. data/lib/knj/nvidia_settings.rb +45 -0
  160. data/lib/knj/objects.rb +731 -0
  161. data/lib/knj/opts.rb +38 -0
  162. data/lib/knj/os.rb +158 -0
  163. data/lib/knj/php.rb +717 -0
  164. data/lib/knj/php_parser/arguments.rb +5 -0
  165. data/lib/knj/php_parser/functions.rb +97 -0
  166. data/lib/knj/php_parser/php_parser.rb +99 -0
  167. data/lib/knj/php_parser/tests/test.rb +12 -0
  168. data/lib/knj/php_parser/tests/test_function.php +8 -0
  169. data/lib/knj/php_parser/tests/test_function_run.rb +19 -0
  170. data/lib/knj/power_manager.rb +31 -0
  171. data/lib/knj/rand.rb +10 -0
  172. data/lib/knj/retry.rb +71 -0
  173. data/lib/knj/rhodes/mutex.rb +11 -0
  174. data/lib/knj/rhodes/rhodes.js +3 -0
  175. data/lib/knj/rhodes/rhodes.rb +11 -0
  176. data/lib/knj/rsvgbin.rb +20 -0
  177. data/lib/knj/scripts/degulesider.rb +12 -0
  178. data/lib/knj/scripts/filesearch.rb +51 -0
  179. data/lib/knj/scripts/ip2location.rb +12 -0
  180. data/lib/knj/scripts/keepalive.rb +6 -0
  181. data/lib/knj/scripts/svn_merge.rb +29 -0
  182. data/lib/knj/scripts/upgrade_knjrbfw_checker.rb +41 -0
  183. data/lib/knj/sms.rb +54 -0
  184. data/lib/knj/sshrobot/sshrobot.rb +93 -0
  185. data/lib/knj/strings.rb +65 -0
  186. data/lib/knj/sysuser.rb +27 -0
  187. data/lib/knj/tests/compiler/compiler_test.rb +13 -0
  188. data/lib/knj/tests/compiler/compiler_test_file.rb +62 -0
  189. data/lib/knj/tests/test_degulesider.rb +11 -0
  190. data/lib/knj/tests/test_mount.rb +30 -0
  191. data/lib/knj/tests/test_retry.rb +30 -0
  192. data/lib/knj/thread.rb +32 -0
  193. data/lib/knj/thread2.rb +47 -0
  194. data/lib/knj/threadhandler.rb +130 -0
  195. data/lib/knj/threadpool.rb +177 -0
  196. data/lib/knj/translations.rb +139 -0
  197. data/lib/knj/unix_proc.rb +82 -0
  198. data/lib/knj/web.rb +932 -0
  199. data/lib/knj/webscripts/image.rhtml +82 -0
  200. data/lib/knj/win.rb +4 -0
  201. data/lib/knj/win_registry.rb +60 -0
  202. data/lib/knj/win_tightvnc.rb +127 -0
  203. data/lib/knj/x11vnc.rb +48 -0
  204. data/lib/knj/youtube.rb +38 -0
  205. data/lib/knjrbfw.rb +4 -0
  206. data/spec/knjrbfw_spec.rb +269 -0
  207. data/spec/spec_helper.rb +12 -0
  208. metadata +336 -0
@@ -0,0 +1,29 @@
1
+ class Gtk::ComboBox
2
+ def pack_start(widget, arg1, arg2 = false)
3
+ #widget is useually a Gtk::CellRendererText which is started by this way in Java GTK.
4
+ @renderer = widget
5
+ widget.init(self)
6
+
7
+ if self.model
8
+ widget.text = self.model.dcol[0]
9
+ @renderer_set = true
10
+ end
11
+ end
12
+
13
+ def add_attribute(arg1, arg2, arg3)
14
+ #do nothing - this method does not exist on Java GTK's ComboBox.
15
+ end
16
+
17
+ def model=(newmodel)
18
+ @model = newmodel
19
+ @ob.model = newmodel.ob
20
+
21
+ if !@renderer_set
22
+ @renderer.text = self.model.dcol[0]
23
+ end
24
+ end
25
+
26
+ def model
27
+ return @model
28
+ end
29
+ end
@@ -0,0 +1,44 @@
1
+ Gtk.events << ["Dialog", "response", org.gnome.gtk.Dialog::Response, :onResponse, nil]
2
+
3
+ class Gtk::Dialog
4
+ RESPONSE_OK = org.gnome.gtk.ResponseType::OK
5
+ RESPONSE_YES = org.gnome.gtk.ResponseType::YES
6
+ RESPONSE_NO = org.gnome.gtk.ResponseType::NO
7
+ RESPONSE_CANCEL = org.gnome.gtk.ResponseType::CANCEL
8
+ RESPONSE_CLOSE = org.gnome.gtk.ResponseType::CLOSE
9
+ RESPONSE_DELETE_EVENT = org.gnome.gtk.ResponseType::DELETE_EVENT
10
+ MODAL = true
11
+
12
+ def initialize(title = nil, win_parent = nil, modal = nil, *buttons)
13
+ if Gtk.takeob
14
+ @ob = Gtk.takeob
15
+ Gtk.takeob = nil
16
+ else
17
+ @ob = Gtk.evalob("org.gnome.gtk.Dialog").new(title, win_parent, modal)
18
+
19
+ buttons.each do |button|
20
+ self.add_button(button[0], button[1])
21
+ end
22
+
23
+ self.signal_connect("response") do
24
+ self.destroy
25
+ end
26
+ end
27
+ end
28
+
29
+ def vbox
30
+ return self
31
+ end
32
+
33
+ def has_separator=(newval)
34
+ # FIXME: No way to do this in Java-GTK?
35
+ end
36
+
37
+ def destroy
38
+ if @ob
39
+ @ob.hide
40
+ end
41
+
42
+ @ob = nil
43
+ end
44
+ end
@@ -0,0 +1,21 @@
1
+ class Gdk::EventButton
2
+ def initialize(eventtype)
3
+ if Gtk.takeob
4
+ @ob = Gtk.takeob
5
+ Gtk.takeob = nil
6
+ else
7
+ splitted = self.class.to_s.split("::")
8
+ classname = splitted[splitted.length - 1]
9
+ class_spawn = Gtk.evalob("org.gnome.gdk." + classname)
10
+ #@ob = class_spawn.new
11
+ end
12
+ end
13
+
14
+ def button
15
+ return 2
16
+ end
17
+
18
+ def time
19
+ return 0
20
+ end
21
+ end
@@ -0,0 +1,99 @@
1
+ class GladeXML
2
+ attr_accessor :block
3
+ attr_reader :data
4
+
5
+ def initialize(filename, &block)
6
+ @obs = {}
7
+
8
+ if filename.index("interface>") == nil
9
+ cont = File.read(filename)
10
+ @data = XmlSimple.xml_in(cont)
11
+ window_name = self.find_window(data)
12
+ @glade = org.gnome.glade.Glade::parse(filename, window_name)
13
+ else
14
+ cont = filename
15
+ @data = XmlSimple.xml_in(cont)
16
+ window_name = self.find_window(data)
17
+ Knj::Php.file_put_contents("temp.glade", cont)
18
+ @glade = org.gnome.glade.Glade::parse("temp.glade", window_name)
19
+ FileUtils.rm("temp.glade")
20
+ end
21
+
22
+ if block_given?
23
+ @block = block
24
+ self.auto_connect(@data)
25
+ end
26
+ end
27
+
28
+ def auto_connect(data)
29
+ data.each do |item|
30
+ if item[0] == "widget"
31
+ if item[1][0]["signal"]
32
+ tha_class = item[1][0]["class"]
33
+ tha_id = item[1][0]["id"]
34
+ func_name = item[1][0]["signal"][0]["handler"]
35
+ name = item[1][0]["signal"][0]["name"]
36
+
37
+ method = @block.call(func_name)
38
+
39
+ object = self.get_widget(tha_id)
40
+ object.signal_connect(name) do |*paras|
41
+ #Convert arguments to fit the arity-count of the Proc-object (the block, the method or whatever you want to call it).
42
+ newparas = []
43
+ 0.upto(method.arity - 1) do |number|
44
+ if paras[number]
45
+ newparas << paras[number]
46
+ end
47
+ end
48
+
49
+ method.call(*newparas)
50
+ end
51
+ end
52
+ end
53
+
54
+ if item.is_a?(Array) or item.is_a?(Hash)
55
+ self.auto_connect(item)
56
+ end
57
+ end
58
+ end
59
+
60
+ def find_window(data)
61
+ data.each do |item|
62
+ if item[0] == "widget"
63
+ class_str = item[1][0]["class"]
64
+
65
+ if class_str == "GtkWindow"
66
+ ret = item[1][0]["id"]
67
+ if ret.is_a?(String)
68
+ return ret
69
+ end
70
+ end
71
+ elsif item.is_a?(Array) or item.is_a?(Hash)
72
+ ret = self.find_window(item)
73
+ if ret.is_a?(String)
74
+ return ret
75
+ end
76
+ end
77
+ end
78
+ end
79
+
80
+ def get_widget(wname)
81
+ if @obs[wname]
82
+ return @obs[wname]
83
+ end
84
+
85
+ widget = @glade.get_widget(wname)
86
+
87
+ Gtk.takeob = widget
88
+ splitted = widget.class.to_s.split("::")
89
+ conv_widget = Gtk.const_get(splitted.last).new
90
+
91
+ @obs[wname] = conv_widget
92
+
93
+ return conv_widget
94
+ end
95
+
96
+ def [](wname)
97
+ return self.get_widget(wname)
98
+ end
99
+ end
Binary file
@@ -0,0 +1,246 @@
1
+ require "java"
2
+ require File.dirname(__FILE__) + "/gtk-4.0.jar"
3
+
4
+ org.gnome.gtk.Gtk.init(nil)
5
+
6
+ @all = {
7
+ "Gtk" => ["Dialog", "Window", "HBox", "IconSize", "Image", "VBox", "Label", "Button", "ListStore", "TreeView", "TreeViewColumn", "TreeSelection",
8
+ "CellRendererText", "DataColumnString", "TreeIter", "StatusIcon", "Entry", "ProgressBar",
9
+ "Menu", "MenuItem", "CheckButton", "ComboBox", "FileChooserButton"
10
+ ],
11
+ "Gdk" => ["Pixbuf", "Event", "EventButton"]
12
+ }
13
+ @containers = {
14
+ "Gtk" => ["Window", "HBox", "VBox"]
15
+ }
16
+ @titles = {
17
+ "Gtk" => ["Window", "Button", "Label"]
18
+ }
19
+ @constants = {
20
+ "Gdk" => {
21
+ "Event" => ["BUTTON_PRESS", org.gnome.gdk.EventType::BUTTON_PRESS]
22
+ }
23
+ }
24
+
25
+ module Gtk
26
+ @events = [
27
+ ["Button", "clicked", org.gnome.gtk.Button::Clicked, :onClicked, nil],
28
+ ["MenuItem", "activate", org.gnome.gtk.MenuItem::Activate, :onActivate, nil],
29
+ ["Entry", "activate", org.gnome.gtk.Entry::Activate, :onActivate, nil]
30
+ ]
31
+
32
+ def self.events; return @events; end
33
+ def self.takeob=(takeob); @takeob = takeob; end
34
+ def self.takeob; return @takeob; end
35
+
36
+ #Cache eval'ed objects to get it done faster.
37
+ @evalobs = {
38
+ "org.gnome.gtk.Button" => org.gnome.gtk.Button,
39
+ "org.gnome.gtk.Dialog" => org.gnome.gtk.Dialog,
40
+ "org.gnome.gtk.HBox" => org.gnome.gtk.HBox,
41
+ "org.gnome.gtk.Image" => org.gnome.gtk.Image,
42
+ "org.gnome.gtk.Label" => org.gnome.gtk.Label,
43
+ "org.gnome.gtk.ListStore" => org.gnome.gtk.ListStore,
44
+ "org.gnome.gtk.Window" => org.gnome.gtk.Window
45
+ }
46
+ def self.evalob(evalobstr)
47
+ if !@evalobs.has_key?(evalobstr)
48
+ print "Not statically written: #{evalobstr}\n"
49
+ @evalobs[evalobstr] = eval(evalobstr)
50
+ end
51
+
52
+ return @evalobs[evalobstr]
53
+ end
54
+ end
55
+
56
+ module Gdk; end
57
+
58
+ @all.each do |parentclass, classes|
59
+ classes.each do |classname|
60
+ Kernel.const_get(parentclass).const_set(classname, Class.new do
61
+ attr_accessor :ob
62
+
63
+ def initialize(spawn_object = true)
64
+ if Gtk.takeob
65
+ @ob = Gtk.takeob
66
+ Gtk.takeob = nil
67
+ else
68
+ splitted = self.class.to_s.split("::")
69
+ javaname = "org.gnome." + splitted.first.downcase + "." + splitted.last
70
+
71
+ begin
72
+ @ob = Gtk.evalob(javaname).new
73
+ rescue Exception => e
74
+ print "Could not spawn object: #{javaname}\n"
75
+ raise e
76
+ end
77
+ end
78
+ end
79
+
80
+ def signal_connect(event, &block)
81
+ if !block_given?
82
+ raise "No block was given."
83
+ end
84
+
85
+ splitted = self.class.to_s.split("::")
86
+ constant = splitted.last
87
+ defreturn = nil
88
+ class_inc = nil
89
+ funcname = nil
90
+ defreturn = nil
91
+
92
+ Gtk.events.each do |eventarr|
93
+ if constant == eventarr[0] and event == eventarr[1]
94
+ class_inc = eventarr[2]
95
+ funcname = eventarr[3]
96
+ defreturn = eventarr[4]
97
+ break
98
+ end
99
+ end
100
+
101
+ if !class_inc or !funcname
102
+ raise "No event for class '#{constant}' and event '#{event}'"
103
+ end
104
+
105
+ eventclass = Class.new do
106
+ include(class_inc)
107
+ end
108
+ eventclass.instance_eval do
109
+ define_method funcname do |*args|
110
+ #First argument is always the widget - make it a converted widget instead.
111
+ cname = args[0].class.to_s.split("::")[2]
112
+
113
+ begin
114
+ Gtk.takeob = args[0]
115
+ widget = Gtk.const_get(cname).new(false)
116
+ widget.ob = args[0]
117
+ args[0] = widget
118
+ rescue Exception => e
119
+ print "Could not spawn widget: #{cname}\n"
120
+ raise e
121
+ end
122
+
123
+ ret = block.call(*args)
124
+
125
+ if ret == nil
126
+ return defreturn
127
+ end
128
+
129
+ return ret
130
+ end
131
+ end
132
+
133
+ @ob.connect(eventclass.new)
134
+ end
135
+
136
+ def method_missing(*paras)
137
+ newparas = []
138
+ first = true
139
+ paras.each do |para|
140
+ if first
141
+ first = false
142
+ else
143
+ splitted = para.class.to_s.split("::")
144
+ if splitted.first == "Gtk"
145
+ para = para.ob
146
+ end
147
+
148
+ newparas << para
149
+ end
150
+ end
151
+
152
+ if @ob.respond_to?(paras[0])
153
+ return @ob.send(paras[0], *newparas)
154
+ end
155
+
156
+ raise "No such method on #{self.class.name}: #{paras[0]}"
157
+ end
158
+ end
159
+ )
160
+ end
161
+ end
162
+
163
+ @titles.each do |parentclass, classes|
164
+ classes.each do |classname|
165
+ Kernel.const_get(parentclass).const_get(classname).class_eval do
166
+ def initialize(newtitle = nil)
167
+ if Gtk.takeob
168
+ @ob = Gtk.takeob
169
+ Gtk.takeob = nil
170
+ else
171
+ splitted = self.class.to_s.split("::")
172
+ @ob = Gtk.evalob("org.gnome.gtk." + splitted.last).new
173
+ end
174
+
175
+ if newtitle
176
+ if @ob.respond_to?("label=")
177
+ @ob.label = newtitle
178
+ elsif @ob.respond_to?("title=")
179
+ @ob.title = newtitle
180
+ else
181
+ raise "Could not set title on element."
182
+ end
183
+ end
184
+ end
185
+ end
186
+ end
187
+ end
188
+
189
+ @containers.each do |parentclass, classes|
190
+ classes.each do |classname|
191
+ Kernel.const_get(parentclass).const_get(classname).class_eval do
192
+ def add(widget)
193
+ return @ob.add(widget.ob)
194
+ end
195
+
196
+ def pack_start(widget, arg1 = false, arg2 = false)
197
+ return @ob.pack_start(widget.ob, arg1, arg2, 0)
198
+ end
199
+ end
200
+ end
201
+ end
202
+
203
+ @constants.each do |parentclass, classes|
204
+ classes.each do |classname, data|
205
+ Kernel.const_get(parentclass).const_get(classname).const_set(data[0], data[1])
206
+ end
207
+ end
208
+
209
+ module Gtk
210
+ def self.main
211
+ org.gnome.gtk.Gtk.main
212
+ end
213
+
214
+ def self.main_quit
215
+ org.gnome.gtk.Gtk.main_quit
216
+ end
217
+ end
218
+
219
+ module Gdk
220
+ class Pixbuf
221
+ def initialize(filename)
222
+ @ob = org.gnome.gdk.Pixbuf.new(filename)
223
+ end
224
+ end
225
+ end
226
+
227
+ module GLib
228
+ class Timeout
229
+ def self.add(time, &block)
230
+ Thread.new(time, block) do |time, block|
231
+ begin
232
+ sleep(time / 1000)
233
+ block.call
234
+ rescue Exception => e
235
+ puts e.inspect
236
+ puts e.backtrace
237
+ end
238
+ end
239
+ end
240
+ end
241
+ end
242
+
243
+ files = ["builder", "cellrenderertext", "checkbutton", "combobox", "dialog", "eventbutton", "hbox", "iconsize", "image", "liststore", "gladexml", "menu", "progressbar", "statusicon", "stock", "treeview", "vbox", "window"]
244
+ files.each do |file|
245
+ require File.dirname(__FILE__) + "/" + file
246
+ end
@@ -0,0 +1,10 @@
1
+ class Gtk::HBox
2
+ def initialize(homogeneous = false, spacing = 0)
3
+ if Gtk.takeob
4
+ @ob = Gtk.takeob
5
+ Gtk.takeob = nil
6
+ else
7
+ @ob = Gtk.evalob("org.gnome.gtk.HBox").new(homogeneous, spacing)
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ class Gtk::IconSize
2
+ DIALOG = org.gnome.gtk.IconSize::DIALOG
3
+ BUTTON = org.gnome.gtk.IconSize::BUTTON
4
+ MENU = org.gnome.gtk.IconSize::MENU
5
+ end
@@ -0,0 +1,10 @@
1
+ class Gtk::Image
2
+ def initialize(arg1, arg2)
3
+ if Gtk.takeob
4
+ @ob = Gtk.takeob
5
+ Gtk.takeob = nil
6
+ else
7
+ @ob = Gtk.evalob("org.gnome.gtk.Image").new(arg1, arg2)
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,56 @@
1
+ class Gtk::ListStore
2
+ def dcol; return @dcol; end
3
+ def dcol_arr; return @dcol_arr; end
4
+ def tv; return @knj_tv; end
5
+
6
+ def initialize(*args)
7
+ if Gtk.takeob
8
+ @ob = Gtk.takeob
9
+ Gtk.takeob = nil
10
+ else
11
+ splitted = self.class.to_s.split("::")
12
+ classname = splitted[splitted.length - 1]
13
+
14
+ class_spawn = Gtk.evalob("org.gnome.gtk." + classname)
15
+ if !class_spawn
16
+ raise "Could not find class: " + classname
17
+ end
18
+
19
+ @dcol = org.gnome.gtk.DataColumn[args.length].new
20
+ @dcol_arr = []
21
+ count = 0
22
+ args.each do |col_name|
23
+ colstring = org.gnome.gtk.DataColumnString.new
24
+ @dcol[count] = colstring
25
+ @dcol_arr[count] = colstring
26
+ count += 1
27
+ end
28
+
29
+ @ob = class_spawn.new(@dcol)
30
+ end
31
+
32
+ $knj_jruby_gtk_last_liststore = self
33
+ end
34
+
35
+ def append
36
+ Gtk.takeob = @ob.appendRow
37
+ iter = Gtk::TreeIter.new
38
+ iter.model = self
39
+
40
+ return iter
41
+ end
42
+
43
+ def tv=(newtv)
44
+ @knj_tv = newtv
45
+ end
46
+
47
+ def get_iter(selection)
48
+ iter = @ob.get_iter(selection)
49
+
50
+ Gtk.takeob = iter
51
+ retob = Gtk::TreeIter.new
52
+ retob.model = self
53
+
54
+ return retob
55
+ end
56
+ end
@@ -0,0 +1,40 @@
1
+ class Gtk::Menu
2
+ def initialize
3
+ if Gtk.takeob
4
+ @ob = Gtk.takeob
5
+ Gtk.takeob = nil
6
+ else
7
+ splitted = self.class.to_s.split("::")
8
+ classname = splitted[splitted.length - 1]
9
+ class_spawn = Gtk.evalob("org.gnome.gtk." + classname)
10
+ @ob = class_spawn.new
11
+ end
12
+ end
13
+
14
+ def popup(arg1, arg2, event_button, event_time)
15
+ @ob.popup
16
+ end
17
+
18
+ def prepend(object)
19
+ @ob.prepend(object.ob)
20
+ end
21
+ end
22
+
23
+ class Gtk::MenuItem
24
+ def initialize(title)
25
+ if Gtk.takeob
26
+ @ob = Gtk.takeob
27
+ Gtk.takeob = nil
28
+ else
29
+ splitted = self.class.to_s.split("::")
30
+ classname = splitted[splitted.length - 1]
31
+ class_spawn = Gtk.evalob("org.gnome.gtk." + classname)
32
+
33
+ if title
34
+ @ob = class_spawn.new(title)
35
+ else
36
+ @ob = class_spawn.new
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,12 @@
1
+ class Gtk::ProgressBar
2
+ def initialize
3
+ if Gtk.takeob
4
+ @ob = Gtk.takeob
5
+ Gtk.takeob = nil
6
+ else
7
+ splitted = self.class.to_s.split("::")
8
+ javaname = "org.gnome." + splitted.first.downcase + "." + splitted.last
9
+ @ob = Gtk.evalob(javaname).new
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,8 @@
1
+ Gtk.events << ["StatusIcon", "activate", org.gnome.gtk.StatusIcon::Activate, :onActivate, nil]
2
+ Gtk.events << ["StatusIcon", "popup-menu", org.gnome.gtk.StatusIcon::PopupMenu, :onPopupMenu, nil]
3
+
4
+ class Gtk::StatusIcon
5
+ def pixbuf=(newpixbuf)
6
+ @ob.from_pixbuf = newpixbuf.ob
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ class Gtk::Stock
2
+ OK = org.gnome.gtk.Stock::OK
3
+ YES = org.gnome.gtk.Stock::YES
4
+ NO = org.gnome.gtk.Stock::NO
5
+ DIALOG_WARNING = org.gnome.gtk.Stock::DIALOG_WARNING
6
+ DIALOG_QUESTION = org.gnome.gtk.Stock::DIALOG_QUESTION
7
+ DIALOG_INFO = org.gnome.gtk.Stock::DIALOG_INFO
8
+ end