freightrain 0.5.13 → 0.5.14

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.
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ require 'rake/testtask'
9
9
 
10
10
  spec = Gem::Specification.new do |s|
11
11
  s.name = 'freightrain'
12
- s.version = '0.5.13'
12
+ s.version = '0.5.14'
13
13
  s.add_dependency('require_all', '>= 1.1.0')
14
14
  s.add_dependency('needle', '>= 1.3.0')
15
15
  s.has_rdoc = false
@@ -0,0 +1,17 @@
1
+
2
+ module BindingBase
3
+
4
+ def bind(binding_options)
5
+ @bindings ||= {}
6
+ binding = FreightBinding.new(self, binding_options)
7
+ #TODO: send out warning on override?
8
+ @bindings[binding_options[:property]] = binding
9
+ return binding
10
+ end
11
+
12
+ def bindings
13
+ @bindings ||= {}
14
+ return @bindings.values
15
+ end
16
+
17
+ end
@@ -1,7 +1,9 @@
1
1
 
2
2
  #TODO: use require all
3
+ #TODO: use File.join for god's sake!
3
4
 
4
5
  require 'libglade2'
6
+ require File.dirname(__FILE__) + "/binding_base.rb"
5
7
  require File.dirname(__FILE__) + "/widgets/gtk_image.rb"
6
8
  require File.dirname(__FILE__) + "/widgets/gtk_toggle_button.rb"
7
9
  require File.dirname(__FILE__) + "/widgets/gtk_toggle_tool_button.rb"
@@ -11,6 +13,7 @@ require File.dirname(__FILE__) + "/widgets/gtk_calendar.rb"
11
13
  require File.dirname(__FILE__) + "/widgets/gtk_treeview.rb"
12
14
  require File.dirname(__FILE__) + "/widgets/gtk_treeviewcolumn.rb"
13
15
  require File.dirname(__FILE__) + "/widgets/gtk_layout.rb"
16
+ require File.dirname(__FILE__) + "/widgets/gtk_statusicon.rb"
14
17
  require File.dirname(__FILE__) + "/interface_builder.rb"
15
18
  require File.dirname(__FILE__) + "/dialog_helper.rb"
16
19
 
@@ -15,14 +15,16 @@ module Freightrain
15
15
 
16
16
  def create_objects_from_file(file_name)
17
17
  @builder.add_from_file(get_glade_file(file_name))
18
- @control = @builder.objects.first.toplevel
19
- return @builder.objects.select do
20
- |obj| obj.respond_to?(:name)
21
- end.map
18
+ if @builder.objects.first.respond_to? :toplevel
19
+ @control = @builder.objects.first.toplevel
20
+ end
21
+ return @builder.objects.select do |obj|
22
+ obj.respond_to? :name
23
+ end
22
24
  end
23
25
 
24
26
  def create_object_accessors(widgets, view)
25
- widgets.each do |widget|
27
+ widgets.select { |widget| widget.respond_to? :name }.each do |widget|
26
28
  name = widget.name
27
29
  view.instance_eval "def #{name}; @widgets.select { |w| w.name == '#{name}' }.first ;end;"
28
30
  end
@@ -0,0 +1,28 @@
1
+
2
+ module Gtk
3
+
4
+ class StatusIcon
5
+ include BindingBase
6
+
7
+ #Gtk::StatusIcon is NOT a Gtk::Widget, but a more basic
8
+ #GLib::Object. That implies that statusicons do not have
9
+ #a 'name' method, which is necessary for a lot of stuff
10
+ #in freightrain, such as method accessor creation and
11
+ #binding. Since, in most other aspect, statusicons behave
12
+ #very likely other widgets, i decided to hard patch the problem
13
+ #as follows.
14
+ #This means that ALL the Gtk::StatusIcon you define will
15
+ #be called 'status_icon', regardless of the name you define
16
+ #in Glade. If, for some weird reason, you need to use TWO
17
+ #statusicons inside the same view, you can either fix
18
+ #this yourself (and send me a patch :-) ) or contact me.
19
+ def name
20
+ return "status_icon"
21
+ end
22
+
23
+ def icon_path=(path)
24
+ self.pixbuf = Gdk::Pixbuf.new(path)
25
+ end
26
+
27
+ end
28
+ end
@@ -2,19 +2,7 @@
2
2
  module Gtk
3
3
 
4
4
  class Widget
5
-
6
- def bind(binding_options)
7
- @bindings ||= {}
8
- binding = FreightBinding.new(self, binding_options)
9
- #TODO: send out warning on override?
10
- @bindings[binding_options[:property]] = binding
11
- return binding
12
- end
13
-
14
- def bindings
15
- @bindings ||= {}
16
- return @bindings.values
17
- end
5
+ include BindingBase
18
6
 
19
7
  def color_from_rgb(string)
20
8
  red = ((string[0..1].hex.to_i + 1) * 256) - 1
@@ -22,9 +22,9 @@ module Freightrain
22
22
  @cache = value
23
23
  end
24
24
  rescue Exception => ex
25
- # p "#{@widget.name} - update"
26
- # p ex.message
27
- # p @path
25
+ p "#{@widget.name} - update"
26
+ p ex.message
27
+ p @path
28
28
  end
29
29
  end
30
30
 
@@ -10,7 +10,7 @@ module Freightrain
10
10
  # attr_reader :widgets
11
11
 
12
12
  def widgets
13
- return @widgets.select { |widget| widget.kind_of? Gtk::Widget}
13
+ return @widgets.select { |widget| widget.kind_of? BindingBase }
14
14
  end
15
15
 
16
16
  def self.container_options
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: freightrain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.13
4
+ version: 0.5.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrea Dallera
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-03-18 00:00:00 +01:00
12
+ date: 2010-03-21 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -58,10 +58,12 @@ files:
58
58
  - lib/extensions/gtk/interface_builder.rb
59
59
  - lib/extensions/gtk/dialog_helper.rb
60
60
  - lib/extensions/gtk/gtk_bootstrapper.rb
61
+ - lib/extensions/gtk/binding_base.rb
61
62
  - lib/extensions/gtk/widgets/gtk_layout.rb
62
63
  - lib/extensions/gtk/widgets/gtk_image.rb
63
64
  - lib/extensions/gtk/widgets/gtk_combo_box.rb
64
65
  - lib/extensions/gtk/widgets/gtk_calendar.rb
66
+ - lib/extensions/gtk/widgets/gtk_statusicon.rb
65
67
  - lib/extensions/gtk/widgets/gtk_treeview.rb
66
68
  - lib/extensions/gtk/widgets/gtk_widget.rb
67
69
  - lib/extensions/gtk/widgets/gtk_toggle_button.rb