def addNote(caller,scroll,ar,plalts,target,fileid,dval = None,cval = None,i = 0): path = [fileid,"info","notes"] if not preRead(True,'l',path,3): return data = places.get(fileid) if i == 0: i = str(len(data['info'].get("notes"))) path.append(i) if not preRead(True,'l',path,4): return else: places[path[0]][path[1]][path[2]][path[3]]['content'] = ["",False] places[path[0]][path[1]][path[2]][path[3]]['date'] = [skrTimeStamp(config['datestyle']),False] row = gtk.HBox() row.show() if not dval: dval = skrTimeStamp(config['datestyle']) date = gtk.Label(dval) date.show() date.set_width_chars(10) row.pack_end(date,0,0,2) content = gtk.Entry(500) content.show() if cval: content.set_text(cval) row.pack_end(content,1,1,2) target.pack_start(row,False,False,2) activateNoteEntry(content,ar,plalts, scroll, data, fileid,i,date)
def saveThisL(caller,fileid): global status if places.get(fileid): if savePlace(fileid,places[fileid]): status.push(0,"%s saved successfully." % fileid) else: status.push(0,"Error encountered saving %s." % fileid) else: bsay(caller,"saveThisL: Could not find place %s." % fileid)
def preClose(caller,fileid,target = None): result = -8 if places.get(fileid): if places[fileid].get("changed"): result = 0 caller.set_sensitive(False) asker = gtk.MessageDialog(None,gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,gtk.MESSAGE_INFO,gtk.BUTTONS_YES_NO,None) asker.set_markup("Are you sure you want to close %s?\nYou will lose all unsaved changes." % fileid) asker.connect("destroy",lambda x: caller.set_sensitive(True)) (x,y,w,h) = caller.get_allocation() asker.move(x - 50,y - 50) result = asker.run() asker.destroy() if result == -8: # Yes print "Destroying tab %s" % fileid kill(caller,target) return True else: # No print "Cancel" return False
def getCat(fileid): cat = None x = people.get(fileid,None) if x is not None: cat = "person" else: x = places.get(fileid,None) if x is not None: cat = "place" else: x = cities.get(fileid,None) if x is not None: cat = "city" else: x = states.get(fileid,None) if x is not None: cat = "state" else: x = orgs.get(fileid,None) if x is not None: cat = "org" else: x = items.get(fileid,None) if x is not None: cat = "item" return [cat,True]
def displayPlace(callingWidget,fileid, tabrow): global places plalts = [] ar = gtk.Label() warnme = False if places.get(fileid,None): tab = places[fileid].get("tab") if tab is not None: warnme = True if not config['duplicatetabs']: status.push(0,"'" + fileid + "' is Already open. Switching to existing tab instead of loading...") tabrow.set_current_page(tab) for i in range(len(tabrow)): if fileid == tabrow.get_tab_label_text(tabrow.get_nth_page(i)): tabrow.set_current_page(i) return # No need to load again. If revert needed, use a different function else: L = loadPlace(fileid) places[fileid] = {} places[fileid]['info'] = L[0] places[fileid]['relat'] = L[1] places[fileid]['changed'] = False places[fileid]['cat'] = 'l' displayStage1(tabrow,fileid,'l',saveThisL,showPlace,preClose,displayPlace,ar,plalts) tabrow.vbox.connect("destroy",tabdestroyed,fileid) tabrow.labeli = gtk.Label("Information") tabrow.labelr = gtk.Label("Connections") tabrow.vbox.ftabs.infpage = displayStage2(tabrow.vbox.ftabs,tabrow.labeli) tabrow.vbox.ftabs.relpage = displayStage2(tabrow.vbox.ftabs,tabrow.labelr) if config['debug'] > 2: print "Loading " + tabrow.get_tab_label_text(tabrow.vbox) ar.show() ar.set_alignment(0.5,0.5) setRuletext(ar,len(plalts)) tabrow.vbox.pack_end(ar,0,0,2) initLinfo(tabrow.vbox.ftabs.infpage, fileid,ar,plalts) initLrels(tabrow.vbox.ftabs.relpage, fileid,tabrow,ar,plalts) tabrow.set_current_page(tabrow.page_num(tabrow.vbox)) places[fileid]["tab"] = tabrow.page_num(tabrow.vbox)
def showPlace(caller,fileid): if places.get(fileid): printPretty(places[fileid])
def listRel(self,ar,plalts,r,fileid,relid,scroll,target = None): if not r.get("related"): return name = r['related'][0] if not r.get("cat"): return cat = r['cat'][0] if not target: target = self.get_parent().get_parent().get_parent().get_parent() #Which is better? namebutton = gtk.Button(relid) namebutton.connect("clicked",displayPlace,relid,target) # passing the target or figuring it from parentage? row1 = gtk.HBox() self.pack_start(row1,0,0,2) row1.pack_start(namebutton,1,1,2) row1.show() namebutton.show() namebutton.set_alignment(0.75,0.05) namebutton.set_size_request(int(self.size_request()[0] * 0.20),10) namelabel = gtk.Label("Name: ") namelabel.show() row1.pack_start(namelabel,0,0,2) namelabel.set_width_chars(6) nameentry = gtk.Entry() nameentry.show() nameentry.set_text(name) activateRelEntry(nameentry,ar,plalts,scroll,places.get(fileid),fileid,relid,"related") row1.pack_start(nameentry,1,1) relation = gtk.Label(r['relation'][0]) relation.show() relation.set_width_chars(8) row1.pack_start(relation,1,1) relset = gtk.Button("Set") relset.show() relset.set_alignment(0.5,0.5) relset.set_size_request(36,24) data = places.get(relid,None) relset.connect("clicked",selectConnectionL,relation,fileid,relid,name,cat) row1.pack_start(relset,0,0,5) row2 = gtk.HBox() self.pack_start(row2,0,0,2) row2.show() mileadd = gtk.Button("New Milestone") mileadd.show() mileadd.set_alignment(0.75,0.05) # mileadd.set_size_request(int(self.size_request()[0] * 0.30),24) row2.pack_start(mileadd,0,0,5) dhead = gtk.Label("Date") dhead.show() dhead.set_width_chars(8) row2.pack_start(dhead,1,1,2) ehead = gtk.Label("Event") ehead.show() ehead.set_width_chars(18) row2.pack_start(ehead,1,1,2) row2.show_all() row3 = gtk.VBox() row3.show() self.pack_start(row3,0,0,2) boxwidth = self.size_request()[0] mileadd.connect("clicked",addMilestone,scroll,row3,places.get(fileid),fileid,"relat",relid,boxwidth) if r.get("events"): for i in r['events']: # showMile(row3,r,i,fileid,relid) #def showMile(row3,r,i,fileid,relid): events = r['events'][i] # print str(events) if events.get("date") and events.get("event"): rowmile = gtk.HBox() rowmile.show() blank = gtk.Label() blank.show() blank.set_width_chars(12) rowmile.pack_start(blank,0,0,2) d = gtk.Entry() d.show() d.set_width_chars(12) d.set_text(events['date'][0]) data = places.get(fileid) activateRelEntry(d,ar,plalts,scroll,data,fileid,relid,"date",i) rowmile.pack_start(d,1,1,2) datebut = gtk.Button() datebut.show() image = gtk.Image() image.set_from_file("img/date.png") datebut.set_image(image) datebut.unset_flags(gtk.CAN_FOCUS) datebut.connect("clicked",dateChoose,d,data,[fileid,'relat',relid,'events',i,'date']) rowmile.pack_start(datebut,0,0,2) e = gtk.Entry() e.show() e.set_width_chars(18) e.set_text(events['event'][0]) activateRelEntry(e,ar,plalts,scroll,data,fileid,relid,"event",i) rowmile.pack_start(e,1,1,2) row3.add(rowmile)
def initLinfo(self, fileid,ar,plalts): data = {} scroll = self.get_parent() try: data = places.get(fileid) except KeyError as e: print "initLinfo: An error occurred accessing %s: %s" % (fileid,e) return scroll = self.get_parent() self.namelabelbox = gtk.HBox() self.namelabelbox.show() label = gtk.Label("Place:") label.set_alignment(0,0) label.show() self.namelabelbox.pack_start(label,1,1,2) self.pack_start(self.namelabelbox) self.s1 = gtk.HSeparator() self.pack_start(self.s1,False,False,2) self.s1.show() name = buildarow(scroll,"Name:",data,fileid,'name',ar,plalts) self.pack_start(name,0,0,2) commonname = buildarow(scroll,"Common Name:",data,fileid,'commonname',ar,plalts) self.pack_start(commonname,0,0,2) if commonname.e.get_text() == "" and name.e.get_text() != "": commonname.e.set_text(name.e.get_text()) commonname.e.emit("focus-out-event",gtk.gdk.Event(gtk.gdk.FOCUS_CHANGE)) row = gtk.HBox() row.show() path = ["info","start"] label = gtk.Label("Start Date:") label.show() row.pack_start(label,False,False,2) start = gtk.Entry(25) start.show() start.set_text(getInf(data,path)) activateInfoEntry(start,ar,plalts,scroll,data,fileid,"start") row.pack_start(start,True,True,2) path2 = [fileid,"info"] path2.append(path[-1]) placeCalendarButton(data,row,start,path2,plalts,counter=ar) label = gtk.Label("Cue:") label.show() row.pack_start(label,False,False,2) scue = gtk.Entry(25) scue.show() path[1] = "scue" scue.set_text(getInf(data,path)) activateInfoEntry(scue,ar,plalts,scroll,data,fileid,"scue") row.pack_start(scue,True,True,2) self.pack_start(row,False,False,2) row = gtk.HBox() row.show() label = gtk.Label("End Date:") label.show() row.pack_start(label,False,False,2) end = gtk.Entry(25) end.show() path[1] = "end" end.set_text(getInf(data,path)) activateInfoEntry(end,ar,plalts,scroll,data,fileid,"end") row.pack_start(end,True,True,2) path2 = [fileid,"info"] path2.append(path[-1]) placeCalendarButton(data,row,end,path2,plalts,counter=ar) label = gtk.Label("Cue:") label.show() row.pack_start(label,False,False,2) ecue = gtk.Entry(25) ecue.show() path[1] = "ecue" ecue.set_text(getInf(data,path)) activateInfoEntry(ecue,ar,plalts,scroll,data,fileid,"ecue") row.pack_start(ecue,True,True,2) self.pack_start(row,False,False,2) self.aspects = buildaspectrow(scroll,places.get(fileid),fileid,ar,plalts) # ,display = 0) self.add(self.aspects) label = gtk.Label("Stories") label.set_alignment(0,0) label.show() self.pack_start(label,False,False,2) self.s1 = gtk.HSeparator() self.pack_start(self.s1,False,False,2) self.s1.show() self.stories = buildarow(scroll,"Stories:",data,fileid,'stories',ar,plalts,2) self.pack_start(self.stories,False,False,2) self.mention = buildarow(scroll,"First Mentions:",data,fileid,'mention',ar,plalts) self.pack_start(self.mention,False,False,2) self.l7 = gtk.Label("Specifications") self.l7.set_alignment(0,1) self.l7.show() self.pack_start(self.l7,False,False,2) self.s2 = gtk.HSeparator() self.pack_start(self.s2,False,False,2) self.s2.show() self.desc = buildarow(scroll,"Description:",data,fileid,'desc',ar,plalts) self.pack_start(self.desc,False,False,2) self.address = buildarow(scroll,"Address:",data,fileid,'address',ar,plalts) self.pack_start(self.address,False,False,2) self.location = buildLocRow(data,fileid) self.pack_start(self.location,False,False,2) label = gtk.Label("Notes") label.set_alignment(0,0) label.show() self.pack_start(label,False,False,2) self.s1 = gtk.HSeparator() self.pack_start(self.s1,False,False,2) self.s1.show() notebox = gtk.VBox() notebox.show() self.pack_start(notebox,True,True,2) newbut = gtk.Button("Add a note") newbut.show() image = gtk.Image() image.set_from_file("img/add.png") newbut.set_image(image) newbut.connect("clicked",addNote,scroll,ar,plalts,notebox,fileid) box = gtk.HBox() box.show() box.pack_end(newbut,0,0,2) label = gtk.Label("Date") label.show() box.pack_end(label,0,0,2) label = gtk.Label("Note") label.show() box.pack_end(label,1,1,2) notebox.pack_start(box,0,0,2) notes = data.get("info") if notes: notes = notes.get("notes") if notes: for i in sorted(notes.keys()): dval = notes[i].get("date") cval = notes[i].get("content") if dval: dval = dval[0] if cval: cval = cval[0] if dval and cval: addNote(self,scroll,notebox,fileid,dval,cval,i) el = gtk.Label("End of record") el.show() el.set_alignment(1,1) self.pack_start(el,0,0,3)