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 /text.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 'text.py')
-rw-r--r-- | text.py | 127 |
1 files changed, 68 insertions, 59 deletions
@@ -142,83 +142,95 @@ class ProgressWindow: g.draw() self.screen.refresh() -class ExceptionWindow: - def __init__ (self, shortTraceback, longTracebackFile=None, screen=None): - self.text = "%s\n\n" % shortTraceback +class SaveExceptionWindow: + def __init__(self, anaconda, longTracebackFile=None, screen=None): + self.anaconda = anaconda + self.text = "OH NOES!\n\n" self.screen = screen - self.buttons=[TEXT_OK_BUTTON] - - if floppy.hasFloppyDevice() or flags.debug: - self.buttons.append(_("Save")) - - if hasActiveNetDev() or flags.debug: - self.buttons.append(_("Remote")) - - if not flags.livecdInstall: - self.buttons.append(_("Debug")) - - def run(self): - log.info ("in run, screen = %s" % self.screen) - self.rc = ButtonChoiceWindow(self.screen, _("Exception Occurred"), - self.text, self.buttons) - def getrc(self): - if self.rc == string.lower(_("Debug")): - return 1 - elif self.rc == string.lower(_("Save")): - return 2 - elif self.rc == string.lower(_("Remote")): - return 3 + if self.rc == TEXT_OK_CHECK: + return EXN_OK + elif self.rc == TEXT_CANCEL_CHECK: + return EXN_CANCEL + + def getDest(self): + if self.saveToDisk(): + return self.diskList.current() else: - return 0 + return map(lambda e: e.value(), [self.hostEntry, self.destEntry, self.usernameEntry, self.passwordEntry]) def pop(self): self.screen.popWindow() - self.screen.refresh() - -class ScpWindow: - def __init__(self, screen=None): - self.screen = screen - pass + self.screen.refresh() def run(self): + toplevel = GridForm(self.screen, _("Save"), 1, 5) + + self.rg = RadioGroup() + diskButton = self.rg.add(_("Save to Disk"), "disk", True) + remoteButton = self.rg.add(_("Save to Remote"), "remote", False) + buttons = ButtonBar(self.screen, [TEXT_OK_BUTTON, TEXT_CANCEL_BUTTON]) self.hostEntry = Entry(24) - self.pathEntry = Entry(24) + self.destEntry = Entry(24) self.usernameEntry = Entry(24) self.passwordEntry = Entry(24, password=1) - win = GridForm(self.screen, _("Save to Remote Host"), 1, 2) + diskList = Listbox(height=3, scroll=1) + for (dev, desc) in self.anaconda.id.diskset.exceptionDisks(self.anaconda): + distList.append("/dev/%s - %s" % (dev, desc), dev) + + diskList.setCurrent(0) + + remoteGrid = Grid(2, 4) + remoteGrid.setField(Label(_("Host")), 0, 0, anchorLeft=1) + remoteGrid.setField(self.hostEntry, 1, 0) + remoteGrid.setField(Label(_("Remote path")), 0, 1, anchorLeft=1) + remoteGrid.setField(self.destEntry, 1, 1) + remoteGrid.setField(Label(_("User name")), 0, 2, anchorLeft=1) + remoteGrid.setField(self.usernameEntry, 1, 2) + remoteGrid.setField(Label(_("Password")), 0, 3, anchorLeft=1) + remoteGrid.setField(self.passwordEntry, 1, 3) + + toplevel.add(diskButton, 0, 0, (0, 0, 0, 1)) + toplevel.add(diskList, 0, 1, (0, 0, 0, 1)) + toplevel.add(remoteButton, 0, 2, (0, 0, 0, 1)) + toplevel.add(remoteGrid, 0, 3, (0, 0, 0, 1)) + toplevel.add(buttons, 0, 4, growx=1) + + result = toplevel.run() + self.rc = buttons.buttonPressed(result) - subgrid = Grid(2, 4) - subgrid.setField(Label(_("Host")), 0, 0, anchorLeft=1) - subgrid.setField(self.hostEntry, 1, 0) - subgrid.setField(Label(_("Remote path")), 0, 1, anchorLeft=1) - subgrid.setField(self.pathEntry, 1, 1) - subgrid.setField(Label(_("User name")), 0, 2, anchorLeft=1) - subgrid.setField(self.usernameEntry, 1, 2) - subgrid.setField(Label(_("Password")), 0, 3, anchorLeft=1) - subgrid.setField(self.passwordEntry, 1, 3) + def saveToDisk(self): + return self.rg.getSelection() == "disk" - win.add(subgrid, 0, 0, (0, 0, 0, 1)) - win.add(buttons, 0, 1) +class MainExceptionWindow: + def __init__ (self, shortTraceback, longTracebackFile=None, screen=None): + self.text = "%s\n\n" % shortTraceback + self.screen = screen - result = win.run() - self.rc = buttons.buttonPressed(result) + self.buttons=[TEXT_OK_BUTTON] + + if not flags.livecdInstall: + self.buttons.append(_("Debug")) + + def run(self): + log.info ("in run, screen = %s" % self.screen) + self.rc = ButtonChoiceWindow(self.screen, _("Exception Occurred"), + self.text, self.buttons) def getrc(self): - if self.rc == TEXT_CANCEL_CHECK: - return None - elif self.rc == TEXT_OK_CHECK: - retval = (self.hostEntry.value(), self.pathEntry.value(), - self.usernameEntry.value(), self.passwordEntry.value()) - return retval + if self.rc == string.lower(_("Debug")): + return EXN_DEBUG + elif self.rc == string.lower(_("Save")): + return EXN_SAVE + else: + return EXN_OK def pop(self): self.screen.popWindow() self.screen.refresh() - pass class InstallInterface: def helpWindow(self, screen, key): @@ -422,12 +434,9 @@ class InstallInterface: return 0 - def scpWindow(self): - return ScpWindow(self.screen) - - def exceptionWindow(self, shortText, longTextFile): + def mainExceptionWindow(self, shortText, longTextFile): log.critical(shortText) - exnWin = ExceptionWindow(shortText, longTextFile, self.screen) + exnWin = MainExceptionWindow(shortText, longTextFile, self.screen) return exnWin def partedExceptionWindow(self, exc): |