def initCmile(self, fileid, tabs, ar, ctalts): global cities data = {} scroll = self.get_parent() try: data = cities.get(fileid) except KeyError as e: print "initSmile: An error occurred accessing %s: %s" % (fileid, e) return row = gtk.HBox() row.show() self.pack_start(row, False, False, 2) mileadd = gtk.Button("New Milestone") mileadd.show() mileadd.set_alignment(0.75, 0.05) row.pack_start(mileadd, 0, 0, 5) dhead = gtk.Label("Date") dhead.show() dhead.set_width_chars(8) row.pack_start(dhead, 1, 1, 2) ehead = gtk.Label("Event") ehead.show() ehead.set_width_chars(18) row.pack_start(ehead, 1, 1, 2) row.show_all() row2 = gtk.VBox() row2.show() self.pack_start(row2, 1, 1, 2) boxwidth = self.size_request()[0] if not cities[fileid]["info"].get("m"): cities[fileid]["info"]["m"] = {} r = cities[fileid]["info"].get("m") if not cities[fileid]["info"]["m"].get("events"): cities[fileid]["info"]["m"]["events"] = {} mileadd.connect("clicked", addMilestone, scroll, row2, cities.get(fileid), fileid, "info", "m", boxwidth) if r.get("events"): for i in sorted(r["events"]): # showMile(row2,r,i,fileid,relid) # def showMile(row2,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 = cities.get(fileid) activateInfoEntry(d, ar, ctalts, scroll, data, fileid, "m", 3, ["events", i, "date"]) rowmile.pack_start(d, 1, 1, 2) placeCalendarButton(data, rowmile, d, [fileid, "m", "events", i, "date"], ctalts, counter=ar) e = gtk.Entry() e.show() e.set_width_chars(18) e.set_text(events["event"][0]) activateInfoEntry(e, ar, ctalts, scroll, data, fileid, "m", 3, ["events", i, "event"]) rowmile.pack_start(e, 1, 1, 2) row2.pack_start(rowmile, 0, 0, 2) pass el = gtk.Label("End of record") el.show() el.set_alignment(1, 1) self.pack_start(el, 0, 0, 3)
def initCinfo(self, fileid, tabs, ar, ctalts): data = {} scroll = self.get_parent() try: data = cities.get(fileid) except KeyError as e: print "initCinfo: An error occurred accessing %s: %s" % (fileid, e) return scroll = self.get_parent() label = gtk.Label("City:") label.set_alignment(0, 0) label.show() self.pack_start(label, 0, 0, 1) self.s1 = gtk.HSeparator() self.pack_start(self.s1, False, False, 2) self.s1.show() name = buildarow(scroll, "Name:", data, fileid, "name", ar, ctalts) self.pack_start(name, 0, 0, 2) state = buildStateRow(scroll, data, fileid) self.pack_start(state, 0, 0, 2) 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, ctalts, scroll, data, fileid, "start") row.pack_start(start, True, True, 2) path2 = [fileid, "info"] path2.append(path[-1]) placeCalendarButton(data, row, start, path2, ctalts, 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, ctalts, 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, ctalts, scroll, data, fileid, "end") row.pack_start(end, True, True, 2) path2 = [fileid, "info"] path2.append(path[-1]) placeCalendarButton(data, row, end, path2, ctalts, 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, ctalts, scroll, data, fileid, "ecue") row.pack_start(ecue, True, True, 2) self.pack_start(row, False, False, 2) self.aspects = buildaspectrow(scroll, cities.get(fileid), fileid, ar, ctalts) # ,display = 0) self.add(self.aspects) """ Population Major products/industries Major landmarks (list?) Primary power Secondary powers Demographics/Main race Districts (notebox) History? """ self.notebox = gtk.VBox() self.notebox.show() self.pack_start(self.notebox, True, False, 2) label = gtk.Label("Places") label.set_alignment(0, 0) label.show() self.notebox.pack_start(label, 0, 0, 1) s1 = gtk.HSeparator() self.notebox.pack_start(s1, False, False, 2) s1.show() box = gtk.HBox() box.show() addbut = gtk.Button("Register Place") image = gtk.Image() image.set_from_file("img/add.png") image.show() addbut.set_image(image) addbut.show() path = ["info", "places"] state = validateFileid(getInf(data, ["info", "statefile"], "")) cityname = getInf(data, ["info", "name"], "") cityplaces = getInf(data, path, {}) for l in cityplaces.keys(): fi = l name = getInf(cityplaces, [l, "name"], "") pushLoc(state, "", fileid, cityname, fi, name) lbook = getPlacesIn(fileid) addbut.connect( "clicked", choosePlace, self.notebox, tabs, scroll, data, fileid, ar, ctalts, "Register in %s..." % cityname ) box.pack_end(addbut, False, False, 1) self.notebox.pack_start(box, False, False, 1) for l in sorted(lbook.keys()): if l != "_name": newplace = False if l not in cityplaces.keys(): newplace = True pushPlace(fileid, l, lbook[l]) packPlace(self.notebox, scroll, data, fileid, l, lbook[l], tabs, newplace) el = gtk.Label("End of record") el.show() el.set_alignment(1, 1) self.pack_start(el, 0, 0, 3)
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)
def listRel(self,r,fileid,relid,scroll,psalts,target = None): if not r.get("related"): return name = r['related'][0] if not r.get("cat"): print "empty category! Attempting to find...", x = getCat(relid) if x is not None: r['cat'] = x print r else: print "Not found!\nTo repair, open %s manually, and then reload %s." % (relid,fileid) return print '\n', cat = r['cat'][0] displayFunc = None if cat == "person": displayFunc = displayPerson elif cat == "place": displayFunc = place.displayPlace else: print "Invalid category '%s' at listRel:%d!" % (cat,lineno()) return if not target: target = self.get_parent().get_parent().get_parent().get_parent() #Which is better? namebutton = gtk.Button(relid) namebutton.connect("clicked",displayFunc,relid,target) # passing the target or figuring it from parentage? ### TODO: displayPerson? what about places/orgs? 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,psalts,scroll,people.get(fileid),fileid,relid,"related") row1.pack_start(nameentry,1,1) txt = r.get("relation") if txt is None: r['relation'] = ["",False] txt = ["",False] relation = gtk.Label(txt[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 = people.get(relid,None) genderR = "" if data: genderR = getInf(data,["info","gender"]) if not genderR or genderR == "": p = loadPerson(relid) genderR = p[0].get("gender",['N',False]) genderR = genderR[0] genderP = getInf(people.get(fileid),["info","gender"]) relset.connect("clicked",selectConnectionP,relation,fileid,relid,name,cat,genderR,genderP) 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,people.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 = people.get(fileid) activateRelEntry(d,psalts,scroll,data,fileid,relid,"date",i) rowmile.pack_start(d,1,1,2) placeCalendarButton(data,rowmile,d,[fileid,"relat",relid,"events",i,"date"],psalts,counter=ar) e = gtk.Entry() e.show() e.set_width_chars(18) e.set_text(events['event'][0]) activateRelEntry(e,psalts,scroll,data,fileid,relid,"event",i) rowmile.pack_start(e,1,1,2) row3.add(rowmile)
def optionSetter(caller,parent = "?",canskip = True): global config global status options = {} factor = 0.80 if parent == "?": parent = mainWin print "parent: %s" % parent title = "Setting Options" optbox = gtk.Dialog(title,parent,gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_APPLY,gtk.RESPONSE_APPLY,gtk.STOCK_OK,gtk.RESPONSE_OK)) if not canskip: optbox.get_action_area().get_children()[2].set_sensitive(False) # buttons seem to number right to left applyBut = optbox.get_action_area().get_children()[1] applyBut.set_sensitive(False) # optbox.get_action_area().get_children()[0].set_sensitive(False) if not config.get("nowindowstore"): optbox.set_geometry_hints(None,int(config['size'][0] * factor),int(config['size'][1] * (factor - 0.05))) # optbox.set_decorated(False) sw = gtk.VBox() sw.show() sw.set_border_width(10) scroll = gtk.ScrolledWindow() scroll.show() scroll.set_policy(gtk.POLICY_NEVER,gtk.POLICY_AUTOMATIC) scroll.add_with_viewport(sw) optbox.vbox.add(scroll) rf = config['realmfile'] if rf == "": rf = "<unspecified>" label = gtk.Label("Realm-specific Options for %s" % rf) label.show() sw.pack_start(label,False,False,7) row = gtk.HBox() label = gtk.Label("Name of this realm/setting/world: ") e = gtk.Entry() e.show() e.set_text(config.get("realmname","Unnamed Realm")) optbox.set_title("Setting Options - %s" % e.get_text()) e.connect("changed",setOpt,None,options,"realmname",2) e.connect("changed",mayApply,applyBut) e.connect("focus-in-event",scrollOnTab,scroll) row.show() label.show() row.pack_start(label,False,False,2) row.pack_start(e,True,True,2) sw.pack_start(row) row = gtk.HBox() label = gtk.Label("Realm Directory: ") e = gtk.Entry() e.show() e.set_text(config.get("realmdir","")) e.connect("changed",setOpt,None,options,"realmdir",2) e.connect("changed",mayApply,applyBut) e.connect("focus-in-event",scrollOnTab,scroll) row.show() label.show() row.pack_start(label,False,False,2) row.pack_start(e,True,True,2) sw.pack_start(row) cb = gtk.CheckButton("Family name comes first (Eastern style names)") cb.set_active(config.get("familyfirst",False)) cb.connect("toggled",setOpt,None,options,"familyfirst",1) cb.connect("toggled",mayApply,applyBut) cb.connect("focus-in-event",scrollOnTab,scroll) cb.show() sw.pack_start(cb) cb = gtk.CheckButton("Use middle/maiden names") cb.set_active(config.get("usemiddle",True)) cb.connect("toggled",setOpt,None,options,"usemiddle",1) cb.connect("toggled",mayApply,applyBut) cb.connect("focus-in-event",scrollOnTab,scroll) cb.show() sw.pack_start(cb) sqlbox = gtk.Frame("SQL Options") xmlbox = gtk.Frame("XML Options") formats = ["xml","sql"] forms = [("informat","Input format"),("outformat","Output format")] for key in forms: label = key[1] key = key[0] group = None row = gtk.HBox() row.show() label = gtk.Label("%s:" % label) label.show() row.pack_start(label,False,False,2) c = gtk.combo_box_new_text() selected = -1 options[key] = config.get(key,"xml") i = 0 for f in formats: if f == options.get(key): selected = i c.append_text(f) i += 1 c.set_active(selected) c.connect("changed",setOpt,None,options,key,3) c.connect("changed",mayApply,applyBut) c.connect("changed",toggleBoxes,None,sqlbox,xmlbox,options) c.connect("move-active",setOpt,options,key,3) c.connect("move-active",toggleBoxes,sqlbox,xmlbox,options) c.connect("focus",scrollOnTab,scroll) c.connect("focus-in-event",scrollOnTab,scroll) c.show() row.pack_start(c,False,False,2) sw.pack_start(row) sw.pack_start(sqlbox) sw.pack_start(xmlbox) toggleBoxes(None,None,sqlbox,xmlbox,options) xb = gtk.VBox() xb.show() xmlbox.add(xb) sb = gtk.VBox() sb.show() sqlbox.add(sb) ####### SQL box options label = gtk.Label("SQL input/output is not yet implemented.\nPlease use XML for the time being.") label.show() sb.pack_start(label) ####### XML box options cb = gtk.CheckButton("Include empty tags when saving XML files") cb.set_active(config.get("printemptyXMLtags",False)) cb.connect("toggled",setOpt,None,options,"printemptyXMLtags",1) cb.connect("toggled",mayApply,applyBut) cb.connect("focus-in-event",scrollOnTab,scroll) cb.show() xb.pack_start(cb) row = gtk.HBox() label = gtk.Label("DTDs are found in this directory: ") e = gtk.Entry() e.show() e.set_text(config.get("dtddir","")) e.connect("changed",setOpt,None,options,"dtddir",2) e.connect("changed",mayApply,applyBut) e.connect("focus-in-event",scrollOnTab,scroll) row.show() label.show() row.pack_start(label,False,False,2) row.pack_start(e,True,True,2) xb.pack_start(row) row = gtk.HBox() label = gtk.Label("URL for DTD in XML files: ") e = gtk.Entry() e.show() e.set_text(config.get("dtdurl","")) e.connect("changed",setOpt,None,options,"dtdurl",2) e.connect("changed",mayApply,applyBut) e.connect("focus-in-event",scrollOnTab,scroll) row.show() label.show() row.pack_start(label,False,False,2) row.pack_start(e,True,True,2) xb.pack_start(row) row = gtk.HBox() label = gtk.Label("URL for XSL files in XML: ") e = gtk.Entry() e.show() e.set_text(config.get("xslurl","")) e.connect("changed",setOpt,None,options,"xslurl",2) e.connect("changed",mayApply,applyBut) e.connect("focus-in-event",scrollOnTab,scroll) row.show() label.show() row.pack_start(label,False,False,2) row.pack_start(e,True,True,2) xb.pack_start(row) row = gtk.HBox() label = gtk.Label("Century assumed for 2-digit years: ") test = gtk.Label("Test dates:") test.show() a = gtk.Adjustment(int(config.get("century",1900)/100),-499,500) s1 = gtk.SpinButton(a,1.0,0) s1.set_increments(1,10) s1.show() s1.connect("value-changed",setOpt,None,options,"century",5) s1.connect("value-changed",mayApply,applyBut) s1.connect("focus-in-event",scrollOnTab,scroll) row.show() label.show() row.pack_start(label,False,False,2) row.pack_start(s1,False,False,2) label = gtk.Label("Split year: ") label.show() a = gtk.Adjustment(int(config.get("centbreak",77)),0,99) s2 = gtk.SpinButton(a,1.0,0) s2.set_increments(1,10) s2.show() s2.connect("value-changed",setOpt,None,options,"centbreak",4) s2.connect("value-changed",mayApply,applyBut) s2.connect("focus-in-event",scrollOnTab,scroll) row.pack_start(label,False,False,2) row.pack_start(s2,True,True,2) setDates(None,s1,s2,test) s2.connect("value-changed",setDates,s1,s2,test) s1.connect("value-changed",setDates,s1,s2,test) sw.pack_start(row) sw.pack_start(test,True,True,2) cb = gtk.CheckButton("Show only calculated date") cb.set_active(config.get("hideage",True)) cb.connect("toggled",setOpt,None,options,"hideage",1) cb.connect("toggled",mayApply,applyBut) cb.connect("focus-in-event",scrollOnTab,scroll) cb.show() sw.pack_start(cb) row = gtk.HBox() label = gtk.Label("Date for age calculations: ") label.show() e = gtk.Entry() e.set_text(config.get("agedate","06/08/10b")) e.connect("changed",setOpt,None,options,"agedate",2) e.connect("changed",mayApply,applyBut) e.show() row.show() row.pack_start(label,0,0,2) row.pack_start(e,1,1,2) placeCalendarButton(None,row,e,None,[],nomark=True) sw.pack_start(row,0,0,2) row = gtk.HBox() label = gtk.Label("Expert: Style for dates in this realm: ") e = gtk.Entry() e.show() e.set_text(config.get("datestyle","%y/%m/%db")) e.connect("changed",setOpt,None,options,"datestyle",2) e.connect("changed",mayApply,applyBut) e.connect("focus-in-event",scrollOnTab,scroll) row.show() label.show() row.pack_start(label,False,False,2) row.pack_start(e,True,True,2) sw.pack_start(row) row = gtk.HBox() label = gtk.Label("Background color for a changed field: ") e = gtk.Entry() e.show() e.set_text(config.get("altcolor","#FFFFFF")) e.connect("changed",setOpt,None,options,"altcolor",2) e.connect("changed",mayApply,applyBut) e.connect("changed",setBack,e,gtk.STATE_NORMAL) setBack(None,e,gtk.STATE_NORMAL) e.connect("focus-in-event",scrollOnTab,scroll) b = gtk.Button("Choose Color") b.connect("clicked",selColor,e) b.show() row.show() label.show() row.pack_start(label,False,False,2) row.pack_start(e,True,True,2) row.pack_start(b,False,False,2) sw.pack_start(row) row = gtk.HBox() label = gtk.Label("Background color for a changed field after save: ") e = gtk.Entry() e.show() e.set_text(config.get("savecolor","#FFFFFF")) e.connect("changed",setOpt,None,options,"savecolor",2) e.connect("changed",mayApply,applyBut) e.connect("changed",setBack,e,gtk.STATE_NORMAL) setBack(None,e,gtk.STATE_NORMAL) e.connect("focus-in-event",scrollOnTab,scroll) b = gtk.Button("Choose Color") b.connect("clicked",selColor,e) b.show() row.show() label.show() row.pack_start(label,False,False,2) row.pack_start(e,True,True,2) row.pack_start(b,False,False,2) sw.pack_start(row) cb = gtk.CheckButton("Use list files for this realm") cb.set_active(config.get("uselistfile",True)) cb.connect("toggled",setOpt,None,options,"uselistfile",1) cb.connect("toggled",mayApply,applyBut) cb.connect("focus-in-event",scrollOnTab,scroll) cb.show() sw.pack_start(cb) cb = gtk.CheckButton("Use only realm-defined relationships, not free text") cb.set_active(config.get("specialrelsonly",True)) cb.connect("toggled",setOpt,None,options,"specialrelsonly",1) cb.connect("toggled",mayApply,applyBut) cb.connect("focus-in-event",scrollOnTab,scroll) cb.show() sw.pack_start(cb) row = gtk.HBox() row.show() label = gtk.Label("Story List Format:") label.show() row.pack_start(label,False,False,2) c = gtk.combo_box_new_text() selected = -1 options["showstories"] = config.get("showstories","idlist") i = 0 formats = ["idlist","titlelist"] for f in formats: if f == options.get("showstories"): selected = i c.append_text(f) i += 1 c.set_active(selected) c.connect("changed",setOpt,None,options,"showstories",3) c.connect("changed",mayApply,applyBut) c.connect("move-active",setOpt,options,"showstories",3) c.connect("move-active",mayApply,applyBut) c.connect("focus",scrollOnTab,scroll) c.connect("focus-in-event",scrollOnTab,scroll) c.show() row.pack_start(c,False,False,2) sw.pack_start(row) cb = gtk.CheckButton("If only one story, set default Story List value") cb.set_active(config.get("defaultstory",True)) cb.connect("toggled",setOpt,None,options,"defaultstory",1) cb.connect("toggled",mayApply,applyBut) cb.connect("focus-in-event",scrollOnTab,scroll) cb.show() sw.pack_start(cb) ####### >>>>>>> label = gtk.Label("Program-wide Options") label.show() sw.pack_start(label,False,False,7) cb = gtk.CheckButton("Don't store window size/position") cb.set_active(config.get("nowindowstore",False)) cb.connect("toggled",setOpt,None,options,"nowindowstore",1) cb.connect("toggled",mayApply,applyBut) cb.connect("focus-in-event",scrollOnTab,scroll) cb.show() sw.pack_start(cb) cb = gtk.CheckButton("Accept realm-specific options in the config file") cb.set_active(config.get("rlmincfg",False)) cb.connect("toggled",setOpt,None,options,"rlmincfg",1) cb.connect("toggled",mayApply,applyBut) cb.connect("focus-in-event",scrollOnTab,scroll) cb.show() sw.pack_start(cb) cb = gtk.CheckButton("Opening a new person file at startup") cb.set_active(config.get("startnewperson",False)) cb.connect("toggled",setOpt,None,options,"startnewperson",1) cb.connect("toggled",mayApply,applyBut) cb.connect("focus-in-event",scrollOnTab,scroll) cb.show() sw.pack_start(cb) cb = gtk.CheckButton("Allow opening duplicate tabs") cb.set_active(config.get("duplicatetabs",False)) cb.connect("toggled",setOpt,None,options,"duplicatetabs",1) cb.connect("toggled",mayApply,applyBut) cb.connect("focus-in-event",scrollOnTab,scroll) cb.show() sw.pack_start(cb) cb = gtk.CheckButton("Save the active realm file on exit") cb.set_active(config.get("saverealm",False)) cb.connect("toggled",setOpt,None,options,"saverealm",1) cb.connect("toggled",mayApply,applyBut) cb.connect("focus-in-event",scrollOnTab,scroll) cb.show() sw.pack_start(cb) row = gtk.HBox() row.show() label = gtk.Label("Load this realm automatically:") label.show() row.pack_start(label,False,False,2) d = gtk.Label() d.set_text(config.get("loadrealm","")) d.show() row.pack_start(d,True,True,2) but = gtk.Button("Select Realm") but.connect("clicked",chooseRealm,d,options) but.connect("clicked",mayApply,applyBut) but.show() row.pack_start(but,False,False,2) sw.pack_start(row) row = gtk.HBox() row.show() label = gtk.Label("Likerealm handling:") label.show() row.pack_start(label,False,False,2) c = gtk.combo_box_new_text() selected = -1 options["matchlike"] = config.get("matchlike",2) i = 0 formats = ["Keep likerealm and track which options are from where","Keep likerealm and save only options that differ","Save all options and omit likerealm"] for f in formats: if i == options.get("matchlike"): selected = i c.append_text(f) i += 1 if selected != -1: c.set_active(selected) c.connect("changed",setOpt,None,options,"matchlike",1) c.connect("changed",mayApply,applyBut) c.connect("move-active",setOpt,options,"matchlike",1) c.connect("move-active",mayApply,applyBut) c.connect("focus",scrollOnTab,scroll) c.connect("focus-in-event",scrollOnTab,scroll) c.show() row.pack_start(c,False,False,2) sw.pack_start(row) resp = 0 while resp not in [-6,-5]: resp = optbox.run() if resp == -10: t = "Options applied." print t status.push(0,t) copyOpts(options) if options.get("realmname") is not None: updateTitle() options = {} optbox.set_title("Setting Options - %s" % config.get("realmname","Unnamed Realm")) applyBut.set_sensitive(False) if resp == -6: t = "Cancelled" print t status.push(0,t) optbox.destroy() return elif resp == -5: t = "Options accepted." print t status.push(0,t) optbox.destroy() copyOpts(options) if options.get("realmname") is not None: updateTitle() # saveConfig() # saveRealm() return
def initSinfo(self, fileid,tabs,ar,stalts): global states data = {} scroll = self.get_parent() try: data = states.get(fileid) except KeyError as e: print "initSinfo: An error occurred accessing %s: %s" % (fileid,e) return label = gtk.Label("General") label.set_alignment(0,0) label.show() self.pack_start(label,0,0,1) self.s1 = gtk.HSeparator() self.pack_start(self.s1,False,False,2) self.s1.show() name = buildarow(scroll,"Name:",data,fileid,'name',ar,stalts) self.pack_start(name,0,0,2) 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,stalts,scroll,data,fileid,"start") row.pack_start(start,True,True,2) path2 = [fileid,"info"] path2.append(path[-1]) placeCalendarButton(data,row,start,path2,stalts,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,stalts,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,stalts,scroll,data,fileid,"end") row.pack_start(end,True,True,2) path2 = [fileid,"info"] path2.append(path[-1]) placeCalendarButton(data,row,end,path2,stalts,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,stalts,scroll,data,fileid,"ecue") row.pack_start(ecue,True,True,2) self.pack_start(row,False,False,2) ''' Vitals: State (i.e., empire, kingdom, republic, grand tribe) Adjective (Florida businesses) People (Floridians) Head of state (Governor) Capital (Tallahassee) Population Major resources Politics: Capital governance Foreign relations Organization (general) Culture Expected behaviors Rumors History Geography Economy Demographics ''' self.aspects = buildaspectrow(scroll,states.get(fileid),fileid,ar,stalts) # ,display = 0) self.add(self.aspects) self.notebox = gtk.VBox() self.notebox.show() self.pack_start(self.notebox,True,False,2) label = gtk.Label("Cities") label.set_alignment(0,0) label.show() self.notebox.pack_start(label,0,0,1) s1 = gtk.HSeparator() self.notebox.pack_start(s1,False,False,2) s1.show() box = gtk.HBox() box.show() addbut = gtk.Button("Register City") image = gtk.Image() image.set_from_file("img/add.png") image.show() addbut.set_image(image) addbut.show() path = ["info","cities"] statename = getInf(data,["info","name"],"") statecities = getInf(data,path,{}) for c in statecities.keys(): fi = c cityname = getInf(statecities,[fi,"name"],"") pushLoc(fileid,statename,fi,cityname) cbook = getCitiesIn(fileid) addbut.connect("clicked",chooseCity,self.notebox,tabs,scroll,data,fileid,ar,stalts,"Register in %s..." % statename) box.pack_end(addbut,False,False,1) self.notebox.pack_start(box,False,False,1) for c in sorted(cbook.keys()): if c != "_name": newcity = False cityname = cbook[c].get('_name',cbook.get(c,None)) if c not in statecities.keys(): newcity = True pushCity(fileid,c,cityname) if cityname is not None: packCity(self.notebox,scroll,data,fileid,c,cityname,tabs,newcity,ar,stalts) else: common.say("Error getting cityname.") el = gtk.Label("End of record") el.show() el.set_alignment(1,1) self.pack_start(el,0,0,3)