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).
120 lines
3.2 KiB
XML
120 lines
3.2 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<ui version="4.0">
|
|
<class>DependencyResolutionDialog</class>
|
|
<widget class="QDialog" name="DependencyResolutionDialog">
|
|
<property name="windowModality">
|
|
<enum>Qt::WindowModal</enum>
|
|
</property>
|
|
<property name="geometry">
|
|
<rect>
|
|
<x>0</x>
|
|
<y>0</y>
|
|
<width>455</width>
|
|
<height>260</height>
|
|
</rect>
|
|
</property>
|
|
<property name="windowTitle">
|
|
<string>Resolve Dependencies</string>
|
|
</property>
|
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
|
<item>
|
|
<widget class="QLabel" name="label">
|
|
<property name="text">
|
|
<string>This Addon has the following required and optional dependencies. You must install them before this Addon can be used.
|
|
|
|
Do you want the Addon Manager to install them automatically? Choose "Ignore" to install the Addon without installing the dependencies.</string>
|
|
</property>
|
|
<property name="wordWrap">
|
|
<bool>true</bool>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
<item>
|
|
<widget class="QGroupBox" name="groupBox">
|
|
<property name="title">
|
|
<string>FreeCAD Addons</string>
|
|
</property>
|
|
<layout class="QVBoxLayout" name="verticalLayout">
|
|
<item>
|
|
<widget class="QListWidget" name="listWidgetAddons"/>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QGroupBox" name="groupBox_2">
|
|
<property name="title">
|
|
<string>Required Python modules</string>
|
|
</property>
|
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
|
<item>
|
|
<widget class="QListWidget" name="listWidgetPythonRequired"/>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QGroupBox" name="groupBox_3">
|
|
<property name="title">
|
|
<string>Optional Python modules</string>
|
|
</property>
|
|
<layout class="QVBoxLayout" name="verticalLayout_4">
|
|
<item>
|
|
<widget class="QListWidget" name="listWidgetPythonOptional"/>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<widget class="QDialogButtonBox" name="buttonBox">
|
|
<property name="orientation">
|
|
<enum>Qt::Horizontal</enum>
|
|
</property>
|
|
<property name="standardButtons">
|
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ignore|QDialogButtonBox::Yes</set>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
<resources/>
|
|
<connections>
|
|
<connection>
|
|
<sender>buttonBox</sender>
|
|
<signal>accepted()</signal>
|
|
<receiver>DependencyResolutionDialog</receiver>
|
|
<slot>accept()</slot>
|
|
<hints>
|
|
<hint type="sourcelabel">
|
|
<x>248</x>
|
|
<y>254</y>
|
|
</hint>
|
|
<hint type="destinationlabel">
|
|
<x>157</x>
|
|
<y>274</y>
|
|
</hint>
|
|
</hints>
|
|
</connection>
|
|
<connection>
|
|
<sender>buttonBox</sender>
|
|
<signal>rejected()</signal>
|
|
<receiver>DependencyResolutionDialog</receiver>
|
|
<slot>reject()</slot>
|
|
<hints>
|
|
<hint type="sourcelabel">
|
|
<x>316</x>
|
|
<y>260</y>
|
|
</hint>
|
|
<hint type="destinationlabel">
|
|
<x>286</x>
|
|
<y>274</y>
|
|
</hint>
|
|
</hints>
|
|
</connection>
|
|
</connections>
|
|
</ui>
|