Skip to content

Commit a4836ea

Browse files
committed
Fix paths and dependencies
1 parent 0121d46 commit a4836ea

File tree

8 files changed

+97
-22
lines changed

8 files changed

+97
-22
lines changed

plover/gui_qt/console_widget.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from PyQt6.QtGui import QFontDatabase, QFontMetrics
1313
from PyQt6.QtWidgets import QWidget
1414

15-
from plover.plugins_manager.gui_qt.console_widget_ui import Ui_ConsoleWidget
15+
from plover.gui_qt.console_widget_ui import Ui_ConsoleWidget
1616

1717

1818
NULL = open(os.devnull, 'r+b')

plover/gui_qt/manager.py renamed to plover/gui_qt/plugins_manager.py

Lines changed: 76 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,94 @@
44
import html
55
import os
66
import sys
7+
import itertools
8+
import subprocess
9+
import site
710

811
from PyQt6.QtCore import Qt, pyqtSignal
912
from PyQt6.QtWidgets import QDialog, QMessageBox, QTableWidgetItem, QInputDialog
1013

1114
from plover.gui_qt.tool import Tool
12-
13-
from plover.plugins_manager.gui_qt.info_browser import InfoBrowser
14-
from plover.plugins_manager.gui_qt.manager_ui import Ui_PluginsManager
15-
from plover.plugins_manager.gui_qt.run_dialog import RunDialog
15+
from plover.gui_qt.info_browser import InfoBrowser
16+
from plover.gui_qt.plugins_manager_ui import Ui_PluginsManager
17+
from plover.gui_qt.run_dialog import RunDialog
1618
from plover.plugins_manager.registry import Registry
1719
from plover.plugins_manager.utils import description_to_html
18-
from plover.plugins_manager.__main__ import pip
20+
from plover.plugins_manager import local_registry, global_registry
21+
from plover.plugins_manager.utils import running_under_virtualenv
22+
23+
24+
def list_plugins(freeze=False):
25+
installed_plugins = local_registry.list_plugins()
26+
if freeze:
27+
available_plugins = {}
28+
else:
29+
available_plugins = global_registry.list_plugins()
30+
for name, installed, available in sorted(
31+
(name,
32+
installed_plugins.get(name, []),
33+
available_plugins.get(name, []))
34+
for name in set(itertools.chain(installed_plugins,
35+
available_plugins))
36+
):
37+
latest = available[-1] if available else None
38+
current = installed[-1] if installed else None
39+
info = latest or current
40+
if freeze:
41+
if current:
42+
print('%s==%s' % (current.name, current.version))
43+
continue
44+
print('%s (%s) - %s' % (info.name, info.version, info.summary))
45+
if current:
46+
print(' INSTALLED: %s' % current.version)
47+
if latest:
48+
print(' LATEST: %s' % latest.version)
1949

2050

51+
def pip(args, stdin=None, stdout=None, stderr=None, **kwargs):
52+
cmd = [sys.executable, '-m',
53+
'plover.plugins_manager.pip_wrapper',
54+
'--disable-pip-version-check']
55+
env = dict(os.environ)
56+
# Make sure user plugins are handled
57+
# even if user site is not enabled.
58+
if not running_under_virtualenv() and not site.ENABLE_USER_SITE:
59+
pypath = env.get('PYTHONPATH')
60+
if pypath is None:
61+
pypath = []
62+
else:
63+
pypath = pypath.split(os.pathsep)
64+
pypath.insert(0, site.USER_SITE)
65+
env['PYTHONPATH'] = os.pathsep.join(pypath)
66+
command = args.pop(0)
67+
if command == 'check':
68+
cmd.append('check')
69+
elif command == 'install':
70+
cmd.extend((
71+
'install',
72+
'--upgrade-strategy=only-if-needed',
73+
))
74+
if not running_under_virtualenv():
75+
cmd.append('--user')
76+
elif command == 'uninstall':
77+
cmd.append('uninstall')
78+
elif command == 'list':
79+
cmd.extend((
80+
'list',
81+
'--format=columns',
82+
))
83+
else:
84+
raise ValueError('invalid command: %s' % command)
85+
cmd.extend(args)
86+
return subprocess.Popen(cmd, env=env, stdin=stdin,
87+
stdout=stdout, stderr=stderr,
88+
**kwargs)
89+
2190
class PluginsManager(Tool, Ui_PluginsManager):
2291

2392
TITLE = 'Plugins Manager'
2493
ROLE = 'plugins_manager'
25-
ICON = ('plover.plugins_manager.gui_qt.resources', ':/icon.svg')
94+
ICON = (':/plugins_manager.svg')
2695

