Skip to content

Commit 2f26b96

Browse files
committed
Release v3.1.0
1 parent 26745be commit 2f26b96

10 files changed

Lines changed: 146 additions & 114 deletions

LoadFiles.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -172,24 +172,23 @@ def loadLayers( self ):
172172
# Look if there is a style to apply
173173
bStyleFound = False
174174
if self.bStyles:
175-
# Has layer a style to apply?
176-
styleFile = os.path.join( baseName, os.path.splitext( baseName )[0] + ".qml" )
177-
178-
if not os.path.exists( styleFile ) and self.bGroups:
175+
if self.bGroups:
179176
# Has the group a style to apply?
180-
aGroup = os.path.dirname( layerPath )
181-
aBaseGroup = os.path.basename( aGroup )
182-
styleFile = os.path.join( aGroup, aBaseGroup + ".qml" )
177+
aGroup = os.path.dirname(layerPath)
178+
aBaseGroup = os.path.basename(aGroup)
179+
styleFile = os.path.join(aGroup, aBaseGroup + ".qml")
183180

184-
if os.path.exists( styleFile ):
185-
ml.loadNamedStyle( styleFile )
186-
bStyleFound = True
181+
if os.path.exists(styleFile):
182+
ml.loadNamedStyle(styleFile)
183+
bStyleFound = True
184+
QgsApplication.messageLog().logMessage("QML for group '{}' applied to layer '{}'".format(
185+
aBaseGroup, ml.name()), "Load Them All", Qgis.Info)
187186

188187
if bStyleFound:
189188
self.iface.layerTreeView().refreshLayerSymbology( ml.id() )
190189
else:
191190
QgsApplication.messageLog().logMessage(
192-
"No style found for layer {} nor for its group!".format(layerPath), "Load Them All", Qgis.Info)
191+
"No style found for layer group '{}' or 'create groups' option is disabled!".format(aBaseGroup), "Load Them All", Qgis.Warning)
193192
# End Styles
194193

195194
else:

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ There are several options for you to configure how layers should be loaded to QG
5252
* **Include parent in search**: Make alphanumeric filters work with the parent name prepended. If enabled, an alphanumeric filter like 'Starts with: rivers' won't match the sublayer rivers, because the parent layer name is taken into account (e.g., 'parent_layer_name rivers').
5353
* **Include parent in loaded sublayers**: Prepend the parent layer name in all its sublayers.
5454

55-
* **Apply layer style**: Whether or not to load QML styles for a single layer (layer_name.qml) or for all layers inside a group (group_name.qml), if they are found in the layer folder.
55+
* **Apply group style to layers**: Whether or not to load QML style (group_name.qml) for all layers inside a group. The QML file must have the same name as the parent folder and must be found in the layer folder.
5656

5757
The plugin supports the following file extensions:
5858
* Vectors
@@ -103,7 +103,7 @@ LICENSE: GPL v2.0
103103
Code contributors:
104104
* David Bakeman (v2.1 and v2.4)
105105
* Sören Gebbert (v2.3)
106-
* Jean Hemmi (V3.1 and French translation)
106+
* Jean Hemmi (v3.1 and French translation)
107107

108108
More info about LoadThemAll at http://geotux.tuxfamily.org/index.php/en/geo-blogs/item/264-plugin-load-them-all-para-quantum-gis
109109

Ui_DockWidget.py

