Skip to content

Commit 1d3ac80

Browse files
committedMay 19, 2011
Merge remote branch 'pb/master'
2 parents 626c8dd + 0390131 commit 1d3ac80

26 files changed

+295
-54
lines changed
 

‎.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,7 @@ ms-windows/untgz/
3030
scripts/astyle.exe
3131
# vim temporary files
3232
.*.swp
33+
*.aux
34+
*.out
35+
*.tex
36+
*.toc

‎cmake/Txt2Tags.cmake

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,14 @@ MACRO(ADD_TXT2TAGS_FILES _sources)
4646
COMMENT "Building ${_out}.html from ${_in}"
4747
)
4848

49+
ADD_CUSTOM_COMMAND(
50+
OUTPUT ${_out}.tex
51+
COMMAND ${TXT2TAGS_EXECUTABLE}
52+
ARGS -o${_out}.tex -t tex ${_in}
53+
DEPENDS ${_in}
54+
COMMENT "Building ${_out}.tex from ${_in}"
55+
)
56+
4957
SET(${_sources} ${${_sources}} ${_out} ${_out}.html)
5058
ENDFOREACH (_current_FILE)
5159
ENDMACRO(ADD_TXT2TAGS_FILES)

‎doc/CODING.t2t

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,37 @@ Developers guide for QGIS
1212
%! PostProc(txt): '(?i)(\t)' ' '
1313
%! encoding: iso-8859-1
1414

15+
%
16+
% Tex processing
17+
%
18+
% Make sure this is first
19+
%! PostProc(tex): '\\includegraphics' '\\includegraphics[width=100mm]'
20+
% scartcl is from the koma script document class (apt-get install texlive-latex-recommended ttf-komatuna)
21+
% setlength parindent suppresses first line of paragraph idents
22+
% parskip puts blank space between paragraphs
23+
% title pic stuff used to put a logo on the front page
24+
%! PostProc(tex): '\\documentclass{article}' '\\documentclass{scrartcl}\n\\setlength{\\parindent}{0pt}\n\\setlength{\\parskip}{2ex}'
25+
% use the color table and table packages so we can pimp the tables a little
26+
%! PostProc(tex): '\\usepackage{style.css} % user defined' '\\usepackage{fancyvrb}\n\\usepackage{colortbl} \n\\usepackage [table]{xcolor}\n\\definecolor{tableShade}{HTML}{cecece}\n\\definecolor{qgis-green}{HTML}{0E7300}\n\\usepackage{wallpaper}\n\\LRCornerWallPaper{1}{WALLPAPER-IMAGE}\n\\usepackage{hyperref}\n\\hypersetup{linkcolor=qgis-green,urlcolor=qgis-green}\\renewcommand\\thesection{\\color{qgis-green}\\thechapter\\arabic{section}}'
27+
% Make the header row of tables have a dark background. light text
28+
%! PostProc(tex): '\\hline \\textbf' '\\hline \\rowcolor[rgb]{0,0,0} \\color{white} \\textbf'
29+
%! PostProc(tex): '& \\textbf' '& \\color{white} \\textbf'
30+
% Make verbatim text a little smaller and use fancyvrb package to draw it in a box
31+
% Note Verbatim with capital V for fancyvrb to work
32+
%! PostProc(tex): '\\begin{verbatim}' '{\\scriptsize\\begin{Verbatim}[frame=single,rulecolor=\\color{qgis-green}, framesep=4mm, label=\\fbox{\\small\\emph{Listing}}]'
33+
%! PostProc(tex): '\\end{verbatim}' '\\end{Verbatim}\n}'
34+
%! PostProc(tex): '\\section' '\\newpage\\section'
35+
%! PostProc(tex): 'section{' 'section{\\color{qgis-green}'
36+
%! PostProc(tex): NEWPAGE '\\newpage'
37+
% Give alternating table rows different colours and use a smaller font in tables (\tiny)
38+
%! PostProc(tex): '\\begin{tabular}' '\\rowcolors{2}{tableShade}{white} \n\\tiny\\begin{tabular}'
39+
%! encoding: iso-8859-1
1540

41+
%! PostProc(tex): WALLPAPER-IMAGE 'qgis-footer.png'
1642
% These are comments and will not be generated in any output
1743
% -------------------
1844

19-
%This document is in text2tags format. You can generate html, plain text and
45+
%This document is in txt2tags format. You can generate html, plain text and
2046
%moinmoin formatted documentation by running txt2tags on this document. See the
2147
%txt2tags home page for more details. Please insert manual line breaks in this
2248
%document as it makes diffing for changes much easier. To do this in vim
@@ -26,12 +52,13 @@ Developers guide for QGIS
2652

