docs: def restore_from_archive(self, parent=None):
          """Function to restore a DP from archived copy
          Asks for confirmation along the way if parent is not None
          (in which case it will be the parent widget for confirmation dialogs)
          """
          from PyQt4.Qt import QMessageBox
          exists = os.path.exists(self.sourcepath)
          if parent:
              msg = """<P>Do you really want to restore <tt>%s</tt> from
              this entry's copy of <tt>%s</tt>?</P>""" % (self.sourcepath, self.filename)
              exists = os.path.exists(self.sourcepath)
              if exists:
                  msg += """<P>Current file exists, and will be overwritten.</P>"""
                  if QMessageBox.warning(parent, "Restoring from archive", msg,
                                         QMessageBox.Yes, QMessageBox.No) != QMessageBox.Yes:
                      return False
              else:
                  if QMessageBox.question(parent, "Restoring from archive", msg,
                                          QMessageBox.Yes, QMessageBox.No) != QMessageBox.Yes:
                      return False
          busy = Purr.BusyIndicator()
          # remove file if in the way
          if exists:
              if os.system("/bin/rm -fr '%s'" % self.sourcepath):
                  busy = None
                  if parent:
                      QMessageBox.warning(parent, "Error removing file", """<P>
              There was an error removing %s. Archived copy was not restored.
              The text console may have more information.</P>""" % self.sourcepath,
                                          QMessageBox.Ok, 0)
                  return False
          # unpack archived file
          if self.fullpath.endswith('.tgz'):
              parent_dir = os.path.dirname(self.sourcepath.rstrip('/'))
              os.system("/bin/rm -fr %s" % self.sourcepath)
              if os.system("tar zxf '%s' -C '%s'" % (self.fullpath, parent_dir)):
                  busy = None
                  if parent:
                      QMessageBox.warning(parent, "Error unpacking file", """<P>
              There was an error unpacking the archived version to %s. The text console may have more information.</P>""" % self.sourcepath,
                                          QMessageBox.Ok, 0)
                  return False
          # else simply copy over
          else:
              if os.system("/bin/cp -a '%s' '%s'" % (self.fullpath, self.sourcepath)):
                  busy = None
                  if parent:
                      QMessageBox.warning(parent, "Error copying file", """<P>
              There was an error copying the archived version to %s. The text console may have more information.</P>""" % self.sourcepath,
                                          QMessageBox.Ok, 0)
                  return False
          busy = None
          if parent:
              QMessageBox.information(parent, "Restored file", """<P>Restored %s from this entry's
            archived copy.</P>""" % self.sourcepath,
                                      QMessageBox.Ok, 0)
          return True