Merge heads

This commit is contained in:
Daniel P. Berrange
2006-07-19 14:36:35 -04:00
10 changed files with 122 additions and 23 deletions

BIN
pixmaps/icon_shutdown.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 814 B

View File

@@ -6,7 +6,7 @@ bin_SCRIPTS = virt-manager
pythondir = $(pkgdatadir)
python_SOURCES = $(PACKAGE).py.in
python_DATA = $(PACKAGE).py
python_SCRIPTS = $(PACKAGE).py
libexec_SOURCES = $(PACKAGE)-launch.in
libexec_SCRIPTS = $(PACKAGE)-launch
@@ -22,7 +22,7 @@ dbusdir = $(datadir)/dbus-1/services
dbus_SOURCES = $(PACKAGE).service.in
dbus_DATA = $(PACKAGE).service
CLEANFILES = $(bin_SCRIPTS) $(desktop_DATA) $(dbus_DATA) $(python_DATA) $(libexec_SCRIPTS)
CLEANFILES = $(bin_SCRIPTS) $(desktop_DATA) $(dbus_DATA) $(python_SCRIPTS) $(libexec_SCRIPTS)
EXTRA_DIST = $(bin_SOURCES) $(desktop_SOURCES) $(dbus_SOURCES) $(python_SOURCES) $(glade_DATA) $(libexec_SOURCES)

View File

@@ -3265,4 +3265,70 @@ Inactive virtual machines</property>
</child>
</widget>
<widget class="GtkWindow" id="vmm-save-progress">
<property name="visible">True</property>
<property name="title" translatable="yes">Saving VM Image</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<property name="decorated">True</property>
<property name="skip_taskbar_hint">False</property>
<property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<property name="focus_on_map">True</property>
<property name="urgency_hint">True</property>
<child>
<widget class="GtkVBox" id="vbox13">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkLabel" id="label94">
<property name="visible">True</property>
<property name="label" translatable="yes">Please wait while the VM image saves...</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.600000023842</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="padding">10</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkProgressBar" id="pbar">
<property name="visible">True</property>
<property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
<property name="fraction">0</property>
<property name="pulse_step">0.10000000149</property>
<property name="text" translatable="yes"></property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
</widget>
<packing>
<property name="padding">5</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
</widget>
</child>
</widget>
</glade-interface>

View File

