From 915dfc391370f5f864c527ae2d100d5b41a8dfdc Mon Sep 17 00:00:00 2001 From: Doug Blank Date: Sun, 5 Dec 2010 05:54:33 +0000 Subject: [PATCH] 4331: Display Media size before quick backup, in stats gramplet, and summary report svn: r16247 --- src/gui/viewmanager.py | 19 +++++++++++++++-- src/plugins/gramplet/StatsGramplet.py | 30 ++++++++++++++++----------- src/plugins/textreport/Summary.py | 8 ++++++- 3 files changed, 42 insertions(+), 15 deletions(-) diff --git a/src/gui/viewmanager.py b/src/gui/viewmanager.py index 5becd822e..00418d196 100644 --- a/src/gui/viewmanager.py +++ b/src/gui/viewmanager.py @@ -43,6 +43,7 @@ from gen.ggettext import ngettext from cStringIO import StringIO from collections import defaultdict import sys +import posixpath #------------------------------------------------------------------------- # @@ -1444,12 +1445,26 @@ class ViewManager(CLIManager): hbox.pack_end(file_entry, True) vbox.pack_start(hbox, False) hbox = gtk.HBox() - label = gtk.Label(_("Media:")) + bytes = 0 + mbytes = "0" + for media in self.dbstate.db.iter_media_objects(): + fullname = Utils.media_path_full(self.dbstate.db, media.get_path()) + try: + bytes += posixpath.getsize(fullname) + length = len(str(bytes)) + if bytes <= 99999: + mbytes = "< 1" + else: + mbytes = str(bytes)[:(length-6)] + label = gtk.Label(_("Media:")) + except OSError: + label = gtk.Label(_("Media:")) label.set_justify(gtk.JUSTIFY_LEFT) label.set_size_request(90, -1) label.set_alignment(0, .5) hbox.pack_start(label, False) - include = gtk.RadioButton(None, _("Include")) + include = gtk.RadioButton(None, "%s (%s %s)" % (_("Include"), + mbytes, _("MB"))) exclude = gtk.RadioButton(include, _("Exclude")) include.connect("toggled", lambda widget: self.media_toggle(widget, file_entry)) hbox.pack_start(include, True) diff --git a/src/plugins/gramplet/StatsGramplet.py b/src/plugins/gramplet/StatsGramplet.py index b9f97e9bd..d52a64ffc 100644 --- a/src/plugins/gramplet/StatsGramplet.py +++ b/src/plugins/gramplet/StatsGramplet.py @@ -71,8 +71,8 @@ class StatsGramplet(Gramplet): database = self.dbstate.db personList = database.iter_people() - with_photos = 0 - total_photos = 0 + with_media = 0 + total_media = 0 incomp_names = 0 disconnected = 0 missing_bday = 0 @@ -83,19 +83,25 @@ class StatsGramplet(Gramplet): namelist = [] notfound = [] - pobjects = database.get_number_of_media_objects() - for photo in database.iter_media_objects(): - fullname = media_path_full(database, photo.get_path()) + mobjects = database.get_number_of_media_objects() + mbytes = "0" + for media in database.iter_media_objects(): + fullname = media_path_full(database, media.get_path()) try: bytes += posixpath.getsize(fullname) + length = len(str(bytes)) + if bytes <= 99999: + mbytes = "less than 1" + else: + mbytes = str(bytes)[:(length-6)] except OSError: - notfound.append(photo.get_path()) + notfound.append(media.get_path()) for cnt, person in enumerate(personList): length = len(person.get_media_list()) if length > 0: - with_photos += 1 - total_photos += length + with_media += 1 + total_media += length names = [person.get_primary_name()] + person.get_alternate_names() for name in names: @@ -168,20 +174,20 @@ class StatsGramplet(Gramplet): self.append_text("----------------------------\n") self.link("%s:" % _("Individuals with media objects"), 'Filter', 'people with media') - self.append_text(" %s" % with_photos) + self.append_text(" %s" % with_media) self.append_text("\n") self.link("%s:" % _("Total number of media object references"), 'Filter', 'media references') - self.append_text(" %s" % total_photos) + self.append_text(" %s" % total_media) self.append_text("\n") self.link("%s:" % _("Number of unique media objects"), 'Filter', 'unique media') - self.append_text(" %s" % pobjects) + self.append_text(" %s" % mobjects) self.append_text("\n") self.link("%s:" % _("Total size of media objects"), 'Filter', 'media by size') - self.append_text(" %d %s" % (bytes, _("bytes"))) + self.append_text(" %s %s" % (mbytes, _("MB"))) self.append_text("\n") self.link("%s:" % _("Missing Media Objects"), 'Filter', 'missing media') diff --git a/src/plugins/textreport/Summary.py b/src/plugins/textreport/Summary.py index 9cc6c6276..1dfbf8908 100644 --- a/src/plugins/textreport/Summary.py +++ b/src/plugins/textreport/Summary.py @@ -206,11 +206,17 @@ class SummaryReport(Report): self.doc.end_paragraph() total_media = len(self.__db.get_media_object_handles()) + mbytes = "0" for media_id in self.__db.get_media_object_handles(): media = self.__db.get_object_from_handle(media_id) try: size_in_bytes += posixpath.getsize( media_path_full(self.__db, media.get_path())) + length = len(str(size_in_bytes)) + if size_in_bytes <= 99999: + mbytes = "less than 1" + else: + mbytes = str(size_in_bytes)[:(length-6)] except: notfound.append(media.get_path()) @@ -220,7 +226,7 @@ class SummaryReport(Report): self.doc.end_paragraph() self.doc.start_paragraph("SR-Normal") - self.doc.write_text(_("Total size of media objects: %d bytes") % size_in_bytes) + self.doc.write_text(_("Total size of media objects: %s MB") % mbytes) self.doc.end_paragraph() if len(notfound) > 0: