[virt-tools-list] [PATCH 4/5] Use vmmFSDetails in details dialog to allow editing filesystem devices
Cédric Bosdonnat
cbosdonnat at suse.com
Tue Jan 21 09:05:31 UTC 2014
---
ui/details.ui | 214 +----------------------------------------------
virtManager/details.py | 32 +++----
virtManager/fsdetails.py | 17 ++++
3 files changed, 31 insertions(+), 232 deletions(-)
diff --git a/ui/details.ui b/ui/details.ui
index f1946c4..6277fe4 100644
--- a/ui/details.ui
+++ b/ui/details.ui
@@ -6048,223 +6048,13 @@
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <object class="GtkAlignment" id="alignment45">
+ <object class="GtkAlignment" id="fs-alignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="top_padding">3</property>
<property name="left_padding">12</property>
<child>
- <object class="GtkTable" id="table12">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="n_rows">4</property>
- <property name="n_columns">2</property>
- <property name="column_spacing">6</property>
- <property name="row_spacing">6</property>
- <child>
- <object class="GtkLabel" id="fs-mode-title">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Mode:</property>
- </object>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label64">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Driver:</property>
- </object>
- <packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="fs-wrpolicy-title">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Write Policy:</property>
- </object>
- <packing>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label65">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Source:</property>
- </object>
- <packing>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label66">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Target:</property>
- </object>
- <packing>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="fs-readonly-title">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Readonly Filesystem:</property>
- </object>
- <packing>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="fs-mode">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label">label</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="fs-driver">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label">label</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="fs-wrpolicy">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label">label</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="fs-source">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label">label</property>
- <property name="ellipsize">end</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="fs-target">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label">label</property>
- <property name="ellipsize">end</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="fs-readonly">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label">label</property>
- <property name="ellipsize">end</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label67">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Type:</property>
- </object>
- <packing>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="fs-type">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">label</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- </object>
+ <placeholder/>
</child>
</object>
</child>
diff --git a/virtManager/details.py b/virtManager/details.py
index 32d51d7..f1bcce6 100644
--- a/virtManager/details.py
+++ b/virtManager/details.py
@@ -36,6 +36,7 @@ from virtManager.addhardware import vmmAddHardware
from virtManager.choosecd import vmmChooseCD
from virtManager.snapshots import vmmSnapshotPage
from virtManager.graphwidgets import Sparkline
+from virtManager.fsdetails import vmmFSDetails
from virtinst import VirtualRNGDevice
import virtinst
@@ -551,6 +552,11 @@ class vmmDetails(vmmGObjectUI):
self.vm.connect("config-changed", self.refresh_vm_state)
self.vm.connect("resources-sampled", self.refresh_resources)
+ self.fsDetails = vmmFSDetails(self.vm)
+ self.fsDetails.set_initial_state()
+ fsAlignment = self.widget("fs-alignment")
+ fsAlignment.add(self.fsDetails.topwin)
+
self.populate_hw_list()
self.repopulate_boot_list()
@@ -582,6 +588,8 @@ class vmmDetails(vmmGObjectUI):
self.conn = None
self.addhwmenu = None
+ self.fsDetails.cleanup()
+
def show(self):
logging.debug("Showing VM details: %s", self.vm)
vis = self.is_visible()
@@ -589,6 +597,8 @@ class vmmDetails(vmmGObjectUI):
if vis:
return
+ self.fsDetails.topwin.show_all()
+
self.emit("details-opened")
self.refresh_vm_state()
@@ -3324,26 +3334,8 @@ class vmmDetails(vmmGObjectUI):
if not dev:
return
- self.widget("fs-type").set_text(dev.type)
-
- # mode can be irrelevant depending on the fs driver type
- # selected.
- if dev.mode:
- self.show_pair("fs-mode", True)
- self.widget("fs-mode").set_text(dev.mode)
- else:
- self.show_pair("fs-mode", False)
-
- self.widget("fs-driver").set_text(dev.driver or _("Default"))
-
- self.widget("fs-wrpolicy").set_text(dev.wrpolicy or _("Default"))
-
- self.widget("fs-source").set_text(dev.source or _("RAM"))
- self.widget("fs-target").set_text(dev.target)
- if dev.readonly:
- self.widget("fs-readonly").set_text("Yes")
- else:
- self.widget("fs-readonly").set_text("No")
+ self.fsDetails.set_dev(dev)
+ self.fsDetails.update_fs_rows()
def refresh_boot_page(self):
# Refresh autostart
diff --git a/virtManager/fsdetails.py b/virtManager/fsdetails.py
index a0196bb..8bfafc1 100644
--- a/virtManager/fsdetails.py
+++ b/virtManager/fsdetails.py
@@ -192,6 +192,23 @@ class vmmFSDetails(vmmGObjectUI):
return combo.get_model()[combo.get_active()][1]
# Setters
+ def set_dev(self, dev):
+ self._dev = dev
+
+ self.set_config_value("fs-type", dev.type or "default")
+ self.set_config_value("fs-mode", dev.mode or "default")
+ self.set_config_value("fs-driver", dev.driver or "default")
+ self.set_config_value("fs-wrpolicy", dev.wrpolicy or "default")
+ self.set_config_value("fs-format", dev.format or "default")
+ if dev.type != VirtualFilesystem.TYPE_RAM:
+ self.widget("fs-source").set_text(dev.source)
+ else:
+ self.set_config_ram_usage(dev.source, dev.units)
+ self.widget("fs-target").set_text(dev.target or "")
+ self.widget("fs-readonly").set_active(dev.readonly)
+
+ self.show_pair_combo("fs-type", self.conn.is_openvz() or self.conn.is_lxc())
+
def set_config_ram_usage(self, usage, units):
value = int(usage)
--
1.8.5.2
More information about the virt-tools-list
mailing list