import sys import javax.swing as swing import java.awt as awt import java.lang as jlang from calend2 import * import string, re from calnames import * def exit(event): jlang.System.exit(0) class EventToHTML(swing.JFrame): list_names={} list_names["mnths"]=["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] list_names["years"]=[2000+i for i in range(20)] list_names["lang"]=["English", "Spanish", "French", "German", "Italian", "Dutch"] list_names["begw"]=["Sunday", "Monday"] def __init__(self, title="Event Calendar Generator 2", size=(200, 200)): "@sig public WelcomeFrame(String title, java.awt.Dimension size)" self.title = title self.windowClosing = exit self.contentPane.layout = awt.FlowLayout() self.mnths=swing.JComboBox(self.list_names["mnths"]) self.contentPane.add(self.mnths) self.years=swing.JComboBox(self.list_names["years"]) self.contentPane.add(self.years) self.lang = swing.JComboBox(self.list_names["lang"]) self.contentPane.add(self.lang) # the first entry will be 0 self.begw=0 begw_grp=swing.ButtonGroup() begw_pnl=swing.JPanel(awt.GridLayout(0,1)) begw_pnl.border = swing.BorderFactory.createTitledBorder("WeekStart") buttons = [self.createRadioButton(each, self.radioButtonPressed_begw) for each in self.list_names["begw"]] sel=1 for eachButton in buttons: eachButton.setSelected(sel) begw_grp.add(eachButton) begw_pnl.add(eachButton) sel=0 self.contentPane.add(begw_pnl) self.contentPane.add(swing.JTextField('Events:: (eg., "1/31 Dinner 7:30pm Young At Heart Club dinner at church hall")', editable=0)) self.eventtxt=swing.JTextArea(16,50) self.eventpnl=swing.JPanel() self.eventpnl.add(swing.JScrollPane(self.eventtxt)) self.contentPane.add(self.eventpnl) genButton=swing.JButton("Generate", actionPerformed=self.genButtonPressed) self.contentPane.add(genButton) self.pack() self.size=(640,500) def buttonPressed(self, event): self.field.text = self.quotes[event.source.text] def createButton(self, name): "@sig public javax.swing.JButton createButton(String name)" return swing.JButton(name, preferredSize=(100,20), actionPerformed=self.buttonPressed) def createRadioButton(self, name, doRadioPressed): return swing.JRadioButton(name, actionPerformed=doRadioPressed) def radioButtonPressed_begw(self, event): # this will return 0 for the first entry, etc. self.begw=self.list_names["begw"].index(event.source.text) def genButtonPressed(self, event): self.year =self.list_names["years"].index(self.years.getSelectedItem())+2000 self.mth =self.list_names["mnths"].index(self.mnths.getSelectedItem())+1 self.langsel =self.list_names["lang"].index(self.lang.getSelectedItem())+1 BuildHTML(self.year, self.mth, self.langsel, self.begw, self.eventtxt.text) ShowHTML() class ShowHTML(swing.JFrame): def __init__(self, title="Event Calendar Generator 2"): self.contentPane.layout = awt.FlowLayout() tabbedPane=swing.JTabbedPane() self.htmlTab=swing.JEditorPane("text/html", "", editable=0, hyperlinkUpdate=self.followHyperlink) self.f=open("evt2htm.dat","r") htmlstr=self.f.read() self.f.close() self.htmlTab.setText(htmlstr) tabbedPane.addTab("HTMLView",swing.JScrollPane(self.htmlTab, preferredSize=(720, 480))) textTab=swing.JTextArea(15,80) textTab.setText(htmlstr) tabbedPane.addTab("PlainText",swing.JScrollPane(textTab, preferredSize=(720, 480))) self.contentPane.add(tabbedPane) self.pack() self.show() def followHyperlink(self, event): if event.eventType == swing.event.HyperlinkEvent.EventType.ACTIVATED: self.statusLine = event.URL.toString() self.htmlTab.setPage(event.URL) elif event.eventType == swing.event.HyperlinkEvent.EventType.ENTERED: self.statusLine = event.URL.toString() elif event.eventType == swing.event.HyperlinkEvent.EventType.EXITED: self.statusLine = "" class BuildHTML: def __init__(self, year, month, lang, begw, eventtxt): self.cmtpat = re.compile('^ *\#') # date mm/dd self.datepat = re.compile('^ *([0-9]*[0-9]?)/([0-9][0-9]?)') # any word self.wordpat = re.compile('^ *([^ *\t*]+)') events=string.split(eventtxt, "\n") self.evt, self.evtstore, self.maxdd, self.count = self.parse_events(year,month,events) self.f=open("evt2htm.dat","w") print >> self.f, "
| %s' % (week_name[(0+begw)%7]) print >> self.f, ' | %s' % (week_name[(1+begw)%7]) print >> self.f, ' | %s' % (week_name[(2+begw)%7]) print >> self.f, ' | %s' % (week_name[(3+begw)%7]) print >> self.f, ' | %s' % (week_name[(4+begw)%7]) print >> self.f, ' | %s' % (week_name[(5+begw)%7]) print >> self.f, ' | %s' % (week_name[(6+begw)%7]) print >> self.f, ' | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0): print >> self.f, 'width=5>'+str(day), else: print >> self.f, '>', print >> self.f, ' | ' print >> self.f, ' | ||||||||||||
| ',
if(day>0):
for i in range(maxdd):
if i>count[day]-1:
print >> self.f, ' ' else: evn=evt[(day,i+1)] tag,event=evtstore[evn] # this will also be the listing sequence (and link) evseq=evseq+1 print >> self.f, ''+tag+' ' print >> self.f, ' ' print >> self.f, ' | '
print >> self.f, '|||||||||||||