2753
% To generate the text version of this document:
2854
% txt2tags -t txt -o CODING CODING.t2t
29-
% To generate the moinmoin version of this document:
30-
% txt2tags -t moin -o CODING.moin CODING.t2t
55+
% To generate the mediawiki version of this document:
56+
% txt2tags -t wiki --no-enum-title -o CODING.wiki CODING.t2t
3157
% To generate the html version of this document:
3258
% txt2tags -t html -o CODING.html CODING.t2t
3359
% To generate the LaTeX version of this document:
34-
% txt2tags -t tex -o CODING.tex CODING.t2t
60+
% txt2tags -t tex -o CODING.tex CODING.t2t; pdflatex CODING.tex
61+
3562
%
3663
% End of comments
3764
% -------------------

‎doc/INSTALL.t2t

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
Quantum GIS (QGIS)
2-
32
Building QGIS from source - step by step
4-
3+
%%date(%A %B %d, %Y)
54

65
%! target : html
76
%! style : style.css
@@ -12,6 +11,33 @@ Building QGIS from source - step by step
1211
% Next line will replace tabs with 2 spaces in txt generated outputs
1312
%! PostProc(txt): '(?i)(\t)' ' '
1413
%! encoding: iso-8859-1
14+
%
15+
% Tex processing
16+
%
17+
% Make sure this is first
18+
%! PostProc(tex): '\\includegraphics' '\\includegraphics[width=100mm]'
19+
% scartcl is from the koma script document class (apt-get install texlive-latex-recommended ttf-komatuna)
20+
% setlength parindent suppresses first line of paragraph idents
21+
% parskip puts blank space between paragraphs
22+
% title pic stuff used to put a logo on the front page
23+
%! PostProc(tex): '\\documentclass{article}' '\\documentclass{scrartcl}\n\\setlength{\\parindent}{0pt}\n\\setlength{\\parskip}{2ex}'
24+
% use the color table and table packages so we can pimp the tables a little
25+
%! PostProc(tex): '\\usepackage{style.css} % user defined' '\\usepackage{fancyvrb}\n\\usepackage{colortbl} \n\\usepackage [table]{xcolor}\n\\definecolor{tableShade}{HTML}{cecece}\n\\definecolor{qgis-green}{HTML}{0E7300}\n\\usepackage{wallpaper}\n\\LRCornerWallPaper{1}{WALLPAPER-IMAGE}\n\\usepackage{hyperref}\n\\hypersetup{linkcolor=qgis-green,urlcolor=qgis-green}\\renewcommand\\thesection{\\color{qgis-green}\\thechapter\\arabic{section}}'
26+
% Make the header row of tables have a dark background. light text
27+
%! PostProc(tex): '\\hline \\textbf' '\\hline \\rowcolor[rgb]{0,0,0} \\color{white} \\textbf'
28+
%! PostProc(tex): '& \\textbf' '& \\color{white} \\textbf'
29+
% Make verbatim text a little smaller and use fancyvrb package to draw it in a box
30+
% Note Verbatim with capital V for fancyvrb to work
31+
%! PostProc(tex): '\\begin{verbatim}' '{\\scriptsize\\begin{Verbatim}[frame=single,rulecolor=\\color{qgis-green}, framesep=4mm, label=\\fbox{\\small\\emph{Listing}}]'
32+
%! PostProc(tex): '\\end{verbatim}' '\\end{Verbatim}\n}'
33+
%! PostProc(tex): '\\section' '\\newpage\\section'
34+
%! PostProc(tex): 'section{' 'section{\\color{qgis-green}'
35+
%! PostProc(tex): NEWPAGE '\\newpage'
36+
% Give alternating table rows different colours and use a smaller font in tables (\tiny)
37+
%! PostProc(tex): '\\begin{tabular}' '\\rowcolors{2}{tableShade}{white} \n\\tiny\\begin{tabular}'
38+
%! encoding: iso-8859-1
39+
40+
%! PostProc(tex): WALLPAPER-IMAGE 'qgis-footer.png'
1541
% These are comments and will not be generated in any output
1642
% -------------------
1743

@@ -30,13 +56,13 @@ Building QGIS from source - step by step
3056
% To generate the html version of this document:
3157
% txt2tags -t html -o INSTALL.html INSTALL.t2t
3258
% To generate the LaTeX version of this document:
33-
% txt2tags -t tex -o INSTALL.tex INSTALL.t2t
59+
% txt2tags -t tex -o INSTALL.tex INSTALL.t2t; pdflatex INSTALL.tex
3460

3561
% End of comments
3662
% -------------------
3763

38-
Last update: %%date
39-
Last change: %%mtime
64+
Last Updated: %%date(%A %B %d, %Y)
65+
Last Change : %%mtime(%A %B %d, %Y)
4066

4167
%%toc
4268

‎doc/iauthors.t2t

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,6 @@ The following people have contributed to this document:
2626
- GNU/Linux Section
2727
- Tim Sutton 2006
2828
- Debian package section: Juergen Fischer 2008
29+
30+
- Latex Generator
31+
- Tim Sutton 2011

‎doc/qgis-footer.png

109 KB
Loading

‎doc/qgis-footer.xcf

308 KB
Binary file not shown.

‎python/core/qgscomposeritem.sip

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,9 @@ class QgsComposerItem: QObject, QGraphicsRectItem
253253

254254
double rotation() const;
255255

256+
/**Updates item, with the possibility to do custom update for subclasses*/
257+
virtual void updateItem();
258+
256259
public slots:
257260
virtual void setRotation( double r);
258261

‎python/core/qgscomposermap.sip

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ class QgsComposerMap : QgsComposerItem
9494
/**Sets new Extent and changes width, height (and implicitely also scale)*/
9595
void setNewExtent( const QgsRectangle& extent );
9696

97-
PreviewMode previewMode();
97+
PreviewMode previewMode() const;
9898
void setPreviewMode( PreviewMode m );
9999

100100
/**Getter for flag that determines if the stored layer set should be used or the current layer set of the qgis mapcanvas
@@ -222,6 +222,10 @@ class QgsComposerMap : QgsComposerItem
222222
void setCrossLength(double l);
223223
double crossLength();
224224

225+
void setMapRotation( double r );
226+
227+
void updateItem();
228+
225229
public slots:
226230

227231
/**Called if map canvas has changed*/

‎python/plugins/fTools/tools/doMergeShapes.py

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ def outFile( self ):
5858
self.leOutShape.setText( self.outFileName )
5959

6060
def inputFile( self ):
61-
files = QFileDialog.getOpenFileNames( self, self.tr( "Select files to merge" ), ".", "Shapefiles(*.shp *.SHP)" )
62-
if files.isEmpty():
61+
( files, self.inEncoding ) = ftools_utils.openDialog( self, dialogMode="ManyFiles" )
62+
if files is None or self.inEncoding is None:
6363
self.inputFiles = None
6464
return
6565

@@ -134,7 +134,7 @@ def accept( self ):
134134
self.btnOk.setEnabled( False )
135135

136136
self.mergeThread = ShapeMergeThread( baseDir, self.inputFiles, self.inEncoding, self.outFileName, self.encoding )
137-
QObject.connect( self.mergeThread, SIGNAL( "rangeChanged( PyQt_PyObject )" ), self.setProgressRange )
137+
QObject.connect( self.mergeThread, SIGNAL( "rangeChanged( PyQt_PyObject )" ), self.setFeatureProgressRange )
138138
QObject.connect( self.mergeThread, SIGNAL( "checkStarted()" ), self.setFeatureProgressFormat )
139139
QObject.connect( self.mergeThread, SIGNAL( "checkFinished()" ), self.resetFeatureProgressFormat )
140140
QObject.connect( self.mergeThread, SIGNAL( "fileNameChanged( PyQt_PyObject )" ), self.setShapeProgressFormat )
@@ -149,8 +149,8 @@ def accept( self ):
149149

150150
self.mergeThread.start()
151151

152-
def setProgressRange( self, max ):
153-
self.progressFeatures.setRange( 0, max )
152+
def setFeatureProgressRange( self, maximum ):
153+
self.progressFeatures.setRange( 0, maximum )
154154
self.progressFeatures.setValue( 0 )
155155

156156
def setFeatureProgressFormat( self ):
@@ -216,13 +216,38 @@ def run( self ):
216216

217217
interrupted = False
218218

219+
# create attribute list with uniquie fields
220+
# from all selected layers
221+
mergedFields = {}
222+
count = 0
223+
self.emit( SIGNAL( "rangeChanged( PyQt_PyObject )" ), len( self.shapes ) )
224+
self.emit( SIGNAL( "checkStarted()" ) )
225+
for fileName in self.shapes:
226+
layerPath = QFileInfo( self.baseDir + "/" + fileName ).absoluteFilePath()
227+
newLayer = QgsVectorLayer( layerPath, QFileInfo( layerPath ).baseName(), "ogr" )
228+
if not newLayer.isValid():
229+
continue
230+
vprovider = newLayer.dataProvider()
231+
layerFields = vprovider.fields()
232+
for layerIndex, layerField in layerFields.iteritems():
233+
fieldFound = False
234+
for mergedIndex, mergedField in mergedFields.iteritems():
235+
if ( mergedField.name() == layerField.name() ) and ( mergedField.type() == layerField.type() ):
236+
fieldFound = True
237+
238+
if not fieldFound:
239+
mergedFields[ count ] = layerField
240+
count += 1
241+
self.emit( SIGNAL( "featureProcessed()" ) )
242+
self.emit( SIGNAL( "checkFinished()" ) )
243+
219244
# get information about shapefiles
220245
layerPath = QFileInfo( self.baseDir + "/" + self.shapes[ 0 ] ).absoluteFilePath()
221246
newLayer = QgsVectorLayer( layerPath, QFileInfo( layerPath ).baseName(), "ogr" )
222247
self.crs = newLayer.crs()
223248
self.geom = newLayer.wkbType()
224249
vprovider = newLayer.dataProvider()
225-
self.fields = vprovider.fields()
250+
self.fields = mergedFields
226251

