synodic-client 0.0.1.dev79__tar.gz → 0.0.1.dev80__tar.gz
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.
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/PKG-INFO +1 -1
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/pyproject.toml +4 -4
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/plugin_row.py +23 -3
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/screen.py +5 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/tool_update_controller.py +1 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/theme.py +30 -13
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/LICENSE.md +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/README.md +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/__init__.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/__main__.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/__init__.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/bootstrap.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/config_store.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/data.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/debug.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/icon.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/init.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/instance.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/package_state.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/qt.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/schema.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/__init__.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/action_card.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/card.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/install.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/install_workers.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/log_panel.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/projects.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/schema.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/settings.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/sidebar.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/spinner.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/tray.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/update_banner.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/update_controller.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/update_model.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/uri.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/cli/__init__.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/cli/config.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/cli/context.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/cli/debug.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/cli/install.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/cli/output.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/cli/project.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/cli/tool.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/cli/update.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/client.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/config.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/logging.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/operations/__init__.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/operations/bootstrap.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/operations/config.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/operations/install.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/operations/project.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/operations/schema.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/operations/tool.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/operations/update.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/protocol.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/py.typed +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/resolution.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/schema.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/startup.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/subprocess_patch.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/updater.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/__init__.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/conftest.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/__init__.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/operations/__init__.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/operations/test_config.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/operations/test_install.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/operations/test_install_plan.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/operations/test_project.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/operations/test_tool.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/operations/test_update.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/__init__.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/conftest.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_action_card.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_gather_packages.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_install_preview.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_log_panel.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_logging.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_package_state.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_preview_model.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_settings.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_sidebar.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_tray_window_show.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_update_banner.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_update_controller.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_update_feedback.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/test_bootstrap.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/test_cli.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/test_client_updater.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/test_client_version.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/test_config.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/test_examples.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/test_init.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/test_install.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/test_resolution.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/test_updater.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/test_uri.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/test_workers.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/windows/__init__.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/windows/conftest.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/windows/test_protocol.py +0 -0
- {synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/windows/test_startup.py +0 -0
|
@@ -15,7 +15,7 @@ dependencies = [
|
|
|
15
15
|
"velopack>=0.0.1521.dev61717",
|
|
16
16
|
"typer>=0.24.1",
|
|
17
17
|
]
|
|
18
|
-
version = "0.0.1.
|
|
18
|
+
version = "0.0.1.dev80"
|
|
19
19
|
|
|
20
20
|
[project.license]
|
|
21
21
|
text = "LGPL-3.0-or-later"
|
|
@@ -35,12 +35,12 @@ build = [
|
|
|
35
35
|
"pyinstaller>=6.19.0",
|
|
36
36
|
]
|
|
37
37
|
lint = [
|
|
38
|
-
"ruff>=0.15.
|
|
39
|
-
"pyrefly>=0.57.
|
|
38
|
+
"ruff>=0.15.7",
|
|
39
|
+
"pyrefly>=0.57.1",
|
|
40
40
|
]
|
|
41
41
|
test = [
|
|
42
42
|
"pytest>=9.0.2",
|
|
43
|
-
"pytest-cov>=7.
|
|
43
|
+
"pytest-cov>=7.1.0",
|
|
44
44
|
"pytest-mock>=3.15.1",
|
|
45
45
|
]
|
|
46
46
|
|
|
@@ -25,6 +25,7 @@ from synodic_client.application.screen.schema import PluginRowData, ProjectInsta
|
|
|
25
25
|
from synodic_client.application.screen.spinner import SpinnerCanvas
|
|
26
26
|
from synodic_client.application.theme import (
|
|
27
27
|
FILTER_CHIP_STYLE,
|
|
28
|
+
PLUGIN_CHECK_STYLE,
|
|
28
29
|
PLUGIN_KIND_HEADER_STYLE,
|
|
29
30
|
PLUGIN_PROVIDER_NAME_STYLE,
|
|
30
31
|
PLUGIN_PROVIDER_RUNTIME_TAG_DEFAULT_STYLE,
|
|
@@ -138,6 +139,9 @@ class PluginProviderHeader(QFrame):
|
|
|
138
139
|
auto_update_toggled = Signal(str, bool)
|
|
139
140
|
"""Emitted with ``(plugin_name, enabled)`` when the auto-update toggle changes."""
|
|
140
141
|
|
|
142
|
+
check_requested = Signal(str)
|
|
143
|
+
"""Emitted with the plugin name when the manual check-for-updates button is clicked."""
|
|
144
|
+
|
|
141
145
|
update_requested = Signal(str)
|
|
142
146
|
"""Emitted with the plugin name when the per-plugin *Update* button is clicked."""
|
|
143
147
|
|
|
@@ -159,6 +163,7 @@ class PluginProviderHeader(QFrame):
|
|
|
159
163
|
self._runtime_tag = ''
|
|
160
164
|
self._signal_key = plugin.name
|
|
161
165
|
self._update_btn: QPushButton | None = None
|
|
166
|
+
self._check_btn: QPushButton | None = None
|
|
162
167
|
self._checking_spinner: _RowSpinner | None = None
|
|
163
168
|
|
|
164
169
|
self._layout = QHBoxLayout(self)
|
|
@@ -230,8 +235,8 @@ class PluginProviderHeader(QFrame):
|
|
|
230
235
|
auto_update: bool,
|
|
231
236
|
has_updates: bool,
|
|
232
237
|
) -> None:
|
|
233
|
-
"""Build
|
|
234
|
-
toggle_btn = QPushButton('
|
|
238
|
+
"""Build auto-update toggle, check, and Update control buttons."""
|
|
239
|
+
toggle_btn = QPushButton('\u21ba')
|
|
235
240
|
toggle_btn.setCheckable(True)
|
|
236
241
|
toggle_btn.setChecked(auto_update)
|
|
237
242
|
toggle_btn.setStyleSheet(PLUGIN_TOGGLE_STYLE)
|
|
@@ -241,6 +246,15 @@ class PluginProviderHeader(QFrame):
|
|
|
241
246
|
)
|
|
242
247
|
layout.addWidget(toggle_btn)
|
|
243
248
|
|
|
249
|
+
check_btn = QPushButton('\u27f3')
|
|
250
|
+
check_btn.setStyleSheet(PLUGIN_CHECK_STYLE)
|
|
251
|
+
check_btn.setToolTip('Check for updates now')
|
|
252
|
+
check_btn.clicked.connect(
|
|
253
|
+
lambda: self.check_requested.emit(self._signal_key),
|
|
254
|
+
)
|
|
255
|
+
self._check_btn = check_btn
|
|
256
|
+
layout.addWidget(check_btn)
|
|
257
|
+
|
|
244
258
|
self._checking_spinner = _RowSpinner(self)
|
|
245
259
|
layout.addWidget(self._checking_spinner)
|
|
246
260
|
|
|
@@ -258,6 +272,8 @@ class PluginProviderHeader(QFrame):
|
|
|
258
272
|
toggle_btn.setEnabled(False)
|
|
259
273
|
toggle_btn.setChecked(False)
|
|
260
274
|
toggle_btn.setToolTip('Not installed \u2014 cannot auto-update')
|
|
275
|
+
check_btn.setEnabled(False)
|
|
276
|
+
check_btn.setToolTip('Not installed \u2014 cannot check for updates')
|
|
261
277
|
update_btn.setEnabled(False)
|
|
262
278
|
update_btn.setToolTip('Not installed \u2014 cannot update')
|
|
263
279
|
|
|
@@ -281,10 +297,14 @@ class PluginProviderHeader(QFrame):
|
|
|
281
297
|
return
|
|
282
298
|
if checking:
|
|
283
299
|
self._checking_spinner.start()
|
|
300
|
+
if self._check_btn is not None:
|
|
301
|
+
self._check_btn.hide()
|
|
284
302
|
if self._update_btn is not None:
|
|
285
303
|
self._update_btn.hide()
|
|
286
304
|
else:
|
|
287
305
|
self._checking_spinner.stop()
|
|
306
|
+
if self._check_btn is not None:
|
|
307
|
+
self._check_btn.show()
|
|
288
308
|
|
|
289
309
|
def set_error(self, message: str) -> None:
|
|
290
310
|
"""Show a transient inline error that auto-hides after ~5 seconds."""
|
|
@@ -443,7 +463,7 @@ class PluginRow(QFrame):
|
|
|
443
463
|
|
|
444
464
|
def _build_toggle(self, layout: QHBoxLayout, data: PluginRowData) -> None:
|
|
445
465
|
"""Add the auto-update toggle button."""
|
|
446
|
-
toggle_btn = QPushButton('
|
|
466
|
+
toggle_btn = QPushButton('\u21ba')
|
|
447
467
|
toggle_btn.setCheckable(True)
|
|
448
468
|
toggle_btn.setChecked(data.auto_update)
|
|
449
469
|
toggle_btn.setStyleSheet(PLUGIN_ROW_TOGGLE_STYLE)
|
|
@@ -95,6 +95,9 @@ class ToolsView(QWidget):
|
|
|
95
95
|
update_all_requested = Signal()
|
|
96
96
|
"""Emitted when the global *Update All* button is clicked."""
|
|
97
97
|
|
|
98
|
+
plugin_check_requested = Signal(str)
|
|
99
|
+
"""Emitted with a plugin name when its manual check-for-updates button is clicked."""
|
|
100
|
+
|
|
98
101
|
plugin_update_requested = Signal(str)
|
|
99
102
|
"""Emitted with a plugin name when its per-plugin *Update* button is clicked."""
|
|
100
103
|
|
|
@@ -495,6 +498,7 @@ class ToolsView(QWidget):
|
|
|
495
498
|
)
|
|
496
499
|
provider.set_runtime(rt.tag, label=tag_text)
|
|
497
500
|
provider.auto_update_toggled.connect(self._on_auto_update_toggled)
|
|
501
|
+
provider.check_requested.connect(self.plugin_check_requested.emit)
|
|
498
502
|
provider.update_requested.connect(self.plugin_update_requested.emit)
|
|
499
503
|
self._insert_section_widget(provider)
|
|
500
504
|
|
|
@@ -558,6 +562,7 @@ class ToolsView(QWidget):
|
|
|
558
562
|
parent=self._container,
|
|
559
563
|
)
|
|
560
564
|
provider.auto_update_toggled.connect(self._on_auto_update_toggled)
|
|
565
|
+
provider.check_requested.connect(self.plugin_check_requested.emit)
|
|
561
566
|
provider.update_requested.connect(self.plugin_update_requested.emit)
|
|
562
567
|
self._insert_section_widget(provider)
|
|
563
568
|
|
|
@@ -148,6 +148,7 @@ class ToolUpdateOrchestrator:
|
|
|
148
148
|
def connect_tools_view(self, tools_view: ToolsView) -> None:
|
|
149
149
|
"""Wire ToolsView signals once the view is lazily created."""
|
|
150
150
|
tools_view.update_all_requested.connect(self.on_tool_update)
|
|
151
|
+
tools_view.plugin_check_requested.connect(self.on_single_plugin_update)
|
|
151
152
|
tools_view.plugin_update_requested.connect(self.on_single_plugin_update)
|
|
152
153
|
tools_view.package_update_requested.connect(self.on_single_package_update)
|
|
153
154
|
tools_view.package_remove_requested.connect(self.on_single_package_remove)
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/theme.py
RENAMED
|
@@ -187,13 +187,16 @@ PLUGIN_ROW_HOST_STYLE = 'font-size: 11px; color: #808080;'
|
|
|
187
187
|
"""Host-tool annotation label (e.g. "→ pdm") for injected packages."""
|
|
188
188
|
|
|
189
189
|
PLUGIN_ROW_TOGGLE_STYLE = (
|
|
190
|
-
'QPushButton { padding:
|
|
191
|
-
' font-size:
|
|
192
|
-
'
|
|
193
|
-
'QPushButton:
|
|
194
|
-
'QPushButton:checked
|
|
190
|
+
'QPushButton { padding: 0px; border: 1px solid palette(mid); border-radius: 11px;'
|
|
191
|
+
' font-size: 14px; min-width: 22px; max-width: 22px; min-height: 22px; max-height: 22px;'
|
|
192
|
+
' color: palette(mid); background: transparent; }'
|
|
193
|
+
'QPushButton:hover { border-color: palette(light); color: palette(light); }'
|
|
194
|
+
'QPushButton:checked { background: #89d185; color: black; border-color: #89d185; }'
|
|
195
|
+
'QPushButton:checked:hover { background: #a0d896; border-color: #a0d896; }'
|
|
196
|
+
'QPushButton:disabled { color: palette(dark); border-color: palette(dark); background: transparent; }'
|
|
197
|
+
'QPushButton:checked:disabled { background: transparent; color: palette(dark); border-color: palette(dark); }'
|
|
195
198
|
)
|
|
196
|
-
"""Small
|
|
199
|
+
"""Small circular auto-update toggle (↺ icon) for individual package rows."""
|
|
197
200
|
|
|
198
201
|
PLUGIN_ROW_UPDATE_STYLE = (
|
|
199
202
|
'QPushButton { padding: 1px 4px; border: 1px solid palette(mid); border-radius: 2px;'
|
|
@@ -345,14 +348,28 @@ FILTER_TOGGLE_ACTIVE_STYLE = (
|
|
|
345
348
|
)
|
|
346
349
|
"""Filter toggle button style when an active filter is in effect."""
|
|
347
350
|
|
|
348
|
-
#
|
|
351
|
+
# Auto-update toggle button for plugin provider header rows — circular, stateful
|
|
349
352
|
PLUGIN_TOGGLE_STYLE = (
|
|
350
|
-
'QPushButton { padding:
|
|
351
|
-
' min-width:
|
|
352
|
-
'
|
|
353
|
-
'QPushButton:
|
|
354
|
-
'QPushButton:checked
|
|
355
|
-
|
|
353
|
+
'QPushButton { padding: 0px; border: 1px solid palette(mid); border-radius: 12px;'
|
|
354
|
+
' font-size: 15px; min-width: 24px; max-width: 24px; min-height: 24px; max-height: 24px;'
|
|
355
|
+
' color: palette(mid); background: transparent; }'
|
|
356
|
+
'QPushButton:hover { border-color: palette(light); color: palette(light); }'
|
|
357
|
+
'QPushButton:checked { background: #89d185; color: black; border-color: #89d185; }'
|
|
358
|
+
'QPushButton:checked:hover { background: #a0d896; border-color: #a0d896; }'
|
|
359
|
+
'QPushButton:disabled { color: palette(dark); border-color: palette(dark); background: transparent; }'
|
|
360
|
+
'QPushButton:checked:disabled { background: transparent; color: palette(dark); border-color: palette(dark); }'
|
|
361
|
+
)
|
|
362
|
+
|
|
363
|
+
# Manual check-for-updates button for plugin provider header rows — rect, one-shot action
|
|
364
|
+
PLUGIN_CHECK_STYLE = (
|
|
365
|
+
'QPushButton { padding: 0px; border: 1px solid palette(mid); border-radius: 3px;'
|
|
366
|
+
' font-size: 15px; min-width: 24px; max-width: 24px; min-height: 24px; max-height: 24px;'
|
|
367
|
+
' color: palette(mid); background: transparent; }'
|
|
368
|
+
'QPushButton:hover { border-color: #569cd6; color: #569cd6; }'
|
|
369
|
+
'QPushButton:pressed { background: rgba(86, 156, 214, 0.15); }'
|
|
370
|
+
'QPushButton:disabled { color: palette(dark); border-color: palette(dark); background: transparent; }'
|
|
371
|
+
)
|
|
372
|
+
"""One-shot check-for-updates icon button used in the plugin provider header."""
|
|
356
373
|
|
|
357
374
|
PLUGIN_UPDATE_STYLE = (
|
|
358
375
|
'QPushButton { padding: 2px 8px; border: 1px solid palette(mid); border-radius: 3px;'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/__init__.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/bootstrap.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/config_store.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/data.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/debug.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/icon.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/init.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/instance.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/schema.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/card.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/screen/tray.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/application/update_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/operations/__init__.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/operations/bootstrap.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/operations/config.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/operations/install.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/operations/project.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/operations/schema.py
RENAMED
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/operations/update.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/synodic_client/subprocess_patch.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/operations/test_config.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/operations/test_install.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/operations/test_install_plan.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/operations/test_project.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/operations/test_tool.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/operations/test_update.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_gather_packages.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_install_preview.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_package_state.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_preview_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_tray_window_show.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_update_banner.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_update_controller.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/qt/test_update_feedback.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/windows/test_protocol.py
RENAMED
|
File without changes
|
{synodic_client-0.0.1.dev79 → synodic_client-0.0.1.dev80}/tests/unit/windows/test_startup.py
RENAMED
|
File without changes
|