80 changes: 40 additions & 40 deletions doc/TRANSLATORS

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions doc/iauthors.t2t
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,11 @@ The following people have contributed to this document:
- Tim Sutton 2006
- Debian package section: Juergen Fischer 2008

- WCS Test Server Section
- Tim Sutton, Radim Blazek 2012

- Jenkins CI Configuration
- Tim Sutton 2012

- Latex Generator
- Tim Sutton 2011
89 changes: 89 additions & 0 deletions doc/jenkins.t2t
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@

= Setting up a Jenkins Build Server =

**Assumption:** You know how to make a working build environment and want to
deploy it under Jenkins for continuous integration testing now.

These notes are terse, I will expand on them later as the need arises. The
procedure is:

- Install Jenkins and get it configured according to your own preferences
- Make sure you have the git, github, junit etc plugins installed. A complete
list of the plugins I have installed follows (note that you almost certainly
don't need evey plugin listed here):
- External Monitor Job Type Plugin
- LDAP Plugin
- pam-auth
- javadoc
- ant
- Jenkins Subversion Plug-in
- Git Plugin
- Maven 2 Project Plugin
- Jenkins SLOCCount Plug-in
- Jenkins Sounds plugin
- Jenkins Translation Assistance plugin
- ruby-runtime
- Jenkins CVS Plug-in
- Coverage/Complexity Scatter Plot PlugIn
- Status Monitor Plugin
- Git Parameter Plug-In
- github-api
- GitHub plugin
- Jenkins Violations plugin
- git-notes Plugin
- Twitter plugin
- Jenkins Cobertura Plugin
- Jenkins Gravatar plugin
- Jenkins SSH Slaves plugin
- Create a Job called 'QGIS'
- Use the following options for your job:
- Job Name: QGIS
- Job Type: Build a free-style software project
- Tick enable project based security (you need to elsewhere configure your
Jenkins security to per project settings)
- Allow Anonymous user Read and Discover access
- Set the github project to https://github.com/qgis/Quantum-GIS/
- Set source code management to Git
- Set repository url to git://github.com/qgis/Quantum-GIS.git
- In advanced repository url settings set refspec to :

```
+refs/heads/master:refs/remotes/origin/master
```

- Set branch to build to master
- Repository Browser: Auto
- Build triggers: set to Poll SCM and set schedule to ``* * * * *`` (polls every minute)
- Build - Execute shell and set shell script to:

```
cd build
cmake ..
xvfb-run --auto-servernum --server-num=1 \
--server-args="-screen 0 1024x768x24" \
make Experimental || true
if [ -f Testing/TAG ] ; then
xsltproc ../tests/ctest2junix.xsl \
Testing/`head -n 1 < Testing/TAG`/Test.xml > \
CTestResults.xml
fi
```

- Add Junit post build action and set 'Publish Junit test result report' to:
``build/CTestResults.xml``
- Email notification: Send separate e-mails to individuals who broke the build
- Jenkins sounds - set up sounds for Failure, Success and Unstable.
- Save
-

Now open the Job dash board and push something to QGIS and wait a minute to
validate automated builds work.

**Note:** You will need to log in to the Jenkins user account and go to
/var/lib/jenkins/jobs/QGIS/workspace, then make a ``build`` directory and run
the initial cmake setup and then do test build. This process is the same as
described elsewhere in this doc.

I based some of the set up from this nice blog article here:

* http://alexott.blogspot.com/2012/03/jenkins-cmakectest.html
114 changes: 114 additions & 0 deletions doc/wcs-test-server.t2t
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@


= Setting up the WCS test server on GNU/Linux =

**Requires:** Ubuntu / Debian derived distro

These notes are for Ubuntu - other versions and Debian derived distros may
require slight variations in package names.

== Preparation ==

Note the git repo below will change to the default QGIS repo once this work
is integrated into master.

git remote add blazek git://github.com/blazek/Quantum-GIS.git
git fetch blazek
git branch --track wcs2 blazek/wcs2
git checkout wcs2
cd /var/www/
sudo mkdir wcs
sudo chown timlinux wcs
cd wcs/
mkdir cgi-bin
cd cgi-bin/

== Setup mapserver ==

```sudo apt-get install cgi-mapserver```

Set the contents of cgi-bin/wcstest-1.9.0 to:

```
#! /bin/sh
MS_MAPFILE=/var/www/wcs/testdata/qgis-1.9.0/raster/wcs.map
export MS_MAPFILE
/usr/lib/cgi-bin/mapserv
```

Then do:

```
chmod +x cgi-bin/wcstest-1.9.0
mkdir -p /var/www/wcs/testdata/qgis-1.9.0/raster/
cd /var/www/wcs/testdata/qgis-1.9.0/raster/
cp -r /home/timlinux/Quantum-GIS/tests/testdata/raster/* .
```

Edit wcs.map and set the shapepath to this:

```
SHAPEPATH "/var/www/wcs/testdata/qgis-1.9.0/raster"
```

Then create /var/www/wcs/7-wcs.qgis.org.conf setting the contents to this:

```
<VirtualHost *:80>
ServerName wcs.qgis.org
ServerAdmin tim@linfiniti.com

LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{forensic-id}n\"" combined
CustomLog /var/log/apache2/wcs_qgis.org/access.log combined
ErrorLog /var/log/apache2/wcs_qgis.org/error.log

DocumentRoot /var/www/wcs/html

ScriptAlias /cgi-bin/ /var/www/wcs/cgi-bin/
<Directory "/var/www/wcs/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

RewriteEngine on
RewriteRule /1.9.0/wcs /cgi-bin/wcstest-1.9.0 [PT]

</VirtualHost>
```

== Create a home page ==

```
mkdir html
vim html/index.html
```

Set the contents to:

```
This is the test platform for QGIS' wcs client. You can use these services
from QGIS directly (to try out WCS for example) by pointing your QGIS to:
http://wcs.qgis.org/1.9.0/wcs
```


== Now deploy it ==

```
sudo mkdir /var/log/apache2/wcs_qgis.org
sudo chown www-data /var/log/apache2/wcs_qgis.org
cd /etc/apache2/sites-available/
sudo ln -s /var/www/wcs/7-wcs.qgis.org.conf .
cd /var/www/wcs/
sudo a2ensite 7-wcs.qgis.org.conf
sudo /etc/init.d/apache2 reload
```

== Debugging ==

```
sudo tail -f /var/log/apache2/wcs_qgis.org/error.log
```
14,097 changes: 8,197 additions & 5,900 deletions i18n/qgis_bg.ts

Large diffs are not rendered by default.

8,164 changes: 4,472 additions & 3,692 deletions i18n/qgis_da_DK.ts

Large diffs are not rendered by default.

4,230 changes: 2,623 additions & 1,607 deletions i18n/qgis_de.ts

Large diffs are not rendered by default.

3,593 changes: 2,131 additions & 1,462 deletions i18n/qgis_gl_ES.ts

Large diffs are not rendered by default.

2,418 changes: 2,051 additions & 367 deletions i18n/qgis_lv.ts

Large diffs are not rendered by default.

19,799 changes: 11,002 additions & 8,797 deletions i18n/qgis_zh_CN.ts

Large diffs are not rendered by default.

10 changes: 7 additions & 3 deletions images/icons/mac/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@

FILE (GLOB ICONS *.icns)
INSTALL (FILES ${ICONS}
DESTINATION ${CMAKE_INSTALL_PREFIX}/../Resources)
IF (WITH_DESKTOP)
FILE (GLOB ICONS *.icns)
INSTALL (FILES ${ICONS}
DESTINATION ${CMAKE_INSTALL_PREFIX}/../Resources)

ADD_SUBDIRECTORY(browser)
ENDIF (WITH_DESKTOP)
6 changes: 6 additions & 0 deletions images/icons/mac/browser/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@

FILE (GLOB ICONS *.icns)
INSTALL (FILES ${ICONS}
DESTINATION "${CMAKE_INSTALL_PREFIX}/${QGIS_BIN_DIR}/QGIS Browser.app/Contents/Resources")
# create alias now, so alias file gets correct icon
INSTALL (CODE "EXECUTE_PROCESS(COMMAND osascript -e \"tell application \\\"Finder\\\" to make alias file to POSIX file \\\"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${QGIS_BIN_DIR}/QGIS Browser.app\\\" at POSIX file \\\"$ENV{DESTDIR}${QGIS_INSTALL_PREFIX}/\\\"\")")
Binary file added images/icons/mac/browser/qgisb.icns
Binary file not shown.
6 changes: 6 additions & 0 deletions images/images.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,9 @@
<file>themes/default/mActionFileSmall.png</file>
<file>themes/default/mActionFolder.png</file>
<file>themes/default/mActionFormAnnotation.png</file>
<file>themes/default/mActionFreezeLabels.png</file>
<file>themes/default/mActionFromSelectedFeature.png</file>
<file>themes/default/mActionFullCumulativeCutStretch.png</file>
<file>themes/default/mActionFullHistogramStretch.png</file>
<file>themes/default/mActionGroupItems.png</file>
<file>themes/default/mActionHelpAbout.png</file>
Expand All @@ -90,6 +92,7 @@
<file>themes/default/mActionInvertSelection.png</file>
<file>themes/default/mActionLabeling.png</file>
<file>themes/default/mActionLabel.png</file>
<file>themes/default/mActionLocalCumulativeCutStretch.png</file>
<file>themes/default/mActionLocalHistogramStretch.png</file>
<file>themes/default/mActionLowerItems.png</file>
<file>themes/default/mActionMapTips.png</file>
Expand Down Expand Up @@ -143,6 +146,7 @@
<file>themes/default/mActionSelectRectangle.png</file>
<file>themes/default/mActionShowAllLayers.png</file>
<file>themes/default/mActionShowBookmarks.png</file>
<file>themes/default/mActionShowFrozenLabels.png</file>
<file>themes/default/mActionShowPluginManager.png</file>
<file>themes/default/mActionSimplify.png</file>
<file>themes/default/mActionSplitFeatures.png</file>
Expand Down Expand Up @@ -199,6 +203,7 @@
<file>themes/default/mIconWms.png</file>
<file>themes/default/mIconWmsLayer.png</file>
<file>themes/default/mIconWarn.png</file>
<file>themes/default/mIconZoom.png</file>
<file>themes/default/mIconZip.png</file>
<file>themes/default/mMapserverExport.png</file>
<file>themes/default/plugin.png</file>
Expand Down Expand Up @@ -389,6 +394,7 @@
<file>themes/gis/mActionTouch.png</file>
<file>themes/default/mActionAddMssqlLayer.png</file>
<file>themes/default/mActionTouch.png</file>
<file>themes/default/mActionTouch2.png</file>
<file>themes/classic/mActionTouch.png</file>
<file>flags/af.png</file>
<file>flags/ar.png</file>
Expand Down
Binary file added images/themes/default/mActionFreezeLabels.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/themes/default/mActionTouch2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/themes/default/mIconZoom.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 21 additions & 2 deletions mac/app.info.plist.in
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
<key>CFBundleSignature</key>
<string>QGIS</string>
<key>CFBundleGetInfoString</key>
<string>${QGIS_APP_NAME} ${COMPLETE_VERSION}-${RELEASE_NAME} (${REVISION}), © 2002-2011 QGIS Development Team</string>
<string>${QGIS_APP_NAME} ${COMPLETE_VERSION}-${RELEASE_NAME} (${REVISION}), © 2002-2012 QGIS Development Team</string>
<key>CFBundleShortVersionString</key>
<string>${COMPLETE_VERSION}</string>
<key>CFBundleVersion</key>
Expand Down Expand Up @@ -185,33 +185,52 @@
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>af</string>
<string>ar</string>
<string>bg</string>
<string>ca_ES</string>
<string>cs_CZ</string>
<string>da_DK</string>
<string>de</string>
<string>el_GR</string>
<string>es</string>
<string>fa</string>
<string>fi</string>
<string>fr</string>
<string>gl_ES</string>
<string>he</string>
<string>hr_HR</string>
<string>hu</string>
<string>id</string>
<string>is</string>
<string>it</string>
<string>ja</string>
<string>ka_GE</string>
<string>ko_KR</string>
<string>lo</string>
<string>lt</string>
<string>lv</string>
<string>ka</string>
<string>mn</string>
<string>nl</string>
<string>no</string>
<string>pl_PL</string>
<string>pt_BR</string>
<string>pt_PT</string>
<string>ro</string>
<string>ru</string>
<string>sk</string>
<string>sl_SI</string>
<string>sq_AL</string>
<string>sr_CS-Latn</string>
<string>sv</string>
<string>ta</string>
<string>th</string>
<string>tr</string>
<string>uk</string>
<string>vi</string>
<string>xh</string>
<string>zh_CN</string>
<string>zh_TW</string>
</array>
</dict>
</plist>
80 changes: 80 additions & 0 deletions mac/browser.info.plist.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleName</key>
<string>QGIS Browser</string>
<key>CFBundleIdentifier</key>
<string>org.qgis.qgis</string>
<key>CFBundleExecutable</key>
<string>QGIS Browser</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>QGSB</string>
<key>CFBundleGetInfoString</key>
<string>${QGIS_APP_NAME} Browser ${COMPLETE_VERSION}-${RELEASE_NAME} (${REVISION}), © 2002-2012 QGIS Development Team</string>
<key>CFBundleShortVersionString</key>
<string>${COMPLETE_VERSION}</string>
<key>CFBundleVersion</key>
<string>${COMPLETE_VERSION} (${REVISION})</string>
<key>CFBundleIconFile</key>
<string>qgisb.icns</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CSResourcesFileMapped</key>
<true/>
<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>af</string>
<string>ar</string>
<string>bg</string>
<string>ca_ES</string>
<string>cs_CZ</string>
<string>da_DK</string>
<string>de</string>
<string>el_GR</string>
<string>es</string>
<string>fa</string>
<string>fi</string>
<string>fr</string>
<string>gl_ES</string>
<string>he</string>
<string>hr_HR</string>
<string>hu</string>
<string>id</string>
<string>is</string>
<string>it</string>
<string>ja</string>
<string>ka_GE</string>
<string>ko_KR</string>
<string>lo</string>
<string>lt</string>
<string>lv</string>
<string>mn</string>
<string>nl</string>
<string>no</string>
<string>pl_PL</string>
<string>pt_BR</string>
<string>pt_PT</string>
<string>ro</string>
<string>ru</string>
<string>sk</string>
<string>sl_SI</string>
<string>sq_AL</string>
<string>sr_CS-Latn</string>
<string>sv</string>
<string>ta</string>
<string>th</string>
<string>tr</string>
<string>uk</string>
<string>vi</string>
<string>xh</string>
<string>zh_CN</string>
<string>zh_TW</string>
</array>
</dict>
</plist>
2 changes: 1 addition & 1 deletion mac/cmake/1qt.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ IF (NOT EXISTS "${QLIBDIR}/libqwt.dylib")
ENDIF ()
GET_INSTALL_NAME ("@QWT_LIBRARY@" "libqwt" QWT_CHG)
IF (QWT_CHG)
INSTALLNAMETOOL_CHANGE ("${QWT_CHG}" "${ATEXECUTABLE}/@QGIS_LIB_SUBDIR@/libqwt.dylib" "${QAPPDIR}/@QGIS_APP_NAME@")
UPDATEQGISPATHS (${QWT_CHG} libqwt.dylib)
ENDIF (QWT_CHG)

# PyQt
Expand Down
2 changes: 0 additions & 2 deletions python/core/core.sip
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,6 @@
%Include qgsrenderer.sip
%Include qgsrunprocess.sip
%Include qgsscalecalculator.sip
%Include qgssearchstring.sip
%Include qgssearchtreenode.sip
%Include qgssinglesymbolrenderer.sip
%Include qgssnapper.sip
%Include qgsspatialindex.sip
Expand Down
19 changes: 19 additions & 0 deletions python/core/qgscomposition.sip
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ class QgsComposition: QGraphicsScene
/**Returns width of paper item*/
double paperWidth() const;

/**Note: added in version 1.9*/
void setNumPages( int pages );
/**Note: added in version 1.9*/
int numPages() const;

void setSnapToGridEnabled( bool b );
bool snapToGridEnabled() const;

Expand Down Expand Up @@ -172,4 +177,18 @@ class QgsComposition: QGraphicsScene

/**Convenience function to create a QgsAddRemoveItemCommand, connect its signals and push it to the undo stack*/
void pushAddRemoveCommand( QgsComposerItem* item, const QString& text, QgsAddRemoveItemCommand::State state );

//printing

void exportAsPDF( const QString& file );

void print( QPrinter &printer );

//! print composer page to image
//! If the image does not fit into memory, a null image is returned
QImage printPageAsRaster( int page );

/**Render a page to a paint device
@note added in version 1.9*/
void renderPage( QPainter* p, int page );
};
2 changes: 2 additions & 0 deletions python/core/qgsgeometry.sip
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,8 @@ not disjoint with existing polygons of the feature*/