227252
writer = QgsVectorFileWriter( self.outputFileName, self.outputEncoding,
228253
self.fields, self.geom, self.crs )
@@ -234,6 +259,7 @@ def run( self ):
234259
continue
235260
vprovider = newLayer.dataProvider()
236261
vprovider.setEncoding( self.inputEncoding )
262+
layerFields = vprovider.fields()
237263
allAttrs = vprovider.attributeIndexes()
238264
vprovider.select( allAttrs )
239265
nFeat = vprovider.featureCount()
@@ -244,9 +270,15 @@ def run( self ):
244270
inGeom = QgsGeometry()
245271
while vprovider.nextFeature( inFeat ):
246272
atMap = inFeat.attributeMap()
273+
mergedAttrs = {}
274+
# fill available attributes with values
275+
for layerIndex, layerField in layerFields.iteritems():
276+
for mergedIndex, mergedField in self.fields.iteritems():
277+
if ( mergedField.name() == layerField.name() ) and ( mergedField.type() == layerField.type() ):
278+
mergedAttrs[ mergedIndex ] = atMap[ layerIndex ]
247279
inGeom = QgsGeometry( inFeat.geometry() )
248280
outFeat.setGeometry( inGeom )
249-
outFeat.setAttributeMap( atMap )
281+
outFeat.setAttributeMap( mergedAttrs )
250282
writer.addFeature( outFeat )
251283
self.emit( SIGNAL( "featureProcessed()" ) )
252284

‎python/plugins/fTools/tools/ftools_utils.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ def getUniqueValues( provider, index ):
253253
return values
254254

255255
# Generate a save file dialog with a dropdown box for choosing encoding style
256-
def saveDialog( parent, filtering="Shapefiles (*.shp)"):
256+
def saveDialog( parent, filtering="Shapefiles (*.shp *.SHP)"):
257257
settings = QSettings()
258258
dirName = settings.value( "/UI/lastShapefileDir" ).toString()
259259
encode = settings.value( "/UI/encoding" ).toString()
@@ -269,18 +269,24 @@ def saveDialog( parent, filtering="Shapefiles (*.shp)"):
269269
return ( unicode( files.first() ), unicode( fileDialog.encoding() ) )
270270

271271
# Generate a save file dialog with a dropdown box for choosing encoding style
272-
def openDialog( parent, filtering="Shapefiles (*.shp)"):
272+
# with mode="SingleFile" will allow to select only one file, in other cases - several files
273+
def openDialog( parent, filtering="Shapefiles (*.shp *.SHP)", dialogMode="SingleFile"):
273274
settings = QSettings()
274275
dirName = settings.value( "/UI/lastShapefileDir" ).toString()
275276
encode = settings.value( "/UI/encoding" ).toString()
276277
fileDialog = QgsEncodingFileDialog( parent, "Save output shapefile", dirName, QString(filtering), encode )
277-
fileDialog.setFileMode( QFileDialog.AnyFile )
278+
#fileDialog.setFileMode( QFileDialog.AnyFile )
279+
fileDialog.setFileMode( QFileDialog.ExistingFiles )
278280
fileDialog.setAcceptMode( QFileDialog.AcceptOpen )
279281
if not fileDialog.exec_() == QDialog.Accepted:
280282
return None, None
281283
files = fileDialog.selectedFiles()
282284
settings.setValue("/UI/lastShapefileDir", QVariant( QFileInfo( unicode( files.first() ) ).absolutePath() ) )
283-
return ( unicode( files.first() ), unicode( fileDialog.encoding() ) )
285+
#return ( unicode( files.first() ), unicode( fileDialog.encoding() ) )
286+
if dialogMode == "SingleFile":
287+
return ( unicode( files.first() ), unicode( fileDialog.encoding() ) )
288+
else:
289+
return ( files, unicode( fileDialog.encoding() ) )
284290

285291
# Generate a select directory dialog with a dropdown box for choosing encoding style
286292
def dirDialog( parent ):

0 commit comments

Comments
 (0)
Please sign in to comment.