2796
# We use a class instance so the state is persistent
2897
# accross different executions of the dialog when
@@ -42,6 +111,7 @@ def __init__(self, engine):
42111
self._packages_updated.connect(self._on_packages_updated)
43112
if self._packages is None:
44113
PluginsManager._packages = Registry()
114+
print(PluginsManager._packages)
45115
self._on_packages_updated()
46116
self.on_refresh()
47117

plover/gui_qt/manager.ui renamed to plover/gui_qt/plugins_manager.ui

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@
126126
</property>
127127
<property name="icon">
128128
<iconset resource="resources/resources.qrc">
129-
<normaloff>:/plugins_manager/git.png</normaloff>:/plugins_manager/git.png</iconset>
129+
<normaloff>:/git.png</normaloff>:/git.png</iconset>
130130
</property>
131131
</widget>
132132
</item>

plover/gui_qt/run_dialog.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11

22
from PyQt6.QtWidgets import QDialogButtonBox, QDialog
33

4-
from plover.plugins_manager.gui_qt.console_widget import ConsoleWidget
5-
from plover.plugins_manager.gui_qt.run_dialog_ui import Ui_RunDialog
4+
from plover.gui_qt.console_widget import ConsoleWidget
5+
from plover.gui_qt.run_dialog_ui import Ui_RunDialog
66

77

88
class RunDialog(QDialog, Ui_RunDialog):

plover/oslayer/osx/log.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import objc
2-
NSUserNotification = objc.lookUpClass('NSUserNotification')
3-
NSUserNotificationCenter = objc.lookUpClass('NSUserNotificationCenter')
2+
UNUserNotificationCenter = objc.lookUpClass('UNUserNotificationCenter')
3+
UNMutableNotificationContent = objc.lookUpClass('UNMutableNotificationContent')
4+
UNNotificationRequest = objc.lookUpClass('UNNotificationRequest')
5+
46
NSObject = objc.lookUpClass('NSObject')
57

68
from plover import log, __name__ as __software_name__
@@ -16,15 +18,15 @@ def __init__(self):
1618
self.setFormatter(log.NoExceptionTracebackFormatter('%(message)s'))
1719

1820
def emit(self, record):
19-
# Notification Center has no levels or timeouts.
20-
notification = NSUserNotification.alloc().init()
21+
content = UNMutableNotificationContent.alloc().init()
22+
content.setTitle_(record.levelname.title())
23+
content.setBody_(self.format(record))
2124

22-
notification.setTitle_(record.levelname.title())
23-
notification.setInformativeText_(self.format(record))
25+
request = UNNotificationRequest.requestWithIdentifier_content_trigger_("notification", content, None)
2426

25-
ns = NSUserNotificationCenter.defaultUserNotificationCenter()
26-
ns.setDelegate_(always_present_delegator)
27-
ns.deliverNotification_(notification)
27+
center = UNUserNotificationCenter.currentNotificationCenter()
28+
center.requestAuthorizationWithOptions_completionHandler_(3, lambda granted, error: None)
29+
center.addNotificationRequest_withCompletionHandler_(request, None)
2830

2931

3032
class AlwaysPresentNSDelegator(NSObject):

reqs/constraints.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ pluggy==1.0.0
3838
py==1.10.0
3939
pycparser==2.20
4040
Pygments==2.10.0
41-
pyobjc-core==9.0
42-
pyobjc-framework-Cocoa==9.0
43-
pyobjc-framework-Quartz==9.0
41+
pyobjc-core==11.0
42+
pyobjc-framework-Cocoa==11.0
43+
pyobjc-framework-Quartz==11.0
4444
pyparsing==3.0.3
4545
PyQt6==6.4.2
4646
PyQt6-Qt6==6.4.3

reqs/dist.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ pyobjc-framework-Quartz>=9.0; "darwin" in sys_platform
77
pyserial>=2.7
88
python-xlib>=0.16; ("linux" in sys_platform or "bsd" in sys_platform) and python_version < "3.9"
99
python-xlib>=0.29; ("linux" in sys_platform or "bsd" in sys_platform) and python_version >= "3.9"
10+
requests-cache>=0.9.1
11+
requests-futures>=1.0.0
1012
rtf_tokenize
1113
setuptools
1214
wcwidth

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ plover.gui.qt.tool =
7474
add_translation = plover.gui_qt.add_translation_dialog:AddTranslationDialog
7575
lookup = plover.gui_qt.lookup_dialog:LookupDialog
7676
paper_tape = plover.gui_qt.paper_tape:PaperTape
77+
plugins_manager = plover.gui_qt.plugins_manager:PluginsManager
7778
suggestions = plover.gui_qt.suggestions_dialog:SuggestionsDialog
7879
plover.machine =
7980
Gemini PR = plover.machine.geminipr:GeminiPr

0 commit comments

Comments
 (0)