Ver Fonte

Add poster support

Billy Barrow há 3 anos atrás
pai
commit
517db47f2c

+ 19 - 0
ppublisher/__main__.py

@@ -46,6 +46,13 @@ class AppWindow(Gtk.ApplicationWindow):
         if(item != None):
             item.set_main(True)
 
+    def set_poster_document(self, item):
+        items = self.get_all_items()
+        for i in items:
+            i.set_poster(False)
+        if(item != None):
+            item.set_poster(True)
+
     def get_default_document(self):
         items = self.get_all_items()
         for item in items:
@@ -53,6 +60,13 @@ class AppWindow(Gtk.ApplicationWindow):
                 return item
         return None
 
+    def get_poster_document(self):
+        items = self.get_all_items()
+        for item in items:
+            if(item.is_poster):
+                return item
+        return None
+
     def get_metadata(self):
         items = self.get_all_items()
         for item in items:
@@ -68,6 +82,11 @@ class AppWindow(Gtk.ApplicationWindow):
 
         builder = ppub_builder.PpubBuilder()
         builder.metadata = metadata.build_metadata()
+
+        poster = self.get_poster_document()
+        if(poster != None):
+            builder.metadata.set_value("poster", poster.filename)
+
         self.add_asset(builder, default)
         for item in self.get_all_items():
             if(item == metadata or item == default):

+ 9 - 0
ppublisher/file_editor.py

@@ -13,6 +13,7 @@ class FileEditor(Gtk.Box):
     editor_filename: Gtk.Label = Gtk.Template.Child()
     editor_mimetype: Gtk.Label = Gtk.Template.Child()
     editor_default_document: Gtk.CheckButton = Gtk.Template.Child()
+    editor_poster_document: Gtk.CheckButton = Gtk.Template.Child()
 
     def __init__(self, file, window):
         super(Gtk.Box, self).__init__()
@@ -32,4 +33,12 @@ class FileEditor(Gtk.Box):
         else:
             self.window.set_default_document(None)
 
+    @Gtk.Template.Callback()
+    def poster_toggled(self, widget):
+        enabled = widget.get_active()
+        if(enabled):
+            self.window.set_poster_document(self.file)
+        else:
+            self.window.set_poster_document(None)
+
 

+ 16 - 0
ppublisher/file_editor.ui

@@ -70,5 +70,21 @@
         <property name="position">3</property>
       </packing>
     </child>
+    <child>
+      <object class="GtkCheckButton" id="editor_poster_document">
+        <property name="label" translatable="yes">Publication Poster</property>
+        <property name="visible">True</property>
+        <property name="can-focus">True</property>
+        <property name="receives-default">False</property>
+        <property name="halign">start</property>
+        <property name="draw-indicator">True</property>
+        <signal name="toggled" handler="poster_toggled" swapped="no"/>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">4</property>
+      </packing>
+    </child>
   </template>
 </interface>

+ 8 - 1
ppublisher/file_item.py

@@ -21,10 +21,14 @@ class FileItem(Gtk.Box):
         self.path = path
         self.filename = "metadata"
         self.is_main = False
+        self.is_poster = False
         self.is_metadata = is_metadata
 
         if(not is_metadata):
-            self.mimetype = mimetypes.guess_type(path)[0] or "application/octet-stream"
+            if(path.endswith(".pvpd")):
+                self.mimetype = "application/x-pvpd"
+            else:
+                self.mimetype = mimetypes.guess_type(path)[0] or "application/octet-stream"
             self.filename = os.path.split(path)[1]
             self.list_filename.set_text(self.filename)
             self.list_mimetype.set_text(self.mimetype)
@@ -52,6 +56,9 @@ class FileItem(Gtk.Box):
             else:
                 self.star.set_from_icon_name("non-starred-symbolic", Gtk.IconSize.MENU)
 
+    def set_poster(self, poster):
+        self.is_poster = poster
+
     def build_metadata(self):
         metadata = ppub_builder.Metadata()
         

+ 2 - 1
ppublisher/metadata.py

@@ -34,7 +34,8 @@ class MetadataEditor(Gtk.Box):
         self.metadata.title = self.title_edit.get_text()
         self.metadata.author = self.author_edit.get_text()
         self.metadata.description = self.description_edit.get_text()
-        self.metadata.tags = self.tags_edit.get_text()
+        if(self.tags_edit.get_text() != ""):
+            self.metadata.tags = self.tags_edit.get_text()
         self.metadata.licence = self.licence_edit.get_text()
         self.metadata.copyright = self.copyright_edit.get_text()