Commit Graph

49 Commits

Author SHA1 Message Date
Chris Hennes
4067cdb672 Addon Manager: Refactor primary view and enable composite (#12693)
* Addon Manager: Refactor primary view and enable composite

This brings back something akin to the original Addon Manager display, with the side-by-side display of the list and details views.
2024-03-04 08:56:55 -06:00
Chris Hennes
81d77fdb4b Addon Manager: Break up ReadmeViewer into view and controller
Addon Manager: Cleanup enable/disable message
2024-02-11 17:19:22 -06:00
Chris Hennes
9e535d21a2 Addon Manager: Add support for license exclusion 2024-02-11 17:19:22 -06:00
Chris Hennes
7b751ebb37 Addon Manager: Refactor main GUI area 2024-02-11 17:19:22 -06:00
Chris Hennes
a1f31282fd Addon Manager: Replace QtWebEngine with QTextBrowser
Macro display is still a work-in-progress.
2024-01-24 10:42:40 -06:00
Chris Hennes
92016c4c9c Addon Manager: Refactor local cache update check 2023-09-04 19:13:18 -05:00
Chris Hennes
d8e6260d61 Addon Manager: Extract PySide QtCore interface 2023-03-26 18:45:01 -05:00
Chris Hennes
0b241f78f4 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
7894ed9084 Addon Manager: Refactor interface to FreeCAD 2023-02-19 15:49:24 -06:00
Chris Hennes
f83abbab4c Addon Manager: Refactor Macro parser 2023-02-13 23:46:57 -06:00
Chris Hennes
2cef6d6cf4 Addon Manager: Add data for integration tests 2023-02-10 16:19:17 -07:00
Chris Hennes
9f64beb73f AddonManager: Refactor uninstaller GUI
Offload uninstaller GUI into its own class, add tests for that class, and do
some additional minor cleanup of AddonManager.py.
2022-12-18 22:15:40 -06:00
Chris Hennes
2adbcc9199 Addon Manager: Create new uninstaller 2022-12-18 22:15:40 -06:00
Chris Hennes
611e13305b 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
74d85eeeaa Addon Manager: Refactor to extract metadata checker 2022-11-11 21:50:16 -06:00
Chris Hennes
74a8d3deec Addon Manager: Refactor to extract connection check GUI 2022-11-10 21:09:47 -06:00
Chris Hennes
96a953a331 Addon Manager: Refactor to extract first run dialog 2022-11-10 09:42:59 -06:00
Chris Hennes
21c360248f Addon Manager: Switch custom repo prefs to a table 2022-09-20 15:59:17 -05:00
Chris Hennes
0d8b4df3ef Addon Manager: Migrate to managed pref page class 2022-09-20 15:59:17 -05:00
Chris Hennes
53a642db40 Addon Manager: Cleanup 2022-09-09 13:00:11 -05:00
Chris Hennes
b3dd3b6d00 Addon Manager: Refactor Licenses and People tables 2022-09-09 13:00:11 -05:00
Chris Hennes
9348486a1f Addon Manager: DevMode content implementation 2022-09-09 13:00:10 -05:00
Chris Hennes
5087b6ca5c Addon Manager: Implement content addition dialogs 2022-09-09 13:00:10 -05:00
Chris Hennes
669d0ac13b Addon Manager: Add person editor 2022-09-09 13:00:10 -05:00
Chris Hennes
5afdfea01b Addon Manager: Add license selector 2022-09-09 13:00:10 -05:00
Chris Hennes
2524e8081a Addon Manager: Sketch out basics of Developer Mode 2022-09-09 13:00:10 -05:00
Chris Hennes
0b8f68cd44 AddonManager: Refactoring of installer 2022-08-24 12:24:38 -05:00
Chris Hennes
723fecc6f8 Addon Manager: Create new git handling mechanism 2022-08-21 14:32:15 -05:00
Chris Hennes
2e51954b2b Addon Manager: Worker refactor (round 1) 2022-08-09 10:23:26 -05:00
Chris Hennes
044b7ed744 Addon Manager: Add dialog to manage Python deps 2022-07-27 09:59:25 -05:00
Chris Hennes
f4a51f3788 Addon Manager: Begin Macro unit tests 2022-03-09 12:14:57 -06:00
Chris Hennes
bbfc77f167 Addon Manager: Add unit tests for dependencies 2022-03-08 19:15:01 -06:00
Chris Hennes
47a6f444bc Addon Manager: Add unit tests for Addon class 2022-03-05 10:17:50 -06:00
Chris Hennes
bf77a95e5c Addon Manager: Add tests for Addon 2022-02-27 23:32:33 -06:00
Chris Hennes
17aed10f6f Addon Manager: Renaming and cleanup 2022-02-27 22:50:54 -06:00
Chris Hennes
2b637a36f7 Addon Manager: Auto-create toolbar button
When installing a macro, prompt user to install a toolbar button
automatically. Fills in the details of the button using the macro's
metadata, including an icon if the __icon__ metadata variable points to
a file.

Also:
* Support XPM data for macro icon
* Support online icons
* Fix bug in macro uninstall
* Cleaned up macro code
2022-02-26 21:06:37 -06:00
Chris Hennes
386f68aa81 Addon Manager: Add unit test framework
Adds the framework for unit testing, and a few tests of the utilities functions.
2022-02-25 23:17:59 -06:00
Chris Hennes
f19f4e65b2 Addon Manager: Add branch switching GUI
For users with git and GitPython installed, a new button is added to the
details view allowing them to change the branch they are on. Some other
minor UI changes are made to accomodate this new behavior.
2022-02-13 20:19:32 -06:00
Chris Hennes
994071c43b 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
e9d6a2c4a4 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
8d96cadb69 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
ad2169e5ae 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
f5f78670dd Addon Manager: Add preference to control macro download 2022-01-01 09:16:32 -06:00
Chris Hennes
e42eec2558 Addon Manager: Begin UI redesign
Migrate to a UI that looks more like other software package managers, giving
more space to each addon by hiding the list when an addon is selected, and
providing a "back" button to get back.

Implements a two-style view option for the list of addons: expanded and
condensed, via a delegate that provides the drawing function for each row in
the table based on two different widget designs.
2021-12-18 20:29:42 -06:00
Chris Hennes
a225695dd8 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
Yorik van Havre
16949b38cb AddonManager: Use workbenches icons 2019-06-15 23:50:41 -03:00
Yorik van Havre
ab68749909 AddonManager: New UI 2019-06-11 17:06:11 -03:00
Yorik van Havre
dc50823f5f AddonManager: Fixed missing files in cmake 2018-10-25 12:02:46 -03:00
Kurt Kremitzki
fed542da9e Add Addon Manager to Tools menu 2017-02-02 11:20:41 +01:00