Commit Graph

68 Commits

Author SHA1 Message Date
Pesc0
be6ed4670b addon manager: use get_python_exe from utils file 2023-11-17 02:00:25 +01:00
Adrian Insaurralde Avalos
4226c140ad AddonManager: handle the case of symlinked addon when uninstalling
see #11045
2023-10-16 22:50:31 -05:00
Chris Hennes
c7d28731bd Addon Manager: Fix #9828, hang on no internet 2023-07-13 14:15:29 -05:00
Chris Hennes
e90ecc27ff Addon Manager: Minor error handling cleanup 2023-05-21 15:50:29 -05:00
Chris Hennes
8b31d7deb0 Addon Manager: Black and lint 2023-03-31 13:46:13 -05:00
luzpaz
ff470469f5 Fix misc. grammar and whitespace 2023-03-13 15:01:05 +01:00
Chris Hennes
1f6c364fa6 Addon Manager: Refactor Metadata
Create a Python-native metadata class. Includes unit tests, and some PyLint cleanup.
2023-03-10 14:25:50 -06:00
Chris Hennes
543a99acd2 Addon Manager: Linter cleanup of utilities 2023-02-24 21:58:55 -06:00
Chris Hennes
eeb481207f Addon Manager: Fix bug in dependency installer 2023-02-21 13:33:20 -06:00
Chris Hennes
3826042529 Addon Manager: pylint cleanup of devmode 2023-02-21 12:11:35 -06:00
Chris Hennes
9c6164bc07 Addon Manager: Add SPDX license ID to all files 2023-02-20 15:39:47 -06:00
Chris Hennes
e188802ca6 Addon Manager: Update license headers 2023-01-28 13:07:29 -07:00
Chris Hennes
b933d46dcd Addon Manager: Set parent for most modals 2023-01-13 12:13:17 -06:00
Chris Hennes
8e38c47d7a Addon Manager: Fix bug in ZIP isntallation 2023-01-09 19:35:18 -06:00
Chris Hennes
95f474a86a Addon Manager: Update to Python 3.8 2022-12-17 20:05:32 -06:00
Chris Hennes
89c191e160 Addon Manager: Refactor installation code
Improve testability of installation code by refactoring it to completely
separate the GUI and non-GUI code, and to provide more robust support
for non-GUI access to some type of Addon Manager activity.
2022-12-17 17:49:13 -06:00
Chris Hennes
b407332475 Addon Manager: Qt6 migration part 1, use PySide
Migrate all uses of "import PySide 2" to use "import PySide" so that the
FreeCAD-provided wrappers can switch between Qt versions.
2022-11-06 13:19:36 +01:00
Chris Hennes
9e481f1ac1 Addon Manager: use versioned Python package dirs 2022-11-05 11:45:02 -05:00
Chris Hennes
66766282fa Addon Manager: Use Vermin to detect min Python 2022-09-26 11:04:42 -05:00
Chris Hennes
3a47916d9b Addon Manager: Pylint cleanup of utilities 2022-08-25 09:50:12 -05:00
Chris Hennes
46fc605fca Addon Manager: Refactoring and pylint cleanup 2022-08-21 14:32:15 -05:00
Chris Hennes
4c63094331 Addon Manager: Worker refactor (round 1) 2022-08-09 10:23:26 -05:00
Chris Hennes
b9224cd14b Addon Manager: Utilities pylint cleanup 2022-07-27 11:52:57 -05:00
Chris Hennes
0e2508cca9 Addon Manager: Fix get_zip_url for non-github URLs 2022-07-27 11:46:30 -05:00
Chris Hennes
71285f4266 Addon Manager: Cleanup 2022-07-27 10:49:00 -05:00
Chris Hennes
e415f38fe6 Addon Manager: Add dialog to manage Python deps 2022-07-27 09:59:25 -05:00
Chris Hennes
0d6a506447 Addon Manager: Renaming and cleanup 2022-02-27 22:50:54 -06:00
0penBrain
d7334bda13 AddonManager: improve dark mode heuristic 2022-02-27 18:44:58 -06:00
Chris Hennes
b1d6768d1c Addon Manager: Minor improvements to utilities 2022-02-25 20:41:03 -06:00
Chris Hennes
ef4fdc7ecf Addon Manager: Improve darkmode check 2022-02-24 12:05:08 -06:00
Chris Hennes
781f0bd626 Addon Manager: Improve macro metadata extraction 2022-02-18 17:10:52 -06:00
Chris Hennes
e553a0e3ab Addon Manager: Switch to QWebEngineView for README
Rather than manually parsing the output from the repo's host, the Addon Manager
now uses an embedded QWebEngineView to display the README data. This makes the
display more repo-location agnostic (rather than trying to parse the specific
code from GitHub, Gitlab, etc.). Special handling of known hosts is still
provided to improve the display of the page, but it is not required. Clicking a
link on the page still loads in a new system browser window, with the exception
of links to the FreeCAD wiki, which are loaded in the same browser. This is
expected to be used primarily to access traslated pages for Macros, so no
advanced web-browsing features are displayed (e.g. back buttons, history
access, etc.).
2022-02-02 23:42:29 -06:00
Chris Hennes
88f6b2f432 Addon Manager: Translation cleanup
pylupdate does not extract translations when f-strings are used for the
translated text, so all f-strings are migrated to calls to format().
Several other minor translation issues are also addressed.

