plover 5.0.0.dev2__py3-none-any.whl → 5.0.0.dev3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- plover/__init__.py +8 -7
- plover/__main__.py +1 -1
- plover/command/set_config.py +7 -4
- plover/config.py +177 -74
- plover/dictionary/base.py +21 -9
- plover/dictionary/helpers.py +6 -4
- plover/dictionary/json_dict.py +10 -12
- plover/dictionary/loading_manager.py +8 -10
- plover/dictionary/rtfcre_dict.py +46 -43
- plover/dictionary/rtfcre_parse.py +116 -100
- plover/engine.py +112 -96
- plover/exception.py +4 -1
- plover/formatting.py +198 -140
- plover/gui_none/add_translation.py +17 -16
- plover/gui_none/engine.py +1 -3
- plover/gui_none/main.py +2 -2
- plover/gui_qt/about_dialog.py +17 -17
- plover/gui_qt/add_translation_dialog.py +8 -9
- plover/gui_qt/add_translation_widget.py +66 -63
- plover/gui_qt/config_window.py +274 -154
- plover/gui_qt/console_widget.py +9 -13
- plover/gui_qt/dictionaries_widget.py +140 -119
- plover/gui_qt/dictionary_editor.py +60 -61
- plover/gui_qt/engine.py +3 -3
- plover/gui_qt/info_browser.py +50 -4
- plover/gui_qt/log_qt.py +3 -2
- plover/gui_qt/lookup_dialog.py +9 -9
- plover/gui_qt/machine_options.py +38 -37
- plover/gui_qt/main.py +19 -19
- plover/gui_qt/main_window.py +88 -71
- plover/gui_qt/paper_tape.py +69 -52
- plover/gui_qt/paper_tape_ui.py +0 -3
- plover/gui_qt/plugins_manager.py +47 -43
- plover/gui_qt/resources_rc.py +28 -28
- plover/gui_qt/run_dialog.py +7 -6
- plover/gui_qt/steno_validator.py +2 -3
- plover/gui_qt/suggestions_dialog.py +34 -38
- plover/gui_qt/suggestions_widget.py +22 -16
- plover/gui_qt/tool.py +1 -3
- plover/gui_qt/trayicon.py +19 -19
- plover/gui_qt/utils.py +19 -9
- plover/i18n.py +9 -8
- plover/key_combo.py +130 -130
- plover/log.py +26 -26
- plover/machine/base.py +40 -35
- plover/machine/geminipr.py +7 -7
- plover/machine/keyboard.py +16 -14
- plover/machine/keyboard_capture/__init__.py +0 -1
- plover/machine/keymap.py +24 -20
- plover/machine/passport.py +6 -5
- plover/machine/procat.py +12 -16
- plover/machine/stentura.py +45 -29
- plover/machine/txbolt.py +5 -3
- plover/macro/repeat.py +0 -1
- plover/macro/retro.py +9 -9
- plover/macro/undo.py +4 -3
- plover/meta/attach.py +12 -10
- plover/meta/case.py +2 -1
- plover/meta/conditional.py +3 -3
- plover/meta/currency.py +4 -4
- plover/meta/mode.py +15 -15
- plover/meta/punctuation.py +1 -0
- plover/misc.py +21 -17
- plover/orthography.py +12 -10
- plover/oslayer/__init__.py +7 -5
- plover/oslayer/config.py +16 -15
- plover/oslayer/controller.py +13 -13
- plover/oslayer/linux/i18n.py +2 -1
- plover/oslayer/linux/keyboardcontrol.py +2 -2
- plover/oslayer/linux/keyboardcontrol_uinput.py +48 -3
- plover/oslayer/linux/keyboardcontrol_x11.py +860 -851
- plover/oslayer/linux/log.py +1 -1
- plover/oslayer/linux/log_dbus.py +97 -65
- plover/oslayer/linux/serial.py +2 -2
- plover/oslayer/linux/wmctrl_x11.py +11 -15
- plover/oslayer/osx/keyboardcontrol.py +194 -99
- plover/oslayer/osx/keyboardlayout.py +138 -119
- plover/oslayer/osx/log.py +14 -8
- plover/oslayer/osx/serial.py +1 -1
- plover/oslayer/osx/wmctrl.py +6 -1
- plover/oslayer/windows/keyboardcontrol.py +195 -89
- plover/oslayer/windows/keyboardlayout.py +367 -334
- plover/oslayer/windows/log.py +5 -3
- plover/oslayer/windows/serial.py +4 -5
- plover/oslayer/windows/wmctrl.py +1 -1
- plover/output/__init__.py +1 -2
- plover/output/keyboard.py +15 -15
- plover/plugins_manager/__main__.py +42 -39
- plover/plugins_manager/global_registry.py +2 -5
- plover/plugins_manager/local_registry.py +11 -13
- plover/plugins_manager/package_index.py +12 -18
- plover/plugins_manager/pip_wrapper.py +5 -5
- plover/plugins_manager/plugin_metadata.py +17 -9
- plover/plugins_manager/registry.py +39 -28
- plover/plugins_manager/requests.py +2 -4
- plover/plugins_manager/utils.py +9 -7
- plover/registry.py +28 -26
- plover/resource.py +13 -10
- plover/scripts/dist_main.py +7 -7
- plover/scripts/main.py +57 -34
- plover/scripts/send_command.py +13 -7
- plover/steno.py +16 -9
- plover/steno_dictionary.py +47 -21
- plover/suggestions.py +11 -11
- plover/system/__init__.py +39 -23
- plover/system/english_stenotype.py +231 -229
- plover/translation.py +67 -51
- {plover-5.0.0.dev2.dist-info → plover-5.0.0.dev3.dist-info}/METADATA +1 -1
- plover-5.0.0.dev3.dist-info/RECORD +216 -0
- plover_build_utils/check_requirements.py +5 -6
- plover_build_utils/download.py +10 -8
- plover_build_utils/get_pip.py +10 -5
- plover_build_utils/install_wheels.py +33 -31
- plover_build_utils/pyqt.py +24 -22
- plover_build_utils/setup.py +64 -54
- plover_build_utils/source_less.py +6 -6
- plover_build_utils/testing/blackbox.py +31 -31
- plover_build_utils/testing/dict.py +3 -3
- plover_build_utils/testing/output.py +5 -6
- plover_build_utils/testing/parametrize.py +5 -3
- plover_build_utils/testing/steno_dictionary.py +145 -124
- plover_build_utils/tree.py +21 -19
- plover_build_utils/trim.py +5 -5
- plover_build_utils/zipdir.py +3 -3
- plover-5.0.0.dev2.dist-info/RECORD +0 -216
- {plover-5.0.0.dev2.dist-info → plover-5.0.0.dev3.dist-info}/WHEEL +0 -0
- {plover-5.0.0.dev2.dist-info → plover-5.0.0.dev3.dist-info}/entry_points.txt +0 -0
- {plover-5.0.0.dev2.dist-info → plover-5.0.0.dev3.dist-info}/licenses/LICENSE.txt +0 -0
- {plover-5.0.0.dev2.dist-info → plover-5.0.0.dev3.dist-info}/top_level.txt +0 -0
- {plover-5.0.0.dev2.dist-info → plover-5.0.0.dev3.dist-info}/zip-safe +0 -0
plover/translation.py
CHANGED
|
@@ -25,55 +25,59 @@ from plover.registry import registry
|
|
|
25
25
|
from plover import system
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
_ESCAPE_RX = re.compile(
|
|
28
|
+
_ESCAPE_RX = re.compile("(\\\\[nrt]|[\n\r\t])")
|
|
29
29
|
_ESCAPE_REPLACEMENTS = {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
r
|
|
34
|
-
r
|
|
35
|
-
r
|
|
30
|
+
"\n": r"\n",
|
|
31
|
+
"\r": r"\r",
|
|
32
|
+
"\t": r"\t",
|
|
33
|
+
r"\n": r"\\n",
|
|
34
|
+
r"\r": r"\\r",
|
|
35
|
+
r"\t": r"\\t",
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
|
|
38
39
|
def escape_translation(translation):
|
|
39
40
|
return _ESCAPE_RX.sub(lambda m: _ESCAPE_REPLACEMENTS[m.group(0)], translation)
|
|
40
41
|
|
|
41
|
-
|
|
42
|
+
|
|
43
|
+
_UNESCAPE_RX = re.compile(r"((?<!\\)|\\)\\([nrt])")
|
|
42
44
|
_UNESCAPE_REPLACEMENTS = {
|
|
43
|
-
r
|
|
44
|
-
r
|
|
45
|
-
r
|
|
46
|
-
r
|
|
47
|
-
r
|
|
48
|
-
r
|
|
45
|
+
r"\\n": r"\n",
|
|
46
|
+
r"\\r": r"\r",
|
|
47
|
+
r"\\t": r"\t",
|
|
48
|
+
r"\n": "\n",
|
|
49
|
+
r"\r": "\r",
|
|
50
|
+
r"\t": "\t",
|
|
49
51
|
}
|
|
50
52
|
|
|
53
|
+
|
|
51
54
|
def unescape_translation(translation):
|
|
52
55
|
return _UNESCAPE_RX.sub(lambda m: _UNESCAPE_REPLACEMENTS[m.group(0)], translation)
|
|
53
56
|
|
|
54
57
|
|
|
55
58
|
_LEGACY_MACROS_ALIASES = {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
"{*}": "retro_toggle_asterisk",
|
|
60
|
+
"{*!}": "retro_delete_space",
|
|
61
|
+
"{*?}": "retro_insert_space",
|
|
62
|
+
"{*+}": "repeat_last_stroke",
|
|
60
63
|
}
|
|
61
64
|
|
|
62
|
-
_MACRO_RX = re.compile(r
|
|
65
|
+
_MACRO_RX = re.compile(r"=\w+(:|$)")
|
|
66
|
+
|
|
67
|
+
Macro = namedtuple("Macro", "name stroke cmdline")
|
|
63
68
|
|
|
64
|
-
Macro = namedtuple('Macro', 'name stroke cmdline')
|
|
65
69
|
|
|
66
70
|
def _mapping_to_macro(mapping, stroke):
|
|
67
|
-
|
|
68
|
-
macro, cmdline = None,
|
|
71
|
+
"""Return a macro/stroke if mapping is one, or None otherwise."""
|
|
72
|
+
macro, cmdline = None, ""
|
|
69
73
|
if mapping is None:
|
|
70
74
|
if stroke.is_correction:
|
|
71
|
-
macro =
|
|
75
|
+
macro = "undo"
|
|
72
76
|
else:
|
|
73
77
|
if mapping in _LEGACY_MACROS_ALIASES:
|
|
74
78
|
macro = _LEGACY_MACROS_ALIASES[mapping]
|
|
75
79
|
elif _MACRO_RX.match(mapping):
|
|
76
|
-
args = mapping[1:].split(
|
|
80
|
+
args = mapping[1:].split(":", 1)
|
|
77
81
|
macro = args[0]
|
|
78
82
|
if len(args) == 2:
|
|
79
83
|
cmdline = args[1]
|
|
@@ -85,7 +89,7 @@ class Translation:
|
|
|
85
89
|
|
|
86
90
|
This class represents the mapping between a sequence of Stroke objects and
|
|
87
91
|
a text string, typically a word or phrase. This class is used as the output
|
|
88
|
-
from translation and the input to formatting. The class contains the
|
|
92
|
+
from translation and the input to formatting. The class contains the
|
|
89
93
|
following attributes:
|
|
90
94
|
|
|
91
95
|
strokes -- A sequence of Stroke objects from which the translation is
|
|
@@ -130,11 +134,11 @@ class Translation:
|
|
|
130
134
|
|
|
131
135
|
def __str__(self):
|
|
132
136
|
if self.english is None:
|
|
133
|
-
translation =
|
|
137
|
+
translation = "None"
|
|
134
138
|
else:
|
|
135
139
|
translation = escape_translation(self.english)
|
|
136
|
-
translation = '"%s"' % translation.replace('"', r
|
|
137
|
-
return
|
|
140
|
+
translation = '"%s"' % translation.replace('"', r"\"")
|
|
141
|
+
return "Translation(%s : %s)" % (self.rtfcre, translation)
|
|
138
142
|
|
|
139
143
|
def __repr__(self):
|
|
140
144
|
return str(self)
|
|
@@ -190,6 +194,7 @@ class Translator:
|
|
|
190
194
|
output to every function that has registered via the add_callback method.
|
|
191
195
|
|
|
192
196
|
"""
|
|
197
|
+
|
|
193
198
|
def __init__(self):
|
|
194
199
|
self._undo_length = 0
|
|
195
200
|
self._dictionary = None
|
|
@@ -238,17 +243,17 @@ class Translator:
|
|
|
238
243
|
self._resize_translations()
|
|
239
244
|
|
|
240
245
|
def flush(self, extra_translations=None):
|
|
241
|
-
|
|
246
|
+
"""Process translations scheduled for undoing/doing.
|
|
242
247
|
|
|
243
248
|
Arguments:
|
|
244
249
|
|
|
245
250
|
extra_translations -- Extra translations to add to the list
|
|
246
251
|
of translation to do. Note: those will
|
|
247
252
|
not be saved to the state history.
|
|
248
|
-
|
|
253
|
+
"""
|
|
249
254
|
if self._to_do:
|
|
250
255
|
prev = self._state.prev(self._to_do)
|
|
251
|
-
do = self._state.translations[-self._to_do:]
|
|
256
|
+
do = self._state.translations[-self._to_do :]
|
|
252
257
|
else:
|
|
253
258
|
prev = self._state.prev()
|
|
254
259
|
do = []
|
|
@@ -266,8 +271,7 @@ class Translator:
|
|
|
266
271
|
callback(undo, do, prev)
|
|
267
272
|
|
|
268
273
|
def _resize_translations(self):
|
|
269
|
-
self._state.restrict_size(max(self._dictionary.longest_key,
|
|
270
|
-
self._undo_length))
|
|
274
|
+
self._state.restrict_size(max(self._dictionary.longest_key, self._undo_length))
|
|
271
275
|
|
|
272
276
|
def get_state(self):
|
|
273
277
|
"""Get the state of the translator."""
|
|
@@ -300,18 +304,21 @@ class Translator:
|
|
|
300
304
|
return
|
|
301
305
|
t = (
|
|
302
306
|
# No prefix lookups (note we avoid looking up [stroke] again).
|
|
303
|
-
self._find_longest_match(2, max_len, stroke)
|
|
307
|
+
self._find_longest_match(2, max_len, stroke)
|
|
308
|
+
or
|
|
304
309
|
# Return [stroke] result if mapped.
|
|
305
|
-
(mapping is not None and Translation([stroke], mapping))
|
|
310
|
+
(mapping is not None and Translation([stroke], mapping))
|
|
311
|
+
or
|
|
306
312
|
# No direct match, try with suffixes.
|
|
307
|
-
self._find_longest_match(1, max_len, stroke, system.SUFFIX_KEYS)
|
|
313
|
+
self._find_longest_match(1, max_len, stroke, system.SUFFIX_KEYS)
|
|
314
|
+
or
|
|
308
315
|
# Fallback to untranslate.
|
|
309
316
|
Translation([stroke], None)
|
|
310
317
|
)
|
|
311
318
|
self.translate_translation(t)
|
|
312
319
|
|
|
313
320
|
def translate_macro(self, macro):
|
|
314
|
-
macro_fn = registry.get_plugin(
|
|
321
|
+
macro_fn = registry.get_plugin("macro", macro.name).obj
|
|
315
322
|
macro_fn(self, macro.stroke, macro.cmdline)
|
|
316
323
|
|
|
317
324
|
def translate_translation(self, t):
|
|
@@ -335,7 +342,7 @@ class Translator:
|
|
|
335
342
|
self._to_do += len(translations)
|
|
336
343
|
|
|
337
344
|
def _find_longest_match(self, min_len, max_len, stroke, suffixes=()):
|
|
338
|
-
|
|
345
|
+
"""Find mapping with the longest series of strokes.
|
|
339
346
|
|
|
340
347
|
min_len -- Minimum number of strokes involved.
|
|
341
348
|
max_len -- Maximum number of strokes involved.
|
|
@@ -347,7 +354,7 @@ class Translator:
|
|
|
347
354
|
Note: the code either look for a direct match (empty suffix
|
|
348
355
|
list), or assume the last stroke contains an implicit suffix
|
|
349
356
|
and look for a corresponding match, but not both.
|
|
350
|
-
|
|
357
|
+
"""
|
|
351
358
|
if suffixes:
|
|
352
359
|
# Implicit suffix lookup, determine possible suffixes.
|
|
353
360
|
suffixes = self._lookup_involved_suffixes(stroke, suffixes)
|
|
@@ -368,13 +375,15 @@ class Translator:
|
|
|
368
375
|
# The new stroke can either create a new translation or replace
|
|
369
376
|
# existing translations by matching a longer entry in the
|
|
370
377
|
# dictionary.
|
|
371
|
-
for i in range(len(translations)+1):
|
|
378
|
+
for i in range(len(translations) + 1):
|
|
372
379
|
replaced = translations[i:]
|
|
373
380
|
strokes = [s for t in replaced for s in t.strokes]
|
|
374
381
|
strokes.append(stroke)
|
|
375
382
|
if len(strokes) < min_len:
|
|
376
383
|
continue
|
|
377
|
-
mapping = self._lookup_with_prefix(
|
|
384
|
+
mapping = self._lookup_with_prefix(
|
|
385
|
+
max_len, translations[:i], strokes, suffixes
|
|
386
|
+
)
|
|
378
387
|
if mapping is not None:
|
|
379
388
|
t = Translation(strokes, mapping)
|
|
380
389
|
t.replaced = replaced
|
|
@@ -382,16 +391,16 @@ class Translator:
|
|
|
382
391
|
return None
|
|
383
392
|
|
|
384
393
|
def _lookup_strokes(self, strokes):
|
|
385
|
-
|
|
394
|
+
"""Look for a matching translation.
|
|
386
395
|
|
|
387
396
|
strokes -- a list of Stroke instances.
|
|
388
397
|
|
|
389
398
|
Return the resulting mapping.
|
|
390
|
-
|
|
399
|
+
"""
|
|
391
400
|
return self._dictionary.lookup(tuple(s.rtfcre for s in strokes))
|
|
392
401
|
|
|
393
402
|
def _lookup_with_suffix(self, strokes, suffixes=()):
|
|
394
|
-
|
|
403
|
+
"""Look for a matching translation.
|
|
395
404
|
|
|
396
405
|
suffixes -- A list of (suffix stroke, suffix mapping) pairs to try.
|
|
397
406
|
|
|
@@ -399,25 +408,27 @@ class Translator:
|
|
|
399
408
|
|
|
400
409
|
Otherwise, assume the last stroke contains an implicit suffix,
|
|
401
410
|
and look for a corresponding match.
|
|
402
|
-
|
|
411
|
+
"""
|
|
403
412
|
if not suffixes:
|
|
404
413
|
# No suffix, do a regular lookup.
|
|
405
414
|
return self._lookup_strokes(strokes)
|
|
406
415
|
for suffix_stroke, suffix_mapping in suffixes:
|
|
407
416
|
assert suffix_stroke in strokes[-1]
|
|
408
|
-
main_mapping = self._lookup_strokes(
|
|
417
|
+
main_mapping = self._lookup_strokes(
|
|
418
|
+
strokes[:-1] + [strokes[-1] - suffix_stroke]
|
|
419
|
+
)
|
|
409
420
|
if main_mapping is not None:
|
|
410
|
-
return main_mapping +
|
|
421
|
+
return main_mapping + " " + suffix_mapping
|
|
411
422
|
return None
|
|
412
423
|
|
|
413
424
|
def _lookup_involved_suffixes(self, stroke, suffixes):
|
|
414
|
-
|
|
425
|
+
"""Find possible implicit suffixes for a stroke.
|
|
415
426
|
|
|
416
427
|
stroke -- The stroke to check for implicit suffixes.
|
|
417
428
|
suffixes -- List of supported suffix keys.
|
|
418
429
|
|
|
419
430
|
Return a list of (suffix_stroke, suffix_mapping) pairs.
|
|
420
|
-
|
|
431
|
+
"""
|
|
421
432
|
possible_suffixes = []
|
|
422
433
|
for suffix_stroke in map(Stroke, suffixes):
|
|
423
434
|
if suffix_stroke not in stroke:
|
|
@@ -447,8 +458,12 @@ class Translator:
|
|
|
447
458
|
return formatting[-1].word_is_finished
|
|
448
459
|
|
|
449
460
|
def _lookup_with_prefix(self, max_len, last_translations, strokes, suffixes=()):
|
|
450
|
-
if len(strokes) < max_len and self._previous_word_is_finished(
|
|
451
|
-
|
|
461
|
+
if len(strokes) < max_len and self._previous_word_is_finished(
|
|
462
|
+
last_translations
|
|
463
|
+
):
|
|
464
|
+
mapping = self._lookup_with_suffix(
|
|
465
|
+
[Stroke.PREFIX_STROKE] + strokes, suffixes
|
|
466
|
+
)
|
|
452
467
|
if mapping is not None:
|
|
453
468
|
return mapping
|
|
454
469
|
if len(strokes) <= max_len:
|
|
@@ -466,6 +481,7 @@ class _State:
|
|
|
466
481
|
tail -- The oldest translation still saved but is no longer undoable.
|
|
467
482
|
|
|
468
483
|
"""
|
|
484
|
+
|
|
469
485
|
def __init__(self):
|
|
470
486
|
self.translations = []
|
|
471
487
|
self.tail = None
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
plover/__init__.py,sha256=fMawYVgEcbk1gkem_pU9QvZQrfB0trq7aEN8T50p56U,1191
|
|
2
|
+
plover/__main__.py,sha256=SLH-y7QnPrsefV7Fo2af3BX0edPBbhac5f1oiiQU-tM,77
|
|
3
|
+
plover/config.py,sha256=IgC4vn545-KkUpXDM-iRdFpD8rnYfyI6zHnydAv-mNA,16541
|
|
4
|
+
plover/engine.py,sha256=di2rfHdiSe_GRv9k691lZnZ-G4Hw3wEMu1Btc0HCGBU,20789
|
|
5
|
+
plover/exception.py,sha256=-bi53B1ouQZEozaSRGzU7eaJQewhNKqhHeG9YVb1XqY,700
|
|
6
|
+
plover/formatting.py,sha256=KTS3TowD71o_dFbcRD931YtaLfsooSRB8Il9WTWGMhs,32921
|
|
7
|
+
plover/i18n.py,sha256=0RAoY7k1WxRwvPSWkeD0qeuc4WU12sHbUWah03TN9h4,1549
|
|
8
|
+
plover/key_combo.py,sha256=Hmhs5QddJOqKxySlAvHrAz0GNtCyBs8X1x9WYf5H4iU,7368
|
|
9
|
+
plover/log.py,sha256=T-LBALHpWbQrtVa-R1EvgVzUHpeCTfUKRrVyOMznWz8,6539
|
|
10
|
+
plover/misc.py,sha256=A6opAGkJkUNdudyr5HvKJcQKsMuH1Gr0UeDrNqjOSDA,2432
|
|
11
|
+
plover/orthography.py,sha256=F-0r24sn_w0AEPuXVr4k3JzU8qmZ3DPo7VWD5bof_SU,1777
|
|
12
|
+
plover/registry.py,sha256=ip18fWm-eazp53FHme0KvvY_aq7CxLvlLHiioFtPeOw,3543
|
|
13
|
+
plover/resource.py,sha256=URRnshUPnuU16Csv8I9T06WlxnsC0hUF35VUKD2Phug,1909
|
|
14
|
+
plover/steno.py,sha256=ES5sGAJZJAEBlTW2N8-40uMDckog2IPT-xfXD8VA0Co,3540
|
|
15
|
+
plover/steno_dictionary.py,sha256=0EyaUJN8T6wr3AYTzI6ZUuIH4D7ZjFFXB0I43OFii2s,9448
|
|
16
|
+
plover/suggestions.py,sha256=TYumcY8HhQ8WmpqlWcMDVAzwud4KberaK38krQMx8dg,1675
|
|
17
|
+
plover/translation.py,sha256=F-IZLFc5jTTwNhVuT2XW1tztzLzPc8DExHj2Hf0VLjI,17432
|
|
18
|
+
plover/assets/american_english_words.txt,sha256=OPxJZABaHPNivKvP92RL2oVsZzV181-xF_8bNYcftPQ,4475702
|
|
19
|
+
plover/assets/commands.json,sha256=cfixqWBC9xaSczGCVvevrpe2kTE8KmVXNmvAQJnOjag,982
|
|
20
|
+
plover/assets/main.json,sha256=qZECBvv34d3_geZ19Pt7YdnGjhtd-UVhHdZjE9DVvXk,4215129
|
|
21
|
+
plover/assets/plover-icon.svg,sha256=wNW5MgMh_b8gUJGFhMfZ5Z2iUBTfRdAhRtNSRamZQbw,1474
|
|
22
|
+
plover/assets/plover.ico,sha256=uUaAtAaALzOMIb2AhwSyeRKgprZDk42EX2Lu_Qs_N0w,104076
|
|
23
|
+
plover/assets/plover.png,sha256=OMqLs8knuOdJpmVx4E-DK2ygeFH2HQrhOBBzJud8zsg,10767
|
|
24
|
+
plover/assets/user.json,sha256=jrlby8FUUwkx4V_EGMix_pkQlWcUCVUgmeoapZaZnt4,3
|
|
25
|
+
plover/command/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
|
+
plover/command/set_config.py,sha256=IreagHXEshgXQKxO3lFbc_z1H9RLmT1-fVH2Wmm4Ymg,1266
|
|
27
|
+
plover/dictionary/__init__.py,sha256=iub9rcPeW-MiGMTCt6zK_dZcDyd8Stpe3bXptuCu52I,100
|
|
28
|
+
plover/dictionary/base.py,sha256=TPCau8E3xmmndvxI8dnm1NekNlzCQpc2cXxMM_muYm4,1931
|
|
29
|
+
plover/dictionary/helpers.py,sha256=KV0vmeMleu-cq9CxvVRMnKkD5XFNDDSsjAjwEHky1ZI,810
|
|
30
|
+
plover/dictionary/json_dict.py,sha256=adKX6KK5HnMLplfGrqvdB_XBCTE5wdL1M8PHUY0fAHo,1362
|
|
31
|
+
plover/dictionary/loading_manager.py,sha256=eROsAVO_6Vm13rQy0F5VlyFw_PzcFQ6ytkgQpiKNxZQ,3140
|
|
32
|
+
plover/dictionary/rtfcre_dict.py,sha256=6rwQjL56q0KeBJu1zS_9J-w21iYq2RWlErL3ChKvRGs,5941
|
|
33
|
+
plover/dictionary/rtfcre_parse.py,sha256=_SuCk6xJCsI-B-ulAIJEBjeIFubXAmHqQB3MqWrCejA,11139
|
|
34
|
+
plover/gui_none/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
|
+
plover/gui_none/add_translation.py,sha256=RwHa1oDtI9u7hbTYthM3g3ZhowY_Nmw_RFg3RIYVZhw,2743
|
|
36
|
+
plover/gui_none/engine.py,sha256=Yt5nacqM_70ELnLltwR7wYSQOTlbBHd7RKcXdgFXTGA,708
|
|
37
|
+
plover/gui_none/main.py,sha256=IdyYr2CPLZQhOwVWgyETvNPz0msmlm1bb4sGZGq3TrM,547
|
|
38
|
+
plover/gui_qt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
|
+
plover/gui_qt/about_dialog.py,sha256=q186lyG9bsaCpT_3XEwU5WYkcAhEVCU9hYBrZRyk6xo,1550
|
|
40
|
+
plover/gui_qt/about_dialog_ui.py,sha256=AI4XADlcdVg3oePhgW95zPsOIy1-1JQcUk7VptiNrdE,2151
|
|
41
|
+
plover/gui_qt/add_translation_dialog.py,sha256=Q0fsVKDj-lOHhUnZ6MF_gJiLut1lpO-MzWWiVvkkly4,1665
|
|
42
|
+
plover/gui_qt/add_translation_dialog_ui.py,sha256=9llkhgPMVAbgR5yCCYurRjh3cTFIa1gqPOz5D-GW7pA,2684
|
|
43
|
+
plover/gui_qt/add_translation_widget.py,sha256=uD97LRD2Yq2us1pF8F_SJXGX1OJGHEgsJLK8xqcMKNY,12334
|
|
44
|
+
plover/gui_qt/add_translation_widget_ui.py,sha256=EUKct1yEsZ8xtdbX7n1EhIb7OHi6MRyVIkL_Eynvr4g,7450
|
|
45
|
+
plover/gui_qt/config_file_widget_ui.py,sha256=QMgushDMyjMdGD0FwgNJAdugKZ7QXBWeoVxheoYYCDY,3298
|
|
46
|
+
plover/gui_qt/config_keyboard_widget_ui.py,sha256=od5oHdow7o19DkrwqkIJUGMinfCVAxOMJsf02EEWISk,2828
|
|
47
|
+
plover/gui_qt/config_serial_widget_ui.py,sha256=mPPrLpqw4CGsfoYNPxm06hG2LRWf8D0rmg0oZFqXIQ8,13052
|
|
48
|
+
plover/gui_qt/config_window.py,sha256=bw23ACh5F5ML9glUU4_eARf2DS73tE_tERoPf3iEz2c,23902
|
|
49
|
+
plover/gui_qt/config_window_ui.py,sha256=PJDpJshJDqd2YmHYjPnE2TxNLzHZPnLzKSMMSUdjSvU,2482
|
|
50
|
+
plover/gui_qt/console_widget.py,sha256=YsQ0ruJ6JzzdZlCGXRPnjYJYy2YJArWkbt8EMb74hRw,2261
|
|
51
|
+
plover/gui_qt/console_widget_ui.py,sha256=CiYPCO-xxDnVFrhjdtDIPaMzdROrtLbutJZXXmmJCfQ,2054
|
|
52
|
+
plover/gui_qt/dictionaries_widget.py,sha256=KWWZuV2KL7n5o32ROLmU8GErnbG7A3b-akVuYa6hgQo,27033
|
|
53
|
+
plover/gui_qt/dictionaries_widget_ui.py,sha256=HbF_ZSP-EC1sweorHCQr5LxpKiRqEBaikhfVxN7wpDs,11474
|
|
54
|
+
plover/gui_qt/dictionary_editor.py,sha256=c-iQEk16frT0Ct0sEGajAbteHnHgPGyHap8GsDvTs2g,15001
|
|
55
|
+
plover/gui_qt/dictionary_editor_ui.py,sha256=oyMyXYDeC6Xmb7S-8iUPBfNLK-TW-Vul9CQfFm6iOy8,9365
|
|
56
|
+
plover/gui_qt/engine.py,sha256=Cr1I8BD_vmuNCTZMmXcOTCuLft_SrlUEwDN5HUaBqiE,1596
|
|
57
|
+
plover/gui_qt/info_browser.py,sha256=NVaUGRC_ltVztDvOxEBFFQglkb6ub4y5m6cfkilvoYY,4638
|
|
58
|
+
plover/gui_qt/log_qt.py,sha256=SsXgXuV7wAKg-oPEURtXI5mAzktUK2cws3yQ13qT8ts,517
|
|
59
|
+
plover/gui_qt/lookup_dialog.py,sha256=lgPnr5MJk-F6qXoR33DsEkPVBct8UQhIw-vtJL1_Qks,1585
|
|
60
|
+
plover/gui_qt/lookup_dialog_ui.py,sha256=cWKuuOfD_fXLV4FC9fyic8qygAwCkpI8976VTCPpfhM,3767
|
|
61
|
+
plover/gui_qt/machine_options.py,sha256=0Hyxqf4DGqXDKd-TQ528xZgKg6NwJkQ6OAl5zuzhUB4,8247
|
|
62
|
+
plover/gui_qt/main.py,sha256=Q3LfIp-19WbwBZJ2j8bJqM81ujCLj2U8pa5cVvCn8O0,4167
|
|
63
|
+
plover/gui_qt/main_window.py,sha256=jdNKLs_xov1SMJGqhQtUxD-jJF6ywttSBh50efIli4w,10911
|
|
64
|
+
plover/gui_qt/main_window_ui.py,sha256=w-MwwuSDdQz3shYcTuO8Obx_Stf2zXLQ3ygtZ6J4xyo,14215
|
|
65
|
+
plover/gui_qt/paper_tape.py,sha256=jX2z1EO3FyQDzzODzsYTzuJ2iNOlEhya0RZRaPdxTBE,8413
|
|
66
|
+
plover/gui_qt/paper_tape_ui.py,sha256=SrE3BrcWlw7Pod-2nYOVre4RZyqh06mR5zHHm910_a0,6953
|
|
67
|
+
plover/gui_qt/plugins_manager.py,sha256=XRNORZNcy81na0HExEB2W6zG_2tLQZHlizUwi7Kq8Gc,7949
|
|
68
|
+
plover/gui_qt/plugins_manager_ui.py,sha256=yS4KUGi3-ff1wzAqcl4s79E7_6gY9A36tDYZZevueho,7027
|
|
69
|
+
plover/gui_qt/resources.qrc,sha256=0D3li6rcGCeqEz18UJi358W_cJslPjMKk3mzMSf7Ejk,1203
|
|
70
|
+
plover/gui_qt/resources_rc.py,sha256=9shRf2zssegRncFppROijtaGdy1lWj7JyYLsjN1MoEo,79495
|
|
71
|
+
plover/gui_qt/run_dialog.py,sha256=d9JMFi2Q5yM8e9X3L_VhD8gAumJu5BUhnYpd63Z02kE,1375
|
|
72
|
+
plover/gui_qt/run_dialog_ui.py,sha256=d05vPVIz1UvJ_HSyomUfOSH8BILlwSccT0g3WpxQqNg,2046
|
|
73
|
+
plover/gui_qt/steno_validator.py,sha256=lK1DEul1JYUvk4isZ_ShoXknIXWWyWpo_cpn4mmcvWg,669
|
|
74
|
+
plover/gui_qt/suggestions_dialog.py,sha256=mPv2q6lu3FssCCKQoMYw4goYXo7m6PT9Z5Gu8yWOEtA,5271
|
|
75
|
+
plover/gui_qt/suggestions_dialog_ui.py,sha256=xqC-_6_5xdjQ8LpPi8rfWcfAaa6RbSaOwrf2PPCzttU,4448
|
|
76
|
+
plover/gui_qt/suggestions_widget.py,sha256=ZhtStjAaExvtEarS7G2l3I47cBLCCMLKD_0JcZh-cHw,6509
|
|
77
|
+
plover/gui_qt/tool.py,sha256=sAxhiSlpE3wf8HDtHPCPZXv1i67z7Cdd5DCJB93qMY0,674
|
|
78
|
+
plover/gui_qt/trayicon.py,sha256=3BXbpBbd8qFxxAAckLtPyDIc1y09rz6_YWYuJWdqdg8,4388
|
|
79
|
+
plover/gui_qt/utils.py,sha256=8NjKrU8V2xmoKgRE-tZzQRankhe8bG_GS6BfAMdTJA4,3356
|
|
80
|
+
plover/gui_qt/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
81
|
+
plover/gui_qt/resources/add.svg,sha256=0zJflroN3MxwDRk5435gOC5WHZjJ2kJ7zBwxpMg92_U,314
|
|
82
|
+
plover/gui_qt/resources/dictionary_error.svg,sha256=9NHevhwDR_TWQ0Ad1Wy0XMVfMay4dYiI8yaATz7w7JU,1422
|
|
83
|
+
plover/gui_qt/resources/dictionary_favorite.svg,sha256=Se_LdEXg6SbTzeX2Mkl2hJ7iMDfyaUfmEtbvgyFNNI8,1951
|
|
84
|
+
plover/gui_qt/resources/dictionary_loading.svg,sha256=nDzocA4cathvt5l4EH2-HAP-exdJbDfYh4DVs02bRgA,3383
|
|
85
|
+
plover/gui_qt/resources/dictionary_normal.svg,sha256=oCNrwVd4UjY4V_CSjw96oIaj57zTmw1j2bI4XtLqdLE,516
|
|
86
|
+
plover/gui_qt/resources/dictionary_readonly.svg,sha256=QRy4hqheWtmbtbLpjXy3kyVXOnVlPlDYm07ZseMAwH8,1752
|
|
87
|
+
plover/gui_qt/resources/down.svg,sha256=vgiuH5EioFb-tBhZGxYp38-93072dmbAedOtJIEFkh0,258
|
|
88
|
+
plover/gui_qt/resources/folder.svg,sha256=PWi4j9KTH95zQE5YACt8HAuZ2o9bLSqH6F7_q0392WY,331
|
|
89
|
+
plover/gui_qt/resources/font_selector.svg,sha256=bgsDnB5v3K96iInsI8o8yiJnMDNnQyA5b6Z5tZrf0Lg,4549
|
|
90
|
+
plover/gui_qt/resources/git.png,sha256=_etigUmKGsud-oO0iztLlxXCelX_U8uFnCNdkxZu_lg,461
|
|
91
|
+
plover/gui_qt/resources/lightbulb.svg,sha256=bGiSY4wsc2mjrlVvJL9QfFxmLyz109_5cbylK9JvX1w,1480
|
|
92
|
+
plover/gui_qt/resources/lookup.svg,sha256=CrLBjXsyNmr7c38bUFOLaXfUq9_ECg-fzbxkGHVRAbE,764
|
|
93
|
+
plover/gui_qt/resources/pencil.svg,sha256=kjoDAMGquF9qXWmLhtbRDPDMP_mJkrf63UC64_SfN4Y,952
|
|
94
|
+
plover/gui_qt/resources/pin.svg,sha256=9XW6S7xKIpJ2WbguRrVYEt4AroX23cZ-aX5DNTlloyU,725
|
|
95
|
+
plover/gui_qt/resources/plover.png,sha256=OMqLs8knuOdJpmVx4E-DK2ygeFH2HQrhOBBzJud8zsg,10767
|
|
96
|
+
plover/gui_qt/resources/plugins_manager.svg,sha256=8Lp4_ZEt9yMcNRJxik1-KG47IZ3C0bokerK0y9k4SKA,2671
|
|
97
|
+
plover/gui_qt/resources/reconnect.svg,sha256=Pa1jNRgLWPOOHA2-be9snJYznXFWzEj_tHDZyQC0nac,1043
|
|
98
|
+
plover/gui_qt/resources/remove.svg,sha256=PbQSU_-X54-eSuKaMtVvNDZx-LL8gyLBmcJDqAG3Qtk,423
|
|
99
|
+
plover/gui_qt/resources/save.svg,sha256=W1HZOcULKIiTMTza8w0qLO8PHKkRZ_Vhv82dtn09YB0,1465
|
|
100
|
+
plover/gui_qt/resources/settings.svg,sha256=p8dFonQn4qppMQZy0uqUevDCFo2IATQC0xuP0hel90s,1418
|
|
101
|
+
plover/gui_qt/resources/state-disabled.svg,sha256=UaTvrdHToplgpkkCzWM3LNsBQlI8BxT14KDHrPEVWRw,633
|
|
102
|
+
plover/gui_qt/resources/state-disconnected.svg,sha256=OrPdBHWMdOOy4QEF1wniICF6m3HMr9NZ-xoZMw5fnUo,660
|
|
103
|
+
plover/gui_qt/resources/state-enabled.svg,sha256=BnxmpqKngJHoueG08hyfMGq9NOt7US6o66YOuzdFshs,347
|
|
104
|
+
plover/gui_qt/resources/tape.svg,sha256=Ql4daSwmLCximhewe9q_hFyyqNGgTHAjYwGuINQ5ACo,1169
|
|
105
|
+
plover/gui_qt/resources/translation_add.svg,sha256=nfImE4yVn3EqGAf82Rqtt7sjm6YjbfHoYWUpw0YWvDM,980
|
|
106
|
+
plover/gui_qt/resources/trash.svg,sha256=Pm3F9UQYPE3FJpoFjS7qHPVlfltpoXt8U_w1_toARKU,1208
|
|
107
|
+
plover/gui_qt/resources/undo.svg,sha256=vUNKdmvlngnw5Jx6bwCqj4my-i2J5Jvr1utUbSdP61A,335
|
|
108
|
+
plover/gui_qt/resources/up.svg,sha256=7jcz8CvW0mXYHr5UNhT4uWHSQpzUYHmWK4w2B84fdjc,258
|
|
109
|
+
plover/machine/__init__.py,sha256=b2zhzj82TBkjYY1QMG5jsxH_VIvtcLeqe0v0LVu4rV4,101
|
|
110
|
+
plover/machine/base.py,sha256=AwYGYE1DjwBg5pQEhEJQOzOFfk00KJlBZMZZtVgvkyg,8809
|
|
111
|
+
plover/machine/geminipr.py,sha256=RQMrK2Hg5c6q_6ssubZA4ExrKW4B_q-JhZNhcVIyXK8,2106
|
|
112
|
+
plover/machine/keyboard.py,sha256=euyoNFq0ad3Ch0ow8wr2_6nheLrmuPA-tLRTILb2DjA,5813
|
|
113
|
+
plover/machine/keymap.py,sha256=fpFoZWxmshMS6zLltQE6egHvlBwHeXkPkTSPgCseNLg,5314
|
|
114
|
+
plover/machine/passport.py,sha256=FundT2hOaM9aUDgMJrDIG8yGBOkfW1Clw7oz2n5Uto8,1801
|
|
115
|
+
plover/machine/procat.py,sha256=O38mFgbpL2dpp0fpqAfgj617uZebiw1hEQUQn8P3AN8,1711
|
|
116
|
+
plover/machine/stentura.py,sha256=Vc7nkFKjCH0-N40hbqJkX9cJQOlv0qko2yts1Gnj-ng,23136
|
|
117
|
+
plover/machine/txbolt.py,sha256=SBKdTJNIUFth_kXrEhy_YiU5uF8kXzuKj3Rg1Dku5VM,3440
|
|
118
|
+
plover/machine/keyboard_capture/__init__.py,sha256=qLzT-5-llu4G0itxMhqiLjc0U8Koytejc9yhY7iHyqM,481
|
|
119
|
+
plover/macro/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
120
|
+
plover/macro/repeat.py,sha256=Gmy8OxqdT49y_CJnua_4eFEy84kXvNsngG2626w5zlM,324
|
|
121
|
+
plover/macro/retro.py,sha256=VmBzgBX_2UcU2-zKQDj0lY3mxXN6YJbnsChz2WSyu-E,1990
|
|
122
|
+
plover/macro/undo.py,sha256=lci41TsUg0CPYb52oXHxcoAnm5wNdPDCfHSuXNSFpD0,648
|
|
123
|
+
plover/messages/plover.pot,sha256=RxFKa9EWSExPqNvyAWPJSJKyPadq9Ij_kec1ZySrb9s,29813
|
|
124
|
+
plover/messages/es/LC_MESSAGES/plover.mo,sha256=NjqAQBN7eFrN-hke4BdpohbKyxEi7W4O_IKCMCNih7s,15414
|
|
125
|
+
plover/messages/es/LC_MESSAGES/plover.po,sha256=OP6USReOVfnwlzTM7q5F8F8z7D_gP4iV7Faw63se8yA,35928
|
|
126
|
+
plover/messages/fr/LC_MESSAGES/plover.mo,sha256=chYUQS0MBFfbZLjlG4SOgrcG7anN7eRlAtvLgEcCxzo,14227
|
|
127
|
+
plover/messages/fr/LC_MESSAGES/plover.po,sha256=Arh6Q7s9zToTWVpdVOQ4_HyYkn7L6WJJZ6HcV_YJ_54,36199
|
|
128
|
+
plover/messages/it/LC_MESSAGES/plover.mo,sha256=c3qiUP-DPxpekPZcbr5uMOujGOEFbvFJL-Gb7mzYDJE,12978
|
|
129
|
+
plover/messages/it/LC_MESSAGES/plover.po,sha256=yE5fVY5ReFJkVimM_1C8gPMXYv0V0CRzhkvVDzg131k,29328
|
|
130
|
+
plover/messages/nl/LC_MESSAGES/plover.mo,sha256=MXGkoM9YH4u5vRs-vXnjqK8vZl6iyCq6BKvvlDE2AVQ,13136
|
|
131
|
+
plover/messages/nl/LC_MESSAGES/plover.po,sha256=CIECv8woSC7GVRDjbt-XWySOo2AD23sSB-L419sr_WU,29182
|
|
132
|
+
plover/messages/zh_tw/LC_MESSAGES/plover.mo,sha256=2ipABGUrUtX55Y3w8hDucQ-Ypx_4vrUdV84OEDGkPiY,11629
|
|
133
|
+
plover/messages/zh_tw/LC_MESSAGES/plover.po,sha256=6mq4i72bS5nGEss8o5kS6Ty8XKa6ID2MIGTpH53ccIs,27570
|
|
134
|
+
plover/meta/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
135
|
+
plover/meta/attach.py,sha256=iDQn8AlC2x7OuipdiduHBrG4HORx7XOpic_Cwv4VAZw,2357
|
|
136
|
+
plover/meta/case.py,sha256=eWHXO7DbAQ4Lc-7hy0vG99_gE-Y8yw0I1TxEpXqTkg8,528
|
|
137
|
+
plover/meta/command.py,sha256=pC3z_V8w1Bw8VYg8fAXT0h8S16tGVJ-ccncQqcbmVKs,115
|
|
138
|
+
plover/meta/conditional.py,sha256=-S1v5QsNg2Ltg4HwgGfT-6E4eVAy7MMyc7WbtQHUIIM,560
|
|
139
|
+
plover/meta/currency.py,sha256=uThlERY3JSMaPRevYgCglG3SFftH7bV2CARxeBd2n-k,643
|
|
140
|
+
plover/meta/glue.py,sha256=BMRmUmsLP6rF0QXSmySlNgOJl9DO4LU45BnptowsonQ,183
|
|
141
|
+
plover/meta/key_combo.py,sha256=Iik2-Q6uOz11Wc7VE03NIXnI6nk72MagDIPlfocz6hI,111
|
|
142
|
+
plover/meta/mode.py,sha256=fU0Rznrh4EA0VYprxdjznlo3qijeR_Er0oyOMSB-DoY,1451
|
|
143
|
+
plover/meta/punctuation.py,sha256=mODP-zLm-ws_q94GWt1kFyLfgdkOx2RLn4RmDz6FgEs,337
|
|
144
|
+
plover/meta/word_end.py,sha256=ahOaPPdokWV3--QWqHCNaQ5gDN4UbcssMo8vx63OWCI,119
|
|
145
|
+
plover/oslayer/__init__.py,sha256=ri3pEAcLJik_tTIb1G0Y70KbsfIeSG_iUmlBsT8ea38,613
|
|
146
|
+
plover/oslayer/config.py,sha256=nk3DDzvTJq3ULK64Ke3jNd7wWTzXdSXBn7jz-lQk4ds,1583
|
|
147
|
+
plover/oslayer/controller.py,sha256=d7SpSNNBmngmL49xuJfjiytAR2OShr6s7vUILY23CqE,2726
|
|
148
|
+
plover/oslayer/linux/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
149
|
+
plover/oslayer/linux/display_server.py,sha256=rRUwFEVKLj6qvpu2g21cqAtn9Q2dEy2zfkimDJp3Sp8,140
|
|
150
|
+
plover/oslayer/linux/i18n.py,sha256=_hCc5UUAThJDHmYhzNUwMNjcCfVlvTDXNUdGMmd95rc,286
|
|
151
|
+
plover/oslayer/linux/keyboardcontrol.py,sha256=hVj-ldB249MyJda2WODvdo8zvlNc9U7WaBKv9mOSKec,291
|
|
152
|
+
plover/oslayer/linux/keyboardcontrol_uinput.py,sha256=GySva_EBwvnFqM6DwAtR7OSO1ricameaepfUWqB79gQ,16350
|
|
153
|
+
plover/oslayer/linux/keyboardcontrol_x11.py,sha256=DhL5btflL4eYe9gaOp-KbpL6X0UFUk-DfCV2OaIfshw,80456
|
|
154
|
+
plover/oslayer/linux/log.py,sha256=dJel6sNg5ywTSL6Mq5HjCCGXzyQ0feZCdmFBCtrUkwQ,102
|
|
155
|
+
plover/oslayer/linux/log_dbus.py,sha256=ieZn8KdVe6OKlfoR59r8hCIHGfTkzDssX1BaoBZxARg,8071
|
|
156
|
+
plover/oslayer/linux/serial.py,sha256=zoiKVNJFPemvI30EyT_kcnh8zl_ls-qVztl0aaZR1uA,463
|
|
157
|
+
plover/oslayer/linux/wmctrl.py,sha256=MSuNQ5sSf64UsKwOcncJr18eQCquEB2yePLNjPNbjVw,157
|
|
158
|
+
plover/oslayer/linux/wmctrl_x11.py,sha256=HOhTN_Qv1KCcAERj6kQ0tfUzWDw8IqGj-JHK7IYejBM,1813
|
|
159
|
+
plover/oslayer/osx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
160
|
+
plover/oslayer/osx/i18n.py,sha256=btIasPN3fN-n_bbQKa3nR7zlI11tlL0ozn_iSgTzRKs,150
|
|
161
|
+
plover/oslayer/osx/keyboardcontrol.py,sha256=SIXfHfQg2vi7pTv_g-gTWu_c-c0x9NAwixaSEXbx0Nw,17156
|
|
162
|
+
plover/oslayer/osx/keyboardlayout.py,sha256=FBT_EXF4luZT_7gigk1IXoQB-iRIZo6oy04_xQd6BZ4,21021
|
|
163
|
+
plover/oslayer/osx/log.py,sha256=F0cFPNIrcgPL9itcKxPNVZ1rPJU9O3xIkAsxeTTjxUI,1872
|
|
164
|
+
plover/oslayer/osx/serial.py,sha256=bpI90KGHjlNviUnYdzwyrIVBnF8kwfR3M-TwXjJhdDY,71
|
|
165
|
+
plover/oslayer/osx/wmctrl.py,sha256=HxSMigEicPhS2CWNpoyM1yagPOIDrkpqYHoFU--KZFw,420
|
|
166
|
+
plover/oslayer/windows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
167
|
+
plover/oslayer/windows/i18n.py,sha256=G0xGVKxREEODAr4u3Ke0tapma9t4CDMpkcL3HHt-LSM,147
|
|
168
|
+
plover/oslayer/windows/keyboardcontrol.py,sha256=Kan53ANTRI-ubwS4XDfkmq8CiIYCyMsmtI7bL5Wos08,18143
|
|
169
|
+
plover/oslayer/windows/keyboardlayout.py,sha256=dlU5g2qDmV93H3Fl8IlrXlJAL2w1P7ImO3mYFX5MU3U,16673
|
|
170
|
+
plover/oslayer/windows/log.py,sha256=pqJGtgYZVh0HsfqLCz8kNYW_6mB3exjPYFkELlQm1mk,1011
|
|
171
|
+
plover/oslayer/windows/serial.py,sha256=wuyMkVwdVZ7O-IsAzGbiP93tTEa2O4P1fD62BFzaS2c,532
|
|
172
|
+
plover/oslayer/windows/wmctrl.py,sha256=54PFlJNQA1i75BE7p57FKaA110Ov6XWLSf9qmypeBeM,335
|
|
173
|
+
plover/output/__init__.py,sha256=JomRffOenGFxKVUV4dpRZCIpg3p-niXTCR_qswq3YKY,641
|
|
174
|
+
plover/output/keyboard.py,sha256=89PKXrCvb9kwwCSbSshrw3RLjuNEcrkCMI8rlxrI3nA,625
|
|
175
|
+
plover/plugins_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
176
|
+
plover/plugins_manager/__main__.py,sha256=216zqlZBCxhnAQLqOvidaux8-mBkh8keMdv9qir39yM,2883
|
|
177
|
+
plover/plugins_manager/global_registry.py,sha256=HdaoE0q-SkRbU1PWQwsqVoRJWUehcFjqCnI-EiFK2pQ,620
|
|
178
|
+
plover/plugins_manager/local_registry.py,sha256=NXKlFdoU7AdSvCSIJNELXEtYM5Uirx6eTVkhmmdTWoE,1449
|
|
179
|
+
plover/plugins_manager/package_index.py,sha256=dPLGWq7ix8fSF-5jMl5RrGWcYb_YTsJC2JckJkQqYgI,2042
|
|
180
|
+
plover/plugins_manager/pip_wrapper.py,sha256=3E2Dhx9oIL1K9BkX7va2hJgYoKhcZKb176mM5xeEyw4,556
|
|
181
|
+
plover/plugins_manager/plugin_metadata.py,sha256=ySRCsHTkXvJqIaZh4REt_PV5xh7qM380qRmkmRvudVQ,1442
|
|
182
|
+
plover/plugins_manager/registry.py,sha256=w5jRqDDtvtJgJRVTlm0oPyipbFemUVW7Sn9cBiSIot0,5099
|
|
183
|
+
plover/plugins_manager/requests.py,sha256=AH-O_Vt0outFJOvP8YvdrbkpTJ7lSmIesdbVMEJF-eQ,454
|
|
184
|
+
plover/plugins_manager/utils.py,sha256=bZj08u2aVKqeKHLmqr7CatwLK1MHm3nSUd0CUpXleRw,1009
|
|
185
|
+
plover/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
186
|
+
plover/scripts/dist_main.py,sha256=-Qj-DhbjXSx2WdcaRPPYoI8B7awv86-fMMtdgs6AVjw,644
|
|
187
|
+
plover/scripts/main.py,sha256=DG9E_qDlKnhcjpuoHHY52-6d7egldLx6rwhM-izu95M,6474
|
|
188
|
+
plover/scripts/send_command.py,sha256=PAwxBHDms1ULSs5eSXKdUKanU0B553O1gYY0kfSebRs,945
|
|
189
|
+
plover/system/__init__.py,sha256=huGEpfO_S6ca9Q2J-ejQWP8H_pQM7rTTWW5oqUfC98M,2720
|
|
190
|
+
plover/system/english_stenotype.py,sha256=X4ft40mFIKxKd-c6YkF7otLlVqDlRagLYAWIHKKShgA,9126
|
|
191
|
+
plover-5.0.0.dev3.dist-info/licenses/LICENSE.txt,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
|
|
192
|
+
plover_build_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
193
|
+
plover_build_utils/check_requirements.py,sha256=sl5dhjGiHVOGZ24dsr1IIL-1Fmm3KBU7SRqehBqqjck,1047
|
|
194
|
+
plover_build_utils/download.py,sha256=IWRsTnoJi_jTQIsxWojpCQqQX2l_l1b_j3MTnhwlDro,1633
|
|
195
|
+
plover_build_utils/functions.sh,sha256=myWzOgGEOQQD9ZFHKV2EE-MiVcDHsM5vplrtpxJPE_Y,5598
|
|
196
|
+
plover_build_utils/get_pip.py,sha256=6T8BWhyf_6Wir7S5NwruqGEUCZo9nWBsullbtgLkxww,768
|
|
197
|
+
plover_build_utils/install_wheels.py,sha256=O4mVeQ_2BB0mpnKTDARrUdy3_iZFP-U6velxwfezkGM,3637
|
|
198
|
+
plover_build_utils/pyqt.py,sha256=IispLgYxOOnZ8vJALGM_bvces8fZcH_4C7IPOzujdDg,1303
|
|
199
|
+
plover_build_utils/setup.py,sha256=UP9hFJ_v7x7Z-B3zytM4FrEnLMx9QvtRhvDwaBIfVYs,4951
|
|
200
|
+
plover_build_utils/source_less.py,sha256=xziBBOPIrznyMclu2R_QXwdn6IsYOuZCKiw8CAztils,871
|
|
201
|
+
plover_build_utils/tree.py,sha256=mGsscP3dwwSSXyp455rtwQjQEEIvSUohHvsG65wJoJE,1724
|
|
202
|
+
plover_build_utils/trim.py,sha256=CAAOf6iHkCJIh5GFUOWi5wyB-Rdx7HnrwJaUQeneB80,1644
|
|
203
|
+
plover_build_utils/zipdir.py,sha256=0IQgBXsNBtU0_HOcOU-LFYEAMDfZNjvyGA6nlxY4x4A,567
|
|
204
|
+
plover_build_utils/testing/__init__.py,sha256=8Elh71mymSBegX8v2UV80aTOfJbliyWdu-fNq6LVJKU,216
|
|
205
|
+
plover_build_utils/testing/blackbox.py,sha256=EiKTj6gTLe_KEhaRnkwlQ_cAqFe-uLCPfvb7HbBsXYo,5429
|
|
206
|
+
plover_build_utils/testing/dict.py,sha256=7D6EGm2pShlh56qWDG1dzu1Aky-eMrFBowrCY6-xBcg,506
|
|
207
|
+
plover_build_utils/testing/output.py,sha256=fE9bH6-hSg5JJZ3AM8yAUOFVRykRUdkFFuZOekp3M2A,509
|
|
208
|
+
plover_build_utils/testing/parametrize.py,sha256=z8dozkFCHCd9SLZ7wCldX4EiATfxGexBnZ7S2QMEsEA,1193
|
|
209
|
+
plover_build_utils/testing/steno.py,sha256=kLKKegTb6guIg9KKJhOoh2Y9LN8VmbIVOK8Su0J10Ew,98
|
|
210
|
+
plover_build_utils/testing/steno_dictionary.py,sha256=FBxtGpIM842ahAaS2w_s-Y_NxVgMs5sbuNjgzWXwPPQ,17667
|
|
211
|
+
plover-5.0.0.dev3.dist-info/METADATA,sha256=hRNKiYTpkGrL9AadeU2XZOapjzNhugjIQ301PIa3rm4,8781
|
|
212
|
+
plover-5.0.0.dev3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
213
|
+
plover-5.0.0.dev3.dist-info/entry_points.txt,sha256=3dRZcIel01EDaveqDTpqust882mt5CixebsU1u2BYNk,2337
|
|
214
|
+
plover-5.0.0.dev3.dist-info/top_level.txt,sha256=KVrS7DEe-ugIDrbZbjrHrb4ObXXtI2xblUFR_CTEIMI,26
|
|
215
|
+
plover-5.0.0.dev3.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
216
|
+
plover-5.0.0.dev3.dist-info/RECORD,,
|
|
@@ -13,14 +13,13 @@ def sorted_requirements(requirements):
|
|
|
13
13
|
|
|
14
14
|
# Find all available distributions.
|
|
15
15
|
all_requirements = [
|
|
16
|
-
Requirement(f"{dist.metadata['Name']}=={dist.version}")
|
|
17
|
-
for dist in distributions()
|
|
16
|
+
Requirement(f"{dist.metadata['Name']}=={dist.version}") for dist in distributions()
|
|
18
17
|
]
|
|
19
18
|
|
|
20
19
|
# Find Plover requirements.
|
|
21
20
|
plover_deps = set()
|
|
22
21
|
try:
|
|
23
|
-
plover_requires = requires(
|
|
22
|
+
plover_requires = requires("plover") or []
|
|
24
23
|
for req in plover_requires:
|
|
25
24
|
plover_deps.add(Requirement(req))
|
|
26
25
|
except PackageNotFoundError:
|
|
@@ -28,11 +27,11 @@ except PackageNotFoundError:
|
|
|
28
27
|
plover_requires = []
|
|
29
28
|
|
|
30
29
|
# List requirements.
|
|
31
|
-
print(
|
|
30
|
+
print("# plover")
|
|
32
31
|
for requirement in sorted_requirements(plover_deps):
|
|
33
32
|
print(requirement)
|
|
34
|
-
print(
|
|
33
|
+
print("# other")
|
|
35
34
|
for requirement in sorted_requirements(all_requirements):
|
|
36
35
|
if requirement not in plover_deps:
|
|
37
36
|
print(requirement)
|
|
38
|
-
print(
|
|
37
|
+
print("# vim: ft=cfg commentstring=#\\ %s list")
|
plover_build_utils/download.py
CHANGED
|
@@ -7,7 +7,7 @@ import os
|
|
|
7
7
|
import sys
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
DOWNLOADS_DIR = os.path.join(
|
|
10
|
+
DOWNLOADS_DIR = os.path.join(".cache", "downloads")
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def download(url, sha1=None, filename=None, downloads_dir=DOWNLOADS_DIR):
|
|
@@ -22,15 +22,15 @@ def download(url, sha1=None, filename=None, downloads_dir=DOWNLOADS_DIR):
|
|
|
22
22
|
if sha1 is None or not os.path.exists(dst):
|
|
23
23
|
retries += 1
|
|
24
24
|
try:
|
|
25
|
-
with urlopen(url) as req, open(dst,
|
|
25
|
+
with urlopen(url) as req, open(dst, "wb") as fp:
|
|
26
26
|
fp.write(req.read())
|
|
27
27
|
except Exception as e:
|
|
28
|
-
print(
|
|
28
|
+
print("error", e, file=sys.stderr)
|
|
29
29
|
continue
|
|
30
30
|
if sha1 is None:
|
|
31
31
|
break
|
|
32
32
|
h = hashlib.sha1()
|
|
33
|
-
with open(dst,
|
|
33
|
+
with open(dst, "rb") as fp:
|
|
34
34
|
while True:
|
|
35
35
|
d = fp.read(4 * 1024 * 1024)
|
|
36
36
|
if not d:
|
|
@@ -38,14 +38,16 @@ def download(url, sha1=None, filename=None, downloads_dir=DOWNLOADS_DIR):
|
|
|
38
38
|
h.update(d)
|
|
39
39
|
if h.hexdigest() == sha1:
|
|
40
40
|
break
|
|
41
|
-
print(
|
|
42
|
-
|
|
41
|
+
print(
|
|
42
|
+
"sha1 does not match: %s instead of %s" % (h.hexdigest(), sha1),
|
|
43
|
+
file=sys.stderr,
|
|
44
|
+
)
|
|
43
45
|
os.unlink(dst)
|
|
44
|
-
assert os.path.exists(dst),
|
|
46
|
+
assert os.path.exists(dst), "could not successfully retrieve %s" % url
|
|
45
47
|
return dst
|
|
46
48
|
|
|
47
49
|
|
|
48
|
-
if __name__ ==
|
|
50
|
+
if __name__ == "__main__":
|
|
49
51
|
args = sys.argv[1:]
|
|
50
52
|
url = args.pop(0)
|
|
51
53
|
sha1 = None
|
plover_build_utils/get_pip.py
CHANGED
|
@@ -4,20 +4,25 @@ import os
|
|
|
4
4
|
import sys
|
|
5
5
|
import subprocess
|
|
6
6
|
|
|
7
|
+
|
|
7
8
|
def get_pip(args=None):
|
|
8
9
|
os.makedirs("build", exist_ok=True)
|
|
9
10
|
|
|
10
11
|
# can be downloaded from https://github.com/pypa/get-pip/tags by following the commit ID and opening the raw file
|
|
11
|
-
cmd = [
|
|
12
|
+
cmd = [
|
|
13
|
+
"curl",
|
|
14
|
+
"https://raw.githubusercontent.com/pypa/get-pip/c8048075753de535e6279e501940f41bc040c081/public/get-pip.py",
|
|
15
|
+
"-o",
|
|
16
|
+
"build/get-pip.py",
|
|
17
|
+
]
|
|
12
18
|
subprocess.call(cmd)
|
|
13
|
-
cmd = [sys.executable,"build/get-pip.py","pip==25.1"]
|
|
19
|
+
cmd = [sys.executable, "build/get-pip.py", "pip==25.1"]
|
|
14
20
|
subprocess.call(cmd)
|
|
15
21
|
if args:
|
|
16
22
|
cmd = [sys.executable, "-m", "pip", "install"] + args
|
|
17
|
-
print(
|
|
23
|
+
print("running", " ".join(cmd), flush=True)
|
|
18
24
|
subprocess.check_call(cmd)
|
|
19
25
|
|
|
20
26
|
|
|
21
|
-
|
|
22
|
-
if __name__ == '__main__':
|
|
27
|
+
if __name__ == "__main__":
|
|
23
28
|
get_pip(sys.argv[1:])
|