# Created by Leo from: C:\Python23\Tom\leo\browser3.leo # -*- coding: utf-8 -*- # << webwig declarations >> import urllib2,cStringIO,sys import wx import wx.html as html import wx.lib.filebrowsebutton as filebrowse import wx.lib.newevent import HTMLparse import wx.lib.colourdb pyEVT_UPDATE_WEBFORM = wx.NewEventType() EVT_UPDATE_WEBFORM = wx.PyEventBinder(pyEVT_UPDATE_WEBFORM, 1) pyEVT_UPDATE_RADIO = wx.NewEventType() #EVT_UPDATE_RADIO = wx.PyEventBinder(pyEVT_UPDATE_RADIO, 1) # -- end -- << webwig declarations >> # << webwig methods >> (1 of 15) class WebObject: # << class WebObject methods >> def __init__(self,val): # Val = [ formname,formurl,objname,data,objtyp,self.id,win,aux] self.URL = val[1].strip() self.FormData = {} attrblist = val[0].split('|') for i in range(0,len(attrblist)-1,2): try: self.FormData[attrblist[i]] = attrblist[i+1] except: self.FormData[attrblist[i]] = '' self.Name = val[2].strip() self.Value = val[3] if val[3] == True: self.WebValue = u'&%s=%s'%(self.Name.replace(u' ',u'+'),'on') elif val[3] == False: self.WebValue = u'&%s=%s'%(self.Name.replace(u' ',u'+'),'off') else: self.WebValue = u'&%s=%s'%(self.Name.replace(u' ',u'+'),val[3].strip().replace(u' ',u'+')) self.Value = val[3].strip() self.Typ = val[4].strip() self.Id = val[5] self.Win = val[6] self.Data = val[7] # -- end -- << class WebObject methods >> # << webwig methods >> (2 of 15) class WebEvent(wx.PyCommandEvent): # << class WebEvent methods >> (1 of 3) def __init__(self, evtType, id): self.id=id wx.PyCommandEvent.__init__(self, evtType, id) self.myVal = [] # << class WebEvent methods >> (2 of 3) def SetVal(self, formname,formurl,objname,data,objtyp,win,aux = ''): self.myVal = WebObject( [formname,formurl,objname,data,objtyp,self.id,win,aux]) # << class WebEvent methods >> (3 of 3) def GetVal(self): return self.myVal # -- end -- << class WebEvent methods >> # << webwig methods >> (3 of 15) class Websubmit(wx.Button): # << class Websubmit methods >> (1 of 2) def __init__(self, parent, id=-1,label = '' ,pos = wx.DefaultPosition,size=wx.DefaultSize, style = wx.BU_LEFT,validator = wx.DefaultValidator,name = '',bgcolor=None,formname = '',formurl = ''): try: wx.Button.__init__(self, parent, id,label,pos ,size, style,validator,name) if bgcolor: self.SetBackgroundColour(bgcolor) self.Bind(wx.EVT_BUTTON, self.OnButton) self.formname = formname self.formurl = formurl self.name = name self.parent = parent self.evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) self.evt.SetVal(self.formname , self.formurl , self.name , self.GetLabel() ,'int_submit',self) self.GetEventHandler().ProcessEvent(self.evt) except: evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) evt.SetVal(sys.exc_info()[0] , sys.exc_info()[1] ,sys.exc_info()[2], '','err_submit',None) self.GetEventHandler().ProcessEvent(evt) self.Destroy() # << class Websubmit methods >> (2 of 2) def OnButton(self, event): #evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) self.evt.SetVal(self.formname , self.formurl , self.name , self.GetLabel(), 'submit',self ) self.GetEventHandler().ProcessEvent(self.evt) event.Skip() # -- end -- << class Websubmit methods >> # << webwig methods >> (4 of 15) class WebHidden(wx.BitmapButton): # << class WebHidden methods >> (1 of 2) def __init__(self, parent, id=-1,src = '' ,pos = wx.DefaultPosition,size=wx.DefaultSize, style = wx.BU_LEFT,name = '',bgcolor=None,formname = '',formurl = ''): self.data = name self.name = '' self.value = '' #try: hidict = {} newname = [] if name: newname = name.split('|') for i in range(0,len(newname)-1,2): try: hidict[newname[i]] = newname[i+1].strip() except: hidict[newname[i]] = '' for i in hidict.keys(): if i.strip() == 'name': self.name = hidict[i] elif i.strip() == 'value': self.value = hidict[i] wx.BitmapButton.__init__(self, parent, -1,wx.EmptyBitmap(0, 0) ,wx.DefaultPosition ,(0, 0)) if bgcolor: self.SetBackgroundColour(bgcolor) self.Bind(wx.EVT_BUTTON, self.OnButton) self.formname = formname self.formurl = formurl self.parent = parent self.evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) self.evt.SetVal(self.formname , self.formurl , self.name , self.value,'int_hidden',self,aux = self.data ) self.GetEventHandler().ProcessEvent(self.evt) #except: # evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) # evt.SetVal(repr(sys.exc_info()[0]) , repr(sys.exc_info()[1]) ,repr(sys.exc_info()[2]), '','err_hidden',None, self.data) # wx.BitmapButton.__init__(self, parent, -1,wx.EmptyBitmap(2, 2) ,wx.DefaultPosition ,(2, 2)) # self.GetEventHandler().ProcessEvent(evt) # << class WebHidden methods >> (2 of 2) def OnButton(self, event): self.evt.SetVal(self.formname , self.formurl , self.name , self.value , 'hidden',self,aux = self.data) self.GetEventHandler().ProcessEvent(self.evt) event.Skip() # -- end -- << class WebHidden methods >> # << webwig methods >> (5 of 15) class Webreset(wx.Button): # << class Webreset methods >> (1 of 2) def __init__(self, parent, id=-1,label = '' ,pos = wx.DefaultPosition,size=wx.DefaultSize, style = wx.BU_LEFT,validator = wx.DefaultValidator,name = '',bgcolor=None,formname = '',formurl = ''): try: wx.Button.__init__(self, parent, id,label,pos ,size, style,validator,name) if bgcolor: self.SetBackgroundColour(bgcolor) self.Bind(wx.EVT_BUTTON, self.OnButton) self.formname = formname self.formurl = formurl self.name = name self.parent = parent self.evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) self.evt.SetVal(self.formname , self.formurl , self.name , self.GetLabel() ,'int_reset',self) self.GetEventHandler().ProcessEvent(self.evt) except: evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) evt.SetVal(sys.exc_info()[0] , sys.exc_info()[1] ,sys.exc_info()[2], '','err_reset',None) self.GetEventHandler().ProcessEvent(evt) self.Destroy() # << class Webreset methods >> (2 of 2) def OnButton(self, event): #evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) self.evt.SetVal(self.formname , self.formurl , self.name , self.GetLabel(), 'reset',self ) self.GetEventHandler().ProcessEvent(self.evt) event.Skip() # -- end -- << class Webreset methods >> # << webwig methods >> (6 of 15) class WebButton(wx.Button): # << class WebButton methods >> (1 of 2) def __init__(self, parent, id=-1,label = '' ,pos = wx.DefaultPosition,size=wx.DefaultSize, style = wx.BU_LEFT,validator = wx.DefaultValidator,name = '',bgcolor=None,formname = '',formurl = ''): try: wx.Button.__init__(self, parent, id,label,pos ,size, style,validator,name) if bgcolor: self.SetBackgroundColour(bgcolor) self.Bind(wx.EVT_BUTTON, self.OnButton) self.formname = formname self.formurl = formurl self.name = name self.parent = parent self.evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) self.evt.SetVal(self.formname , self.formurl , self.name , self.GetLabel(),'int_button',self ) self.GetEventHandler().ProcessEvent(self.evt) except: evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) evt.SetVal(sys.exc_info()[0] , sys.exc_info()[1] ,sys.exc_info()[2], '','err_button',None) self.GetEventHandler().ProcessEvent(evt) self.Destroy() # << class WebButton methods >> (2 of 2) def OnButton(self, event): #self.evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) self.evt.SetVal(self.formname , self.formurl , self.name , self.GetLabel() , 'button',self) self.GetEventHandler().ProcessEvent(self.evt) event.Skip() # -- end -- << class WebButton methods >> # << webwig methods >> (7 of 15) class WebImage(wx.BitmapButton): # << class WebImage methods >> (1 of 2) def __init__(self, parent, id=-1,src = '' ,pos = wx.DefaultPosition,size=wx.DefaultSize, style = wx.BU_LEFT,validator = wx.DefaultValidator,name = '',bgcolor=None,formname = '',formurl = ''): try: if src != '': tmpbmp = urllib2.urlopen(src).read() stream = cStringIO.StringIO(tmpbmp) bmp = wx.BitmapFromImage( wx.ImageFromStream( stream )) else: bmp = wx.EmptyBitmap(20, 20) wx.BitmapButton.__init__(self, parent, -1,bmp,pos ,(bmp.GetWidth(), bmp.GetHeight()), style,validator,name) if bgcolor: self.SetBackgroundColour(bgcolor) self.Bind(wx.EVT_BUTTON, self.OnButton) self.formname = formname self.formurl = formurl self.name = name self.parent = parent self.evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) self.evt.SetVal(self.formname , self.formurl , self.name , self.GetLabel(),'int_image',self ) self.GetEventHandler().ProcessEvent(self.evt) except: evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) evt.SetVal(sys.exc_info()[0] , sys.exc_info()[1] ,sys.exc_info()[2], '','err_image',None) self.GetEventHandler().ProcessEvent(evt) self.Destroy() # << class WebImage methods >> (2 of 2) def OnButton(self, event): #self.evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) self.evt.SetVal(self.formname , self.formurl , self.name , self.GetLabel() , 'image',self) self.GetEventHandler().ProcessEvent(self.evt) event.Skip() # -- end -- << class WebImage methods >> # << webwig methods >> (8 of 15) class WebCheckBox(wx.Panel): # << class WebCheckBox methods >> (1 of 2) def __init__(self, parent, id=-1,label = '' ,pos = (-1,-1),size = wx.DefaultSize, style = wx.CHK_2STATE ,name = '',bgcolor=wx.Color(255,255,255),formname = '',formurl = ''): try: wx.Panel.__init__(self, parent, id,pos =pos, size=size) self.check = wx.CheckBox(self, -1,label,(-1, -1), (150, 20),style = style,name = name) if bgcolor: self.SetBackgroundColour(bgcolor) self.check.SetBackgroundColour(bgcolor) self.Bind(wx.EVT_CHECKBOX, self.OnCheck, self.check) self.formname = formname self.formurl = formurl self.name = name comsiz = wx.BoxSizer(wx.HORIZONTAL) comsiz.Add(self.check,1, wx.SHAPED) self.SetSizer(comsiz) self.SetAutoLayout(1) comsiz.Fit(self) self.evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) self.evt.SetVal(self.formname , self.formurl , self.name , self.check.GetValue(),'int_checkbox',self.check) self.GetEventHandler().ProcessEvent(self.evt) except: evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) evt.SetVal(sys.exc_info()[0] , sys.exc_info()[1] ,sys.exc_info()[2], '','err_checkbox',None) self.GetEventHandler().ProcessEvent(evt) self.Destroy() # << class WebCheckBox methods >> (2 of 2) def OnCheck(self, event): #evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) self.evt.SetVal(self.formname , self.formurl , self.name , self.check.GetValue(),'checkbox',self.check) self.GetEventHandler().ProcessEvent(self.evt) event.Skip() # -- end -- << class WebCheckBox methods >> # << webwig methods >> (9 of 15) class WebRadioBox(wx.Panel): # << class WebRadioBox methods >> (1 of 2) def __init__(self, parent, id=-1,label = '' ,pos = (-1,-1),size = wx.DefaultSize, style = wx.CHK_2STATE ,name = '',bgcolor=wx.Color(255,255,255),formname = '',formurl = ''): try: wx.Panel.__init__(self, parent, id,pos =pos, size=size) self.check = wx.CheckBox(self, -1,label,(-1, -1), (150, 20),style = style,name = name) if bgcolor: self.SetBackgroundColour(bgcolor) self.check.SetBackgroundColour(bgcolor) self.Bind(wx.EVT_CHECKBOX, self.OnCheck, self.check) self.formname = formname self.formurl = formurl self.name = name comsiz = wx.BoxSizer(wx.HORIZONTAL) comsiz.Add(self.check,1, wx.SHAPED) self.SetSizer(comsiz) self.SetAutoLayout(1) comsiz.Fit(self) self.evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) self.evt.SetVal(self.formname , self.formurl , self.name , self.check.GetValue(),'int_radio',self.check) self.GetEventHandler().ProcessEvent(self.evt) except: evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) evt.SetVal(sys.exc_info()[0] , sys.exc_info()[1] ,sys.exc_info()[2], '','err_radio',None) self.GetEventHandler().ProcessEvent(evt) self.Destroy() # << class WebRadioBox methods >> (2 of 2) def OnCheck(self, event): self.evt.SetVal(self.formname , self.formurl , self.name , self.check.GetValue(),'radio',self.check) self.GetEventHandler().ProcessEvent(self.evt) event.Skip() # -- end -- << class WebRadioBox methods >> # << webwig methods >> (10 of 15) class WebComboBox(wx.Panel): # << class WebComboBox methods >> (1 of 2) def __init__(self, parent, id = -1,value = '',size =wx.DefaultSize,choices = [],style = wx.CB_DROPDOWN ,name = '', bgcolor=None,formname = '',formurl = '', optdata = '',choicesL = ''): try: choices = choicesL.split('|') self.optdata = optdata.split('|') self.optdict = {} for i in range(len(choices)): try: self.optdict[choices[i]] = self.optdata[i] except: self.optdict[choices[i]] = '' #maxnum = 1 #for i in choices: # if len(i) > maxnum: # maxnum = len(i) #combosize = (maxnum * 10,-1) #panelsize = (maxnum * 10 + 5,-1) wx.Panel.__init__(self, parent, id, size=size) comsiz = wx.BoxSizer(wx.HORIZONTAL) self.Combo = wx.ComboBox(self,-1 ,value,(-1,-1),wx.DefaultSize,choices,style,name = name) for i in choices: if self.optdict[i] == 'SELECTED': self.Combo.SetValue(i) if bgcolor: self.SetBackgroundColour(bgcolor) self.Combo.SetBackgroundColour(bgcolor) self.Bind(wx.EVT_TEXT, self.OnCombo) self.name = name comsiz.Add(self.Combo,1, wx.EXPAND ) self.SetSizer(comsiz) self.SetAutoLayout(1) comsiz.Fit(self) self.formname = formname self.formurl = formurl self.evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) self.evt.SetVal(self.formname , self.formurl , self.name , self.Combo.GetValue(),'int_select',self.Combo,'') self.GetEventHandler().ProcessEvent(self.evt) except: evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) evt.SetVal(sys.exc_info()[0] , sys.exc_info()[1] ,sys.exc_info()[2], '','err_select',None) self.GetEventHandler().ProcessEvent(evt) self.Destroy() # << class WebComboBox methods >> (2 of 2) def OnCombo(self, event): try: self.evt.SetVal(self.formname , self.formurl , self.name , self.Combo.GetValue(),'select',self.Combo,self.optdict[self.Combo.GetValue()]) except KeyError: self.evt.SetVal(self.formname , self.formurl , self.name , self.Combo.GetValue(),'select',self.Combo,'') self.GetEventHandler().ProcessEvent(self.evt) event.Skip() # -- end -- << class WebComboBox methods >> # << webwig methods >> (11 of 15) class WebFile(wx.Panel): # << class WebFile methods >> (1 of 2) def __init__(self, parent, id = -1,value = '',size =wx.DefaultSize,style = wx.CB_DROPDOWN ,name = '', bgcolor=None,formname = '',formurl = ''): try: #maxnum = 1 #for i in choices: # if len(i) > maxnum: # maxnum = len(i) #combosize = (maxnum * 10,-1) #panelsize = (maxnum * 10 + 5,-1) wx.Panel.__init__(self, parent, id, size=size) comsiz = wx.BoxSizer(wx.HORIZONTAL) self.FileB = filebrowse.FileBrowseButtonWithHistory(self, -1, (-1,-1), size , changeCallback = self.OnFileSelect) self.FileB.SetHistory(['',]) if bgcolor: self.SetBackgroundColour(bgcolor) self.FileB.SetBackgroundColour(bgcolor) self.name = name comsiz.Add(self.FileB,1, wx.EXPAND ) self.SetSizer(comsiz) self.SetAutoLayout(1) comsiz.Fit(self) self.formname = formname self.formurl = formurl self.evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) self.evt.SetVal(self.formname , self.formurl , self.name , self.FileB.GetValue(),'int_file',self.FileB) self.GetEventHandler().ProcessEvent(self.evt) except: evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) evt.SetVal(sys.exc_info()[0] , sys.exc_info()[1] ,sys.exc_info()[2], '','err_file',None) self.GetEventHandler().ProcessEvent(evt) self.Destroy() # << class WebFile methods >> (2 of 2) def OnFileSelect(self, event): if hasattr(self, 'FileB'): value = event.GetString() history = self.FileB.GetHistory() if value not in history: history.append(value) self.FileB.SetHistory(history) self.FileB.GetHistoryControl().SetStringSelection(value) #evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.Combo.GetId()) self.evt.SetVal(self.formname , self.formurl , self.name , self.FileB.GetValue(),'select',self.FileB) self.GetEventHandler().ProcessEvent(self.evt) # -- end -- << class WebFile methods >> # << webwig methods >> (12 of 15) class WebTextCtrl(wx.Panel): # << class WebTextCtrl methods >> (1 of 2) def __init__(self, parent, id=-1,value = '' ,pos = wx.DefaultPosition,size=wx.DefaultSize, style =wx.TE_LEFT ,name = '',bgcolor=None,formname = '',formurl = ''): wx.Panel.__init__(self, parent, id, size=wx.DefaultSize) try: self.text = wx.TextCtrl(self,-1,value,pos =pos,size= size,style = style,name = name) if bgcolor: self.SetBackgroundColour(bgcolor) self.text.SetBackgroundColour(bgcolor) self.Bind(wx.EVT_TEXT, self.OnText,self.text ) self.formname = formname self.formurl = formurl self.name = name comsiz = wx.BoxSizer(wx.HORIZONTAL) comsiz.Add(self.text,1, wx.EXPAND) self.SetSizer(comsiz) self.SetAutoLayout(1) comsiz.Fit(self) self.evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) self.evt.SetVal(self.formname , self.formurl , self.name , self.text.GetValue(),'int_text',self.text) self.GetEventHandler().ProcessEvent(self.evt) except: evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) evt.SetVal(sys.exc_info()[0] , sys.exc_info()[1] ,sys.exc_info()[2], '','err_text',None) self.GetEventHandler().ProcessEvent(evt) self.Destroy() # << class WebTextCtrl methods >> (2 of 2) def OnText(self, event): #self.evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) self.evt.SetVal(self.formname , self.formurl , self.name , self.text.GetValue(),'text',self.text) self.GetEventHandler().ProcessEvent(self.evt) event.Skip() # -- end -- << class WebTextCtrl methods >> # << webwig methods >> (13 of 15) class WebHtmlWindow(html.HtmlWindow): # << class WebHtmlWindow methods >> (1 of 2) def __init__(self, parent, id,name= '',url = '',formname = '', formurl= '',pos = (-1,-1),size = wx.DefaultSize,vsize = 400): html.HtmlWindow.__init__(self, parent, id, style=wx.NO_FULL_REPAINT_ON_RESIZE,size = (size[0],vsize),pos = pos,name = name) self.parent = parent self.address = url self.name = name self.formname , self.formurl = formname , formurl if "gtk2" in wx.PlatformInfo: self.NormalizeFontSizes() self.evt = WebEvent(pyEVT_UPDATE_WEBFORM, self.GetId()) self.evt.SetVal(self.formname , self.address , self.name , self.address,'int_frame',self,aux = self.parent.TomFilter.frametargetbase) self.GetEventHandler().ProcessEvent(self.evt) # << class WebHtmlWindow methods >> (2 of 2) def OnLinkClicked(self, linkinfo): url = linkinfo.GetHref() self.address = url target = u'' if self.parent.frametargetadict.has_key(url): if self.parent.frametargetadict[url] != '_self': self.evt.SetVal(self.formname , self.address , self.name , self.address,'frame',self,aux = self.parent.frametargetadict[url]) self.GetEventHandler().ProcessEvent(self.evt) else: self.parent.LoadURL(url) self.evt.SetVal(self.formname , self.address , self.name , self.address,'frame',self,aux = target) self.GetEventHandler().ProcessEvent(self.evt) else: self.parent.LoadURL(url) self.evt.SetVal(self.formname , self.address , self.name , self.address,'frame',self,aux = target) self.GetEventHandler().ProcessEvent(self.evt) # -- end -- << class WebHtmlWindow methods >> # << webwig methods >> (14 of 15) class WebFrame(wx.Panel): # << class WebFrame methods >> (1 of 3) def __init__(self, parent,src = '',name='' , scrolling='AUTO',formname = '', formurl='',pos = (-1,-1),size = wx.DefaultSize,vsize = 400): wx.Panel.__init__(self, parent, -1, style=wx.NO_FULL_REPAINT_ON_RESIZE,size =size,pos = pos) self.TomFilter = HTMLparse.TomFilter() self.html = WebHtmlWindow(self, -1,url = src,formname =formname, formurl=formurl,vsize = vsize ,name =name) self.box = wx.BoxSizer(wx.VERTICAL) self.box.Add(self.html, 1, wx.GROW) self.SetSizer(self.box) self.frametargetadict = {} self.SetAutoLayout(True) self.box.Fit(self) self.LoadURL(src) # << class WebFrame methods >> (2 of 3) def LoadURL(self, url): webtext = '' try: webtext = urllib2.urlopen(url).read() except: webtext = '' for i in sys.exc_info(): webtext = webtext + repr(i) + '
' webtext = webtext + '' self.LoadText(webtext,url) # << class WebFrame methods >> (3 of 3) def LoadText(self,webtext,url): formtxt = self.TomFilter.formfilter(webtext,url) if self.TomFilter.frametargetbase != u'': self.frametargetbase = self.TomFilter.frametargetbase for i in range(0,len(self.TomFilter.frametargetalist),2): if self.TomFilter.frametargetalist[i][1] == 'target': self.frametargetadict[self.TomFilter.frametargetalist[i+1][0]] = self.TomFilter.frametargetalist[i][0] elif self.TomFilter.frametargetalist[i][1] == 'link': self.frametargetadict[self.TomFilter.frametargetalist[i][0]] = self.TomFilter.frametargetalist[i+1][0] self.html.address = url self.html.SetPage(formtxt) # -- end -- << class WebFrame methods >> # << webwig methods >> (15 of 15) class WebFrameset(wx.Panel): # << class WebFrameset methods >> (1 of 3) def __init__(self, parent,src = '',frametxt = '',name='' ,formname = '', formurl='',pos = (0,0),size = wx.DefaultSize): wx.Panel.__init__(self, parent, -1, style=wx.NO_FULL_REPAINT_ON_RESIZE,size = size ,pos = pos) self.fullsize = (800,600) self.objextlist = [] framelist = frametxt.split('>') sizerrows = [] self.framesetrows = [] self.framesetcols = [] self.asterfactor = 1 cols = [] rows = [] self.border = 0 self.frameborder = 0 self.framlistflag = 0 self.framespace = 0 self.rowflag = 1 self.frameorder = '' i = framelist[0] splittag = i.split('|') for j in splittag[1:]: if 'ROWS' in j: rows = j[j.find('=')+1:].split(',') for k in rows: if k != '': if k.strip() == '*': newnum = 100 for l in rows: if l.strip() != '*': if l.strip()[-1] == '%': newnum = newnum - int( l.strip()[:-1]) elif '*' in l: newnum = newnum / int( l.strip().strip('*')) self.asterfactor = newnum / int( l.strip().strip('*')) else: newnum = newnum - int((float(l.strip())/self.fullsize[1]) * 100) self.framesetrows.append([str(newnum), []]) elif k.strip()[-1] == '%': self.framesetrows.append([k.strip()[:-1],[]]) elif '*' in k: self.framesetrows.append([str(int(int(k.strip().strip('*'))*self.asterfactor)), []]) else: self.framesetrows.append([str(int((float(k.strip())/self.fullsize[1]) * 100)), []]) elif 'COLS' in j: if self.framesetrows == []: self.framesetrows.append(['100',[]]) cols = j[j.find('=')+1:].split(',') for k in cols: if k != '': if k.strip() == '*': newnum = 100 for l in cols: if l.strip() != '*': if l.strip()[-1] == '%': newnum = newnum - int( l.strip()[:-1]) elif '*' in l: newnum = newnum / int( l.strip().strip('*')) self.asterfactor = newnum / int( l.strip().strip('*')) else: newnum = newnum - int((float( l.strip())/self.fullsize[0])*100) for g in range(len(self.framesetrows)): self.framesetrows[g][1].append(str(newnum)) elif k.strip()[-1] == '%': for g in range(len(self.framesetrows)): self.framesetrows[g][1].append(k.strip()[:-1]) elif '*' in k: for g in range(len(self.framesetrows)): self.framesetrows[g][1].append(str(int(int(k.strip().strip('*'))*self.asterfactor))) else: for g in range(len(self.framesetrows)): self.framesetrows[g][1].append(str(int((float(k.strip())/self.fullsize[0])*100))) elif 'FRAMEBORDER' in j: frmtxt = j[j.find('=')+1:].strip() if frmtxt == 'yes': self.frameborder = 2 elif frmtxt == 'no': self.frameborder = 0 elif frmtxt == '0': self.frameborder = 0 else: self.frameborder = 2 elif 'BORDER' in j: try: self.border = int(j[j.find('=')+1:].strip()) except: self.border = 0 elif 'BORDERCOLOR' in j: bc = j[j.find('=')+1:].strip() if bc[1] == '#': red = eval('0x' + bc[1:3]) green = eval('0x' + bc[3:5]) blue = eval('0x' + bc[5:7]) self.SetBackgroundColour(wx.Color(red,green,blue)) else: tmplst = wx.lib.colourdb.getColourInfoList() for i in tmplst: if bc.upper() == i[0]: self.SetBackgroundColour(wx.Color(i[1],i[2],i[3])) if self.border == 0: mainsizer = wx.BoxSizer(wx.VERTICAL) else: maxsizer = wx.BoxSizer(wx.VERTICAL) mainsizer = wx.BoxSizer(wx.VERTICAL) maxsizer.Add(mainsizer, wx.EXPAND|wx.ALL,self.border) for g in range(len(self.framesetrows)): if self.framesetrows[g][1] == []: self.framesetrows[g][1].append('100') for k in self.framesetrows: siz = wx.BoxSizer(wx.HORIZONTAL) sizerrows.append([siz,[]]) mainsizer.Add(siz, int(k[0]), wx.EXPAND )#| wx.EAST | wx.WEST | wx.NORTH, self.frameborder) for l in k[1]: siz = wx.BoxSizer(wx.VERTICAL) sizerrows[-1][1].append(siz) sizerrows[-1][0].Add(siz, int(l),wx.EXPAND)#|wx.SOUTH | wx.EAST | wx.WEST | wx.NORTH,self.frameborder) self.rowsiter = iter(sizerrows) self.heightiter = iter(self.framesetrows) self.currentheight = self.heightiter.next()[0] self.currentrow = self.rowsiter.next() self.coliter = iter(self.currentrow[1]) self.currcol = self.currentrow[1][0] self.subsizerflag = False itrfori = iter(framelist[1:]) i = itrfori.next() while i != None: splittag = i.split('|') try: self.currcol = self.coliter.next() except: try: self.currentrow = self.rowsiter.next() self.currentheight = self.heightiter.next()[0] self.coliter = iter(self.currentrow[1]) self.currcol = self.coliter.next() except: pass if splittag[0].strip() == '' countlist.append(count) if ('> (2 of 3) def DoFrameset(self, mainsizer,framsettag): self.objextlist.append(WebFrameset(self, frametxt = framsettag)) #self.objextlist.append(wx.TextCtrl(self, -1, framsettag)) mainsizer.Add(self.objextlist[-1],1, wx.EXPAND ) # << class WebFrameset methods >> (3 of 3) def DoFrame(self,sizer,framsettag,vsize): src = '' name = '' splittag = framsettag.split('|') frameborder = self.frameborder for j in splittag[1:]: if 'SRC' in j: src = j[j.find('=')+1:].strip() elif 'NAME' in j: name = j[j.find('=')+1:].strip() elif 'FRAMEBORDER' in j: frmtxt = j[j.find('=')+1:].strip() if frmtxt == 'yes': frameborder = 2 elif frmtxt == 'no': frameborder = 0 elif frmtxt == '0': frameborder = 0 else: frameborder = 2 elif 'FRAMESPACING' in j: try: frameborder = int(j[j.find('=')+1:].strip()) except: pass self.objextlist.append(WebFrame(self, src = src,name=name,vsize = vsize)) if self.frameborder == 0: sizer.Add(self.objextlist[-1],1, wx.EXPAND ) sizer.Fit(self) else: maxsizer = wx.BoxSizer(wx.VERTICAL) maxsizer.Add(self.objextlist[-1],1, wx.EXPAND ) sizer.Add(maxsizer, wx.EXPAND|wx.ALL,frameborder) # -- end -- << class WebFrameset methods >> # -- end -- << webwig methods >> #c:\python23\lib\site-packages\wx\demo\