[virt-tools-list] [virt-manager] [PATCH v4 3/4] asyncjob: Add enable/update details methods
Radostin Stoyanov
rstoyanov1 at gmail.com
Thu Jul 13 07:49:30 UTC 2017
Add virtual terminal emulator (Vte) in which could be shown details
of background running process.
Usage example:
- To enable details:
> asyncjob.details_enable()
- To show text inside the Vte:
> asyncjob.details_update("Some text here")
---
ui/asyncjob.ui | 33 ++++++++++++++++++++++++++++++++-
virtManager/asyncjob.py | 15 +++++++++++++++
2 files changed, 47 insertions(+), 1 deletion(-)
diff --git a/ui/asyncjob.ui b/ui/asyncjob.ui
index 91caef0..d854246 100644
--- a/ui/asyncjob.ui
+++ b/ui/asyncjob.ui
@@ -89,7 +89,6 @@
<property name="width_request">400</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="halign">start</property>
<property name="label">some warning</property>
<property name="wrap">True</property>
<property name="max_width_chars">40</property>
@@ -166,6 +165,38 @@
<property name="position">4</property>
</packing>
</child>
+ <child>
+ <object class="GtkExpander" id="details">
+ <property name="can_focus">True</property>
+ <property name="resize_toplevel">True</property>
+ <child>
+ <object class="GtkScrolledWindow" id="details-box">
+ <property name="width_request">380</property>
+ <property name="height_request">200</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Details</property>
+ <property name="use_underline">True</property>
+ <property name="track_visited_links">False</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
</object>
</child>
</object>
diff --git a/virtManager/asyncjob.py b/virtManager/asyncjob.py
index 5386296..3c96fdf 100644
--- a/virtManager/asyncjob.py
+++ b/virtManager/asyncjob.py
@@ -23,6 +23,7 @@ import traceback
from gi.repository import Gdk
from gi.repository import GLib
+from gi.repository import Vte
import libvirt
@@ -182,6 +183,9 @@ class vmmAsyncJob(vmmGObjectUI):
self._error_info = None
self._data = None
+ self._details_widget = None
+ self._details_update_cb = None
+
self._is_pulsing = True
self._meter = None
@@ -345,3 +349,14 @@ class vmmAsyncJob(vmmGObjectUI):
self._set_stage_text(stage or _("Completed"))
self.widget("pbar").set_text(progress)
self.widget("pbar").set_fraction(1)
+
+ @idle_wrapper
+ def details_enable(self):
+ self._details_widget = Vte.Terminal()
+ self.widget("details-box").add(self._details_widget)
+ self._details_widget.set_visible(True)
+ self.widget("details").set_visible(True)
+
+ @idle_wrapper
+ def details_update(self, data):
+ self._details_widget.feed(data.replace("\n", "\r\n").encode())
--
2.9.4
More information about the virt-tools-list
mailing list