import sys import wx import wx.html as html from webbrowser import open_new from threading import Thread from traceback import print_exc from Tribler.timeouturlopen import urlOpenTimeout ################################################################ # # Class: MyHtmlWindow # # Helper class to display html in a panel and handle clicking # on urls. # ################################################################ class MyHtmlWindow(html.HtmlWindow): def __init__(self, parent, id): html.HtmlWindow.__init__(self, parent, id, size=(400, 300)) self.Bind(wx.EVT_SCROLLWIN, self.OnScroll) def OnScroll(self, event): event.Skip() def OnLinkClicked(self, linkinfo): t = Thread(target = open_new(linkinfo.GetHref())) t.setName( "AboutMeLinkOpen"+t.getName() ) t.setDaemon(True) t.start() ################################################################ # # Class: MyHtmlDialog # # Displays html formatted information in a dialog # ################################################################ class MyHtmlDialog(wx.Dialog): def __init__(self, parent, title, content): wx.Dialog.__init__(self, parent, -1, title) btn = wx.Button(self, wx.ID_OK, " OK ") btn.SetDefault() color = self.GetBackgroundColour() bgcolor = "#%02x%02x%02x" % (color.Red(), color.Green(), color.Blue()) about_html = "" + title + "" + \ "" + \ content + \ "" self.html = MyHtmlWindow(self, -1) self.html.SetPage(about_html) buttonbox = wx.BoxSizer(wx.HORIZONTAL) buttonbox.Add(btn, 0, wx.ALL, 5) outerbox = wx.BoxSizer(wx.VERTICAL) outerbox.Add(self.html, 0, wx.EXPAND|wx.ALL, 5) outerbox.Add(buttonbox, 0, wx.ALIGN_CENTER) self.SetAutoLayout(True) self.SetSizer(outerbox) self.Fit() ################################################################ # # Class: VersionDialog # # Show information about the current version of ABC # ################################################################ class VersionDialog(MyHtmlDialog): def __init__(self, parent): self.parent = parent self.utility = parent.utility content = "" try : if not self.hasNewVersion(): content += "" content += self.utility.lang.get('nonewversion') content += "
\n" content += "
" else: content += "" newversion = self.utility.lang.get('hasnewversion') content += "" + newversion + "" content += "
\n" content += "
" except : content = self.utility.lang.get('cantconnectwebserver') print_exc() title = self.utility.lang.get('abclatestversion') MyHtmlDialog.__init__(self, parent, title, content) def hasNewVersion(self): my_version = self.utility.getVersion() try: # Arno: TODO: don't let this be done by MainThread curr_status = urlOpenTimeout('http://tribler.org/version/').readlines() line1 = curr_status[0] if len(curr_status) > 1: self.update_url = curr_status[1].strip() else: self.update_url = 'http://tribler.org/' _curr_status = line1.split() self.curr_version = _curr_status[0] return self.newversion(self.curr_version, my_version) except: print_exc() return False def newversion(self, curr_version, my_version): curr = curr_version.split('.') my = my_version.split('.') if len(my) >= len(curr): nversion = len(my) else: nversion = len(curr) for i in range(nversion): if i < len(my): my_v = int(my[i]) else: my_v = 0 if i < len(curr): curr_v = int(curr[i]) else: curr_v = 0 if curr_v > my_v: return True elif curr_v < my_v: return False return False ################################################################ # # Class: AboutMeDialog # # Display credits information about who has contributed to ABC # along with what software modules it uses. # ################################################################ class AboutMeDialog(MyHtmlDialog): def __init__(self, parent): self.parent = parent self.utility = parent.utility bittornado_version = "0.3.13" py2exe_version = "0.6.2" nsis_version = "2.09" title = self.utility.lang.get('aboutabc') # # Start UI in Dialog # ####################### # # btn = wx.Button(self, wx.ID_OK, " OK ") # btn.SetDefault() # # color = self.GetBackgroundColour() # bgcolor = "#%02x%02x%02x" % (color.Red(), color.Green(), color.Blue()) wx_version = str(wx.MAJOR_VERSION) + "." + str(wx.MINOR_VERSION) + "." + str(wx.RELEASE_NUMBER) major, minor, micro, releaselevel, serial = sys.version_info python_version = str(major) + "." + str(minor) + "." + str(micro) content = "
" + \ self.utility.lang.get('title') + \ "
" + \ self.utility.lang.get('version') + \ "
" + \ "" + \ "

" + \ "" + \ "" + \ "" + \ "" + \ "" + \ "" + \ "" + \ "" + \ "" + \ "" + \ "" + \ "" + \ "" + \ "" + \ "" + \ "" + \ "" + \ "" + \ "" + \ "" + \ "" + \ "" + \ ""\ "" + \ "
Author:Tribler Team & Choopan Rattanapoka (choopanr@hotmail.com)
Date:" + self.utility.lang.get('build_date') + "
Homepage:Tribler Homepage
Forums:Tribler Forums
Additional Code:Tim Tucker (abc@timtucker.com)
 " + \ "NoirSoldats (noirsoldats@codemeu.com)" + \ "
kratoak5" + \ "
roee88" + \ "
Delft University of Technology (triblersoft@gmail.com)" + \ "
Vrije Universiteit Amsterdam" + \ "
" + self.utility.lang.get('translate') + "
" + \ "

The system core is BitTornado " + bittornado_version + "" + \ "
based on Bittorrent coded by Bram Cohen" + \ "

Special Thanks:" + \ "
Greg Fleming (www.darkproject.com)" + \ "
Pir4nhaX (www.clanyakuza.com)" + \ "
Michel Hartmann (php4abc.i-networx.de)" + \ "
Everybody for supporting ABC" + \ "

Powered by Python " + python_version + ", " + \ "wxPython " + wx_version + ", " + \ "py2exe " + py2exe_version + ", " + \ "NSIS " + nsis_version + "" + \ "

Copyright (c) 2003-2004, Choopan Rattanapoka" + \ "

Copyright (c) 2005-2007, Delft University of Technology and Vrije Universiteit Amsterdam" + \ "" MyHtmlDialog.__init__(self, parent, title, content)