Skip to content

Commit b319e53

Browse files
committed
update selection mode
1 parent e4b54cf commit b319e53

File tree

11 files changed

+144
-115
lines changed

11 files changed

+144
-115
lines changed

agrolib/dbMeteoPoints/dbMeteoPointsHandler.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2150,7 +2150,7 @@ bool Crit3DMeteoPointsDbHandler::setJointStations(const QString& idPoint, const
21502150
}
21512151

21522152

2153-
bool Crit3DMeteoPointsDbHandler::getPointListWithCriteria(QList<QString> &selectedPointsList, const QString &condition)
2153+
bool Crit3DMeteoPointsDbHandler::getPointListWithCriteria(QList<QString> &pointsList, const QString &condition)
21542154
{
21552155
QSqlQuery qry(_db);
21562156
QString queryString;
@@ -2165,7 +2165,7 @@ bool Crit3DMeteoPointsDbHandler::getPointListWithCriteria(QList<QString> &select
21652165

21662166
while (qry.next()) {
21672167
QString idPoint = qry.value("id_point").toString();;
2168-
selectedPointsList.append(idPoint);
2168+
pointsList.append(idPoint);
21692169
}
21702170

21712171
return true;

agrolib/dbMeteoPoints/dbMeteoPointsHandler.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@
120120
QList<QString> getStateList();
121121
QList<QString> getDatasetList();
122122
bool setActiveStateIfCondition(bool activeState, const QString &condition);
123-
bool getPointListWithCriteria(QList<QString> &selectedPointsList, const QString &condition);
123+
bool getPointListWithCriteria(QList<QString> &pointsList, const QString &condition);
124124
bool setOrogCode(QString id, int orogCode);
125125
QList<QString> getJointStations(const QString& idPoint);
126126
bool setJointStations(const QString& idPoint, const QList<QString> &stationsList);

agrolib/project/dialogSelectionMeteoPoint.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include "dialogSelectionMeteoPoint.h"
22

3-
DialogSelectionMeteoPoint::DialogSelectionMeteoPoint(bool isActive, bool isSelect, Crit3DMeteoPointsDbHandler *meteoPointsDbHandler)
4-
:isActive(isActive), isSelect(isSelect)
3+
DialogSelectionMeteoPoint::DialogSelectionMeteoPoint(QString type, bool isSelect, Crit3DMeteoPointsDbHandler *meteoPointsDbHandler)
4+
:_type(type), _isSelect(isSelect)
55
{
66
municipalityList = meteoPointsDbHandler->getMunicipalityList();
77
provinceList = meteoPointsDbHandler->getProvinceList();
@@ -42,21 +42,21 @@ DialogSelectionMeteoPoint::DialogSelectionMeteoPoint(bool isActive, bool isSelec
4242

4343
QDialogButtonBox buttonBox;
4444
QPushButton activeButton;
45-
if (isActive)
45+
if (_type.toUpper() == "ACTIVE")
4646
{
47-
activeButton.setText("Active");
47+
if (_isSelect)
48+
activeButton.setText("Activate");
49+
else
50+
activeButton.setText("Deactivate");
4851
}
49-
else
52+
else if (_type.toUpper() == "SELECT")
5053
{
51-
if (isSelect)
52-
{
54+
if (_isSelect)
5355
activeButton.setText("Select");
54-
}
5556
else
56-
{
57-
activeButton.setText("Deactive");
58-
}
57+
activeButton.setText("Deselect");
5958
}
59+
6060
activeButton.setCheckable(true);
6161
activeButton.setAutoDefault(false);
6262

agrolib/project/dialogSelectionMeteoPoint.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ class DialogSelectionMeteoPoint : public QDialog
1010
Q_OBJECT
1111

1212
private:
13-
bool isActive;
14-
bool isSelect;
13+
QString _type;
14+
bool _isSelect;
1515
QList<QString> municipalityList;
1616
QList<QString> provinceList;
1717
QList<QString> regionList;
@@ -26,7 +26,7 @@ class DialogSelectionMeteoPoint : public QDialog
2626

2727

2828
public:
29-
DialogSelectionMeteoPoint(bool isActive, bool isSelect, Crit3DMeteoPointsDbHandler* meteoPointsDbHandler);
29+
DialogSelectionMeteoPoint(QString type, bool isSelect, Crit3DMeteoPointsDbHandler* meteoPointsDbHandler);
3030
QString getSelection();
3131
QString getOperation();
3232
QString getItem();

agrolib/project/project.cpp

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4839,8 +4839,7 @@ bool Project::setActiveStateWithCriteria(bool isActive)
48394839
return false;
48404840
}
48414841

4842-
bool isSelect = false;
4843-
DialogSelectionMeteoPoint dialogPointSelection(isActive, isSelect, meteoPointsDbHandler);
4842+
DialogSelectionMeteoPoint dialogPointSelection("Active", isActive, meteoPointsDbHandler);
48444843
if (dialogPointSelection.result() != QDialog::Accepted)
48454844
return false;
48464845

@@ -6238,10 +6237,10 @@ void Project::getMeteoPointsCurrentValues(std::vector<float> &validValues)
62386237
}
62396238

62406239

6241-
bool Project::setSelectedStatePointList(QString fileName)
6240+
bool Project::setSelectedStatePointList(QString fileName, bool isSelect, bool isShowVariable)
62426241
{
62436242
QList<QString> pointList = readListSingleColumn(fileName, errorString);
6244-
if (! selectPointList(pointList))
6243+
if (! selectPointList(pointList, isSelect, isShowVariable))
62456244
{
62466245
logWarning("No points to select.");
62476246
return false;
@@ -6251,47 +6250,46 @@ bool Project::setSelectedStatePointList(QString fileName)
62516250
}
62526251

62536252

6254-
bool Project::selectPointList(const QList<QString> &pointList)
6253+
bool Project::selectPointList(const QList<QString> &pointList, bool isSelect, bool isShowVariable)
62556254
{
62566255
if (pointList.size() == 0)
62576256
return false;
62586257

6259-
int nrValidPoints = 0;
6258+
int nrPoints = 0;
62606259
for (int i = 0; i < meteoPoints.size(); i++)
62616260
{
62626261
if (pointList.contains(QString::fromStdString(meteoPoints[i].id)))
62636262
{
6264-
meteoPoints[i].selected = true;
6265-
nrValidPoints++;
6263+
if (! isShowVariable || ! isEqual(meteoPoints[i].currentValue, NODATA))
6264+
{
6265+
meteoPoints[i].selected = isSelect;
6266+
++nrPoints;
6267+
}
62666268
}
62676269
}
62686270

6269-
return (nrValidPoints > 0);
6271+
return (nrPoints > 0);
62706272
}
62716273

62726274

6273-
bool Project::setSelectedStateWithCriteria()
6275+
bool Project::setSelectedStateWithCriteria(bool isSelect, bool isShowVariable)
62746276
{
62756277
if (! meteoPointsLoaded)
62766278
{
62776279
logError(ERROR_STR_MISSING_DB);
62786280
return false;
62796281
}
62806282

6281-
bool isActive = false;
6282-
bool isSelect = true;
6283-
DialogSelectionMeteoPoint dialogPointSelection(isActive, isSelect, meteoPointsDbHandler);
6283+
DialogSelectionMeteoPoint dialogPointSelection("Select", isSelect, meteoPointsDbHandler);
62846284
if (dialogPointSelection.result() != QDialog::Accepted)
6285-
{
62866285
return false;
6287-
}
62886286

62896287
QString selection = dialogPointSelection.getSelection();
62906288
QString operation = dialogPointSelection.getOperation();
62916289
QString item = dialogPointSelection.getItem();
62926290

62936291
QString condition;
6294-
QList<QString> selectedPointsList;
6292+
QList<QString> pointsList;
62956293

62966294
if (operation == "Like")
62976295
{
@@ -6304,7 +6302,7 @@ bool Project::setSelectedStateWithCriteria()
63046302

63056303
if (selection != "DEM distance [m]")
63066304
{
6307-
if (! meteoPointsDbHandler->getPointListWithCriteria(selectedPointsList, condition))
6305+
if (! meteoPointsDbHandler->getPointListWithCriteria(pointsList, condition))
63086306
{
63096307
logError(meteoPointsDbHandler->getErrorString());
63106308
return false;
@@ -6331,41 +6329,41 @@ bool Project::setSelectedStateWithCriteria()
63316329
{
63326330
if (isEqual(distance, item.toFloat()))
63336331
{
6334-
selectedPointsList.append(QString::fromStdString(meteoPoints[i].id));
6332+
pointsList.append(QString::fromStdString(meteoPoints[i].id));
63356333
}
63366334
}
63376335
else if (operation == "!=")
63386336
{
63396337
if (! isEqual(distance, item.toFloat()))
63406338
{
6341-
selectedPointsList.append(QString::fromStdString(meteoPoints[i].id));
6339+
pointsList.append(QString::fromStdString(meteoPoints[i].id));
63426340
}
63436341
}
63446342
else if (operation == ">")
63456343
{
63466344
if (distance > item.toFloat())
63476345
{
6348-
selectedPointsList.append(QString::fromStdString(meteoPoints[i].id));
6346+
pointsList.append(QString::fromStdString(meteoPoints[i].id));
63496347
}
63506348
}
63516349
else if (operation == "<")
63526350
{
63536351
if (distance < item.toFloat())
63546352
{
6355-
selectedPointsList.append(QString::fromStdString(meteoPoints[i].id));
6353+
pointsList.append(QString::fromStdString(meteoPoints[i].id));
63566354
}
63576355
}
63586356
}
63596357
closeProgressBar();
63606358
}
63616359

6362-
if (selectedPointsList.isEmpty())
6360+
if (pointsList.isEmpty())
63636361
{
63646362
logWarning("No point matches your requirements.");
63656363
return false;
63666364
}
63676365

6368-
if (! selectPointList(selectedPointsList))
6366+
if (! selectPointList(pointsList, isSelect, isShowVariable))
63696367
{
63706368
logWarning("No points to select");
63716369
return false;

agrolib/project/project.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -333,10 +333,10 @@
333333
void clearSelectedOutputPoints();
334334
bool setActiveStateSelectedPoints(bool isActive);
335335
bool setActiveStatePointList(QString fileName, bool isActive);
336-
bool setSelectedStatePointList(QString fileName);
337-
bool selectPointList(const QList<QString> &pointList);
336+
bool setSelectedStatePointList(QString fileName, bool isSelect, bool isShowVariable);
337+
bool selectPointList(const QList<QString> &pointList, bool isSelect, bool isShowVariable);
338338
bool setActiveStateWithCriteria(bool isActive);
339-
bool setSelectedStateWithCriteria();
339+
bool setSelectedStateWithCriteria(bool isSelect, bool isShowVariable);
340340
bool setMarkedFromPointList(QString fileName, bool isAdd);
341341
bool setMarkedPointsOfMacroArea(int areaNumber, bool viewNotActivePoints);
342342
bool deleteMeteoPoints(const QList<QString>& pointList);

bin/PRAGA.pro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ greaterThan(QT_MAJOR_VERSION, 5): QT += core5compat
1212

1313
TARGET = PRAGA
1414
TEMPLATE = app
15-
VERSION = 2.1.2
16-
QMAKE_TARGET_COPYRIGHT = "\\251 2025 ARPAE ER - Climate Observatory"
15+
VERSION = 2.1.3
16+
QMAKE_TARGET_COPYRIGHT = "\\251 2026 ARPAE ER - Climate Observatory"
1717

1818
CONFIG += c++17
1919

bin/mainWindow.cpp

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -696,13 +696,6 @@ void MainWindow::on_netcdfOpacitySlider_sliderMoved(int position)
696696
}
697697

698698

699-
void MainWindow::on_actionMeteoPointsClear_selection_triggered()
700-
{
701-
myProject.clearSelectedPoints();
702-
redrawMeteoPoints(currentPointsVisualization, false);
703-
}
704-
705-
706699
void MainWindow::on_actionMeteopointRectangleSelection_triggered()
707700
{
708701
if (rubberBand != nullptr)
@@ -1522,11 +1515,13 @@ void MainWindow::drawMeteoPoints()
15221515
ui->actionShowPointsClimate->setEnabled(false);
15231516

15241517
ui->actionMeteopointRectangleSelection->setEnabled(true);
1525-
ui->actionMeteoPointsClear_selection->setEnabled(true);
15261518
ui->menuSearch_points->setEnabled(true);
15271519
ui->menuMark_points->setEnabled(true);
15281520
ui->menuActive_points->setEnabled(true);
1529-
ui->menuSelected_points->setEnabled(true);
1521+
ui->menuSelect_points->setEnabled(true);
1522+
ui->menuDeselect_points->setEnabled(true);
1523+
ui->actionExport_selected_points->setEnabled(true);
1524+
ui->actionOpen_meteo_widget_for_selected_stations->setEnabled(true);
15301525
ui->menuDeactive_points->setEnabled(true);
15311526
ui->menuDelete_points->setEnabled(true);
15321527
ui->menuDelete_data->setEnabled(true);
@@ -3828,15 +3823,17 @@ void MainWindow::closeMeteoPoints()
38283823

38293824
ui->actionMeteopointRectangleSelection->setEnabled(false);
38303825
ui->menuActive_points->setEnabled(false);
3831-
ui->menuSelected_points->setEnabled(false);
3826+
ui->menuSelect_points->setEnabled(false);
3827+
ui->menuDeselect_points->setEnabled(false);
3828+
ui->actionExport_selected_points->setEnabled(false);
3829+
ui->actionOpen_meteo_widget_for_selected_stations->setEnabled(false);
38323830
ui->menuSearch_points->setEnabled(false);
38333831
ui->menuMark_points->setEnabled(false);
38343832
ui->menuDeactive_points->setEnabled(false);
38353833
ui->menuDelete_points->setEnabled(false);
38363834
ui->menuDelete_data->setEnabled(false);
38373835
ui->menuShift_data->setEnabled(false);
38383836
ui->actionMeteopointDataCount->setEnabled(false);
3839-
ui->actionMeteoPointsClear_selection->setEnabled(false);
38403837

38413838
showPointsGroup->setEnabled(false);
38423839
this->ui->menuShowPointsAnomaly->setEnabled(false);
@@ -7243,19 +7240,44 @@ void MainWindow::on_actionSelect_All_not_marked_triggered()
72437240
}
72447241

72457242

7246-
void MainWindow::on_actionNone_Selected_triggered()
7243+
void MainWindow::on_action_deselect_All_triggered()
72477244
{
72487245
myProject.clearSelectedPoints();
72497246
redrawMeteoPoints(currentPointsVisualization, false);
72507247
}
72517248

72527249

7250+
void MainWindow::on_action_deselect_with_criteria_triggered()
7251+
{
7252+
bool isShowVariable = (currentPointsVisualization == showCurrentVariable);
7253+
bool isSelect = false;
7254+
if (myProject.setSelectedStateWithCriteria(isSelect, isShowVariable))
7255+
{
7256+
redrawMeteoPoints(currentPointsVisualization, true);
7257+
}
7258+
}
7259+
7260+
7261+
void MainWindow::on_action_deselect_Marked_triggered()
7262+
{
7263+
for (int i = 0; i < myProject.meteoPoints.size(); i++)
7264+
{
7265+
if (myProject.meteoPoints[i].marked)
7266+
myProject.meteoPoints[i].selected = false;
7267+
}
7268+
7269+
redrawMeteoPoints(currentPointsVisualization, true);
7270+
}
7271+
7272+
72537273
void MainWindow::on_actionFrom_point_list_Selected_triggered()
72547274
{
72557275
QString fileName = QFileDialog::getOpenFileName(this, tr("Open point list file"), "", tr("text files (*.txt)"));
72567276
if (fileName == "") return;
72577277

7258-
if (myProject.setSelectedStatePointList(fileName))
7278+
bool isShowVariable = (currentPointsVisualization == showCurrentVariable);
7279+
bool isSelect = true;
7280+
if (myProject.setSelectedStatePointList(fileName, isSelect, isShowVariable))
72597281
{
72607282
redrawMeteoPoints(currentPointsVisualization, true);
72617283
}
@@ -7264,7 +7286,9 @@ void MainWindow::on_actionFrom_point_list_Selected_triggered()
72647286

72657287
void MainWindow::on_actionWith_Criteria_Selected_triggered()
72667288
{
7267-
if (myProject.setSelectedStateWithCriteria())
7289+
bool isShowVariable = (currentPointsVisualization == showCurrentVariable);
7290+
bool isSelect = true;
7291+
if (myProject.setSelectedStateWithCriteria(isSelect, isShowVariable))
72687292
{
72697293
redrawMeteoPoints(currentPointsVisualization, true);
72707294
}
@@ -7373,7 +7397,7 @@ void MainWindow::on_actionOpen_meteo_widget_for_selected_stations_triggered()
73737397
}
73747398

73757399

7376-
void MainWindow::on_actionExport_precipitation_for_selected_points_triggered()
7400+
void MainWindow::on_actionExport_selected_points_triggered()
73777401
{
73787402
if (! myProject.meteoPointsLoaded)
73797403
{
@@ -7497,3 +7521,4 @@ void MainWindow::on_actionCompute_Radiation_list_triggered()
74977521
}
74987522
}
74997523

7524+

0 commit comments

Comments
 (0)