Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
adf9dba
working on implementing multiple gm editors
Apr 14, 2016
1534eff
Working on creating editors for graphics methods. fixed bugs with com…
Apr 15, 2016
4b6f68c
Added import as to variables list. Fixed bug in line editor. Added fl…
Apr 19, 2016
ae342bf
vector graphing now works much better.'
Apr 19, 2016
cebe1ee
vector graphing now works much better.'
Apr 19, 2016
a84b129
fixed bug when reopening boxfill editor
Apr 19, 2016
f2b6e96
multi line editing for isoline
Apr 21, 2016
70e2653
created my own dialog to implement proper validation for saving varia…
Apr 22, 2016
838e4a4
patched level editor to the point of working on isoline. still cant s…
Apr 22, 2016
61d7e91
fixed bug with random changeLine call
Apr 26, 2016
202d930
added multi text editor. fixed insert bug in multi line editor
Apr 27, 2016
da6a6ff
writing new tests for gm editors and reworking old tests
Apr 28, 2016
74b5f35
Initial commit for tests for multi editors for isoline gm
Apr 28, 2016
5158ec8
added projection editor
Apr 29, 2016
0628eef
tests for projection. Split custom vcs elements dialog into its own file
May 2, 2016
2ed93a5
fixed tests and refactored adding 'new' vcs var
May 3, 2016
a846bf8
Adding new gm implemented in side gm list
May 4, 2016
563ebd0
added the edit gm editor for gm list
May 4, 2016
17229d1
fixed stupid segfault and added remove gm and fixed updating gm vars …
May 5, 2016
0e34081
added remove var functionality and import file functionality
May 6, 2016
3af2e13
add, edit, and remove functionality works for template. Fixed small b…
May 6, 2016
626af68
fixed bugs with saving gm from gm dialog and edit_gm_dialog on sideba…
May 9, 2016
2c54f00
fixed level editor seg fault. createGM from dock fixed and tested
May 10, 2016
a4ba92c
fixing lots of bugs. hopefully their actually fixed
May 11, 2016
9a0e9c9
PR update. Added save ticks option
May 19, 2016
2b0fffa
fixed plotter and tests
May 19, 2016
a643900
fixed colormap editor and fixed part of legend editor to incorporate …
May 26, 2016
1d0bb69
fixed rename colormap
Jun 1, 2016
72465af
found stupid gosh darn off by one error in legend editor for missing …
Jun 2, 2016
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
24 changes: 12 additions & 12 deletions cdatgui/bases/background_delegate.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@


class BorderHighlightStyleDelegate(QtGui.QStyledItemDelegate):
def paint(self, painter, option, index):
bg = index.data(QtCore.Qt.BackgroundRole)
painter.fillRect(option.rect, bg)
super(BorderHighlightStyleDelegate, self).paint(painter, option, index)
if option.state & QtGui.QStyle.State_Selected:
painter.save()
color = QtGui.QColor(76, 177 ,255)
pen = QtGui.QPen(color, 2, QtCore.Qt.SolidLine, QtCore.Qt.SquareCap, QtCore.Qt.MiterJoin)
w = pen.width() / 2
painter.setPen(pen)
painter.drawRect(option.rect.adjusted(w, w, -w, -w))
painter.restore()
def paint(self, painter, option, index):
bg = index.data(QtCore.Qt.BackgroundRole)
painter.fillRect(option.rect, bg)
super(BorderHighlightStyleDelegate, self).paint(painter, option, index)
if option.state & QtGui.QStyle.State_Selected:
painter.save()
color = QtGui.QColor(76, 177, 255)
pen = QtGui.QPen(color, 2, QtCore.Qt.SolidLine, QtCore.Qt.SquareCap, QtCore.Qt.MiterJoin)
w = pen.width() / 2
painter.setPen(pen)
painter.drawRect(option.rect.adjusted(w, w, -w, -w))
painter.restore()
10 changes: 6 additions & 4 deletions cdatgui/bases/dynamic_grid_layout.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ def buildGrid(self, rect, force=False):
return

# clearing
self.clearWidget()
self.clearWidgets()

# calculate
full_columns = possible_columns - 1
Expand Down Expand Up @@ -77,8 +77,8 @@ def buildGrid(self, rect, force=False):

self.cur_col_count = possible_columns

def clearWidget(self):
"""clears widgets from the grid layout. Does not delete widgets"""
def clearWidgets(self):
"""Clears widgets from the grid layout. Does not delete widgets"""
for col, row_count in enumerate(self.counts):
if row_count:
for row in range(row_count):
Expand All @@ -93,7 +93,9 @@ def getWidgets(self):
return self.widgets

def removeWidget(self, widget):
"""removes widgets from gridlayout and updates list and counts"""
"""Removes widgets from gridlayout and updates list and counts
Does Not Delete Widget
"""
for i in self.widgets:
if i == widget:

