forked from Mirrors/apostrophe
update advanced export dialog
parent
b70416709c
commit
ef04a90fd7
|
@ -507,28 +507,9 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<object class="GtkFileFilter" id="html_filter">
|
|
||||||
<mime-types>
|
|
||||||
<mime-type>text/html</mime-type>
|
|
||||||
</mime-types>
|
|
||||||
</object>
|
|
||||||
<object class="GtkFileFilter" id="odt_filter">
|
|
||||||
<mime-types>
|
|
||||||
<mime-type>application/vnd.oasis.opendocument.text</mime-type>
|
|
||||||
</mime-types>
|
|
||||||
</object>
|
|
||||||
<object class="GtkFileFilter" id="pdf_filter">
|
|
||||||
<mime-types>
|
|
||||||
<mime-type>application/pdf</mime-type>
|
|
||||||
</mime-types>
|
|
||||||
</object>
|
|
||||||
<object class="GtkDialog" id="Export">
|
<object class="GtkDialog" id="Export">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="type_hint">dialog</property>
|
<property name="type_hint">dialog</property>
|
||||||
<action-widgets>
|
|
||||||
<action-widget response="cancel">cancel_btn</action-widget>
|
|
||||||
<action-widget response="1" default="true">export_btn</action-widget>
|
|
||||||
</action-widgets>
|
|
||||||
<child type="titlebar">
|
<child type="titlebar">
|
||||||
<object class="GtkHeaderBar" id="Export_hb">
|
<object class="GtkHeaderBar" id="Export_hb">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
|
@ -549,7 +530,6 @@
|
||||||
<object class="GtkStackSwitcher" id="format_switcher">
|
<object class="GtkStackSwitcher" id="format_switcher">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="stack">export_stack</property>
|
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
|
@ -583,58 +563,10 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStack" id="export_stack">
|
<object class="GtkFileChooserWidget" id="advanced">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="transition_type">crossfade</property>
|
<property name="extra_widget">advanced_export_options</property>
|
||||||
<child>
|
|
||||||
<object class="GtkFileChooserWidget" id="html">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="action">save</property>
|
|
||||||
<property name="filter">html_filter</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="name">html</property>
|
|
||||||
<property name="title" translatable="yes">HTML</property>
|
|
||||||
<property name="position">2</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkFileChooserWidget" id="pdf">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="action">save</property>
|
|
||||||
<property name="filter">pdf_filter</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="name">pdf</property>
|
|
||||||
<property name="title" translatable="yes">PDF</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="pdf_disabled">
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label" translatable="yes">label</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="name">pdf_disabled</property>
|
|
||||||
<property name="title" translatable="yes">PDF</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkFileChooserWidget" id="advanced">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="extra_widget">advanced_export_options</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="name">advanced</property>
|
|
||||||
<property name="title" translatable="yes">Advanced</property>
|
|
||||||
<property name="position">4</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
|
|
|
@ -39,35 +39,6 @@ class Export:
|
||||||
|
|
||||||
__gtype_name__ = "export_dialog"
|
__gtype_name__ = "export_dialog"
|
||||||
|
|
||||||
export_menu = {
|
|
||||||
"pdf":
|
|
||||||
{
|
|
||||||
"extension": "pdf",
|
|
||||||
"name": "PDF",
|
|
||||||
"mimetype": "application/pdf",
|
|
||||||
"dialog": regular_export_dialog()
|
|
||||||
},
|
|
||||||
"html":
|
|
||||||
{
|
|
||||||
"extension": "html",
|
|
||||||
"name": "HTML",
|
|
||||||
"mimetype": "text/html"
|
|
||||||
},
|
|
||||||
"odt":
|
|
||||||
{
|
|
||||||
"extension": "odt",
|
|
||||||
"name": "ODT",
|
|
||||||
"mimetype": "application/vnd.oasis.opendocument.text"
|
|
||||||
},
|
|
||||||
"advanced":
|
|
||||||
{
|
|
||||||
"extension": "",
|
|
||||||
"name": "",
|
|
||||||
"mimetype": "",
|
|
||||||
"dialog": advanced_export_dialog()
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
formats = [
|
formats = [
|
||||||
{
|
{
|
||||||
"name": "LaTeX (pdf)",
|
"name": "LaTeX (pdf)",
|
||||||
|
@ -178,54 +149,116 @@ class Export:
|
||||||
|
|
||||||
def __init__(self, filename, export_format):
|
def __init__(self, filename, export_format):
|
||||||
"""Set up the export dialog"""
|
"""Set up the export dialog"""
|
||||||
self.builder = Gtk.Builder()
|
|
||||||
self.builder.add_from_resource(
|
|
||||||
"/de/wolfvollprecht/UberWriter/ui/Export.ui")
|
|
||||||
#self.dialog = self.builder.get_object("Export")
|
|
||||||
|
|
||||||
self.dialog = Gtk.FileChooserNative.new(_("Export"),
|
self.export_menu = {
|
||||||
None,
|
"pdf":
|
||||||
Gtk.FileChooserAction.SAVE,
|
{
|
||||||
_("Export to %s") %
|
"extension": "pdf",
|
||||||
self.export_menu[export_format]["extension"],
|
"name": "PDF",
|
||||||
_("Cancel"))
|
"mimetype": "application/pdf",
|
||||||
print(self.export_menu[export_format]["mimetype"])
|
"dialog": self.regular_export_dialog
|
||||||
filter = Gtk.FileFilter.new()
|
},
|
||||||
filter.set_name(self.export_menu[export_format]["name"])
|
"html":
|
||||||
filter.add_mime_type(self.export_menu[export_format]["mimetype"])
|
{
|
||||||
self.dialog.add_filter(filter)
|
"extension": "html",
|
||||||
self.dialog.set_do_overwrite_confirmation(True)
|
"name": "HTML",
|
||||||
self.dialog.set_current_name("%s.%s" % (filename, self.export_menu[export_format]["extension"]))
|
"mimetype": "text/html",
|
||||||
|
"dialog": self.regular_export_dialog
|
||||||
|
},
|
||||||
|
"odt":
|
||||||
|
{
|
||||||
|
"extension": "odt",
|
||||||
|
"name": "ODT",
|
||||||
|
"mimetype": "application/vnd.oasis.opendocument.text",
|
||||||
|
"dialog": self.regular_export_dialog
|
||||||
|
},
|
||||||
|
"advanced":
|
||||||
|
{
|
||||||
|
"extension": "",
|
||||||
|
"name": "",
|
||||||
|
"mimetype": "",
|
||||||
|
"dialog": self.advanced_export_dialog
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self.filename = filename or _("Untitled document.md")
|
||||||
|
self.export_format = export_format
|
||||||
|
|
||||||
|
self.dialog = self.export_menu[export_format]["dialog"]()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#filechooser.connect("response", self.__on_save_response)
|
#filechooser.connect("response", self.__on_save_response)
|
||||||
#filechooser.run()
|
#filechooser.run()
|
||||||
|
|
||||||
|
|
||||||
self.stack = self.builder.get_object("export_stack")
|
#self.stack = self.builder.get_object("export_stack")
|
||||||
self.stack_switcher = self.builder.get_object("format_switcher")
|
#self.stack_switcher = self.builder.get_object("format_switcher")
|
||||||
|
|
||||||
stack_pdf_disabled = self.builder.get_object("pdf_disabled")
|
#stack_pdf_disabled = self.builder.get_object("pdf_disabled")
|
||||||
filename = filename or _("Untitled document.md")
|
filename = filename or _("Untitled document.md")
|
||||||
|
|
||||||
self.filechoosers = {export_format: self.stack.get_child_by_name(export_format)
|
#self.filechoosers = {export_format: self.stack.get_child_by_name(export_format)
|
||||||
for export_format in ["pdf", "html", "advanced"]}
|
# for export_format in ["pdf", "html", "advanced"]}
|
||||||
for export_format, filechooser in self.filechoosers.items():
|
#for export_format, filechooser in self.filechoosers.items():
|
||||||
filechooser.set_do_overwrite_confirmation(True)
|
# filechooser.set_do_overwrite_confirmation(True)
|
||||||
filechooser.set_current_folder(os.path.dirname(filename))
|
# filechooser.set_current_folder(os.path.dirname(filename))
|
||||||
if export_format == "advanced":
|
# if export_format == "advanced":
|
||||||
self.adv_export_name = self.builder.get_object("advanced_export_name")
|
# self.adv_export_name = self.builder.get_object("advanced_export_name")
|
||||||
self.adv_export_name.set_text(os.path.basename(filename)[:-3])
|
# self.adv_export_name.set_text(os.path.basename(filename)[:-3])
|
||||||
else:
|
# else:
|
||||||
filechooser.set_current_name(os.path.basename(filename)[:-2] + export_format)
|
# filechooser.set_current_name(os.path.basename(filename)[:-2] + export_format)
|
||||||
|
|
||||||
# Disable pdf if Texlive not installed
|
# Disable pdf if Texlive not installed
|
||||||
|
#texlive_installed = helpers.exist_executable("pdftex")
|
||||||
|
|
||||||
|
#if not texlive_installed:
|
||||||
|
# self.filechoosers["pdf"].set_visible(False)
|
||||||
|
# stack_pdf_disabled.set_visible(True)
|
||||||
|
# stack_pdf_disabled.set_text(disabled_text())
|
||||||
|
# stack_pdf_disabled.set_justify(Gtk.Justification.CENTER)
|
||||||
|
# self.stack.connect('notify', self.allow_export, 'visible_child_name')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def regular_export_dialog(self):
|
||||||
texlive_installed = helpers.exist_executable("pdftex")
|
texlive_installed = helpers.exist_executable("pdftex")
|
||||||
|
|
||||||
if not texlive_installed:
|
if (self.export_menu[self.export_format]["extension"] == "pdf" and
|
||||||
self.filechoosers["pdf"].set_visible(False)
|
not texlive_installed):
|
||||||
stack_pdf_disabled.set_visible(True)
|
dialog = Gtk.MessageDialog(None,
|
||||||
stack_pdf_disabled.set_text(disabled_text())
|
Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,
|
||||||
stack_pdf_disabled.set_justify(Gtk.Justification.CENTER)
|
Gtk.MessageType.INFO,
|
||||||
self.stack.connect('notify', self.allow_export, 'visible_child_name')
|
Gtk.ButtonsType.CLOSE,
|
||||||
|
_("Oh, no!")
|
||||||
|
)
|
||||||
|
|
||||||
|
dialog.props.secondary_text = _("Seems that you don't have TexLive installed.\n" +
|
||||||
|
disabled_text())
|
||||||
|
|
||||||
|
else:
|
||||||
|
dialog = Gtk.FileChooserNative.new(_("Export"),
|
||||||
|
None,
|
||||||
|
Gtk.FileChooserAction.SAVE,
|
||||||
|
_("Export to %s") %
|
||||||
|
self.export_menu[self.export_format]["extension"],
|
||||||
|
_("Cancel"))
|
||||||
|
dialog_filter = Gtk.FileFilter.new()
|
||||||
|
dialog_filter.set_name(self.export_menu[self.export_format]["name"])
|
||||||
|
dialog_filter.add_mime_type(self.export_menu[self.export_format]["mimetype"])
|
||||||
|
dialog.add_filter(dialog_filter)
|
||||||
|
dialog.set_do_overwrite_confirmation(True)
|
||||||
|
dialog.set_current_folder(os.path.dirname(self.filename))
|
||||||
|
dialog.set_current_name("%s.%s" % (os.path.basename(self.filename)[:-2],
|
||||||
|
self.export_menu[self.export_format]["extension"]))
|
||||||
|
|
||||||
|
return dialog
|
||||||
|
|
||||||
|
def advanced_export_dialog(self):
|
||||||
|
self.builder = Gtk.Builder()
|
||||||
|
self.builder.add_from_resource(
|
||||||
|
"/de/wolfvollprecht/UberWriter/ui/Export.ui")
|
||||||
|
return self.builder.get_object("Export")
|
||||||
|
|
||||||
self.builder.get_object("highlight_style").set_active(0)
|
self.builder.get_object("highlight_style").set_active(0)
|
||||||
|
|
||||||
|
@ -243,8 +276,6 @@ class Export:
|
||||||
self.format_field.add_attribute(format_renderer, "text", 1)
|
self.format_field.add_attribute(format_renderer, "text", 1)
|
||||||
self.format_field.set_active(0)
|
self.format_field.set_active(0)
|
||||||
|
|
||||||
def regular_export_dialog():
|
|
||||||
|
|
||||||
|
|
||||||
def export(self, text=""):
|
def export(self, text=""):
|
||||||
"""Export the given text using the specified format.
|
"""Export the given text using the specified format.
|
||||||
|
@ -367,18 +398,6 @@ class Export:
|
||||||
|
|
||||||
return args
|
return args
|
||||||
|
|
||||||
def allow_export(self, widget, data, signal):
|
|
||||||
"""Disable export button if the visible child is "pdf_disabled"
|
|
||||||
"""
|
|
||||||
|
|
||||||
del widget, data, signal
|
|
||||||
|
|
||||||
export_btn = self.builder.get_object("export_btn")
|
|
||||||
|
|
||||||
if self.stack.get_visible_child_name() == "pdf_disabled":
|
|
||||||
export_btn.set_sensitive(False)
|
|
||||||
else:
|
|
||||||
export_btn.set_sensitive(True)
|
|
||||||
|
|
||||||
|
|
||||||
def disabled_text():
|
def disabled_text():
|
||||||
|
|
Loading…
Reference in New Issue