Skip to content

Commit f1070a2

Browse files
committed
Improve progression of the progress bar during cartogram creation
1 parent b5a91ce commit f1070a2

File tree

2 files changed

+18
-22
lines changed

2 files changed

+18
-22
lines changed

dist_cartogram.py

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -606,9 +606,9 @@ def state_ok_button(self):
606606

607607
self.dlg.button_box.button(QDialogButtonBox.Ok).setEnabled(result)
608608

609-
def startWorker(self, src_pts, img_pts, precision, max_extent, layers):
609+
def startWorker(self, src_pts, img_pts, precision, max_extent, layers, total_features):
610610
worker = DistCartogramWorker(
611-
src_pts, img_pts, precision, max_extent, layers, self.display, self.tr
611+
src_pts, img_pts, precision, max_extent, layers, self.display, self.tr, total_features,
612612
)
613613
thread = QThread()
614614
worker.moveToThread(thread)
@@ -737,13 +737,7 @@ def run(self):
737737

738738
total_features = get_total_features(background_layers)
739739

740-
self.progressBar.setMaximum(
741-
int(
742-
15
743-
+ total_features
744-
+ (source_layer.featureCount() * precision) / 1.5
745-
)
746-
)
740+
self.progressBar.setMaximum(int(0.20 * total_features + total_features))
747741

748742
self.display = {
749743
"source_grid": self.dlg.checkBoxSourceGrid.isChecked(),
@@ -772,7 +766,7 @@ def run(self):
772766
deplacement_factor,
773767
self.display["image_points"],
774768
)
775-
self.updateProgressBar(5)
769+
self.updateProgressBar(int(0.05 * total_features))
776770
if len(source_to_use) == 0 or len(image_to_use) == 0:
777771
self.iface.messageBar().pushCritical(
778772
self.tr("Error"),
@@ -800,6 +794,7 @@ def run(self):
800794
precision,
801795
max_extent,
802796
background_layers,
797+
total_features,
803798
)
804799

805800
else:
@@ -820,13 +815,7 @@ def run(self):
820815

821816
total_features = get_total_features(background_layers)
822817

823-
self.progressBar.setMaximum(
824-
int(
825-
15
826-
+ total_features
827-
+ (precision * image_layer.featureCount()) / 1.5
828-
)
829-
)
818+
self.progressBar.setMaximum(int(0.20 * total_features + total_features))
830819

831820
if source_layer.featureCount() != image_layer.featureCount():
832821
self.updateStatusMessage(
@@ -840,7 +829,7 @@ def run(self):
840829
source_layer, image_layer, id_field_source, id_field_image
841830
)
842831

843-
self.updateProgressBar(5)
832+
self.updateProgressBar(int(0.05 * total_features))
844833

845834
extent = get_merged_extent(
846835
background_layers + [source_layer, image_layer]
@@ -857,4 +846,5 @@ def run(self):
857846
precision,
858847
max_extent,
859848
background_layers,
849+
total_features,
860850
)

worker.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class DistCartogramWorker(QObject):
4545
status = pyqtSignal(str)
4646

4747
def __init__(
48-
self, src_pts, image_pts, precision, extent, layers_to_transform, to_display, tr
48+
self, src_pts, image_pts, precision, extent, layers_to_transform, to_display, tr, total_features,
4949
):
5050
QObject.__init__(self)
5151

@@ -56,6 +56,7 @@ def __init__(
5656
self.layers_to_transform = layers_to_transform
5757
self.to_display = to_display
5858
self.tr = tr
59+
self.total_features = total_features
5960

6061
def get_transformed_layers(self):
6162
transformed_layers = []
@@ -163,14 +164,18 @@ def _get_inter_nb_iter(coef_iter):
163164

164165
self.status.emit(self.tr("Creation of interpolation grid..."))
165166
self.g = Grid(self.src_pts, self.precision, self.extent)
167+
166168
self.status.emit(self.tr("Interpolation process..."))
167-
self.progress.emit(((self.precision * len(self.image_pts)) / 3))
169+
self.progress.emit(int(0.03 * self.total_features))
168170
self.g.interpolate(self.image_pts, _get_inter_nb_iter(4))
169-
self.progress.emit(((self.precision * len(self.image_pts)) / 3))
171+
172+
self.progress.emit(int(0.07 * self.total_features))
170173
self.status.emit(self.tr("Transforming layers..."))
171174
transformed_layers = self.get_transformed_layers()
172175

173176
self.status.emit(self.tr("Preparing results for displaying..."))
177+
self.progress.emit(int(0.02 * self.total_features))
178+
174179
if self.to_display["source_grid"]:
175180
polys = self.g._get_grid_coords("source")
176181
source_grid_layer = make_grid_layer(
@@ -179,7 +184,8 @@ def _get_inter_nb_iter(coef_iter):
179184
else:
180185
source_grid_layer = None
181186

182-
self.progress.emit(5)
187+
self.progress.emit(int(0.03 * self.total_features))
188+
183189
if self.to_display["trans_grid"]:
184190
polys = self.g._get_grid_coords("interp")
185191
trans_grid_layer = make_grid_layer(

0 commit comments

Comments
 (0)