summaryrefslogtreecommitdiffstats
path: root/text.py
diff options
context:
space:
mode:
Diffstat (limited to 'text.py')
-rw-r--r--text.py127
1 files changed, 69 insertions, 58 deletions
diff --git a/text.py b/text.py
index 51c02392f..70a5331dc 100644
--- a/text.py
+++ b/text.py
@@ -142,32 +142,7 @@ class SaveExceptionWindow:
def __init__(self, anaconda, longTracebackFile=None, screen=None):
self.anaconda = anaconda
self.screen = screen
-
- def _destCb(self, *args):
- if self.rg.getSelection() == "disk":
- self.bugzillaNameEntry.setFlags(FLAG_DISABLED, FLAGS_SET)
- self.bugzillaPasswordEntry.setFlags(FLAG_DISABLED, FLAGS_SET)
- self.bugDesc.setFlags(FLAG_DISABLED, FLAGS_SET)
- self.scpNameEntry.setFlags(FLAG_DISABLED, FLAGS_SET)
- self.scpPasswordEntry.setFlags(FLAG_DISABLED, FLAGS_SET)
- self.scpHostEntry.setFlags(FLAG_DISABLED, FLAGS_SET)
- self.scpDestEntry.setFlags(FLAG_DISABLED, FLAGS_SET)
- elif self.rg.getSelection() == "scp":
- self.bugzillaNameEntry.setFlags(FLAG_DISABLED, FLAGS_SET)
- self.bugzillaPasswordEntry.setFlags(FLAG_DISABLED, FLAGS_SET)
- self.bugDesc.setFlags(FLAG_DISABLED, FLAGS_SET)
- self.scpNameEntry.setFlags(FLAG_DISABLED, FLAGS_RESET)
- self.scpPasswordEntry.setFlags(FLAG_DISABLED, FLAGS_RESET)
- self.scpHostEntry.setFlags(FLAG_DISABLED, FLAGS_RESET)
- self.scpDestEntry.setFlags(FLAG_DISABLED, FLAGS_RESET)
- else:
- self.bugzillaNameEntry.setFlags(FLAG_DISABLED, FLAGS_RESET)
- self.bugzillaPasswordEntry.setFlags(FLAG_DISABLED, FLAGS_RESET)
- self.bugDesc.setFlags(FLAG_DISABLED, FLAGS_RESET)
- self.scpNameEntry.setFlags(FLAG_DISABLED, FLAGS_SET)
- self.scpPasswordEntry.setFlags(FLAG_DISABLED, FLAGS_SET)
- self.scpHostEntry.setFlags(FLAG_DISABLED, FLAGS_SET)
- self.scpDestEntry.setFlags(FLAG_DISABLED, FLAGS_SET)
+ self._method = "disk"
def getrc(self):
if self.rc == TEXT_OK_CHECK:
@@ -192,25 +167,29 @@ class SaveExceptionWindow:
self.screen.popWindow()
self.screen.refresh()
- def run(self):
- toplevel = GridForm(self.screen, _("Save"), 1, 7)
+ def runSaveToDisk(self):
+ toplevel = GridForm(self.screen, _("Save to local disk"), 1, 2)
- self.rg = RadioGroup()
- self.diskButton = self.rg.add(_("Save to local disk"), "disk", True)
- self.bugzillaButton = self.rg.add(_("Send to bugzilla (%s)") % product.bugUrl, "bugzilla", False)
- self.scpButton = self.rg.add(_("Send to remote server (scp)"), "scp", False)
+ buttons = ButtonBar(self.screen, [TEXT_OK_BUTTON, TEXT_CANCEL_BUTTON])
+ self.diskList = Listbox(height=3, scroll=1)
+
+ for (dev, desc) in self.dests:
+ self.diskList.append("/dev/%s - %s" % (dev, desc), dev)
+
+ toplevel.add(self.diskList, 0, 0, (0, 0, 0, 1))
+ toplevel.add(buttons, 0, 1, growx=1)
- self.diskButton.setCallback(self._destCb, None)
- self.bugzillaButton.setCallback(self._destCb, None)
- self.scpButton.setCallback(self._destCb, None)
+ result = toplevel.run()
+ return buttons.buttonPressed(result)
+
+ def runSaveToBugzilla(self):
+ toplevel = GridForm(self.screen, _("Send to bugzilla (%s)") % product.bugUrl, 1, 2)
buttons = ButtonBar(self.screen, [TEXT_OK_BUTTON, TEXT_CANCEL_BUTTON])
self.bugzillaNameEntry = Entry(24)
self.bugzillaPasswordEntry = Entry(24, password=1)
self.bugDesc = Entry(24)
- self.diskList = Listbox(height=3, scroll=1)
-
bugzillaGrid = Grid(2, 3)
bugzillaGrid.setField(Label(_("User name")), 0, 0, anchorLeft=1)
bugzillaGrid.setField(self.bugzillaNameEntry, 1, 0)
@@ -219,6 +198,16 @@ class SaveExceptionWindow:
bugzillaGrid.setField(Label(_("Bug Description")), 0, 2, anchorLeft=1)
bugzillaGrid.setField(self.bugDesc, 1, 2)
+ toplevel.add(bugzillaGrid, 0, 0, (0, 0, 0, 1))
+ toplevel.add(buttons, 0, 1, growx=1)
+
+ result = toplevel.run()
+ return buttons.buttonPressed(result)
+
+ def runSaveToRemote(self):
+ toplevel = GridForm(self.screen, _("Send to remote server (scp)"), 1, 2)
+
+ buttons = ButtonBar(self.screen, [TEXT_OK_BUTTON, TEXT_CANCEL_BUTTON])
self.scpNameEntry = Entry(24)
self.scpPasswordEntry = Entry(24, password=1)
self.scpHostEntry = Entry(24)
@@ -234,45 +223,67 @@ class SaveExceptionWindow:
scpGrid.setField(Label(_("Destination file")), 0, 3, anchorLeft=1)
scpGrid.setField(self.scpDestEntry, 1, 3)
+ toplevel.add(scpGrid, 0, 0, (0, 0, 0, 1))
+ toplevel.add(buttons, 0, 1, growx=1)
+
+ result = toplevel.run()
+ return buttons.buttonPressed(result)
+
+ def run(self):
+ mapping = {"disk": self.runSaveToDisk,
+ "scp": self.runSaveToRemote,
+ "bugzilla": self.runSaveToBugzilla}
+
+ toplevel = GridForm(self.screen, _("Save"), 1, 4)
+
+ self.rg = RadioGroup()
+ self.diskButton = self.rg.add(_("Save to local disk"), "disk", True)
+ self.bugzillaButton = self.rg.add(_("Send to bugzilla (%s)") % product.bugUrl, "bugzilla", False)
+ self.scpButton = self.rg.add(_("Send to remote server (scp)"), "scp", False)
+
+ buttons = ButtonBar(self.screen, [TEXT_OK_BUTTON, TEXT_CANCEL_BUTTON])
+
toplevel.add(self.diskButton, 0, 0, (0, 0, 0, 1))
- toplevel.add(self.diskList, 0, 1, (0, 0, 0, 1))
- toplevel.add(self.bugzillaButton, 0, 2, (0, 0, 0, 1))
- toplevel.add(bugzillaGrid, 0, 3, (0, 0, 0, 1))
- toplevel.add(self.scpButton, 0, 4, (0, 0, 0, 1))
- toplevel.add(scpGrid, 0, 5, (0, 0, 0, 1))
- toplevel.add(buttons, 0, 6, growx=1)
+ toplevel.add(self.bugzillaButton, 0, 1, (0, 0, 0, 1))
+ toplevel.add(self.scpButton, 0, 2, (0, 0, 0, 1))
+ toplevel.add(buttons, 0, 3, growx=1)
try:
- dests = self.anaconda.id.storage.exceptionDisks()
+ self.dests = self.anaconda.id.storage.exceptionDisks()
except Exception as e:
log.error("Error when probing exception disks: %s" % e)
- dests = []
-
- if len(dests) > 0:
- for (dev, desc) in dests:
- self.diskList.append("/dev/%s - %s" % (dev, desc), dev)
-
-# self.diskList.setCurrent("sda")
+ self.dests = []
- self.bugzillaNameEntry.setFlags(FLAG_DISABLED, FLAGS_SET)
- self.bugzillaPasswordEntry.setFlags(FLAG_DISABLED, FLAGS_SET)
- else:
+ # If there aren't any local disks, don't set it to be the default.
+ if len(self.dests) == 0:
self.diskButton.w.checkboxSetFlags(FLAG_DISABLED, FLAGS_SET)
self.diskButton.w.checkboxSetValue(" ")
self.bugzillaButton.w.checkboxSetFlags(FLAG_DISABLED, FLAGS_RESET)
self.bugzillaButton.w.checkboxSetValue("*")
- result = toplevel.run()
- self.rc = buttons.buttonPressed(result)
+ while True:
+ result = toplevel.run()
+ rc = buttons.buttonPressed(result)
+
+ if rc == TEXT_OK_CHECK:
+ if mapping[self.rg.getSelection()]() == TEXT_CANCEL_CHECK:
+ continue
+
+ self.rc = TEXT_OK_CHECK
+ self._method = self.rg.getSelection()
+ else:
+ self.rc = TEXT_CANCEL_CHECK
+
+ break
def saveToDisk(self):
- return self.rg.getSelection() == "disk"
+ return self._method == "disk"
def saveToLocal(self):
return False
def saveToRemote(self):
- return self.rg.getSelection() == "scp"
+ return self._method == "scp"
class MainExceptionWindow:
def __init__ (self, shortTraceback, longTracebackFile=None, screen=None):