summaryrefslogtreecommitdiffstats
path: root/gui.py
diff options
context:
space:
mode:
authorChris Lumens <clumens@redhat.com>2007-10-26 19:40:21 +0000
committerChris Lumens <clumens@redhat.com>2007-10-26 19:40:21 +0000
commite1059c553d9465ea494ed7fa767f4d047b43f824 (patch)
treedc188742971734462b20b0f5f5ca90366a18d5b1 /gui.py
parent0bbe1d6f487b4d87264ea7879ca36b1a35b878eb (diff)
downloadanaconda-e1059c553d9465ea494ed7fa767f4d047b43f824.tar.gz
anaconda-e1059c553d9465ea494ed7fa767f4d047b43f824.tar.xz
anaconda-e1059c553d9465ea494ed7fa767f4d047b43f824.zip
Rework the exception handling dialog to make it easier to add destinations
other than floppy and remote via scp in the future. USB support is almost there.
Diffstat (limited to 'gui.py')
-rwxr-xr-xgui.py139
1 files changed, 83 insertions, 56 deletions
diff --git a/gui.py b/gui.py
index 363b642b8..63703fe3d 100755
--- a/gui.py
+++ b/gui.py
@@ -562,33 +562,6 @@ class ProgressWindow:
self.window.destroy ()
rootPopBusyCursor()
-class ScpWindow:
- def __init__(self, screen=None):
- self.scpxml = gtk.glade.XML(findGladeFile("scp.glade"),
- domain="anaconda")
- self.win = self.scpxml.get_widget("saveRemoteDlg")
-
- addFrame(self.win)
- self.win.show_all()
- self.window = self.win
-
- def getrc(self):
- if self.rc == 0:
- return None
- else:
- host = self.scpxml.get_widget("hostEntry")
- remotePath = self.scpxml.get_widget("remotePathEntry")
- userName = self.scpxml.get_widget("userNameEntry")
- password = self.scpxml.get_widget("passwordEntry")
- return (host.get_text(), remotePath.get_text(),
- userName.get_text(), password.get_text())
-
- def run(self):
- self.rc = self.window.run()
-
- def pop(self):
- self.window.destroy()
-
class InstallKeyWindow:
def __init__(self, anaconda, key):
(keyxml, self.win) = getGladeWidget("instkey.glade", "instkeyDialog")
@@ -644,9 +617,79 @@ class InstallKeyWindow:
def destroy(self):
self.win.destroy()
-
-class ExceptionWindow:
+class SaveExceptionWindow:
+ def __init__(self, anaconda, longTracebackFile=None, screen=None):
+ exnxml = gtk.glade.XML(findGladeFile("exnSave.glade"), domain="anaconda")
+
+ self.hostEntry = exnxml.get_widget("hostEntry")
+ self.destEntry = exnxml.get_widget("destEntry")
+ self.usernameEntry = exnxml.get_widget("usernameEntry")
+ self.passwordEntry = exnxml.get_widget("passwordEntry")
+
+ self.diskButton = exnxml.get_widget("diskButton")
+ self.diskCombo = exnxml.get_widget("diskCombo")
+ self.remoteButton = exnxml.get_widget("remoteButton")
+ self.remoteBox = exnxml.get_widget("remoteHBox")
+ self.win = exnxml.get_widget("saveDialog")
+
+ self.diskButton.connect("toggled", self.diskButton_changed)
+
+ cell = gtk.CellRendererText()
+ self.diskCombo.pack_start(cell, True)
+ self.diskCombo.set_attributes(cell, text=1)
+
+ store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
+
+ dests = anaconda.id.diskset.exceptionDisks(anaconda)
+
+ if len(dests) > 0:
+ for d in dests:
+ iter = store.append(None)
+ store[iter] = (d[0], "/dev/%s - %s" % (d[0], d[1]))
+
+ self.diskCombo.set_model(store)
+ self.diskCombo.set_active(0)
+ else:
+ self.diskButton.set_sensitive(False)
+ self.remoteButton.set_active(True)
+ self.diskCombo.set_sensitive(False)
+ self.remoteBox.set_sensitive(True)
+
+ addFrame(self.win)
+ self.win.show_all()
+ self.window = self.win
+
+ def diskButton_changed(self, args):
+ self.diskCombo.set_sensitive(self.diskButton.get_active())
+ self.remoteBox.set_sensitive(not self.diskButton.get_active())
+
+ def getrc(self):
+ if self.rc == gtk.RESPONSE_OK:
+ return EXN_OK
+ elif self.rc == gtk.RESPONSE_CANCEL:
+ return EXN_CANCEL
+
+ def getDest(self):
+ if self.saveToDisk():
+ active = self.diskCombo.get_active()
+ if active < 0:
+ return None
+
+ return self.diskCombo.get_model()[active][0]
+ else:
+ return map(lambda e: e.get_text(), [self.hostEntry, self.destEntry, self.usernameEntry, self.passwordEntry])
+
+ def pop(self):
+ self.window.destroy()
+
+ def run(self):
+ self.rc = self.window.run ()
+
+ def saveToDisk(self):
+ return self.diskButton.get_active()
+
+class MainExceptionWindow:
def __init__ (self, shortTraceback, longTracebackFile=None, screen=None):
# Get a bunch of widgets from the XML file.
exnxml = gtk.glade.XML(findGladeFile("exn.glade"), domain="anaconda")
@@ -669,21 +712,11 @@ class ExceptionWindow:
textbuf = gtk.TextBuffer()
textbuf.set_text(shortTraceback)
- # Remove the debug button since it doesn't work in livecd mode anyway
+ # Remove the debug button since it doesn't work in livecd mode anyway.
if flags.livecdInstall:
debugButton = exnxml.get_widget("debugButton")
buttonBox.remove(debugButton)
- # Remove the floppy button if we don't need it.
- if not floppy.hasFloppyDevice() and not flags.debug:
- floppyButton = exnxml.get_widget("floppyButton")
- buttonBox.remove(floppyButton)
-
- # Remove the remote button if there's no network.
- if not hasActiveNetDev() and not flags.debug:
- remoteButton = exnxml.get_widget("remoteButton")
- buttonBox.remove(remoteButton)
-
# If there's an anacdump.txt file, add it to the lower view in the
# expander. If not, remove the expander.
if longTracebackFile:
@@ -708,32 +741,25 @@ class ExceptionWindow:
vbox.remove(expander)
addFrame(self.win)
- self.win.show_all ()
+ self.win.show_all()
self.window = self.win
def run(self):
self.rc = self.window.run ()
def getrc (self):
- # I did it this way for future expantion
- # 0 is debug
if self.rc == 0:
try:
# switch to VC1 so we can debug
isys.vtActivate (1)
except SystemError:
pass
- return 1
- # 1 is save to floppy
+ return EXN_DEBUG
if self.rc == 1:
- return 2
- # 2 is OK
+ return EXN_SAVE
elif self.rc == 2:
- return 0
- # 3 is save to remote host
- elif self.rc == 3:
- return 3
-
+ return EXN_OK
+
def pop(self):
self.window.destroy()
@@ -942,13 +968,14 @@ class InstallInterface:
d.destroy()
return rc
- def exceptionWindow(self, shortText, longTextFile):
+ def mainExceptionWindow(self, shortText, longTextFile):
log.critical(shortText)
- win = ExceptionWindow (shortText, longTextFile)
+ win = MainExceptionWindow (shortText, longTextFile)
return win
- def scpWindow(self):
- return ScpWindow()
+ def saveExceptionWindow(self, anaconda, longTextFile):
+ win = SaveExceptionWindow (anaconda, longTextFile)
+ return win
def getInstallKey(self, anaconda, key = ""):
d = InstallKeyWindow(anaconda, key)