Expand Down
75 changes: 75 additions & 0 deletions cdatgui/bases/input_dialog.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
from PySide import QtCore, QtGui


class AccessibleButtonDialog(QtGui.QWidget):
accepted = QtCore.Signal()
rejected = QtCore.Signal()

def __init__(self):
super(AccessibleButtonDialog, self).__init__()

self.setWindowModality(QtCore.Qt.ApplicationModal)
shortcut = QtGui.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Escape), self)
shortcut.activated.connect(self.cancel)

self.save_button = QtGui.QPushButton('Save')
self.save_button.clicked.connect(self.save)
self.save_button.setEnabled(False)
self.save_button.setDefault(True)
self.cancel_button = QtGui.QPushButton('Cancel')
self.cancel_button.clicked.connect(self.cancel)

save_cancel_layout = QtGui.QHBoxLayout()
save_cancel_layout.addWidget(self.cancel_button)
save_cancel_layout.addWidget(self.save_button)

self.vertical_layout = QtGui.QVBoxLayout()
self.vertical_layout.addLayout(save_cancel_layout)

self.setLayout(self.vertical_layout)

self.setMaximumSize(300, 100)

def cancel(self):
self.close()
self.rejected.emit()

def save(self):
self.close()
self.accepted.emit()


class ValidatingInputDialog(AccessibleButtonDialog):
def __init__(self):
super(ValidatingInputDialog, self).__init__()

self.label = QtGui.QLabel()
self.edit = QtGui.QLineEdit()

self.edit.returnPressed.connect(self.save_button.click)

edit_line_layout = QtGui.QHBoxLayout()
edit_line_layout.addWidget(self.label)
edit_line_layout.addWidget(self.edit)

self.vertical_layout.insertLayout(0, edit_line_layout)

self.edit.setFocus()

def setLabelText(self, text):
self.label.setText(text)

def setValidator(self, validator):
self.edit.setValidator(validator)

try:
validator.invalidInput.connect(lambda: self.save_button.setEnabled(False))
validator.validInput.connect(lambda: self.save_button.setEnabled(True))
except AttributeError:
pass

def textValue(self):
return self.edit.text().strip()

def setTextValue(self, text):
self.edit.setText(text)
5 changes: 3 additions & 2 deletions cdatgui/bases/list_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def replace(self, index, value):
self.dataChanged.emit(ind, ind)

def remove(self, ind):
self.removeRows(ind, 1)
return self.removeRows(ind, 1)

def clear(self):
self.removeRows(0, len(self.values))
Expand All @@ -40,9 +40,10 @@ def insertRows(self, row, count, values, parent=QtCore.QModelIndex()):
self.endInsertRows()

def removeRows(self, row, count, parent=QtCore.QModelIndex()):
self.beginRemoveRows(parent, row, row + count)
self.beginRemoveRows(parent, row, row + count - 1)
self.values = self.values[:row] + self.values[row + count:]
self.endRemoveRows()
return True

def rowCount(self, modelIndex=None):
return len(self.values)
Expand Down
30 changes: 17 additions & 13 deletions cdatgui/bases/value_slider.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,23 @@


class ValueSlider(QtGui.QSlider):
realValueChanged = QtCore.Signal(object)
def __init__(self, values, parent=None):
super(ValueSlider, self).__init__(parent=parent)
self.values = values
self.setMinimum(0)
self.setMaximum(len(values) - 1)
self.valueChanged.connect(self.emitReal)
realValueChanged = QtCore.Signal(object)

def emitReal(self, val):
self.realValueChanged.emit(self.values[val])
def __init__(self, values, parent=None):
super(ValueSlider, self).__init__(parent=parent)
self.values = values
self.setMinimum(0)
self.setMaximum(len(values) - 1)
self.valueChanged.connect(self.emitReal)

def realValue(self):
return self.values[self.value()]
def emitReal(self, val):
self.realValueChanged.emit(self.values[val])

def setRealValue(self, realValue):
self.setValue(self.values.index(realValue))
def realValue(self):
return self.values[self.value()]

def setRealValue(self, realValue):
if isinstance(realValue, list):
realValue = realValue[0]
val = min(range(len(self.values)), key=lambda i: abs(self.values[i]-realValue))
self.setValue(val)
36 changes: 36 additions & 0 deletions cdatgui/bases/vcs_elements_dialog.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from cdatgui.bases.input_dialog import ValidatingInputDialog
from PySide import QtCore, QtGui
import vcs


class VCSElementsDialog(ValidatingInputDialog):
def __init__(self, element):
super(VCSElementsDialog, self).__init__()
self.element = element
self.setValidator(VCSElementsValidator())