Lines changed: 44 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def setupUi(self, DockWidget):
3333
self.scrollArea.setWidgetResizable(True)
3434
self.scrollArea.setObjectName("scrollArea")
3535
self.scrollAreaWidgetContents = QtWidgets.QWidget()
36-
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 287, 579))
36+
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 323, 570))
3737
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
3838
self.gridLayout = QtWidgets.QGridLayout(self.scrollAreaWidgetContents)
3939
self.gridLayout.setObjectName("gridLayout")
@@ -80,7 +80,7 @@ def setupUi(self, DockWidget):
8080
self.scrollArea_2.setWidgetResizable(True)
8181
self.scrollArea_2.setObjectName("scrollArea_2")
8282
self.scrollAreaWidgetContents_4 = QtWidgets.QWidget()
83-
self.scrollAreaWidgetContents_4.setGeometry(QtCore.QRect(0, 0, 302, 608))
83+
self.scrollAreaWidgetContents_4.setGeometry(QtCore.QRect(0, 0, 323, 598))
8484
self.scrollAreaWidgetContents_4.setObjectName("scrollAreaWidgetContents_4")
8585
self.gridLayout_11 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents_4)
8686
self.gridLayout_11.setObjectName("gridLayout_11")
@@ -135,7 +135,7 @@ def setupUi(self, DockWidget):
135135
self.scrollArea_3.setAlignment(QtCore.Qt.AlignCenter)
136136
self.scrollArea_3.setObjectName("scrollArea_3")
137137
self.scrollAreaWidgetContents_2 = QtWidgets.QWidget()
138-
self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 348, 469))
138+
self.scrollAreaWidgetContents_2.setGeometry(QtCore.QRect(0, 0, 323, 493))
139139
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
140140
sizePolicy.setHorizontalStretch(0)
141141
sizePolicy.setVerticalStretch(0)
@@ -235,7 +235,7 @@ def setupUi(self, DockWidget):
235235
self.chkAddParentLayerName.setChecked(True)
236236
self.chkAddParentLayerName.setObjectName("chkAddParentLayerName")
237237
self.gridLayout_13.addWidget(self.chkAddParentLayerName, 1, 0, 1, 1)
238-
self.gridLayout_14.addWidget(self.groupBox_2, 8, 0, 1, 1)
238+
self.gridLayout_14.addWidget(self.groupBox_2, 10, 0, 1, 1)
239239
self.groupBox = QtWidgets.QGroupBox(self.scrollAreaWidgetContents_2)
240240
self.groupBox.setMinimumSize(QtCore.QSize(0, 60))
241241
self.groupBox.setMaximumSize(QtCore.QSize(16777215, 100))
@@ -263,12 +263,14 @@ def setupUi(self, DockWidget):
263263
self.horizontalLayout_2.setStretch(0, 1)
264264
self.horizontalLayout_2.setStretch(1, 1)
265265
self.gridLayout_5.addLayout(self.horizontalLayout_2, 0, 0, 1, 1)
266-
self.gridLayout_14.addWidget(self.groupBox, 10, 0, 1, 1)
266+
self.gridLayout_14.addWidget(self.groupBox, 12, 0, 1, 1)
267267
spacerItem3 = QtWidgets.QSpacerItem(20, 13, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
268-
self.gridLayout_14.addItem(spacerItem3, 11, 0, 1, 1)
268+
self.gridLayout_14.addItem(spacerItem3, 13, 0, 1, 1)
269269
self.chkStyles = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_2)
270270
self.chkStyles.setObjectName("chkStyles")
271-
self.gridLayout_14.addWidget(self.chkStyles, 9, 0, 1, 1)
271+
self.gridLayout_14.addWidget(self.chkStyles, 8, 0, 1, 1)
272+
spacerItem4 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
273+
self.gridLayout_14.addItem(spacerItem4, 9, 0, 1, 1)
272274
self.gridLayout_3.addLayout(self.gridLayout_14, 0, 0, 1, 1)
273275
self.scrollArea_3.setWidget(self.scrollAreaWidgetContents_2)
274276
self.gridLayout_4.addWidget(self.scrollArea_3, 0, 0, 1, 1)
@@ -286,33 +288,33 @@ def setupUi(self, DockWidget):
286288
self.scrollArea_4.setWidgetResizable(True)
287289
self.scrollArea_4.setObjectName("scrollArea_4")
288290
self.scrollAreaWidgetContents_3 = QtWidgets.QWidget()
289-
self.scrollAreaWidgetContents_3.setGeometry(QtCore.QRect(0, 0, 358, 486))
291+
self.scrollAreaWidgetContents_3.setGeometry(QtCore.QRect(0, 0, 358, 474))
290292
self.scrollAreaWidgetContents_3.setObjectName("scrollAreaWidgetContents_3")
291293
self.gridLayout_12 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents_3)
292294
self.gridLayout_12.setObjectName("gridLayout_12")
293-
spacerItem4 = QtWidgets.QSpacerItem(20, 15, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
294-
self.gridLayout_12.addItem(spacerItem4, 0, 0, 1, 1)
295+
spacerItem5 = QtWidgets.QSpacerItem(20, 15, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
296+
self.gridLayout_12.addItem(spacerItem5, 0, 0, 1, 1)
295297
self.label_4 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3)
296298
self.label_4.setScaledContents(False)
297299
self.label_4.setAlignment(QtCore.Qt.AlignCenter)
298300
self.label_4.setWordWrap(True)
299301
self.label_4.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse)
300302
self.label_4.setObjectName("label_4")
301303
self.gridLayout_12.addWidget(self.label_4, 1, 0, 1, 1)
302-
spacerItem5 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
303-
self.gridLayout_12.addItem(spacerItem5, 2, 0, 1, 1)
304+
spacerItem6 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
305+
self.gridLayout_12.addItem(spacerItem6, 2, 0, 1, 1)
304306
self.gridLayout_9 = QtWidgets.QGridLayout()
305307
self.gridLayout_9.setObjectName("gridLayout_9")
306-
spacerItem6 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
307-
self.gridLayout_9.addItem(spacerItem6, 0, 0, 1, 1)
308+
spacerItem7 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
309+
self.gridLayout_9.addItem(spacerItem7, 0, 0, 1, 1)
308310
self.btnHelp = QtWidgets.QPushButton(self.scrollAreaWidgetContents_3)
309311
self.btnHelp.setObjectName("btnHelp")
310312
self.gridLayout_9.addWidget(self.btnHelp, 0, 1, 1, 1)
311-
spacerItem7 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
312-
self.gridLayout_9.addItem(spacerItem7, 0, 2, 1, 1)
313+
spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
314+
self.gridLayout_9.addItem(spacerItem8, 0, 2, 1, 1)
313315
self.gridLayout_12.addLayout(self.gridLayout_9, 3, 0, 1, 1)
314-
spacerItem8 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
315-
self.gridLayout_12.addItem(spacerItem8, 4, 0, 1, 1)
316+
spacerItem9 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
317+
self.gridLayout_12.addItem(spacerItem9, 4, 0, 1, 1)
316318
self.label_5 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3)
317319
self.label_5.setMinimumSize(QtCore.QSize(0, 40))
318320
font = QtGui.QFont()
@@ -329,12 +331,12 @@ def setupUi(self, DockWidget):
329331
self.label_5.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByKeyboard|QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextBrowserInteraction|QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse)
330332
self.label_5.setObjectName("label_5")
331333
self.gridLayout_12.addWidget(self.label_5, 5, 0, 1, 1)
332-
spacerItem9 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
333-
self.gridLayout_12.addItem(spacerItem9, 6, 0, 1, 1)
334+
spacerItem10 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
335+
self.gridLayout_12.addItem(spacerItem10, 6, 0, 1, 1)
334336
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
335337
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
336-
spacerItem10 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
337-
self.horizontalLayout_4.addItem(spacerItem10)
338+
spacerItem11 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
339+
self.horizontalLayout_4.addItem(spacerItem11)
338340
self.label_2 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3)
339341
self.label_2.setMaximumSize(QtCore.QSize(85, 16777215))
340342
self.label_2.setText("")
@@ -346,8 +348,8 @@ def setupUi(self, DockWidget):
346348
self.verticalLayout_3.setContentsMargins(9, -1, -1, -1)
347349
self.verticalLayout_3.setSpacing(0)
348350
self.verticalLayout_3.setObjectName("verticalLayout_3")
349-
spacerItem11 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
350-
self.verticalLayout_3.addItem(spacerItem11)
351+
spacerItem12 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
352+
self.verticalLayout_3.addItem(spacerItem12)
351353
self.label = QtWidgets.QLabel(self.scrollAreaWidgetContents_3)
352354
self.label.setMinimumSize(QtCore.QSize(230, 0))
353355
font = QtGui.QFont()
@@ -372,8 +374,8 @@ def setupUi(self, DockWidget):
372374
self.label_3.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse)
373375
self.label_3.setObjectName("label_3")
374376
self.verticalLayout_3.addWidget(self.label_3)
375-
spacerItem12 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum)
376-
self.verticalLayout_3.addItem(spacerItem12)
377+
spacerItem13 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum)
378+
self.verticalLayout_3.addItem(spacerItem13)
377379
self.label_7 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3)
378380
font = QtGui.QFont()
379381
font.setFamily("Sans Serif")
@@ -384,22 +386,22 @@ def setupUi(self, DockWidget):
384386
self.label_7.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse)
385387
self.label_7.setObjectName("label_7")
386388
self.verticalLayout_3.addWidget(self.label_7)
387-
spacerItem13 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
388-
self.verticalLayout_3.addItem(spacerItem13)
389+
spacerItem14 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
390+
self.verticalLayout_3.addItem(spacerItem14)
389391
self.horizontalLayout_4.addLayout(self.verticalLayout_3)
390-
spacerItem14 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
391-
self.horizontalLayout_4.addItem(spacerItem14)
392+
spacerItem15 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
393+
self.horizontalLayout_4.addItem(spacerItem15)
392394
self.gridLayout_12.addLayout(self.horizontalLayout_4, 7, 0, 1, 1)
393-
spacerItem15 = QtWidgets.QSpacerItem(20, 5, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
394-
self.gridLayout_12.addItem(spacerItem15, 8, 0, 1, 1)
395+
spacerItem16 = QtWidgets.QSpacerItem(20, 5, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
396+
self.gridLayout_12.addItem(spacerItem16, 8, 0, 1, 1)
395397
self.scrollArea_4.setWidget(self.scrollAreaWidgetContents_3)
396398
self.gridLayout_7.addWidget(self.scrollArea_4, 0, 0, 1, 1)
397399
self.tabWidget.addTab(self.tabAbout, "")
398400
self.gridLayout_8.addWidget(self.tabWidget, 0, 0, 1, 1)
399401
self.horizontalLayout = QtWidgets.QHBoxLayout()
400402
self.horizontalLayout.setObjectName("horizontalLayout")
401-
spacerItem16 = QtWidgets.QSpacerItem(10, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
402-
self.horizontalLayout.addItem(spacerItem16)
403+
spacerItem17 = QtWidgets.QSpacerItem(10, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
404+
self.horizontalLayout.addItem(spacerItem17)
403405
self.progressBar = QtWidgets.QProgressBar(self.dockWidgetContents)
404406
self.progressBar.setProperty("value", 0)
405407
self.progressBar.setObjectName("progressBar")
@@ -410,13 +412,13 @@ def setupUi(self, DockWidget):
410412
self.btnCancel = QtWidgets.QPushButton(self.dockWidgetContents)
411413
self.btnCancel.setObjectName("btnCancel")
412414
self.horizontalLayout.addWidget(self.btnCancel)
413-
spacerItem17 = QtWidgets.QSpacerItem(10, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
414-
self.horizontalLayout.addItem(spacerItem17)
415+
spacerItem18 = QtWidgets.QSpacerItem(10, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
416+
self.horizontalLayout.addItem(spacerItem18)
415417
self.gridLayout_8.addLayout(self.horizontalLayout, 1, 0, 1, 1)
416418
DockWidget.setWidget(self.dockWidgetContents)
417419

418420
self.retranslateUi(DockWidget)
419-
self.tabWidget.setCurrentIndex(3)
421+
self.tabWidget.setCurrentIndex(0)
420422
QtCore.QMetaObject.connectSlotsByName(DockWidget)
421423

422424
def retranslateUi(self, DockWidget):
@@ -446,16 +448,17 @@ def retranslateUi(self, DockWidget):
446448
self.chkAddParentLayerName.setText(_translate("DockWidget", "Include parent name in loaded sublayers"))
447449
self.txtNumLayersToConfirm.setText(_translate("DockWidget", "50"))
448450
self.label_6.setText(_translate("DockWidget", "Number of layers to show you a confirmation dialog before the load"))
449-
self.chkStyles.setText(_translate("DockWidget", "Apply styles"))
451+
self.chkStyles.setToolTip(_translate("DockWidget", "When checked, if groups are checked and a QML is found inside a layer folder with the\n"
452+
"same folder name (e.g., my_group.qml), it will be applied to all layers inside that group."))
453+
self.chkStyles.setText(_translate("DockWidget", "Apply group style to layers"))
450454
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabConfiguration), _translate("DockWidget", "Configuration"))
451455
self.label_4.setText(_translate("DockWidget", "The <i>Load Them All</i> plugin allows you to load at the same time a number of layers stored in a directory structure, based on a variety of filters you may customize."))
452456
self.btnHelp.setText(_translate("DockWidget", "Help"))
453457
self.label_5.setText(_translate("DockWidget", "<html><head/><body><p>Feel free to report bugs, suggest improvements or say hello at gcarrillo@linuxmail.org or directly at the <a href=\"https://github.com/gacarrillor/loadthemall\"><span style=\" text-decoration: underline; color:#0000ff;\">GitHub repository</span></a></p></body></html>"))
454-
self.label.setText(_translate("DockWidget", "Copyright (C) 2010-2018 Germán Carrillo"))
458+
self.label.setText(_translate("DockWidget", "Copyright (C) 2010-2019 Germán Carrillo"))
455459
self.label_3.setText(_translate("DockWidget", "<i>Licensed under the terms of GNU GPL 2</i>"))
456-
self.label_7.setText(_translate("DockWidget", "<html><head/><body><p><span style=\" font-style:italic;\">Code contributors:</span><br/><br/>     David Bakeman (v2.1 and v2.4)<br/>     Soeren Gebbert (v2.3)<br/>     Jean Hemmi (V3.0.2 &amp; fr translation)</p></body></html>"))
460+
self.label_7.setText(_translate("DockWidget", "<html><head/><body><p><span style=\" font-style:italic;\">Code contributors:</span><br/><br/>     David Bakeman (v2.1 and v2.4)<br/>     Soeren Gebbert (v2.3)<br/>     Jean Hemmi (v3.1 &amp; French transl.)</p></body></html>"))
457461
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabAbout), _translate("DockWidget", "About"))
458462
self.btnLoadLayers.setText(_translate("DockWidget", "Load layers"))
459463
self.btnCancel.setText(_translate("DockWidget", "Cancel"))
460464

461-
import resources_rc

0 commit comments

Comments
 (0)