Remember VNC scaling setting for each VM.

Uses the newly added per-VM preference infrastructure
This commit is contained in:
Cole Robinson 2009-05-11 10:45:25 -04:00
parent d9860d4a61
commit b619961f29
4 changed files with 33 additions and 11 deletions

View File

@ -348,10 +348,10 @@ class vmmConfig:
def on_console_scaling_changed(self, callback):
self.conf.notify_add(self.conf_dir + "/console/scaling", callback)
def get_console_scaling(self):
console_pref = self.conf.get_int(self.conf_dir + "/console/scaling")
if console_pref == None:
console_pref = 0
return console_pref
ret = self.conf.get(self.conf_dir + "/console/scaling")
if ret != None:
ret = ret.get_int()
return ret
def set_console_scaling(self, pref):
self.conf.set_int(self.conf_dir + "/console/scaling", pref)

View File

@ -222,12 +222,9 @@ class vmmDetails(gobject.GObject):
self.vncViewer.set_keyboard_grab(False)
self.vncViewer.set_pointer_grab(True)
self.scale_type = self.config.get_console_scaling()
self.window.get_widget("details-menu-view-scale-always").set_active(self.scale_type == self.config.CONSOLE_SCALE_ALWAYS)
self.window.get_widget("details-menu-view-scale-never").set_active(self.scale_type == self.config.CONSOLE_SCALE_NEVER)
self.window.get_widget("details-menu-view-scale-fullscreen").set_active(self.scale_type == self.config.CONSOLE_SCALE_FULLSCREEN)
self.update_scaling()
self.scale_type = self.vm.get_console_scaling()
self.vm.on_console_scaling_changed(self.refresh_scaling)
self.refresh_scaling()
self.vncViewer.connect("vnc-pointer-grab", self.notify_grabbed)
self.vncViewer.connect("vnc-pointer-ungrab", self.notify_ungrabbed)
@ -432,6 +429,15 @@ class vmmDetails(gobject.GObject):
else:
self.vncViewer.set_keyboard_grab(False)
def refresh_scaling(self,ignore1=None, ignore2=None, ignore3=None,
ignore4=None):
self.scale_type = self.vm.get_console_scaling()
self.window.get_widget("details-menu-view-scale-always").set_active(self.scale_type == self.config.CONSOLE_SCALE_ALWAYS)
self.window.get_widget("details-menu-view-scale-never").set_active(self.scale_type == self.config.CONSOLE_SCALE_NEVER)
self.window.get_widget("details-menu-view-scale-fullscreen").set_active(self.scale_type == self.config.CONSOLE_SCALE_FULLSCREEN)
self.update_scaling()
def set_scale_type(self, src):
if not src.get_active():
return
@ -443,6 +449,7 @@ class vmmDetails(gobject.GObject):
elif src == self.window.get_widget("details-menu-view-scale-never"):
self.scale_type = self.config.CONSOLE_SCALE_NEVER
self.vm.set_console_scaling(self.scale_type)
self.update_scaling()
def update_scaling(self):

View File

@ -203,6 +203,18 @@ class vmmDomain(gobject.GObject):
self.lastStatus = status
self.emit("status-changed", status)
# GConf specific wranglings
def set_console_scaling(self, value):
self.config.set_pervm(self.connection.get_uri(), self.uuid,
self.config.set_console_scaling, value)
def get_console_scaling(self):
return self.config.get_pervm(self.connection.get_uri(), self.uuid,
self.config.get_console_scaling)
def on_console_scaling_changed(self, cb):
self.config.listen_pervm(self.connection.get_uri(), self.uuid,
self.config.on_console_scaling_changed, cb)
def _sample_mem_stats_dummy(self, ignore):
return 0, 0

View File

@ -103,7 +103,10 @@ class vmmPreferences(gobject.GObject):
self.window.get_widget("prefs-console-keygrab").set_active(self.config.get_console_keygrab())
def refresh_console_scaling(self,ignore1=None,ignore2=None,ignore3=None,
ignore4=None):
self.window.get_widget("prefs-console-scaling").set_active(self.config.get_console_scaling())
val = self.config.get_console_scaling()
if val == None:
val = 0
self.window.get_widget("prefs-console-scaling").set_active(val)
def refresh_sound_local(self, ignore1=None, ignore2=None, ignore=None,
ignore4=None):