/** Returns the smallest convex polygon that contains all the points in the geometry. */
QgsGeometry* convexHull() /Factory/;

QgsGeometry* interpolate( double distance ) /Factory/;

/** Returns a geometry representing the points shared by this geometry and other. */
QgsGeometry* intersection(QgsGeometry* geometry) /Factory/;
Expand Down
3 changes: 3 additions & 0 deletions python/core/qgsmaprenderer.sip
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ public:
//! return infos about labels at a given (map) position
//! @note: this method was added in version 1.7
virtual QList<QgsLabelPosition> labelsAtPosition( const QgsPoint& p )= 0;
//! return infos about labels within a given (map) rectangle
//! @note: this method was added in version 1.9
virtual QList<QgsLabelPosition> labelsWithinRect( const QgsRectangle& r ) = 0;


//! called when passing engine among map renderers
Expand Down
12 changes: 2 additions & 10 deletions python/core/qgsrasterbandstats.sip
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,8 @@ class QgsRasterBandStats
QString bandName;
/** \brief The gdal band number (starts at 1)*/
int bandNumber;
/** \brief A flag to indicate whether this RasterBandStats struct
* is completely populated */
bool statsGathered;
/** \brief Collected statistics */
int statsGathered;
/** \brief The minimum cell value in the raster band. NO_DATA values
* are ignored. This does not use the gdal GetMinimum function. */
double minimumValue;
Expand All @@ -35,13 +34,6 @@ class QgsRasterBandStats
/** \brief The number of cells in the band. Equivalent to height x width.
* TODO: check if NO_DATA are excluded!*/
int elementCount;
/** \brief Store the histogram for a given layer */
typedef QVector<int> HistogramVector;
//HistogramVector * histogramVector;
/** \brief whteher histogram values are estimated or completely calculated */
bool isHistogramEstimated;
/** whehter histogram compuation should include out of range values */
bool isHistogramOutOfRange;
/** Color table */
//QList<QgsColorRampShader::ColorRampItem> colorTable;
};
Expand Down
21 changes: 0 additions & 21 deletions python/core/qgsrasterlayer.sip
Original file line number Diff line number Diff line change
Expand Up @@ -162,9 +162,6 @@ public:
/** \brief Accessor that returns the height of the (unclipped) raster */
int height();

/** \brief Accessor to find out whether the histogram should be inverted */
//bool invertHistogram() const; //removed with raster redesign

/** \brief Is the NoDataValue Valid */
bool isNoDataValueValid() const;

Expand Down Expand Up @@ -198,9 +195,6 @@ public:
/** \brief Mutator for mGrayMinimumMaximumEstimated */
//void setGrayMinimumMaximumEstimated( bool theBool ); //removed with raster redesign

/** \brief Mutator to alter the state of the invert histogram flag */
//void setInvertHistogram( bool theFlag ); //removed with raster redesign

/** \brief Mutator for mRGBMinimumMaximumEstimated */
//void setRGBMinimumMaximumEstimated( bool theBool ); //removed with raster redesign

Expand Down Expand Up @@ -249,12 +243,6 @@ public:
* If no matching band is found zero will be returned! */
int bandNumber( const QString & theBandName );

/** \brief Get RasterBandStats for a band given its number (read only) */
const QgsRasterBandStats bandStatistics( int );

/** \brief Get RasterBandStats for a band given its name (read only) */
const QgsRasterBandStats bandStatistics( const QString & );

/** \brief Accessor for ths raster layers pyramid list. A pyramid list defines the
* POTENTIAL pyramids that can be in a raster. To know which of the pyramid layers
* ACTUALLY exists you need to look at the existsFlag member in each struct stored in the
Expand Down Expand Up @@ -322,9 +310,6 @@ public:
/** \brief Checks if symbology is the same as another layers */
bool hasCompatibleSymbology( const QgsMapLayer& theOther ) const;

/** \brief Check whether a given band number has stats associated with it */
bool hasStatistics( int theBandNoInt );

/** \brief Identify raster value(s) found on the point position */
bool identify( const QgsPoint & point, QMap<QString, QString>& results /Out/ );

Expand Down Expand Up @@ -489,12 +474,6 @@ public:
const QString & theResamplingMethod = "NEAREST",
bool theTryInternalFlag = false );

/** \brief Populate the histogram vector for a given band */
void populateHistogram( int theBandNoInt,
int theBinCountInt = 256,
bool theIgnoreOutOfRangeFlag = true,
bool theThoroughBandScanFlag = false );

void showStatusMessage( const QString & theMessage );

/** \brief Propagate progress updates from GDAL up to the parent app */
Expand Down
25 changes: 7 additions & 18 deletions python/core/qgsrasterrenderer.sip
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ class QgsRasterRenderer
virtual ~QgsRasterRenderer();

virtual QString type() const;
virtual void draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsMapToPixel* theQgsMapToPixel ) = 0;
virtual void * readBlock( int bandNo, const QgsRectangle & extent, int width, int height );

bool usesTransparency( QgsCoordinateReferenceSystem& srcSRS, QgsCoordinateReferenceSystem& dstSRS ) const;
bool usesTransparency() const;

void setOpacity( double opacity );
double opacity() const;
Expand All @@ -45,17 +45,6 @@ class QgsRasterRenderer
void setInvertColor( bool invert );
bool invertColor() const;

/**Set resampler for zoomed in scales. Takes ownership of the object*/
void setZoomedInResampler( QgsRasterResampler* r );
const QgsRasterResampler* zoomedInResampler();

/**Set resampler for zoomed out scales. Takes ownership of the object*/
void setZoomedOutResampler( QgsRasterResampler* r );
const QgsRasterResampler* zoomedOutResampler() const;

void setMaxOversampling( double os );
double maxOversampling() const;

/**Get symbology items if provided by renderer*/
virtual void legendSymbologyItems( QList< QPair< QString, QColor > >& symbolItems ) const;

Expand All @@ -76,7 +65,7 @@ class QgsPalettedRasterRenderer: QgsRasterRenderer
~QgsPalettedRasterRenderer();
static QgsRasterRenderer* create( const QDomElement& elem, QgsRasterDataProvider* provider );

void draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsMapToPixel* theQgsMapToPixel );
void * readBlock( int bandNo, const QgsRectangle & extent, int width, int height );

/**Returns number of colors*/
int nColors() const;
Expand All @@ -101,7 +90,7 @@ class QgsMultiBandColorRenderer: QgsRasterRenderer

static QgsRasterRenderer* create( const QDomElement& elem, QgsRasterDataProvider* provider );

void draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsMapToPixel* theQgsMapToPixel );
void * readBlock( int bandNo, const QgsRectangle & extent, int width, int height );

int redBand() const;
void setRedBand( int band );
Expand Down Expand Up @@ -137,7 +126,7 @@ class QgsSingleBandPseudoColorRenderer: QgsRasterRenderer

static QgsRasterRenderer* create( const QDomElement& elem, QgsRasterDataProvider* provider );

virtual void draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsMapToPixel* theQgsMapToPixel );
void * readBlock( int bandNo, const QgsRectangle & extent, int width, int height );

/**Takes ownership of the shader*/
void setShader( QgsRasterShader* shader );
Expand All @@ -159,7 +148,7 @@ class QgsSingleBandGrayRenderer: QgsRasterRenderer

static QgsRasterRenderer* create( const QDomElement& elem, QgsRasterDataProvider* provider );

virtual void draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsMapToPixel* theQgsMapToPixel );
void * readBlock( int bandNo, const QgsRectangle & extent, int width, int height );

int grayBand() const;
void setGrayBand( int band );
Expand All @@ -183,7 +172,7 @@ class QgsSingleBandColorDataRenderer: QgsRasterRenderer

static QgsRasterRenderer* create( const QDomElement& elem, QgsRasterDataProvider* provider );

virtual void draw( QPainter* p, QgsRasterViewPort* viewPort, const QgsMapToPixel* theQgsMapToPixel );
void * readBlock( int bandNo, const QgsRectangle & extent, int width, int height );

void writeXML( QDomDocument& doc, QDomElement& parentElem ) const;
};
29 changes: 29 additions & 0 deletions python/core/qgsrasterresamplefilter.sip
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
class QgsRasterResampleFilter
{
%TypeHeaderCode
#include "qgsrasterresamplefilter.h"
%End

public:
QgsRasterResampleFilter( QgsRasterFace* input = 0 );
~QgsRasterResampleFilter();

void * readBlock( int bandNo, const QgsRectangle & extent, int width, int height );

/**Set resampler for zoomed in scales. Takes ownership of the object*/
void setZoomedInResampler( QgsRasterResampler* r );
const QgsRasterResampler* zoomedInResampler();

/**Set resampler for zoomed out scales. Takes ownership of the object*/
void setZoomedOutResampler( QgsRasterResampler* r );
const QgsRasterResampler* zoomedOutResampler() const;

void setMaxOversampling( double os );
double maxOversampling() const;

virtual void writeXML( QDomDocument& doc, QDomElement& parentElem ) const = 0;

/**Sets base class members from xml. Usually called from create() methods of subclasses*/
void readXML( const QDomElement& rendererElem );
};

46 changes: 0 additions & 46 deletions python/core/qgssearchstring.sip

This file was deleted.

210 changes: 0 additions & 210 deletions python/core/qgssearchtreenode.sip

This file was deleted.

5 changes: 3 additions & 2 deletions python/core/qgsvectorlayer.sip
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
typedef QList<int> QgsAttributeList;
typedef QSet<qint64> QgsFeatureIds;
typedef QSet<int> QgsAttributeIds;
typedef qint64 QgsFeatureId;


/** @note added in 1.7 */
Expand Down Expand Up @@ -675,8 +676,8 @@ signals:
void featureDeleted(qint64 fid);
void layerDeleted();

void attributeValueChanged(qint64 fid, int idx, const QVariant &);
void geometryChanged(qint64 fid, QgsGeometry & );
void attributeValueChanged(QgsFeatureId fid, int idx, const QVariant &);
void geometryChanged(QgsFeatureId fid, QgsGeometry & );

/** Signals emitted after committing changes
\note added in v1.6 */
Expand Down
2 changes: 2 additions & 0 deletions python/gui/gui.sip
Original file line number Diff line number Diff line change
Expand Up @@ -37,5 +37,7 @@
%Include qgsattributeeditor.sip
%Include qgsfieldvalidator.sip
%Include qgsquerybuilder.sip
%Include qgsrasterformatsaveoptionswidget.sip

%Include symbology-ng-gui.sip

61 changes: 61 additions & 0 deletions python/gui/qgsrasterformatsaveoptionswidget.sip
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@

