Source code for QWUtils

#------------------------------
"""
@version $Id: QWUtils.py 13133 2017-02-08 01:05:23Z dubrovin@SLAC.STANFORD.EDU $

@author Mikhail S. Dubrovin
"""
#------------------------------

#import os
#import sys
from PyQt4 import QtGui, QtCore

#------------------------------

[docs]def selectFromListInPopupMenu(list): """Shows the list as a pop-up menu and returns the selected item as a string or None""" if list is None : return None popupMenu = QtGui.QMenu() for item in list : popupMenu.addAction(item) item_selected = popupMenu.exec_(QtGui.QCursor.pos()) if item_selected is None : return None else : return str(item_selected.text()) # QString -> str
#------------------------------
[docs]def changeCheckBoxListInPopupMenu(list, win_title='Set check boxes'): """Shows the list of check-boxes as a dialog pop-up menu and returns the (un)changed list""" if list is None : return 0 from CalibManager.GUIPopupCheckList import GUIPopupCheckList popupMenu = GUIPopupCheckList(None, list, win_title) #popupMenu.move(QtCore.QPoint(50,50)) popupMenu.move(QtGui.QCursor.pos()) response = popupMenu.exec_() if response == QtGui.QDialog.Accepted : #logger.debug('New checkbox list is accepted', __name__) return 1 elif response == QtGui.QDialog.Rejected : #logger.debug('Will use old checkbox list', __name__) return 0 else : #logger.error('Unknown response...', __name__) return 2
#------------------------------
[docs]def selectRadioButtonInPopupMenu(dict_of_pars, win_title='Select option', do_confirm=False): """Popup GUI to select radio button from the list: dict_of_pars = {'checked':'radio1', 'list':['radio0', 'radio1', 'radio2']} """ from CalibManager.GUIPopupRadioList import GUIPopupRadioList popupMenu = GUIPopupRadioList(None, dict_of_pars, win_title, do_confirm) #popupMenu.move(QtCore.QPoint(50,50)) popupMenu.move(QtGui.QCursor.pos()-QtCore.QPoint(100,100)) return popupMenu.exec_() # QtGui.QDialog.Accepted or QtGui.QDialog.Rejected
#------------------------------ #------------------------------ #------------------------------ def test_all(tname) : app = QtGui.QApplication(sys.argv) if tname == '0': instrs = ['SXR', 'AMO', 'XPP', 'CXI', 'MEC'] resp = selectFromListInPopupMenu(instrs) print 'Selected:', resp elif tname == '1': list_of_cbox = [['VAR1', True], ['VAR2', False], ['VAR3', False], ['VAR4', False], ['VAR5', False]] resp = changeCheckBoxListInPopupMenu(list_of_cbox, win_title='Select vars(s)') for (var,stat) in list_of_cbox : print var, stat print 'resp:', resp elif tname == '2': dict_of_pars = {'checked':'radio1', 'list':['radio0', 'radio1', 'radio2']} resp = selectRadioButtonInPopupMenu(dict_of_pars, win_title='Select vars(s)', do_confirm=True) for (k,v) in dict_of_pars.iteritems() : print k, v print 'resp:', resp else : print 'Sorry, not-implemented test "%s"' % tname #------------------------------ if __name__ == "__main__" : import sys; global sys tname = sys.argv[1] if len(sys.argv) > 1 else '0' print 50*'_', '\nTest %s' % tname test_all(tname) sys.exit('End of test %s' % tname) #------------------------------