Commit c77f6db
Changed files (4)
lib
presentation
presenters
windows
lib/presentation/presenters/application_shell_presenter.rb
@@ -11,7 +11,25 @@ class ApplicationShellPresenter
@view.show_all
end
+ def backspace
+ end
+
+ def changed(text)
+ return if @updating
+ update do
+ @view.display(text.reverse.upcase)
+ end
+ end
+
def shutdown
Publish.event(:halt)
end
+
+ private
+
+ def update
+ @updating = true
+ yield
+ @updating = false
+ end
end
lib/presentation/windows/application_shell.rb
@@ -18,6 +18,17 @@ class ApplicationShell
@presenter = presenter
@window = builder.get_object('window')
@menu_bar = builder.get_object('menubar')
+ @text_view = builder.get_object('text_view')
+ builder.connect_signals do |signal|
+ Proc.new { presenter.public_send(signal) }
+ end
+ @text_view.buffer.signal_connect("changed") do |buffer|
+ @presenter.changed(buffer.text)
+ end
Build.menu_bar.with(File.menu(@event_aggregator)).add_to(self)
end
+
+ def display(text)
+ @text_view.buffer.set_text(text)
+ end
end
lib/presentation/windows/shell.xml
@@ -34,6 +34,19 @@
<property name="can_focus">True</property>
<property name="left_margin">2</property>
<property name="right_margin">2</property>
+ <signal name="backspace" handler="backspace" swapped="no"/>
+ <signal name="copy-clipboard" handler="copy-clipboard" swapped="no"/>
+ <signal name="cut-clipboard" handler="cut-clipboard" swapped="no"/>
+ <signal name="delete-from-cursor" handler="delete-from-cursor" swapped="no"/>
+ <signal name="insert-at-cursor" handler="insert-at-cursor" swapped="no"/>
+ <signal name="move-cursor" handler="move-cursor" swapped="no"/>
+ <signal name="paste-clipboard" handler="paste-clipboard" swapped="no"/>
+ <signal name="populate-popup" handler="populate-popup" swapped="no"/>
+ <signal name="preedit-changed" handler="preedit-changed" swapped="no"/>
+ <signal name="select-all" handler="select-all" swapped="no"/>
+ <signal name="set-anchor" handler="set-anchor" swapped="no"/>
+ <signal name="toggle-cursor-visible" handler="toggle-cursor-visible" swapped="no"/>
+ <signal name="toggle-overwrite" handler="toggle-overwrite" swapped="no"/>
</object>
</child>
</object>
lib/presentation/application_controller.rb
@@ -8,7 +8,6 @@ class ApplicationController
view = presenter.view
view.builder = create_builder_for(presenter_key.to_s)
view.bind_to(presenter)
- view.builder.connect_signals { |signal| Proc.new { presenter.public_send(signal) } }
presenter.present
end