Commit b842f3ec authored by James Harle's avatar James Harle
Browse files

Further QT5 updates

parent a4ccf0b8
......@@ -49,15 +49,15 @@ class Ncml_generator(QtWidgets.QDialog):
'''
top panel for output file
'''
top_outfile_label = QtWidgets.QLabel(str('Output filename').encode('utf-8'))
top_outfile_label = QtWidgets.QLabel('Output filename')
self.top_outfile_name = QtWidgets.QLineEdit() #location is pre-defined
self.top_outfile_name.setToolTip(str('Define output file').encode('utf-8'))
self.top_outfile_name.setToolTip('Define output file')
self.top_outfile_name.returnPressed.connect(self.get_fname_input)
top_outfile_button = QtWidgets.QPushButton(str('Select file').encode('utf-8'))
top_outfile_button = QtWidgets.QPushButton('Select file')
top_outfile_button.clicked.connect(self.get_fname)
top_grpBox = QtWidgets.QGroupBox(str('Define output file').encode('utf-8'), None)
top_grpBox = QtWidgets.QGroupBox('Define output file', None)
top_grid = QtWidgets.QGridLayout(top_grpBox)
top_grid.setVerticalSpacing(5)
top_grid.setHorizontalSpacing(10)
......@@ -69,22 +69,22 @@ class Ncml_generator(QtWidgets.QDialog):
middle panel for tab folder
'''
self.tabWidget = QtWidgets.QTabWidget()
self.tracer_tab = nemo_ncml_tab_widget.Ncml_tab(str("Tracer").encode('utf-8'))
self.tracer_tab = nemo_ncml_tab_widget.Ncml_tab("Tracer")
self.tracer_tab.setEnabled(False)
self.dynamic_tab = nemo_ncml_tab_widget.Ncml_tab(str("Dynamics").encode('utf-8'))
self.dynamic_tab = nemo_ncml_tab_widget.Ncml_tab("Dynamics")
self.dynamic_tab.setEnabled(False)
self.ice_tab = nemo_ncml_tab_widget.Ncml_tab(str("Ice").encode('utf-8'))
self.ice_tab = nemo_ncml_tab_widget.Ncml_tab("Ice")
self.ice_tab.setEnabled(False)
self.ecosys_tab = nemo_ncml_tab_widget.Ncml_tab(str("Ecosystem").encode('utf-8'))
self.ecosys_tab = nemo_ncml_tab_widget.Ncml_tab("Ecosystem")
self.ecosys_tab.setEnabled(False)
self.grid_tab = nemo_ncml_tab_widget.Ncml_tab(str("Grid").encode('utf-8'))
self.grid_tab = nemo_ncml_tab_widget.Ncml_tab("Grid")
self.grid_tab.setEnabled(False)
self.tabWidget.addTab(self.tracer_tab, str("Tracer").encode('utf-8'))
self.tabWidget.addTab(self.dynamic_tab, str("Dynamics").encode('utf-8'))
self.tabWidget.addTab(self.ice_tab, str("Ice").encode('utf-8'))
self.tabWidget.addTab(self.ecosys_tab, str("Ecosystem").encode('utf-8')) # should be disabled
self.tabWidget.addTab(self.grid_tab, str("Grid").encode('utf-8')) # should be disabled
self.tabWidget.addTab(self.tracer_tab, "Tracer")
self.tabWidget.addTab(self.dynamic_tab, "Dynamics")
self.tabWidget.addTab(self.ice_tab, "Ice")
self.tabWidget.addTab(self.ecosys_tab, "Ecosystem") # should be disabled
self.tabWidget.addTab(self.grid_tab, "Grid") # should be disabled
self.tabWidget.setMovable(False)
# if self.tabWidget.widget(self.tabWidget.currentIndex()).isEnabled() is True:
......@@ -93,13 +93,13 @@ class Ncml_generator(QtWidgets.QDialog):
'''
button bar
'''
go_btn = QtWidgets.QPushButton(str('Generate').encode('utf-8'))
go_btn.setToolTip(str('Add all variable definitions before generating NcML file.').encode('utf-8'))
cancel_btn = QtWidgets.QPushButton(str('Cancel').encode('utf-8'))
enable_btn = QtWidgets.QPushButton(str('Enable Tab').encode('utf-8'))
go_btn = QtWidgets.QPushButton('Generate')
go_btn.setToolTip('Add all variable definitions before generating NcML file.')
cancel_btn = QtWidgets.QPushButton('Cancel')
enable_btn = QtWidgets.QPushButton('Enable Tab')
#layout button bar
btn_hBox = QtWidgets.QHBoxLayout(None)
btn_hBox.setMargin(5)
btn_hBox.setContentsMargins(5, 5, 5, 5)
btn_hBox.setSpacing(10)
btn_hBox.setAlignment(QtCore.Qt.AlignRight)
btn_hBox.addWidget(enable_btn)
......@@ -119,8 +119,8 @@ class Ncml_generator(QtWidgets.QDialog):
vbox.addLayout(btn_hBox)
#self.setLayout(grp_box)
self.setWindowIcon(QtWidgets.QIcon('/Users/jdha/anaconda/lib/python2.7/site-packages/pynemo-0.2-py2.7.egg/pynemo/gui/nemo_icon.png')) #doesn't work
self.setWindowTitle(str("PyNEMO NcML Generator").encode('utf-8'))
self.setWindowIcon(QtGui.QIcon('/Users/jdha/anaconda/lib/python2.7/site-packages/pynemo-0.2-py2.7.egg/pynemo/gui/nemo_icon.png')) #doesn't work
self.setWindowTitle("PyNEMO NcML Generator")
self.resize(650,300)
#has to change the default focus to stop the output file QTextedit to trigger the widget in focus when enter is pressed. Not sure why this happens???
......@@ -155,9 +155,9 @@ class Ncml_generator(QtWidgets.QDialog):
@pyqtSlot()
def enable_btn_update(self, enable_btn):
if self.tabWidget.widget(self.tabWidget.currentIndex()).isEnabled() is True:
enable_btn.setText(str('Disable Tab').encode('utf-8'))
enable_btn.setText('Disable Tab')
else:
enable_btn.setText(str('Enable Tab').encode('utf-8'))
enable_btn.setText('Enable Tab')
'''
call back to handle the generate button pressed
'''
......@@ -167,10 +167,10 @@ class Ncml_generator(QtWidgets.QDialog):
#validate output file
if self.tabWidget.widget(self.tabWidget.currentIndex()).isEnabled() is True:
self.tabWidget.widget(self.tabWidget.currentIndex()).setEnabled(False)
enable_btn.setText(str('Enable Tab').encode('utf-8'))
enable_btn.setText('Enable Tab')
else:
self.tabWidget.widget(self.tabWidget.currentIndex()).setEnabled(True)
enable_btn.setText(str('Disable Tab').encode('utf-8'))
enable_btn.setText('Disable Tab')
'''
call back to handle the generate button pressed
......@@ -180,14 +180,14 @@ class Ncml_generator(QtWidgets.QDialog):
#validate output file
if self.filename is None or self.filename == "":
if self.top_outfile_name.text() is None or self.top_outfile_name.text() == "":
QtWidgets.QMessageBox.critical(self, str('Something is wrong').encode('utf-8'), str('No output file specified!').encode('utf-8'), QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok)
QtWidgets.QMessageBox.critical(self, 'Something is wrong', 'No output file specified!', QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok)
return
else:
self.filename = self.top_outfile_name.text()
if(os.path.exists(os.path.dirname(str(self.filename)))) == False:
#if os.path.dirname(os.path.dirname(os.path.exists(os.path.normpath(str(self.filename))))) == False:
QtWidgets.QMessageBox.critical(self, str('Something is wrong').encode('utf-8'), str('Invalid output directory! Cannot generate file!').encode('utf-8'), QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok)
QtWidgets.QMessageBox.critical(self, 'Something is wrong', 'Invalid output directory! Cannot generate file!', QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok)
#print 'invalid target directory! Cannot generate.'
return
......@@ -201,7 +201,7 @@ class Ncml_generator(QtWidgets.QDialog):
self.tracer_tab.vosaline.src != "" :
tabsList.extend([self.tracer_tab.votemper, self.tracer_tab.vosaline])
else:
QtWidgets.QMessageBox.information(self, str('Something is wrong').encode('utf-8'), str('Not all the variables under the tracer tab have been defined!').encode('utf-8'), QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok)
QtWidgets.QMessageBox.information(self, 'Something is wrong', 'Not all the variables under the tracer tab have been defined!', QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok)
if self.ice_tab.isEnabled() is True:
......@@ -210,7 +210,7 @@ class Ncml_generator(QtWidgets.QDialog):
self.ice_tab.isnowthi.src != "" :
tabsList.extend([self.ice_tab.iicethic, self.ice_tab.ileadfra, self.ice_tab.isnowthi])
else:
QtWidgets.QMessageBox.information(self, str('Something is wrong').encode('utf-8'), str('Not all the variables under the ice tab have been defined!').encode('utf-8'), QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok)
QtWidgets.QMessageBox.information(self, 'Something is wrong', 'Not all the variables under the ice tab have been defined!', QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok)
if self.dynamic_tab.isEnabled() is True:
if self.dynamic_tab.vozocrtx.src != "" and \
......@@ -218,7 +218,7 @@ class Ncml_generator(QtWidgets.QDialog):
self.dynamic_tab.sossheig.src != "" :
tabsList.extend([self.dynamic_tab.vozocrtx, self.dynamic_tab.vomecrty, self.dynamic_tab.sossheig])
else:
QtWidgets.QMessageBox.information(self, str('Something is wrong').encode('utf-8'), str('Not all the variables under the dynamics tab have been defined!').encode('utf-8'), QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok)
QtWidgets.QMessageBox.information(self, 'Something is wrong', 'Not all the variables under the dynamics tab have been defined!', QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok)
if self.grid_tab.isEnabled() is True:
if self.grid_tab.gdept.src != "" and \
......@@ -229,14 +229,14 @@ class Ncml_generator(QtWidgets.QDialog):
self.grid_tab.e3v.src != "" :
tabsList.extend([self.grid_tab.gdept, self.grid_tab.gdepw, self.grid_tab.mbathy, self.grid_tab.e3t, self.grid_tab.e3u, self.grid_tab.e3v])
else:
QtWidgets.QMessageBox.information(self, str('Something is wrong').encode('utf-8'), str('Not all the variables under the grid tab have been defined!').encode('utf-8'), QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok)
QtWidgets.QMessageBox.information(self, 'Something is wrong', 'Not all the variables under the grid tab have been defined!', QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok)
try:
self.generateNcML(tabsList) #go ahead and do it
except:
raise
QtWidgets.QMessageBox.information(self, str('Success.').encode('utf-8'), str('NcML file generated.').encode('utf-8'), QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok)
QtWidgets.QMessageBox.information(self, 'Success.', 'NcML file generated.', QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok)
'''
Function to generates the NcML text and write it to the user defined output file
......@@ -248,68 +248,68 @@ class Ncml_generator(QtWidgets.QDialog):
self.root = self.tree.getroot()
#create a netcdf element for each tab variable
for tab in tabsList:
netcdfE = ET.Element(ns+str('netcdf').encode('utf-8')) #src directory is converted to the correct format when added/
netcdfE = ET.Element(ns+'netcdf') #src directory is converted to the correct format when added/
if str(tab.src).startswith("http:") or str(tab.src).startswith("https:"):
#Its url so use thredds crawler to get the urls
urls = self.url_trawler(tab.src,str(tab.regex))
aggE = ET.Element(ns+str('aggregation').encode('utf-8'), name=str(str(tab.name)).encode('utf-8'), type=str('joinExisting').encode('utf-8'), dimName=str('time_counter').encode('utf-8')) #tab.name already encoded
aggE = ET.Element(ns+'aggregation', name=str(tab.name), type='joinExisting', dimName='time_counter') #tab.name already encoded
for nc_url in urls:
tcNetcdf = ET.Element(ns+str('netcdf').encode('utf-8'), location=str(str(nc_url)).encode('utf-8'))
tcNetcdf = ET.Element(ns+'netcdf', location=str(nc_url))
aggE.append(tcNetcdf)
netcdfE.append(aggE)
else:
scanE = ET.Element(ns+str('scan').encode('utf-8'), location=str(str(tab.src)).encode('utf-8'), regExp=str(str(tab.regex)).encode('utf-8'))
scanE = ET.Element(ns+'scan', location=str(tab.src), regExp=str(tab.regex))
if tab.subdirs == True:
scanE.set(str('subdirs').encode('utf-8'), str('true').encode('utf-8'))
aggE = ET.Element(ns+str('aggregation').encode('utf-8'), name=str(str(tab.name)).encode('utf-8'), type=str('joinExisting').encode('utf-8'), dimName=str('time_counter').encode('utf-8')) #tab.name already encoded
scanE.set('subdirs', 'true')
aggE = ET.Element(ns+'aggregation', name=str(tab.name), type='joinExisting', dimName='time_counter') #tab.name already encoded
aggE.append(scanE)
netcdfE.append(aggE)
self.root[0].append(netcdfE) #add the new netcdf element to the top aggregation
#deal with variable name change TODO put this into a loop?
if tab.old_name is not None and tab.old_name != "":
vname = str('variable').encode('utf-8')
vname = 'variable'
#v is None
if tab.name == str('temperature').encode('utf-8') and tab.old_name != str('votemper').encode('utf-8'):
if tab.name == 'temperature' and tab.old_name != 'votemper':
v = ET.Element(ns+vname, name='votemper', orgName = str(tab.old_name))
self.root.append(v)
elif tab.name == str('salinity').encode('utf-8') and tab.old_name != str('vosaline').encode('utf-8'):
elif tab.name == 'salinity' and tab.old_name != 'vosaline':
v = ET.Element(ns+vname, name='vosaline', orgName = str(tab.old_name))
self.root.append(v)
elif tab.name == str('ice_thickness').encode('utf-8') and tab.old_name != str('iicethic').encode('utf-8'):
elif tab.name == 'ice_thickness' and tab.old_name != 'iicethic':
v = ET.Element(ns+vname, name='iicethic', orgName = str(tab.old_name))
self.root.append(v)
elif tab.name == str('leads_fraction').encode('utf-8') and tab.old_name != str('ileadfra').encode('utf-8'):
elif tab.name == 'leads_fraction' and tab.old_name != 'ileadfra':
v = ET.Element(ns+vname, name='ileadfra', orgName = str(tab.old_name))
self.root.append(v)
elif tab.name == str('snow_thickness').encode('utf-8') and tab.old_name != str('isnowthi').encode('utf-8'):
elif tab.name == 'snow_thickness' and tab.old_name != 'isnowthi':
v = ET.Element(ns+vname, name='isnowthi', orgName = str(tab.old_name))
self.root.append(v)
elif tab.name == str('zonal_velocity').encode('utf-8') and tab.old_name != str('vozocrtx').encode('utf-8'):
elif tab.name == 'zonal_velocity' and tab.old_name != 'vozocrtx':
v = ET.Element(ns+vname, name='vozocrtx', orgName = str(tab.old_name))
self.root.append(v)
elif tab.name == str('meridian_velocity').encode('utf-8') and tab.old_name != str('vomecrty').encode('utf-8'):
elif tab.name == 'meridian_velocity' and tab.old_name != 'vomecrty':
v = ET.Element(ns+vname, name='vomecrty', orgName = str(tab.old_name))
self.root.append(v)
elif tab.name == str('sea_surface_height').encode('utf-8') and tab.old_name != str('sossheig').encode('utf-8'):
elif tab.name == 'sea_surface_height' and tab.old_name != 'sossheig':
v = ET.Element(ns+vname, name='sossheig', orgName = str(tab.old_name))
self.root.append(v)
elif tab.name == str('depth_at_t_points').encode('utf-8') and tab.old_name != str('gdept').encode('utf-8'):
elif tab.name == 'depth_at_t_points' and tab.old_name != 'gdept':
v = ET.Element(ns+vname, name='gdept', orgName = str(tab.old_name))
self.root.append(v)
elif tab.name == str('depth_at_w_points').encode('utf-8') and tab.old_name != str('gdepw').encode('utf-8'):
elif tab.name == 'depth_at_w_points' and tab.old_name != 'gdepw':
v = ET.Element(ns+vname, name='gdepw', orgName = str(tab.old_name))
self.root.append(v)
elif tab.name == str('number_of_wet_levels').encode('utf-8') and tab.old_name != str('mbathy').encode('utf-8'):
elif tab.name == 'number_of_wet_levels' and tab.old_name != 'mbathy':
v = ET.Element(ns+vname, name='mbathy', orgName = str(tab.old_name))
self.root.append(v)
elif tab.name == str('vertical_scale_factors_at_t_points').encode('utf-8') and tab.old_name != str('e3t').encode('utf-8'):
elif tab.name == 'vertical_scale_factors_at_t_points' and tab.old_name != 'e3t':
v = ET.Element(ns+vname, name='e3t', orgName = str(tab.old_name))
self.root.append(v)
elif tab.name == str('vertical_scale_factors_at_u_points').encode('utf-8') and tab.old_name != str('e3u').encode('utf-8'):
elif tab.name == 'vertical_scale_factors_at_u_points' and tab.old_name != 'e3u':
v = ET.Element(ns+vname, name='e3u', orgName = str(tab.old_name))
self.root.append(v)
elif tab.name == str('vertical_scale_factors_at_v_points').encode('utf-8') and tab.old_name != str('e3v').encode('utf-8'):
elif tab.name == 'vertical_scale_factors_at_v_points' and tab.old_name != 'e3v':
v = ET.Element(ns+vname, name='e3v', orgName = str(tab.old_name))
self.root.append(v)
......
......@@ -28,8 +28,8 @@ class Ncml_tab(QtWidgets.QWidget):
def initUI(self):
QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 11))
self.varStackedWidget = QtGui.QStackedWidget()
QtWidgets.QToolTip.setFont(QtGui.QFont('SansSerif', 11))
self.varStackedWidget = QtWidgets.QStackedWidget()
#variable chooser combobox
combo_vars = []
if(self.var == str("Tracer").encode('utf-8')):
......@@ -82,7 +82,7 @@ class Ncml_tab(QtWidgets.QWidget):
vars = ['nitrate','silicate'] #nitrate, silicate
self.varStackedWidget.setCurrentIndex(0) #we rely on the stacked tab index to be the same as the combo box
#combo box
self.var_combo = QtGui.QComboBox()
self.var_combo = QtWidgets.QComboBox()
self.var_combo.addItems(combo_vars)
self.var_combo.setEditable(False)
self.var_combo.setCurrentIndex(0)
......@@ -90,20 +90,20 @@ class Ncml_tab(QtWidgets.QWidget):
self.var_combo.currentIndexChanged.connect(lambda var_name = self.var : self.src_combo_changed(var_name))
self.var_combo.currentIndexChanged.connect(self.setWidgetStack)
#label
var_label = QtGui.QLabel(str('Variable').encode('utf-8'))
var_label = QtWidgets.QLabel('Variable')
#set layout
stacked_hBox = QtGui.QHBoxLayout()
stacked_hBox.setMargin(5)
stacked_hBox = QtWidgets.QHBoxLayout()
stacked_hBox.setContentsMargins(5, 5, 5, 5)
stacked_hBox.setSpacing(50) # spacing between items
stacked_hBox.setAlignment(QtCore.Qt.AlignLeft)
stacked_hBox.addWidget(var_label)
stacked_hBox.addWidget(self.var_combo)
#
vBoxLayout = QtGui.QVBoxLayout()
vBoxLayout = QtWidgets.QVBoxLayout()
vBoxLayout.addLayout(stacked_hBox)
vBoxLayout.addWidget(self.varStackedWidget)
#
grp_box = QtGui.QGroupBox(None)
grp_box = QtWidgets.QGroupBox(None)
grp_box.setLayout(vBoxLayout)
'''
......@@ -115,24 +115,24 @@ class Ncml_tab(QtWidgets.QWidget):
button bar
'''
# reset button
reset_btn = QtGui.QPushButton(str('Reset').encode('utf-8'))
reset_btn.setToolTip(str('Reset fields to previously saved values').encode('utf-8'))
add_btn = QtGui.QPushButton(str('Add').encode('utf-8'))
reset_btn = QtWidgets.QPushButton('Reset')
reset_btn.setToolTip('Reset fields to previously saved values')
add_btn = QtWidgets.QPushButton('Add')
add_btn.setDefault(True)
add_btn.setToolTip(str('Add the current definition to the NcML').encode('utf-8'))
add_btn.setToolTip('Add the current definition to the NcML')
#connect up with events
reset_btn.clicked.connect(self.reset_tab)
add_btn.clicked.connect(self.add_tab)
btn_hBox = QtGui.QHBoxLayout(None)
btn_hBox.setMargin(5)
btn_hBox = QtWidgets.QHBoxLayout(None)
btn_hBox.setContentsMargins(5, 5, 5, 5)
btn_hBox.setSpacing(10)
btn_hBox.setAlignment(QtCore.Qt.AlignCenter)
btn_hBox.addWidget(reset_btn)
btn_hBox.addWidget(add_btn)
#build the contents
vbox = QtGui.QVBoxLayout(self)
vbox = QtWidgets.QVBoxLayout(self)
vbox.setSpacing(10)
vbox.setContentsMargins(10, 10, 5, 5)
vbox.addWidget(grp_box)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment