mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-11-04 00:04:25 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			223 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			223 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/************************************************************************
 | 
						|
 * This file has been generated automatically from                      *
 | 
						|
 *                                                                      *
 | 
						|
 * src/core/qgspathresolver.h                                           *
 | 
						|
 *                                                                      *
 | 
						|
 * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 | 
						|
 ************************************************************************/
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
class QgsPathResolver
 | 
						|
{
 | 
						|
%Docstring(signature="appended")
 | 
						|
Resolves relative paths into absolute paths and vice versa.
 | 
						|
 | 
						|
Used for writing and reading paths for projects.
 | 
						|
%End
 | 
						|
 | 
						|
%TypeHeaderCode
 | 
						|
#include "qgspathresolver.h"
 | 
						|
%End
 | 
						|
  public:
 | 
						|
    explicit QgsPathResolver( const QString &baseFileName = QString(), const QString &attachmentDir = QString() );
 | 
						|
%Docstring
 | 
						|
Initialize path resolver with a base filename. Null filename means no
 | 
						|
conversion between relative/absolute path
 | 
						|
%End
 | 
						|
 | 
						|
    QString writePath( const QString &filename ) const;
 | 
						|
%Docstring
 | 
						|
Prepare a filename to save it to the project file. Creates an absolute
 | 
						|
or relative path according to the project settings. Paths written to the
 | 
						|
project file should be prepared with this method.
 | 
						|
%End
 | 
						|
 | 
						|
    QString readPath( const QString &filename ) const;
 | 
						|
%Docstring
 | 
						|
Turn filename read from the project file to an absolute path
 | 
						|
%End
 | 
						|
 | 
						|
 | 
						|
    static QString setPathPreprocessor( SIP_PYCALLABLE / AllowNone / );
 | 
						|
%Docstring
 | 
						|
Sets a path pre-processor function, which allows for manipulation of
 | 
						|
paths and data sources prior to resolving them to file references or
 | 
						|
layer sources.
 | 
						|
 | 
						|
The ``processor`` function must accept a single string argument
 | 
						|
(representing the original file path or data source), and return a
 | 
						|
processed version of this path.
 | 
						|
 | 
						|
The path pre-processor function is called before any bad layer handler.
 | 
						|
 | 
						|
If multiple preprocessors are set, they will be called in sequence based
 | 
						|
on the order in which they were originally set.
 | 
						|
 | 
						|
Example - replace an outdated folder path with a new one:
 | 
						|
 | 
						|
.. code-block:: python
 | 
						|
 | 
						|
       def my_processor(path):
 | 
						|
          return path.replace('c:/Users/ClintBarton/Documents/Projects', 'x:/Projects/')
 | 
						|
 | 
						|
       QgsPathResolver.setPathPreprocessor(my_processor)
 | 
						|
 | 
						|
Example - replace a stored database host with a new one:
 | 
						|
 | 
						|
.. code-block:: python
 | 
						|
 | 
						|
       def my_processor(path):
 | 
						|
          return path.replace('host=10.1.1.115', 'host=10.1.1.116')
 | 
						|
 | 
						|
       QgsPathResolver.setPathPreprocessor(my_processor)
 | 
						|
 | 
						|
Example - replace stored database credentials with new ones:
 | 
						|
 | 
						|
.. code-block:: python
 | 
						|
 | 
						|
       def my_processor(path):
 | 
						|
          path = path.replace("user='gis_team'", "user='team_awesome'")
 | 
						|
          path = path.replace("password='cats'", "password='g7as!m*'")
 | 
						|
          return path
 | 
						|
 | 
						|
       QgsPathResolver.setPathPreprocessor(my_processor)
 | 
						|
 | 
						|
.. versionadded:: 3.10
 | 
						|
%End
 | 
						|
%MethodCode
 | 
						|
    PyObject *s = 0;
 | 
						|
    QString id;
 | 
						|
    Py_XINCREF( a0 );
 | 
						|
    Py_BEGIN_ALLOW_THREADS
 | 
						|
    id = QgsPathResolver::setPathPreprocessor( [a0]( const QString &arg )->QString
 | 
						|
    {
 | 
						|
      QString res;
 | 
						|
      SIP_BLOCK_THREADS
 | 
						|
      PyObject *s = sipCallMethod( NULL, a0, "D", &arg, sipType_QString, NULL );
 | 
						|
      int state;
 | 
						|
      int sipIsError = 0;
 | 
						|
      QString *t1 = reinterpret_cast<QString *>( sipConvertToType( s, sipType_QString, 0, SIP_NOT_NONE, &state, &sipIsError ) );
 | 
						|
      if ( sipIsError == 0 )
 | 
						|
      {
 | 
						|
        res = QString( *t1 );
 | 
						|
      }
 | 
						|
      sipReleaseType( t1, sipType_QString, state );
 | 
						|
      SIP_UNBLOCK_THREADS
 | 
						|
      return res;
 | 
						|
    } );
 | 
						|
 | 
						|
    Py_END_ALLOW_THREADS
 | 
						|
    s = sipConvertFromNewType( new QString( id ), sipType_QString, 0 );
 | 
						|
    return s;
 | 
						|
%End
 | 
						|
 | 
						|
 | 
						|
    static void removePathPreprocessor( const QString &id );
 | 
						|
%Docstring
 | 
						|
Removes the custom pre-processor function with matching ``id``.
 | 
						|
 | 
						|
The ``id`` must correspond to a pre-processor previously added via a
 | 
						|
call to :py:func:`~QgsPathResolver.setPathPreprocessor`.
 | 
						|
 | 
						|
:raises KeyError: if no processor with the specified ``id`` exists.
 | 
						|
 | 
						|
.. seealso:: :py:func:`setPathPreprocessor`
 | 
						|
 | 
						|
.. versionadded:: 3.10
 | 
						|
%End
 | 
						|
%MethodCode
 | 
						|
    if ( !QgsPathResolver::removePathPreprocessor( *a0 ) )
 | 
						|
    {
 | 
						|
      PyErr_SetString( PyExc_KeyError, QStringLiteral( "No processor with id %1 exists." ).arg( *a0 ).toUtf8().constData() );
 | 
						|
      sipIsErr = 1;
 | 
						|
    }
 | 
						|
%End
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    static QString setPathWriter( SIP_PYCALLABLE / AllowNone / );
 | 
						|
%Docstring
 | 
						|
Sets a path writer function, which allows for manipulation of paths and
 | 
						|
data sources prior to writing them to the project file.
 | 
						|
 | 
						|
The ``writer`` function must accept a single string argument
 | 
						|
(representing the original file path or data source), and return a
 | 
						|
processed version of this path.
 | 
						|
 | 
						|
The path writer function is called before any bad layer handler.
 | 
						|
 | 
						|
If multiple writers are set, they will be called in sequence based on
 | 
						|
the order in which they were originally set.
 | 
						|
 | 
						|
Example - replace path with a variable:
 | 
						|
 | 
						|
.. code-block:: python
 | 
						|
 | 
						|
       def my_processor(path):
 | 
						|
          return path.replace('c:/Users/ClintBarton/Documents/Projects', '$projectdir$')
 | 
						|
 | 
						|
       QgsPathResolver.setPathWriter(my_processor)
 | 
						|
 | 
						|
.. versionadded:: 3.22
 | 
						|
%End
 | 
						|
%MethodCode
 | 
						|
    PyObject *s = 0;
 | 
						|
    QString id;
 | 
						|
    Py_XINCREF( a0 );
 | 
						|
    Py_BEGIN_ALLOW_THREADS
 | 
						|
    id = QgsPathResolver::setPathWriter( [a0]( const QString &arg )->QString
 | 
						|
    {
 | 
						|
      QString res;
 | 
						|
      SIP_BLOCK_THREADS
 | 
						|
      PyObject *s = sipCallMethod( NULL, a0, "D", &arg, sipType_QString, NULL );
 | 
						|
      int state;
 | 
						|
      int sipIsError = 0;
 | 
						|
      QString *t1 = reinterpret_cast<QString *>( sipConvertToType( s, sipType_QString, 0, SIP_NOT_NONE, &state, &sipIsError ) );
 | 
						|
      if ( sipIsError == 0 )
 | 
						|
      {
 | 
						|
        res = QString( *t1 );
 | 
						|
      }
 | 
						|
      sipReleaseType( t1, sipType_QString, state );
 | 
						|
      SIP_UNBLOCK_THREADS
 | 
						|
      return res;
 | 
						|
    } );
 | 
						|
 | 
						|
    Py_END_ALLOW_THREADS
 | 
						|
    s = sipConvertFromNewType( new QString( id ), sipType_QString, 0 );
 | 
						|
    return s;
 | 
						|
%End
 | 
						|
 | 
						|
 | 
						|
    static void removePathWriter( const QString &id );
 | 
						|
%Docstring
 | 
						|
Removes the custom writer function with matching ``id``.
 | 
						|
 | 
						|
The ``id`` must correspond to a writer previously added via a call to
 | 
						|
:py:func:`~QgsPathResolver.setPathWriter`. An KeyError will be raised if
 | 
						|
no processor with the specified ``id`` exists.
 | 
						|
 | 
						|
.. seealso:: :py:func:`setPathWriter`
 | 
						|
 | 
						|
.. versionadded:: 3.22
 | 
						|
%End
 | 
						|
%MethodCode
 | 
						|
    if ( !QgsPathResolver::removePathWriter( *a0 ) )
 | 
						|
    {
 | 
						|
      PyErr_SetString( PyExc_KeyError, QStringLiteral( "No writer with id %1 exists." ).arg( *a0 ).toUtf8().constData() );
 | 
						|
      sipIsErr = 1;
 | 
						|
    }
 | 
						|
%End
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
/************************************************************************
 | 
						|
 * This file has been generated automatically from                      *
 | 
						|
 *                                                                      *
 | 
						|
 * src/core/qgspathresolver.h                                           *
 | 
						|
 *                                                                      *
 | 
						|
 * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 | 
						|
 ************************************************************************/
 |