diff options
author | Chris Lumens <clumens@redhat.com> | 2007-10-26 19:40:21 +0000 |
---|---|---|
committer | Chris Lumens <clumens@redhat.com> | 2007-10-26 19:40:21 +0000 |
commit | e1059c553d9465ea494ed7fa767f4d047b43f824 (patch) | |
tree | dc188742971734462b20b0f5f5ca90366a18d5b1 /gui.py | |
parent | 0bbe1d6f487b4d87264ea7879ca36b1a35b878eb (diff) | |
download | anaconda-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-x | gui.py | 139 |
1 files changed, 83 insertions, 56 deletions
@@ -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) |