Mercurial > traipse_dev
diff orpg/tools/updater.py @ 31:3769c8d6431e traipse_dev
And then I overwrite my edits. Mostly I cleaned up, only lost some small notes.
author | sirebral |
---|---|
date | Sun, 02 Aug 2009 01:00:33 -0500 |
parents | 6ef4bb8ee8ca |
children |
line wrap: on
line diff
--- a/orpg/tools/updater.py Sun Aug 02 00:43:34 2009 -0500 +++ b/orpg/tools/updater.py Sun Aug 02 01:00:33 2009 -0500 @@ -1,9 +1,9 @@ import wx -import wx.html -import webbrowser -import urllib -import zipfile -import traceback +#import wx.html +#import webbrowser +#import urllib +#import zipfile +#import traceback import hashlib import orpg.dirpath from orpg.orpgCore import * @@ -16,42 +16,6 @@ from mercurial import ui, hg, commands, repo, revlog, cmdutil dir_struct = open_rpg.get_component("dir_struct") -u = ui.ui() -r = hg.repository(u, ".") -c = r.changectx('tip') - -#repo = hg.repository(ui.ui(), 'http://hg.assembla.com/traipse') -#b = [] - -#b = commands.branches(u, r, True) -#print b - -""" -u = ui.ui() -r = hg.repository(u, ".") -l2 =[] -b = r.branchtags() -heads = dict.fromkeys(r.heads(), 1) -l = [((n in heads), r.changelog.rev(n), n, t) for t, n in b.items()] -l.sort() -l.reverse() -for ishead, r, n, t in l: l2.append(t) -print l2 -""" - -#print heads -#b = [] -#b = c.branch() -#print c.branch() -#print c.tags() - -##Process -#Pull -#Gather Changeset Info -#Display window with Branch + Changesets -#Update from Branch -Revision. - - # -------------------- @@ -65,27 +29,19 @@ # -class AboutHTMLWindow(wx.Panel): - "Window used to display the About dialog box" - # Init using the derived from class +class ChangeLog(wx.Panel): def __init__( self, parent, id): wx.Panel.__init__( self, parent, id, size=(400, -1)) - def OnLinkClicked( self, ref ): - "Open an external browser to resolve our About box links!!!" - href = ref.GetHref() - webbrowser.open( href ) - class updaterFrame(wx.Frame): def __init__(self, parent, title, openrpg): ### Update Manager self.ui = ui.ui() - self.repo = hg.repository(u, ".") + self.repo = hg.repository(self.ui, ".") self.c = self.repo.changectx('tip') - self.openrpg = openrpg self.parent = parent self.log = self.openrpg.get_component("log") @@ -105,7 +61,11 @@ self.buttons = {} self.buttons['progress_bar'] = wx.Gauge(self, wx.ID_ANY, 100) self.buttons['auto_text'] = wx.StaticText(self, wx.ID_ANY, "Auto Update") - self.buttons['auto_check'] = wx.CheckBox(self, wx.ID_ANY) + self.buttons['auto_check'] = wx.CheckBox(self, wx.ID_ANY) + + self.buttons['no_text'] = wx.StaticText(self, wx.ID_ANY, "No Update") + self.buttons['no_check'] = wx.CheckBox(self, wx.ID_ANY) + self.buttons['advanced'] = wx.Button(self, wx.ID_ANY, "Package Select") self.buttons['update'] = wx.Button(self, wx.ID_ANY, "Update Now") self.buttons['finish'] = wx.Button(self, wx.ID_ANY, "Finish") @@ -113,33 +73,32 @@ self.sizer.Add(self.changelog, (0,0), span=(3,1), flag=wx.EXPAND) self.sizer.Add(self.filelist, (0,1), span=(1,3), flag=wx.EXPAND) - self.sizer.Add(self.buttons['progress_bar'], (1,1), span=(1,3), flag=wx.EXPAND) + self.sizer.Add(self.buttons['progress_bar'], (1,1), span=(1,3), flag=wx.EXPAND) + self.sizer.Add(self.buttons['auto_text'], (2,1)) - self.sizer.Add(self.buttons['auto_check'], (2,2), flag=wx.EXPAND) + self.sizer.Add(self.buttons['auto_check'], (2,2), flag=wx.EXPAND) + + self.sizer.Add(self.buttons['no_text'], (3,1)) + self.sizer.Add(self.buttons['no_check'], (3,2), flag=wx.EXPAND) + self.sizer.Add(self.buttons['advanced'], (2,3), flag=wx.EXPAND) - self.sizer.Add(self.buttons['update'], (3,1), flag=wx.EXPAND) - self.sizer.Add(self.buttons['finish'], (3,2), span=(1,2), flag=wx.EXPAND) + self.sizer.Add(self.buttons['update'], (3,3), flag=wx.EXPAND) + self.sizer.Add(self.buttons['finish'], (4,3), span=(1,2), flag=wx.EXPAND) self.sizer.AddGrowableCol(0) self.sizer.AddGrowableRow(0) self.SetSizer(self.sizer) self.SetAutoLayout(True) self.initPrefs() - - if self.package == None: wx.CallAfter(self.Advanced) #if self.autoupdate == "On": self.buttons['auto_check'].SetValue(True) ## Event Handlers self.Bind(wx.EVT_BUTTON, self.Update, self.buttons['update']) self.Bind(wx.EVT_BUTTON, self.Finish, self.buttons['finish']) - self.Bind(wx.EVT_BUTTON, self.Advanced, self.buttons['advanced']) - self.Bind(wx.EVT_CHECKBOX, self.ToggleAutoUpdate, self.buttons['auto_check']) + #self.Bind(wx.EVT_BUTTON, self.Advanced, self.buttons['advanced']) + #self.Bind(wx.EVT_CHECKBOX, self.ToggleAutoUpdate, self.buttons['auto_check']) - try: self.check() - except: - self.buttons['finish'].Show() - self.buttons['update'].Show() def showFinish(self): if self.Updated: self.filelist.SetValue(self.filelist.GetValue() + "Finished ... \n") @@ -169,122 +128,10 @@ self.autoupdate = "Off" #self.settings.set_setting("AutoUpdate", "Off") - def check(self): - self.buttons['finish'].Hide() - self.buttons['update'].Hide() - self.updatelist = [] - wx.CallAfter(self.showFinish) - #Do the MD5 Check & DL - files = self.package._get_childNodes() - self.buttons['progress_bar'].SetRange(len(files)) - try: - i = 1 - for file in files: - checksum = md5.new() - self.buttons['progress_bar'].SetValue(i) - if file._get_tagName() == 'file': - file_name = file.getAttribute("name") - file_url = file.getAttribute("url").replace(' ', '%20') + '/' + file_name - file_path = file.getAttribute("path") - read_type = file.getAttribute("read_type") - file_checksum = file.getAttribute("checksum") - full_path = self.dir_struct["home"].replace("\\","/") + file_path + os.sep + file_name - full_path = full_path.replace("/", os.sep) - - if self.verify_file(full_path): - if read_type == 'rb': f = open(full_path, "rb") - else: f = open(full_path, "r") - data = f.read() - f.close() - checksum.update(data) - if(checksum.hexdigest() != file_checksum): - self.log.log("Read Type: " + read_type, ORPG_DEBUG) - self.log.log("Filename: " + file_name + "\n\tLocal Checksum:\t" + checksum.hexdigest() + "\n\tWeb Checksum:\t" + file_checksum, ORPG_DEBUG) - self.updatelist.append((file_url, full_path, file_name, read_type)) - else: self.updatelist.append((file_url, full_path, file_name, read_type)) - elif file._get_tagName() == 'dir': - dir_path = file.getAttribute("path") - full_path = self.dir_struct['home'] + dir_path - if not self.verify_file(full_path): - self.filelist.SetValue(self.filelist.GetValue() + "Creating Directory " + dir_path + " ...\n") - os.makedirs(full_path) - i += 1 - if len(self.updatelist) == 0: - wx.CallAfter(self.Finish) - return False - except: #error handing update check. Likely no internet connection. skip update check - self.log.log("[WARNING] Automatic update check failed.\n" + traceback.format_exc(), ORPG_GENERAL) - self.filelist.SetValue("[WARNING] Automatic update check failed.\n" + traceback.format_exc()) - return False - dmsg = "A newer version is available.\n" - for file in self.updatelist: dmsg += file[2] + " is out of date\n" - dmsg += "Would you like to update Now?" - self.filelist.SetValue(dmsg) - data = urllib.urlretrieve(self.package.getAttribute("notes").replace(' ', '%20')) - file = open(data[0]) - changelog = file.read() - file.close() - self.changelog.SetPage(changelog) - - if self.autoupdate == "Off": self.buttons['update'].Show() - if self.autoupdate == "On": wx.CallAfter(self.Update) - return True def Update(self, evt=None): hg.clean(self.repo, self.current) - - """old code - self.buttons['finish'].Hide() - self.buttons['update'].Hide() - self.buttons['advanced'].Hide() - self.buttons['progress_bar'].SetRange(len(self.updatelist)) - self.filelist.SetValue("") - self.log.log("Starting Update Proccess!", ORPG_DEBUG) - i = 1 - for file in self.updatelist: - self.downloadFile(file[0], file[1], file[2], i, file[3]) - i += 1 - self.Updated = True - self.parent.updated = True - wx.CallAfter(self.showFinish) - if self.autoupdate == 'On': wx.CallAfter(self.Finish) - """ - - def downloadFile(self, file_url, abs_path, file_name, i, read_type): - self.buttons['progress_bar'].SetValue(i) - self.buttons['finish'].Hide() - self.log.log("Downloading " + file_name, ORPG_DEBUG) - try: - self.filelist.SetValue(self.filelist.GetValue() + "Downloading " + file_name + " ...\n") - wx.Yield() - checksum = md5.new() - data = urllib.urlretrieve("http://openrpg.digitalxero.net/" + file_url) - - if read_type == 'rb': file = open(data[0], "rb") - else: file = open(data[0], "r") - - file_data = file.read() - file.close() - checksum.update(file_data) - self.log.log("Read Type: " + read_type, ORPG_DEBUG) - self.log.log("Downloaded filename: " + file_name + "\n\tDownloaded Checksum:\t" + checksum.hexdigest(), ORPG_DEBUG) - - if read_type == 'rb': file = open(abs_path, 'wb') - else: file = open(abs_path, 'w') - file.write(file_data) - file.close() - - #Debug Stuff - checksum = md5.new() - f = open(abs_path, read_type) - file_data = f.read() - f.close() - checksum.update(file_data) - self.log.log("Written filename: " + file_name + "\n\tWritten Checksum:\t" + checksum.hexdigest(), ORPG_DEBUG) - except: - self.log.log("Failed to download file: " + abs_path, ORPG_GENERAL) - self.log.log(traceback.format_exc(), ORPG_GENERAL) def Finish(self, evt=None): #self.settings.updateIni() @@ -293,10 +140,9 @@ def Advanced(self, evt=None): dlg = wx.Dialog(self, wx.ID_ANY, "Package Selector", style=wx.DEFAULT_DIALOG_STYLE) - icon = None if wx.Platform == '__WXMSW__': icon = wx.Icon(self.dir_struct["icon"]+'d20.ico', wx.BITMAP_TYPE_ICO) else: icon = wx.Icon(self.dir_struct["icon"]+"d20.xpm", wx.BITMAP_TYPE_XPM ) - if icon != None: dlg.SetIcon(icon) + dlg.SetIcon(icon) dlgsizer = wx.GridBagSizer(hgap=1, vgap=1) Yes = wx.Button( dlg, wx.ID_OK, "Ok" ) @@ -309,13 +155,14 @@ types = self.package_list - row=0 - col=0 + row=0; col=0 self.current = self.c.branch() self.package_type = self.current self.btnlist = {}; self.btn = {} self.id = 1 + self.PackageSet(None) + for t in types: self.btnName = str(t) self.btn[self.id] = wx.RadioButton(dlg, wx.ID_ANY, str(t), name=self.btnName) @@ -385,9 +232,6 @@ #for f in files: # fc = c[f] # self.filelist.AppendText(str(f + '\n')) - - - def verify_file(self, abs_path): """Returns True if file or directory exists""" @@ -400,9 +244,6 @@ def get_packages(self, type=None): #Fixed and ready for Test. Can be cleaner - - - self.package_list = [] b = self.repo.branchtags() heads = dict.fromkeys(self.repo.heads(), 1) @@ -417,18 +258,6 @@ if self.package_list == None: return None return None - def is_up2date(self, version, build): - if self.package == None: - self.SelectPackage == True - return False - vg = (version > self.package.getAttribute("version")) - ve = (version == self.package.getAttribute("version")) - b = (build >= self.package.getAttribute("build")) - - if vg: return True - if (not ve) or (not b): return False - return True - class updateApp(wx.App): def OnInit(self): self.open_rpg = open_rpg @@ -446,10 +275,8 @@ #self.settings = orpg.tools.orpg_settings.orpgSettings(self.open_rpg) #self.open_rpg.add_component("settings", self.settings) #self.settings.updateIni() - self.updater = updaterFrame(self, "OpenRPG Update Manager Beta 0.1", self.open_rpg) + self.updater = updaterFrame(self, "OpenRPG Update Manager Beta 0.2", self.open_rpg) self.updated = False - - try: self.updater.Show() self.SetTopWindow(self.updater)