NOTE: This code has been run through the Black reformatter, which adds
trailing commas in many places that the stock Qt 5.x pylupdate does not
recognize. This code must be processed with the corrected pylupdate to
generate the correct translations.
2022-01-27 23:11:31 -06:00
Chris Hennes
2b0a4dc643 Addon Manager: Create NetworkManager class
To enable single-login authenticated proxy use, and simplified multi-threaded
network accesses, this commit adds a new wrapper around a QNetworkAccessManager
and includes a global instantiation of the class intended to exist for the
lifetime of the program. This instance can be used to enqueue any number of
network requests, which the manager will send out to the networking subsystem
in an appropriate manner.
2022-01-25 13:30:58 -06:00
Chris Hennes
d1a94de371 Addon manager: install dependencies (#5376)
Addon Manager: Dependency Installation

The Addon Manager can now attempt to use pip directly to install
required packages as specified in either metadata.txt or
requirements.txt files provided by AddOns. The packages are installed
into FreeCAD.getUserAppDataDir()/AdditionalPythonPackages directory.
Only simplified requirements.txt data is supported: any version
information is stripped out, and only packages are supported (that is,
no pip arguments, included files, etc.). Further, packages are checked
against a list of allowed packages prior to being suggested for
installation. Addon authors should submit a PR to the FreeCAD repo
adding their requirements to the allowed list, for packages that are not
already on the list (this is a malware-prevention mechanism).
2022-01-21 10:19:21 -06:00
Chris Hennes
1bfbcb5c95 Addon Manager: Remove progress object from git pull 2022-01-10 10:45:23 -06:00
Chris Hennes
2cbe72aea5 Addon Manager: Display download progress 2022-01-09 00:46:07 -06:00
Chris Hennes
4c9191d489 Addon manager dependency resolver (#5339)
Squashed:
* Addon Manager: Refactor metadata.txt download
* Addon Manager: Basic dependency walker
* Addon Manager: Add basic support for dependencies
* Addon Manager: Improve network detection messaging
* Addon Manager: Black reformat
* Addon Manager: Display dependency info in dialog
* Addon Manager: Dependency dialog added
* Addon Manager: Improve display of update all results
* Addon Manager: Improve display of package list
* Addon Manager: Fix codespell
* Addon Manager: Clean up unused signal
2022-01-07 10:16:44 -06:00
Chris Hennes
f48d79a227 Addon Manager: Improve display of installation details 2022-01-01 11:41:23 -06:00
Chris Hennes
64cf6a68d8 Addon Manager: Remove unused imports 2022-01-01 09:43:06 -06:00
Chris Hennes
024e404a0e Addon Manager: Downgrade failed low-level urlopen to log 2022-01-01 09:16:32 -06:00
Chris Hennes
50336440dc Addon Manager: Add preference to control macro download 2022-01-01 09:16:32 -06:00
Chris Hennes
4c5b8f368c Addon Manager: Implement simple macro metadata cache 2022-01-01 09:16:32 -06:00
Chris Hennes
ae5391eaf9 Addon Manager: Clean up report window output 2021-12-30 20:06:22 -06:00
Chris Hennes
787b1e0f56 Addon Manager: Black reformatting 2021-12-18 20:29:42 -06:00
Chris Hennes
bd6b3eb404 Addon Manager: Bugfixes and cleanup of refactor 2021-12-18 20:29:42 -06:00
Chris Hennes
67f051007e Addon Manager: Add support for salsa.debian.org
The pyrate has moved to salsa.debian.org, so this commit adds the
beginnings of support for those repos.The Markdown library is required
for nice rendering of repos that don't have a package.xml metadata file.
2021-12-18 20:29:42 -06:00
Chris Hennes
768a0f086f Addon Manager: Rework backend to use package.xml
This shifts to use the model-view-controller pattern for the list of addons,
and moves to using a full model class rather than an indexed array for the
data storage and management. This enables much more information to be stored
as part of the new AddonManagerRepo data type. It now wraps the Macro class
for macros, supports Preference Packs, and provides access to the Metadata
object.
2021-12-18 20:29:42 -06:00
Chris Hennes
a44a1ecf12 [Addon Manager] Silence LGTM warnings about urls
The URLs used to detect whether a repo is at github, gitlab, or framagit
could potentially be mis-detected by a maliciously-crafted URL,
resulting in incorrect detection of the README file, etc. To silence the
LGTM warning about this, proper URL sanitization and comparison is now
used.
2021-09-26 20:13:02 -05:00
Yorik van Havre
213bef18f4 AddonManager: Fixed path of gitlab readme 2021-09-17 15:47:00 +02:00