@@ -1,5 +1,5 @@
pythondir = $(pkgdatadir)/virtManager
python_DATA = $(wildcard $(srcdir)/*.py)
python_SCRIPTS = $(wildcard $(srcdir)/*.py)
EXTRA_DIST = $(python_DATA)
EXTRA_DIST = $(python_SCRIPTS)

View File

@@ -51,7 +51,7 @@ class vmmConsole(gobject.GObject):
self.window.get_widget("control-pause").get_icon_widget().set_from_file(config.get_icon_dir() + "/icon_pause.png")
self.window.get_widget("control-shutdown").set_icon_widget(gtk.Image())
#self.window.get_widget("control-shutdown").get_icon_widget().set_from_file(config.get_icon_dir() + "/icon_run.png")
self.window.get_widget("control-shutdown").get_icon_widget().set_from_file(config.get_icon_dir() + "/icon_shutdown.png")
self.window.get_widget("control-terminal").set_icon_widget(gtk.Image())
self.window.get_widget("control-terminal").get_icon_widget().set_from_file(config.get_icon_dir() + "/icon_launch_term.png")

View File

@@ -52,7 +52,7 @@ class vmmDetails(gobject.GObject):
self.window.get_widget("control-pause").get_icon_widget().set_from_file(config.get_icon_dir() + "/icon_pause.png")
self.window.get_widget("control-shutdown").set_icon_widget(gtk.Image())
#self.window.get_widget("control-shutdown").get_icon_widget().set_from_file(config.get_icon_dir() + "/icon_run.png")
self.window.get_widget("control-shutdown").get_icon_widget().set_from_file(config.get_icon_dir() + "/icon_shutdown.png")
self.window.get_widget("control-terminal").set_icon_widget(gtk.Image())
self.window.get_widget("control-terminal").get_icon_widget().set_from_file(config.get_icon_dir() + "/icon_launch_term.png")
@@ -61,7 +61,7 @@ class vmmDetails(gobject.GObject):
self.window.get_widget("control-save-domain").get_icon_widget().set_from_file(config.get_icon_dir() + "/icon_snapshot.png")
self.window.get_widget("control-console").set_icon_widget(gtk.Image())
#self.window.get_widget("control-console").get_icon_widget().set_from_file(config.get_icon_dir() + "/icon_snapshot.png")
self.window.get_widget("control-console").get_icon_widget().set_from_file(config.get_icon_dir() + "/icon_launch_term.png")
self.window.get_widget("hw-panel").set_show_tabs(False)

View File

@@ -117,7 +117,6 @@ class vmmDomain(gobject.GObject):
}
self.record.insert(0, newStats)
nSamples = 5
#nSamples = len(self.record)
if nSamples > len(self.record):
@@ -240,6 +239,10 @@ class vmmDomain(gobject.GObject):
self.vm.resume()
self._update_status()
def save(self, file):
self.vm.save(file)
self._update_status()
def status(self):
return self.lastStatus

View File

@@ -28,14 +28,12 @@ from virtManager.preferences import vmmPreferences
from virtManager.manager import vmmManager
from virtManager.details import vmmDetails
from virtManager.console import vmmConsole
# from virtManager.savedialog import vmmSaveDialog
class vmmEngine:
def __init__(self, config):
self.windowConnect = None
self.windowPreferences = None
self.windowAbout = None
self.connections = {}
self.timer = None
@@ -124,7 +122,7 @@ class vmmEngine:
def _do_show_console(self, src, uri, uuid):
self.show_console(uri, uuid)
def _do_save_domain(self, src, uri, uuid):
self.save_domain(uri, uuid)
self.save_domain(src, uri, uuid)
def show_about(self):
if self.windowAbout == None:
@@ -201,11 +199,41 @@ class vmmEngine:
return self.connections[uri]["connection"]
def save_domain(self, uri, uuid):
def save_domain(self, src, uri, uuid):
con = self.get_connection(uri, False)
vm = con.get_vm(uuid)
status = vm.status()
if status in [ libvirt.VIR_DOMAIN_SHUTDOWN, libvirt.VIR_DOMAIN_SHUTOFF, libvirt.VIR_DOMAIN_CRASHED, libvirt.VIR_DOMAIN_PAUSED ]:
if status in [ libvirt.VIR_DOMAIN_SHUTDOWN,
libvirt.VIR_DOMAIN_SHUTOFF,
libvirt.VIR_DOMAIN_CRASHED,
libvirt.VIR_DOMAIN_PAUSED ]:
print "Save requested, but machine is shutdown / shutoff / paused"
else:
print "XXX actually save the domain"
self.fcdialog = gtk.FileChooserDialog("Save Virtual Machine",
src.window.get_widget("vmm-details"),
gtk.FILE_CHOOSER_ACTION_SAVE,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT),
None)
self.fcdialog.set_do_overwrite_confirmation(True)
# also set up the progress bar now
self.pbar_glade = gtk.glade.XML(config.get_glade_file(), "vmm-save-progress")
self.pbar_win = self.pbar_glade.get_widget("vmm-save-progress")
self.pbar_win.hide()
response = self.fcdialog.run()
self.fcdialog.hide()
if(response == gtk.RESPONSE_ACCEPT):
uri_to_save = self.fcdialog.get_filename()
# show a lovely bouncing progress bar until the vm actually saves
self.timer = gobject.timeout_add (100,
self.pbar_glade.get_widget("pbar").pulse)
self.pbar_win.present()
# actually save the vm
vm.save( uri_to_save )
gobject.source_remove(self.timer)
self.timer = 0
self.pbar_win.hide()
self.fcdialog.destroy()
self.pbar_win.destroy()

View File

@@ -1,5 +1,5 @@
pythondir = $(pkgdatadir)/vncViewer
python_DATA = $(wildcard $(srcdir)/*.py)
python_SCRIPTS = $(wildcard $(srcdir)/*.py)
EXTRA_DIST = $(python_DATA)
EXTRA_DIST = $(python_SCRIPTS)

View File

@@ -8,8 +8,8 @@ Release: 1%{_extra_release}
Summary: Virtual Machine Manager
Group: Applications/Emulators
License: GPL v2+
URL: http://people.redhat.com/berrange/virt-manager/
License: GPL
URL: http://virt-manager.et.redhat.com/
Source0: %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -28,12 +28,9 @@ Requires: gnome-keyring >= 0.4.9
# Minimum we've tested with
Requires: python-ctypes >= 0.9.9.6
# src/vncViewer/image.py needs either this
# src/vncViewer/image.py needs this but we'd like to kill it off
# soon because it pulls in TCL/TK :-(
Requires: python-imaging
# Or this
# pygame pulls in crazy dependancies such as Tcl, so we use python-imaging for now
#Requires: pygame
# But not both!
BuildRequires: pygtk2-devel
BuildRequires: gtk2-devel
@@ -63,6 +60,7 @@ rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%doc README COPYING AUTHORS ChangeLog NEWS
%{_bindir}/%{name}
%{_libexecdir}/%{name}-launch
%{_libdir}/%{name}/*
@@ -71,6 +69,10 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/dbus-1/services/%{name}.service
%changelog
* Mon Jul 17 2006 Daniel Berrange <berrange@redhat.com> - 0.1.3-1
- Fix License tag
- Updated for new release
* Wed Jun 28 2006 Daniel Berrange <berrange@redhat.com> - 0.1.2-3
- Added missing copyright headers on all .py files