Commit 894399d
Changed files (2)
lib
presentation
windows
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)