summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikael Blomstrand2018-03-03 23:48:55 +0100
committerMikael Blomstrand2018-03-03 23:48:55 +0100
commit0cd4433f0fa5d49825910bd7593e7a8a11d297c0 (patch)
treea01ff8e126da207a3e8a67cfb3b21523118ea898
downloadaur-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--.SRCINFO33
-rw-r--r--.gitignore4
-rw-r--r--LICENSE21
-rw-r--r--PKGBUILD64
-rw-r--r--remarkable.install7
-rw-r--r--undo-findBar.patch301
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)