Kennt jemand einen Beispielcode zum Wiederherstellen der Position und Größe eines Fensters in wxRuby?
Antwort
Zu viele Anzeigen?YAML wäre die bessere Wahl, um die Voreinstellungen zu serialisieren, aber hier speichere ich einfach eine kommagetrennte Zeichenkette in der Datei prefs.txt.
require "rubygems"
require "wx"
include Wx
class MyApp < App
def on_init
left, top, width, height = *prefs
position = Point.new(left, top)
size = Size.new(width, height)
main = Frame.new(nil, -1, "Title", position, size)
#when the window closes, save the location
main.evt_close do |event|
save_window_location(event.get_event_object)
event.skip
end
main.show()
end
private
def save_window_location(frame)
self.prefs = [
frame.position.x,
frame.position.y,
frame.size.width,
frame.size.height
]
end
#load the prefs and return them as an array
def prefs
location = []
begin
location = File.read(prefs_filename).split(',').map{|s| s.to_i}
rescue Exception
#file didn't exist, or read failed
end
location = [100, 100, 300, 300] if location.size != 4
return location
end
#save the prefs as a comma-delimited string
def prefs=(prefs_array)
File.open(prefs_filename, 'w') do |prefs_file|
prefs_file << prefs_array.join(",")
end
end
def prefs_filename
'prefs.txt'
end
end
MyApp.new.main_loop