summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPicca Frédéric-Emmanuel <picca@synchrotron-soleil.fr>2017-09-15 14:21:41 +0200
committerPicca Frédéric-Emmanuel <picca@synchrotron-soleil.fr>2018-10-02 13:50:35 +0200
commit70f28a734d5ab6f3c256efc82a556144584ecce1 (patch)
treedac51839d2fb9b660add3e2dd8baebcfd677b45b
parenta8ad9e89ccb16bcc5b6bf10a49fdd5ea5426cd26 (diff)
first attempted pyQT5 migration
-rw-r--r--debian/control2
-rwxr-xr-xscripts/binoculars-fitaid264
-rwxr-xr-xscripts/binoculars-gui319
-rwxr-xr-xscripts/binoculars-processgui175
4 files changed, 391 insertions, 369 deletions
diff --git a/debian/control b/debian/control
index 13e2fdc..5010ed9 100644
--- a/debian/control
+++ b/debian/control
@@ -46,7 +46,7 @@ Depends: ${misc:Depends},
python-matplotlib,
python-pyfai,
pymca,
- python-qt4,
+ python-pyqt5,
python-scipy,
Suggests: python-xrayutilities
Description: Data reduction and analysis software for two-dimensional detectors in surface X-ray diffraction - Python2
diff --git a/scripts/binoculars-fitaid b/scripts/binoculars-fitaid
index 5da66dd..e4f3a24 100755
--- a/scripts/binoculars-fitaid
+++ b/scripts/binoculars-fitaid
@@ -1,18 +1,27 @@
#!/usr/bin/env python
-import h5py
import sys
-import numpy
import os.path
import itertools
+
+import h5py
import matplotlib.figure
import matplotlib.image
+import numpy
-from PyQt4 import QtGui, QtCore, Qt
-from scipy.interpolate import griddata
-from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg, NavigationToolbar2QTAgg
+from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg, NavigationToolbar2QT
from matplotlib.pyplot import Rectangle
-from scipy.spatial import qhull
+
+from PyQt5.Qt import (Qt)
+from PyQt5.QtCore import (pyqtSignal)
+from PyQt5.QtWidgets import (QAction, QApplication, QSlider, QMenuBar, QTabWidget,
+ QFileDialog, QStatusBar, QMessageBox, QRadioButton,
+ QButtonGroup, QCheckBox, QPushButton, QHBoxLayout,
+ QVBoxLayout, QSplitter, QTableWidgetItem, QTableWidget,
+ QLabel, QLineEdit, QMainWindow, QWidget, QComboBox,
+ QProgressDialog, QDoubleSpinBox)
+
+from scipy.interpolate import griddata
def set_src():
@@ -37,29 +46,29 @@ except ImportError:
import binoculars.util
-class Window(QtGui.QMainWindow):
+class Window(QMainWindow):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
- newproject = QtGui.QAction("New project", self)
+ newproject = QAction("New project", self)
newproject.triggered.connect(self.newproject)
- loadproject = QtGui.QAction("Open project", self)
+ loadproject = QAction("Open project", self)
loadproject.triggered.connect(self.loadproject)
- addspace = QtGui.QAction("Import space", self)
+ addspace = QAction("Import space", self)
addspace.triggered.connect(self.add_to_project)
- menu_bar = QtGui.QMenuBar()
+ menu_bar = QMenuBar()
file = menu_bar.addMenu("&File")
file.addAction(newproject)
file.addAction(loadproject)
file.addAction(addspace)
self.setMenuBar(menu_bar)
- self.statusbar = QtGui.QStatusBar()
+ self.statusbar = QStatusBar()
- self.tab_widget = QtGui.QTabWidget(self)
+ self.tab_widget = QTabWidget(self)
self.tab_widget.setTabsClosable(True)
self.tab_widget.tabCloseRequested.connect(self.tab_widget.removeTab)
@@ -68,11 +77,11 @@ class Window(QtGui.QMainWindow):
self.setStatusBar(self.statusbar)
def newproject(self):
- dialog = QtGui.QFileDialog(self, "project filename");
- dialog.setFilter('binoculars fit file (*.fit)');
+ dialog = QFileDialog(self, "project filename");
+ dialog.setNameFilters(['binoculars fit file (*.fit)']);
dialog.setDefaultSuffix('fit');
- dialog.setFileMode(QtGui.QFileDialog.AnyFile);
- dialog.setAcceptMode(QtGui.QFileDialog.AcceptSave);
+ dialog.setFileMode(QFileDialog.AnyFile);
+ dialog.setAcceptMode(QFileDialog.AcceptSave);
if not dialog.exec_():
return
fname = dialog.selectedFiles()[0]
@@ -83,14 +92,14 @@ class Window(QtGui.QMainWindow):
self.tab_widget.addTab(widget, short_filename(str(fname)))
self.tab_widget.setCurrentWidget(widget)
except Exception as e:
- QtGui.QMessageBox.critical(self, 'New project', 'Unable to save project to {}: {}'.format(fname, e))
+ QMessageBox.critical(self, 'New project', 'Unable to save project to {}: {}'.format(fname, e))
def loadproject(self, filename=None):
if not filename:
- dialog = QtGui.QFileDialog(self, "Load project");
- dialog.setFilter('binoculars fit file (*.fit)');
- dialog.setFileMode(QtGui.QFileDialog.ExistingFiles);
- dialog.setAcceptMode(QtGui.QFileDialog.AcceptOpen);
+ dialog = QFileDialog(self, "Load project");
+ dialog.setNameFilters(['binoculars fit file (*.fit)']);
+ dialog.setFileMode(QFileDialog.ExistingFiles);
+ dialog.setAcceptMode(QFileDialog.AcceptOpen);
if not dialog.exec_():
return
fname = dialog.selectedFiles()[0]
@@ -101,7 +110,7 @@ class Window(QtGui.QMainWindow):
self.tab_widget.addTab(widget, short_filename(str(fname)))
self.tab_widget.setCurrentWidget(widget)
except Exception as e:
- QtGui.QMessageBox.critical(self, 'Load project', 'Unable to load project from {}: {}'.format(fname, e))
+ QMessageBox.critical(self, 'Load project', 'Unable to load project from {}: {}'.format(fname, e))
else:
widget = TopWidget(str(fname), parent=self)
self.tab_widget.addTab(widget, 'fname')
@@ -109,14 +118,14 @@ class Window(QtGui.QMainWindow):
def add_to_project(self, filename=None):
if self.tab_widget.count() == 0:
- QtGui.QMessageBox.warning(self, 'Warning', 'First select a file to store data')
+ QMessageBox.warning(self, 'Warning', 'First select a file to store data')
self.newproject()
if not filename:
- dialog = QtGui.QFileDialog(self, "Import spaces");
- dialog.setFilter('binoculars space file (*.hdf5)');
- dialog.setFileMode(QtGui.QFileDialog.ExistingFiles);
- dialog.setAcceptMode(QtGui.QFileDialog.AcceptOpen);
+ dialog = QFileDialog(self, "Import spaces");
+ dialog.setNameFilters(['binoculars space file (*.hdf5)']);
+ dialog.setFileMode(QFileDialog.ExistingFiles);
+ dialog.setAcceptMode(QFileDialog.AcceptOpen);
if not dialog.exec_():
return
fname = dialog.selectedFiles()
@@ -127,28 +136,28 @@ class Window(QtGui.QMainWindow):
widget = self.tab_widget.currentWidget()
widget.addspace(str(name))
except Exception as e:
- QtGui.QMessageBox.critical(self, 'Import spaces', 'Unable to import space {}: {}'.format(fname, e))
+ QMessageBox.critical(self, 'Import spaces', 'Unable to import space {}: {}'.format(fname, e))
else:
widget = self.tab_widget.currentWidget()
widget.addspace(filename)
-class TopWidget(QtGui.QWidget):
+class TopWidget(QWidget):
def __init__(self, filename, parent=None):
super(TopWidget, self).__init__(parent)
- hbox = QtGui.QHBoxLayout()
- vbox = QtGui.QVBoxLayout()
- minihbox = QtGui.QHBoxLayout()
- minihbox2 = QtGui.QHBoxLayout()
+ hbox = QHBoxLayout()
+ vbox = QVBoxLayout()
+ minihbox = QHBoxLayout()
+ minihbox2 = QHBoxLayout()
self.database = FitData(filename)
self.table = TableWidget(self.database)
self.nav = ButtonedSlider()
- self.nav.connect(self.nav, QtCore.SIGNAL('slice_index'), self.index_change)
+ self.nav.slice_index.connect(self.index_change)
self.table.trigger.connect(self.active_change)
self.table.check_changed.connect(self.refresh_plot)
- self.tab_widget = QtGui.QTabWidget()
+ self.tab_widget = QTabWidget()
self.fitwidget = FitWidget(self.database, self)
self.integratewidget = IntegrateWidget(self.database, self)
@@ -160,14 +169,14 @@ class TopWidget(QtGui.QWidget):
self.tab_widget.addTab(self.plotwidget, 'plot')
self.tab_widget.addTab(self.peakwidget, 'Peaktracker')
- self.emptywidget = QtGui.QWidget()
+ self.emptywidget = QWidget()
self.emptywidget.setLayout(vbox)
vbox.addWidget(self.table)
vbox.addWidget(self.nav)
self.functions = list()
- self.function_box = QtGui.QComboBox()
+ self.function_box = QComboBox()
for function in dir(binoculars.fit):
cls = getattr(binoculars.fit, function)
if isinstance(cls, type) and issubclass(cls, binoculars.fit.PeakFitBase):
@@ -179,9 +188,9 @@ class TopWidget(QtGui.QWidget):
vbox.addLayout(minihbox)
vbox.addLayout(minihbox2)
- self.all_button = QtGui.QPushButton('fit all')
- self.rod_button = QtGui.QPushButton('fit rod')
- self.slice_button = QtGui.QPushButton('fit slice')
+ self.all_button = QPushButton('fit all')
+ self.rod_button = QPushButton('fit rod')
+ self.slice_button = QPushButton('fit slice')
self.all_button.clicked.connect(self.fit_all)
self.rod_button.clicked.connect(self.fit_rod)
@@ -191,9 +200,9 @@ class TopWidget(QtGui.QWidget):
minihbox.addWidget(self.rod_button)
minihbox.addWidget(self.slice_button)
- self.allint_button = QtGui.QPushButton('int all')
- self.rodint_button = QtGui.QPushButton('int rod')
- self.sliceint_button = QtGui.QPushButton('int slice')
+ self.allint_button = QPushButton('int all')
+ self.rodint_button = QPushButton('int rod')
+ self.sliceint_button = QPushButton('int slice')
self.allint_button.clicked.connect(self.int_all)
self.rodint_button.clicked.connect(self.int_rod)
@@ -203,7 +212,7 @@ class TopWidget(QtGui.QWidget):
minihbox2.addWidget(self.rodint_button)
minihbox2.addWidget(self.sliceint_button)
- splitter = QtGui.QSplitter(QtCore.Qt.Horizontal)
+ splitter = QSplitter(Qt.Horizontal)
splitter.addWidget(self.emptywidget)
splitter.addWidget(self.tab_widget)
@@ -218,7 +227,7 @@ class TopWidget(QtGui.QWidget):
def addspace(self, filename=None):
if filename == None:
- filename = str(QtGui.QFileDialog.getOpenFileName(self, 'Open Project', '.', '*.hdf5'))
+ filename = str(QFileDialog.getOpenFileName(self, 'Open Project', '.', '*.hdf5'))
self.table.addspace(filename)
def active_change(self):
@@ -313,34 +322,34 @@ class TopWidget(QtGui.QWidget):
database.save_sliceattr(index, 'guessloc{0}'.format(param.lstrip('loc')), newval)
def progressbox(self, rodkey, function, iterator, length):
- pd = QtGui.QProgressDialog('Processing {0}'.format(rodkey), 'Cancel', 0, length)
- pd.setWindowModality(QtCore.Qt.WindowModal)
+ pd = QProgressDialog('Processing {0}'.format(rodkey), 'Cancel', 0, length)
+ pd.setWindowModality(Qt.WindowModal)
pd.show()
def progress(index, item):
pd.setValue(index)
if pd.wasCanceled():
raise KeyboardInterrupt
- QtGui.QApplication.processEvents()
+ QApplication.processEvents()
function(*item)
for index, item in enumerate(iterator):
progress(index, item)
pd.close()
-class TableWidget(QtGui.QWidget):
- trigger = QtCore.pyqtSignal()
- check_changed = QtCore.pyqtSignal()
+class TableWidget(QWidget):
+ trigger = pyqtSignal()
+ check_changed = pyqtSignal()
def __init__(self, database, parent=None):
super(TableWidget, self).__init__(parent)
- hbox = QtGui.QHBoxLayout()
+ hbox = QHBoxLayout()
self.database = database
self.activeindex = 0
- self.table = QtGui.QTableWidget(0, 5)
+ self.table = QTableWidget(0, 5)
self.table.setHorizontalHeaderLabels(['', 'rod', 'axis', 'res', 'remove'])
self.table.cellClicked.connect(self.setlength)
@@ -375,16 +384,16 @@ class TableWidget(QtGui.QWidget):
axes = binoculars.space.Axes.fromfile(filename)
- checkboxwidget = QtGui.QCheckBox()
+ checkboxwidget = QCheckBox()
checkboxwidget.rodkey = rodkey
checkboxwidget.setChecked(0)
self.table.setCellWidget(index, 0, checkboxwidget)
checkboxwidget.clicked.connect(self.check_changed)
- item = QtGui.QTableWidgetItem(rodkey)
+ item = QTableWidgetItem(rodkey)
self.table.setItem(index, 1, item)
- axis = QtGui.QComboBox()
+ axis = QComboBox()
for ax in axes:
axis.addItem(ax.label)
self.table.setCellWidget(index, 2, axis)
@@ -393,7 +402,7 @@ class TableWidget(QtGui.QWidget):
elif index > 0:
self.table.cellWidget(0, 2).setCurrentIndex(self.table.cellWidget(0, 2).currentIndex())
- resolution = QtGui.QLineEdit()
+ resolution = QLineEdit()
if not old_resolution == None:
resolution.setText(str(old_resolution))
elif index > 0:
@@ -404,7 +413,7 @@ class TableWidget(QtGui.QWidget):
resolution.editingFinished.connect(activechange_callback(index))
self.table.setCellWidget(index, 3, resolution)
- buttonwidget = QtGui.QPushButton('remove')
+ buttonwidget = QPushButton('remove')
buttonwidget.clicked.connect(remove_callback(rodkey))
self.table.setCellWidget(index, 4, buttonwidget)
@@ -451,9 +460,9 @@ class FitData(object):
for rodkey in self.rods():
spacename = db[rodkey].attrs['filename']
if not os.path.exists(spacename):
- warningbox = QtGui.QMessageBox(2, 'Warning', 'Cannot find space {0} at file {1}; locate proper space'.format(rodkey, spacename), buttons=QtGui.QMessageBox.Open)
+ warningbox = QMessageBox(2, 'Warning', 'Cannot find space {0} at file {1}; locate proper space'.format(rodkey, spacename), buttons=QMessageBox.Open)
warningbox.exec_()
- spacename = str(QtGui.QFileDialog.getOpenFileName(caption='Open space {0}'.format(rodkey), directory='.', filter='*.hdf5'))
+ spacename = str(QFileDialog.getOpenFileName(caption='Open space {0}'.format(rodkey), directory='.', filter='*.hdf5'))
if not spacename:
raise IOError('Select proper input')
db[rodkey].attrs['filename'] = spacename
@@ -584,7 +593,7 @@ class RodData(FitData):
try:
group = db[self.rodkey][self.slicekey]['attrs'] # # else it breaks with the old fitaid
except KeyError:
- db[rodkey][slicekey].create_group('attrs')
+ db[self.rodkey][self.slicekey].create_group('attrs')
group = db[self.rodkey][self.slicekey]['attrs']
if not key in group:
group.create_dataset(key, (self.rodlength(),))
@@ -620,24 +629,23 @@ class RodData(FitData):
def load_loc(self, index):
loc = list()
- with h5py.File(self.filename, 'a') as db:
- count = itertools.count()
+ count = itertools.count()
+ key = 'guessloc{0}'.format(next(count))
+ while self.load_sliceattr(index, key) != None:
+ loc.append(self.load_sliceattr(index, key))
key = 'guessloc{0}'.format(next(count))
+ if len(loc) > 0:
+ return loc
+ else:
+ count = itertools.count()
+ key = 'loc{0}'.format(next(count))
while self.load_sliceattr(index, key) != None:
loc.append(self.load_sliceattr(index, key))
- key = 'guessloc{0}'.format(next(count))
+ key = 'loc{0}'.format(next(count))
if len(loc) > 0:
return loc
else:
- count = itertools.count()
- key = 'loc{0}'.format(next(count))
- while self.load_sliceattr(index, key) != None:
- loc.append(self.load_sliceattr(index, key))
- key = 'loc{0}'.format(next(count))
- if len(loc) > 0:
- return loc
- else:
- return None
+ return None
def save_loc(self, index, loc):
for i, value in enumerate(loc):
@@ -666,9 +674,9 @@ class RodData(FitData):
def short_filename(filename):
return filename.split('/')[-1].split('.')[0]
-class HiddenToolbar(NavigationToolbar2QTAgg):
+class HiddenToolbar(NavigationToolbar2QT):
def __init__(self, corner_callback, canvas):
- NavigationToolbar2QTAgg.__init__(self, canvas, None)
+ super(HiddenToolbar, self).__init__(canvas, None)
self._corner_callback = corner_callback
self.zoom()
@@ -680,12 +688,12 @@ class HiddenToolbar(NavigationToolbar2QTAgg):
self._corner_callback(event.xdata, event.ydata)
self._corner_preclick = None
-class FitWidget(QtGui.QWidget):
+class FitWidget(QWidget):
def __init__(self, database ,parent=None):
super(FitWidget, self).__init__(parent)
self.database = database
- vbox = QtGui.QHBoxLayout()
+ vbox = QHBoxLayout()
self.figure = matplotlib.figure.Figure()
self.canvas = FigureCanvasQTAgg(self.figure)
@@ -747,7 +755,7 @@ class FitWidget(QtGui.QWidget):
else:
return index
-class IntegrateWidget(QtGui.QWidget):
+class IntegrateWidget(QWidget):
def __init__(self, database, parent = None):
super(IntegrateWidget, self).__init__(parent)
self.parent = parent
@@ -757,9 +765,9 @@ class IntegrateWidget(QtGui.QWidget):
self.canvas = FigureCanvasQTAgg(self.figure)
self.toolbar = HiddenToolbar(self.loc_callback, self.canvas)
- hbox = QtGui.QHBoxLayout()
+ hbox = QHBoxLayout()
- splitter = QtGui.QSplitter(QtCore.Qt.Vertical)
+ splitter = QSplitter(Qt.Vertical)
self.make_controlwidget()
splitter.addWidget(self.canvas)
@@ -769,27 +777,27 @@ class IntegrateWidget(QtGui.QWidget):
self.setLayout(hbox)
def make_controlwidget(self):
- self.control_widget = QtGui.QWidget()
+ self.control_widget = QWidget()
- integratebox = QtGui.QVBoxLayout()
- intensitybox = QtGui.QHBoxLayout()
- backgroundbox = QtGui.QHBoxLayout()
+ integratebox = QVBoxLayout()
+ intensitybox = QHBoxLayout()
+ backgroundbox = QHBoxLayout()
- self.aroundroi = QtGui.QCheckBox('background around roi')
+ self.aroundroi = QCheckBox('background around roi')
self.aroundroi.setChecked(1)
self.aroundroi.clicked.connect(self.refresh_aroundroi)
- self.hsize = QtGui.QDoubleSpinBox()
- self.vsize = QtGui.QDoubleSpinBox()
+ self.hsize = QDoubleSpinBox()
+ self.vsize = QDoubleSpinBox()
- intensitybox.addWidget(QtGui.QLabel('roi size:'))
+ intensitybox.addWidget(QLabel('roi size:'))
intensitybox.addWidget(self.hsize)
intensitybox.addWidget(self.vsize)
- self.left = QtGui.QDoubleSpinBox()
- self.right = QtGui.QDoubleSpinBox()
- self.top = QtGui.QDoubleSpinBox()
- self.bottom = QtGui.QDoubleSpinBox()
+ self.left = QDoubleSpinBox()
+ self.right = QDoubleSpinBox()
+ self.top = QDoubleSpinBox()
+ self.bottom = QDoubleSpinBox()
self.hsize.valueChanged.connect(self.send)
self.vsize.valueChanged.connect(self.send)
@@ -807,21 +815,21 @@ class IntegrateWidget(QtGui.QWidget):
integratebox.addLayout(intensitybox)
integratebox.addLayout(backgroundbox)
- self.fromfit = QtGui.QRadioButton('peak from fit', self)
+ self.fromfit = QRadioButton('peak from fit', self)
self.fromfit.setChecked(True)
self.fromfit.toggled.connect(self.plot_box)
self.fromfit.toggled.connect(self.refresh_tracker)
- self.fromsegment = QtGui.QRadioButton('peak from segment', self)
+ self.fromsegment = QRadioButton('peak from segment', self)
self.fromsegment.setChecked(False)
self.fromsegment.toggled.connect(self.plot_box)
self.fromsegment.toggled.connect(self.refresh_tracker)
- self.trackergroup = QtGui.QButtonGroup(self)
+ self.trackergroup = QButtonGroup(self)
self.trackergroup.addButton(self.fromfit)
self.trackergroup.addButton(self.fromsegment)
- radiobox = QtGui.QHBoxLayout()
+ radiobox = QHBoxLayout()
radiobox.addWidget(self.fromfit)
radiobox.addWidget(self.fromsegment)
@@ -1035,17 +1043,17 @@ class IntegrateWidget(QtGui.QWidget):
else:
return index
-class ButtonedSlider(QtGui.QWidget):
+class ButtonedSlider(QWidget):
def __init__(self,parent=None):
super(ButtonedSlider, self).__init__(parent)
- self.navigation_button_left_end = QtGui.QPushButton('|<')
- self.navigation_button_left_one = QtGui.QPushButton('<')
- self.navigation_slider = QtGui.QSlider(Qt.Qt.Horizontal)
+ self.navigation_button_left_end = QPushButton('|<')
+ self.navigation_button_left_one = QPushButton('<')
+ self.navigation_slider = QSlider(Qt.Qt.Horizontal)
self.navigation_slider.sliderReleased.connect(self.send)
- self.navigation_button_right_one = QtGui.QPushButton('>')
- self.navigation_button_right_end = QtGui.QPushButton('>|')
+ self.navigation_button_right_one = QPushButton('>')
+ self.navigation_button_right_end = QPushButton('>|')
self.navigation_button_left_end.setMaximumWidth(20)
self.navigation_button_left_one.setMaximumWidth(20)
@@ -1057,7 +1065,7 @@ class ButtonedSlider(QtGui.QWidget):
self.navigation_button_right_end.clicked.connect(self.slider_change_right_end)
self.navigation_button_right_one.clicked.connect(self.slider_change_right_one)
- box = QtGui.QHBoxLayout()
+ box = QHBoxLayout()
box.addWidget(self.navigation_button_left_end)
box.addWidget(self.navigation_button_left_one)
box.addWidget(self.navigation_slider)
@@ -1070,13 +1078,13 @@ class ButtonedSlider(QtGui.QWidget):
def set_length(self,length):
self.navigation_slider.setMinimum(0)
self.navigation_slider.setMaximum(length - 1)
- self.navigation_slider.setTickPosition(QtGui.QSlider.TicksBelow)
+ self.navigation_slider.setTickPosition(QSlider.TicksBelow)
self.navigation_slider.setValue(0)
self.setEnabled(True)
def send(self):
- self.emit(QtCore.SIGNAL('slice_index'), self.navigation_slider.value())
+ self.slice_index.emit(self.navigation_slider.value())
def slider_change_left_one(self):
self.navigation_slider.setValue(max(self.navigation_slider.value() - 1, 0))
@@ -1100,12 +1108,12 @@ class ButtonedSlider(QtGui.QWidget):
def set_index(self, index):
self.navigation_slider.setValue(index)
-class HiddenToolbar2(NavigationToolbar2QTAgg):
+class HiddenToolbar2(NavigationToolbar2QT):
def __init__(self, canvas):
- NavigationToolbar2QTAgg.__init__(self, canvas, None)
+ super(HiddenToolbar2, self).__init__(canvas, None)
self.zoom()
-class OverviewWidget(QtGui.QWidget):
+class OverviewWidget(QWidget):
def __init__(self, database, parent = None):
super(OverviewWidget, self).__init__(parent)
@@ -1115,14 +1123,14 @@ class OverviewWidget(QtGui.QWidget):
self.canvas = FigureCanvasQTAgg(self.figure)
self.toolbar = HiddenToolbar2(self.canvas)
- self.table = QtGui.QTableWidget(0,2)
+ self.table = QTableWidget(0,2)
self.make_table()
self.table.cellClicked.connect(self.plot)
- hbox = QtGui.QHBoxLayout()
+ hbox = QHBoxLayout()
- splitter = QtGui.QSplitter(QtCore.Qt.Horizontal)
+ splitter = QSplitter(Qt.Horizontal)
splitter.addWidget(self.canvas)
splitter.addWidget(self.control_widget)
@@ -1140,17 +1148,17 @@ class OverviewWidget(QtGui.QWidget):
def make_table(self):
- self.control_widget = QtGui.QWidget()
- vbox = QtGui.QVBoxLayout()
- minibox = QtGui.QHBoxLayout()
+ self.control_widget = QWidget()
+ vbox = QVBoxLayout()
+ minibox = QHBoxLayout()
vbox.addWidget(self.table)
self.table.setHorizontalHeaderLabels(['','param'])
for index, width in enumerate([25,50]):
self.table.setColumnWidth(index, width)
- self.log = QtGui.QCheckBox('log')
+ self.log = QCheckBox('log')
self.log.clicked.connect(self.plot)
- self.export_button = QtGui.QPushButton('export curves')
+ self.export_button = QPushButton('export curves')
self.export_button.clicked.connect(self.export)
@@ -1160,7 +1168,7 @@ class OverviewWidget(QtGui.QWidget):
self.control_widget.setLayout(vbox)
def export(self):
- folder = str(QtGui.QFileDialog.getExistingDirectory(self, "Select directory to save curves"))
+ folder = str(QFileDialog.getExistingDirectory(self, "Select directory to save curves"))
params = self.select()
for param in params:
for database in self.databaselist:
@@ -1187,7 +1195,7 @@ class OverviewWidget(QtGui.QWidget):
index = self.table.rowCount()
self.table.insertRow(index)
- checkboxwidget = QtGui.QCheckBox()
+ checkboxwidget = QCheckBox()
if param in params:
checkboxwidget.setChecked(1)
else:
@@ -1195,7 +1203,7 @@ class OverviewWidget(QtGui.QWidget):
self.table.setCellWidget(index,0, checkboxwidget)
checkboxwidget.clicked.connect(self.plot)
- item = QtGui.QLabel(param)
+ item = QLabel(param)
self.table.setCellWidget(index, 1, item)
self.plot()
@@ -1228,25 +1236,25 @@ class OverviewWidget(QtGui.QWidget):
self.ax.semilogy()
self.canvas.draw()
-class PeakWidget(QtGui.QWidget):
+class PeakWidget(QWidget):
def __init__(self, database, parent=None):
super(PeakWidget, self).__init__(parent)
self.database = database
# create a QTableWidget
- self.table = QtGui.QTableWidget(0, 3, self)
+ self.table = QTableWidget(0, 3, self)
self.table.horizontalHeader().setStretchLastSection(True)
self.table.verticalHeader().setVisible(False)
self.table.itemChanged.connect(self.save)
- self.btn_add_row = QtGui.QPushButton('+', self)
+ self.btn_add_row = QPushButton('+', self)
self.btn_add_row.clicked.connect(self.add_row)
- self.buttonRemove = QtGui.QPushButton('-', self)
+ self.buttonRemove = QPushButton('-', self)
self.buttonRemove.clicked.connect(self.remove)
- vbox = QtGui.QVBoxLayout()
- hbox = QtGui.QHBoxLayout()
+ vbox = QVBoxLayout()
+ hbox = QHBoxLayout()
hbox.addWidget(self.btn_add_row)
hbox.addWidget(self.buttonRemove)
@@ -1270,7 +1278,7 @@ class PeakWidget(QtGui.QWidget):
self.table.insertRow(rowindex)
if row is not None:
for index in range(3):
- newitem = QtGui.QTableWidgetItem(str(row[index]))
+ newitem = QTableWidgetItem(str(row[index]))
self.table.setItem(rowindex, index, newitem)
def remove(self):
@@ -1356,7 +1364,7 @@ def find_unused_rodkey(rodkey, rods):
return newkey
if __name__ == "__main__":
- app = QtGui.QApplication(sys.argv)
+ app = QApplication(sys.argv)
main = Window()
main.resize(1000, 600)
diff --git a/scripts/binoculars-gui b/scripts/binoculars-gui
index 2b60fee..f4b15fc 100755
--- a/scripts/binoculars-gui
+++ b/scripts/binoculars-gui
@@ -3,20 +3,28 @@ from __future__ import unicode_literals
import sys
import os
-import glob
-import numpy
import json
-import itertools
import signal
import subprocess
import socket
import threading
+
+import numpy
import matplotlib.figure
import matplotlib.image
-from mpl_toolkits.mplot3d import Axes3D
-from PyQt4 import QtGui, QtCore, Qt
-from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg, NavigationToolbar2QTAgg
+from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg, NavigationToolbar2QT
+
+# from mpl_toolkits.mplot3d import Axes3D
+
+from PyQt5.Qt import (Qt) # noqa
+from PyQt5.QtCore import (QThread, pyqtSignal)
+from PyQt5.QtGui import (QPainter)
+from PyQt5.QtWidgets import (QAction, QApplication, QStyle, QSlider, QMenuBar, QTabWidget,
+ QFileDialog, QStatusBar, QMessageBox, QRadioButton,
+ QButtonGroup, QCheckBox, QPushButton, QHBoxLayout,
+ QVBoxLayout, QSplitter, QTableWidgetItem, QTableWidget,
+ QLabel, QLineEdit, QStyleOptionSlider, QMainWindow, QWidget)
#python3 support
PY3 = sys.version_info > (3,)
@@ -27,8 +35,8 @@ else:
import SocketServer as socketserver
import Queue as queue
+
def set_src():
- import sys
import os.path as osp
dirpath = osp.join(osp.dirname(osp.abspath(__file__)), osp.pardir)
sys.path.insert(0, osp.abspath(dirpath))
@@ -49,7 +57,7 @@ except ImportError:
#RangeSlider is taken from https://www.mail-archive.com/pyqt@riverbankcomputing.com/msg22889.html
-class RangeSlider(QtGui.QSlider):
+class RangeSlider(QSlider):
""" A slider for ranges.
This class provides a dual-slider for ranges, where there is a defined
@@ -65,8 +73,8 @@ class RangeSlider(QtGui.QSlider):
self._low = self.minimum()
self._high = self.maximum()
- self.pressed_control = QtGui.QStyle.SC_None
- self.hover_control = QtGui.QStyle.SC_None
+ self.pressed_control = QStyle.SC_None
+ self.hover_control = QStyle.SC_None
self.click_offset = 0
# 0 for the low, 1 for the high, -1 for both
@@ -89,37 +97,37 @@ class RangeSlider(QtGui.QSlider):
def paintEvent(self, event):
# based on http://qt.gitorious.org/qt/qt/blobs/master/src/gui/widgets/qslider.cpp
- painter = QtGui.QPainter(self)
- style = QtGui.QApplication.style()
+ painter = QPainter(self)
+ style = QApplication.style()
for i, value in enumerate([self._low, self._high]):
- opt = QtGui.QStyleOptionSlider()
+ opt = QStyleOptionSlider()
self.initStyleOption(opt)
# Only draw the groove for the first slider so it doesn't get drawn
# on top of the existing ones every time
if i == 0:
- opt.subControls = QtGui.QStyle.SC_SliderHandle # QtGui.QStyle.SC_SliderGroove | QtGui.QStyle.SC_SliderHandle
+ opt.subControls = QStyle.SC_SliderHandle # QStyle.SC_SliderGroove | QStyle.SC_SliderHandle
else:
- opt.subControls = QtGui.QStyle.SC_SliderHandle
+ opt.subControls = QStyle.SC_SliderHandle
if self.tickPosition() != self.NoTicks:
- opt.subControls |= QtGui.QStyle.SC_SliderTickmarks
+ opt.subControls |= QStyle.SC_SliderTickmarks
if self.pressed_control:
opt.activeSubControls = self.pressed_control
- opt.state |= QtGui.QStyle.State_Sunken
+ opt.state |= QStyle.State_Sunken
else:
opt.activeSubControls = self.hover_control
opt.sliderPosition = value
opt.sliderValue = value
- style.drawComplexControl(QtGui.QStyle.CC_Slider, opt, painter, self)
+ style.drawComplexControl(QStyle.CC_Slider, opt, painter, self)
def mousePressEvent(self, event):
event.accept()
- style = QtGui.QApplication.style()
+ style = QApplication.style()
button = event.button()
# In a normal slider control, when the user clicks on a point in the
@@ -129,7 +137,7 @@ class RangeSlider(QtGui.QSlider):
# slider parts
if button:
- opt = QtGui.QStyleOptionSlider()
+ opt = QStyleOptionSlider()
self.initStyleOption(opt)
self.active_slider = -1
@@ -147,24 +155,24 @@ class RangeSlider(QtGui.QSlider):
break
if self.active_slider < 0:
- self.pressed_control = QtGui.QStyle.SC_SliderHandle
+ self.pressed_control = QStyle.SC_SliderHandle
self.click_offset = self.__pixelPosToRangeValue(self.__pick(event.pos()))
self.triggerAction(self.SliderMove)
self.setRepeatAction(self.SliderNoAction)
else:
event.ignore()
- def mouseReleaseEvent(self, event):
- self.emit(QtCore.SIGNAL('sliderReleased()'))
+ def mouseReleaseEvent(self, _event):
+ self.sliderReleased.emit()
def mouseMoveEvent(self, event):
- if self.pressed_control != QtGui.QStyle.SC_SliderHandle:
+ if self.pressed_control != QStyle.SC_SliderHandle:
event.ignore()
return
event.accept()
new_pos = self.__pixelPosToRangeValue(self.__pick(event.pos()))
- opt = QtGui.QStyleOptionSlider()
+ opt = QStyleOptionSlider()
self.initStyleOption(opt)
if self.active_slider < 0:
@@ -192,23 +200,23 @@ class RangeSlider(QtGui.QSlider):
self.update()
- self.emit(QtCore.SIGNAL('sliderMoved(int)'), new_pos)
+ self.sliderMoved.emit(new_pos)
def __pick(self, pt):
- if self.orientation() == QtCore.Qt.Horizontal:
+ if self.orientation() == Qt.Horizontal:
return pt.x()
else:
return pt.y()
def __pixelPosToRangeValue(self, pos):
- opt = QtGui.QStyleOptionSlider()
+ opt = QStyleOptionSlider()
self.initStyleOption(opt)
- style = QtGui.QApplication.style()
+ style = QApplication.style()
gr = style.subControlRect(style.CC_Slider, opt, style.SC_SliderGroove, self)
sr = style.subControlRect(style.CC_Slider, opt, style.SC_SliderHandle, self)
- if self.orientation() == QtCore.Qt.Horizontal:
+ if self.orientation() == Qt.Horizontal:
slider_length = sr.width()
slider_min = gr.x()
slider_max = gr.right() - slider_length + 1
@@ -222,50 +230,50 @@ class RangeSlider(QtGui.QSlider):
opt.upsideDown)
-class Window(QtGui.QMainWindow):
+class Window(QMainWindow):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
- newproject = QtGui.QAction("New project", self)
+ newproject = QAction("New project", self)
newproject.triggered.connect(self.newproject)
- loadproject = QtGui.QAction("Open project", self)
+ loadproject = QAction("Open project", self)
loadproject.triggered.connect(self.loadproject)
- saveproject = QtGui.QAction("Save project", self)
+ saveproject = QAction("Save project", self)
saveproject.triggered.connect(self.saveproject)
- addspace = QtGui.QAction("Import space", self)
+ addspace = QAction("Import space", self)
addspace.triggered.connect(self.add_to_project)
- savespace = QtGui.QAction("Export space", self)
+ savespace = QAction("Export space", self)
savespace.triggered.connect(self.exportspace)
- menu_bar = QtGui.QMenuBar()
- file = menu_bar.addMenu("&File")
- file.addAction(newproject)
- file.addAction(loadproject)
- file.addAction(saveproject)
- file.addAction(addspace)
- file.addAction(savespace)
+ menu_bar = QMenuBar()
+ f = menu_bar.addMenu("&File")
+ f.addAction(newproject)
+ f.addAction(loadproject)
+ f.addAction(saveproject)
+ f.addAction(addspace)
+ f.addAction(savespace)
- merge = QtGui.QAction("Merge", self)
+ merge = QAction("Merge", self)
merge.triggered.connect(self.merge)
- subtract = QtGui.QAction("Subtract", self)
+ subtract = QAction("Subtract", self)
subtract.triggered.connect(self.subtract)
edit = menu_bar.addMenu("&Edit")
edit.addAction(merge)
edit.addAction(subtract)
- start_server = QtGui.QAction("Start server queue", self)
+ start_server = QAction("Start server queue", self)
start_server.triggered.connect(lambda: self.open_server(startq=True))
- stop_server = QtGui.QAction("Stop server queue", self)
+ stop_server = QAction("Stop server queue", self)
stop_server.triggered.connect(self.kill_server)
- recieve = QtGui.QAction("Open for spaces", self)
+ recieve = QAction("Open for spaces", self)
recieve.triggered.connect(lambda: self.open_server(startq=False))
serve = menu_bar.addMenu("&Serve")
@@ -273,11 +281,11 @@ class Window(QtGui.QMainWindow):
serve.addAction(stop_server)
serve.addAction(recieve)
- self.tab_widget = QtGui.QTabWidget(self)
+ self.tab_widget = QTabWidget(self)
self.tab_widget.setTabsClosable(True)
self.tab_widget.tabCloseRequested.connect(self.tab_widget.removeTab)
- self.statusbar = QtGui.QStatusBar()
+ self.statusbar = QStatusBar()
self.setCentralWidget(self.tab_widget)
self.setMenuBar(menu_bar)
@@ -297,10 +305,10 @@ class Window(QtGui.QMainWindow):
def loadproject(self, filename=None):
if not filename:
- dialog = QtGui.QFileDialog(self, "Load project");
- dialog.setFilter('binoculars project file (*.proj)');
- dialog.setFileMode(QtGui.QFileDialog.ExistingFiles);
- dialog.setAcceptMode(QtGui.QFileDialog.AcceptOpen);
+ dialog = QFileDialog(self, "Load project")
+ dialog.setNameFilters(['binoculars project file (*.proj)'])
+ dialog.setFileMode(QFileDialog.ExistingFiles)
+ dialog.setAcceptMode(QFileDialog.AcceptOpen)
if not dialog.exec_():
return
fname = dialog.selectedFiles()
@@ -312,18 +320,18 @@ class Window(QtGui.QMainWindow):
self.tab_widget.addTab(widget, short_filename(str(name)))
self.tab_widget.setCurrentWidget(widget)
except Exception as e:
- QtGui.QMessageBox.critical(self, 'Load project', 'Unable to load project from {}: {}'.format(fname, e))
+ QMessageBox.critical(self, 'Load project', 'Unable to load project from {}: {}'.format(fname, e))
else:
widget = ProjectWidget.fromfile(filename, parent=self)
self.tab_widget.addTab(widget, short_filename(filename))
def saveproject(self):
widget = self.tab_widget.currentWidget()
- dialog = QtGui.QFileDialog(self, "Save project");
- dialog.setFilter('binoculars project file (*.proj)');
- dialog.setDefaultSuffix('proj');
- dialog.setFileMode(QtGui.QFileDialog.AnyFile);
- dialog.setAcceptMode(QtGui.QFileDialog.AcceptSave);
+ dialog = QFileDialog(self, "Save project")
+ dialog.setNameFilters(['binoculars project file (*.proj)'])
+ dialog.setDefaultSuffix('proj')
+ dialog.setFileMode(QFileDialog.AnyFile)
+ dialog.setAcceptMode(QFileDialog.AcceptSave)
if not dialog.exec_():
return
fname = dialog.selectedFiles()[0]
@@ -334,16 +342,16 @@ class Window(QtGui.QMainWindow):
self.tab_widget.setTabText(index, short_filename(fname))
widget.tofile(fname)
except Exception as e:
- QtGui.QMessageBox.critical(self, 'Save project', 'Unable to save project to {}: {}'.format(fname, e))
+ QMessageBox.critical(self, 'Save project', 'Unable to save project to {}: {}'.format(fname, e))
def add_to_project(self):
if self.tab_widget.count() == 0:
self.newproject()
- dialog = QtGui.QFileDialog(self, "Import spaces");
- dialog.setFilter('binoculars space file (*.hdf5)');
- dialog.setFileMode(QtGui.QFileDialog.ExistingFiles);
- dialog.setAcceptMode(QtGui.QFileDialog.AcceptOpen);
+ dialog = QFileDialog(self, "Import spaces")
+ dialog.setNameFilters(['binoculars space file (*.hdf5)'])
+ dialog.setFileMode(QFileDialog.ExistingFiles)
+ dialog.setAcceptMode(QFileDialog.AcceptOpen)
if not dialog.exec_():
return
fname = dialog.selectedFiles()
@@ -353,49 +361,49 @@ class Window(QtGui.QMainWindow):
try:
widget = self.tab_widget.currentWidget()
widget.addspace(str(name), True)
- except Exception as e:
+ except Exception as _e:
raise
- #QtGui.QMessageBox.critical(self, 'Import spaces', 'Unable to import space {}: {}'.format(str(name), e))
+ #QMessageBox.critical(self, 'Import spaces', 'Unable to import space {}: {}'.format(str(name), e))
def exportspace(self):
widget = self.tab_widget.currentWidget()
- dialog = QtGui.QFileDialog(self, "save mesh");
- dialog.setFileMode(QtGui.QFileDialog.AnyFile);
- dialog.setAcceptMode(QtGui.QFileDialog.AcceptSave);
+ dialog = QFileDialog(self, "save mesh")
+ dialog.setFileMode(QFileDialog.AnyFile)
+ dialog.setAcceptMode(QFileDialog.AcceptSave)
if not dialog.exec_():
return
fname = dialog.selectedFiles()[0]
if not fname:
return
try:
- index = self.tab_widget.currentIndex()
+ _index = self.tab_widget.currentIndex()
widget.space_to_file(str(fname))
except Exception as e:
- QtGui.QMessageBox.critical(self, 'export fitdata', 'Unable to save mesh to {}: {}'.format(fname, e))
+ QMessageBox.critical(self, 'export fitdata', 'Unable to save mesh to {}: {}'.format(fname, e))
def merge(self):
widget = self.tab_widget.currentWidget()
- dialog = QtGui.QFileDialog(self, "save mesh");
- dialog.setFilter('binoculars space file (*.hdf5)');
- dialog.setDefaultSuffix('hdf5');
- dialog.setFileMode(QtGui.QFileDialog.AnyFile);
- dialog.setAcceptMode(QtGui.QFileDialog.AcceptSave);
+ dialog = QFileDialog(self, "save mesh")
+ dialog.setNameFilters(['binoculars space file (*.hdf5)'])
+ dialog.setDefaultSuffix('hdf5')
+ dialog.setFileMode(QFileDialog.AnyFile)
+ dialog.setAcceptMode(QFileDialog.AcceptSave)
if not dialog.exec_():
return
fname = dialog.selectedFiles()[0]
if not fname:
return
try:
- index = self.tab_widget.currentIndex()
+ _index = self.tab_widget.currentIndex()
widget.merge(str(fname))
except Exception as e:
- QtGui.QMessageBox.critical(self, 'merge', 'Unable to save mesh to {}: {}'.format(fname, e))
+ QMessageBox.critical(self, 'merge', 'Unable to save mesh to {}: {}'.format(fname, e))
def subtract(self):
- dialog = QtGui.QFileDialog(self, "subtract space");
- dialog.setFilter('binoculars space file (*.hdf5)');
- dialog.setFileMode(QtGui.QFileDialog.ExistingFiles);
- dialog.setAcceptMode(QtGui.QFileDialog.AcceptOpen);
+ dialog = QFileDialog(self, "subtract space")
+ dialog.setNameFilters(['binoculars space file (*.hdf5)'])
+ dialog.setFileMode(QFileDialog.ExistingFiles)
+ dialog.setAcceptMode(QFileDialog.AcceptOpen)
if not dialog.exec_():
return
fname = dialog.selectedFiles()
@@ -406,7 +414,7 @@ class Window(QtGui.QMainWindow):
widget = self.tab_widget.currentWidget()
widget.subtractspace(str(name))
except Exception as e:
- QtGui.QMessageBox.critical(self, 'Import spaces', 'Unable to import space {}: {}'.format(fname, e))
+ QMessageBox.critical(self, 'Import spaces', 'Unable to import space {}: {}'.format(fname, e))
def open_server(self, startq=True):
if len(self.threads) != 0:
@@ -470,9 +478,9 @@ class Window(QtGui.QMainWindow):
serverwidget.limitwidget.refresh()
-class UpdateThread(QtCore.QThread):
+class UpdateThread(QThread):
fq = queue.Queue()
- data_found = QtCore.pyqtSignal(object)
+ data_found = pyqtSignal(object)
def run(self):
delay = binoculars.util.loop_delayer(1)
@@ -510,9 +518,9 @@ class SpaceTCPHandler(socketserver.BaseRequestHandler):
self.server.q.put((command, space))
-class HiddenToolbar(NavigationToolbar2QTAgg):
+class HiddenToolbar(NavigationToolbar2QT):
def __init__(self, show_coords, update_sliders, canvas):
- NavigationToolbar2QTAgg.__init__(self, canvas, None)
+ NavigationToolbar2QT.__init__(self, canvas, None)
self.show_coords = show_coords
self.update_sliders = update_sliders
self.zoom()
@@ -534,7 +542,7 @@ class HiddenToolbar(NavigationToolbar2QTAgg):
self.update_sliders(self.inaxes)
-class ProjectWidget(QtGui.QWidget):
+class ProjectWidget(QWidget):
def __init__(self, filelist, key=None, projection=None, parent=None):
super(ProjectWidget, self).__init__(parent)
self.parent = parent
@@ -543,48 +551,48 @@ class ProjectWidget(QtGui.QWidget):
self.canvas = FigureCanvasQTAgg(self.figure)
self.toolbar = HiddenToolbar(self.show_coords, self.update_sliders, self.canvas)
- self.lin = QtGui.QRadioButton('lin', self)
+ self.lin = QRadioButton('lin', self)
self.lin.setChecked(False)
self.lin.toggled.connect(self.plot)
- self.log = QtGui.QRadioButton('log', self)
+ self.log = QRadioButton('log', self)
self.log.setChecked(True)
self.log.toggled.connect(self.plot)
- self.loglog = QtGui.QRadioButton('loglog', self)
+ self.loglog = QRadioButton('loglog', self)
self.loglog.setChecked(False)
self.loglog.toggled.connect(self.plot)
- self.loggroup = QtGui.QButtonGroup(self)
+ self.loggroup = QButtonGroup(self)
self.loggroup.addButton(self.lin)
self.loggroup.addButton(self.log)
self.loggroup.addButton(self.loglog)
- self.swap_axes = QtGui.QCheckBox('ax', self)
+ self.swap_axes = QCheckBox('ax', self)
self.swap_axes.setChecked(False)
self.swap_axes.stateChanged.connect(self.plot)
- self.samerange = QtGui.QCheckBox('same', self)
+ self.samerange = QCheckBox('same', self)
self.samerange.setChecked(False)
self.samerange.stateChanged.connect(self.update_colorbar)
- self.legend = QtGui.QCheckBox('legend', self)
+ self.legend = QCheckBox('legend', self)
self.legend.setChecked(True)
self.legend.stateChanged.connect(self.plot)
- self.threed = QtGui.QCheckBox('3d', self)
+ self.threed = QCheckBox('3d', self)
self.threed.setChecked(False)
self.threed.stateChanged.connect(self.plot)
- self.auto_update = QtGui.QCheckBox('auto', self)
+ self.auto_update = QCheckBox('auto', self)
self.auto_update.setChecked(True)
- self.datarange = RangeSlider(Qt.Qt.Horizontal)
+ self.datarange = RangeSlider(Qt.Horizontal)
self.datarange.setMinimum(0)
self.datarange.setMaximum(250)
self.datarange.setLow(0)
self.datarange.setHigh(self.datarange.maximum())
- self.datarange.setTickPosition(QtGui.QSlider.TicksBelow)
+ self.datarange.setTickPosition(QSlider.TicksBelow)
self.datarange.sliderMoved.connect(self.update_colorbar)
self.table = TableWidget(filelist)
@@ -594,10 +602,10 @@ class ProjectWidget(QtGui.QWidget):
self.key = key
self.projection = projection
- self.button_save = QtGui.QPushButton('save image')
+ self.button_save = QPushButton('save image')
self.button_save.clicked.connect(self.save)
- self.button_refresh = QtGui.QPushButton('refresh')
+ self.button_refresh = QPushButton('refresh')
self.button_refresh.clicked.connect(self.table.select)
self.limitwidget = LimitWidget(self.table.plotaxes)
@@ -609,19 +617,19 @@ class ProjectWidget(QtGui.QWidget):
self.table.select()
def initUI(self):
- self.control_widget = QtGui.QWidget(self)
- hbox = QtGui.QHBoxLayout()
- left = QtGui.QVBoxLayout()
+ self.control_widget = QWidget(self)
+ hbox = QHBoxLayout()
+ left = QVBoxLayout()
- pushbox = QtGui.QHBoxLayout()
+ pushbox = QHBoxLayout()
pushbox.addWidget(self.button_save)
pushbox.addWidget(self.button_refresh)
left.addLayout(pushbox)
- radiobox = QtGui.QHBoxLayout()
- self.group = QtGui.QButtonGroup(self)
+ radiobox = QHBoxLayout()
+ self.group = QButtonGroup(self)
for label in ['stack', 'grid']:
- rb = QtGui.QRadioButton(label, self.control_widget)
+ rb = QRadioButton(label, self.control_widget)
rb.setChecked(True)
self.group.addButton(rb)
radiobox.addWidget(rb)
@@ -630,7 +638,7 @@ class ProjectWidget(QtGui.QWidget):
radiobox.addWidget(self.log)
radiobox.addWidget(self.loglog)
- datarangebox = QtGui.QHBoxLayout()
+ datarangebox = QHBoxLayout()
datarangebox.addWidget(self.samerange)
datarangebox.addWidget(self.legend)
datarangebox.addWidget(self.threed)
@@ -645,7 +653,7 @@ class ProjectWidget(QtGui.QWidget):
left.addWidget(self.limitwidget)
self.control_widget.setLayout(left)
- splitter = QtGui.QSplitter(QtCore.Qt.Horizontal)
+ splitter = QSplitter(Qt.Horizontal)
splitter.addWidget(self.control_widget)
splitter.addWidget(self.canvas)
@@ -733,7 +741,7 @@ class ProjectWidget(QtGui.QWidget):
return matplotlib.colors.Normalize(vmin, vmax)
def get_normlist(self):
- log = self.log.isChecked()
+ _log = self.log.isChecked()
same = self.samerange.checkState()
if same:
@@ -840,7 +848,7 @@ class ProjectWidget(QtGui.QWidget):
list(map(self.table.remove, self.table.selection))
self.table.addspace(filename, True)
except Exception as e:
- QtGui.QMessageBox.critical(self, 'Merge', 'Unable to merge the meshes. {}'.format(e))
+ QMessageBox.critical(self, 'Merge', 'Unable to merge the meshes. {}'.format(e))
def subtractspace(self, filename):
try:
@@ -853,7 +861,7 @@ class ProjectWidget(QtGui.QWidget):
self.table.remove(selected_filename)
self.table.addspace(newfilename, True)
except Exception as e:
- QtGui.QMessageBox.critical(self, 'Subtract', 'Unable to subtract the meshes. {}'.format(e))
+ QMessageBox.critical(self, 'Subtract', 'Unable to subtract the meshes. {}'.format(e))
def errormessage(self, message):
self.figure.clear()
@@ -895,7 +903,7 @@ class ProjectWidget(QtGui.QWidget):
dict['projection'] = self.projection
if filename == None:
- filename = str(QtGui.QFileDialog.getSaveFileName(self, 'Save Project', '.'))
+ filename = str(QFileDialog.getSaveFileName(self, 'Save Project', '.'))
with open(filename, 'w') as fp:
json.dump(dict, fp)
@@ -903,19 +911,19 @@ class ProjectWidget(QtGui.QWidget):
@classmethod
def fromfile(cls, filename=None, parent=None):
if filename == None:
- filename = str(QtGui.QFileDialog.getOpenFileName(self, 'Open Project', '.', '*.proj'))
+ filename = str(QFileDialog.getOpenFileName(cls, 'Open Project', '.', '*.proj'))
try:
with open(filename, 'r') as fp:
dict = json.load(fp)
except IOError as e:
- raise self.error.showMessage("unable to open '{0}' as project file (original error: {1!r})".format(filename, e))
+ raise cls.error.showMessage("unable to open '{0}' as project file (original error: {1!r})".format(filename, e))
newlist = []
for fn in dict['filelist']:
if not os.path.exists(fn):
- warningbox = QtGui.QMessageBox(2, 'Warning', 'Cannot find space at path {0}; locate proper space'.format(fn), buttons=QtGui.QMessageBox.Open)
+ warningbox = QMessageBox(2, 'Warning', 'Cannot find space at path {0}; locate proper space'.format(fn), buttons=QMessageBox.Open)
warningbox.exec_()
- newname = str(QtGui.QFileDialog.getOpenFileName(caption='Open space {0}'.format(fn), directory='.', filter='*.hdf5'))
+ newname = str(QFileDialog.getOpenFileName(caption='Open space {0}'.format(fn), directory='.', filter='*.hdf5'))
newlist.append(newname)
else:
newlist.append(fn)
@@ -926,15 +934,16 @@ class ProjectWidget(QtGui.QWidget):
def addspace(self, filename=None, add=False):
if filename == None:
- filename = str(QtGui.QFileDialog.getOpenFileName(self, 'Open Project', '.', '*.hdf5'))
+ filename = str(QFileDialog.getOpenFileName(self, 'Open Project', '.', '*.hdf5'))
self.table.add_space(filename, add)
def save(self):
- dialog = QtGui.QFileDialog(self, "Save image");
- dialog.setFilter('Portable Network Graphics (*.png);;Portable Document Format (*.pdf)');
- dialog.setDefaultSuffix('png');
- dialog.setFileMode(QtGui.QFileDialog.AnyFile);
- dialog.setAcceptMode(QtGui.QFileDialog.AcceptSave);
+ dialog = QFileDialog(self, "Save image")
+ dialog.setNameFilters(['Portable Network Graphics (*.png)',
+ 'Portable Document Format (*.pdf)'])
+ dialog.setDefaultSuffix('png')
+ dialog.setFileMode(QFileDialog.AnyFile)
+ dialog.setAcceptMode(QFileDialog.AcceptSave)
if not dialog.exec_():
return
fname = dialog.selectedFiles()[0]
@@ -943,7 +952,7 @@ class ProjectWidget(QtGui.QWidget):
try:
self.figure.savefig(str(fname))
except Exception as e:
- QtGui.QMessageBox.critical(self, 'Save image', 'Unable to save image to {}: {}'.format(fname, e))
+ QMessageBox.critical(self, 'Save image', 'Unable to save image to {}: {}'.format(fname, e))
def space_to_file(self, fname):
ext = os.path.splitext(fname)[-1]
@@ -978,7 +987,7 @@ def short_filename(filename):
return filename.split('/')[-1].split('.')[0]
-class SpaceContainer(QtGui.QTableWidgetItem):
+class SpaceContainer(QTableWidgetItem):
def __init__(self, label, space=None):
super(SpaceContainer, self).__init__(short_filename(label))
self.label = label
@@ -998,23 +1007,23 @@ class SpaceContainer(QtGui.QTableWidgetItem):
else:
return self.space.axes
- def add_to_space(space):
- if self.space == None:
+ def add_to_space(self, space):
+ if self.space is None:
newspace = binoculars.space.Space.fromfile(self.label) + space
- newspsace.tofile(self.label)
+ newspace.tofile(self.label)
else:
self.space += space
-class TableWidget(QtGui.QWidget):
- selectionError = QtCore.pyqtSignal(str, name = 'Selection Error')
- plotaxesChanged = QtCore.pyqtSignal(binoculars.space.Axes, name = 'plot axes changed')
+class TableWidget(QWidget):
+ selectionError = pyqtSignal(str, name = 'Selection Error')
+ plotaxesChanged = pyqtSignal(binoculars.space.Axes, name = 'plot axes changed')
def __init__(self, filelist = [],parent=None):
super(TableWidget, self).__init__(parent)
- hbox = QtGui.QHBoxLayout()
+ hbox = QHBoxLayout()
- self.table = QtGui.QTableWidget(0, 4)
+ self.table = QTableWidget(0, 4)
self.table.setHorizontalHeaderLabels(['', 'filename','labels', 'remove'])
for index, width in enumerate([25,150,50,70]):
@@ -1030,7 +1039,7 @@ class TableWidget(QtGui.QWidget):
index = self.table.rowCount()
self.table.insertRow(index)
- checkboxwidget = QtGui.QCheckBox()
+ checkboxwidget = QCheckBox()
checkboxwidget.setChecked(add)
checkboxwidget.clicked.connect(self.select)
self.table.setCellWidget(index,0, checkboxwidget)
@@ -1038,10 +1047,10 @@ class TableWidget(QtGui.QWidget):
container = SpaceContainer(filename, space)
self.table.setItem(index, 1, container)
- item = QtGui.QTableWidgetItem(','.join(list(ax.label.lower() for ax in container.get_ax())))
+ item = QTableWidgetItem(','.join(list(ax.label.lower() for ax in container.get_ax())))
self.table.setItem(index, 2, item)
- buttonwidget = QtGui.QPushButton('remove')
+ buttonwidget = QPushButton('remove')
buttonwidget.clicked.connect(lambda: self.remove(filename))
self.table.setCellWidget(index,3, buttonwidget)
if add:
@@ -1099,9 +1108,9 @@ class TableWidget(QtGui.QWidget):
def itercontainer(self):
return iter(self.table.item(index, 1) for index in range(self.table.rowCount()))
-class LimitWidget(QtGui.QWidget):
- keydict = QtCore.pyqtSignal(dict, name = "keydict")
- rangechange = QtCore.pyqtSignal(list, name = "rangechange")
+class LimitWidget(QWidget):
+ keydict = pyqtSignal(dict, name = "keydict")
+ rangechange = pyqtSignal(list, name = "rangechange")
def __init__(self, axes, parent=None):
super(LimitWidget, self).__init__(parent)
@@ -1117,12 +1126,12 @@ class LimitWidget(QtGui.QWidget):
labels = list(ax.label for ax in axes)
- vbox = QtGui.QVBoxLayout()
- hbox = QtGui.QHBoxLayout()
+ vbox = QVBoxLayout()
+ hbox = QHBoxLayout()
- self.projectionlabel = QtGui.QLabel(self)
+ self.projectionlabel = QLabel(self)
self.projectionlabel.setText('projection along axis')
- self.refreshbutton = QtGui.QPushButton('all')
+ self.refreshbutton = QPushButton('all')
self.refreshbutton.clicked.connect(self.refresh)
vbox.addWidget(self.projectionlabel)
@@ -1131,7 +1140,7 @@ class LimitWidget(QtGui.QWidget):
self.state = list()
for label in labels:
- self.checkbox.append(QtGui.QCheckBox(label, self))
+ self.checkbox.append(QCheckBox(label, self))
for box in self.checkbox:
self.state.append(box.checkState())
hbox.addWidget(box)
@@ -1143,13 +1152,13 @@ class LimitWidget(QtGui.QWidget):
vbox.addLayout(hbox)
for label in labels:
- self.qlabels.append(QtGui.QLabel(self))
- self.leftindicator.append(QtGui.QLineEdit(self))
- self.rightindicator.append(QtGui.QLineEdit(self))
- self.sliders.append(RangeSlider(Qt.Qt.Horizontal))
+ self.qlabels.append(QLabel(self))
+ self.leftindicator.append(QLineEdit(self))
+ self.rightindicator.append(QLineEdit(self))
+ self.sliders.append(RangeSlider(Qt.Horizontal))
for index, label in enumerate(labels):
- box = QtGui.QHBoxLayout()
+ box = QHBoxLayout()
box.addWidget(self.qlabels[index])
box.addWidget(self.leftindicator[index])
box.addWidget(self.sliders[index])
@@ -1169,7 +1178,7 @@ class LimitWidget(QtGui.QWidget):
self.sliders[index].setMaximum(len(ax) - 1)
self.sliders[index].setLow(0)
self.sliders[index].setHigh(len(ax) - 1)
- self.sliders[index].setTickPosition(QtGui.QSlider.TicksBelow)
+ self.sliders[index].setTickPosition(QSlider.TicksBelow)
self.update_lines()
@@ -1251,14 +1260,14 @@ class LimitWidget(QtGui.QWidget):
def init_checkbox(self):
while numpy.alen(self.state) - self.state.sum() > 2:
- index = numpy.where(self.state == False)[-1]
+ _index = numpy.where(self.state == False)[-1]
self.state[-1] = True
for box, state in zip(self.checkbox, self.state):
box.setChecked(state)
def axes_update(self, axes):
if not set(ax.label for ax in self.axes) == set(ax.label for ax in axes):
- QtGui.QWidget().setLayout(self.layout())
+ QWidget().setLayout(self.layout())
self.initUI(axes)
self.send_signal()
else:
@@ -1298,7 +1307,7 @@ def is_empty(key):
return False
if __name__ == '__main__':
- app = QtGui.QApplication(sys.argv)
+ app = QApplication(sys.argv)
binoculars.space.silence_numpy_errors()
diff --git a/scripts/binoculars-processgui b/scripts/binoculars-processgui
index 3127cd6..a019dcf 100755
--- a/scripts/binoculars-processgui
+++ b/scripts/binoculars-processgui
@@ -9,7 +9,14 @@ import sys
import os
import time
-from PyQt4 import QtGui, QtCore
+from PyQt5.Qt import (Qt)
+from PyQt5.QtWidgets import (QAction, QApplication, QTabWidget,
+ QFileDialog, QMessageBox,
+ QPushButton, QHBoxLayout,
+ QVBoxLayout, QSplitter, QTableWidgetItem, QTableWidget,
+ QLabel, QLineEdit, QMainWindow, QWidget, QComboBox,
+ QProgressDialog, QPalette, QDockWidget,
+ QColor)
def set_src():
@@ -30,15 +37,15 @@ except ImportError:
#--------------------------------------------CREATE MAIN WINDOW----------------------------------------
-class Window(QtGui.QMainWindow):
+class Window(QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.initUI()
- self.tab_widget = QtGui.QTabWidget(self)
+ self.tab_widget = QTabWidget(self)
self.setCentralWidget(self.tab_widget)
# add the close button for tabs
- close = self.tab_widget.setTabsClosable(True)
+ self.tab_widget.setTabsClosable(True)
self.tab_widget.tabCloseRequested.connect(self.close_tab)
#method for close tabs
@@ -47,62 +54,62 @@ class Window(QtGui.QMainWindow):
def initUI(self):
#we create the menu bar
- openFile = QtGui.QAction('Open', self)
- openFile.setShortcut('Ctrl+O')
- openFile.setStatusTip('Open new File')
- openFile.triggered.connect(self.ShowFile)
+ openfile = QAction('Open', self)
+ openfile.setShortcut('Ctrl+O')
+ openfile.setStatusTip('Open new File')
+ openfile.triggered.connect(self.ShowFile)
- saveFile = QtGui.QAction('Save', self)
- saveFile.setShortcut('Ctrl+S')
- saveFile.setStatusTip('Save File')
- saveFile.triggered.connect(self.Save)
+ savefile = QAction('Save', self)
+ savefile.setShortcut('Ctrl+S')
+ savefile.setStatusTip('Save File')
+ savefile.triggered.connect(self.Save)
- Create = QtGui.QAction('Create', self)
- Create.setStatusTip('Create Configfile')
- Create.triggered.connect(self.New_Config)
+ create = QAction('Create', self)
+ create.setStatusTip('Create Configfile')
+ create.triggered.connect(self.New_Config)
menubar = self.menuBar()
- fileMenu = menubar.addMenu('&File')
- fileMenu.addAction(openFile)
- fileMenu.addAction(saveFile)
- fileMenu = menubar.addMenu('&New Configfile')
- fileMenu.addAction(Create)
+ filemenu = menubar.addMenu('&File')
+ filemenu.addAction(openfile)
+ filemenu.addAction(savefile)
+ filemenu = menubar.addMenu('&New Configfile')
+ filemenu.addAction(create)
#we configue the main windows
- palette = QtGui.QPalette()
- palette.setColor(QtGui.QPalette.Background, QtCore.Qt.gray)
+ palette = QPalette()
+ palette.setColor(QPalette.Background, Qt.gray)
self.setPalette(palette)
self.setGeometry(50, 100, 700, 700)
self.setWindowTitle('Binoculars processgui')
self.show()
- self.ListCommand = QtGui.QTableWidget(1, 2, self)
+ self.ListCommand = QTableWidget(1, 2, self)
self.ListCommand.verticalHeader().setVisible(True)
self.ListCommand.horizontalHeader().setVisible(False)
self.ListCommand.horizontalHeader().stretchSectionCount()
self.ListCommand.setColumnWidth(0, 80)
self.ListCommand.setColumnWidth(1, 80)
self.ListCommand.setRowCount(0)
- self.buttonDelete = QtGui.QPushButton('Delete', self)
- self.connect(self.buttonDelete, QtCore.SIGNAL("clicked()"), self.removeConf)
- self.process = QtGui.QPushButton('run', self)
+ self.buttonDelete = QPushButton('Delete', self)
+ self.buttonDetete.clicked.connect(self.removeConf)
+ self.process = QPushButton('run', self)
self.process.setStyleSheet("background-color: darkred")
- self.connect(self.process, QtCore.SIGNAL("clicked()"), self.run)
+ self.process.clicked.connect(self.run)
- self.wid = QtGui.QWidget()
- self.CommandLayout = QtGui.QVBoxLayout()
+ self.wid = QWidget()
+ self.CommandLayout = QVBoxLayout()
self.CommandLayout.addWidget(self.ListCommand)
self.CommandLayout.addWidget(self.process)
self.CommandLayout.addWidget(self.buttonDelete)
self.wid.setLayout(self.CommandLayout)
- self.Dock = QtGui.QDockWidget()
- self.Dock.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea)
- self.Dock.setFeatures(QtGui.QDockWidget.NoDockWidgetFeatures)
+ self.Dock = QDockWidget()
+ self.Dock.setAllowedAreas(Qt.LeftDockWidgetArea)
+ self.Dock.setFeatures(QDockWidget.NoDockWidgetFeatures)
self.Dock.setWidget(self.wid)
self.Dock.setMaximumWidth(200)
self.Dock.setMinimumWidth(200)
- self.addDockWidget(QtCore.Qt.DockWidgetArea(1), self.Dock)
+ self.addDockWidget(Qt.DockWidgetArea(1), self.Dock)
def removeConf(self):
self.ListCommand.removeRow(self.ListCommand.currentRow())
@@ -114,9 +121,9 @@ class Window(QtGui.QMainWindow):
filename = self.tab_widget.tabText(index)
self.ListCommand.insertRow(self.ListCommand.rowCount())
dic = {filename: cfg}
- self.item1 = QtGui.QTableWidgetItem(str(command))
+ self.item1 = QTableWidgetItem(str(command))
self.item1.command = command
- self.item2 = QtGui.QTableWidgetItem(str(filename))
+ self.item2 = QTableWidgetItem(str(filename))
self.item2.cfg = dic[filename]
self.ListCommand.setItem(row, 0, self.item1)
self.ListCommand.setItem(row, 1, self.item2)
@@ -124,14 +131,14 @@ class Window(QtGui.QMainWindow):
#We run the script and create a hdf5 file
def run(self):
maximum = self.ListCommand.rowCount()
- pd = QtGui.QProgressDialog('running', 'Cancel', 0, maximum, self)
- pd.setWindowModality(QtCore.Qt.WindowModal)
+ pd = QProgressDialog('running', 'Cancel', 0, maximum, self)
+ pd.setWindowModality(Qt.WindowModal)
pd.show()
def progress(cfg, command):
if pd.wasCanceled():
raise KeyboardInterrupt
- QtGui.QApplication.processEvents()
+ QApplication.processEvents()
return binoculars.main.Main.from_object(cfg, command)
try:
for index in range(self.ListCommand.rowCount()):
@@ -145,23 +152,23 @@ class Window(QtGui.QMainWindow):
except BaseException as e:
#cfg = self.ListCommand.item(index,1).cfg
#print cfg
- QtGui.QMessageBox.about(self, "Error", "There was an error processing one of the scans: {0}".format(e))
+ QMessageBox.about(self, "Error", "There was an error processing one of the scans: {0}".format(e))
finally:
pd.close()
#we call the load function
def ShowFile(self):
- filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', '')
+ filename = QFileDialog.getOpenFileName(self, 'Open File', '')
confwidget = Conf_Tab(self)
confwidget.read_data(str(filename))
newIndex = self.tab_widget.addTab(confwidget, os.path.basename(str(filename)))
- QtCore.QObject.connect(confwidget, QtCore.SIGNAL("command"), self.Add_To_Liste)
+ confwidget.command.connect(self.Add_To_Liste)
self.tab_widget.setCurrentIndex(newIndex)
#we call the save function
def Save(self):
- filename = QtGui.QFileDialog().getSaveFileName(self, 'Save', '', '*.txt')
+ filename = QFileDialog().getSaveFileName(self, 'Save', '', '*.txt')
widget = self.tab_widget.currentWidget()
widget.save(filename)
@@ -169,37 +176,37 @@ class Window(QtGui.QMainWindow):
def New_Config(self):
widget = Conf_Tab(self)
self.tab_widget.addTab(widget, 'New configfile')
- QtCore.QObject.connect(widget, QtCore.SIGNAL("command"), self.Add_To_Liste)
+ widget.command.connect(self.Add_To_Liste)
#----------------------------------------------------------------------------------------------------
#-----------------------------------------CREATE TABLE-----------------------------------------------
-class Table(QtGui.QWidget):
+class Table(QWidget):
def __init__(self, label, parent=None):
super(Table, self).__init__()
# create a QTableWidget
- self.table = QtGui.QTableWidget(1, 2, self)
+ self.table = QTableWidget(1, 2, self)
self.table.setHorizontalHeaderLabels(['Parameter', 'Value', 'Comment'])
self.table.horizontalHeader().setStretchLastSection(True)
self.table.verticalHeader().setVisible(False)
- self.table.setTextElideMode(QtCore.Qt.ElideLeft)
+ self.table.setTextElideMode(Qt.ElideLeft)
#create combobox
- self.combobox = QtGui.QComboBox()
+ self.combobox = QComboBox()
#add items
- self.cell = QtGui.QTableWidgetItem(QtCore.QString("type"))
+ self.cell = QTableWidgetItem("type")
self.table.setItem(0, 0, self.cell)
self.table.setCellWidget(0, 1, self.combobox)
#we create pushbuttons and we call the method when we clic on
- self.btn_add_row = QtGui.QPushButton('+', self)
- self.connect(self.btn_add_row, QtCore.SIGNAL('clicked()'), self.add_row)
- self.buttonRemove = QtGui.QPushButton('-', self)
- self.connect(self.buttonRemove, QtCore.SIGNAL("clicked()"), self.remove)
+ self.btn_add_row = QPushButton('+', self)
+ self.btn_add_row.clicked.connect(self.add_row)
+ self.buttonRemove = QPushButton('-', self)
+ self.buttonRemove.clicked.connect(self.remove)
#the dispositon of the table and the butttons
- vbox = QtGui.QVBoxLayout()
- hbox = QtGui.QHBoxLayout()
+ vbox = QVBoxLayout()
+ hbox = QHBoxLayout()
hbox.addWidget(self.btn_add_row)
hbox.addWidget(self.buttonRemove)
@@ -227,7 +234,7 @@ class Table(QtGui.QWidget):
if index == 0:
yield key, str(self.table.cellWidget(index, 1).currentText()), comment
elif self.table.item(index, 1):
- if len(str(self.table.item(index, 1).text())) != 0 and self.table.item(index, 0).textColor() == QtGui.QColor('black'):
+ if len(str(self.table.item(index, 1).text())) != 0 and self.table.item(index, 0).textColor() == QColor('black'):
yield key, str(self.table.item(index, 1).text()), comment
#Here we put all values in tables
@@ -237,18 +244,18 @@ class Table(QtGui.QWidget):
box = self.table.cellWidget(0, 1)
value = cfg[item].split(':')
if len(value) > 1:
- box.setCurrentIndex(box.findText(value[1], QtCore.Qt.MatchFixedString))
+ box.setCurrentIndex(box.findText(value[1], Qt.MatchFixedString))
else:
- box.setCurrentIndex(box.findText(cfg[item], QtCore.Qt.MatchFixedString))
+ box.setCurrentIndex(box.findText(cfg[item], Qt.MatchFixedString))
elif item not in self.get_keys():
self.add_row()
row = self.table.rowCount()
for col in range(self.table.columnCount()):
if col == 0:
- newitem = QtGui.QTableWidgetItem(item)
+ newitem = QTableWidgetItem(item)
self.table.setItem(row - 1, col, newitem)
if col == 1:
- newitem2 = QtGui.QTableWidgetItem(cfg[item])
+ newitem2 = QTableWidgetItem(cfg[item])
self.table.setItem(row - 1, col, newitem2)
else:
index = self.get_keys().index(item)
@@ -263,12 +270,12 @@ class Table(QtGui.QWidget):
for index, key in enumerate(self.get_keys()):
if str(key) in names:
- self.table.item(index, 0).setTextColor(QtGui.QColor('black'))
+ self.table.item(index, 0).setTextColor(QColor('black'))
self.table.item(index, 0).setToolTip(options[names.index(key)][1])
elif str(key) == 'type':
- self.table.item(index, 0).setTextColor(QtGui.QColor('black'))
+ self.table.item(index, 0).setTextColor(QColor('black'))
else:
- self.table.item(index, 0).setTextColor(QtGui.QColor('gray'))
+ self.table.item(index, 0).setTextColor(QColor('gray'))
def add_to_combo(self, items):
self.combobox.clear()
@@ -278,32 +285,31 @@ class Table(QtGui.QWidget):
#-----------------------------------------CREATE CONFIG----------------------------------------------
-class Conf_Tab(QtGui.QWidget):
+class Conf_Tab(QWidget):
def __init__(self, parent=None):
-
- super(Conf_Tab, self).__init__()
+ super(Conf_Tab, self).__init__(parent)
#we create 3 tables
- self.Dis = Table(QtGui.QLabel('<strong>Dispatcher :</strong>'))
- self.Inp = Table(QtGui.QLabel('<strong>Input :</strong>'))
- self.Pro = Table(QtGui.QLabel('<strong>Projection :<strong>'))
- self.select = QtGui.QComboBox()
+ self.Dis = Table(QLabel('<strong>Dispatcher :</strong>'))
+ self.Inp = Table(QLabel('<strong>Input :</strong>'))
+ self.Pro = Table(QLabel('<strong>Projection :<strong>'))
+ self.select = QComboBox()
backends = list(backend.lower() for backend in binoculars.util.get_backends())
#we add the list of different backends on the select combobox
- self.select.addItems(QtCore.QStringList(backends))
- self.add = QtGui.QPushButton('add')
- self.connect(self.add, QtCore.SIGNAL("clicked()"), self.AddCommand)
- self.scan = QtGui.QLineEdit()
+ self.select.addItems(backends)
+ self.add = QPushButton('add')
+ self.add.clicked.connect(self.AddCommand)
+ self.scan = QLineEdit()
self.scan.setToolTip('scan selection example: 820 824')
- vbox = QtGui.QVBoxLayout()
- hbox = QtGui.QHBoxLayout()
- splitter = QtGui.QSplitter(QtCore.Qt.Horizontal)
+ vbox = QVBoxLayout()
+ hbox = QHBoxLayout()
+ splitter = QSplitter(Qt.Horizontal)
splitter.addWidget(self.Dis)
splitter.addWidget(self.Inp)
splitter.addWidget(self.Pro)
hbox.addWidget(splitter)
- commandbox = QtGui.QHBoxLayout()
+ commandbox = QHBoxLayout()
commandbox.addWidget(self.add)
commandbox.addWidget(self.scan)
@@ -312,7 +318,7 @@ class Conf_Tab(QtGui.QWidget):
vbox.addLayout(commandbox)
#the dispositon of all elements of the gui
- #Layout = QtGui.QGridLayout()
+ #Layout = QGridLayout()
#Layout.addWidget(label1,1,1,1,2)
#Layout.addWidget(label2,1,0,1,2)
#Layout.addWidget(label3,1,2,1,2)
@@ -325,15 +331,15 @@ class Conf_Tab(QtGui.QWidget):
self.setLayout(vbox)
#Here we call all methods for selected an ellement on differents combobox
- self.Dis.add_to_combo(QtCore.QStringList(binoculars.util.get_dispatchers()))
+ self.Dis.add_to_combo(binoculars.util.get_dispatchers())
self.select.activated['QString'].connect(self.DataCombo)
self.Inp.combobox.activated.connect(self.DataTableInp)
self.Pro.combobox.activated.connect(self.DataTableInpPro)
self.Dis.combobox.activated.connect(self.DataTableInpDis)
def DataCombo(self, text):
- self.Inp.add_to_combo(QtCore.QStringList(binoculars.util.get_inputs(str(text))))
- self.Pro.add_to_combo(QtCore.QStringList(binoculars.util.get_projections(str(text))))
+ self.Inp.add_to_combo(binoculars.util.get_inputs(str(text)))
+ self.Pro.add_to_combo(binoculars.util.get_projections(str(text)))
self.DataTableInp()
self.DataTableInpPro()
self.DataTableInpDis()
@@ -349,7 +355,6 @@ class Conf_Tab(QtGui.QWidget):
self.Pro.addDataConf(proj)
def DataTableInpDis(self):
- backend = str(self.select.currentText())
disp = binoculars.util.get_dispatcher_configkeys(str(self.Dis.combobox.currentText()))
self.Dis.addDataConf(disp)
@@ -401,7 +406,7 @@ class Conf_Tab(QtGui.QWidget):
cfg = binoculars.util.ConfigFile.fromtxtfile(str(filename))
input_type = cfg.input['type']
backend, value = input_type.strip(' ').split(':')
- self.select.setCurrentIndex(self.select.findText(backend, QtCore.Qt.MatchFixedString))
+ self.select.setCurrentIndex(self.select.findText(backend, Qt.MatchFixedString))
self.DataCombo(backend)
self.Dis.addData(cfg.dispatcher)
self.Inp.addData(cfg.input)
@@ -412,10 +417,10 @@ class Conf_Tab(QtGui.QWidget):
scan = [str(self.scan.text())]
cfg = self.get_configobj()
commandconfig = (scan, cfg)
- self.emit(QtCore.SIGNAL('command'), commandconfig)
+ self.command.emit(commandconfig)
if __name__ == '__main__':
- app = QtGui.QApplication(sys.argv)
+ app = QApplication(sys.argv)
main = Window()
main.show()