Automatically save glyph database after adding a new glyph.

This commit is contained in:
Andrey Golovizin 2014-09-19 21:03:22 +02:00
parent 5b1e84dd7f
commit a9a3fc2bac

View file

@ -94,19 +94,22 @@ class GlyphDB(object):
key = self._key_from_glyph(glyph) key = self._key_from_glyph(glyph)
return self._dict[key] return self._dict[key]
def add_glyph(self, glyph, text, bold=False, italic=False): def add_glyph(self, glyph, text, bold=False, italic=False, save=True):
data = GlyphData.from_glyph(glyph, text, bold=bold, italic=italic) data = GlyphData.from_glyph(glyph, text, bold=bold, italic=italic)
key = self._key_from_glyph(glyph) self.add(data)
self._dict[key] = data
return data return data
def add(self, data): def add(self, data, save=True):
key = self._key_from_data(data) key = self._key_from_data(data)
self._dict[key] = data self._dict[key] = data
if save:
self.save()
def remove(self, data): def remove(self, data, save=True):
key = self._key_from_data(data) key = self._key_from_data(data)
del self._dict[key] del self._dict[key]
if save:
self.save()
def keys(self): def keys(self):
return self._dict.keys() return self._dict.keys()
@ -121,7 +124,7 @@ class GlyphDB(object):
with open(self.filename, 'rb') as fileobj: with open(self.filename, 'rb') as fileobj:
data = pickle.load(fileobj) data = pickle.load(fileobj)
for item in data: for item in data:
self.add(GlyphData.deserialize(item)) self.add(GlyphData.deserialize(item), save=False)
def save(self): def save(self):
data = [data.serialize() for data in self.values()] data = [data.serialize() for data in self.values()]