From d7df0c68f77af122bb211b97505594b0044d5828 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Genov=C3=A9s?= Date: Sat, 25 Jan 2020 01:19:25 +0100 Subject: [PATCH 1/3] Set PWD to the open document path Convert local paths to absolute on exporting preview and html --- data/lua/relative_to_absolute.lua | 2 +- uberwriter/export_dialog.py | 2 +- uberwriter/main_window.py | 3 +-- uberwriter/text_view_drag_drop_handler.py | 1 - 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/data/lua/relative_to_absolute.lua b/data/lua/relative_to_absolute.lua index 23b8017..1ec5e74 100644 --- a/data/lua/relative_to_absolute.lua +++ b/data/lua/relative_to_absolute.lua @@ -6,7 +6,7 @@ function fix_path (path) if string.starts(path, "/") then return path else - return (os.getenv('PANDOC_PREFIX') or '') .. path + return (pandoc.system.get_working_directory() or '') .. "/" .. path end end diff --git a/uberwriter/export_dialog.py b/uberwriter/export_dialog.py index d973816..e1dbb9a 100644 --- a/uberwriter/export_dialog.py +++ b/uberwriter/export_dialog.py @@ -238,7 +238,7 @@ class Export: if export_type == "html": to = "html5" - args.append("--standalone") + args.append("--self-contained") args.append("--css=%s" % Theme.get_current().web_css_path) args.append("--mathjax") args.append("--lua-filter=%s" % helpers.get_script_path('relative_to_absolute.lua')) diff --git a/uberwriter/main_window.py b/uberwriter/main_window.py index d43b6fa..a5b752a 100644 --- a/uberwriter/main_window.py +++ b/uberwriter/main_window.py @@ -442,7 +442,6 @@ class MainWindow(StyledWindow): return if filename: - print(urllib.parse.unquote(filename)) if filename.startswith('file://'): filename = urllib.parse.unquote(filename)[7:] self.text_view.clear() @@ -520,7 +519,6 @@ class MainWindow(StyledWindow): def open_recent(self, _widget, data=None): """open the given recent document """ - print("open") if data: if self.check_change() == Gtk.ResponseType.CANCEL: @@ -631,6 +629,7 @@ class MainWindow(StyledWindow): if filename: self.filename = filename base_path = os.path.dirname(self.filename) + os.chdir(base_path) else: self.filename = None base_path = "/" diff --git a/uberwriter/text_view_drag_drop_handler.py b/uberwriter/text_view_drag_drop_handler.py index cd17b74..f1f3ca9 100644 --- a/uberwriter/text_view_drag_drop_handler.py +++ b/uberwriter/text_view_drag_drop_handler.py @@ -57,7 +57,6 @@ class DragDropHandler: text_buffer.delete(cursor_iter_l, cursor_iter_r) if text.startswith(("http://", "https://", "www.")): - print("web") text = "[{}]({})".format(_("web page"), text) limit_left = 1 limit_right = len(_("web page")) From a00298e0db2776a4e79c6feaba0299becffbff2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Genov=C3=A9s?= Date: Sat, 25 Jan 2020 19:49:38 +0100 Subject: [PATCH 2/3] Handle relative paths for Images in inline preview Based on #192 by @lavendthomas --- uberwriter/inline_preview.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/uberwriter/inline_preview.py b/uberwriter/inline_preview.py index 826ccab..b9f0c57 100644 --- a/uberwriter/inline_preview.py +++ b/uberwriter/inline_preview.py @@ -15,6 +15,7 @@ # END LICENSE import re +import os import telnetlib from gettext import gettext as _ from urllib.parse import unquote @@ -151,6 +152,8 @@ class InlinePreview: HEIGHT = 300 def __init__(self, text_view): + self.settings = Settings.new() + self.text_view = text_view self.text_view.connect("button-press-event", self.on_button_press_event) self.text_buffer = text_view.get_buffer() @@ -158,7 +161,7 @@ class InlinePreview: "click", self.text_buffer.get_iter_at_mark(self.text_buffer.get_insert())) self.latex_converter = latex_to_PNG.LatexToPNG() - self.characters_per_line = Settings.new().get_int("characters-per-line") + self.characters_per_line = self.settings.get_int("characters-per-line") self.popover = Gtk.Popover.new(self.text_view) self.popover.get_style_context().add_class("quick-preview-popup") @@ -191,9 +194,15 @@ class InlinePreview: def get_view_for_image(self, match): path = match.group("url") - if not path.startswith(("/")): + + if path.startswith(("https://", "http://", "www.")): return self.get_view_for_link(match) + if path.startswith(("file://")): + path = path[7:] + if not path.startswith(("/", "file://")): + path = os.path.join(self.settings.get_string("open-file-path"), path) path = unquote(path) + return Gtk.Image.new_from_pixbuf( GdkPixbuf.Pixbuf.new_from_file_at_size(path, self.WIDTH, self.HEIGHT)) From 9ece36b5acd85a232b79749ce04f52bd90a298c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Genov=C3=A9s?= Date: Sat, 25 Jan 2020 20:34:30 +0100 Subject: [PATCH 3/3] use local paths when possible on DnD --- uberwriter/text_view_drag_drop_handler.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/uberwriter/text_view_drag_drop_handler.py b/uberwriter/text_view_drag_drop_handler.py index f1f3ca9..17b8cc9 100644 --- a/uberwriter/text_view_drag_drop_handler.py +++ b/uberwriter/text_view_drag_drop_handler.py @@ -2,6 +2,7 @@ import mimetypes import urllib from gettext import gettext as _ from os.path import basename +from uberwriter.settings import Settings from gi.repository import Gtk @@ -14,6 +15,8 @@ class DragDropHandler: def __init__(self, text_view, *targets): super().__init__() + self.settings = Settings.new() + self.target_list = Gtk.TargetList.new([]) if TARGET_URI in targets: self.target_list.add_uri_targets(TARGET_URI) @@ -35,8 +38,17 @@ class DragDropHandler: mime = mimetypes.guess_type(uri) if mime[0] is not None and mime[0].startswith('image/'): + basepath = self.settings.get_string("open-file-path") + basepath = urllib.parse.quote(basepath) + if uri.startswith("file://"): uri = uri[7:] + + # for handling local URIs we need to substract the basepath + # except when it is "/" (document not saved) + if uri.startswith(basepath) and basepath != "/": + uri = uri[len(basepath)+1:] + text = "![{}]({})".format(name, uri) limit_left = 2 limit_right = len(name)