Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 12 additions & 5 deletions cdprep/app/mainwindow.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,18 +130,25 @@ def show_data_downloader(self):
Show the download data dialog.
"""
if self.data_downloader is None:
self.data_downloader = WeatherStationDownloader()
self.data_downloader.workdir = self._workdir
self.data_downloader = WeatherStationDownloader(
workdir=self._workdir)
self.data_downloader.setWindowState(Qt.WindowNoState)
self.data_downloader.show()

# Center the data downloader window to the mainwindow.
qr = self.data_downloader.frameGeometry()
wp = self.frameGeometry().width()
hp = self.frameGeometry().height()
cp = self.mapToGlobal(QPoint(wp/2, hp/2))
qr.moveCenter(cp)
self.data_downloader.move(qr.topLeft())
self.data_downloader.show()
self.data_downloader.activateWindow()
self.data_downloader.raise_()
else:
self.data_downloader.show()
self.data_downloader.activateWindow()
self.data_downloader.raise_()
if self.data_downloader.windowState() == Qt.WindowMinimized:
# Window is minimised. Restore it.
self.data_downloader.setWindowState(Qt.WindowNoState)

# ---- Main window settings
def _restore_window_geometry(self):
Expand Down
44 changes: 37 additions & 7 deletions cdprep/dwnld_data/dwnld_data_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,11 @@
from PyQt5.QtWidgets import (
QWidget, QLabel, QDoubleSpinBox, QComboBox, QFrame, QGridLayout, QSpinBox,
QPushButton, QApplication, QFileDialog, QGroupBox, QStyle, QMessageBox,
QProgressBar)
QProgressBar, QMainWindow)

# ---- Local imports
from cdprep.utils.qthelpers import (
qbytearray_to_hexstate, hexstate_to_qbytearray)
from cdprep.config.main import CONF
from cdprep.config.icons import get_icon, get_iconsize
from cdprep.widgets.waitingspinner import QWaitingSpinner
Expand Down Expand Up @@ -86,7 +88,7 @@ def hide(self):
self._spinner.stop()


class WeatherStationDownloader(QWidget):
class WeatherStationDownloader(QMainWindow):
"""
Widget that allows the user to browse and select ECCC climate stations.
"""
Expand All @@ -97,9 +99,9 @@ class WeatherStationDownloader(QWidget):
PROV_NAME = [x[0].title() for x in PROV_NAME_ABB]
PROV_ABB = [x[1] for x in PROV_NAME_ABB]

def __init__(self, parent=None):
def __init__(self, parent=None, workdir=None):
super().__init__(parent)
self.workdir = get_home_dir()
self.workdir = workdir or get_home_dir()

self.stn_finder_worker = WeatherStationFinder()
self.stn_finder_worker.sig_load_database_finished.connect(
Expand All @@ -112,7 +114,9 @@ def __init__(self, parent=None):
self.waitspinnerbar = WaitSpinnerBar()
self.stn_finder_worker.sig_progress_msg.connect(
self.waitspinnerbar.set_label)

self.__initUI__()
self._restore_window_geometry()

# Setup the raw data downloader.
self._dwnld_inprogress = False
Expand All @@ -126,7 +130,6 @@ def __init__(self, parent=None):
self.dwnld_worker.sig_update_pbar.connect(self.progressbar.setValue)

self.start_load_database()
self.resize(600, 500)

def __initUI__(self):
self.setWindowTitle('Download Weather Data')
Expand All @@ -139,6 +142,7 @@ def __initUI__(self):
self.lat_spinBox = QDoubleSpinBox()
self.lat_spinBox.setAlignment(Qt.AlignCenter)
self.lat_spinBox.setSingleStep(0.1)
self.lat_spinBox.setDecimals(3)
self.lat_spinBox.setValue(CONF.get('download_data', 'latitude', 0))
self.lat_spinBox.setMinimum(0)
self.lat_spinBox.setMaximum(180)
Expand All @@ -148,6 +152,7 @@ def __initUI__(self):
self.lon_spinBox = QDoubleSpinBox()
self.lon_spinBox.setAlignment(Qt.AlignCenter)
self.lon_spinBox.setSingleStep(0.1)
self.lon_spinBox.setDecimals(3)
self.lon_spinBox.setValue(CONF.get('download_data', 'longitude', 0))
self.lon_spinBox.setMinimum(0)
self.lon_spinBox.setMaximum(180)
Expand Down Expand Up @@ -311,15 +316,18 @@ def __initUI__(self):
self.progressbar.setValue(0)
self.progressbar.hide()

# Create the main grid.
main_layout = QGridLayout(self)
# Setup the central widget.
main_widget = QWidget()
main_layout = QGridLayout(main_widget)
main_layout.addWidget(self.left_panel, 0, 0)
main_layout.addWidget(self.station_table, 0, 1)
main_layout.addWidget(self.waitspinnerbar, 0, 1)
main_layout.addWidget(toolbar_widg, 1, 0, 1, 2)
main_layout.addWidget(self.progressbar, 2, 0, 1, 2)
main_layout.setColumnStretch(1, 100)

self.setCentralWidget(main_widget)

@property
def stationlist(self):
return self.station_table.get_stationlist()
Expand Down Expand Up @@ -647,8 +655,30 @@ def process_station_data(self, climateid, file_list=None):
writer.writerows(fcontent)
self.download_next_station()

# ---- Main window settings
def _restore_window_geometry(self):
"""
Restore the geometry of this mainwindow from the value saved
in the config.
"""
hexstate = CONF.get('download_data', 'window/geometry', None)
if hexstate:
hexstate = hexstate_to_qbytearray(hexstate)
self.restoreGeometry(hexstate)
else:
self.resize(1000, 450)

def _save_window_geometry(self):
"""
Save the geometry of this mainwindow to the config.
"""
hexstate = qbytearray_to_hexstate(self.saveGeometry())
CONF.set('download_data', 'window/geometry', hexstate)

# ---- Qt overrides
def closeEvent(self, event):
self._save_window_geometry()

# Proximity Filter Options.
CONF.set('download_data', 'proximity_filter',
self.prox_grpbox.isChecked())
Expand Down
8 changes: 4 additions & 4 deletions cdprep/dwnld_data/weather_stationlist.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ def __init__(self, parent=None, *args):
super(WeatherSationView, self).__init__()
self.setShowGrid(False)
self.setAlternatingRowColors(True)
self.setMinimumWidth(650)
self.setMinimumWidth(350)
self.setSortingEnabled(True)

self.chkbox_header = QCheckBox(self.horizontalHeader())
Expand All @@ -144,9 +144,9 @@ def __init__(self, parent=None, *args):
self.setColumnWidth(
6, self.fontMetrics().width('504K0NM') + margin)
self.setColumnHidden(7, True)
self.setColumnHidden(8, True)
self.setColumnHidden(9, True)
self.setColumnHidden(10, True)
self.setColumnWidth(8, self.fontMetrics().width('-77.77') + margin)
self.setColumnWidth(9, self.fontMetrics().width('-77.77') + margin)
self.setColumnWidth(10, self.fontMetrics().width('-77.77') + margin)

self.horizontalHeader().setSectionResizeMode(QHeaderView.Fixed)
self.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch)
Expand Down