diff options
author | Mikael Blomstrand | 2018-03-03 23:48:55 +0100 |
---|---|---|
committer | Mikael Blomstrand | 2018-03-03 23:48:55 +0100 |
commit | 0cd4433f0fa5d49825910bd7593e7a8a11d297c0 (patch) | |
tree | a01ff8e126da207a3e8a67cfb3b21523118ea898 | |
download | aur-0cd4433f0fa5d49825910bd7593e7a8a11d297c0.tar.gz |
vsc package for remarkable.
Does not run without patch.
Patch fixes import in RemarkableWindow.py and undos findBar commits that
breaks.
-rw-r--r-- | .SRCINFO | 33 | ||||
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | LICENSE | 21 | ||||
-rw-r--r-- | PKGBUILD | 64 | ||||
-rw-r--r-- | remarkable.install | 7 | ||||
-rw-r--r-- | undo-findBar.patch | 301 |
6 files changed, 430 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..e33727f5544e --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,33 @@ +pkgbase = remarkable-git + pkgdesc = A free fully featured markdown editor for Linux. + pkgver = 1.87 + pkgrel = 1 + url = http://remarkableapp.github.io + install = remarkable.install + arch = any + license = MIT + makedepends = python + depends = python + depends = python-cairo + depends = python-gobject + depends = python-markdown + depends = python-beautifulsoup4 + depends = python-gtkspellcheck + depends = python-lxml + depends = webkitgtk + depends = wkhtmltopdf + depends = gtksourceview3 + optdepends = python-lxml: export to HTML format support + provides = remarkable + conflicts = remarkable + source = git+https://github.com/jamiemcg/Remarkable.git + source = remarkable.install + source = undo-findBar.patch + source = LICENSE + sha1sums = SKIP + sha1sums = bdbfb750df9e5fb3022f47a46a80555259628cd1 + sha1sums = 76a8a61ed2bcf08e71971a52597fb4b638963a2c + sha1sums = 6e5ea06076c85fdd25b79bfc41588f7f7ee9ba29 + +pkgname = remarkable-git + diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..9cefe8d36b7c --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.xz +*.deb +/pkg +/src diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000000..e7323e7a22e1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017 Jamie McGowan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..d48bbc3ee6fc --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,64 @@ +# Maintainer: Mikael Blomstrand <gmail: chawlindel> + +pkgname='remarkable-git' +conflicts=('remarkable') +provides=('remarkable') +pkgver=1.87 +pkgrel=1 +pkgdesc="A free fully featured markdown editor for Linux." +arch=('any') +url="http://remarkableapp.github.io" +license=('MIT') +depends=('python' + 'python-cairo' + 'python-gobject' + 'python-markdown' + 'python-beautifulsoup4' + 'python-gtkspellcheck' + 'python-lxml' + 'webkitgtk' + 'wkhtmltopdf' + 'gtksourceview3' + ) +makedepends=('python') +optdepends=('python-lxml: export to HTML format support') + +install="remarkable.install" +source=("git+https://github.com/jamiemcg/Remarkable.git" + "remarkable.install" + "undo-findBar.patch" + "LICENSE") + +sha1sums=('SKIP' + 'bdbfb750df9e5fb3022f47a46a80555259628cd1' + '76a8a61ed2bcf08e71971a52597fb4b638963a2c' + '6e5ea06076c85fdd25b79bfc41588f7f7ee9ba29') + +prepare() { + msg2 "Removing findbar patches.." + msg2 "Fix imports in RemarkableWindow.py" + # Does not run with findbar patches. + # Also changes imports in RemarkableWindow + cat *.patch | patch -p1 -d "${srcdir}/Remarkable" +} + +package() { + _python_site=$(python -c 'import site; print(site.getsitepackages()[0]);') + [ -z ${_python_site} ] && echo "error: could not identify python site_packages directory" && return 1 + + install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + + cd "Remarkable" + + install -Dm 755 "bin/remarkable" "${pkgdir}/usr/bin/remarkable" + install -D "debian/remarkable.mime" "${pkgdir}/usr/lib/mime/packages/remarkable" + install -D "data/media/remarkable.svg" "${pkgdir}/usr/share/icons/hicolor/scalable/apps/remarkable.svg" + install -D remarkable.desktop "${pkgdir}/usr/share/applications/remarkable.desktop" + + cp -r data/glib-2.0 "${pkgdir}/usr/share/" + + install -d "${pkgdir}/${_python_site}" + cp -r markdown pdfkit remarkable remarkable_lib "${pkgdir}/${_python_site}/" + + cp -r data "${pkgdir}/usr/share/remarkable/" +} diff --git a/remarkable.install b/remarkable.install new file mode 100644 index 000000000000..53bae9829bb1 --- /dev/null +++ b/remarkable.install @@ -0,0 +1,7 @@ +post_install() { + /usr/bin/glib-compile-schemas /usr/share/glib-2.0/schemas +} + +post_upgrade() { + post_install +} diff --git a/undo-findBar.patch b/undo-findBar.patch new file mode 100644 index 000000000000..c45cdc619659 --- /dev/null +++ b/undo-findBar.patch @@ -0,0 +1,301 @@ +diff --git a/data/ui/RemarkableWindow.ui b/data/ui/RemarkableWindow.ui +index af153bb..ff690e0 100644 +--- a/data/ui/RemarkableWindow.ui ++++ b/data/ui/RemarkableWindow.ui +@@ -250,22 +250,6 @@ + <accelerator key="z" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/> + </object> + </child> +- <child> +- <object class="GtkSeparatorMenuItem" id="menuitem_edit_sep0"> +- <property name="visible">True</property> +- <property name="can_focus">False</property> +- </object> +- </child> +- <child> +- <object class="GtkMenuItem" id="menuitem_find"> +- <property name="visible">True</property> +- <property name="sensitive">True</property> +- <property name="can_focus">False</property> +- <property name="label" translatable="yes">Find and Replace</property> +- <property name="use_underline">True</property> +- <accelerator key="f" signal="activate" modifiers="GDK_CONTROL_MASK"/> +- </object> +- </child> + <child> + <object class="GtkSeparatorMenuItem" id="menuitem_edit_sep1"> + <property name="visible">True</property> +diff --git a/remarkable/RemarkableWindow.py b/remarkable/RemarkableWindow.py +index 71cab5c..fb8c5af 100644 +--- a/remarkable/RemarkableWindow.py ++++ b/remarkable/RemarkableWindow.py +@@ -36,11 +36,11 @@ import pdfkit + import re, subprocess, datetime, os, webbrowser, _thread, sys, locale + import tempfile + import traceback +-import styles ++from remarkable import styles + import unicodedata + import warnings + import datetime +-from findBar import FindBar ++ + + #Check if gtkspellcheck is installed + try: +@@ -143,17 +143,6 @@ class RemarkableWindow(Window): + + text = "" + +- self.wrap_box = self.builder.get_object("wrap_box") +- self.find_entry = self.builder.get_object("find_entry") +- self.replace_entry = self.builder.get_object("replace_entry") +- match_case = self.builder.get_object("match_case") +- whole_word = self.builder.get_object("whole_word") +- regex = self.builder.get_object("regex") +- findbar = self.builder.get_object('findbar') +- self.findbar = FindBar(findbar, self.wrap_box, self.find_entry, self.replace_entry, +- match_case, whole_word, regex) +- self.findbar.set_text_view(self.text_view) +- + #Check if filename has been specified in terminal command + if len(sys.argv) > 1: + self.name = sys.argv[1] +@@ -172,7 +161,7 @@ class RemarkableWindow(Window): + + #Check if an updated version of application exists + _thread.start_new_thread(self.check_for_updates, ()) +- ++ + self.text_view.grab_focus() + + if spellcheck_enabled: +@@ -187,21 +176,6 @@ class RemarkableWindow(Window): + + self.temp_file_list = [] + +- def on_find_next_button_clicked(self, widget): +- self.findbar.on_find_next_button_clicked(widget) +- +- def on_find_previous_button_clicked(self, widget): +- self.findbar.on_find_previous_button_clicked(widget) +- +- def on_find_entry_changed(self, entry): +- self.findbar.on_find_entry_changed(entry) +- +- def on_replace_button_clicked(self, widget): +- self.findbar.on_replace_button_clicked(widget) +- +- def on_replace_all_button_clicked(self, widget): +- self.findbar.on_replace_all_button_clicked(widget) +- + def can_redo_changed(self, widget): + if self.text_buffer.can_redo(): + self.builder.get_object("menuitem_redo").set_sensitive(True) +@@ -245,8 +219,6 @@ class RemarkableWindow(Window): + settings_file.close() + self.load_settings() + +- self.wrap_box.set_visible(False) +- + def write_settings(self): + settings_file = open(self.settings_path, 'w') + settings_file.write(str(self.remarkable_settings)) +@@ -694,9 +666,6 @@ class RemarkableWindow(Window): + if self.text_buffer.can_redo(): + self.text_buffer.redo() + +- def on_menuitem_find_activate(self, widget): +- self.findbar.show() +- + def on_menuitem_cut_activate(self, widget): + if self.text_buffer.get_has_selection(): + start, end = self.text_buffer.get_selection_bounds() +diff --git a/remarkable/findBar.py b/remarkable/findBar.py +deleted file mode 100644 +index 598da57..0000000 +--- a/remarkable/findBar.py ++++ /dev/null +@@ -1,182 +0,0 @@ +-# Copyright (C) 2002-2009 Stephen Kennedy <stevek@gnome.org> +-# Copyright (C) 2012-2014 Kai Willadsen <kai.willadsen@gmail.com> +-# +-# This program is free software: you can redistribute it and/or modify +-# it under the terms of the GNU General Public License as published by +-# the Free Software Foundation, either version 2 of the License, or (at +-# your option) any later version. +-# +-# This program is distributed in the hope that it will be useful, but +-# WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +-# General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with this program. If not, see <http://www.gnu.org/licenses/>. +- +-from gi.repository import GtkSource # pylint: disable=E0611 +-from gi.repository import Gdk +- +- +-class FindBar(object): +- def __init__(self, widget, wrap_box, find_entry, replace_entry, +- match_case, whole_word, regex): +- self.widget = widget +- self.set_text_view(None) +- self.wrap_box = wrap_box +- self.find_entry = find_entry +- self.replace_entry = replace_entry +- # self.arrow_left.show() +- # self.arrow_right.show() +- +- settings = GtkSource.SearchSettings() +- match_case.bind_property('active', settings, 'case-sensitive') +- whole_word.bind_property('active', settings, 'at-word-boundaries') +- regex.bind_property('active', settings, 'regex-enabled') +- self.find_entry.bind_property('text', settings, 'search-text') +- settings.set_wrap_around(True) +- self.search_settings = settings +- self.widget.connect('key-press-event', self.on_find_bar_key_press) +- self.find_entry.connect('key-press-event', self.on_find_entry_key_press) +- self.find_entry.connect('key-release-event', self.on_find_entry_key_release) +- +- def on_focus_child(self, container, widget): +- if widget is not None: +- visible = self.widget.props.visible +- if widget is not self.widget and visible: +- self.hide() +- return False +- +- def on_find_bar_key_press(self, widget, event): +- if event.keyval == Gdk.KEY_Escape: +- self.hide() +- +- def on_find_entry_key_press(self, widget, event): +- if event.keyval == Gdk.KEY_Return: +- self._find_text(backwards=self.is_searching_backwards) +- elif event.keyval == Gdk.KEY_Shift_R or event.keyval == Gdk.KEY_Shift_L: +- self.is_searching_backwards = True +- elif event.keyval == Gdk.KEY_Escape: +- self.hide() +- +- def on_find_entry_key_release(self, widget, event): +- if event.keyval == Gdk.KEY_Shift_R or event.keyval == Gdk.KEY_Shift_L: +- self.is_searching_backwards = False +- +- def hide(self): +- #self.set_text_view(None) +- self.wrap_box.set_visible(False) +- self.widget.hide() +- +- def show(self): +- #self.set_text_view(None) +- self.wrap_box.set_visible(True) +- self.find_entry.grab_focus() +- self.widget.show() +- +- def set_text_view(self, textview): +- self.textview = textview +- if textview is not None: +- self.search_context = GtkSource.SearchContext.new( +- textview.get_buffer(), self.search_settings) +- self.search_context.set_highlight(True) +- else: +- self.search_context = None +- +- def start_find(self, textview, text=None): +- self.set_text_view(textview) +- self.replace_label.hide() +- self.replace_entry.hide() +- self.hbuttonbox2.hide() +- self.find_entry.get_style_context().remove_class("not-found") +- if text: +- self.find_entry.set_text(text) +- self.widget.set_row_spacing(0) +- self.widget.show() +- self.find_entry.grab_focus() +- +- def start_find_next(self, textview): +- self.set_text_view(textview) +- if self.find_entry.get_text(): +- self.on_find_next_button_clicked(self.find_next_button) +- else: +- self.start_find(self.textview) +- +- def start_find_previous(self, textview, text=None): +- self.set_text_view(textview) +- if self.find_entry.get_text(): +- self.on_find_previous_button_clicked(self.find_previous_button) +- else: +- self.start_find(self.textview) +- +- def start_replace(self, textview, text=None): +- self.set_text_view(textview) +- self.find_entry.get_style_context().remove_class("not-found") +- if text: +- self.find_entry.set_text(text) +- self.widget.set_row_spacing(6) +- self.widget.show_all() +- self.find_entry.grab_focus() +- self.wrap_box.set_visible(False) +- +- def on_find_next_button_clicked(self, button): +- self._find_text() +- +- def on_find_previous_button_clicked(self, button): +- self._find_text(backwards=True) +- +- def on_replace_button_clicked(self, entry): +- buf = self.textview.get_buffer() +- oldsel = buf.get_selection_bounds() +- match = self._find_text(0) +- newsel = buf.get_selection_bounds() +- +- # Only replace if there is an already-selected match at the cursor +- if (match and oldsel and oldsel[0].equal(newsel[0]) and +- oldsel[1].equal(newsel[1])): +- self.search_context.replace( +- newsel[0], newsel[1], self.replace_entry.get_text(), -1) +- self._find_text(0) +- +- def on_replace_all_button_clicked(self, entry): +- buf = self.textview.get_buffer() +- saved_insert = buf.create_mark( +- None, buf.get_iter_at_mark(buf.get_insert()), True) +- self.search_context.replace_all(self.replace_entry.get_text(), -1) +- if not saved_insert.get_deleted(): +- buf.place_cursor(buf.get_iter_at_mark(saved_insert)) +- self.textview.scroll_to_mark( +- buf.get_insert(), 0.25, True, 0.5, 0.5) +- +- def on_find_entry_changed(self, entry): +- self.find_entry.get_style_context().remove_class("not-found") +- self._find_text(0) +- +- def _find_text(self, start_offset=1, backwards=False): +- assert self.textview +- assert self.search_context +- buf = self.textview.get_buffer() +- insert = buf.get_iter_at_mark(buf.get_insert()) +- +- start, end = buf.get_bounds() +- self.wrap_box.set_visible(False) +- if not backwards: +- insert.forward_chars(start_offset) +- match, start_iter, end_iter = self.search_context.forward(insert) +- if match and (start_iter.get_offset() < insert.get_offset()): +- self.wrap_box.set_visible(True) +- else: +- match, start_iter, end_iter = self.search_context.backward(insert) +- if match and (start_iter.get_offset() > insert.get_offset()): +- self.wrap_box.set_visible(True) +- if match: +- buf.place_cursor(start_iter) +- buf.move_mark(buf.get_selection_bound(), end_iter) +- self.textview.scroll_to_mark( +- buf.get_insert(), 0.25, True, 0.5, 0.5) +- self.find_entry.get_style_context().remove_class("not-found") +- return True +- else: +- buf.place_cursor(buf.get_iter_at_mark(buf.get_insert())) +- self.find_entry.get_style_context().add_class("not-found") +- self.wrap_box.set_visible(False) |