2007-12-27 Douglas S. Blank <dblank@cs.brynmawr.edu>

* src/DataViews/_MyGrampsView.py: added API for data save/load
	* src/plugins/DefaultGadgets.py: top surnames takes count; TODO saves



svn: r9597
This commit is contained in:
Doug Blank 2007-12-27 15:06:28 +00:00
parent 76cff3a349
commit becd01ef12
3 changed files with 60 additions and 8 deletions

View File

@ -1,3 +1,7 @@
2007-12-27 Douglas S. Blank <dblank@cs.brynmawr.edu>
* src/DataViews/_MyGrampsView.py: added API for data save/load
* src/plugins/DefaultGadgets.py: top surnames takes count; TODO saves
2007-12-26 Douglas S. Blank <dblank@cs.brynmawr.edu>
* src/DataViews/_MyGrampsView.py: added tooltips, cleanup, menu work
* src/plugins/DefaultGadgets.py: fine tuning

View File

@ -51,7 +51,8 @@ def register_gadget(data_dict):
global AVAILABLE_GADGETS
base_opts = {"name":"Unnamed Gadget",
"state":"maximized",
"column": -1, "row": -1}
"column": -1, "row": -1,
"data": []}
base_opts.update(data_dict)
AVAILABLE_GADGETS[base_opts["name"]] = base_opts
@ -150,7 +151,6 @@ class Gadget(object):
self._generator = None
self._need_to_update = False
self._tags = []
self.data = {}
self.tooltip = None
self.link_cursor = gtk.gdk.Cursor(gtk.gdk.LEFT_PTR)
self.standard_cursor = gtk.gdk.Cursor(gtk.gdk.XTERM)
@ -212,14 +212,20 @@ class Gadget(object):
self._tags.append((LinkTag(buffer),data))
buffer.apply_tag(self._tags[-1][0], start, end)
def get_text(self):
start = self.gui.buffer.get_start_iter()
end = self.gui.buffer.get_end_iter()
return self.gui.buffer.get_text(start, end)
def insert_text(self, text):
self.gui.buffer.insert_at_cursor(text)
def clear_text(self):
self.gui.buffer.set_text('')
def set_text(self, text):
self.gui.buffer.set_text(text)
def set_text(self, text, scroll_to='start'):
self.gui.buffer.set_text('')
self.append_text(text, scroll_to)
def append_text(self, text, scroll_to="end"):
enditer = self.gui.buffer.get_end_iter()
@ -232,6 +238,17 @@ class Gadget(object):
else:
self.gui.textview.scroll_to_mark(start, 0.0, True, 0, 0)
def load_data_to_text(self, pos=0):
if len(self.gui.data) >= pos + 1:
text = self.gui.data[pos]
text = text.replace("\\n", chr(10))
self.set_text(text, 'end')
def save_text_to_data(self):
text = self.get_text()
text = text.replace(chr(10), "\\n")
self.gui.data.append(text)
def update(self, *handles):
self.main()
if self._idle_id != 0:
@ -349,6 +366,7 @@ class GuiGadget:
self.column = int(kwargs.get("column", -1))
self.row = int(kwargs.get("row", -1))
self.state = kwargs.get("state", "maximized")
self.data = kwargs.get("data", [])
##########
self.pui = None # user code
self.xml = gtk.glade.XML(const.GLADE_FILE, 'gvgadget', "gramps")
@ -597,7 +615,12 @@ class MyGrampsView(PageView.PageView):
else:
data = {}
for opt in cp.options(sec):
data[opt] = cp.get(sec, opt).strip()
if opt.startswith("data["):
temp = data.get("data", [])
temp.append(cp.get(sec, opt).strip())
data["data"] = temp
else:
data[opt] = cp.get(sec, opt).strip()
if "name" not in data:
data["name"] = "Unnamed Gadget"
retval.append((data["name"], data)) # name, opts
@ -611,7 +634,11 @@ class MyGrampsView(PageView.PageView):
def save(self, *args):
if debug: print "saving"
filename = GADGET_FILENAME
fp = open(filename, "w")
try:
fp = open(filename, "w")
except:
print "Failed writing '%s'; gadgets not saved" % filename
return
fp.write(";; Gramps gadgets file" + NL)
fp.write((";; Automatically created at %s" % time.strftime("%Y/%m/%d %H:%M:%S")) + NL + NL)
fp.write("[My Gramps View Options]" + NL)
@ -632,7 +659,13 @@ class MyGrampsView(PageView.PageView):
if key == "title": continue
if key == "column": continue
if key == "row": continue
fp.write(("%s=%s" + NL)% (key, base_opts[key]))
if key == "data":
cnt = 0
for item in base_opts["data"]:
fp.write(("data[%d]=%s" + NL) % (cnt, item))
cnt += 1
else:
fp.write(("%s=%s" + NL)% (key, base_opts[key]))
fp.write(("column=%d" + NL) % col)
fp.write(("row=%d" + NL) % row)
fp.write(NL)

View File

@ -94,8 +94,16 @@ class LogGadget(Gadget):
class TopSurnamesGadget(Gadget):
def init(self):
self.top_size = 10 # will be overwritten in load
self.set_text("No Family Tree loaded.")
def on_load(self):
if len(self.gui.data) > 0:
self.top_size = int(self.gui.data[0])
def on_save(self):
self.gui.data = [self.top_size]
def main(self):
self.set_text("Processing...\n")
@ -131,7 +139,7 @@ class TopSurnamesGadget(Gadget):
(line + 1, surname,
int((float(count)/total) * 100), count))
line += 1
if line >= 10:
if line >= self.top_size:
break
self.append_text("\nTotal unique surnames: %d\n" % total_surnames)
self.append_text("Total people: %d" % total_people)
@ -359,6 +367,13 @@ class TODOGadget(Gadget):
self.gui.textview.set_editable(True)
self.append_text("Enter your TODO list here.")
def on_load(self):
self.load_data_to_text()
def on_save(self):
self.gui.data = [] # clear out old data
self.save_text_to_data()
def make_welcome_content(gui):
text = """
Welcome to GRAMPS!