CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

python::Vispa::Plugins::EdmBrowser::EventContentView::EventContentView Class Reference

Inherits PyQt4::QtGui::QTableWidget, and Vispa::Views::AbstractView::AbstractView.

List of all members.

Public Member Functions

def __init__
def clear
def itemByObject
def select
def updateContent

Private Member Functions

def _addRow

Private Attributes

 _eventContentsList
 _itemDict
 _rows

Detailed Description

Holds a table to compare event contents.

Definition at line 8 of file EventContentView.py.


Constructor & Destructor Documentation

def python::Vispa::Plugins::EdmBrowser::EventContentView::EventContentView::__init__ (   self,
  parent = None,
  name = None 
)
Constructor 

Definition at line 11 of file EventContentView.py.

00012                                               :
00013         """ Constructor """
00014         logging.debug(self.__class__.__name__ + ": __init__()")
00015         AbstractView.__init__(self)
00016         QTableWidget.__init__(self, parent)
00017     
00018         self._itemDict = {}
00019        
00020         self.setSelectionMode(QTableWidget.SingleSelection)
00021         self.clear() # Sets headers


Member Function Documentation

def python::Vispa::Plugins::EdmBrowser::EventContentView::EventContentView::_addRow (   self,
  names,
  items 
) [private]
Adds a row to the EventContentView.

Definition at line 32 of file EventContentView.py.

00033                                    :
00034         """ Adds a row to the EventContentView.
00035         """
00036         self._rows += 1
00037         i=0
00038         for name in names:
00039             item = LabelItem(name)
00040             self.setItem(self._rows - 1, i, item)
00041             i+=1
00042         for entry, color in items:
00043             item = LabelItem(entry, color)
00044             self.setItem(self._rows - 1, i, item)
00045             if i == 4:
00046                 self._itemDict[str(self._rows)] = item
00047                 item.object = name
00048             i += 1
    
def python::Vispa::Plugins::EdmBrowser::EventContentView::EventContentView::clear (   self)

Definition at line 22 of file EventContentView.py.

00023                    :
00024         self._itemDict = {}
00025         QTableWidget.clear(self)
00026         self.setColumnCount(1)
00027         self.setHorizontalHeaderLabels(['no file selected'])
00028         self.horizontalHeaderItem(0).setTextAlignment(Qt.AlignLeft)
00029         self.verticalHeader().hide()
00030         self._rows = 0
00031         self.setRowCount(self._rows)

def python::Vispa::Plugins::EdmBrowser::EventContentView::EventContentView::itemByObject (   self,
  object 
)
Return an item in the TableView with a certain object.

Definition at line 117 of file EventContentView.py.

00118                                   :
00119         """ Return an item in the TableView with a certain object.
00120         """
00121         items = []
00122         for positionName, item in self._itemDict.items():
00123             if item.object == self.dataAccessor().label(object):
00124                 items += [(positionName, item)]
00125         if len(items) > 0:
00126             return sorted(items)[0][1]
00127         else:
00128             return None

def python::Vispa::Plugins::EdmBrowser::EventContentView::EventContentView::select (   self,
  item 
)
Mark an item in the TableView as selected.

Definition at line 111 of file EventContentView.py.

00112                           :
00113         """ Mark an item in the TableView as selected.
00114         """
00115         if item != None:
00116             self.setCurrentItem(item)

def python::Vispa::Plugins::EdmBrowser::EventContentView::EventContentView::updateContent (   self)
Fill the EventContentView using the ContentsDict.

Definition at line 49 of file EventContentView.py.

00050                            :
00051         """ Fill the EventContentView using the ContentsDict.
00052         """
00053         logging.debug('EventContentView: updateContent()')
00054         self._eventContentsList = self.dataAccessor().eventContentsList()
00055         self.clear()
00056         self.setSortingEnabled(False)
00057         names = ["Type","Label","Product","Process"]
00058         allContent = []
00059         for name, content, relative, comment in self._eventContentsList:
00060             names += [name]
00061             for entry in content:
00062                 if not self.dataAccessor().inContent(entry,allContent):
00063                     allContent += [entry]
00064         allContent.sort(lambda x, y: cmp(self.dataAccessor().label(x).lower(), self.dataAccessor().label(y).lower()))
00065         self.setColumnCount(len(names))
00066         self.setHorizontalHeaderLabels(names)
00067         for i in range(len(names)):
00068             self.horizontalHeaderItem(i).setTextAlignment(Qt.AlignLeft)
00069         self.setRowCount(len(allContent))
00070         for entry in allContent:
00071             items = []
00072             column_before=None
00073             for name, content, relative, comment in self._eventContentsList:
00074                 this_column=self.dataAccessor().inContent(entry,content)
00075                 if this_column:
00076                     text="Yes"
00077                 else:
00078                     text="No"
00079                 if "_".join(entry) in comment.keys():
00080                     text+=" ("+comment["_".join(entry)]+")"
00081                 #if relative:
00082                 color=Qt.white
00083                 #else:
00084                 #    color=Qt.gray
00085                 input="Input: " in name
00086                 output="Output: " in name
00087                 if column_before!=None:
00088                     rel=0
00089                     if this_column and not column_before:
00090                         rel=1
00091                     if not this_column and column_before:
00092                         rel=-1
00093                     if input:
00094                         if rel>0:
00095                             color=Qt.red
00096                     elif output:
00097                         if rel>0:
00098                             color=Qt.green
00099                     else:
00100                         if rel<0:
00101                             color=Qt.red
00102                         if rel>0:
00103                             color=Qt.green
00104                 if not input:
00105                     column_before=this_column
00106                 items += [(text, color)]
00107             self._addRow(entry,items)
00108         self.sortItems(1)
00109         self.setSortingEnabled(True)
00110         return True


Member Data Documentation

Definition at line 50 of file EventContentView.py.

Definition at line 11 of file EventContentView.py.

Definition at line 22 of file EventContentView.py.