001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011: import sys,os
012: import gtk,gtk.glade,gobject
013:
014:
015:
016: from register import framescon,dataframes
017:
018:
019:
020: class NodeSelectionTree(object): pass
021:
022: class NodeDataFrame(object): pass
023:
024:
025:
026: class RegisterWindow(object):
027: def __init__(self):
028: self.widgets=gtk.glade.XML(
029: os.path.join(sys.path[0],'glade/registerfat.pyscore.glade')
030: )
031: self.window=self.widgets.get_widget('register_window1')
032:
033:
034: self.widgets.signal_autoconnect(self)
035:
036: self.init_data_frames()
037:
038: self.page={}
039: self.page["quickform"]=QuickformPage(self,"quickform")
040: self.page["detail"]=DetailPage(self,"detail")
041:
042: self.sortbutton=self.widgets.get_widget('detail_button5')
043: self.sortbutton.connect(
044: "clicked",framescon.on_sortbutton_clicked,self,
045: )
046:
047: self.mergebutton=self.widgets.get_widget('detail_button6')
048: self.mergebutton.connect(
049: "clicked",framescon.on_mergebutton_clicked,self,
050: )
051:
052: self.purgebutton=self.widgets.get_widget('detail_button7')
053: self.purgebutton.connect(
054: "clicked",framescon.on_purgebutton_clicked,self,
055: )
056:
057: def gtk_main_quit(*x): gtk.main_quit()
058:
059: def on_quit1_activate(*x): gtk.main_quit()
060:
061: def on_delete_event_activate(*x): gtk.main_quit()
062:
063: def on_about1_activate(self,menuitem):
064: self.about.show_all()
065: return True
066:
067: def on_closebutton1_clicked(self,*x):
068: self.about.hide_all()
069: return True
070:
071: def init_data_frames(self):
072: self.boid=NodeDataFrame()
073: self.cert=NodeDataFrame()
074: self.flco=NodeDataFrame()
075: self.regi=NodeDataFrame()
076:
077: self.cert.allauthorities=gtk.ListStore(str)
078: for a in ["CSCA","DRYA","ECPHRF","ILYA"]:
079: self.cert.allauthorities.append((a,))
080: self.cert.allhandicapped={"DRYA":True,"ECPHRF":True,"ILYA":True}
081: self.cert.allonedesign={"CSCA":True}
082:
083: self.flco.alldivisions=gtk.ListStore(str)
084: for d in ["PHRF A","PHRF B","PHRF C","JOG A","JOG B","Shark"]:
085: self.flco.alldivisions.append((d,))
086: self.flco.allfleets=gtk.ListStore(str)
087: for f in ["Series","Series Silver","Casual"]:
088: self.flco.allfleets.append((f,))
089:
090: def show(self):
091: dataframes.init_boids_model(self.page.values())
092: dataframes.init_bcfrs_model(self.page["detail"])
093: self.window.show_all()
094:
095:
096:
097: def append_columns(view,columns,**extras):
098: for (col,(name,field,xalign)) in enumerate(columns):
099: renderer=gtk.CellRendererText()
100: renderer.set_property("xalign",xalign)
101: column=gtk.TreeViewColumn(name,renderer,text=field,**extras)
102: column.set_resizable(False)
103: view.append_column(column)
104:
105:
106:
107: class RegisterPage(object):
108:
109:
110: def __init__(self,parent,pagename):
111: self.parent=parent
112: self.pagename=pagename
113: self.widget=self.pw('_page_box')
114:
115: self.init_selection_trees()
116: self.init_data_frames()
117:
118: def pw(self,widgetname):
119: return self.parent.widgets.get_widget(
120: '%s_%s'%(self.pagename,widgetname)
121: )
122:
123: def pwn(self,widgetname,number):
124: return self.parent.widgets.get_widget(
125: '%s_%s%i'%(self.pagename,widgetname,number)
126: )
127:
128: def get_view(self,depth,columns,**extras):
129: try:
130: number={"boid":1,"cert":2,"flco":3,"regi":4,"bcfr":5}[depth]
131: except KeyError:
132: return
133: view=self.pwn("treeview",number)
134: append_columns(view,columns,**extras)
135: selection=view.get_selection()
136: selection.set_mode(gtk.SELECTION_BROWSE)
137: return view
138:
139: def init_selection_trees(self):
140: self.boids=NodeSelectionTree()
141: self.boids.view=self.get_view("boid",[
142: ("Sail Number",10,1.0),
143: ("Boat Name",11,0.0),
144: ],strikethrough=7)
145: self.certs=NodeSelectionTree()
146: self.flcos=NodeSelectionTree()
147: self.regis=NodeSelectionTree()
148:
149: self.selectiontrees=[self.boids,self.certs,self.flcos,self.regis]
150:
151: def init_data_frames(self):
152: self.boid=NodeDataFrame()
153: self.cert=NodeDataFrame()
154: self.flco=NodeDataFrame()
155: self.regi=NodeDataFrame()
156:
157: self.dataframes=[self.boid,self.cert,self.flco,self.regi]
158:
159: class QuickformPage(RegisterPage):
160: def __init__(self,*p,**pp):
161: RegisterPage.__init__(self,*p,**pp)
162:
163: def init_selection_trees(self,*p,**pp):
164: RegisterPage.init_selection_trees(self,*p,**pp)
165:
166: def init_data_frames(self,*p,**pp):
167: RegisterPage.init_data_frames(self,*p,**pp)
168:
169: self.boid.label=self.pwn('label',1)
170:
171: class DetailPage(RegisterPage):
172: def __init__(self,*p,**pp):
173: RegisterPage.__init__(self,*p,**pp)
174:
175: for (depth,(nodetree,nodeframe)) in enumerate(
176: zip(self.selectiontrees,self.dataframes)
177: ): nodetree.view.connect(
178: "cursor-changed",framescon.on_detail_cursor_changed,
179: self,depth,nodetree,nodeframe,
180: )
181:
182: def init_selection_trees(self,*p,**pp):
183: RegisterPage.init_selection_trees(self,*p,**pp)
184:
185: self.boids.view.connect(
186: "cursor-changed",framescon.on_browse_boids_cursor_changed,self,
187: )
188:
189: self.bcfrs=NodeSelectionTree()
190: self.bcfrs.view=self.pwn("treeview",5)
191: append_columns(self.bcfrs.view,[("Register Entry",9,0.0)],style=5)
192: self.bcfrs.view.connect(
193: "cursor-changed",framescon.on_bcfrs_cursor_changed,self,
194: )
195:
196: self.certs.view=self.get_view(
197: "cert",[("Certification",11,0.0)],strikethrough=7
198: )
199:
200: self.flcos.view=self.get_view("flco",[
201: ("Class and Division",10,1.0),
202: ("Series Fleet or Casual Configuration",11,0.0),
203: ],strikethrough=7)
204:
205: self.regis.view=self.get_view(
206: "regi",[("Registration",11,0.0)],strikethrough=7
207: )
208:
209: self.certs.model=None
210: self.certs.view.set_model()
211:
212: self.flcos.model=None
213: self.flcos.view.set_model()
214:
215: self.regis.model=None
216: self.regis.view.set_model()
217:
218: def init_data_frames(self,*p,**pp):
219: RegisterPage.init_data_frames(self,*p,**pp)
220:
221: self.boid.box=[self.pwn('entry',x) for x in range(1,5)]
222:
223: self.cert.combo=self.pwn('entry',5)
224: self.cert.combo.set_model(self.parent.cert.allauthorities)
225: self.cert.box=\
226: [self.cert.combo.child]+\
227: [self.pwn('entry',x) for x in range(6,8)]
228: self.cert.radio=[self.pwn('radiobutton',x) for x in range(1,4)]
229:
230: self.flco.combo=[self.pwn('entry',x) for x in range(8,10)]
231: self.flco.combo[0].set_model(self.parent.flco.alldivisions)
232: self.flco.combo[1].set_model(self.parent.flco.allfleets)
233: self.flco.box=\
234: [self.flco.combo[1].child]+\
235: [self.pwn('entry',x) for x in range(10,13)]
236: self.flco.radio=[self.pwn('radiobutton',x) for x in range(4,7)]
237:
238: self.regi.combo=[self.pwn('entry',x) for x in range(13,15)]
239: self.regi.radio=[self.pwn('radiobutton',x) for x in range(7,11)]
240: self.regi.box=self.pwn('entry',15)
241:
242:
243: self.boid.check=self.pwn('checkbutton',1)
244: self.boid.label=self.pwn('label',1)
245: self.boid.newbutton=self.pwn('button',1)
246: self.boid.frames=[self.pwn('dataframe',1),self.pwn('selection',2)]
247: self.boid.check.connect(
248: "toggled",framescon.on_boid_check_toggled,self,
249: )
250: self.boid.newbutton.connect(
251: "clicked",framescon.on_boid_newbutton_clicked,self,
252: )
253: for k in range(4): self.boid.box[k].connect(
254: "changed",framescon.on_boid_entrybox_changed,self,k,
255: )
256:
257: self.cert.check=self.pwn('checkbutton',2)
258: self.cert.label=self.pwn('label',2)
259: self.cert.newbutton=self.pwn('button',2)
260: self.cert.frames=[self.pwn('dataframe',2),self.pwn('selection',3)]
261: self.cert.check.connect(
262: "toggled",framescon.on_cert_check_toggled,self,
263: )
264: self.cert.newbutton.connect(
265: "clicked",framescon.on_cert_newbutton_clicked,self,
266: )
267: for k in range(2): self.cert.box[k].connect(
268: "changed",framescon.on_cert_box_changed,self,k,
269: )
270: for k in range(3): self.cert.radio[k].connect(
271: "toggled",framescon.on_cert_radiobutton_toggled,
272: self,k,
273: )
274:
275: self.flco.check=self.pwn('checkbutton',3)
276: self.flco.label=self.pwn('label',3)
277: self.flco.newbutton=self.pwn('button',3)
278: self.flco.frames=[self.pwn('dataframe',3),self.pwn('selection',4)]
279: self.flco.check.connect(
280: "toggled",framescon.on_flco_check_toggled,self,
281: )
282: self.flco.newbutton.connect(
283: "clicked",framescon.on_flco_newbutton_clicked,self,
284: )
285: for k in range(1): self.flco.combo[k].connect(
286: "changed",framescon.on_flco_combobox_changed,self,k,
287: )
288: for k in range(2): self.flco.box[k].connect(
289: "changed",framescon.on_flco_entrybox_changed,self,k,
290: )
291:
292: self.regi.check=self.pwn('checkbutton',4)
293: self.regi.label=self.pwn('label',4)
294: self.regi.newbutton=self.pwn('button',4)
295: self.regi.frames=[self.pwn('dataframe',4)]
296: self.regi.check.connect(
297: "toggled",framescon.on_regi_check_toggled,self,
298: )
299: self.regi.newbutton.connect(
300: "clicked",framescon.on_regi_newbutton_clicked,self,
301: )
302: for i in range(4): self.regi.radio[i].connect(
303: "toggled",framescon.on_regi_radiobutton_toggled,self,i,
304: )
305: for i in range(2): self.regi.combo[i].connect(
306: "changed",framescon.on_regi_combobox_changed,self,i,
307: )
308:
309:
310:
311: def window():
312: global registerwindow
313: registerwindow=RegisterWindow()
314: registerwindow.show()
315: return registerwindow
316:
317: