ipsselector.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. # $Id$
  2. from PyQt4 import QtCore, QtGui
  3. from qt_utils import connect
  4. class IPSDialog(object):
  5. def __init__(self):
  6. self.__ipsListWidget = None
  7. self.__ipsAdd = None
  8. self.__ipsRemove = None
  9. self.__ipsDialog = dialog = QtGui.QDialog(
  10. None # TODO: find a way to get the real parent
  11. )
  12. from ui_ipsdialog import Ui_IPSDialog
  13. ui = Ui_IPSDialog()
  14. ui.setupUi(dialog)
  15. self.__ipsListWidget = ui.IPSList
  16. self.__ipsadd = ui.addButton
  17. self.__ipsremove = ui.removeButton
  18. connect(self.__ipsadd, 'clicked()', self.__add)
  19. connect(self.__ipsremove, 'clicked()', self.__remove)
  20. def exec_(self, parent = None):
  21. dialog = self.__ipsDialog
  22. #dialog.setParent(parent) # why does this hang up the app?
  23. return dialog.exec_()
  24. def __add(self):
  25. self.__ipsListWidget.addItems(QtGui.QFileDialog.getOpenFileNames(
  26. self.__ipsListWidget, 'Select one ore more IPS patch files',
  27. QtCore.QDir.homePath(),
  28. 'IPS patch files (*.ips);;Compressed IPS patch files ' +
  29. '*.zip *.gz);;All Files (*)', None #, 0
  30. ))
  31. def __remove(self):
  32. # get the indices
  33. rows = [ x.row() for x in self.__ipsListWidget.selectedIndexes() ]
  34. # sort them, as they are in selection order
  35. rows.sort()
  36. # remove them in reverse order, to make sure they remain valid
  37. for row in reversed(rows):
  38. self.__ipsListWidget.takeItem(row)
  39. def fill(self, patchList):
  40. self.__ipsListWidget.clear()
  41. self.__ipsListWidget.addItems(patchList)
  42. def getIPSList(self):
  43. return [
  44. str(self.__ipsListWidget.item(i).text())
  45. for i in range(self.__ipsListWidget.count())
  46. ]
  47. ipsDialog = IPSDialog()