Gui: implement a workaround for MSYS2 to access QUiLoader via its Python interface
This commit is contained in:
@@ -3,16 +3,18 @@ EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c
|
||||
OUTPUT_VARIABLE python_libs OUTPUT_STRIP_TRAILING_WHITESPACE )
|
||||
SET(PYTHON_MAIN_DIR ${python_libs})
|
||||
|
||||
set(NAMESPACE_INIT "${CMAKE_BINARY_DIR}/Ext/freecad/__init__.py")
|
||||
set(NAMESPACE_DIR "${CMAKE_BINARY_DIR}/Ext/freecad")
|
||||
set(NAMESPACE_INIT "${NAMESPACE_DIR}/__init__.py")
|
||||
if (WIN32)
|
||||
get_filename_component(FREECAD_LIBRARY_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}"
|
||||
get_filename_component(FREECAD_LIBRARY_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}"
|
||||
REALPATH BASE_DIR "${CMAKE_INSTALL_PREFIX}")
|
||||
set( ${CMAKE_INSTALL_BINDIR})
|
||||
set( ${CMAKE_INSTALL_BINDIR})
|
||||
else()
|
||||
set(FREECAD_LIBRARY_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR})
|
||||
set(FREECAD_LIBRARY_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
|
||||
configure_file(__init__.py.template ${NAMESPACE_INIT})
|
||||
configure_file(UiTools.py ${NAMESPACE_DIR}/UiTools.py)
|
||||
|
||||
if (INSTALL_TO_SITEPACKAGES)
|
||||
SET(SITE_PACKAGE_DIR ${PYTHON_MAIN_DIR}/freecad)
|
||||
@@ -23,6 +25,7 @@ endif()
|
||||
INSTALL(
|
||||
FILES
|
||||
${NAMESPACE_INIT}
|
||||
UiTools.py
|
||||
DESTINATION
|
||||
${SITE_PACKAGE_DIR}
|
||||
)
|
||||
|
||||
21
src/Ext/freecad/UiTools.py
Normal file
21
src/Ext/freecad/UiTools.py
Normal file
@@ -0,0 +1,21 @@
|
||||
# (c) 2021 Werner Mayer LGPL
|
||||
|
||||
from PySide2 import QtUiTools
|
||||
from PySide2 import QtCore
|
||||
import FreeCADGui as Gui
|
||||
|
||||
|
||||
class QUiLoader(QtUiTools.QUiLoader):
|
||||
"""
|
||||
This is an extension of Qt's QUiLoader to also create custom widgets
|
||||
"""
|
||||
def __init__(self, arg = None):
|
||||
super(QUiLoader, self).__init__(arg)
|
||||
self.ui = Gui.PySideUic
|
||||
|
||||
def createWidget(self, className, parent = None, name = ""):
|
||||
widget = self.ui.createCustomWidget(className, parent, name)
|
||||
if not widget:
|
||||
widget = super(QUiLoader, self).createWidget(className, parent, name)
|
||||
return widget
|
||||
|
||||
Reference in New Issue
Block a user