file_item.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import gi
  2. gi.require_version("Gtk", "3.0")
  3. from gi.repository import GLib, Gio, Gtk
  4. import os
  5. import mimetypes
  6. from PyPPUB import ppub_builder
  7. import datetime
  8. @Gtk.Template.from_file("ppublisher/file.ui")
  9. class FileItem(Gtk.Box):
  10. __gtype_name__ = "file_item"
  11. list_filename: Gtk.Label = Gtk.Template.Child()
  12. star: Gtk.Image = Gtk.Template.Child()
  13. list_mimetype: Gtk.Label = Gtk.Template.Child()
  14. def __init__(self, path, is_metadata = False):
  15. super(Gtk.Box, self).__init__()
  16. self.path = path
  17. self.filename = "metadata"
  18. self.is_main = False
  19. self.is_metadata = is_metadata
  20. if(not is_metadata):
  21. self.mimetype = mimetypes.guess_type(path)[0] or "application/octet-stream"
  22. self.filename = os.path.split(path)[1]
  23. self.list_filename.set_text(self.filename)
  24. self.list_mimetype.set_text(self.mimetype)
  25. else:
  26. self.list_filename.set_text("Metadata")
  27. self.list_mimetype.set_text("application/x-ppub-metadata")
  28. self.mimetype = "application/x-ppub-metadata"
  29. self.star.set_from_icon_name("document-properties-symbolic", Gtk.IconSize.MENU)
  30. self.title = "My book"
  31. self.author = ""
  32. self.description = ""
  33. self.tags = ""
  34. self.licence = ""
  35. self.copyright = ""
  36. self.set_main(False)
  37. def set_main(self, main):
  38. self.is_main = main
  39. if(not self.is_metadata):
  40. if(main):
  41. self.star.set_from_icon_name("starred-symbolic", Gtk.IconSize.MENU)
  42. else:
  43. self.star.set_from_icon_name("non-starred-symbolic", Gtk.IconSize.MENU)
  44. def build_metadata(self):
  45. metadata = ppub_builder.Metadata()
  46. def add_if_present(field, value):
  47. if(value != None or value != ""):
  48. metadata.set_value(field, value)
  49. add_if_present("title", self.title)
  50. add_if_present("author", self.author)
  51. add_if_present("description", self.description)
  52. add_if_present("tags", self.tags)
  53. add_if_present("licence", self.licence)
  54. add_if_present("copyright", self.copyright)
  55. metadata.set_value("date", datetime.datetime.now().astimezone().isoformat())
  56. return metadata