Commit 894399d

mo khan <mo@mokhan.ca>
2014-03-22 04:45:39
register each ui component in container.
1 parent 145d068
Changed files (2)
lib
lib/boot/container_configuration.rb
@@ -2,6 +2,18 @@ class ContainerConfiguration
   extend Nasty::Command
 
   def self.run(container)
+    builder = Gtk::Builder.new
+    file = File.join(File.dirname(__FILE__), '..', 'presentation', 'windows', "shell.xml")
+    builder.add_from_file(file)
+
+    container.register(:builder) { builder }.as_singleton
+    container.register(:window) { builder.get_object('window') }.as_singleton
+    container.register(:menubar) { builder.get_object('menubar') }.as_singleton
+    container.register(:symbol_textbox) { builder.get_object('symbol_textbox') }.as_singleton
+    container.register(:submit_button) { builder.get_object('submit_button') }.as_singleton
+    container.register(:output_view) { builder.get_object('output_textarea') }.as_singleton
+    container.register(:statusbar) { builder.get_object('statusbar') }.as_singleton
+
     container.register(:event_aggregator) { EventAggregator.new }.as_singleton
     container.register(:shell_view) { |x| x.build(ShellView) }.as_singleton
     container.register(:shell_presenter) { |x| x.build(ShellPresenter) }.as_singleton
lib/presentation/windows/shell_view.rb
@@ -1,9 +1,15 @@
 class ShellView
-  attr_reader :window, :menu_bar, :textbox
-  attr_accessor :builder
+  attr_reader :window, :menubar, :textbox
 
-  def initialize(event_aggregator)
+  def initialize(event_aggregator, window, menubar, symbol_textbox, output_view, builder)
     @event_aggregator = event_aggregator
+    @window = window
+    @menubar = menubar
+    @textbox = symbol_textbox
+    @output_view = output_view
+    @builder = builder
+    Build.menu_bar.with(File.menu(@event_aggregator)).add_to(@menubar)
+    @window.fullscreen
   end
 
   def set_title(title)
@@ -15,18 +21,9 @@ class ShellView
   end
 
   def bind_to(presenter)
-    @presenter = presenter
-    @window = builder.get_object('window')
-    @menu_bar = builder.get_object('menubar')
-    @textbox = builder.get_object('symbol_textbox')
-    @submit_button = builder.get_object('submit_button')
-    @output_view = builder.get_object('output_textarea')
-    @status_bar = builder.get_object('statusbar')
-    builder.connect_signals do |signal|
+    @builder.connect_signals do |signal|
       proc { presenter.public_send(signal) }
     end
-    Build.menu_bar.with(File.menu(@event_aggregator)).add_to(@menu_bar)
-    @window.fullscreen
   end
 
   def display(text)