8 class MainWindow < KDE::XmlGuiWindow
11 Theme = Struct.new(:pieces, :board, :layout)
13 def initialize(loader, game)
27 std_action :open_new do
30 std_action :quit, :slot => :close
31 regular_action :back, :icon => 'go-previous',
32 :text => KDE.i18n("&Back") do
35 regular_action :forward, :icon => 'go-next',
36 :text => KDE.i18n("&Forward") do
43 config = KDE::Global.config.group('themes')
46 theme.pieces = @loader.get_matching('Celtic', game,
47 (game.keywords || []) + ['pieces'], [], :shadow => true)
48 theme.board = @loader.get_matching(nil, game,
49 ['board'], game.keywords || [])
50 theme.layout = @loader.get_matching(nil, game,
51 ['layout'], game.keywords || [])
53 scene = Qt::GraphicsScene.new
55 state = game.state.new.tap {|s| s.setup }
57 field = AnimationField.new(20)
58 @board = Board.new(scene, theme, game, state, field)
59 if game.respond_to? :pool
60 @pools = game.players.inject({}) do |res, player|
61 res[player] = Pool.new(scene, theme, game, state.pool(player), field)
66 table = Table.new scene, theme, self,
70 self.central_widget = table
72 history = History.new(state)
73 controller = Controller.new(@board, history)