9 class MainWindow < KDE::XmlGuiWindow
12 Theme = Struct.new(:pieces, :board, :layout)
14 def initialize(loader, game)
28 std_action :open_new do
31 std_action :quit, :slot => :close
32 regular_action :back, :icon => 'go-previous',
33 :text => KDE.i18n("&Back") do
36 regular_action :forward, :icon => 'go-next',
37 :text => KDE.i18n("&Forward") do
44 config = KDE::Global.config.group('themes')
47 theme.pieces = @loader.
48 get_matching((game.keywords || []) + %w(pieces)).
49 new(:game => game, :shadow => true)
50 theme.board = @loader.
51 get_matching(%w(board), game.keywords || []).
53 theme.layout = @loader.
54 get_matching(%w(layout), game.keywords || []).
59 state = game.state.new.tap {|s| s.setup }
61 field = AnimationField.new(20)
62 board = Board.new(scene, theme, game)
63 pools = if game.respond_to? :pool
64 game.players.inject({}) do |res, player|
65 res[player] = Pool.new(scene, theme, game)
71 clock_class = @loader.get_matching(%w(clock))
72 clocks = game.players.inject({}) do |res, player|
73 res[player] = clock_class.new(scene)
77 elements = { :board => board,
80 table = Table.new scene, theme, self, elements
82 history = History.new(state)
83 @controller = Controller.new(scene, elements, game, history)
85 movelist = @loader.get_matching(%w(movelist)).
86 new(parent, history, game)
88 movelist_dock = Qt::DockWidget.new(self)
89 movelist_dock.widget = movelist
90 movelist_dock.window_title = KDE.i18n("Move list")
91 movelist_dock.object_name = "movelist"
92 add_dock_widget(Qt::LeftDockWidgetArea, movelist_dock, Qt::Vertical)
95 self.central_widget = table