2 Stimmen

Wie kann ich die Größe und Position von Windows in einer wxRuby-Anwendung wiederherstellen?

Kennt jemand einen Beispielcode zum Wiederherstellen der Position und Größe eines Fensters in wxRuby?

3voto

two-bit-fool Punkte 4828

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X