forked from Mirrors/apostrophe
removed several deprecations, added experimental features option
parent
9b662dac77
commit
8fdc9f465a
Binary file not shown.
|
@ -1,10 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schemalist gettext-domain="uberwriter">
|
||||
<schema id="net.launchpad.uberwriter" path="/net/launchpad/uberwriter/">
|
||||
<key name="example" type="s">
|
||||
<key name="ehasdjahd" type="s">
|
||||
<default>''</default>
|
||||
<summary>Sample setting</summary>
|
||||
<description>Longer description of this sample setting. Talk about allowed values and what it does.</description>
|
||||
<description>Yolo.</description>
|
||||
</key>
|
||||
</schema>
|
||||
</schemalist>
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
bind "<ctl><shift>r" { "toggle-search-replace" () };
|
||||
bind "<ctl><shift>f" { "toggle-search-replace" () };
|
||||
bind "F11" { "toggle-fullscreen" () };
|
||||
bind "F7" { "toggle-spellcheck" () };
|
||||
}
|
||||
|
||||
@binding-set editor-bindings {
|
||||
|
@ -28,6 +29,7 @@
|
|||
bind "<ctl>h" { "insert-heading" () };
|
||||
bind "<ctl>z" { "undo" () };
|
||||
bind "<ctl>y" { "redo" () };
|
||||
/*bind "<ctl>t" { "insert-at-cursor" ('[ ] ') };*/
|
||||
bind "<ctl><shift>z" { "redo" () };
|
||||
}
|
||||
|
||||
|
@ -53,7 +55,10 @@
|
|||
font: initial;
|
||||
}
|
||||
|
||||
|
||||
#UberwriterWindow GtkAlignment {
|
||||
margin-top: 30px;
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
|
||||
#UberwriterWindow.dark_mode {
|
||||
background: #333;
|
||||
|
@ -132,7 +137,6 @@
|
|||
transition: 500ms ease-in;
|
||||
}
|
||||
|
||||
|
||||
#status_bar_box GtkButton:hover,
|
||||
#status_bar_box GtkButton:active:hover {
|
||||
transition: 0s ease-in;
|
||||
|
@ -140,7 +144,6 @@
|
|||
background: #EEE;
|
||||
}
|
||||
|
||||
|
||||
#status_bar_box GtkButton:active {
|
||||
color: #EEE;
|
||||
background-color: #EEE;
|
||||
|
@ -175,15 +178,55 @@
|
|||
|
||||
#LexikonBubble {
|
||||
font: serif 12;
|
||||
background: #FFF;
|
||||
border-radius: 4px;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#QuickPreviewPopup {
|
||||
padding: 5px;
|
||||
margin: 5px;
|
||||
border: 1px solid #333;
|
||||
/*background: #FFF;*/
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
#LexikonBubble GtkLabel {
|
||||
/*padding: 5px;*/
|
||||
}
|
||||
|
||||
#LexikonBubble {
|
||||
border: 5px solid #FFF;
|
||||
}
|
||||
|
||||
#LexikonBubble .lexikon_heading {
|
||||
font: serif 12;
|
||||
padding-bottom: 5px;
|
||||
padding-top: 3px;
|
||||
padding-top: 5px;
|
||||
font-weight: bold;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
#LexikonBubble .lexikon_num {
|
||||
padding-right: 5px;
|
||||
}
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
#UberwriterWindow #AutoCorrect {
|
||||
padding: 10px;
|
||||
background: #FFF;
|
||||
/*box-shadow: 0 0 5px #000;*/
|
||||
border: 1px solid #BCD1EB;
|
||||
border-radius: 3px 10px 10px 3px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
#UberwriterWindow #AutoCorrect GtkLabel {
|
||||
padding: 3px 5px;
|
||||
font: sans-serif;
|
||||
}
|
||||
|
||||
#UberwriterWindow #AutoCorrect GtkImage {
|
||||
padding: 3px 5px;
|
||||
}
|
|
@ -21,22 +21,6 @@
|
|||
<property name="tooltip_text" translatable="yes">Activate Regex</property>
|
||||
<property name="pixbuf">icon-regex-off.png</property>
|
||||
</object>
|
||||
<object class="GtkImage" id="image1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="yalign">0.49000000953674316</property>
|
||||
<property name="stock">gtk-help</property>
|
||||
</object>
|
||||
<object class="GtkImage" id="image3">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="stock">gtk-missing-image</property>
|
||||
</object>
|
||||
<object class="GtkImage" id="image4">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="stock">gtk-missing-image</property>
|
||||
</object>
|
||||
<object class="UberwriterWindow" id="uberwriter_window">
|
||||
<property name="can_focus">True</property>
|
||||
<property name="title">UberWriter</property>
|
||||
|
@ -63,22 +47,20 @@
|
|||
<property name="can_focus">False</property>
|
||||
<child>
|
||||
<object class="GtkImageMenuItem" id="mnu_new">
|
||||
<property name="label">gtk-new</property>
|
||||
<property name="label">_New</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
<signal name="activate" handler="new_document" swapped="no"/>
|
||||
<accelerator key="n" signal="activate" modifiers="GDK_CONTROL_MASK"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkImageMenuItem" id="mnu_open">
|
||||
<property name="label">gtk-open</property>
|
||||
<property name="label">_Open</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
<signal name="activate" handler="open_document" swapped="no"/>
|
||||
<accelerator key="o" signal="activate" modifiers="GDK_CONTROL_MASK"/>
|
||||
</object>
|
||||
|
@ -99,22 +81,20 @@
|
|||
</child>
|
||||
<child>
|
||||
<object class="GtkImageMenuItem" id="mnu_save">
|
||||
<property name="label">gtk-save</property>
|
||||
<property name="label">_Save</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
<signal name="activate" handler="save_document" swapped="no"/>
|
||||
<accelerator key="s" signal="activate" modifiers="GDK_CONTROL_MASK"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkImageMenuItem" id="mnu_save_as">
|
||||
<property name="label">gtk-save-as</property>
|
||||
<property name="label">Save _As</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
<signal name="activate" handler="save_document_as" swapped="no"/>
|
||||
<accelerator key="s" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
|
||||
</object>
|
||||
|
@ -130,8 +110,6 @@
|
|||
<property name="label">Export as HTML</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="image">image4</property>
|
||||
<property name="use_stock">False</property>
|
||||
<signal name="activate" handler="export_as_html" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
|
@ -140,8 +118,6 @@
|
|||
<property name="label">Export as PDF</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="image">image3</property>
|
||||
<property name="use_stock">False</property>
|
||||
<signal name="activate" handler="export_as_pdf" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
|
@ -150,8 +126,6 @@
|
|||
<property name="label" translatable="yes">Export as ODT</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="image">image1</property>
|
||||
<property name="use_stock">False</property>
|
||||
<signal name="activate" handler="export_as_odt" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
|
@ -174,7 +148,7 @@
|
|||
<object class="GtkMenuItem" id="copy-html-to-clipboard">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="label" translatable="yes">Copy raw HTML to clipboard</property>
|
||||
<property name="label" translatable="yes">Copy Raw HTML to Clipboard</property>
|
||||
<property name="use_underline">True</property>
|
||||
<signal name="activate" handler="copy_html_to_clipboard" swapped="no"/>
|
||||
</object>
|
||||
|
@ -187,11 +161,10 @@
|
|||
</child>
|
||||
<child>
|
||||
<object class="GtkImageMenuItem" id="mnu_close">
|
||||
<property name="label">gtk-close</property>
|
||||
<property name="label">_Quit</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
<accelerator key="w" signal="activate" modifiers="GDK_CONTROL_MASK"/>
|
||||
</object>
|
||||
</child>
|
||||
|
@ -243,7 +216,7 @@
|
|||
<property name="tooltip_text" translatable="yes">Light text on a dark background</property>
|
||||
<property name="label" translatable="yes">Dark Mode</property>
|
||||
<property name="draw_as_radio">True</property>
|
||||
<signal name="toggled" handler="dark_mode_toggled" swapped="no"/>
|
||||
<signal name="activate" handler="dark_mode_toggled" swapped="no"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
|
@ -253,7 +226,7 @@
|
|||
<property name="tooltip_text" translatable="yes">Switch to preview mode</property>
|
||||
<property name="label" translatable="yes">Preview</property>
|
||||
<property name="draw_as_radio">True</property>
|
||||
<signal name="toggled" handler="menu_activate_preview" swapped="no"/>
|
||||
<signal name="activate" handler="menu_activate_preview" swapped="no"/>
|
||||
<accelerator key="p" signal="activate" modifiers="GDK_CONTROL_MASK"/>
|
||||
</object>
|
||||
</child>
|
||||
|
@ -279,7 +252,7 @@
|
|||
<property name="label">Use Typewritermode (experimental)</property>
|
||||
<property name="active">True</property>
|
||||
<property name="draw_as_radio">True</property>
|
||||
<signal name="toggled" handler="toggle_typewriter" swapped="no"/>
|
||||
<!-- <signal name="toggled" handler="toggle_typewriter" swapped="no"/> -->
|
||||
<accelerator key="t" signal="activate" modifiers="GDK_CONTROL_MASK"/>
|
||||
</object>
|
||||
</child>
|
||||
|
@ -296,7 +269,7 @@
|
|||
<property name="label" translatable="yes">Auto _Spellcheck</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="active">True</property>
|
||||
<signal name="toggled" handler="toggle_spellcheck" swapped="no"/>
|
||||
<signal name="activate" handler="toggle_spellcheck" swapped="no"/>
|
||||
<accelerator key="F7" signal="activate"/>
|
||||
</object>
|
||||
</child>
|
||||
|
@ -374,7 +347,6 @@
|
|||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_stock">True</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
@ -403,7 +375,7 @@
|
|||
<property name="width_request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="margin_left">5</property>
|
||||
<property name="margin_start">5</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes">Search</property>
|
||||
</object>
|
||||
|
@ -533,7 +505,7 @@
|
|||
<property name="width_request">100</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="margin_left">5</property>
|
||||
<property name="margin_start">5</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="label" translatable="yes">Replace with</property>
|
||||
</object>
|
||||
|
@ -655,9 +627,7 @@
|
|||
<object class="GtkAlignment" id="editor_alignment">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="xscale">0</property>
|
||||
<property name="top_padding">30</property>
|
||||
<property name="bottom_padding">60</property>
|
||||
<property name="halign">center</property>
|
||||
<child>
|
||||
<placeholder/>
|
||||
</child>
|
||||
|
@ -692,7 +662,7 @@
|
|||
<property name="has_tooltip">True</property>
|
||||
<property name="tooltip_markup" translatable="yes">Go into focus mode</property>
|
||||
<property name="tooltip_text" translatable="yes">Go into focus mode</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="relief">none</property>
|
||||
<property name="focus_on_click">False</property>
|
||||
<signal name="toggled" handler="set_focusmode" swapped="no"/>
|
||||
|
@ -773,8 +743,8 @@
|
|||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="margin_left">10</property>
|
||||
<property name="margin_right">10</property>
|
||||
<property name="margin_start">10</property>
|
||||
<property name="margin_end">10</property>
|
||||
<property name="orientation">vertical</property>
|
||||
</object>
|
||||
<packing>
|
||||
|
@ -799,7 +769,7 @@
|
|||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="margin_right">11</property>
|
||||
<property name="margin_end">11</property>
|
||||
<property name="xalign">1</property>
|
||||
<property name="label">0</property>
|
||||
<property name="width_chars">6</property>
|
||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-09-15 14:02+0200\n"
|
||||
"POT-Creation-Date: 2014-09-30 01:49+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -17,6 +17,10 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../uberwriter/__init__.py:35
|
||||
msgid "Show debug messages (-vv debugs uberwriter_lib also)"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/AboutUberwriterDialog.ui.h:1
|
||||
msgid ""
|
||||
"# Copyright (C) 2012, Wolf Vollprecht <w.vollprecht@gmail.com>\n"
|
||||
|
@ -38,171 +42,6 @@ msgstr ""
|
|||
msgid "Copyright (C) 2012, Wolf Vollprecht <w.vollprecht@gmail.com>"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/__init__.py:35
|
||||
msgid "Show debug messages (-vv debugs uberwriter_lib also)"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/FormatShortcuts.py:85
|
||||
msgid "emphasized text"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/FormatShortcuts.py:87
|
||||
msgid "strong text"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/FormatShortcuts.py:101
|
||||
msgid "List item"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/FormatShortcuts.py:182
|
||||
msgid "Heading"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:1
|
||||
msgid "Export"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:2
|
||||
msgid "Smart"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:3
|
||||
msgid "Pandoc can automatically make \"--\" to a long dash and more"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:4
|
||||
msgid "Normalize"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:5
|
||||
msgid ""
|
||||
"Removes things like double spaces or spaces at the beginning of a paragraph"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:6
|
||||
msgid "Table of Contents"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:7
|
||||
msgid "Standalone"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:8
|
||||
msgid ""
|
||||
"Use a header and footer to include things like stylesheets and meta "
|
||||
"information"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:9
|
||||
msgid "Number Sections"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:10
|
||||
msgid "Strict Markdown"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:11
|
||||
msgid "Use \"strict\" markdown instead of \"pandoc\" markdown"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:12
|
||||
msgid "Slideshow incremental bullets"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:13
|
||||
msgid "Show one bullet point after another in a slideshow"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:14
|
||||
msgid "<b>General Options</b>"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:15
|
||||
msgid "Highlight syntax"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:16
|
||||
msgid "Choose a color theme for syntax highlighting"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:17
|
||||
msgid "Highlight style "
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:18
|
||||
msgid "<b>Syntax highlighting</b> (HTML, LaTeX)"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:19
|
||||
msgid "Self Contained"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:20
|
||||
msgid ""
|
||||
"Produces a HTML that has no external dependencies (all images and "
|
||||
"stylesheets are included)"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:21
|
||||
msgid "HTML 5"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:22
|
||||
msgid "Use HTML 5 syntax"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:23
|
||||
msgid "Choose a CSS File that you want to use"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:24
|
||||
msgid "CSS File"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:25
|
||||
msgid "<b>HTML Options</b>"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:26
|
||||
msgid "<b>Bibliography File</b>"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:27
|
||||
msgid "Commandline Reference"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:475
|
||||
msgid "(no suggestions)"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:499
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:502
|
||||
msgid "Add \"{}\" to Dictionary"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:506
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:508
|
||||
msgid "Ignore All"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:523
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:525
|
||||
msgid "Languages"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:541
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:544
|
||||
msgid "Suggestions"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter.desktop.in.h:1
|
||||
msgid "UberWriter"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter.desktop.in.h:2
|
||||
msgid "UberWriter, a simple and distraction free Markdown Editor"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterWindow.ui.h:1
|
||||
msgid "Case Sensitive"
|
||||
msgstr ""
|
||||
|
@ -355,57 +194,6 @@ msgstr ""
|
|||
msgid "Characters:"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:338
|
||||
msgid "Save your File"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:484
|
||||
msgid "You can not export to PDF."
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:486
|
||||
msgid ""
|
||||
"Please install <a href=\"apt:texlive\">texlive</a> from the software center."
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:516
|
||||
msgid "MarkDown or Plain Text"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:519
|
||||
msgid "Open a .md-File"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:541
|
||||
msgid "You have not saved your changes."
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:543
|
||||
msgid "Close without Saving"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:544
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:545
|
||||
msgid "Save now"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:546
|
||||
msgid "Unsaved changes"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:611
|
||||
msgid "You can not enable the Spell Checker."
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:613
|
||||
msgid ""
|
||||
"Please install 'hunspell' or 'aspell' dictionarys for your language from the "
|
||||
"software center."
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterInlinePreview.py:174
|
||||
msgid "Website is not available"
|
||||
msgstr ""
|
||||
|
@ -414,10 +202,222 @@ msgstr ""
|
|||
msgid "Website is available"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterInlinePreview.py:385
|
||||
#: ../uberwriter/UberwriterInlinePreview.py:419
|
||||
msgid "Open Link in Webbrowser"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterInlinePreview.py:443
|
||||
#: ../uberwriter/UberwriterInlinePreview.py:475
|
||||
msgid "No matching footnote found"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:344
|
||||
msgid "Save your File"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:490
|
||||
msgid "You can not export to PDF."
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:492
|
||||
msgid ""
|
||||
"Please install <a href=\"apt:texlive\">texlive</a> from the software center."
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:522
|
||||
msgid "MarkDown or Plain Text"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:525
|
||||
msgid "Open a .md-File"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:547
|
||||
msgid "You have not saved your changes."
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:549
|
||||
msgid "Close without Saving"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:550
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:551
|
||||
msgid "Save now"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:552
|
||||
msgid "Unsaved changes"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:617
|
||||
msgid "You can not enable the Spell Checker."
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/UberwriterWindow.py:619
|
||||
msgid ""
|
||||
"Please install 'hunspell' or 'aspell' dictionarys for your language from the "
|
||||
"software center."
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:499
|
||||
msgid "(no suggestions)"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:533
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:536
|
||||
msgid "Add \"{}\" to Dictionary"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:540
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:542
|
||||
msgid "Ignore All"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:557
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:559
|
||||
msgid "Languages"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:575
|
||||
#: ../uberwriter_lib/gtkspellcheck/spellcheck.py:578
|
||||
msgid "Suggestions"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/FormatShortcuts.py:85
|
||||
msgid "emphasized text"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/FormatShortcuts.py:87
|
||||
msgid "strong text"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/FormatShortcuts.py:101
|
||||
msgid "List item"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter/FormatShortcuts.py:182
|
||||
msgid "Heading"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter.desktop.in.h:1
|
||||
msgid "UberWriter"
|
||||
msgstr ""
|
||||
|
||||
#: ../uberwriter.desktop.in.h:2
|
||||
msgid "UberWriter, a simple and distraction free Markdown Editor"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:1
|
||||
msgid "Export"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:2
|
||||
msgid "Smart"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:3
|
||||
msgid "Pandoc can automatically make \"--\" to a long dash and more"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:4
|
||||
msgid "Normalize"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:5
|
||||
msgid ""
|
||||
"Removes things like double spaces or spaces at the beginning of a paragraph"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:6
|
||||
msgid "Table of Contents"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:7
|
||||
msgid "Standalone"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:8
|
||||
msgid ""
|
||||
"Use a header and footer to include things like stylesheets and meta "
|
||||
"information"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:9
|
||||
msgid "Number Sections"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:10
|
||||
msgid "Strict Markdown"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:11
|
||||
msgid "Use \"strict\" markdown instead of \"pandoc\" markdown"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:12
|
||||
msgid "Slideshow incremental bullets"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:13
|
||||
msgid "Show one bullet point after another in a slideshow"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:14
|
||||
msgid "<b>General Options</b>"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:15
|
||||
msgid "Highlight syntax"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:16
|
||||
msgid "Choose a color theme for syntax highlighting"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:17
|
||||
msgid "Highlight style "
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:18
|
||||
msgid "<b>Syntax highlighting</b> (HTML, LaTeX)"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:19
|
||||
msgid "Self Contained"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:20
|
||||
msgid ""
|
||||
"Produces a HTML that has no external dependencies (all images and "
|
||||
"stylesheets are included)"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:21
|
||||
msgid "HTML 5"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:22
|
||||
msgid "Use HTML 5 syntax"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:23
|
||||
msgid "Choose a CSS File that you want to use"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:24
|
||||
msgid "CSS File"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:25
|
||||
msgid "<b>HTML Options</b>"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:26
|
||||
msgid "<b>Bibliography File</b>"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/ui/UberwriterAdvancedExportDialog.ui.h:27
|
||||
msgid "Commandline Reference"
|
||||
msgstr ""
|
||||
|
|
9
setup.py
9
setup.py
|
@ -104,14 +104,13 @@ def update_desktop_file(filename, target_pkgdata, target_scripts):
|
|||
fout.close()
|
||||
fin.close()
|
||||
os.rename(fout.name, fin.name)
|
||||
|
||||
except (OSError, IOError) as e:
|
||||
print ("ERROR: Can't find %s" % filename)
|
||||
sys.exit(1)
|
||||
|
||||
def compile_schemas(root, target_data):
|
||||
if target_data == '/usr/':
|
||||
return # /usr paths don't need this, they will be handled by dpkg
|
||||
schemadir = os.path.normpath(root + target_data + 'share/glib-2.0/schemas')
|
||||
schemadir = os.path.normpath('usr/share/glib-2.0/schemas')
|
||||
if (os.path.isdir(schemadir) and
|
||||
os.path.isfile('/usr/bin/glib-compile-schemas')):
|
||||
os.system('/usr/bin/glib-compile-schemas "%s"' % schemadir)
|
||||
|
@ -166,5 +165,7 @@ DistUtilsExtra.auto.setup(
|
|||
package_data={
|
||||
'uberwriter_lib.pylocales' : ['locales.db']
|
||||
},
|
||||
data_files=[('uberwriter_lib/pylocales', ['uberwriter_lib/pylocales/locales.db'])]
|
||||
data_files=[
|
||||
('uberwriter_lib/pylocales', ['uberwriter_lib/pylocales/locales.db']),
|
||||
('/usr/share/glib-2.0/schemas', ['data/glib-2.0/schemas/net.launchpad.uberwriter.gschema.xml'])]
|
||||
)
|
|
@ -306,11 +306,13 @@ class MarkupBuffer():
|
|||
def recalculate(self, lm):
|
||||
multiplier = self.multiplier
|
||||
for i in range(0, 6):
|
||||
self.rev_leftmargin[i].set_property("left-margin", (lm - multiplier) - multiplier * (i + 1))
|
||||
new_margin = (lm - multiplier) - multiplier * (i + 1)
|
||||
self.rev_leftmargin[i].set_property("left-margin", 0 if new_margin < 0 else new_margin)
|
||||
self.rev_leftmargin[i].set_property("indent", - multiplier * (i + 1) - multiplier)
|
||||
|
||||
for i in range(0, 6):
|
||||
self.leftmargin[i].set_property("left-margin", (lm - multiplier) + multiplier + multiplier * (i + 1))
|
||||
new_margin = (lm - multiplier) + multiplier + multiplier * (i + 1)
|
||||
self.leftmargin[i].set_property("left-margin", 0 if new_margin < 0 else new_margin)
|
||||
self.leftmargin[i].set_property("indent", - (multiplier - 1) * (i + 1) - multiplier)
|
||||
|
||||
def dark_mode(self, active=False):
|
||||
|
|
|
@ -125,10 +125,8 @@ class DictAccessor(object):
|
|||
act_res['class'] = l
|
||||
else:
|
||||
ll = re.split('(?: |^)(\d): ', l)
|
||||
# print(ll)
|
||||
act_def = {}
|
||||
for lll in ll:
|
||||
# print (lll)
|
||||
if lll.strip().isdigit() or not lll.strip():
|
||||
if 'description' in act_def and act_def['description']:
|
||||
act_res['defs'].append(act_def.copy())
|
||||
|
@ -181,8 +179,10 @@ def check_url(url, item, spinner):
|
|||
def get_dictionary(term):
|
||||
da = DictAccessor()
|
||||
output = da.getDefinition('wn', term)
|
||||
output = output[0]
|
||||
print(output)
|
||||
if(len(output)):
|
||||
output = output[0]
|
||||
else:
|
||||
return None
|
||||
return da.parse_wordnet(output.decode(encoding='UTF-8'))
|
||||
|
||||
def get_web_thumbnail(url, item, spinner):
|
||||
|
@ -220,11 +220,15 @@ def fill_lexikon_bubble(vocab, lexikon_dict):
|
|||
for entry in lexikon_dict:
|
||||
vocab_label = Gtk.Label.new(vocab + ' ~ ' + entry['class'])
|
||||
vocab_label.get_style_context().add_class('lexikon_heading')
|
||||
vocab_label.set_halign(Gtk.Align.START)
|
||||
vocab_label.set_justify(Gtk.Justification.LEFT)
|
||||
grid.attach(vocab_label, 0, i, 3, 1)
|
||||
|
||||
for definition in entry['defs']:
|
||||
i = i + 1
|
||||
num_label = Gtk.Label.new(definition['num'])
|
||||
num_label.get_style_context().add_class('lexikon_num')
|
||||
num_label.set_justify(Gtk.Justification.RIGHT)
|
||||
grid.attach(num_label, 0, i, 1, 1)
|
||||
|
||||
def_label = Gtk.Label.new(' '.join(definition['description']))
|
||||
|
@ -254,19 +258,44 @@ class UberwriterInlinePreview():
|
|||
self.TextView.connect_after('populate-popup', self.populate_popup)
|
||||
self.TextView.connect_after('popup-menu', self.move_popup)
|
||||
self.TextView.connect('button-press-event', self.click_move_button)
|
||||
self.popover = None
|
||||
|
||||
def open_popover_with_widget(self, widget):
|
||||
a = self.TextBuffer.create_child_anchor(self.TextBuffer.get_iter_at_mark(self.ClickMark))
|
||||
# a = self.TextBuffer.create_child_anchor(self.TextBuffer.get_iter_at_mark(self.ClickMark))
|
||||
a = Gtk.Window.new(Gtk.WindowType.POPUP)
|
||||
a.set_transient_for(self.TextView.get_toplevel())
|
||||
a.grab_focus()
|
||||
a.set_name("QuickPreviewPopup")
|
||||
# a.set_attached_to(self.TextView)
|
||||
a.move(300, 300)
|
||||
a.set_modal(True)
|
||||
def close(widget, event, *args):
|
||||
if(event.keyval == Gdk.KEY_Escape):
|
||||
widget.destroy()
|
||||
a.connect('key-press-event', close)
|
||||
b = Gtk.Grid.new()
|
||||
self.TextView.add_child_at_anchor(b, a)
|
||||
b.show()
|
||||
popover = Gtk.Popover.new(b)
|
||||
dismiss, rect = popover.get_pointing_to()
|
||||
rect.y = rect.y - 20
|
||||
popover.set_pointing_to(rect)
|
||||
popover.add(widget)
|
||||
popover.show_all()
|
||||
popover.set_property('width-request', 50)
|
||||
alignment = Gtk.Alignment()
|
||||
alignment.props.margin_bottom = 5
|
||||
alignment.props.margin_top = 5
|
||||
alignment.props.margin_left = 4
|
||||
alignment.add(widget)
|
||||
a.add(alignment)
|
||||
# self.TextView.add_child_in_window(b, Gtk.TextWindowType.WIDGET, 200, 200)
|
||||
# b.attach(Gtk.Label.new("test 123"), 0, 0, 1, 1)
|
||||
# b.show_all()
|
||||
a.show_all()
|
||||
# self.popover = Gtk.Popover.new(b)
|
||||
# dismiss, rect = popover.get_pointing_to()
|
||||
# rect.y = rect.y - 20
|
||||
# popover.set_pointing_to(rect)
|
||||
# widget = Gtk.Label.new("testasds a;12j3 21 lk3j213")
|
||||
# widget.show_all()
|
||||
|
||||
# b.attach(widget, 0, 1, 1, 1)
|
||||
# self.popover.set_modal(False)
|
||||
# self.popover.show_all()
|
||||
# print(self.popover)
|
||||
# popover.set_property('width-request', 50)
|
||||
|
||||
def click_move_button(self, widget, event):
|
||||
if event.button == 3:
|
||||
|
@ -408,10 +437,8 @@ class UberwriterInlinePreview():
|
|||
pb = GdkPixbuf.Pixbuf.new_from_file_at_size(path, 400, 300)
|
||||
image = Gtk.Image.new_from_pixbuf(pb)
|
||||
image.show()
|
||||
popover.add(image)
|
||||
popover.show_all()
|
||||
self.open_popover_with_widget(image)
|
||||
item.set_property('width-request', 50)
|
||||
popover.set_property('width-request', 50)
|
||||
|
||||
# item.add(image)
|
||||
# item.set_property('width-request', 50)
|
||||
|
@ -461,19 +488,14 @@ class UberwriterInlinePreview():
|
|||
end_iter = start_iter.copy()
|
||||
end_iter.forward_word_end()
|
||||
word = self.TextBuffer.get_text(start_iter, end_iter, False)
|
||||
print(word)
|
||||
terms = get_dictionary(word)
|
||||
sc = Gtk.ScrolledWindow.new()
|
||||
# tv = Gtk.TextView.new()
|
||||
# tv.set_editable(False)
|
||||
# tv.set_name('LexikonBubble')
|
||||
|
||||
sc.add(fill_lexikon_bubble(word, get_dictionary(word)))
|
||||
sc.props.width_request = 500
|
||||
sc.props.height_request = 400
|
||||
# tv.get_buffer().set_text(terms)
|
||||
sc.show_all()
|
||||
self.open_popover_with_widget(sc)
|
||||
if terms:
|
||||
sc = Gtk.ScrolledWindow.new()
|
||||
sc.add(fill_lexikon_bubble(word, terms))
|
||||
sc.props.width_request = 500
|
||||
sc.props.height_request = 400
|
||||
sc.show_all()
|
||||
self.open_popover_with_widget(sc)
|
||||
|
||||
return
|
||||
|
||||
|
|
|
@ -251,8 +251,8 @@ class TextEditor(Gtk.TextView):
|
|||
stop = buf.get_iter_at_offset(
|
||||
offset + undo_action.length
|
||||
)
|
||||
buf.delete(start, stop)
|
||||
buf.place_cursor(start)
|
||||
buf.delete(start, stop)
|
||||
else:
|
||||
start = buf.get_iter_at_offset(undo_action.start)
|
||||
buf.insert(start, undo_action.text)
|
||||
|
@ -318,8 +318,6 @@ class TextEditor(Gtk.TextView):
|
|||
if self.not_undoable_action:
|
||||
return
|
||||
|
||||
logger.debug(text)
|
||||
logger.debug("b: %i, l: %i" % (length, len(text)))
|
||||
undo_action = UndoableInsert(text_iter, text, len(text))
|
||||
try:
|
||||
prev_insert = self.undo_stack.pop()
|
||||
|
@ -336,7 +334,7 @@ class TextEditor(Gtk.TextView):
|
|||
self.undo_stack.append(prev_insert)
|
||||
else:
|
||||
self.undo_stack.append(prev_insert)
|
||||
self.undo_stack.append(undo_action)
|
||||
self.undo_stack.append(undo_action)
|
||||
|
||||
def on_delete_range(self, text_buffer, start_iter, end_iter):
|
||||
"""
|
||||
|
@ -477,8 +475,6 @@ class TestWindow(Gtk.Window):
|
|||
redo_button.show()
|
||||
windowbox.pack_start(redo_button, False, False, 0)
|
||||
|
||||
print(self.editor.text)
|
||||
|
||||
|
||||
if __name__== "__main__":
|
||||
test = TestWindow()
|
||||
|
|
|
@ -40,6 +40,7 @@ from .UberwriterTextEditor import TextEditor
|
|||
from .UberwriterInlinePreview import UberwriterInlinePreview
|
||||
from .UberwriterSidebar import UberwriterSidebar
|
||||
from .UberwriterSearchAndReplace import UberwriterSearchAndReplace
|
||||
from .UberwriterAutoCorrect import UberwriterAutoCorrect
|
||||
|
||||
import logging
|
||||
logger = logging.getLogger('uberwriter')
|
||||
|
@ -48,10 +49,7 @@ logger = logging.getLogger('uberwriter')
|
|||
|
||||
import locale
|
||||
|
||||
try:
|
||||
from gtkspellcheck import SpellChecker
|
||||
except ImportError:
|
||||
from uberwriter_lib.gtkspellcheck import SpellChecker
|
||||
from uberwriter_lib.gtkspellcheck import SpellChecker
|
||||
|
||||
try:
|
||||
import apt
|
||||
|
@ -108,13 +106,13 @@ class UberwriterWindow(Window):
|
|||
self.MarkupBuffer.markup_buffer(0)
|
||||
|
||||
def init_typewriter(self):
|
||||
self.EditorAlignment.props.top_padding = self.window_height / 2
|
||||
self.EditorAlignment.props.bottom_padding = self.window_height / 2
|
||||
self.EditorAlignment.props.margin_top = self.window_height / 2
|
||||
self.EditorAlignment.props.margin_bottom = self.window_height / 2
|
||||
self.typewriter_initiated = True
|
||||
|
||||
def remove_typewriter(self):
|
||||
self.EditorAlignment.props.top_padding = self.alignment_padding
|
||||
self.EditorAlignment.props.bottom_padding = self.alignment_padding
|
||||
self.EditorAlignment.props.margin_top = self.alignment_padding
|
||||
self.EditorAlignment.props.margin_bottom = 250
|
||||
self.text_change_event = self.TextBuffer.connect('changed', self.text_changed)
|
||||
|
||||
def get_text(self):
|
||||
|
@ -207,6 +205,7 @@ class UberwriterWindow(Window):
|
|||
def ease_out_cubic(t):
|
||||
p = t - 1;
|
||||
return p * p * p + 1;
|
||||
|
||||
now = frame_clock.get_frame_time()
|
||||
if self.smooth_scroll_acttarget != self.smooth_scroll_data['target_pos']:
|
||||
self.smooth_scroll_starttime = now
|
||||
|
@ -217,9 +216,13 @@ class UberwriterWindow(Window):
|
|||
t = float(now - self.smooth_scroll_starttime) / float(self.smooth_scroll_endtime - self.smooth_scroll_starttime)
|
||||
else:
|
||||
t = 1
|
||||
pos = self.smooth_scroll_data['source_pos'] + (t * (self.smooth_scroll_data['target_pos'] - self.smooth_scroll_data['source_pos']))
|
||||
widget.get_vadjustment().props.value = pos
|
||||
self.smooth_scroll_data['target_pos'] = -1
|
||||
return True
|
||||
|
||||
t = ease_out_cubic(t)
|
||||
pos = self.smooth_scroll_data['source_pos'] + (t * (self.smooth_scroll_data['target_pos'] - self.smooth_scroll_data['source_pos']))
|
||||
# print("n %i, t %f, p %i, st %i, et %i" % (now, t, pos, self.smooth_scroll_starttime, self.smooth_scroll_endtime))
|
||||
widget.get_vadjustment().props.value = pos
|
||||
return True # continue ticking
|
||||
|
||||
|
@ -230,7 +233,7 @@ class UberwriterWindow(Window):
|
|||
loc_rect = self.TextEditor.get_iter_location(ins_it)
|
||||
|
||||
# alignment offset added from top
|
||||
pos_y = loc_rect.y + loc_rect.height + self.EditorAlignment.props.top_padding
|
||||
pos_y = loc_rect.y + loc_rect.height + self.EditorAlignment.props.margin_top
|
||||
|
||||
ha = self.ScrolledWindow.get_vadjustment()
|
||||
if ha.props.page_size < gradient_offset:
|
||||
|
@ -244,7 +247,7 @@ class UberwriterWindow(Window):
|
|||
if pos != (ha.props.page_size * 0.5):
|
||||
target_pos = pos_y - (ha.props.page_size * 0.5)
|
||||
elif pos > ha.props.page_size - gradient_offset - 60:
|
||||
target_pos = pos_y - ha.props.page_size + gradient_offset + 60
|
||||
target_pos = pos_y - ha.props.page_size + gradient_offset + 40
|
||||
elif pos < gradient_offset:
|
||||
target_pos = pos_y - gradient_offset
|
||||
self.smooth_scroll_data = {
|
||||
|
@ -291,8 +294,8 @@ class UberwriterWindow(Window):
|
|||
self.get_style_context().add_class("large")
|
||||
|
||||
|
||||
self.EditorAlignment.props.top_padding = self.alignment_padding
|
||||
self.EditorAlignment.props.bottom_padding = self.alignment_padding
|
||||
self.EditorAlignment.props.margin_bottom = self.alignment_padding + 30
|
||||
self.EditorAlignment.props.margin_top = self.alignment_padding
|
||||
self.TextEditor.set_left_margin(lm)
|
||||
self.TextEditor.set_right_margin(lm)
|
||||
|
||||
|
@ -312,7 +315,6 @@ class UberwriterWindow(Window):
|
|||
pgc = self.TextEditor.get_pango_context()
|
||||
mets = pgc.get_metrics()
|
||||
self.MarkupBuffer.set_multiplier(Pango.units_to_double(mets.get_approximate_char_width()) + 1)
|
||||
print(Pango.units_to_double(mets.get_approximate_char_width()))
|
||||
|
||||
|
||||
def save_document(self, widget, data=None):
|
||||
|
@ -338,8 +340,8 @@ class UberwriterWindow(Window):
|
|||
_("Save your File"),
|
||||
self,
|
||||
Gtk.FileChooserAction.SAVE,
|
||||
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
|
||||
Gtk.STOCK_SAVE, Gtk.ResponseType.OK)
|
||||
("_Cancel", Gtk.ResponseType.CANCEL,
|
||||
"_Save", Gtk.ResponseType.OK)
|
||||
)
|
||||
|
||||
filechooser.set_do_overwrite_confirmation(True)
|
||||
|
@ -376,8 +378,8 @@ class UberwriterWindow(Window):
|
|||
"Save your File",
|
||||
self,
|
||||
Gtk.FileChooserAction.SAVE,
|
||||
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
|
||||
Gtk.STOCK_SAVE, Gtk.ResponseType.OK)
|
||||
("_Cancel", Gtk.ResponseType.CANCEL,
|
||||
"_Save", Gtk.ResponseType.OK)
|
||||
)
|
||||
filechooser.set_do_overwrite_confirmation(True)
|
||||
if self.filename:
|
||||
|
@ -418,8 +420,8 @@ class UberwriterWindow(Window):
|
|||
"Export as %s" % export_type.upper(),
|
||||
self,
|
||||
Gtk.FileChooserAction.SAVE,
|
||||
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
|
||||
Gtk.STOCK_SAVE, Gtk.ResponseType.OK)
|
||||
("_Cancel", Gtk.ResponseType.CANCEL,
|
||||
"_Save", Gtk.ResponseType.OK)
|
||||
)
|
||||
|
||||
filechooser.set_do_overwrite_confirmation(True)
|
||||
|
@ -519,8 +521,8 @@ class UberwriterWindow(Window):
|
|||
_("Open a .md-File"),
|
||||
self,
|
||||
Gtk.FileChooserAction.OPEN,
|
||||
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
|
||||
Gtk.STOCK_OPEN, Gtk.ResponseType.OK)
|
||||
("_Cancel", Gtk.ResponseType.CANCEL,
|
||||
"_Open", Gtk.ResponseType.OK)
|
||||
)
|
||||
filechooser.add_filter(filefilter)
|
||||
response = filechooser.run()
|
||||
|
@ -587,32 +589,42 @@ class UberwriterWindow(Window):
|
|||
def menu_activate_preview(self, widget=None):
|
||||
self.preview_button.emit('activate')
|
||||
|
||||
# # Not added as menu button as of now. Standard is typewriter active.
|
||||
# def toggle_typewriter(self, widget, data=None):
|
||||
# self.typewriter_active = widget.get_active()
|
||||
def toggle_spellcheck(self, widget=None, data=None):
|
||||
if widget:
|
||||
if self.spellcheck:
|
||||
if widget.get_active():
|
||||
self.SpellChecker.enable()
|
||||
else:
|
||||
self.SpellChecker.disable()
|
||||
|
||||
def toggle_spellcheck(self, widget, data=None):
|
||||
if self.spellcheck:
|
||||
if widget.get_active():
|
||||
self.SpellChecker.enable()
|
||||
else:
|
||||
elif widget.get_active():
|
||||
self.SpellChecker = SpellChecker(self.TextEditor, self, locale.getdefaultlocale()[0], collapse=False)
|
||||
if self.auto_correct:
|
||||
self.auto_correct.set_language(self.SpellChecker.language)
|
||||
self.SpellChecker.connect_language_change(self.auto_correct.set_language)
|
||||
try:
|
||||
self.spellcheck = True
|
||||
except:
|
||||
self.SpellChecker = None
|
||||
self.spellcheck = False
|
||||
dialog = Gtk.MessageDialog(self,
|
||||
Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,
|
||||
Gtk.MessageType.INFO,
|
||||
Gtk.ButtonsType.NONE,
|
||||
_("You can not enable the Spell Checker.")
|
||||
)
|
||||
dialog.format_secondary_text(_("Please install 'hunspell' or 'aspell' dictionarys for your language from the software center."))
|
||||
response = dialog.run()
|
||||
return
|
||||
else:
|
||||
widget = self.spellcheck_button
|
||||
if self.spellcheck and self.SpellChecker.enabled():
|
||||
self.SpellChecker.disable()
|
||||
elif widget.get_active():
|
||||
try:
|
||||
self.SpellChecker = SpellChecker(self.TextEditor, locale.getdefaultlocale()[0], collapse=False)
|
||||
self.spellcheck = True
|
||||
except:
|
||||
self.SpellChecker = None
|
||||
self.spellcheck = False
|
||||
dialog = Gtk.MessageDialog(self,
|
||||
Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,
|
||||
Gtk.MessageType.INFO,
|
||||
Gtk.ButtonsType.NONE,
|
||||
_("You can not enable the Spell Checker.")
|
||||
)
|
||||
dialog.format_secondary_text(_("Please install 'hunspell' or 'aspell' dictionarys for your language from the software center."))
|
||||
response = dialog.run()
|
||||
return
|
||||
widget.set_active(False)
|
||||
else:
|
||||
self.SpellChecker.enable()
|
||||
widget.set_active(True)
|
||||
|
||||
return
|
||||
|
||||
def on_drag_data_received(self, widget, drag_context, x, y,
|
||||
|
@ -621,7 +633,6 @@ class UberwriterWindow(Window):
|
|||
if info == 1:
|
||||
# uri target
|
||||
uris = data.get_uris()
|
||||
print(uris)
|
||||
for uri in uris:
|
||||
uri = urllib.parse.unquote_plus(uri)
|
||||
mime = mimetypes.guess_type(uri)
|
||||
|
@ -643,11 +654,9 @@ class UberwriterWindow(Window):
|
|||
selection_bound = self.TextBuffer.get_selection_bound()
|
||||
cursor_iter = self.TextBuffer.get_iter_at_mark(insert_mark)
|
||||
cursor_iter.backward_chars(len(text) - ll)
|
||||
print('move_cursor')
|
||||
self.TextBuffer.move_mark(insert_mark, cursor_iter)
|
||||
cursor_iter.forward_chars(lr)
|
||||
self.TextBuffer.move_mark(selection_bound, cursor_iter)
|
||||
print('move selection')
|
||||
|
||||
elif info == 2:
|
||||
# Text target
|
||||
|
@ -656,7 +665,6 @@ class UberwriterWindow(Window):
|
|||
self.TextBuffer.insert_at_cursor(data.get_text())
|
||||
Gtk.drag_finish(drag_context, True, True, time)
|
||||
self.present()
|
||||
print("returning true")
|
||||
return False
|
||||
|
||||
def toggle_preview(self, widget, data=None):
|
||||
|
@ -898,6 +906,10 @@ class UberwriterWindow(Window):
|
|||
cr.set_source(lg_btm)
|
||||
cr.fill()
|
||||
|
||||
def use_experimental_features(self, val):
|
||||
self.auto_correct = UberwriterAutoCorrect(self.TextEditor, self.TextBuffer)
|
||||
|
||||
|
||||
def finish_initializing(self, builder): # pylint: disable=E1002
|
||||
"""Set up the main window"""
|
||||
super(UberwriterWindow, self).finish_initializing(builder)
|
||||
|
@ -942,10 +954,10 @@ class UberwriterWindow(Window):
|
|||
bbtn = Gtk.MenuButton()
|
||||
btn_settings = Gtk.MenuButton()
|
||||
btn_settings.props.image = Gtk.Image.new_from_icon_name('emblem-system-symbolic', Gtk.IconSize.BUTTON)
|
||||
self.builder.get_object("menu4").detach()
|
||||
btn_settings.set_popup(self.builder.get_object("menu4"))
|
||||
# icon = Gio.ThemedIcon(name="mail-sendm receive-symbolic")
|
||||
# image = Gtk.Image.new_from_gicon(icon, Gtk.IconSize.BUTTON)
|
||||
# bbtn.add(image)
|
||||
|
||||
self.builder.get_object("menu1").detach()
|
||||
bbtn.set_popup(self.builder.get_object("menu1"))
|
||||
self.hb.pack_start(bbtn)
|
||||
self.hb.pack_end(btn_settings)
|
||||
|
@ -1093,10 +1105,17 @@ class UberwriterWindow(Window):
|
|||
self.vadjustment = self.ScrolledWindow.get_vadjustment()
|
||||
self.vadjustment.connect('value-changed', self.scrolled)
|
||||
|
||||
|
||||
self.spellcheck_button = builder.get_object("disable_spellcheck")
|
||||
# Setting up spellcheck
|
||||
self.auto_correct = None
|
||||
try:
|
||||
self.SpellChecker = SpellChecker(self.TextEditor,
|
||||
locale.getdefaultlocale()[0], collapse=False)
|
||||
if self.auto_correct:
|
||||
self.auto_correct.set_language(self.SpellChecker.language)
|
||||
self.SpellChecker.connect_language_change(self.auto_correct.set_language)
|
||||
|
||||
self.spellcheck = True
|
||||
except:
|
||||
self.SpellChecker = None
|
||||
|
@ -1122,6 +1141,7 @@ class UberwriterWindow(Window):
|
|||
###
|
||||
self.searchreplace = UberwriterSearchAndReplace(self)
|
||||
|
||||
|
||||
# Window resize
|
||||
self.window_resize(self)
|
||||
self.connect("configure-event", self.window_resize)
|
||||
|
|
|
@ -33,6 +33,10 @@ def parse_options():
|
|||
parser.add_option(
|
||||
"-v", "--verbose", action="count", dest="verbose",
|
||||
help=_("Show debug messages (-vv debugs uberwriter_lib also)"))
|
||||
parser.add_option(
|
||||
"-e", "--experimental-features", help="Use experimental features",
|
||||
action='store_true'
|
||||
)
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
set_up_logging(options)
|
||||
|
@ -45,12 +49,14 @@ def main():
|
|||
'constructor for your class instances'
|
||||
(options, args) = parse_options()
|
||||
|
||||
# Run the application.
|
||||
# Run the application.
|
||||
if args:
|
||||
for arg in args:
|
||||
window = UberwriterWindow.UberwriterWindow()
|
||||
window.load_file(arg)
|
||||
else:
|
||||
window = UberwriterWindow.UberwriterWindow()
|
||||
if options.experimental_features:
|
||||
window.use_experimental_features(True)
|
||||
window.show()
|
||||
Gtk.main()
|
||||
|
|
|
@ -45,7 +45,6 @@ class Window(Gtk.Window):
|
|||
"""
|
||||
builder = get_builder('UberwriterWindow')
|
||||
new_object = builder.get_object("uberwriter_window")
|
||||
print(new_object)
|
||||
new_object.finish_initializing(builder)
|
||||
return new_object
|
||||
|
||||
|
|
|
@ -28,7 +28,10 @@ import gettext
|
|||
import logging
|
||||
import re
|
||||
import sys
|
||||
import pickle
|
||||
import os
|
||||
|
||||
from ..helpers import get_media_path
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
from ..pylocales import code_to_name
|
||||
|
@ -216,6 +219,26 @@ class SpellChecker(object):
|
|||
self._enabled = True
|
||||
self.buffer_initialize()
|
||||
|
||||
self.notify_language_change_functions = []
|
||||
|
||||
self.frequency_dict = {}
|
||||
pp_pickled = 'pickled_dict'
|
||||
if pp_pickled and os.path.isfile(pp_pickled):
|
||||
f = open(pp_pickled, 'rb')
|
||||
self.frequency_dict = pickle.load(f)
|
||||
f.close()
|
||||
else:
|
||||
pp = get_media_path('wordlists/en_us_wordlist.xml')
|
||||
frequencies = ET.parse(pp)
|
||||
root = frequencies.getroot()
|
||||
for child in root:
|
||||
self.frequency_dict[child.text] = int(child.attrib['f'])
|
||||
f = open('pickled_dict', 'wb+')
|
||||
pickle.dump(self.frequency_dict, f)
|
||||
f.close()
|
||||
# print(self.frequency_dict)
|
||||
|
||||
|
||||
@property
|
||||
def language(self):
|
||||
"""
|
||||
|
@ -428,15 +451,24 @@ class SpellChecker(object):
|
|||
else:
|
||||
self._check_word(word_start, word_end)
|
||||
self._deferred_check = False
|
||||
|
||||
word_end.forward_word_end()
|
||||
word_end.backward_word_start()
|
||||
word_start = word_end.copy()
|
||||
|
||||
|
||||
if word_start.equal(word_end):
|
||||
break
|
||||
word_start = word_end.copy()
|
||||
|
||||
def connect_language_change(self, fn):
|
||||
self.notify_language_change_functions.append(fn)
|
||||
|
||||
def _languages_menu(self):
|
||||
def _set_language(item, code):
|
||||
self.language = code
|
||||
for fn in self.notify_language_change_functions:
|
||||
fn(code)
|
||||
|
||||
if _pygobject:
|
||||
menu = gtk.Menu.new()
|
||||
group = []
|
||||
|
@ -477,7 +509,20 @@ class SpellChecker(object):
|
|||
menu.append(item)
|
||||
else:
|
||||
# add sorting here
|
||||
# suggestions_map = []
|
||||
# print(suggestions)
|
||||
# for suggestion in suggestions:
|
||||
# if suggestion in self.frequency_dict:
|
||||
# suggestions_map.append({'suggestion': suggestion, 'freq': self.frequency_dict[suggestion]})
|
||||
# else:
|
||||
# suggestions_map.append({'suggestion': suggestion, 'freq': 0})
|
||||
|
||||
# suggestions_map.sort(key= lambda x: x['freq'])
|
||||
# suggestions_map.reverse()
|
||||
# print(suggestions_map)
|
||||
# suggestions = []
|
||||
# for suggestion in suggestions_map:
|
||||
# suggestions.append(suggestion["suggestion"])
|
||||
for suggestion in suggestions:
|
||||
if _pygobject:
|
||||
item = gtk.MenuItem.new()
|
||||
|
@ -639,5 +684,9 @@ class SpellChecker(object):
|
|||
end = self._buffer.get_iter_at_offset(match.end())
|
||||
self._buffer.remove_tag(self._misspelled, start, end)
|
||||
return
|
||||
# Somehow needed now, checking for zero length (happens on double space)
|
||||
if len(word) == 0:
|
||||
return
|
||||
if not self._dictionary.check(word):
|
||||
self._buffer.apply_tag(self._misspelled, start, end)
|
||||
self._buffer.apply_tag(self._misspelled, start, end)
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ def get_media_path(media_file_name):
|
|||
media_filename = get_data_file('media', '%s' % (media_file_name,))
|
||||
if not os.path.exists(media_filename):
|
||||
media_filename = None
|
||||
return "/"+media_filename
|
||||
return media_filename
|
||||
|
||||
class NullHandler(logging.Handler):
|
||||
def emit(self, record):
|
||||
|
|
Loading…
Reference in New Issue