def save(self):
if self.textValue() in vcs.elements[self.element] or self.textValue() + '_miniticks' in vcs.elements[self.element]:
check = QtGui.QMessageBox.question(self, "Overwrite {0}?".format(self.element),
"{0} '{1}' already exists. Overwrite?".format(self.element.capitalize(), self.textValue()),
buttons=QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel)
if check == QtGui.QDialogButtonBox.FirstButton:
self.close()
self.accepted.emit()
else:
self.close()
self.accepted.emit()


class VCSElementsValidator(QtGui.QValidator):
invalidInput = QtCore.Signal()
validInput = QtCore.Signal()

def validate(self, inp, pos):
inp = inp.strip()
if not inp or inp == 'default':
self.invalidInput.emit()
return QtGui.QValidator.Intermediate

self.validInput.emit()
return QtGui.QValidator.Acceptable
60 changes: 41 additions & 19 deletions cdatgui/bases/window_widget.py
Original file line number Diff line number Diff line change
@@ -1,34 +1,41 @@
from PySide import QtCore, QtGui


class BaseSaveWindowWidget(QtGui.QWidget):
savePressed = QtCore.Signal(str)
accepted = QtCore.Signal(str)
rejected = QtCore.Signal()

def __init__(self):
def __init__(self, parent=None):
super(BaseSaveWindowWidget, self).__init__()

self.auto_close = True
self.object = None
self.preview = None
self.dialog = QtGui.QInputDialog()
self.dialog.setModal(QtCore.Qt.ApplicationModal)
self.setWindowModality(QtCore.Qt.ApplicationModal)
shortcut = QtGui.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Escape), self)
shortcut.activated.connect(self.close)

# Layout to add new elements
self.vertical_layout = QtGui.QVBoxLayout()

# Save and Cancel Buttons
cancel_button = QtGui.QPushButton()
cancel_button.setText("Cancel")
cancel_button.clicked.connect(lambda: self.close())
cancel_button.clicked.connect(self.reject)

saveas_button = QtGui.QPushButton()
saveas_button.setText("Save As")
saveas_button.clicked.connect(self.saveAs)

save_button = QtGui.QPushButton()
save_button.setText("Save")
save_button.clicked.connect(self.save)
self.save_button = QtGui.QPushButton()
self.save_button.setText("Save")
self.save_button.clicked.connect(self.accept)

save_cancel_row = QtGui.QHBoxLayout()
save_cancel_row.addWidget(cancel_button)
save_cancel_row.addWidget(saveas_button)
save_cancel_row.addWidget(save_button)
save_cancel_row.addWidget(self.save_button)
save_cancel_row.insertStretch(1, 1)

# Set up vertical_layout
Expand All @@ -38,23 +45,22 @@ def __init__(self):
def setPreview(self, preview):
if self.preview:
self.vertical_layout.removeWidget(self.preview)
print "P: ", self.preview
self.preview.deleteLater()

self.preview = preview
self.vertical_layout.insertWidget(0, self.preview)

def saveAs(self):

self.win = QtGui.QInputDialog()
self.win = self.dialog

self.win.setLabelText("Enter New Name:")
self.win.accepted.connect(self.save)
self.win.accepted.connect(self.accept)

self.win.show()
self.win.raise_()

def save(self):
def accept(self):

try:
name = self.win.textValue()
Expand All @@ -63,30 +69,42 @@ def save(self):
except:
name = self.object.name

self.savePressed.emit(name)
self.accepted.emit(name)
if self.auto_close:
self.close()

def setSaveDialog(self, dialog):
self.dialog = dialog

def reject(self):
self.rejected.emit()
self.close()


class BaseOkWindowWidget(QtGui.QWidget):
okPressed = QtCore.Signal()
accepted = QtCore.Signal()
rejected = QtCore.Signal()

def __init__(self):
def __init__(self, parent=None):
super(BaseOkWindowWidget, self).__init__()

self.object = None
self.preview = None
self.setWindowModality(QtCore.Qt.ApplicationModal)
shortcut = QtGui.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Escape), self)
shortcut.activated.connect(self.close)

# Layout to add new elements
self.vertical_layout = QtGui.QVBoxLayout()

# Save and Cancel Buttons
cancel_button = QtGui.QPushButton()
cancel_button.setText("Cancel")
cancel_button.clicked.connect(lambda: self.close())
cancel_button.clicked.connect(self.reject)

ok_button = QtGui.QPushButton()
ok_button.setText("OK")
ok_button.clicked.connect(self.okClicked)
ok_button.clicked.connect(self.accept)

ok_cancel_row = QtGui.QHBoxLayout()
ok_cancel_row.addWidget(cancel_button)
Expand All @@ -105,6 +123,10 @@ def setPreview(self, preview):
self.preview = preview
self.vertical_layout.insertWidget(0, self.preview)

def okClicked(self):
self.okPressed.emit()
def accept(self):
self.accepted.emit()
self.close()

def reject(self):
self.rejected.emit()
self.close()
Loading