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 regular_action :back, :icon => 'go-previous',
37 :text => KDE.i18n("&Back") do
40 regular_action :forward, :icon => 'go-next',
41 :text => KDE.i18n("&Forward") do
44 regular_action :connect, :icon => 'network-connect',
45 :text => KDE.i18n("&Connect to ICS") do
48 regular_action :disconnect, :icon => 'network-disconnect',
49 :text => KDE.i18n("&Disconnect from ICS") do
53 regular_action :flip, :icon => 'object-rotate-left',
54 :text => KDE.i18n("F&lip") do
55 @table.flip(! @table.flipped?)
62 @table = Table.new scene, @loader, self
63 @controller = Controller.new(@table)
65 movelist = @loader.get_matching(%w(movelist)).new(@controller)
66 movelist_dock = Qt::DockWidget.new(self)
67 movelist_dock.widget = movelist
68 movelist_dock.window_title = KDE.i18n("Move list")
69 movelist_dock.object_name = "movelist"
70 add_dock_widget(Qt::LeftDockWidgetArea, movelist_dock, Qt::Vertical)
73 @console = Console.new(nil)
74 console_dock = Qt::DockWidget.new(self)
75 console_dock.widget = @console
76 console_dock.focus_proxy = @console
77 console_dock.window_title = KDE.i18n("Console")
78 console_dock.object_name = "console"
79 add_dock_widget(Qt::BottomDockWidgetArea, console_dock, Qt::Horizontal)
80 console_dock.window_flags = console_dock.window_flags & ~Qt::WindowStaysOnTopHint
85 self.central_widget = @table
89 protocol = ICS::Protocol.new(:debug)
90 c = ICS::Connection.new('freechess.org', 23)
91 protocol.add_observer ICS::AuthModule.new(c, 'ujjajja', '')
92 protocol.add_observer ICS::StartupModule.new(c)
95 protocol.observe :text do |text|
99 @console.observe :input do |text|
103 handler = ICS::MatchHandler.new(@controller, protocol)
105 protocol.observe :creating_game do |data|
106 puts "CREATING GAME: #{data.inspect}"
113 @controller.color = game.players.first
114 opponents = game.players[1..-1].map do |color|
115 DummyPlayer.new(color)
117 opponents.each do |p|
118 @controller.add_controlled_player(p)
121 match = Match.new(game)
122 @controller.controlled.values.each do |p|
125 @controller.controlled.values.each do |p|
129 @controller.reset(match)
138 def initialize(color)