class QgsRasterFormatSaveOptionsWidget : QWidget
{
%TypeHeaderCode
#include <qgsrasterformatsaveoptionswidget.h>
%End

public:

enum Type
{
Default, // everything except profile buttons (save as dlg)
Full, // everything (options dlg)
Table, // just table
LineEdit // just the line edit
};

QgsRasterFormatSaveOptionsWidget( QWidget* parent = 0, QString format = "GTiff",
QgsRasterFormatSaveOptionsWidget::Type type = Default,
QString provider = "gdal" );
~QgsRasterFormatSaveOptionsWidget();

void setFormat( QString format );
void setProvider( QString provider );
QStringList options() const;
void setType( QgsRasterFormatSaveOptionsWidget::Type type = Default );

public slots:

void apply();
void helpOptions();
bool validateOptions( bool gui = true );

private slots:

void on_mProfileNewButton_clicked();
void on_mProfileDeleteButton_clicked();
void on_mProfileResetButton_clicked();
void on_mOptionsAddButton_clicked();
void on_mOptionsDeleteButton_clicked();
void on_mOptionsLabel_clicked();
void on_mOptionsLineEdit_editingFinished();
void optionsTableChanged();
void optionsTableEnableDeleteButton();
void updateOptions();
void swapOptionsUI( int newIndex = -1 );

private:

QString settingsKey( QString profile ) const;
QString currentProfileKey() const;
QString createOptions( QString profile ) const;
void deleteCreateOptions( QString profile );
void setCreateOptions( );
void setCreateOptions( QString profile, QString options );
void setCreateOptions( QString profile, QStringList list );
QStringList profiles() const;
void updateProfiles();
bool eventFilter(QObject *obj, QEvent *event);

};
5 changes: 4 additions & 1 deletion python/gui/qgsscalecombobox.sip
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ class QgsScaleComboBox : QComboBox
#include <qgsscalecombobox.h>
%End

public:
public:
QgsScaleComboBox(QWidget * parent = 0);
~QgsScaleComboBox();

public slots:
void updateScales( const QStringList &scales = QStringList() );
};

5 changes: 3 additions & 2 deletions python/plugins/GdalTools/tools/doMerge.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ def __init__(self, iface):
self.inSelector.setType( self.inSelector.FILE )
self.outSelector.setType( self.outSelector.FILE )
self.recurseCheck.hide()
# use this for approx. previous UI
#self.creationOptionsTable.setType(QgsRasterFormatSaveOptionsWidget.Table)

self.outputFormat = Utils.fillRasterOutputFormat()
self.extent = None
Expand All @@ -33,8 +35,7 @@ def __init__(self, iface):
(self.recurseCheck, SIGNAL("stateChanged(int)"), self.inputDirCheck),
( self.separateCheck, SIGNAL( "stateChanged( int )" ) ),
( self.pctCheck, SIGNAL( "stateChanged( int )" ) ),
( self.intersectCheck, SIGNAL( "stateChanged( int )" ) ),
(self.creationOptionsTable, [SIGNAL("cellValueChanged(int, int)"), SIGNAL("rowRemoved()")], self.creationGroupBox)
( self.intersectCheck, SIGNAL( "stateChanged( int )" ) )
]
)

Expand Down
12 changes: 6 additions & 6 deletions python/plugins/GdalTools/tools/widgetMerge.ui
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>345</width>
<height>276</height>
<width>371</width>
<height>284</height>
</rect>
</property>
<property name="sizePolicy">
Expand Down Expand Up @@ -117,11 +117,11 @@
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="bottomMargin">
<property name="margin">
<number>0</number>
</property>
<item>
<widget class="GdalToolsOptionsTable" name="creationOptionsTable" native="true"/>
<widget class="QgsRasterFormatSaveOptionsWidget" name="creationOptionsTable" native="true"/>
</item>
</layout>
</widget>
Expand All @@ -136,9 +136,9 @@
<container>1</container>
</customwidget>
<customwidget>
<class>GdalToolsOptionsTable</class>
<class>QgsRasterFormatSaveOptionsWidget</class>
<extends>QWidget</extends>
<header>optionsTable</header>
<header>qgis.gui</header>
<container>1</container>
</customwidget>
</customwidgets>
Expand Down
4 changes: 2 additions & 2 deletions python/plugins/db_manager/db_plugins/postgis/data_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,9 @@ def _createCursor(self):

def _sanitizeTableField(self, field):
# get fields, ignore geometry columns
if field.dataType.lower() == "geometry":
if QString(field.dataType).toLower() == "geometry":
return u"CASE WHEN %(fld)s IS NULL THEN NULL ELSE GeometryType(%(fld)s) END AS %(fld)s" % {'fld': self.db.quoteId(field.name)}
elif field.dataType.lower() == "raster":
elif QString(field.dataType).toLower() == "raster":
return u"CASE WHEN %(fld)s IS NULL THEN NULL ELSE 'RASTER' END AS %(fld)s" % {'fld': self.db.quoteId(field.name)}
return u"%s::text" % self.db.quoteId(field.name)

Expand Down
24 changes: 12 additions & 12 deletions python/plugins/db_manager/db_plugins/spatialite/connector.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ def getVectorTables(self, schema=None):

# get geometry info from geometry_columns if exists
sql = u"""SELECT m.name, m.type = 'view', g.f_table_name, g.f_geometry_column, g.type, g.coord_dimension, g.srid
FROM sqlite_master AS m JOIN geometry_columns AS g ON lower(m.name) = lower(g.f_table_name)
FROM sqlite_master AS m JOIN geometry_columns AS g ON upper(m.name) = upper(g.f_table_name)
WHERE m.type in ('table', 'view')
ORDER BY m.name, g.f_geometry_column"""

Expand Down Expand Up @@ -243,9 +243,9 @@ def getRasterTables(self, schema=None):

# get geometry info from geometry_columns if exists
sql = u"""SELECT r.table_name||'_rasters', m.type = 'view', r.table_name, r.geometry_column, g.srid
FROM sqlite_master AS m JOIN geometry_columns AS g ON lower(m.name) = lower(g.f_table_name)
JOIN layer_params AS r ON REPLACE(m.name, '_metadata', '') = r.table_name
WHERE m.type in ('table', 'view') AND m.name = r.table_name||'_metadata'
FROM sqlite_master AS m JOIN geometry_columns AS g ON upper(m.name) = upper(g.f_table_name)
JOIN layer_params AS r ON upper(REPLACE(m.name, '_metadata', '')) = upper(r.table_name)
WHERE m.type in ('table', 'view') AND upper(m.name) = upper(r.table_name||'_metadata')
ORDER BY r.table_name"""

self._execute(c, sql)
Expand Down Expand Up @@ -298,7 +298,7 @@ def getTableConstraints(self, table):
def getTableTriggers(self, table):
c = self._get_cursor()
schema, tablename = self.getSchemaTableName(table)
sql = u"SELECT name, sql FROM sqlite_master WHERE lower(tbl_name) = lower(%s) AND type = 'trigger'" % (self.quoteString(tablename))
sql = u"SELECT name, sql FROM sqlite_master WHERE tbl_name = %s AND type = 'trigger'" % (self.quoteString(tablename))
self._execute(c, sql)
return c.fetchall()

Expand Down Expand Up @@ -339,7 +339,7 @@ def getSpatialRefInfo(self, srid):
def isVectorTable(self, table):
if self.has_geometry_columns:
schema, tablename = self.getSchemaTableName(table)
sql = u"SELECT count(*) FROM geometry_columns WHERE f_table_name = %s" % self.quoteString(tablename)
sql = u"SELECT count(*) FROM geometry_columns WHERE upper(f_table_name) = upper(%s)" % self.quoteString(tablename)
c = self._execute(None, sql)
ret = c.fetchone()
return res != None and ret[0] > 0
Expand All @@ -353,8 +353,8 @@ def isRasterTable(self, table):

