9 require 'interaction/match'
11 require 'ics/protocol'
12 require 'ics/match_handler'
13 require 'ics/connection'
16 class MainWindow < KDE::XmlGuiWindow
19 def initialize(loader, game)
34 std_action(:open_new) { new_game(@default_game) }
35 std_action :quit, :slot => :close
36 std_action(:save) { save_game }
38 regular_action :back, :icon => 'go-previous',
39 :text => KDE.i18n("&Back") do
42 regular_action :forward, :icon => 'go-next',
43 :text => KDE.i18n("&Forward") do
46 regular_action :connect, :icon => 'network-connect',
47 :text => KDE.i18n("&Connect to ICS") do
50 regular_action :disconnect, :icon => 'network-disconnect',
51 :text => KDE.i18n("&Disconnect from ICS") do
58 regular_action :flip, :icon => 'object-rotate-left',
59 :text => KDE.i18n("F&lip") do
60 @table.flip(! @table.flipped?)
67 @table = Table.new scene, @loader, self
68 @controller = Controller.new(@table)
70 movelist = @loader.get_matching(%w(movelist)).new(@controller)
71 movelist_dock = Qt::DockWidget.new(self)
72 movelist_dock.widget = movelist
73 movelist_dock.window_title = KDE.i18n("Move list")
74 movelist_dock.object_name = "movelist"
75 add_dock_widget(Qt::LeftDockWidgetArea, movelist_dock, Qt::Vertical)
78 @console = Console.new(nil)
79 console_dock = Qt::DockWidget.new(self)
80 console_dock.widget = @console
81 console_dock.focus_proxy = @console
82 console_dock.window_title = KDE.i18n("Console")
83 console_dock.object_name = "console"
84 add_dock_widget(Qt::BottomDockWidgetArea, console_dock, Qt::Horizontal)
85 console_dock.window_flags = console_dock.window_flags & ~Qt::WindowStaysOnTopHint
90 self.central_widget = @table
94 protocol = ICS::Protocol.new(:debug)
95 @connection = ICS::Connection.new('freechess.org', 23)
96 protocol.add_observer ICS::AuthModule.new(@connection, 'ujjajja', '')
97 protocol.add_observer ICS::StartupModule.new(@connection)
98 protocol.link_to @connection
100 protocol.observe :text do |text|
101 @console.append(text)
104 @console.observe :input do |text|
105 @connection.send_text text
108 handler = ICS::MatchHandler.new(@controller, protocol)
110 protocol.observe :creating_game do |data|
111 puts "CREATING GAME: #{data.inspect}"
118 @controller.color = game.players.first
119 opponents = game.players[1..-1].map do |color|
120 DummyPlayer.new(color)
122 opponents.each do |p|
123 @controller.add_controlled_player(p)
126 match = Match.new(game)
127 @controller.controlled.values.each do |p|
130 @controller.controlled.values.each do |p|
134 @controller.reset(match)
138 match = @controller.match
140 writer = match.game.game_writer.new
142 info[:players] = info[:players].inject({}) do |res, pl|
143 res[pl.color] = pl.name
146 result = writer.write(info, match.history)
158 def initialize(color)