highscore_dialog.rb

require 'Qt'

class HighScoreDialog < Qt::Dialog

def initialize parent, high_scores

super parent

setWindowTitle "High Scores"

resize(parent.width*4/5,parent.height/2)

large_group = Qt::GroupBox.new "Big - 20x15" do

setPalette(Qt::Palette.new( Qt::Color.new(110,120,120)))

setAutoFillBackground(true)

vl = Qt::VBoxLayout.new

scores = high_scores[:large].sort{ |a,b| b[1]<=>a[1] }

scores.each do |val|

name = val[0]

label = Qt::Label.new( "#{val[1].to_s} - #{name}")

vl.addWidget label

end

vl.addStretch

setLayout vl

end

medium_group = Qt::GroupBox.new "Medium - 15x10" do

setPalette(Qt::Palette.new( Qt::Color.new(110,120,120)))

setAutoFillBackground(true)

vl = Qt::VBoxLayout.new

scores = high_scores[:medium].sort{ |a,b| b[1]<=>a[1] }

scores.each do |val|

name = val[0]

label = Qt::Label.new( "#{val[1].to_s} - #{name}")

vl.addWidget label

end

vl.addStretch

setLayout vl

end

small_group = Qt::GroupBox.new "Little - 8x5" do

setPalette(Qt::Palette.new( Qt::Color.new(110,120,120)))

setAutoFillBackground(true)

vl = Qt::VBoxLayout.new

scores = high_scores[:small].sort{ |a,b| b[1]<=>a[1] }

scores.each do |val|

name = val[0]

label = Qt::Label.new( "#{val[1].to_s} - #{name}")

vl.addWidget label

end

vl.addStretch

setLayout vl

end

done_pb = Qt::PushButton.new "Done"

done_pb.setDefault true

done_pb.connect(SIGNAL :clicked) { accept }

vlayout = Qt::VBoxLayout.new do

scores_hl = Qt::HBoxLayout.new do

addWidget large_group

addWidget medium_group

addWidget small_group

end

addLayout scores_hl

hl = Qt::HBoxLayout.new

hl.addStretch

hl.addWidget done_pb

addLayout hl

end

setLayout vlayout

end

end