sql = u"""SELECT count(*)
FROM layer_params AS r JOIN geometry_columns AS g
ON r.table_name||'_metadata' = g.f_table_name
WHERE r.table_name = REPLACE(%s, '_rasters', '')""" % self.quoteString(tablename)
ON upper(r.table_name||'_metadata') = upper(g.f_table_name)
WHERE upper(r.table_name) = upper(REPLACE(%s, '_rasters', ''))""" % self.quoteString(tablename)
c = self._execute(None, sql)
ret = c.fetchone()
return res != None and ret[0] > 0
Expand Down Expand Up @@ -388,7 +388,7 @@ def deleteTable(self, table):
sql = u"DROP TABLE %s" % self.quoteId(table)
self._execute(c, sql)
schema, tablename = self.getSchemaTableName(table)
sql = u"DELETE FROM geometry_columns WHERE lower(f_table_name) = lower(%s)" % self.quoteString(tablename)
sql = u"DELETE FROM geometry_columns WHERE upper(f_table_name) = upper(%s)" % self.quoteString(tablename)
self._execute(c, sql)
self._commit()

Expand Down Expand Up @@ -417,7 +417,7 @@ def renameTable(self, table, new_table):

# update geometry_columns
if self.has_geometry_columns:
sql = u"UPDATE geometry_columns SET f_table_name=%s WHERE f_table_name=%s" % (self.quoteString(new_table), self.quoteString(tablename))
sql = u"UPDATE geometry_columns SET f_table_name = %s WHERE upper(f_table_name) = upper(%s)" % (self.quoteString(new_table), self.quoteString(tablename))
self._execute(c, sql)

self._commit()
Expand Down Expand Up @@ -480,7 +480,7 @@ def setColumnNull(self, table, column, is_null):
def isGeometryColumn(self, table, column):
c = self._get_cursor()
schema, tablename = self.getSchemaTableName(table)
sql = u"SELECT count(*) > 0 FROM geometry_columns WHERE lower(f_table_name)=lower(%s) AND lower(f_geometry_column)=lower(%s)" % (self.quoteString(tablename), self.quoteString(column))
sql = u"SELECT count(*) > 0 FROM geometry_columns WHERE upper(f_table_name) = upper(%s) AND upper(f_geometry_column) = upper(%s)" % (self.quoteString(tablename), self.quoteString(column))
self._execute(c, sql)
return c.fetchone()[0] == 't'

Expand Down Expand Up @@ -547,7 +547,7 @@ def hasSpatialIndex(self, table, geom_column='geometry'):
return False
c = self._get_cursor()
schema, tablename = self.getSchemaTableName(table)
sql = u"SELECT spatial_index_enabled FROM geometry_columns WHERE f_table_name = %s AND f_geometry_column = %s" % (self.quoteString(tablename), self.quoteString(geom_column))
sql = u"SELECT spatial_index_enabled FROM geometry_columns WHERE upper(f_table_name) = upper(%s) AND upper(f_geometry_column) = upper(%s)" % (self.quoteString(tablename), self.quoteString(geom_column))
self._execute(c, sql)
row = c.fetchone()
return row != None and row[0] == 1
Expand Down
3 changes: 3 additions & 0 deletions python/plugins/db_manager/db_plugins/spatialite/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,9 @@ class SLVectorTable(SLTable, VectorTable):
def __init__(self, row, db, schema=None):
SLTable.__init__(self, row[:-5], db, schema)
VectorTable.__init__(self, db, schema)
# SpatiaLite does case-insensitive checks for table names, but the
# SL provider didn't do the same in QGis < 1.9, so self.geomTableName
# stores the table name like stored in the geometry_columns table
self.geomTableName, self.geomColumn, self.geomType, self.geomDim, self.srid = row[-5:]

def uri(self):
Expand Down
15 changes: 11 additions & 4 deletions python/plugins/fTools/tools/doVectorGrid.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,10 @@ def accept(self):
QMessageBox.information(self, self.tr("Vector grid"), self.tr("Invalid extent coordinates entered"))
xSpace = self.spnX.value()
ySpace = self.spnY.value()
if self.rdoPolygons.isChecked(): polygon = True
else: polygon = False
if self.rdoPolygons.isChecked():
polygon = True
else:
polygon = False
self.outShape.clear()
QApplication.setOverrideCursor(Qt.WaitCursor)
self.compute( boundBox, xSpace, ySpace, polygon )
Expand All @@ -153,7 +155,13 @@ def accept(self):
self.buttonOk.setEnabled( True )

def compute( self, bound, xOffset, yOffset, polygon ):
crs = ftools_utils.getMapLayerByName(unicode(self.inShape.currentText())).crs()
crs = None
layer = ftools_utils.getMapLayerByName(unicode(self.inShape.currentText()))

if layer is None:
crs = self.iface.mapCanvas().mapRenderer().destinationCrs()
else:
crs = layer.crs()
if not crs.isValid(): crs = None
if polygon:
fields = {0:QgsField("ID", QVariant.Int), 1:QgsField("XMIN", QVariant.Double), 2:QgsField("XMAX", QVariant.Double),
Expand All @@ -173,7 +181,6 @@ def compute( self, bound, xOffset, yOffset, polygon ):
outFeat = QgsFeature()
outGeom = QgsGeometry()
idVar = 0
# self.progressBar.setRange( 0, 0 )
self.progressBar.setValue( 0 )
if not polygon:
# counters for progressbar - update every 5%
Expand Down
11 changes: 10 additions & 1 deletion python/plugins/plugin_installer/installer_gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -485,7 +485,16 @@ def addItem(p):
a.setText(2,ver)
a.setToolTip(2,verTip)
a.setText(3,desc)
a.setToolTip(3,descTip)
# split the tooltip into multiple lines when they are too long
tmp = ""
splitTip = ""
for word in descTip.split(" "):
if len(tmp + word) < 80:
tmp = tmp + " " + word
else:
splitTip += tmp + "\n"
tmp = word
a.setToolTip(3, splitTip+tmp)
a.setText(4,p["author"])
if p["homepage"]:
a.setToolTip(4,p["homepage"])
Expand Down
12 changes: 12 additions & 0 deletions resources/function_help/$area-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<h3>Funktion $area</h3>
Liefert den Flächeninhalt des aktuellen Objekts

<h4>Syntax</h4>
<pre>$area</pre>

<h4>Argumente</h4>
Keine

<h4>Beispiel</h4>
<pre>$area &rarr; 4711.42</pre>

12 changes: 12 additions & 0 deletions resources/function_help/$area-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<h3>$area function</h3>
Returns the area size of the current feature.

<h4>Syntax</h4>
<pre>$area</pre>

<h4>Arguments</h4>
None

<h4>Example</h4>
<pre>$area &rarr; 42</pre>

12 changes: 12 additions & 0 deletions resources/function_help/$id-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<h3>Funktion $id</h3>
Liefert die Feature-ID des aktuellen Objekts zurück.

<h4>Syntax</h4>
<pre>$id</pre>

<h4>Argumente</h4>
Keine

<h4>Beispiel</h4>
<pre>$id &rarr; 42</pre>

12 changes: 12 additions & 0 deletions resources/function_help/$id-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<h3>$id function</h3>
Returns the feature id of the current row.

<h4>Syntax</h4>
<pre>$id</pre>

<h4>Arguments</h4>
None

<h4>Example</h4>
<pre>$id &rarr; 42</pre>

12 changes: 12 additions & 0 deletions resources/function_help/$length-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<h3>Funktion $length</h3>
Liefert die Länge der aktuellen Geometrie.

<h4>Syntax</h4>
<pre>$length</pre>

<h4>Argumente</h4>
Keine

<h4>Beispiel</h4>
<pre>$length &rarr; 42.4711</pre>

12 changes: 12 additions & 0 deletions resources/function_help/$length-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<h3>$length function</h3>
Returns the length the current feature.

<h4>Syntax</h4>
<pre>$length</pre>

<h4>Arguments</h4>
None

<h4>Example</h4>
<pre>$length &rarr; 42.4711</pre>

11 changes: 11 additions & 0 deletions resources/function_help/$now-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<h3>Funktion $now</h3>
Ergibt aktuelles Datum und Zeit

<h4>Syntax</h4>
<pre>$now</pre>

<h4>Argumente</h4>
Keine

<h4>Beispiel</h4>
<pre>$now &rarr; 2012-07-22T13:24:57</pre>
12 changes: 12 additions & 0 deletions resources/function_help/$now-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<h3>$now function</h3>
Returns the current date and time

<h4>Syntax</h4>
<pre>$now</pre>

<h4>Arguments</h4>
None

<h4>Example</h4>
<pre>$now &rarr; 2012-07-22T13:24:57</pre>

12 changes: 12 additions & 0 deletions resources/function_help/$perimeter-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<h3>Funktion $perimeter</h3>
Liefert den Umfang des aktuellen Objekts zurück.

<h4>Syntax</h4>
<pre>$perimeter</pre>

<h4>Argumente</h4>
Keine

<h4>Beispiel</h4>
<pre>$perimeter &rarr; 42</pre>

12 changes: 12 additions & 0 deletions resources/function_help/$perimeter-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<h3>$perimeter function</h3>
Returns the perimeter length of the current feature.

<h4>Syntax</h4>
<pre>$perimeter</pre>

<h4>Arguments</h4>
None

<h4>Example</h4>
<pre>$perimeter &rarr; 42</pre>

11 changes: 11 additions & 0 deletions resources/function_help/$rownum-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<h3>Funktion $rownum</h3>
Ergibt die Zeilennummer des aktuellen Datensatzes

<h4>Syntax</h4>
<pre>$rownum</pre>

<h4>Argumente</h4>
Keine

<h4>Beispiel</h4>
<pre>$rownum &rarr; 4711</pre>
12 changes: 12 additions & 0 deletions resources/function_help/$rownum-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<h3>$rownum function</h3>
Returns the number of the current row.

<h4>Syntax</h4>
<pre>$rownum</pre>

<h4>Arguments</h4>
None

<h4>Example</h4>
<pre>$rownum &rarr; 4711</pre>

12 changes: 12 additions & 0 deletions resources/function_help/$x-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<h3>Funktion $x</h3>
Liefert die X-Koordinate des aktuellen Punkts zurück.

<h4>Syntax</h4>
<pre>$x</pre>

<h4>Argumente</h4>
Keine

<h4>Beispiel</h4>
<pre>$x &rarr; 42</pre>

12 changes: 12 additions & 0 deletions resources/function_help/$x-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<h3>$x function</h3>
Returns the x coordinate of the current feature.

<h4>Syntax</h4>
<pre>$x</pre>

<h4>Arguments</h4>
None

<h4>Example</h4>
<pre>$x &rarr; 42</pre>

12 changes: 12 additions & 0 deletions resources/function_help/$y-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<h3>Funktion $y</h3>
Liefert die Y-Koordinate des aktuellen Objekts zurück.

<h4>Syntax</h4>
<pre>$y</pre>

<h4>Argumente</h4>
Keine

<h4>Beispiel</h4>
<pre>$y &rarr; 42</pre>

12 changes: 12 additions & 0 deletions resources/function_help/$y-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<h3>$y function</h3>
Returns the y coordinate of the current feature.

<h4>Syntax</h4>
<pre>$y</pre>

<h4>Arguments</h4>
None

<h4>Example</h4>
<pre>$y &rarr; 42</pre>

2 changes: 2 additions & 0 deletions resources/function_help/Bedingungen-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<h3>Gruppe Bedingungen</h3>
Dies Gruppe enthält Funktionen die mit Bedingungen umgehen.
28 changes: 28 additions & 0 deletions resources/function_help/CASE ELSE-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<h3>CASE Ausdruck</h3>
Ist ein bedingter Ausdruck mit dem mehrere Ausdrücken ausgewertet und ein
Ergebnis zurückgegeben werden kann.

<h4>Syntax</h4>
<pre>
CASE
WHEN <i>bedingung</i> THEN <i>ergebnis</i>
[ ...n ]
[ ELSE <i>ergebnis</i> ]
END
</pre>
[ ] markiert optionale Komponenten

<h4>Argumente</h4>
<!-- List args for functions here-->
<i> WHEN bedingung</i> - Der Bedingungsausdruck. <br>
<i> THEN ergebnis</i> - Wenn die <i>bedingung</i> True ergibt, wird der Ausdruck <i>ergebnis</i> ausgewertet und zurückgegeben. <br>
<i> ELSE ergebnis</i> - Wenn keine der Bedingungen erfüllt ist, wird der Ausdruck <i>ergebnis</i> ausgewertet und zurückgegeben. <br>

<h4>Beispiel</h4>
<!-- Show example of function.-->
<pre>
CASE
WHEN <i>"column" IS NULL</i> THEN <i>'Leer'</i>
ELSE <i>"column"</i>
END
</pre>
28 changes: 28 additions & 0 deletions resources/function_help/CASE ELSE-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<h3>CASE expression</h3>
A conditional expression that can be used to evaluate multiple expressions and
return a result.

<h4>Syntax</h4>
<pre>
CASE
WHEN <i>condition</i> THEN <i>result</i>
[ ...n ]
[ ELSE <i>result</i> ]
END
</pre>
[ ] marks optional components

<h4>Arguments</h4>
<!-- List args for functions here-->
<i> WHEN condition</i> - The condition expression to evaluate. <br>
<i> THEN result</i> - If <i>condition</i> evaluates to True then <i>result</i> is evaluated and returned. <br>
<i> ELSE result</i> - If none of the above conditions evaluated to True then <i>result</i> is evaluated and returned. <br>

<h4>Example</h4>
<!-- Show example of function.-->
<pre>
CASE
WHEN <i>"column" IS NULL</i> THEN <i>'None'</i>
ELSE <i>"column"</i>
END
</pre>
27 changes: 27 additions & 0 deletions resources/function_help/CASE-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<h3>CASE Ausdruck</h3>
Ist ein bedingter Ausdruck mit dem mehrere Ausdrücken ausgewertet und ein
Ergebnis zurückgegeben werden kann.

<h4>Syntax</h4>
<pre>
CASE
WHEN <i>bedingung</i> THEN <i>ergebnis</i>
[ ...n ]
[ ELSE <i>ergebnis</i> ]
END
</pre>
[ ] markiert optionale Komponenten

<h4>Argumente</h4>
<!-- List args for functions here-->
<i> WHEN bedingung</i> - Der Bedingungsausdruck. <br>
<i> THEN ergebnis</i> - Wenn die <i>bedingung</i> True ergibt, wird der Ausdruck <i>ergebnis</i> ausgewertet und zurückgegeben. <br>
<i> ELSE ergebnis</i> - Wenn keine der Bedingungen erfüllt ist, wird der Ausdruck <i>ergebnis</i> ausgewertet und zurückgegeben. <br>

<h4>Beispiel</h4>
<!-- Show example of function.-->
<pre>
CASE
WHEN <i>"column" IS NULL</i> THEN <i>'Leer'</i>
END
</pre>
27 changes: 27 additions & 0 deletions resources/function_help/CASE-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<h3>CASE expression</h3>
A conditional expression that can be used to evaluate multiple expressions and
return a result.

<h4>Syntax</h4>
<pre>
CASE
WHEN <i>condition</i> THEN <i>result</i>
[ ...n ]
[ ELSE <i>result</i> ]
END
</pre>
[ ] marks optional components

<h4>Arguments</h4>
<!-- List args for functions here-->
<i> WHEN condition</i> - The condition expression to evaluate. <br>
<i> THEN result</i> - If <i>condition</i> evaluates to True then <i>result</i> is evaluated and returned. <br>
<i> ELSE result</i> - If none of the above conditions evaluated to True then <i>result</i> is evaluated and returned. <br>

<h4>Example</h4>
<!-- Show example of function.-->
<pre>
CASE
WHEN <i>"column" IS NULL</i> THEN <i>'None'</i>
END
</pre>
1 change: 0 additions & 1 deletion resources/function_help/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
FILE(GLOB HELP_FILES *-*)

INSTALL(FILES ${HELP_FILES} DESTINATION ${QGIS_DATA_DIR}/resources/function_help)

2 changes: 2 additions & 0 deletions resources/function_help/Conditions-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<h3>Conditions Group</h3>
This group contains functions that operate on condition.
2 changes: 2 additions & 0 deletions resources/function_help/Date and Time-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<h3>Date and Time Group</h3>
This group contains functions for handling date and time data.
1 change: 1 addition & 0 deletions resources/function_help/Datensatz-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<h3>Gruppe Datensatz</h3>
2 changes: 2 additions & 0 deletions resources/function_help/Datum und Zeit-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<h3>Datum- und Zeitgruppe</h3>
Diese Gruppe enthält Funktionen zur Verarbeitung von Daten und Zeiten.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<h3>Geometrie-Gruppe</h3>
<h3>Gruppe Geometrie</h3>
Dies Gruppe enthält Funktionen für Geometrieobjekten (z.B. Länge und Flächeninhalt).
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<h3>Mathematik-Gruppe</h3>
<h3>Gruppe Mathematik</h3>
Die Gruppe enthält mathematische Funktionen (z.B. Quadratwurzel, Sinus und Cosinus)
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<h3>Operatoren-Gruppe</h3>
<h3>Gruppe Operatoren</h3>
Die Gruppe enthält Operatoren (z.B. +, - und *)
1 change: 0 additions & 1 deletion resources/function_help/Record-de_DE

This file was deleted.

File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<h3>Zeichenketten-Gruppe</h3>
<h3>Gruppe Zeichenketten</h3>
Dies Gruppen enthält Funktionen für Zeichenketten (z.B. Ersetzen und in Großbuchstaben umwandeln).
29 changes: 29 additions & 0 deletions resources/function_help/age-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<h3>Funktion age()</h3>
Gibt den Unterschied zwischen zwei Daten zurück.
<br><br>
Der Unterschied wird als <code>Intervall</code> zurückgegeben
und muß mit folgenden Funktionen weiterverarbeitet werde, um
sinnvolle Informationen zu erhalten:
><code>year</code>
<li><code>month</code>
<li><code>week</code>
<li><code>day</code>
<li><code>hour</code>
<li><code>minute</code>
<li><code>second</code>
</ul>
<h4>Syntax</h4>
<code>age(zeichenkette,zeichenkette)</code><br>
<code>age(datetime,datetime)</code><br>
<code>age(zeichenkette,datetime)</code><br>
<code>age(datetime,zeichenkette)</code><br>

<h4>Argumente</h4>
<code>zeichenkette</code> - ist string. Eine Zeichenkette in Datumsformat. <br>
<code>datetime</code> - ist date oder datetime. Eine Datums oder eine Zeit.

<h4>Beispiel</h4>
<!-- Show example of function.-->
<code>age('2012-05-12','2012-05-2') &rarr; Intervall</code><br>
<code>day</code> benutzen um die Anzahl der Tage zur bestimmen<br>
<code>day(age('2012-05-12','2012-05-2')) &rarr; 10</code><br>
32 changes: 32 additions & 0 deletions resources/function_help/age-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<h3>age() function</h3>
Returns the difference between two dates.
<br><br>
The difference is returned as a <code>Interval</code>
and needs to be used with one of the following functions
in order to extract useful information:
<ul>
<li><code>year</code>
<li><code>month</code>
<li><code>week</code>
<li><code>day</code>
<li><code>hour</code>
<li><code>minute</code>
<li><code>second</code>
</ul>
<h4>Syntax</h4>
<code>age(string,string)</code><br>
<code>age(datetime,datetime)</code><br>
<code>age(string,datetime)</code><br>
<code>age(datetime,string)</code><br>

<h4>Arguments</h4>
<code>string</code> - is string. A string in date format.
<br>
<code>datetime</code> - is date or datetime. A date or datetime type.

<h4>Example</h4>
<!-- Show example of function.-->
<code>age('2012-05-12','2012-05-2') &rarr; Interval</code><br>
use <code>day</code> to extract number of days<br>
<code>day(age('2012-05-12','2012-05-2')) &rarr; 10</code><br>

13 changes: 13 additions & 0 deletions resources/function_help/concat-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<h3>Funktion concat()</h3>
Fügt Zeichenketten zu einer zusammen.

<p><h4>Syntax</h4>
substr(<i>zeichenkette<i>[, <i>zeichenkette</i>...])</p>

<p><h4>Argumente</h4>
<!-- List args for functions here-->
<i> zeichenkette</i> &rarr; ist string. Ein Zeichenkette.<br>

<p><h4>Beispiel</h4>
<!-- Show example of function.-->
concat('a','b','c','d','e') &rarr; 'abcde'</p>
13 changes: 13 additions & 0 deletions resources/function_help/concat-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<h3>concat() function</h3>
Concatenates several strings to one.

<h4>Syntax</h4>
concat(<i>string<i>[,<i>string</i>...])

<h4>Arguments</h4>
<!-- List args for functions here-->
<i> string</i> &rarr; is string. a string.<br>

<h4>Example</h4>
<!-- Show example of function.-->
concat('a','b','c','d','e') &rarr; 'abcde'
17 changes: 17 additions & 0 deletions resources/function_help/day-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<h3>Funktion day()</h3>
Tag eines Datum oder Anzahl der Tage eines <code>Intervalls</code>.

<h4>Syntax</h4>
<code>day(date)</code><br>
<code>day(Intervall)</code><br>

<h4>Argumente</h4>
<code>date</code> - ist date oder datetime. Das Datum oder die Zeit dessen Tag bestimmt werden soll.
<br>
<code>Interval</code> - ist Interval. Das Interval aus dem die Anzahl der Tage bestimmt werden soll.

<h4>Beispiele</h4>
<!-- Show example of function.-->
<code>day('2012-05-12') &rarr; 12</code><br>
<code>day(tointerval('3 days')) &rarr; 3</code><br>
<code>day(age('2012-01-01','2010-01-01')) &rarr; 730</code><br>
19 changes: 19 additions & 0 deletions resources/function_help/day-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<h3>day() function</h3>
Extract the day from a date, or the number of days
from a <code>Interval</code>

<h4>Syntax</h4>
<code>day(date)</code><br>
<code>day(Interval)</code><br>

<h4>Arguments</h4>
<code>date</code> - is date or datetime. The date to extract the day from.
<br>
<code>Interval</code> - is Interval. The Interval to return the number of days from.

<h4>Example</h4>
<!-- Show example of function.-->
<code>day('2012-05-12') &rarr; 12</code><br>
<code>day(tointerval('3 days')) &rarr; 3</code><br>
<code>day(age('2012-01-01','2010-01-01')) &rarr; 730</code><br>

20 changes: 20 additions & 0 deletions resources/function_help/hour-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<h3>Funktion hour()</h3>
Bestimmt die Stunde eines Datums/Zeit oder die Anzahl der Stunden
aus einem <code>Intervall</code>

<h4>Syntax</h4>
<code>hour(datetime)</code><br>
<code>hour(Intervall)</code><br>

<h4>Argumente</h4>
<code>date</code> - ist date oder datetime. Das Datum/die Zeit dessen Stunde bestimmt werden soll.
<br>
<code>Intervall</code> - ist Interval. Das Intervall aus der die Stundenzahl bestimmt werden soll.

<h4>Beispiele</h4>
<!-- Show example of function.-->
<code>hour('2012-07-22T13:24:57') &rarr; 13</code><br>
<code>hour(tointerval('3 hours')) &rarr; 3</code><br>
<code>hour(age('2012-07-22T13:00:00','2012-07-22T10:00:00')) &rarr; 3</code><br>
<code>hour(age('2012-01-01','2010-01-01')) &rarr; 17520</code><br>

20 changes: 20 additions & 0 deletions resources/function_help/hour-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<h3>hour() function</h3>
Extract the hour from a datetime or time, or the number of hours
from a <code>Interval</code>

<h4>Syntax</h4>
<code>hour(datetime)</code><br>
<code>hour(Interval)</code><br>

<h4>Arguments</h4>
<code>date</code> - is datetime or time. The date to extract the hour from.
<br>
<code>Interval</code> - is Interval. The Interval to return the number of hours from.

<h4>Example</h4>
<!-- Show example of function.-->
<code>hour('2012-07-22T13:24:57') &rarr; 13</code><br>
<code>hour(tointerval('3 hours')) &rarr; 3</code><br>
<code>hour(age('2012-07-22T13:00:00','2012-07-22T10:00:00')) &rarr; 3</code><br>
<code>hour(age('2012-01-01','2010-01-01')) &rarr; 17520</code><br>

15 changes: 15 additions & 0 deletions resources/function_help/left-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<h3>Funktion left()</h3>
Ergibt ersten <i>n</i> Zeichen von links.

<h4>Syntax</h4>
<code>left(zeichenkette, laenge)</code><br>

<h4>Argumente</h4>
<code>zeichenkette</code> - ist eine Zeichenkette. Die Zeichenkette.
<br>
<code>laenge</code> - ist eine Zahl. Die Anzahl der zurückzugebenden Zeichen.

<h4>Beispiel</h4>
<!-- Show example of function.-->
<code>left('Hallo Welt',5) &rarr; 'Hallo'</code><br>

15 changes: 15 additions & 0 deletions resources/function_help/left-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<h3>left() function</h3>
Returns a substring that contains the <i>n</i> leftmost characters of the string.

<h4>Syntax</h4>
<code>left(string, length)</code><br>

<h4>Arguments</h4>
<code>string</code> - is string. The string.
<br>
<code>length</code> - is int. The number of characters from the left to return.

<h4>Example</h4>
<!-- Show example of function.-->
<code>left('Hello World',5) &rarr; 'Hello'</code><br>

4 changes: 2 additions & 2 deletions resources/function_help/length-de_DE
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ Liefert die Länge einer Zeichenkette.

<p><h4>Argumente</h4>
<!-- List args for functions here-->
<i> zeichenkette</i> -> ist eine Zeichenkette. Die Zeichenkette deren Länge zu bestimmen ist.</p>
<i> zeichenkette</i> &rarr; ist eine Zeichenkette. Die Zeichenkette deren Länge zu bestimmen ist.</p>

<p><h4>Beispiel</h4>
<!-- Show example of function.-->
length('HALLO') -> 5</p>
length('HALLO') &rarr; 5</p>
4 changes: 2 additions & 2 deletions resources/function_help/length-en_US
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ Returns the length of a string.

<p><h4>Arguments</h4>
<!-- List args for functions here-->
<i> string</i> -> is string. The String to count the length of.</p>
<i> string</i> &rarr; is string. The String to count the length of.</p>

<p><h4>Example</h4>
<!-- Show example of function.-->
length('HELLO') -> 5</p>
length('HELLO') &rarr; 5</p>
4 changes: 2 additions & 2 deletions resources/function_help/lower-de_DE
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Wandelt eine Zeichenkette in Kleinbuchstaben um.
lower(<i>zeichenkette</i>)</p>

<p><h4> Argumente</h4>
<i> zeichenkette</i> -> ist eine Zeichenkette. Die Zeichenkette, die in Kleinbuchstaben umzuwandeln ist.</p>
<i> zeichenkette</i> &rarr; ist eine Zeichenkette. Die Zeichenkette, die in Kleinbuchstaben umzuwandeln ist.</p>

<p><h4> Beispiel</h4>
lower('Hallo Welt') -> 'hallo welt'</p>
lower('Hallo Welt') &rarr; 'hallo welt'</p>
4 changes: 2 additions & 2 deletions resources/function_help/lower-en_US
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Converts a string to lower case letters.
lower(<i>string</i>)</p>

<p><h4> Arguments</h4>
<i> string</i> -> is string. The String to convert to lower case.</p>
<i> string</i> &rarr; is string. The String to convert to lower case.</p>

<p><h4> Example</h4>
lower('HELLO World') -> 'hello world'</p>
lower('HELLO World') &rarr; 'hello world'</p>
15 changes: 15 additions & 0 deletions resources/function_help/lpad-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<h3>Funktion lpad()</h3>
Ergibt eine mit einem am Ende mit einem Zeichen auf eine bestimmte Länge aufgefüllte Zeichenkette.

<h4>Syntax</h4>
<code>lpad(zeichenkette, laenge, fuellzeichen)</code><br>

<h4>Argumente</h4>
<code>zeichenkette</code> - ist string. Die Zeichenkette.
<br>
<code>laenge</code> - ist int. Die Länge der neuen Zeichenkette.
<br>
<code>fuellzeichen</code> - ist char. Das Zeichen mit dem die Zeichenkette am Ende aufgefüllt werden soll.

<h4>Beispiel</h4>
<code>lpad('Hallo', 10, 'x') &rarr; 'Halloxxxxx'</code><br>
17 changes: 17 additions & 0 deletions resources/function_help/lpad-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<h3>lpad() function</h3>
Returns a string with supplied width padded
using the fill character.

<h4>Syntax</h4>
<code>lpad(string, length, fill)</code><br>

<h4>Arguments</h4>
<code>string</code> - is string. The string.
<br>
<code>length</code> - is int. The length of the new string.
<br>
<code>fill</code> - is char. The character to padd the remaining space with.

<h4>Example</h4>
<!-- Show example of function.-->
<code>lpad('Hello', 10, 'x') &rarr; 'Helloxxxxx'</code><br>
18 changes: 18 additions & 0 deletions resources/function_help/minute-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<h3>Funktion minute()</h3>
Bestimmt die Minute eines Datums/Zeit oder die Anzahl der Minuten
eines <code>Intervalls</code>

<h4>Syntax</h4>
<code>minute(datetime)</code><br>
<code>minute(Intervall)</code><br>

<h4>Argumente</h4>
<code>datetime</code> - ist datetime oder time. Das Datum aus der die Minute bestimmt werden soll.<br>
<code>Interval</code> - is Interval. Das Intervall aus dem die Minutenanzahl bestimmt werden soll.

<h4>Beispiel</h4>
<!-- Show example of function.-->
<code>minute('2012-07-22T13:24:57') &rarr; 24</code><br>
<code>minute(tointerval('3 minutes')) &rarr; 3</code><br>
<code>minute(age('2012-07-22T00:20:00','2012-07-22T00:00:00')) &rarr; 20</code><br>
<code>minute(age('2012-01-01','2010-01-01')) &rarr; 1051200</code><br>
20 changes: 20 additions & 0 deletions resources/function_help/minute-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<h3>minute() function</h3>
Extract the minute from a datetime or time, or the number of minutes
from a <code>Interval</code>

<h4>Syntax</h4>
<code>minute(datetime)</code><br>
<code>minute(Interval)</code><br>

<h4>Arguments</h4>
<code>date</code> - is datetime or time. The date to extract the minute from.
<br>
<code>Interval</code> - is Interval. The Interval to return the number of minutes from.

<h4>Example</h4>
<!-- Show example of function.-->
<code>minute('2012-07-22T13:24:57') &rarr; 24</code><br>
<code>minute(tointerval('3 minutes')) &rarr; 3</code><br>
<code>minute(age('2012-07-22T00:20:00','2012-07-22T00:00:00')) &rarr; 20</code><br>
<code>minute(age('2012-01-01','2010-01-01')) &rarr; 1051200</code><br>

18 changes: 18 additions & 0 deletions resources/function_help/month-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<h3>month() function</h3>
Bestimmt den Monat eines Datums/Zeit oder die Anzahl der Monate
aus einem <code>Intervall</code>

<h4>Syntax</h4>
<code>month(date)</code><br>
<code>month(Intervall)</code><br>

<h4>Argumente</h4>
<code>date</code> - ist date oder datetime. Das Datum aus dem der Monat bestimmt werden soll.<br>
<code>Interval</code> - ist Interval. Das Intervall dessen Monatsanzahl zurückgegeben werden soll.

<h4>Beispiel</h4>
<!-- Show example of function.-->
<code>month('2012-05-12') &rarr; 05</code><br>
<code>month(tointerval('3 months')) &rarr; 3</code><br>
<code>month(age('2012-01-01','2010-01-01')) &rarr; 4.033...</code><br>

19 changes: 19 additions & 0 deletions resources/function_help/month-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<h3>month() function</h3>
Extract the month part from a date, or the number of months
from a <code>Interval</code>

<h4>Syntax</h4>
<code>month(date)</code><br>
<code>month(Interval)</code><br>

<h4>Arguments</h4>
<code>date</code> - is date or datetime. The date to extract the month from.
<br>
<code>Interval</code> - is Interval. The Interval to return the number of months from.

<h4>Example</h4>
<!-- Show example of function.-->
<code>month('2012-05-12') &rarr; 05</code><br>
<code>month(tointerval('3 months')) &rarr; 3</code><br>
<code>month(age('2012-01-01','2010-01-01')) &rarr; 4.033...</code><br>

15 changes: 15 additions & 0 deletions resources/function_help/regexp_replace-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<h3>Funktion regexp_replace()</h3>
Liefert eine Zeichenkette in der der angegebene reguläre Ausdruck ersetzt wurde.

<p><h4>Syntax</h4>
regexp_replace(<i>a</i>, <i>streiche</i>, <i>setze</i>)

<p><h4>Argumente</h4>
<!-- List args for functions here-->
<i>a</i> &rarr; ist string. Die ursprüngliche Zeichenkette.<br>
<i>streiche</i> &rarr; ist string. Die zu ersetzende reguläre Ausdruck.<br>
<i>setze</i> &rarr; ist string. Die Zeichenkette durch die <i>streiche</i> ersetzt werden soll<br></p>

<p><h4>Beispiel</h4>
<!-- Show example of function.-->
<pre>regexp_replace('QGIS SHOULD ROCK','(SHOULD)','DOES (was:\1)')</pre> &rarr; 'QGIS DOES (was: SHOULD) ROCK'
15 changes: 15 additions & 0 deletions resources/function_help/regexp_replace-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<h3>regexp_replace() function</h3>
Returns a string with the supplied regular expression replaced.

<p><h4>Syntax</h4>
replace(<i>string,before,after</i>)</p>

<p><h4>Arguments</h4>
<!-- List args for functions here-->
<i> string</i> &rarr; is string. The start string.<br>
<i> before</i> &rarr; is string. The string to replace.<br>
<i> after</i> &rarr; is string. The string that will replace <i>before</i><br></p>

<p><h4>Example</h4>
<!-- Show example of function.-->
replace('QGIS SHOULD ROCK','SHOULD','DOES') &rarr; 'QGIS DOES ROCK'</p>
8 changes: 4 additions & 4 deletions resources/function_help/replace-de_DE
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ Liefert eine Zeichenkette in der die angegebene Zeichenkette ersetzt ist.

<p><h4>Argumente</h4>
<!-- List args for functions here-->
<i> zeichenkette</i> -> ist eine Zeichenkette. Die ursprüngliche Zeichenkette.<br>
<i> vorher</i> -> ist eine Zeichenkette. Die zu ersetzende Zeichenkette.<br>
<i> nacher</i> -> ist eine Zeichenkette. Die Zeichenkette durch die <i>vorher</i> ersetzen soll<br></p>
<i> zeichenkette</i> &rarr; ist eine Zeichenkette. Die ursprüngliche Zeichenkette.<br>
<i> vorher</i> &rarr; ist eine Zeichenkette. Die zu ersetzende Zeichenkette.<br>
<i> nacher</i> &rarr; ist eine Zeichenkette. Die Zeichenkette durch die <i>vorher</i> ersetzen soll<br></p>

<p><h4>Beispiel</h4>
<!-- Show example of function.-->
replace('QGIS SHOULD ROCK','SHOULD','DOES') -> 'QGIS DOES ROCK'</p>
replace('QGIS SHOULD ROCK','SHOULD','DOES') &rarr; 'QGIS DOES ROCK'</p>
8 changes: 4 additions & 4 deletions resources/function_help/replace-en_US
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ Returns a string with the the supplied string replaced.

<p><h4>Arguments</h4>
<!-- List args for functions here-->
<i> string</i> -> is string. The start string.<br>
<i> before</i> -> is string. The string to replace.<br>
<i> after</i> -> is string. The string that will replace <i>before</i><br></p>
<i> string</i> &rarr; is string. The start string.<br>
<i> before</i> &rarr; is string. The string to replace.<br>
<i> after</i> &rarr; is string. The string that will replace <i>before</i><br></p>

<p><h4>Example</h4>
<!-- Show example of function.-->
replace('QGIS SHOULD ROCK','SHOULD','DOES') -> 'QGIS DOES ROCK'</p>
replace('QGIS SHOULD ROCK','SHOULD','DOES') &rarr; 'QGIS DOES ROCK'</p>
14 changes: 14 additions & 0 deletions resources/function_help/right-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<h3>Funktion right()</h3>
Ergibt letzten <i>n</i> Zeichen von rechts.

<h4>Syntax</h4>
<code>right(zeichenkette,laenge)</code><br>

<h4>Argumente</h4>
<code>string</code> - ist string. Die Zeichenkette.
<br>
<code>laenge</code> - ist int. Die Anzahl der von rechts zurückzugebenden Zeichen von rechts.

<h4>Beispiel</h4>
<!-- Show example of function.-->
<code>right('Hallo Welt',4) &rarr; 'Welt'</code><br>
15 changes: 15 additions & 0 deletions resources/function_help/right-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<h3>right() function</h3>
Returns a substring that contains the <i>n</i> rightmost characters of the string.

<h4>Syntax</h4>
<code>right(string, pos)</code><br>

<h4>Arguments</h4>
<code>string</code> - is string. The string.
<br>
<code>length</code> - is int. The numbder of characters from the right to return.

<h4>Example</h4>
<!-- Show example of function.-->
<code>right('Hello World',5) &rarr; 'World'</code><br>

15 changes: 15 additions & 0 deletions resources/function_help/rpad-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<h3>Funktion rpad()</h3>
Ergibt eine mit einem am Anfang mit einem Zeichen auf eine bestimmte Länge aufgefüllte Zeichenkette.

<h4>Syntax</h4>
<code>rpad(zeichenkette, laenge, fuellzeichen)</code><br>

<h4>Argumente</h4>
<code>zeichenkette</code> - ist string. Die Zeichenkette. <br>
<code>laenge</code> - ist int. Die Länge der neuen Zeichenkette. <br>
<code>fuellzeichen</code> - ist char. Das Zeichen mit dem die Zeichenkette aufgefüllt werden soll.

<h4>Beispiel</h4>
<!-- Show example of function.-->
<code>rpad('Hallo', 10, 'x') &rarr; 'xxxxxHallo'</code><br>

18 changes: 18 additions & 0 deletions resources/function_help/rpad-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<h3>rpad() function</h3>
Returns a string with supplied width padded
using the fill character.

<h4>Syntax</h4>
<code>rpad(string, width, fill)</code><br>

<h4>Arguments</h4>
<code>string</code> - is string. The string.
<br>
<code>width</code> - is int. The length of the new string.
<br>
<code>fill</code> - is char. The character to padd the remaining space with.

<h4>Example</h4>
<!-- Show example of function.-->
<code>rpad('Hello', 10, 'x') &rarr; 'xxxxxHello'</code><br>

19 changes: 19 additions & 0 deletions resources/function_help/second-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<h3>Funktion second()</h3>
Bestimmt die Sekunde eines Datums/Zeit oder die Anzahl der Sekunden
aus einem <code>Intervall</code>

<h4>Syntax</h4>
<code>second(datetime)</code><br>
<code>second(Intervall)</code><br>

<h4>Argumente</h4>
<code>date</code> - ist datetime oder time. Das Datum dessen Sekunden bestimmt werden sollen.<br>
<code>Intervall</code> - ist Interval. Ergib die Intervalllänge in Sekunden.

<h4>Beispiele</h4>
<!-- Show example of function.-->
<code>second('2012-07-22T13:24:57') &rarr; 57</code><br>
<code>second(tointerval('3 seconds')) &rarr; 3</code><br>
<code>second(age('2012-07-22T00:20:00','2012-07-22T00:00:00')) &rarr; 1200</code><br>
<code>second(age('2012-01-01','2010-01-01')) &rarr; 63072000</code><br>

20 changes: 20 additions & 0 deletions resources/function_help/second-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<h3>second() function</h3>
Extract the seconds from a datetime or time, or the number of seconds
from a <code>Interval</code>

<h4>Syntax</h4>
<code>second(datetime)</code><br>
<code>second(Interval)</code><br>

<h4>Arguments</h4>
<code>date</code> - is datetime or time. The date to extract the second from.
<br>
<code>Interval</code> - is Interval. The Interval to return the number of seconds from.

<h4>Example</h4>
<!-- Show example of function.-->
<code>second('2012-07-22T13:24:57') &rarr; 57</code><br>
<code>second(tointerval('3 seconds')) &rarr; 3</code><br>
<code>second(age('2012-07-22T00:20:00','2012-07-22T00:00:00')) &rarr; 1200</code><br>
<code>second(age('2012-01-01','2010-01-01')) &rarr; 63072000</code><br>

17 changes: 17 additions & 0 deletions resources/function_help/strpos-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<h3>Funktion strpos()</h3>
Bestimmt die Position eines regulären Ausdrucks in einer Zeichenkette.

<h4>Syntax</h4>
strpos(<i>heuhaufen<i>,<i>nadel</i>)
<br><br>
Gibt -1 zurück, wenn der Ausdruck nicht gefunden wurde.

<h4>Argumente</h4>
<!-- List args for functions here-->
<i> heuhaufen</i> &rarr; ist string. Zeichenkette in der gesucht werden soll.<br>
<i> nadel</i> &rarr; ist string. Der gesuchte reguläre Ausdruck.<br>

<h4>Beispiel</h4>
<!-- Show example of function.-->
strpos('HELLO WORLD','WORLD') &rarr; 6<br>
strpos('HELLO WORLD','GOOD BYE') &rarr; -1<br>
17 changes: 17 additions & 0 deletions resources/function_help/strpos-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<h3>strpos() function</h3>
Return the index of a regular expression in a string.

<h4>Syntax</h4>
strpos(<i>haystack</i>, <i>needle</i>)
<br><br>
Returns -1 if the expression isn't found.

<p><h4>Arguments</h4>
<!-- List args for functions here-->
<i> haystack</i> &rarr; is string. The string that is to be searched.<br>
<i> needle</i> &rarr; is number. The regular expression to look for.<br>

<h4>Example</h4>
<!-- Show example of function.-->
strpos('HELLO WORLD','WORLD') &rarr; 6<br>
strpos('HELLO WORLD','GOODBYE') &rarr; -1<br>
8 changes: 4 additions & 4 deletions resources/function_help/substr-de_DE
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ Liefert einen Teil einer Zeichenkette

<p><h4>Argumente</h4>
<!-- List args for functions here-->
<i> zeichenkette</i> -> ist eine Zeichenkette. Die vollständige Zeichenkette.<br>
<i> startpos</i> -> ist eine Zahl. Die Startposition des Teils.<br>
<i> länge</i> -> ist eine Zahl. Die Länge des Teils.<br></p>
<i> zeichenkette</i> &rarr; ist eine Zeichenkette. Die vollständige Zeichenkette.<br>
<i> startpos</i> &rarr; ist eine Zahl. Die Startposition des Teils.<br>
<i> länge</i> &rarr; ist eine Zahl. Die Länge des Teils.<br></p>

<p><h4>Beispiel</h4>
<!-- Show example of function.-->
substr('HELLO WORLD',3,5) -> 'LLO W'</p>
substr('HELLO WORLD',3,5) &rarr; 'LLO W'</p>
8 changes: 4 additions & 4 deletions resources/function_help/substr-en_US
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ Return a part of a string

<p><h4>Arguments</h4>
<!-- List args for functions here-->
<i> string</i> -> is string. The full string.<br>
<i> startpos</i> -> is number. The start position to extract from.<br>
<i> length</i> -> is number. The length of the string to extract.<br></p>
<i> string</i> &rarr; is string. The full string.<br>
<i> startpos</i> &rarr; is number. The start position to extract from.<br>
<i> length</i> &rarr; is number. The length of the string to extract.<br></p>

<p><h4>Example</h4>
<!-- Show example of function.-->
substr('HELLO WORLD',3,5) -> 'LLO W'</p>
substr('HELLO WORLD',3,5) &rarr; 'LLO W'</p>
4 changes: 2 additions & 2 deletions resources/function_help/template
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ Converts a string to lower case letters.

<p><h4>Arguments</h4>
<!-- List args for functions here-->
<i> string</i> -> is string. The String to convert to lower case.</p>
<i> string</i> &rarr; is string. The String to convert to lower case.</p>

<p><h4>Example</h4>
<!-- Show example of function.-->
lower('HELLO World') -> 'hello world'</p>
lower('HELLO World') &rarr; 'hello world'</p>
4 changes: 2 additions & 2 deletions resources/function_help/upper-de_DE
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ Wandelt eine Zeichenkette in Großbuchstaben.

<p><h4>Argumente</h4>
<!-- List args for functions here-->
<i> zeichenkette</i> -> ist eine Zeichenkette. Die Zeichenkette, die in Großbuchstaben umzuwandeln ist.</p>
<i> zeichenkette</i> &rarr; ist eine Zeichenkette. Die Zeichenkette, die in Großbuchstaben umzuwandeln ist.</p>

<p><h4>Beispiel</h4>
<!-- Show example of function.-->
upper('hello WOrld') -> 'HELLO WORLD'</p>
upper('hello WOrld') &rarr; 'HELLO WORLD'</p>
4 changes: 2 additions & 2 deletions resources/function_help/upper-en_US
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ Converts a string to upper case letters.

<p><h4>Arguments</h4>
<!-- List args for functions here-->
<i> string</i> -> is string. The String to convert to upper case.</p>
<i> string</i> &rarr; is string. The String to convert to upper case.</p>

<p><h4>Example</h4>
<!-- Show example of function.-->
upper('hello WOrld') -> 'HELLO WORLD'</p>
upper('hello WOrld') &rarr; 'HELLO WORLD'</p>
19 changes: 19 additions & 0 deletions resources/function_help/week-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<h3>Funktion week()</h3>
Bestimmt die Woche eines Datums oder die Anzahl der Wochen
eines <code>Intervalls</code>

<h4>Syntax</h4>
<code>week(date)</code><br>
<code>week(Interval)</code><br>

<h4>Argumente</h4>
<code>date</code> - ist date oder datetime. Das Datum dessen Woche zurückgegeben werden soll.
<br>
<code>Interval</code> - ist Interval. Das Intervall dessen Länge in Wochen zurückgegeben werden soll.

<h4>Beispiel</h4>
<!-- Show example of function.-->
<code>week('2012-05-12') &rarr; 19</code><br>
<code>week(tointerval('3 weeks')) &rarr; 3</code><br>
<code>week(age('2012-01-01','2010-01-01')) &rarr; 104.285...</code><br>

19 changes: 19 additions & 0 deletions resources/function_help/week-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<h3>week() function</h3>
Extract the week number from a date, or the number of weeks
from a <code>Interval</code>

<h4>Syntax</h4>
<code>week(date)</code><br>
<code>week(Interval)</code><br>

<h4>Arguments</h4>
<code>date</code> - is date or datetime. The date to extract the week from.
<br>
<code>Interval</code> - is Interval. The Interval to return the number of weeks from.

<h4>Example</h4>
<!-- Show example of function.-->
<code>week('2012-05-12') &rarr; 19</code><br>
<code>week(tointerval('3 weeks')) &rarr; 3</code><br>
<code>week(age('2012-01-01','2010-01-01')) &rarr; 104.285...</code><br>

11 changes: 11 additions & 0 deletions resources/function_help/xat-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<h3>Funktion xat</h3>
Liefert eine X-Koordinate der Geometrie der aktuellen Geometrie.

<h4>Syntax</h4>
<code>xat(i)</code>

<h4>Argumente</h4>
<code>i</code> - ist int. X-Koordinate des n-ten Punkts einer Linie (Indizes beginnen bei 0; Negative Werte beziehen sich auf das Linienende)

<h4>Beispiel</h4>
<pre>xat(1) &rarr; 5</pre>
11 changes: 11 additions & 0 deletions resources/function_help/xat-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<h3>xat function</h3>
Retrieves a x coordinate of the current feature

<h4>Syntax</h4>
<code>xat(i)</code>

<h4>Arguments</h4>
<code>i<code> - is int. index of point of a line (indices start at 0; negative values apply to the last index).

<h4>Example</h4>
<pre>xat(1) &rarr; 5</pre>
11 changes: 11 additions & 0 deletions resources/function_help/yat-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<h3>Funktion yat</h3>
Liefert eine Y-Koordinate der Geometrie der aktuellen Geometrie.

<h4>Syntax</h4>
<code>xat(i)</code>

<h4>Argumente</h4>
<code>i</code> - ist int. Y-Koordinate des n-ten Punkts einer Linie (Indizes beginnen bei 0; Negative Werte beziehen sich auf das Linienende)

<h4>Beispiel</h4>
<pre>yat(1) &rarr; 5</pre>
11 changes: 11 additions & 0 deletions resources/function_help/yat-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<h3>yat function</h3>
Retrieves a y coordinate of the current feature

<h4>Syntax</h4>
<code>yat(i)</code>

<h4>Arguments</h4>
<code>i<code> - is int. index of point of a line (indices start at 0; negative values apply to the last index).

<h4>Example</h4>
<pre>yat(1) &rarr; 5</pre>
17 changes: 17 additions & 0 deletions resources/function_help/year-de_DE
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<h3>Funktion year()</h3>
Bestimmt das Jahr eines Datums oder die Länge eines <code>Intervals</code> in Jahren.

<h4>Syntax</h4>
<code>year(date)</code><br>
<code>year(Interval)</code><br>

<h4>Argumente</h4>
<code>date</code> - ist date oder datetime. Das Datum dessen Jahr zurückgegeben werden soll.<br>
<code>Interval</code> - ist Interval. Das Interval dessen Länge in Jahren zurückgegeben werden soll.

<h4>Beispiel</h4>
<!-- Show example of function.-->
<code>year('2012-05-12') &rarr; 2012</code><br>
<code>year(tointerval('3 Years')) &rarr; 3</code><br>
<code>year(age('2012-01-01','2010-01-01')) &rarr; 1.9986..</code><br>

19 changes: 19 additions & 0 deletions resources/function_help/year-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<h3>year() function</h3>
Extract the year part from a date, or the number of years
from a <code>Interval</code>

<h4>Syntax</h4>
<code>year(date)</code><br>
<code>year(Interval)</code><br>

<h4>Arguments</h4>
<code>date</code> - is date or datetime. The date to extract the year from.
<br>
<code>Interval</code> - is Interval. The Interval to return the number of years from.

<h4>Example</h4>
<!-- Show example of function.-->
<code>year('2012-05-12') &rarr; 2012</code><br>
<code>year(tointerval('3 Years')) &rarr; 3</code><br>
<code>year(age('2012-01-01','2010-01-01')) &rarr; 1.9986..</code><br>

Binary file modified resources/qgis.db
Binary file not shown.
Binary file modified resources/srs.db
Binary file not shown.
2 changes: 1 addition & 1 deletion scripts/tsstat.pl
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
tr => 'Osman Yilmaz',
uk => 'Сергей Якунин',
vi => 'Bùi Hữu Mạnh',
zh_CN => 'Zhang Jun',
zh_CN => 'Calvin Ngei, Zhang Jun',
zh_TW => 'Nung-yao Lin',
};

Expand Down
2 changes: 2 additions & 0 deletions src/app/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ SET(QGIS_APP_SRCS
qgsmaptooledit.cpp
qgsmaptoolfeatureaction.cpp
qgsmaptoolformannotation.cpp
qgsmaptoolfreezelabels.cpp
qgsmaptoolidentify.cpp
qgsmaptoollabel.cpp
qgsmaptoolmeasureangle.cpp
Expand Down Expand Up @@ -203,6 +204,7 @@ SET (QGIS_APP_MOC_HDRS
qgsmaptooldeletering.h
qgsmaptooldeletevertex.h
qgsmaptoolfeatureaction.h
qgsmaptoolfreezelabels.h
qgsmaptoolidentify.h
qgsmaptoolmeasureangle.h
qgsmaptoolmovefeature.h
Expand Down
279 changes: 116 additions & 163 deletions src/app/composer/qgscomposer.cpp

Large diffs are not rendered by default.

3 changes: 0 additions & 3 deletions src/app/composer/qgscomposer.h
Original file line number Diff line number Diff line change
Expand Up @@ -280,9 +280,6 @@ class QgsComposer: public QMainWindow, private Ui::QgsComposerBase
//! Changes elements that are not suitable for this project
void cleanupAfterTemplateRead();

//! Print to a printer object
void print( QPrinter &printer );

//! Writes state under DOM element
void writeXML( QDomNode& parentNode, QDomDocument& doc );

Expand Down
23 changes: 23 additions & 0 deletions src/app/composer/qgscomposeritemwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,14 +89,34 @@ void QgsComposerItemWidget::on_mBackgroundColorButton_clicked()
mItem->endCommand();
}

void QgsComposerItemWidget::on_mOpacitySpinBox_valueChanged( int value )
{
if ( !mItem )
{
return;
}

mOpacitySlider->blockSignals( true );
mOpacitySlider->setValue( value );
mOpacitySlider->blockSignals( false );
changeItemOpacity( value );
}

void QgsComposerItemWidget::on_mOpacitySlider_sliderReleased()
{
if ( !mItem )
{
return;
}
int value = mOpacitySlider->value();
mOpacitySpinBox->blockSignals( true );
mOpacitySpinBox->setValue( value );
mOpacitySpinBox->blockSignals( false );
changeItemOpacity( value );
}

void QgsComposerItemWidget::changeItemOpacity( int value )
{
mItem->beginCommand( tr( "Item opacity changed" ) );
QBrush itemBrush = mItem->brush();
QColor brushColor = itemBrush.color();
Expand Down Expand Up @@ -151,7 +171,9 @@ void QgsComposerItemWidget::setValuesForGuiElements()
mOutlineWidthSpinBox->blockSignals( true );
mFrameCheckBox->blockSignals( true );
mItemIdLineEdit->blockSignals( true );
mOpacitySpinBox->blockSignals( true );

mOpacitySpinBox->setValue( mItem->brush().color().alpha() );
mOpacitySlider->setValue( mItem->brush().color().alpha() );
mOutlineWidthSpinBox->setValue( mItem->pen().widthF() );
mItemIdLineEdit->setText( mItem->id() );
Expand All @@ -168,6 +190,7 @@ void QgsComposerItemWidget::setValuesForGuiElements()
mOutlineWidthSpinBox->blockSignals( false );
mFrameCheckBox->blockSignals( false );
mItemIdLineEdit->blockSignals( false );
mOpacitySpinBox->blockSignals( false );
}

void QgsComposerItemWidget::on_mPositionButton_clicked()
Expand Down
2 changes: 2 additions & 0 deletions src/app/composer/qgscomposeritemwidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class QgsComposerItemWidget: public QWidget, private Ui::QgsComposerItemWidgetBa
void on_mFrameColorButton_clicked();
void on_mBackgroundColorButton_clicked();
void on_mOpacitySlider_sliderReleased();
void on_mOpacitySpinBox_valueChanged( int value );
void on_mOutlineWidthSpinBox_valueChanged( double d );
void on_mFrameCheckBox_stateChanged( int state );
void on_mPositionButton_clicked();
Expand All @@ -43,6 +44,7 @@ class QgsComposerItemWidget: public QWidget, private Ui::QgsComposerItemWidgetBa
private:
QgsComposerItemWidget();
void setValuesForGuiElements();
void changeItemOpacity( int value );

QgsComposerItem* mItem;
};
Expand Down
2 changes: 2 additions & 0 deletions src/app/composer/qgscomposerlabelwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,10 @@ void QgsComposerLabelWidget::on_mTextEdit_textChanged()
if ( mComposerLabel )
{
mComposerLabel->beginCommand( tr( "Label text changed" ), QgsComposerMergeCommand::ComposerLabelSetText );
mComposerLabel->blockSignals( true );
mComposerLabel->setText( mTextEdit->toPlainText() );
mComposerLabel->update();
mComposerLabel->blockSignals( false );
mComposerLabel->endCommand();
}
}
Expand Down
73 changes: 54 additions & 19 deletions src/app/composer/qgscomposermapwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,25 +69,6 @@ QgsComposerMapWidget::QgsComposerMapWidget( QgsComposerMap* composerMap ): QWidg
connect( composerMap, SIGNAL( itemChanged() ), this, SLOT( setGuiElementValues() ) );
}

if ( mComposerMap )
{
//insert available maps into mMapComboBox
mOverviewFrameMapComboBox->addItem( tr( "None" ), -1 );
const QgsComposition* composition = mComposerMap->composition();
if ( composition )
{
QList<const QgsComposerMap*> availableMaps = composition->composerMapItems();
QList<const QgsComposerMap*>::const_iterator mapItemIt = availableMaps.constBegin();
for ( ; mapItemIt != availableMaps.constEnd(); ++mapItemIt )
{
if (( *mapItemIt )->id() != mComposerMap->id() )
{
mOverviewFrameMapComboBox->addItem( tr( "Map %1" ).arg(( *mapItemIt )->id() ), ( *mapItemIt )->id() );
}
}
}
}

updateOverviewSymbolMarker();

updateGuiElements();
Expand Down Expand Up @@ -893,6 +874,12 @@ void QgsComposerMapWidget::on_mFrameWidthSpinBox_valueChanged( double d )
}
}

void QgsComposerMapWidget::showEvent( QShowEvent * event )
{
refreshMapComboBox();
QWidget::showEvent( event );
}

void QgsComposerMapWidget::insertAnnotationPositionEntries( QComboBox* c )
{
c->insertItem( 0, tr( "Inside frame" ) );
Expand Down Expand Up @@ -999,3 +986,51 @@ void QgsComposerMapWidget::updateOverviewSymbolMarker()
mOverviewFrameStyleButton->setIcon( icon );
}
}

void QgsComposerMapWidget::refreshMapComboBox()
{
if ( !mComposerMap )
{
return;
}

mOverviewFrameMapComboBox->blockSignals( true );

//save the current entry in case it is still present after refresh
QString saveComboText = mOverviewFrameMapComboBox->currentText();

mOverviewFrameMapComboBox->clear();
mOverviewFrameMapComboBox->addItem( tr( "None" ), -1 );
const QgsComposition* composition = mComposerMap->composition();
if ( !composition )
{
return;
}

QList<const QgsComposerMap*> availableMaps = composition->composerMapItems();
QList<const QgsComposerMap*>::const_iterator mapItemIt = availableMaps.constBegin();
for ( ; mapItemIt != availableMaps.constEnd(); ++mapItemIt )
{
if (( *mapItemIt )->id() != mComposerMap->id() )
{
mOverviewFrameMapComboBox->addItem( tr( "Map %1" ).arg(( *mapItemIt )->id() ), ( *mapItemIt )->id() );
}
}


if ( !saveComboText.isEmpty() )
{
int saveTextIndex = mOverviewFrameMapComboBox->findText( saveComboText );
if ( saveTextIndex == -1 )
{
//entry is no longer present
mOverviewFrameMapComboBox->setCurrentIndex( mOverviewFrameMapComboBox->findText( tr( "None" ) ) );
}
else
{
mOverviewFrameMapComboBox->setCurrentIndex( saveTextIndex );
}
}

mOverviewFrameMapComboBox->blockSignals( false );
}
6 changes: 6 additions & 0 deletions src/app/composer/qgscomposermapwidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ class QgsComposerMapWidget: public QWidget, private Ui::QgsComposerMapWidgetBase
void on_mFrameStyleComboBox_currentIndexChanged( const QString& text );
void on_mFrameWidthSpinBox_valueChanged( double d );

protected:
void showEvent( QShowEvent * event );

private slots:

/**Sets the GUI elements to the values of mPicture*/
Expand Down Expand Up @@ -108,6 +111,9 @@ class QgsComposerMapWidget: public QWidget, private Ui::QgsComposerMapWidgetBase
void initAnnotationDirectionBox( QComboBox* c, QgsComposerMap::GridAnnotationDirection dir );

void updateOverviewSymbolMarker();

/**Updates the map combo box with the current composer map ids*/
void refreshMapComboBox();
};

#endif
12 changes: 12 additions & 0 deletions src/app/composer/qgscompositionwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ QgsCompositionWidget::QgsCompositionWidget( QWidget* parent, QgsComposition* c )

if ( mComposition )
{
mNumPagesSpinBox->setValue( mComposition->numPages() );

//read printout resolution from composition
mResolutionSpinBox->setValue( mComposition->printResolution() );

Expand Down Expand Up @@ -328,6 +330,15 @@ void QgsCompositionWidget::on_mPaperHeightDoubleSpinBox_editingFinished()
applyWidthHeight();
}

void QgsCompositionWidget::on_mNumPagesSpinBox_valueChanged( int value )
{
if ( !mComposition )
{
return;
}
mComposition->setNumPages( value );
}

void QgsCompositionWidget::displayCompositionWidthHeight()
{
if ( !mComposition )
Expand Down Expand Up @@ -519,6 +530,7 @@ void QgsCompositionWidget::blockSignals( bool block )
mPaperUnitsComboBox->blockSignals( block );
mPaperWidthDoubleSpinBox->blockSignals( block );
mPaperHeightDoubleSpinBox->blockSignals( block );
mNumPagesSpinBox->blockSignals( block );
mPaperOrientationComboBox->blockSignals( block );
mResolutionSpinBox->blockSignals( block );
mPrintAsRasterCheckBox->blockSignals( block );
Expand Down
1 change: 1 addition & 0 deletions src/app/composer/qgscompositionwidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ class QgsCompositionWidget: public QWidget, private Ui::QgsCompositionWidgetBase
void on_mPaperOrientationComboBox_currentIndexChanged( const QString& text );
void on_mPaperWidthDoubleSpinBox_editingFinished();
void on_mPaperHeightDoubleSpinBox_editingFinished();
void on_mNumPagesSpinBox_valueChanged( int value );
void on_mResolutionSpinBox_valueChanged( const int value );
void on_mPrintAsRasterCheckBox_stateChanged( int state );

Expand Down
48 changes: 35 additions & 13 deletions src/app/legend/qgslegend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -674,13 +674,13 @@ void QgsLegend::handleRightClickEvent( QTreeWidgetItem* item, const QPoint& posi
}
else if ( li->type() == QgsLegendItem::LEGEND_GROUP )
{
theMenu.addAction( QgisApp::getThemeIcon( "/mActionZoomToLayer.png" ),
theMenu.addAction( QgsApplication::getThemeIcon( "/mActionZoomToLayer.png" ),
tr( "Zoom to Group" ), this, SLOT( legendLayerZoom() ) );

// use QGisApp::removeLayer() to remove all selected layers+groups
theMenu.addAction( QgisApp::getThemeIcon( "/mActionRemoveLayer.png" ), tr( "&Remove" ), QgisApp::instance(), SLOT( removeLayer() ) );
theMenu.addAction( QgsApplication::getThemeIcon( "/mActionRemoveLayer.png" ), tr( "&Remove" ), QgisApp::instance(), SLOT( removeLayer() ) );

theMenu.addAction( QgisApp::getThemeIcon( "/mActionSetCRS.png" ),
theMenu.addAction( QgsApplication::getThemeIcon( "/mActionSetCRS.png" ),
tr( "&Set Group CRS" ), this, SLOT( legendGroupSetCRS() ) );
}

Expand Down Expand Up @@ -709,11 +709,11 @@ void QgsLegend::handleRightClickEvent( QTreeWidgetItem* item, const QPoint& posi
}
}

theMenu.addAction( QgisApp::getThemeIcon( "/folder_new.png" ), tr( "&Add New Group" ), this, SLOT( addGroupToCurrentItem() ) );
theMenu.addAction( QgisApp::getThemeIcon( "/mActionExpandTree.png" ), tr( "&Expand All" ), this, SLOT( expandAll() ) );
theMenu.addAction( QgisApp::getThemeIcon( "/mActionCollapseTree.png" ), tr( "&Collapse All" ), this, SLOT( collapseAll() ) );
theMenu.addAction( QgsApplication::getThemeIcon( "/folder_new.png" ), tr( "&Add New Group" ), this, SLOT( addGroupToCurrentItem() ) );
theMenu.addAction( QgsApplication::getThemeIcon( "/mActionExpandTree.png" ), tr( "&Expand All" ), this, SLOT( expandAll() ) );
theMenu.addAction( QgsApplication::getThemeIcon( "/mActionCollapseTree.png" ), tr( "&Collapse All" ), this, SLOT( collapseAll() ) );

QAction *updateDrawingOrderAction = theMenu.addAction( QgisApp::getThemeIcon( "/mUpdateDrawingOrder.png" ), tr( "&Update Drawing Order" ), this, SLOT( toggleDrawingOrderUpdate() ) );
QAction *updateDrawingOrderAction = theMenu.addAction( QgsApplication::getThemeIcon( "/mUpdateDrawingOrder.png" ), tr( "&Update Drawing Order" ), this, SLOT( toggleDrawingOrderUpdate() ) );
updateDrawingOrderAction->setCheckable( true );
updateDrawingOrderAction->setChecked( mUpdateDrawingOrder );

Expand All @@ -722,10 +722,10 @@ void QgsLegend::handleRightClickEvent( QTreeWidgetItem* item, const QPoint& posi

void QgsLegend::initPixmaps()
{
mPixmaps.mOriginalPixmap = QgisApp::getThemePixmap( "/mActionFileSmall.png" );
mPixmaps.mInOverviewPixmap = QgisApp::getThemePixmap( "/mActionInOverview.png" );
mPixmaps.mEditablePixmap = QgisApp::getThemePixmap( "/mIconEditable.png" );
mPixmaps.mProjectionErrorPixmap = QgisApp::getThemePixmap( "/mIconProjectionProblem.png" );
mPixmaps.mOriginalPixmap = QgsApplication::getThemePixmap( "/mActionFileSmall.png" );
mPixmaps.mInOverviewPixmap = QgsApplication::getThemePixmap( "/mActionInOverview.png" );
mPixmaps.mEditablePixmap = QgsApplication::getThemePixmap( "/mIconEditable.png" );
mPixmaps.mProjectionErrorPixmap = QgsApplication::getThemePixmap( "/mIconProjectionProblem.png" );
}

Qt::CheckState QgsLegend::layerCheckState( QgsMapLayer * layer )
Expand Down Expand Up @@ -884,10 +884,16 @@ void QgsLegend::addLayers( QList<QgsMapLayer *> theLayerList )
//Note if the canvas was previously blank so we can
//zoom to all layers at the end if neeeded
bool myFirstLayerFlag = false;
QgsCoordinateReferenceSystem myPreviousCrs;
if ( layers().count() < 1 )
{
myFirstLayerFlag = true;
}
else
{
// remember CRS of present layer
myPreviousCrs = layers().first()->crs();
}

//iteratively add the layers to the canvas
for ( int i = 0; i < theLayerList.size(); ++i )
Expand Down Expand Up @@ -956,10 +962,26 @@ void QgsLegend::addLayers( QList<QgsMapLayer *> theLayerList )
mMapCanvas->zoomToFullExtent();
mMapCanvas->clearExtentHistory();
}
else
{
if ( settings.value( "/Projections/otfTransformAutoEnable", true ).toBool() &&
!mMapCanvas->mapRenderer()->hasCrsTransformEnabled() )
{
// Verify if all layers have the same CRS
foreach( QgsMapLayer *l, layers() )
{
if ( myPreviousCrs != l->crs() )
{
// Set to the previous de facto used so that extent does not change
mMapCanvas->mapRenderer()->setDestinationCrs( myPreviousCrs );
mMapCanvas->mapRenderer()->setProjectionsEnabled( true );
break;
}
}
}
}
//make the QTreeWidget item up-to-date
doItemsLayout();


}

//deprecated since 1.8 - delegates to addLayers
Expand Down
6 changes: 3 additions & 3 deletions src/app/legend/qgslegendgroup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ QgsLegendGroup::QgsLegendGroup( QTreeWidgetItem * theItem, QString theName )
mType = LEGEND_GROUP;
setFlags( Qt::ItemIsEditable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable );
setCheckState( 0, Qt::Checked );
QIcon myIcon = QgisApp::getThemeIcon( "/mActionFolder.png" );
QIcon myIcon = QgsApplication::getThemeIcon( "/mActionFolder.png" );
setIcon( 0, myIcon );
}
QgsLegendGroup::QgsLegendGroup( QTreeWidget* theListView, QString theString )
Expand All @@ -34,7 +34,7 @@ QgsLegendGroup::QgsLegendGroup( QTreeWidget* theListView, QString theString )
mType = LEGEND_GROUP;
setFlags( Qt::ItemIsEditable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable );
setCheckState( 0, Qt::Checked );
QIcon myIcon = QgisApp::getThemeIcon( "/mActionFolder.png" );
QIcon myIcon = QgsApplication::getThemeIcon( "/mActionFolder.png" );
setIcon( 0, myIcon );
}

Expand All @@ -43,7 +43,7 @@ QgsLegendGroup::QgsLegendGroup( QString name ): QgsLegendItem()
mType = LEGEND_GROUP;
setFlags( Qt::ItemIsEditable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable );
setCheckState( 0, Qt::Checked );
QIcon myIcon = QgisApp::getThemeIcon( + "/mActionFolder.png" );
QIcon myIcon = QgsApplication::getThemeIcon( + "/mActionFolder.png" );
setText( 0, name );
setIcon( 0, myIcon );
}
Expand Down
32 changes: 18 additions & 14 deletions src/app/legend/qgslegendlayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ void QgsLegendLayer::updateIcon()
if ( theFile->isInOverview() )
{
// Overlay the overview icon on the default icon
QPixmap myPixmap = QgisApp::getThemePixmap( "/mIconOverview.png" );
QPixmap myPixmap = QgsApplication::getThemePixmap( "/mIconOverview.png" );
QPainter p( &newIcon );
p.drawPixmap( 0, 0, myPixmap );
p.end();
Expand All @@ -334,7 +334,7 @@ void QgsLegendLayer::updateIcon()
//editable
if ( theLayer->isEditable() )
{
QPixmap myPixmap = QgisApp::getThemePixmap( "/mIconEditable.png" );
QPixmap myPixmap = QgsApplication::getThemePixmap( "/mIconEditable.png" );
// use editable icon instead of the layer's type icon
newIcon = myPixmap;

Expand Down Expand Up @@ -371,15 +371,15 @@ QPixmap QgsLegendLayer::getOriginalPixmap()
switch ( vlayer->geometryType() )
{
case QGis::Point:
return QgisApp::getThemePixmap( "/mIconPointLayer.png" );
return QgsApplication::getThemePixmap( "/mIconPointLayer.png" );
case QGis::Line:
return QgisApp::getThemePixmap( "/mIconLineLayer.png" );
return QgsApplication::getThemePixmap( "/mIconLineLayer.png" );
case QGis::Polygon:
return QgisApp::getThemePixmap( "/mIconPolygonLayer.png" );
return QgsApplication::getThemePixmap( "/mIconPolygonLayer.png" );
case QGis::NoGeometry:
return QgisApp::getThemePixmap( "/mIconTableLayer.png" );
return QgsApplication::getThemePixmap( "/mIconTableLayer.png" );
default:
return QgisApp::getThemePixmap( "/mIconLayer.png" );
return QgsApplication::getThemePixmap( "/mIconLayer.png" );
}
}
else if ( theLayer->type() == QgsMapLayer::RasterLayer )
Expand All @@ -400,7 +400,7 @@ QPixmap QgsLegendLayer::getOriginalPixmap()
}

// undefined - should never reach this
return QgisApp::getThemePixmap( "/mIconLayer.png" );
return QgsApplication::getThemePixmap( "/mIconLayer.png" );
}

void QgsLegendLayer::addToPopupMenu( QMenu& theMenu )
Expand All @@ -409,7 +409,7 @@ void QgsLegendLayer::addToPopupMenu( QMenu& theMenu )
QAction *toggleEditingAction = QgisApp::instance()->actionToggleEditing();

// zoom to layer extent
theMenu.addAction( QgisApp::getThemeIcon( "/mActionZoomToLayer.png" ),
theMenu.addAction( QgsApplication::getThemeIcon( "/mActionZoomToLayer.png" ),
tr( "&Zoom to Layer Extent" ), legend(), SLOT( legendLayerZoom() ) );
if ( lyr->type() == QgsMapLayer::RasterLayer )
{
Expand All @@ -430,13 +430,13 @@ void QgsLegendLayer::addToPopupMenu( QMenu& theMenu )
showInOverviewAction->blockSignals( false );

// remove from canvas
theMenu.addAction( QgisApp::getThemeIcon( "/mActionRemoveLayer.png" ), tr( "&Remove" ), QgisApp::instance(), SLOT( removeLayer() ) );
theMenu.addAction( QgsApplication::getThemeIcon( "/mActionRemoveLayer.png" ), tr( "&Remove" ), QgisApp::instance(), SLOT( removeLayer() ) );

// set layer crs
theMenu.addAction( QgisApp::getThemeIcon( "/mActionSetCRS.png" ), tr( "&Set Layer CRS" ), QgisApp::instance(), SLOT( setLayerCRS() ) );
theMenu.addAction( QgsApplication::getThemeIcon( "/mActionSetCRS.png" ), tr( "&Set Layer CRS" ), QgisApp::instance(), SLOT( setLayerCRS() ) );

// assign layer crs to project
theMenu.addAction( QgisApp::getThemeIcon( "/mActionSetProjectCRS.png" ), tr( "Set &Project CRS from Layer" ), QgisApp::instance(), SLOT( setProjectCRSFromLayer() ) );
theMenu.addAction( QgsApplication::getThemeIcon( "/mActionSetProjectCRS.png" ), tr( "Set &Project CRS from Layer" ), QgisApp::instance(), SLOT( setProjectCRSFromLayer() ) );

theMenu.addSeparator();

Expand All @@ -445,7 +445,7 @@ void QgsLegendLayer::addToPopupMenu( QMenu& theMenu )
QgsVectorLayer* vlayer = qobject_cast<QgsVectorLayer *>( lyr );

// attribute table
theMenu.addAction( QgisApp::getThemeIcon( "/mActionOpenTable.png" ), tr( "&Open Attribute Table" ),
theMenu.addAction( QgsApplication::getThemeIcon( "/mActionOpenTable.png" ), tr( "&Open Attribute Table" ),
QgisApp::instance(), SLOT( attributeTable() ) );

// allow editing
Expand All @@ -460,7 +460,7 @@ void QgsLegendLayer::addToPopupMenu( QMenu& theMenu )
}

// save as vector file
theMenu.addAction( tr( "Save As..." ), QgisApp::instance(), SLOT( saveAsVectorFile() ) );
theMenu.addAction( tr( "Save As..." ), QgisApp::instance(), SLOT( saveAsFile() ) );

// save selection as vector file
QAction* saveSelectionAsAction = theMenu.addAction( tr( "Save Selection As..." ), QgisApp::instance(), SLOT( saveSelectionAsVectorFile() ) );
Expand All @@ -480,6 +480,10 @@ void QgsLegendLayer::addToPopupMenu( QMenu& theMenu )
theMenu.addAction( showNFeaturesAction );
theMenu.addSeparator();
}
else if ( lyr->type() == QgsMapLayer::RasterLayer )
{
theMenu.addAction( tr( "Save As..." ), QgisApp::instance(), SLOT( saveAsRasterFile() ) );
}

// properties goes on bottom of menu for consistency with normal ui standards
// e.g. kde stuff
Expand Down
2 changes: 1 addition & 1 deletion src/app/legend/qgslegendpropertygroup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ QgsLegendPropertyGroup::QgsLegendPropertyGroup( QTreeWidgetItem* theLegendItem,
: QgsLegendItem( theLegendItem, theString )
{
mType = LEGEND_PROPERTY_GROUP;
QIcon myIcon = QgisApp::getThemeIcon( "/mIconProperties.png" );
QIcon myIcon = QgsApplication::getThemeIcon( "/mIconProperties.png" );
setText( 0, theString );
setIcon( 0, myIcon );
}
Expand Down
2 changes: 1 addition & 1 deletion src/app/legend/qgslegendsymbologygroup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ QgsLegendSymbologyGroup::QgsLegendSymbologyGroup( QTreeWidgetItem * theItem, QSt
: QgsLegendItem( theItem, theString )
{
mType = LEGEND_SYMBOL_GROUP;
QIcon myIcon = QgisApp::getThemeIcon( "/mIconSymbology.png" );
QIcon myIcon = QgsApplication::getThemeIcon( "/mIconSymbology.png" );
setText( 0, theString );
setIcon( 0, myIcon );
}
Expand Down
2 changes: 1 addition & 1 deletion src/app/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ int main( int argc, char *argv[] )
QgsDebugMsg( QString( "Android: All params stripped" ) );// Param %1" ).arg( argv[0] ) );
//put all QGIS settings in the same place
configpath = QDir::homePath() + QString( "/.qgis/" );
QgsDebugMsg( QString( "Android: configpath set to %1" ).arg(configpath) );
QgsDebugMsg( QString( "Android: configpath set to %1" ).arg( configpath ) );
#elif defined(Q_WS_WIN)
for ( int i = 1; i < argc; i++ )
{
Expand Down
Loading