summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog17
-rw-r--r--bootloader.py1
-rwxr-xr-xgui.py514
-rw-r--r--installclass.py2
-rw-r--r--iw/release_notes.py34
5 files changed, 287 insertions, 281 deletions
diff --git a/ChangeLog b/ChangeLog
index 9e119fe9f..48fd40796 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,19 @@
2006-05-17 David Cantrell <dcantrell@redhat.com>
- * installclass.py: Removed steps that don't exist anymore.
- * upgradeclass.py: Likewise.
- * kickstart.py: Likewise.
+ * installclass.py: Removed steps that don't exist anymore.
+ * upgradeclass.py: Likewise.
+ * kickstart.py: Likewise.
+
+ * gui.py: 505 lines changes in the name of threads and easier
+ readability.
+
+ * bootloader.py (writeBootloader): Pop the WaitWindow at the end of
+ function, or we sit in gtk.main() indefinitely.
+
+ * iw/release_notes.py: Wrap gtk.main() in threads_enter/threads_leave.
+ Handle dispatch and id parameters differently for now.
+
+ * docs/threads.txt: Notes about threads in anaconda.
2006-05-17 Jeremy Katz <katzj@redhat.com>
diff --git a/bootloader.py b/bootloader.py
index 993c9a5eb..d3e3d5222 100644
--- a/bootloader.py
+++ b/bootloader.py
@@ -192,6 +192,7 @@ def writeBootloader(anaconda):
_("No kernel packages were installed on your "
"system. Your boot loader configuration "
"will not be changed."))
+ w.pop()
dosync()
# return instance of the appropriate bootloader for our arch
diff --git a/gui.py b/gui.py
index fe5e34970..09c1ee954 100755
--- a/gui.py
+++ b/gui.py
@@ -99,90 +99,84 @@ def copyScreenshots():
# see if any screenshots taken
if screenshotIndex == 0:
- return
+ return
destDir = "/mnt/sysimage/root/anaconda-screenshots"
if not os.access(destDir, os.R_OK):
- try:
- os.mkdir(destDir, 0750)
- except:
- window = MessageWindow("Error Saving Screenshot",
- _("An error occurred copying the "
- "screenshots over."), type="warning")
- return
+ try:
+ os.mkdir(destDir, 0750)
+ except:
+ window = MessageWindow("Error Saving Screenshot",
+ _("An error occurred copying the "
+ "screenshots over."), type="warning")
+ return
# copy all png's over
for f in os.listdir(screenshotDir):
- (path, fname) = os.path.split(f)
- (b, ext) = os.path.splitext(f)
- if ext == ".png":
- iutil.copyFile(screenshotDir + '/' + f,
- destDir + '/' + fname)
+ (path, fname) = os.path.split(f)
+ (b, ext) = os.path.splitext(f)
+ if ext == ".png":
+ iutil.copyFile(screenshotDir + '/' + f, destDir + '/' + fname)
window = MessageWindow(_("Screenshots Copied"),
- _("The screenshots have been saved into the "
- "directory:\n\n"
- "\t/root/anaconda-screenshots/\n\n"
- "You can access these when you reboot and "
- "login as root."))
-
-
+ _("The screenshots have been saved into the "
+ "directory:\n\n"
+ "\t/root/anaconda-screenshots/\n\n"
+ "You can access these when you reboot and "
+ "login as root."))
def takeScreenShot():
global screenshotIndex
global screenshotDir
if screenshotDir is None:
- screenshotDir = "/tmp/ramfs/anaconda-screenshots"
+ screenshotDir = "/tmp/ramfs/anaconda-screenshots"
- if not os.access(screenshotDir, os.R_OK):
- try:
- os.mkdir(screenshotDir)
- except:
- screenshotDir = None
- return
+ if not os.access(screenshotDir, os.R_OK):
+ try:
+ os.mkdir(screenshotDir)
+ except:
+ screenshotDir = None
+ return
try:
- screenshot = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8,
- gtk.gdk.screen_width(), gtk.gdk.screen_height())
- screenshot.get_from_drawable(gtk.gdk.get_default_root_window(),
- gtk.gdk.colormap_get_system(),
- 0, 0, 0, 0,
- gtk.gdk.screen_width(), gtk.gdk.screen_height())
-
- if screenshot:
- while (1):
- sname = "screenshot-%04d.png" % ( screenshotIndex,)
- if not os.access(screenshotDir + '/' + sname, os.R_OK):
- break
-
- screenshotIndex = screenshotIndex + 1
- if screenshotIndex > 9999:
- log.error("Too many screenshots!")
- return
-
- screenshot.save (screenshotDir + '/' + sname, "png")
- screenshotIndex = screenshotIndex + 1
-
- window = MessageWindow(_("Saving Screenshot"),
- _("A screenshot named '%s' has been saved.") % (sname,) ,
- type="ok")
+ screenshot = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8,
+ gtk.gdk.screen_width(), gtk.gdk.screen_height())
+ screenshot.get_from_drawable(gtk.gdk.get_default_root_window(),
+ gtk.gdk.colormap_get_system(),
+ 0, 0, 0, 0,
+ gtk.gdk.screen_width(),
+ gtk.gdk.screen_height())
+
+ if screenshot:
+ while (1):
+ sname = "screenshot-%04d.png" % ( screenshotIndex,)
+ if not os.access(screenshotDir + '/' + sname, os.R_OK):
+ break
+
+ screenshotIndex = screenshotIndex + 1
+ if screenshotIndex > 9999:
+ log.error("Too many screenshots!")
+ return
+
+ screenshot.save (screenshotDir + '/' + sname, "png")
+ screenshotIndex = screenshotIndex + 1
+
+ window = MessageWindow(_("Saving Screenshot"),
+ _("A screenshot named '%s' has been saved.") % (sname,) ,
+ type="ok")
except:
- window = MessageWindow(_("Error Saving Screenshot"),
- _("An error occurred while saving "
- "the screenshot. If this occurred "
- "during package installation, you may need "
- "to try several times for it to succeed."),
- type="warning")
-
-
+ window = MessageWindow(_("Error Saving Screenshot"),
+ _("An error occurred while saving "
+ "the screenshot. If this occurred "
+ "during package installation, you may need "
+ "to try several times for it to succeed."),
+ type="warning")
+
def handleShiftPrintScrnRelease (window, event):
if (event.keyval == gtk.keysyms.Print and event.state & gtk.gdk.SHIFT_MASK):
- takeScreenShot()
-
-
-
-
+ takeScreenShot()
+
#
# HACK to make treeview work
#
@@ -193,27 +187,27 @@ def setupTreeViewFixupIdleHandler(view, store):
def scrollToIdleHandler((view, store, iddict)):
if not view or not store or not iddict:
- return
+ return
try:
- id = iddict["id"]
+ id = iddict["id"]
except:
- return
+ return
selection = view.get_selection()
if not selection:
- return
+ return
model, iter = selection.get_selected()
if not iter:
- return
+ return
path = store.get_path(iter)
col = view.get_column(0)
view.scroll_to_cell(path, col, True, 0.5, 0.5)
if id:
- gobject.source_remove(id)
+ gobject.source_remove(id)
# setup globals
def processEvents():
@@ -237,7 +231,7 @@ def partedExceptionWindow(exc):
win.vbox.pack_start (label)
numButtons = 0
buttonToAction = {}
-
+
exflags = ((parted.EXCEPTION_FIX, N_("Fix")),
(parted.EXCEPTION_YES, N_("Yes")),
(parted.EXCEPTION_NO, N_("No")),
@@ -251,6 +245,7 @@ def partedExceptionWindow(exc):
win.show_all()
rc = win.run()
win.destroy()
+
return rc
def widgetExpander(widget, growTo=None):
@@ -288,13 +283,13 @@ def rootPushBusyCursor(process=1):
global _busyCursor
_busyCursor += 1
if _busyCursor > 0:
- setCursorToBusy(process)
+ setCursorToBusy(process)
def rootPopBusyCursor():
global _busyCursor
_busyCursor -= 1
if _busyCursor <= 0:
- setCursorToNormal()
+ setCursorToNormal()
def getBusyCursorStatus():
global _busyCursor
@@ -313,65 +308,65 @@ class WrappingLabel(gtk.Label):
gtk.Label.__init__(self, label)
self.set_line_wrap(True)
self.ignoreEvents = 0
-# self.set_size_request(-1, 1)
widgetExpander(self)
def titleBarMousePressCB(widget, event, data):
if event.type & gtk.gdk.BUTTON_PRESS:
- data["state"] = 1
- data["button"] = event.button
- data["deltax"] = event.x
- data["deltay"] = event.y
-
+ data["state"] = 1
+ data["button"] = event.button
+ data["deltax"] = event.x
+ data["deltay"] = event.y
+
def titleBarMouseReleaseCB(widget, event, data):
if data["state"] and event.button == data["button"]:
- data["state"] = 0
- data["button"] = 0
- data["deltax"] = 0
- data["deltay"] = 0
+ data["state"] = 0
+ data["button"] = 0
+ data["deltax"] = 0
+ data["deltay"] = 0
def titleBarMotionEventCB(widget, event, data):
if data["state"]:
- newx = event.x_root-data["deltax"]
- newy = event.y_root-data["deltay"]
- if newx < 0:
- newx = 0
- if newy < 0:
- newy = 0
- (w, h) = data["window"].get_size()
- if (newx+w) > gtk.gdk.screen_width():
- newx = gtk.gdk.screen_width() - w
- if (newy+20) > (gtk.gdk.screen_height()):
- newy = gtk.gdk.screen_height() - 20
-
- data["window"].move(int(newx), int(newy))
+ newx = event.x_root-data["deltax"]
+ newy = event.y_root-data["deltay"]
+ if newx < 0:
+ newx = 0
+ if newy < 0:
+ newy = 0
+ (w, h) = data["window"].get_size()
+ if (newx+w) > gtk.gdk.screen_width():
+ newx = gtk.gdk.screen_width() - w
+ if (newy+20) > (gtk.gdk.screen_height()):
+ newy = gtk.gdk.screen_height() - 20
+
+ data["window"].move(int(newx), int(newy))
def addFrame(dialog, title=None, showtitle = 1):
- # We don't add a Frame in rootpath mode, as we almost certainly have a window manager
+ # We don't add a Frame in rootpath mode, as we almost certainly
+ # have a window manager
contents = dialog.get_children()[0]
dialog.remove(contents)
frame = gtk.Frame()
frame.set_shadow_type(gtk.SHADOW_OUT)
box = gtk.VBox()
try:
- if title is None:
- title = dialog.get_title()
-
- if title and not flags.rootpath:
- data = {}
- data["state"] = 0
- data["button"] = 0
- data["deltax"] = 0
- data["deltay"] = 0
- data["window"] = dialog
- eventBox = gtk.EventBox()
- eventBox.connect("button-press-event", titleBarMousePressCB, data)
- eventBox.connect("button-release-event", titleBarMouseReleaseCB, data)
- eventBox.connect("motion-notify-event", titleBarMotionEventCB,data)
- titleBox = gtk.HBox(False, 5)
- eventBox.add(titleBox)
- eventBox.modify_bg(gtk.STATE_NORMAL,
- eventBox.rc_get_style().bg[gtk.STATE_SELECTED])
+ if title is None:
+ title = dialog.get_title()
+
+ if title and not flags.rootpath:
+ data = {}
+ data["state"] = 0
+ data["button"] = 0
+ data["deltax"] = 0
+ data["deltay"] = 0
+ data["window"] = dialog
+ eventBox = gtk.EventBox()
+ eventBox.connect("button-press-event", titleBarMousePressCB, data)
+ eventBox.connect("button-release-event", titleBarMouseReleaseCB, data)
+ eventBox.connect("motion-notify-event", titleBarMotionEventCB,data)
+ titleBox = gtk.HBox(False, 5)
+ eventBox.add(titleBox)
+ eventBox.modify_bg(gtk.STATE_NORMAL, eventBox.rc_get_style().bg[gtk.STATE_SELECTED])
+
if showtitle:
titlelbl = gtk.Label("")
titlelbl.set_markup("<b>"+_(title)+"</b>")
@@ -381,12 +376,12 @@ def addFrame(dialog, title=None, showtitle = 1):
else:
s = gtk.Label("")
titleBox.pack_start(s)
- box.pack_start(eventBox, False, False)
+ box.pack_start(eventBox, False, False)
elif flags.rootpath:
dialog.set_title (title)
except:
- pass
-
+ pass
+
frame2=gtk.Frame()
frame2.set_shadow_type(gtk.SHADOW_NONE)
frame2.set_border_width(4)
@@ -399,7 +394,6 @@ def addFrame(dialog, title=None, showtitle = 1):
# make screen shots work
dialog.connect ("key-release-event", handleShiftPrintScrnRelease)
-
def findGladeFile(file):
for dir in ("/mnt/source/RHupdates/", "/tmp/updates/",
"ui/", "/usr/share/anaconda/ui/",
@@ -415,6 +409,7 @@ def getGladeWidget(file, rootwidget, i18ndomain="anaconda"):
w = xml.get_widget(rootwidget)
if w is None:
raise RuntimeError, "Unable to find root widget %s in %s" %(rootwidget, file)
+
return (xml, w)
def findPixmap(file):
@@ -435,12 +430,12 @@ def getPixbuf(file):
if not fn:
log.error("unable to load %s" %(file,))
return None
-
+
try:
pixbuf = gtk.gdk.pixbuf_new_from_file(fn)
except RuntimeError, msg:
log.error("unable to read %s: %s" %(file, msg))
- return None
+ pixbuf = None
return pixbuf
@@ -449,7 +444,7 @@ def readImageFromFile(file, height = None, width = None, dither = None,
pixbuf = getPixbuf(file)
if pixbuf is None:
log.warning("can't find pixmap %s" %(file,))
- return None
+ pixbuf = None
if (height is not None and width is not None
and height != pixbuf.get_height()
@@ -478,7 +473,6 @@ def readImageFromFile(file, height = None, width = None, dither = None,
p.set_from_icon_set(iconset, gtk.ICON_SIZE_DIALOG)
return p
-
class WaitWindow:
def __init__(self, title, text):
@@ -498,7 +492,7 @@ class WaitWindow:
box.set_shadow_type(gtk.SHADOW_NONE)
self.window.add(box)
addFrame(self.window, showtitle = 0)
- self.window.show_all()
+ self.window.show_all()
rootPushBusyCursor()
def pop(self):
@@ -525,30 +519,30 @@ class ProgressWindow:
label = WrappingLabel (text)
label.set_alignment (0.0, 0.5)
box.pack_start (label, False)
-
+
self.total = total
self.updpct = updpct
- self.progress = gtk.ProgressBar ()
+ self.progress = gtk.ProgressBar ()
box.pack_start (self.progress, True)
self.window.add(box)
addFrame(self.window, showtitle = 0)
- self.window.show_all ()
+ self.window.show_all ()
rootPushBusyCursor()
def refresh(self):
processEvents()
def set (self, amount):
- # only update widget if we've changed by 5%
- curval = self.progress.get_fraction()
- newval = float (amount) / self.total
- if newval < 0.998:
- if (newval - curval) < self.updpct and newval > curval:
- return
- self.progress.set_fraction (newval)
- processEvents ()
-
+ # only update widget if we've changed by 5%
+ curval = self.progress.get_fraction()
+ newval = float (amount) / self.total
+ if newval < 0.998:
+ if (newval - curval) < self.updpct and newval > curval:
+ return
+ self.progress.set_fraction (newval)
+ processEvents ()
+
def pop(self):
self.window.destroy ()
rootPopBusyCursor()
@@ -571,8 +565,8 @@ class ScpWindow:
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())
+ return (host.get_text(), remotePath.get_text(),
+ userName.get_text(), password.get_text())
def run(self):
self.rc = self.window.run()
@@ -676,7 +670,7 @@ class MessageWindow:
self.rc = 1
return
self.rc = None
- docustom = 0
+ docustom = 0
if type == 'ok':
buttons = gtk.BUTTONS_OK
style = gtk.MESSAGE_INFO
@@ -689,40 +683,40 @@ class MessageWindow:
elif type == 'yesno':
buttons = gtk.BUTTONS_YES_NO
style = gtk.MESSAGE_QUESTION
- elif type == 'custom':
- docustom = 1
- buttons = gtk.BUTTONS_NONE
- style = gtk.MESSAGE_QUESTION
-
- if custom_icon == "warning":
- style = gtk.MESSAGE_WARNING
- elif custom_icon == "question":
- style = gtk.MESSAGE_QUESTION
- elif custom_icon == "error":
- style = gtk.MESSAGE_ERROR
- elif custom_icon == "info":
- style = gtk.MESSAGE_INFO
-
- dialog = gtk.MessageDialog(mainWindow, 0, style, buttons, text)
-
- if docustom:
- rid=0
- for button in custom_buttons:
- if button == _("Cancel"):
- tbutton = "gtk-cancel"
- else:
- tbutton = button
-
- widget = dialog.add_button(tbutton, rid)
- rid = rid + 1
+ elif type == 'custom':
+ docustom = 1
+ buttons = gtk.BUTTONS_NONE
+ style = gtk.MESSAGE_QUESTION
+
+ if custom_icon == "warning":
+ style = gtk.MESSAGE_WARNING
+ elif custom_icon == "question":
+ style = gtk.MESSAGE_QUESTION
+ elif custom_icon == "error":
+ style = gtk.MESSAGE_ERROR
+ elif custom_icon == "info":
+ style = gtk.MESSAGE_INFO
+
+ dialog = gtk.MessageDialog(mainWindow, 0, style, buttons, text)
+
+ if docustom:
+ rid=0
+ for button in custom_buttons:
+ if button == _("Cancel"):
+ tbutton = "gtk-cancel"
+ else:
+ tbutton = button
+
+ widget = dialog.add_button(tbutton, rid)
+ rid = rid + 1
defaultchoice = rid - 1
- else:
- if default == "no":
+ else:
+ if default == "no":
defaultchoice = 0
- elif default == "yes" or default == "ok":
+ elif default == "yes" or default == "ok":
defaultchoice = 1
- else:
+ else:
defaultchoice = 0
addFrame(dialog, title=title)
@@ -730,9 +724,9 @@ class MessageWindow:
dialog.set_default_response(defaultchoice)
dialog.show_all ()
- # XXX - Messy - turn off busy cursor if necessary
- busycursor = getBusyCursorStatus()
- setCursorToNormal()
+ # XXX - Messy - turn off busy cursor if necessary
+ busycursor = getBusyCursorStatus()
+ setCursorToNormal()
rc = dialog.run()
if rc == gtk.RESPONSE_OK or rc == gtk.RESPONSE_YES:
@@ -740,15 +734,15 @@ class MessageWindow:
elif (rc == gtk.RESPONSE_CANCEL or rc == gtk.RESPONSE_NO
or rc == gtk.RESPONSE_CLOSE):
self.rc = 0
- elif rc == gtk.RESPONSE_DELETE_EVENT:
- self.rc = 0
- else:
- self.rc = rc
+ elif rc == gtk.RESPONSE_DELETE_EVENT:
+ self.rc = 0
+ else:
+ self.rc = rc
dialog.destroy()
- # restore busy cursor
- if busycursor:
- setCursorToBusy()
+ # restore busy cursor
+ if busycursor:
+ setCursorToBusy()
class InstallInterface:
def __init__ (self):
@@ -765,25 +759,25 @@ class InstallInterface:
pass
def shutdown (self):
- pass
+ pass
def setPackageProgressWindow (self, ppw):
self.ppw = ppw
def waitWindow (self, title, text):
- return WaitWindow (title, text)
+ return WaitWindow (title, text)
def progressWindow (self, title, text, total, updpct = 0.05):
- return ProgressWindow (title, text, total, updpct)
+ return ProgressWindow (title, text, total, updpct)
def packageProgressWindow (self, total, totalSize):
self.ppw.setSizes (total, totalSize)
return self.ppw
def messageWindow(self, title, text, type="ok", default = None,
- custom_buttons=None, custom_icon=None):
+ custom_buttons=None, custom_icon=None):
rc = MessageWindow (title, text, type, default,
- custom_buttons, custom_icon).getrc()
+ custom_buttons, custom_icon).getrc()
return rc
def exceptionWindow(self, shortText, longTextFile):
@@ -813,31 +807,17 @@ class InstallInterface:
"choose your diskette carefully."),
"okcancel")
rc = window.getrc()
- return not rc
+ return not rc
def getBootdisk (self):
return None
def run(self, id, dispatch):
-## from xkb import XKB
-## kb = XKB()
-
- self.dispatch = dispatch
-
- # XXX users complain when the keypad doesn't work for input.
-## if 0 and flags.setupFilesystems:
-## try:
-## kb.setMouseKeys (1)
-## except SystemError:
-## pass
+ self.dispatch = dispatch
# XXX x_already_set is a hack
if id.keyboard and not id.x_already_set:
id.keyboard.activate()
-## info = id.keyboard.getXKB()
-## if info:
-## (rules, model, layout, variant, options) = info
-## kb.setRule (model, layout, variant, "complete")
id.fsset.registerMessageWindow(self.messageWindow)
id.fsset.registerProgressWindow(self.progressWindow)
@@ -850,7 +830,7 @@ class InstallInterface:
class InstallControlWindow:
def setLanguage (self):
- if not self.__dict__.has_key('window'): return
+ if not self.__dict__.has_key('window'): return
self.reloadRcQueued = 1
@@ -860,13 +840,13 @@ class InstallControlWindow:
# reload the glade file, although we're going to keep our toplevel
self.loadGlade()
- self.window.destroy()
- self.window = self.mainxml.get_widget("mainWindow")
+ self.window.destroy()
+ self.window = self.mainxml.get_widget("mainWindow")
self.createWidgets()
self.connectSignals()
- self.setScreen()
- self.window.show()
+ self.setScreen()
+ self.window.show()
def setLtR(self):
ltrrtl = gettext.dgettext("gtk20", "default:LTR")
@@ -879,36 +859,36 @@ class InstallControlWindow:
gtk.widget_set_default_direction (gtk.TEXT_DIR_LTR)
def prevClicked (self, *args):
- try:
- self.currentWindow.getPrev ()
- except StayOnScreen:
- return
+ try:
+ self.currentWindow.getPrev ()
+ except StayOnScreen:
+ return
- self.dispatch.gotoPrev()
- self.dir = DISPATCH_BACK
+ self.dispatch.gotoPrev()
+ self.dir = DISPATCH_BACK
self.setScreen ()
def nextClicked (self, *args):
- try:
- rc = self.currentWindow.getNext ()
- except StayOnScreen:
- return
+ try:
+ rc = self.currentWindow.getNext ()
+ except StayOnScreen:
+ return
- self.dispatch.gotoNext()
- self.dir = DISPATCH_FORWARD
+ self.dispatch.gotoNext()
+ self.dir = DISPATCH_FORWARD
self.setScreen ()
def releaseNotesButtonClicked (self, widget):
- setCursorToBusy()
- win = ReleaseNotesViewer()
- win.setId(self.id)
- win.setDispatch(self.dispatch)
- win.start()
- ## desensitize button bar at bottom of screen
+ setCursorToBusy()
+ win = ReleaseNotesViewer()
+ win.setId(self.id)
+ win.setDispatch(self.dispatch)
+ win.start()
+ ## desensitize button bar at bottom of screen
#self.mainxml.get_widget("buttonBar").set_sensitive(False)
- setCursorToNormal()
+ setCursorToNormal()
def debugClicked (self, *args):
try:
@@ -930,31 +910,31 @@ class InstallControlWindow:
def handleRenderCallback(self):
self.currentWindow.renderCallback()
if flags.autostep:
- if flags.autoscreenshot:
- # let things settle down graphically
- processEvents()
- time.sleep(1)
- takeScreenShot()
- self.nextClicked()
- else:
- gobject.source_remove(self.handle)
+ if flags.autoscreenshot:
+ # let things settle down graphically
+ processEvents()
+ time.sleep(1)
+ takeScreenShot()
+ self.nextClicked()
+ else:
+ gobject.source_remove(self.handle)
def setScreen (self):
- (step, anaconda) = self.dispatch.currentStep()
- if step is None:
- gtk.main_quit()
- return
-
- if not stepToClass[step]:
- if self.dir == 1:
- return self.nextClicked()
- else:
- return self.prevClicked()
-
- (file, className) = stepToClass[step]
+ (step, anaconda) = self.dispatch.currentStep()
+ if step is None:
+ gtk.main_quit()
+ return
+
+ if not stepToClass[step]:
+ if self.dir == 1:
+ return self.nextClicked()
+ else:
+ return self.prevClicked()
+
+ (file, className) = stepToClass[step]
newScreenClass = None
- s = "from %s import %s; newScreenClass = %s" % (file, className,
- className)
+ s = "from %s import %s; newScreenClass = %s" % (file, className,
+ className)
while 1:
try:
exec s
@@ -962,9 +942,10 @@ class InstallControlWindow:
except ImportError, e:
print e
win = MessageWindow(_("Error!"),
- _("An error occurred when attempting "
- "to load an installer interface "
- "component.\n\nclassName = %s") % (className,),
+ _("An error occurred when attempting "
+ "to load an installer interface "
+ "component.\n\nclassName = %s")
+ % (className,),
type="custom", custom_icon="warning",
custom_buttons=[_("_Exit"),
_("_Retry")])
@@ -983,13 +964,13 @@ class InstallControlWindow:
custom_buttons=buttons)
sys.exit(0)
- ics = InstallControlState (self)
- ics.setPrevEnabled(self.dispatch.canGoBack())
- self.destroyCurrentWindow()
+ ics = InstallControlState (self)
+ ics.setPrevEnabled(self.dispatch.canGoBack())
+ self.destroyCurrentWindow()
self.currentWindow = newScreenClass(ics)
new_screen = self.currentWindow.getScreen(anaconda)
- if not new_screen:
+ if not new_screen:
return
self.update (ics)
@@ -997,7 +978,7 @@ class InstallControlWindow:
self.installFrame.add(new_screen)
self.installFrame.show_all()
- self.handle = gobject.idle_add(self.handleRenderCallback)
+ self.handle = gobject.idle_add(self.handleRenderCallback)
if self.reloadRcQueued:
self.window.reset_rc_styles()
@@ -1009,7 +990,7 @@ class InstallControlWindow:
child = children[0]
self.installFrame.remove (child)
child.destroy ()
- self.currentWindow = None
+ self.currentWindow = None
def update (self, ics):
self.mainxml.get_widget("backButton").set_sensitive(ics.getPrevEnabled())
@@ -1036,16 +1017,17 @@ class InstallControlWindow:
elif (event.keyval == gtk.keysyms.F12
and self.currentWindow.getICS().getNextEnabled()):
self.nextClicked()
- elif (event.keyval == gtk.keysyms.Print
- and event.state & gtk.gdk.SHIFT_MASK):
- takeScreenShot()
+ elif (event.keyval == gtk.keysyms.Print
+ and event.state & gtk.gdk.SHIFT_MASK):
+ takeScreenShot()
def createWidgets (self):
self.window.set_title(_("%s Installer") %(productName,))
# FIXME: doesn't handle the lowres case
i = self.mainxml.get_widget("headerImage")
- p = readImageFromFile("anaconda_header.png", dither = False, image = i)
+ p = readImageFromFile("anaconda_header.png",
+ dither = False, image = i)
if p is None:
print _("Unable to load title bar")
@@ -1057,14 +1039,12 @@ class InstallControlWindow:
def noop (window, event):
return True
sigs = { "on_nextButton_clicked": self.nextClicked,
- "on_rebootButton_clicked": self.nextClicked,
- "on_backButton_clicked": self.prevClicked,
- "on_relnotesButton_clicked": self.releaseNotesButtonClicked,
- "on_debugButton_clicked": self.debugClicked,
-
- "on_mainWindow_key_release_event": self.keyRelease,
- "on_mainWindow_delete_event": noop,
- }
+ "on_rebootButton_clicked": self.nextClicked,
+ "on_backButton_clicked": self.prevClicked,
+ "on_relnotesButton_clicked": self.releaseNotesButtonClicked,
+ "on_debugButton_clicked": self.debugClicked,
+ "on_mainWindow_key_release_event": self.keyRelease,
+ "on_mainWindow_delete_event": noop, }
self.mainxml.signal_autoconnect(sigs)
def loadGlade(self):
diff --git a/installclass.py b/installclass.py
index b83228ae1..2d8c73b1e 100644
--- a/installclass.py
+++ b/installclass.py
@@ -117,10 +117,8 @@ class BaseInstallClass:
"installtype",
"iscsi",
"zfcpconfig",
- "partitionmethod",
"partitionobjinit",
"parttype",
- "autopartition",
"autopartitionexecute",
"partition",
"partitiondone",
diff --git a/iw/release_notes.py b/iw/release_notes.py
index 91a9bcb46..632687eba 100644
--- a/iw/release_notes.py
+++ b/iw/release_notes.py
@@ -28,7 +28,7 @@ import gui
from rhpl.translate import _, N_
class ReleaseNotesViewer(threading.Thread):
- def __init__(self, id, dispatch, uri=None):
+ def __init__(self):
self.currentURI = None
self.htmlheader = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"></head><body bgcolor=\"white\"><pre>"
self.htmlfooter = "</pre></body></html>"
@@ -41,20 +41,31 @@ class ReleaseNotesViewer(threading.Thread):
self.vue.connect('request_object', self.requestObjectCallBack)
self.topDir = None
- self.id = id
- self.dispatch = dispatch
+ self.width = None
+ self.height = None
- if uri is None:
- uri = self.getReleaseNotes()
+ #self.id = id
+ #self.dispatch = dispatch
+ self.id = None
+ self.dispatch = None
- self.load(uri)
- self.resize()
+ if self.id is not None and self.dispatch is not None:
+ self.load()
+ self.resize()
threading.Thread.__init__(self, name='RelNotesThr')
- self.start()
+ def run(self):
+ self.load()
+ self.resize()
self.view()
+ def setId(self, id):
+ self.id = id
+
+ def setDispatch(self, dispatch):
+ self.dispatch = dispatch
+
def getReleaseNotes(self):
langs = self.id.instLanguage.getCurrentLangSearchList() + [ "" ]
suffixList = []
@@ -121,13 +132,16 @@ class ReleaseNotesViewer(threading.Thread):
def log(self, string):
print string
- def load(self, uri):
+ def load(self, uri=None):
def loadWrapper(baloney):
self.doc.open_stream('text/html')
self.doc.write_stream(self.htmlheader)
self.doc.write_stream(baloney)
self.doc.write_stream(self.htmlfooter)
+ if uri is None:
+ uri = self.getReleaseNotes()
+
if os.access(uri, os.R_OK):
try:
f = self.openURI(uri)
@@ -228,7 +242,9 @@ class ReleaseNotesViewer(threading.Thread):
cursor = gtk.gdk.Cursor(gtk.gdk.LEFT_PTR)
root.set_cursor(cursor)
+ gtk.threads_enter()
gtk.main()
+ gtk.threads_leave()
def resolveURI(self, link):
parts = urlparse.urlparse(link)