delete: Add vmmDeleteStorage class

We should try to hide all the self.vm vs self.disk differences into
individual functions to make the code easier to follow and to avoid
touch those values by accident in the future

Reviewed-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
Lily Nie 2020-01-02 16:03:04 +08:00 committed by Cole Robinson
parent ec50dbd15d
commit 4971e47566
2 changed files with 22 additions and 12 deletions

View File

@ -30,9 +30,7 @@ STORAGE_ROW_ICON_SIZE = 6
STORAGE_ROW_TOOLTIP = 7
class vmmDeleteDialog(vmmGObjectUI):
disk = None
class _vmmDeleteBase(vmmGObjectUI):
@classmethod
def show_instance(cls, parentobj, vm):
try:
@ -46,6 +44,7 @@ class vmmDeleteDialog(vmmGObjectUI):
def __init__(self):
vmmGObjectUI.__init__(self, "delete.ui", "vmm-delete")
self.vm = None
self.disk = None
self.builder.connect_signals({
"on_vmm_delete_delete_event": self.close,
@ -58,6 +57,9 @@ class vmmDeleteDialog(vmmGObjectUI):
self._init_state()
def _get_dialog_title(self):
raise NotImplementedError
def _init_state(self):
blue = Gdk.Color.parse("#0072A8")[1]
self.widget("header").modify_bg(Gtk.StateType.NORMAL, blue)
@ -77,8 +79,6 @@ class vmmDeleteDialog(vmmGObjectUI):
self._set_vm(None)
return 1
def set_disk(self, disk):
self.disk = disk
def _cleanup(self):
pass
@ -99,10 +99,7 @@ class vmmDeleteDialog(vmmGObjectUI):
def _reset_state(self):
# Set VM name or disk.target in title'
if self.disk:
text = self.disk.target
else:
text = self.vm.get_name()
text = self._get_dialog_title()
title_str = ("<span size='large' color='white'>%s '%s'</span>" %
(_("Delete"), xmlutil.xml_escape(text)))
@ -282,6 +279,20 @@ class vmmDeleteDialog(vmmGObjectUI):
vm.remove_device(dev)
class vmmDeleteDialog(_vmmDeleteBase):
def _get_dialog_title(self):
return self.vm.get_name()
class vmmDeleteStorage(_vmmDeleteBase):
def __init__(self, disk):
_vmmDeleteBase.__init__(self)
self.disk = disk
def _get_dialog_title(self):
return self.disk.target
###################
# UI init helpers #
###################

View File

@ -1115,9 +1115,8 @@ class vmmDetails(vmmGObjectUI):
self.remove_device(devobj)
def remove_disk(self, disk):
from ..delete import vmmDeleteDialog
dialog = vmmDeleteDialog()
dialog.set_disk(disk)
from ..delete import vmmDeleteStorage
dialog = vmmDeleteStorage(disk)
dialog.show(self.topwin, self.vm)
def remove_xml_dev(self, src_ignore):