QGIS/python/3d/project.py.in
Nyall Dawson da317dd8de
Fix PyQGIS 3D module patching
The module patching for _3d was not working at all, because
the same logic which works for other modules with a private _module
copy clashed with the approach of exposing the public 3d module
as qgis._3d

Work around this by renaming the private internal module as _3d_p,
so that the monkey patching logic from sip is correctly run
when the module is loaded.

Fixes broken API in 3d module for renamed enums, and fixes the
broken PyQGIS doc for the 3d module
2024-08-30 11:57:42 +10:00

52 lines
1.6 KiB
Python

import os
from pyqtbuild import PyQtBindings, PyQtProject
from sipbuild import Option
class QGIS(PyQtProject):
""" The QGIS project. """
def __init__(self):
""" Initialize the project. """
super().__init__()
self.sip_files_dir = '.'
self.bindings_factories = [Qgis3D]
def get_options(self):
""" Return the list of configurable options. """
options = super().get_options()
options.append(
Option('include_dirs', option_type=list,
help="additional directory to search for .sip files",
metavar="DIR"))
return options
def apply_user_defaults(self, tool):
""" Set default values for user options that haven't been set yet. """
super().apply_user_defaults(tool)
if self.include_dirs is not None:
self.sip_include_dirs += self.include_dirs
class Qgis3D(PyQtBindings):
""" The QGIS 3D bindings. """
def __init__(self, project):
""" Initialize the bindings. """
super().__init__(project, '3d_p')
self.sip_file = '3d.sip'
self.exceptions = True
self.release_gil = True
self.disabled_features = "@SIP_DISABLE_FEATURES@".split(";")
def apply_user_defaults(self, tool):
""" Set default values for user options that haven't been set yet. """
if self.project.py_platform.startswith('win32'):
self.tags.append('WS_WIN')
elif self.project.py_platform == 'darwin':
self.tags.append('WS_MACX')
else:
self.tags.append('WS_X11')
super().apply_user_defaults(tool)