00001 from ost import gui
00002 from ost import gfx
00003 import os
00004 import ost
00005 from PyQt4 import QtCore, QtGui
00006 from preset import Preset
00007
00008 class PresetEditorListModel(QtCore.QAbstractListModel):
00009 def __init__(self, preset, parent=None, *args):
00010 QtCore.QAbstractListModel.__init__(self, parent, *args)
00011
00012 self.preset_ = preset
00013
00014 def AddItem(self, op, row):
00015 self.insertRow(row, QtCore.QModelIndex(),op)
00016 model_index = self.createIndex(row,0)
00017 end_index = self.createIndex(self.rowCount(),0)
00018 self.emit(QtCore.SIGNAL("dataChanged"),model_index, end_index)
00019 return True
00020
00021 def RemoveItem(self, row):
00022 self.removeRow(row, QtCore.QModelIndex())
00023 model_index = self.createIndex(row,0)
00024 self.emit(QtCore.SIGNAL("dataChanged"),model_index, model_index)
00025 return True
00026
00027 def GetOp(self, model_index):
00028 if model_index.isValid():
00029 return self.preset_.GetOp(model_index.row())
00030
00031 def SetItem(self, model_index, op):
00032 self.preset_.SetOp(model_index.row(), op)
00033
00034 def GetLastRow(self):
00035 return self.rowCount()
00036
00037
00038 def rowCount(self, parent=QtCore.QModelIndex()):
00039 return self.preset_.GetOpCount()
00040
00041 def data(self, index, role):
00042 if index.isValid() and index.row()< self.rowCount():
00043 data = self.preset_.GetOp(index.row())
00044 if role == QtCore.Qt.DisplayRole:
00045 selection=str(data.GetSelection())
00046 if(len(selection)>0):
00047 return QtCore.QVariant(selection)
00048 else:
00049 return QtCore.QVariant("all")
00050 return QtCore.QVariant()
00051
00052 def setData(self, index, value, role):
00053 if index.isValid():
00054 row = index.row()
00055 data = self.preset_.GetOp(row)
00056 if role == QtCore.Qt.EditRole:
00057 return True
00058 elif role == QtCore.Qt.DisplayRole:
00059 data
00060 elif role == QtCore.Qt.DecorationRole:
00061 data
00062 return False
00063
00064 def flags(self, index):
00065 if index.isValid():
00066 flags = QtCore.QAbstractItemModel.flags(self,index)
00067 return flags | QtCore.Qt.ItemIsEditable
00068 return QtCore.Qt.ItemIsEnabled
00069
00070 def insertRow(self, position, index, op):
00071 self.beginInsertRows(index, position, position)
00072 self.preset_.InsertOp(position, op)
00073 self.endInsertRows()
00074 return True
00075
00076 def removeRow(self, position, index):
00077 self.beginRemoveRows(index, position, position)
00078 self.preset_.RemoveOpAt(position)
00079 self.endRemoveRows()
00080 return True
00081