mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-11-04 00:04:25 -05:00 
			
		
		
		
	sip files and some improvements
like make a list copy before go through for loop and log messages
This commit is contained in:
		
							parent
							
								
									e8e48abae2
								
							
						
					
					
						commit
						442c7323f7
					
				@ -808,6 +808,13 @@ The maximum number of concurrent connections per connections pool.
 | 
			
		||||
   QGIS may in some situations allocate more than this amount
 | 
			
		||||
   of connections to avoid deadlocks.
 | 
			
		||||
 | 
			
		||||
.. versionadded:: 3.4
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
    void collectTranslatableObjects( QgsTranslationContext *translationContext );
 | 
			
		||||
%Docstring
 | 
			
		||||
Emits the signal to collect all the strings of .qgs to be included in ts file
 | 
			
		||||
 | 
			
		||||
.. versionadded:: 3.4
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -13,7 +13,7 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class QgsProject : QObject, QgsExpressionContextGenerator
 | 
			
		||||
class QgsProject : QObject, QgsExpressionContextGenerator, QgsProjectTranslator
 | 
			
		||||
{
 | 
			
		||||
%Docstring
 | 
			
		||||
Reads and writes project states.
 | 
			
		||||
@ -135,6 +135,14 @@ Returns last modified time of the project file as returned by the file system (o
 | 
			
		||||
Returns full absolute path to the project file if the project is stored in a file system - derived from fileName().
 | 
			
		||||
Returns empty string when the project is stored in a project storage (there is no concept of paths for custom project storages).
 | 
			
		||||
 | 
			
		||||
.. versionadded:: 3.2
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
    QString absolutePath() const;
 | 
			
		||||
%Docstring
 | 
			
		||||
Returns full absolute path to the project folder if the project is stored in a file system - derived from fileName().
 | 
			
		||||
Returns empty string when the project is stored in a project storage (there is no concept of paths for custom project storages).
 | 
			
		||||
 | 
			
		||||
.. versionadded:: 3.2
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
@ -983,6 +991,28 @@ and it is mainly a hint for the user interface to protect users from removing la
 | 
			
		||||
in the project. The removeMapLayer(), removeMapLayers() calls do not block removal of layers listed here.
 | 
			
		||||
 | 
			
		||||
.. versionadded:: 3.2
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
    void generateTsFile( const QString &locale );
 | 
			
		||||
%Docstring
 | 
			
		||||
Triggers the collection strings of .qgs to be included in ts file and calls writeTsFile()
 | 
			
		||||
 | 
			
		||||
.. versionadded:: 3.4
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
    virtual QString translate( const QString &context, const QString &sourceText, const char *disambiguation = 0, int n = -1 ) const;
 | 
			
		||||
 | 
			
		||||
%Docstring
 | 
			
		||||
Translates the project with QTranslator and qm file
 | 
			
		||||
 | 
			
		||||
:return: the result string (in case there is no QTranslator loaded the sourceText)
 | 
			
		||||
 | 
			
		||||
:param context: describing layer etc.
 | 
			
		||||
:param sourceText: is the identifier of this text
 | 
			
		||||
:param disambiguation: it's the disambiguation
 | 
			
		||||
:param n: if -1 uses the appropriate form
 | 
			
		||||
 | 
			
		||||
.. versionadded:: 3.4
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
  signals:
 | 
			
		||||
@ -997,7 +1027,7 @@ just before a new project is read).
 | 
			
		||||
.. versionadded:: 3.2
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
    void readProject( const QDomDocument & );
 | 
			
		||||
    void readProject( const QDomDocument &, QgsReadWriteContext &context );
 | 
			
		||||
%Docstring
 | 
			
		||||
Emitted when a project is being read.
 | 
			
		||||
%End
 | 
			
		||||
@ -1335,6 +1365,27 @@ home path will be automatically determined from the project's file path.
 | 
			
		||||
.. seealso:: :py:func:`homePathChanged`
 | 
			
		||||
 | 
			
		||||
.. versionadded:: 3.2
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
    void registerTranslatableContainers( QgsTranslationContext *translationContext, QgsAttributeEditorContainer *parent, const QString &layerId );
 | 
			
		||||
%Docstring
 | 
			
		||||
Registers the translatable containers into the tranlation context
 | 
			
		||||
this is a rekursive function to get all the child containers
 | 
			
		||||
 | 
			
		||||
:param translationContext: where the objects will be registered
 | 
			
		||||
:param parent: parent-container containing list of children
 | 
			
		||||
 | 
			
		||||
.. versionadded:: 3.4
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
    void registerTranslatableObjects( QgsTranslationContext *translationContext );
 | 
			
		||||
%Docstring
 | 
			
		||||
Registers the translatable objects into the tranlation context
 | 
			
		||||
so there can be created a ts file these values
 | 
			
		||||
 | 
			
		||||
:param translationContext: where the objects will be registered
 | 
			
		||||
 | 
			
		||||
.. versionadded:: 3.4
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										41
									
								
								python/core/auto_generated/qgsprojecttranslator.sip.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								python/core/auto_generated/qgsprojecttranslator.sip.in
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,41 @@
 | 
			
		||||
/************************************************************************
 | 
			
		||||
 * This file has been generated automatically from                      *
 | 
			
		||||
 *                                                                      *
 | 
			
		||||
 * src/core/qgsprojecttranslator.h                                      *
 | 
			
		||||
 *                                                                      *
 | 
			
		||||
 * Do not edit manually ! Edit header and run scripts/sipify.pl again   *
 | 
			
		||||
 ************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class QgsProjectTranslator
 | 
			
		||||
{
 | 
			
		||||
%Docstring
 | 
			
		||||
This abstract class is to call translate() for project data from wherever QgsReadWriteContext is available.
 | 
			
		||||
 | 
			
		||||
.. versionadded:: 3.4
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
%TypeHeaderCode
 | 
			
		||||
#include "qgsprojecttranslator.h"
 | 
			
		||||
%End
 | 
			
		||||
  public:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    virtual QString translate( const QString &context, const QString &sourceText, const char *disambiguation = 0, int n = -1 ) const = 0;
 | 
			
		||||
%Docstring
 | 
			
		||||
This method needs to be reimplemented in all classes which implement this interface
 | 
			
		||||
 | 
			
		||||
.. versionadded:: 3.4
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
    virtual ~QgsProjectTranslator();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/************************************************************************
 | 
			
		||||
 * This file has been generated automatically from                      *
 | 
			
		||||
 *                                                                      *
 | 
			
		||||
 * src/core/qgsprojecttranslator.h                                      *
 | 
			
		||||
 *                                                                      *
 | 
			
		||||
 * Do not edit manually ! Edit header and run scripts/sipify.pl again   *
 | 
			
		||||
 ************************************************************************/
 | 
			
		||||
@ -98,7 +98,21 @@ Returns the stored messages and remove them
 | 
			
		||||
.. versionadded:: 3.2
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
    const QgsProjectTranslator *projectTranslator( ) const;
 | 
			
		||||
%Docstring
 | 
			
		||||
Returns the project translator
 | 
			
		||||
 | 
			
		||||
.. versionadded:: 3.4
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
    void setProjectTranslator( QgsProjectTranslator *projectTranslator );
 | 
			
		||||
%Docstring
 | 
			
		||||
Sets the project translator
 | 
			
		||||
 | 
			
		||||
.. versionadded:: 3.4
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
      public:
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -35,11 +35,12 @@ class QgsRelation
 | 
			
		||||
Default constructor. Creates an invalid relation.
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
    static QgsRelation createFromXml( const QDomNode &node );
 | 
			
		||||
    static QgsRelation createFromXml( const QDomNode &node, QgsReadWriteContext &context );
 | 
			
		||||
%Docstring
 | 
			
		||||
Creates a relation from an XML structure. Used for reading .qgs projects.
 | 
			
		||||
 | 
			
		||||
:param node: The dom node containing the relation information
 | 
			
		||||
:param context: to pass project translator
 | 
			
		||||
 | 
			
		||||
:return: A relation
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										79
									
								
								python/core/auto_generated/qgstranslationcontext.sip.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								python/core/auto_generated/qgstranslationcontext.sip.in
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,79 @@
 | 
			
		||||
/************************************************************************
 | 
			
		||||
 * This file has been generated automatically from                      *
 | 
			
		||||
 *                                                                      *
 | 
			
		||||
 * src/core/qgstranslationcontext.h                                     *
 | 
			
		||||
 *                                                                      *
 | 
			
		||||
 * Do not edit manually ! Edit header and run scripts/sipify.pl again   *
 | 
			
		||||
 ************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class QgsTranslationContext
 | 
			
		||||
{
 | 
			
		||||
%Docstring
 | 
			
		||||
used for the collecting of strings of .qgs to be translated and writing of ts file
 | 
			
		||||
 | 
			
		||||
.. versionadded:: 3.4
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
%TypeHeaderCode
 | 
			
		||||
#include "qgstranslationcontext.h"
 | 
			
		||||
%End
 | 
			
		||||
  public:
 | 
			
		||||
 | 
			
		||||
    QgsTranslationContext( );
 | 
			
		||||
%Docstring
 | 
			
		||||
Constructor
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
    QgsProject *project() const;
 | 
			
		||||
%Docstring
 | 
			
		||||
Returns the project
 | 
			
		||||
 | 
			
		||||
.. seealso:: :py:func:`setProject`
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
    void setProject( QgsProject *project );
 | 
			
		||||
%Docstring
 | 
			
		||||
Sets the ``project`` where the translation need to be done for
 | 
			
		||||
 | 
			
		||||
.. seealso:: :py:func:`project`
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
    QString fileName() const;
 | 
			
		||||
%Docstring
 | 
			
		||||
Returns the TS fileName
 | 
			
		||||
 | 
			
		||||
.. seealso:: :py:func:`setFileName`
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
    void setFileName( const QString &fileName );
 | 
			
		||||
%Docstring
 | 
			
		||||
Sets the ``name`` of the TS file
 | 
			
		||||
 | 
			
		||||
.. seealso:: :py:func:`fileName`
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
    void registerTranslation( const QString &context, const QString &source );
 | 
			
		||||
%Docstring
 | 
			
		||||
Registers the ``string`` to be translated
 | 
			
		||||
 | 
			
		||||
:param translationString: name and path of the object need to be translated
 | 
			
		||||
:param layerName: the name of the layer
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
    void writeTsFile( const QString &locale );
 | 
			
		||||
%Docstring
 | 
			
		||||
Writes the Ts-file
 | 
			
		||||
%End
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/************************************************************************
 | 
			
		||||
 * This file has been generated automatically from                      *
 | 
			
		||||
 *                                                                      *
 | 
			
		||||
 * src/core/qgstranslationcontext.h                                     *
 | 
			
		||||
 *                                                                      *
 | 
			
		||||
 * Do not edit manually ! Edit header and run scripts/sipify.pl again   *
 | 
			
		||||
 ************************************************************************/
 | 
			
		||||
@ -830,7 +830,6 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas *mapCanvas, QWidget *pa
 | 
			
		||||
  connect( mMetadataWidget, &QgsMetadataWidget::titleChanged, titleEdit, &QLineEdit::setText );
 | 
			
		||||
  connect( titleEdit, &QLineEdit::textChanged, mMetadataWidget, &QgsMetadataWidget::setTitle );
 | 
			
		||||
 | 
			
		||||
  //fill ts language checkbox
 | 
			
		||||
  //fill ts language checkbox
 | 
			
		||||
  QString i18nPath = QgsApplication::i18nPath();
 | 
			
		||||
  QDir i18Dir( i18nPath, QStringLiteral( "qgis*.qm" ) );
 | 
			
		||||
@ -845,10 +844,10 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas *mapCanvas, QWidget *pa
 | 
			
		||||
 | 
			
		||||
    // QTBUG-57802: eo locale is improperly handled
 | 
			
		||||
    QString displayName = l.startsWith( QLatin1String( "eo" ) ) ? QLocale::languageToString( QLocale::Esperanto ) : QLocale( l ).nativeLanguageName();
 | 
			
		||||
    cbtsLocale->addItem( QIcon( QString( ":/images/flags/%1.svg" ).arg( l ) ), displayName, l );
 | 
			
		||||
    cbtsLocale->addItem( QIcon( QStringLiteral( ":/images/flags/%1.svg" ).arg( l ) ), displayName, l );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  cbtsLocale->addItem( QIcon( QString( ":/images/flags/%1.svg" ).arg( QStringLiteral( "en_US" ) ) ), QLocale( QStringLiteral( "en_US" ) ).nativeLanguageName(), QStringLiteral( "en_US" ) );
 | 
			
		||||
  cbtsLocale->addItem( QIcon( QStringLiteral( ":/images/flags/%1.svg" ).arg( QStringLiteral( "en_US" ) ) ), QLocale( QStringLiteral( "en_US" ) ).nativeLanguageName(), QStringLiteral( "en_US" ) );
 | 
			
		||||
  cbtsLocale->setCurrentIndex( cbtsLocale->findData( settings.value( QStringLiteral( "locale/userLocale" ), QString() ).toString() ) );
 | 
			
		||||
 | 
			
		||||
  connect( generateTsFileButton, &QPushButton::clicked, this, &QgsProjectProperties::onGenerateTsFileButton );
 | 
			
		||||
@ -2214,7 +2213,7 @@ void QgsProjectProperties::setCurrentPage( const QString &pageWidgetName )
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void QgsProjectProperties::onGenerateTsFileButton()
 | 
			
		||||
void QgsProjectProperties::onGenerateTsFileButton() const
 | 
			
		||||
{
 | 
			
		||||
  QString l = cbtsLocale->currentData().toString();
 | 
			
		||||
  QgsProject::instance()->generateTsFile( l );
 | 
			
		||||
 | 
			
		||||
@ -93,7 +93,7 @@ class APP_EXPORT QgsProjectProperties : public QgsOptionsDialogBase, private Ui:
 | 
			
		||||
    void scaleItemChanged( QListWidgetItem *changedScaleItem );
 | 
			
		||||
 | 
			
		||||
    //! generate the ts file with the locale selected in the checkbox
 | 
			
		||||
    void onGenerateTsFileButton();
 | 
			
		||||
    void onGenerateTsFileButton() const;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Set WMS default extent to current canvas extent
 | 
			
		||||
 | 
			
		||||
@ -746,7 +746,7 @@ class CORE_EXPORT QgsApplication : public QApplication
 | 
			
		||||
   /**
 | 
			
		||||
     * Emits the signal to collect all the strings of .qgs to be included in ts file
 | 
			
		||||
     *
 | 
			
		||||
     * \since QGIS 3.2
 | 
			
		||||
     * \since QGIS 3.4
 | 
			
		||||
     */
 | 
			
		||||
    void collectTranslatableObjects( QgsTranslationContext *translationContext );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -444,7 +444,7 @@ void QgsProject::setPresetHomePath( const QString &path )
 | 
			
		||||
 | 
			
		||||
void QgsProject::registerTranslatableContainers( QgsTranslationContext *translationContext, QgsAttributeEditorContainer *parent, const QString &layerId )
 | 
			
		||||
{
 | 
			
		||||
  QList<QgsAttributeEditorElement *> elements = parent->children();
 | 
			
		||||
  const QList<QgsAttributeEditorElement *> elements = parent->children();
 | 
			
		||||
 | 
			
		||||
  for ( QgsAttributeEditorElement *element : elements )
 | 
			
		||||
  {
 | 
			
		||||
@ -463,7 +463,9 @@ void QgsProject::registerTranslatableContainers( QgsTranslationContext *translat
 | 
			
		||||
void QgsProject::registerTranslatableObjects( QgsTranslationContext *translationContext )
 | 
			
		||||
{
 | 
			
		||||
  //register layers
 | 
			
		||||
  for ( QgsLayerTreeLayer *layer : mRootGroup->findLayers() )
 | 
			
		||||
  const QList<QgsLayerTreeLayer *> layers = mRootGroup->findLayers();
 | 
			
		||||
 | 
			
		||||
  for ( const QgsLayerTreeLayer *layer : layers )
 | 
			
		||||
  {
 | 
			
		||||
    translationContext->registerTranslation( QStringLiteral( "project:layers:%1" ).arg( layer->layerId() ), layer->name() );
 | 
			
		||||
 | 
			
		||||
@ -489,7 +491,8 @@ void QgsProject::registerTranslatableObjects( QgsTranslationContext *translation
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  //register layergroups
 | 
			
		||||
  for ( const QgsLayerTreeGroup *groupLayer : mRootGroup->findGroups() )
 | 
			
		||||
  const QList<QgsLayerTreeGroup *> groupLayers = mRootGroup->findGroups();
 | 
			
		||||
  for ( const QgsLayerTreeGroup *groupLayer : groupLayers )
 | 
			
		||||
  {
 | 
			
		||||
    translationContext->registerTranslation( QStringLiteral( "project:layergroups" ), groupLayer->name() );
 | 
			
		||||
  }
 | 
			
		||||
@ -1012,10 +1015,7 @@ bool QgsProject::readProjectFile( const QString &filename )
 | 
			
		||||
  if ( QFile( QStringLiteral( "%1/%2.qm" ).arg( QFileInfo( projectFile.fileName() ).absolutePath(), localeFileName ) ).exists() )
 | 
			
		||||
  {
 | 
			
		||||
    mTranslator.reset( new QTranslator() );
 | 
			
		||||
    if ( mTranslator->load( localeFileName, QFileInfo( projectFile.fileName() ).absolutePath() ) )
 | 
			
		||||
    {
 | 
			
		||||
      QgsDebugMsg( "Translation loaded" );
 | 
			
		||||
    }
 | 
			
		||||
    mTranslator->load( localeFileName, QFileInfo( projectFile.fileName() ).absolutePath() );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  std::unique_ptr<QDomDocument> doc( new QDomDocument( QStringLiteral( "qgis" ) ) );
 | 
			
		||||
@ -1319,17 +1319,16 @@ bool QgsProject::readProjectFile( const QString &filename )
 | 
			
		||||
  {
 | 
			
		||||
    //project possibly translated -> rename it with locale postfix
 | 
			
		||||
    QString newFileName( QStringLiteral( "%1/%2.qgs" ).arg( QFileInfo( projectFile.fileName() ).absolutePath(), localeFileName ) );
 | 
			
		||||
    QgsProject::instance()->setFileName( newFileName );
 | 
			
		||||
    setFileName( newFileName );
 | 
			
		||||
 | 
			
		||||
    if ( QgsProject::instance()->write() )
 | 
			
		||||
    if ( write() )
 | 
			
		||||
    {
 | 
			
		||||
      QgsProject::instance()->setTitle( localeFileName );
 | 
			
		||||
 | 
			
		||||
      QgsDebugMsg( "Translated project saved with locale prefix " + newFileName );
 | 
			
		||||
      setTitle( localeFileName );
 | 
			
		||||
      QgsMessageLog::logMessage( tr( "Translated project saved with locale prefix %1" ).arg( newFileName ), QObject::tr( "Project translation" ), Qgis::Success );
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
      QgsDebugMsg( "Error saving translated project with locale prefix " + newFileName );
 | 
			
		||||
      QgsMessageLog::logMessage( tr( "Error saving translated project with locale prefix %1" ).arg( newFileName ), QObject::tr( "Project translation" ), Qgis::Critical );
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  return true;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user