mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-03-08 04:58:29 +03:00
console: A few tweaks to usbredir code
- Make sure to set menu item to unsensitive when console closes - Avoid dep on latest spice-gtk git for channel_type_from_string - Create usbwidget every time it's requested, like virt-viewer does - Minor style fixes
This commit is contained in:
parent
e826de7c73
commit
194cb715a3
@ -456,7 +456,6 @@ class SpiceViewer(Viewer):
|
||||
self.audio = None
|
||||
self.display_channel = None
|
||||
self.usbdev_manager = None
|
||||
self.usbwidget = None
|
||||
|
||||
def _init_widget(self):
|
||||
self.set_grab_keys()
|
||||
@ -509,7 +508,6 @@ class SpiceViewer(Viewer):
|
||||
self.display = None
|
||||
self.display_channel = None
|
||||
self.usbdev_manager = None
|
||||
self.usbwidget = None
|
||||
|
||||
def is_open(self):
|
||||
return self.spice_session is not None
|
||||
@ -565,24 +563,17 @@ class SpiceViewer(Viewer):
|
||||
return None
|
||||
return self.display_channel.get_properties("width", "height")
|
||||
|
||||
def _create_usbdev_manager(self):
|
||||
if self.usbdev_manager:
|
||||
return self.usbdev_manager
|
||||
|
||||
if self.spice_session:
|
||||
self.usbdev_manager = SpiceClientGLib.UsbDeviceManager.get(self.spice_session)
|
||||
if self.usbdev_manager:
|
||||
self.usbdev_manager.connect("auto-connect-failed", self._usbdev_redirect_error)
|
||||
self.usbdev_manager.connect("device-error", self._usbdev_redirect_error)
|
||||
|
||||
return self.usbdev_manager
|
||||
|
||||
def _create_spice_session(self):
|
||||
self.spice_session = SpiceClientGLib.Session()
|
||||
gtk_session = SpiceClientGtk.GtkSession.get(self.spice_session)
|
||||
gtk_session.set_property("auto-clipboard", True)
|
||||
|
||||
self._create_usbdev_manager()
|
||||
self.usbdev_manager = SpiceClientGLib.UsbDeviceManager.get(
|
||||
self.spice_session)
|
||||
self.usbdev_manager.connect("auto-connect-failed",
|
||||
self._usbdev_redirect_error)
|
||||
self.usbdev_manager.connect("device-error",
|
||||
self._usbdev_redirect_error)
|
||||
|
||||
autoredir = self.config.get_auto_redirection()
|
||||
if autoredir:
|
||||
@ -652,22 +643,22 @@ class SpiceViewer(Viewer):
|
||||
|
||||
usb_device_description_fmt = _("%s %s %s at %d-%d")
|
||||
|
||||
if self.spice_session:
|
||||
self.usbwidget = SpiceClientGtk.UsbDeviceWidget.new(self.spice_session,
|
||||
usb_device_description_fmt)
|
||||
self.usbwidget.connect("connect-failed", self._usbdev_redirect_error)
|
||||
return self.usbwidget
|
||||
if not self.spice_session:
|
||||
return
|
||||
|
||||
return
|
||||
usbwidget = SpiceClientGtk.UsbDeviceWidget.new(
|
||||
self.spice_session,
|
||||
usb_device_description_fmt)
|
||||
usbwidget.connect("connect-failed", self._usbdev_redirect_error)
|
||||
return usbwidget
|
||||
|
||||
def has_usb_redirection(self):
|
||||
usbredir_channel_type = SpiceClientGLib.Channel.string_to_type('usbredir')
|
||||
if not self.spice_session or not self.usbdev_manager:
|
||||
return False
|
||||
|
||||
if self.spice_session:
|
||||
if self._create_usbdev_manager() and \
|
||||
self.spice_session.has_channel_type(usbredir_channel_type):
|
||||
for c in self.spice_session.get_channels():
|
||||
if c.__class__ is SpiceClientGLib.UsbredirChannel:
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
|
||||
|
@ -1562,12 +1562,10 @@ class vmmDetails(vmmGObjectUI):
|
||||
self.vm.get_uuid())
|
||||
|
||||
def control_vm_menu(self, src_ignore):
|
||||
if (self.console.viewer and
|
||||
self.console.viewer.has_usb_redirection() and
|
||||
self.vm.has_spicevmc_type_redirdev()):
|
||||
widget = self.widget("details-menu-usb-redirection")
|
||||
if not widget.get_sensitive():
|
||||
widget.set_sensitive(True)
|
||||
can_usb = bool(self.console.viewer and
|
||||
self.console.viewer.has_usb_redirection() and
|
||||
self.vm.has_spicevmc_type_redirdev())
|
||||
self.widget("details-menu-usb-redirection").set_sensitive(can_usb)
|
||||
|
||||
def control_vm_run(self, src_ignore):
|
||||
self.emit("action-run-domain",
|
||||
|
Loading…
x
Reference in New Issue
Block a user