# Copyright (c) 2009 - 2016, UChicago Argonne, LLC.
# See LICENSE file for details.
'''
QtGui widget to edit one Reviewer instance
'''
import os, sys
from PyQt4 import QtGui
import history
import resources
import signals
import topic_slider
import topics
UI_FILE = 'reviewer_details.ui'
[docs]class AGUP_ReviewerDetails(QtGui.QWidget):
'''
QtGui widget to edit one Reviewer instance
'''
def __init__(self, parent=None, settings=None):
'''
:param parent: owner (QtGui object)
'''
self.parent = parent
self.settings = settings
QtGui.QWidget.__init__(self, parent)
resources.loadUi(UI_FILE, self)
self.restoreSplitterDetails()
self.modified = False
self.topic_list = []
self.topic_widgets = {}
self.custom_signals = signals.CustomSignals()
[docs] def onTopicValueChanged(self, topic):
''' '''
value = self.topic_widgets[topic].getValue()
history.addLog("topic (" + topic + ") value changed: " + str(value))
self.modified = True
sort_name = str(self.getSortName())
self.custom_signals.topicValueChanged.emit(sort_name, str(topic), value)
[docs] def addTopic(self, topic, value):
''' '''
if topic not in self.topic_list:
self.topic_list.append(topic)
row = self.topic_list.index(topic)
topicslider = topic_slider.AGUP_TopicSlider(self.topic_layout, row, topic, value)
self.topic_widgets[topic] = topicslider
topicslider.slider.valueChanged.connect(lambda: self.onTopicValueChanged(topic))
[docs] def addTopics(self, topic_list):
'''
'''
for topic in topic_list:
self.addTopic(topic, topics.DEFAULT_TOPIC_VALUE)
[docs] def setTopic(self, key, value):
''' '''
if key not in self.topic_list:
raise KeyError('unknown Topic: ' + key)
topics.checkTopicValueRange(value)
self.topic_widgets[key].setValue(value)
self.topic_widgets[key].onValueChange(value) # sets the slider
self.modified = True
[docs] def getFullName(self):
''' '''
return str(self.full_name.text())
[docs] def getSortName(self):
''' '''
return str(self.sort_name.text())
[docs] def getPhone(self):
''' '''
return str(self.phone.text())
[docs] def getEmail(self):
''' '''
return str(self.email.text())
[docs] def getJoined(self):
''' '''
return str(self.joined.text())
[docs] def getUrl(self):
''' '''
return str(self.url.text())
[docs] def getNotes(self):
''' '''
return str(self.notes.toPlainText())
[docs] def setFullName(self, value):
''' '''
self.full_name.setText(value)
self.modified = True
[docs] def setSortName(self, value):
''' '''
# sort_name is used as a key in many places
# this is a read-only field, cannot modify in the GUI
# that would break all sorts of code
self.sort_name.setText(value)
self.modified = True
[docs] def setPhone(self, value):
''' '''
self.phone.setText(value)
self.modified = True
[docs] def setEmail(self, value):
''' '''
self.email.setText(value)
self.modified = True
[docs] def setJoined(self, value):
''' '''
self.joined.setText(value)
self.modified = True
[docs] def setUrl(self, value):
''' '''
self.url.setText(value or '')
self.modified = True
[docs] def setNotes(self, value):
''' '''
self.notes.setPlainText(value)
self.modified = True
[docs] def saveSplitterDetails(self):
''' '''
if self.settings is not None:
self.settings.saveSplitterDetails(self)
[docs] def restoreSplitterDetails(self):
''' '''
if self.settings is not None:
self.settings.restoreSplitterDetails(self)
def main():
import sys
app = QtGui.QApplication(sys.argv)
mw = AGUP_ReviewerDetails()
mw.setFullName('Joe Reviewer')
mw.setSortName('Reviewer')
mw.setPhone('555-555-5555')
mw.setEmail('joe@user.com')
mw.setJoined('2010-2')
mw.setUrl('http://user.com')
mw.setNotes('''That URL is fake.\nDo not trust it!''')
# setup some examples for testing
topic_object = topics.Topics()
for k, v in dict(SAXS=0.5, XPCS=0.1, GISAXS=0.9).items():
topic_object.add(k, v)
w = {}
row = 0
for key in topic_object:
value = topic_object.get(key)
w[key] = topic_slider.AGUP_TopicSlider(mw.topic_layout, row, key, value)
row += 1
mw.topic_layout.setColumnStretch(1,3)
print 'getFullName', mw.getFullName()
print 'getSortName', mw.getSortName()
print 'getPhone', mw.getPhone()
print 'getEmail', mw.getEmail()
print 'getJoined', mw.getJoined()
print 'getUrl', mw.getUrl()
print 'getNotes', mw.getNotes()
mw.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()