Example #1
0
    def get_item_from_document_test(self):
        controller = DocumentListController()

        document = Document()
        controller.add(document)

        item = controller.get_item_from_document(document)
        self.assertEquals(document, controller.association[item])
 def add_dict_test(self):
     controller = DocumentListController()
     document = Document()
     
     controller.add(document)
     
     self.assertEquals(document, controller.association.values()[0])
     self.assertTrue(type(controller.association.keys()[0]) == QtGui.QStandardItem)
 def remove_item_dict_test(self):
     controller = DocumentListController()
     
     document = Document()
     controller.add(document)
     controller.remove(document)
     
     self.assertEquals(0, len(controller.association))
 def get_item_from_document_test(self):
     controller = DocumentListController()
     
     document = Document()
     controller.add(document)
     
     item = controller.get_item_from_document(document)
     self.assertEquals(document, controller.association[item])
Example #5
0
    def add_dict_test(self):
        controller = DocumentListController()
        document = Document()

        controller.add(document)

        self.assertEquals(document, controller.association.values()[0])
        self.assertTrue(
            type(controller.association.keys()[0]) == QtGui.QStandardItem)
Example #6
0
    def add_item_name_test(self):
        controller = DocumentListController()
        document = Document()
        document.path = "/path/to/test.tf"

        controller.add(document)
        item = controller.association.keys()[0]

        self.assertEquals("test.tf", item.text())
Example #7
0
    def remove_item_return_test(self):
        controller = DocumentListController()

        document = Document()
        controller.add(document)

        document_item = controller.association.items()[0][0]
        removed_item = controller.remove(document)

        self.assertEquals(document_item, removed_item)
 def remove_item_return_test(self):
     controller = DocumentListController()
     
     document = Document()
     controller.add(document)
     
     document_item = controller.association.items()[0][0]
     removed_item = controller.remove(document)
     
     self.assertEquals(document_item, removed_item)
 def add_item_name2_test(self):
     controller = DocumentListController()
     
     document = Document()
     document.path = "/path/to/othertest.tf"
     
     controller.add(document)
     item = controller.association.keys()[0]
     
     self.assertEquals("othertest.tf", item.text())
Example #10
0
 def change_filename_test(self):
     controller = DocumentListController()
     
     document = Document()
     document.path = "/path/to/othertest.tf"
     
     controller.add(document)
     item = controller.association.keys()[0]
     controller.change_filename(document, "/new/file/name.tf")
     
     self.assertEquals("name.tf", item.text())
Example #11
0
 def __init__(self, parent):
     super(DocumentList, self).__init__(parent)
     self.setFrameShape(QtGui.QFrame.NoFrame)
     self.setFrameShadow(QtGui.QFrame.Plain)
     self.setHeaderHidden(True)
     self.setIndentation(0)
     self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
     self.setFocusPolicy(QtCore.Qt.NoFocus)
     self.setItemDelegate(LineStyleDelegate())
     
     self.controller = DocumentListController()
     self.model = QtGui.QStandardItemModel()
     self.setModel(self.model)
     
     QtCore.QObject.connect(self.selectionModel(), QtCore.SIGNAL("selectionChanged(QItemSelection, QItemSelection)"), self.select)
     
     QtCore.QObject.connect(self, QtCore.SIGNAL("clicked(QModelIndex)"), self.clicked)
Example #12
0
    def remove_item_dict2_test(self):
        controller = DocumentListController()

        document = Document()
        document2 = Document()
        controller.add(document)
        controller.add(document2)
        controller.remove(document)

        self.assertEquals(1, len(controller.association))
        self.assertTrue(document2 in controller.association.values())
        self.assertFalse(document in controller.association.values())
Example #13
0
    def remove_item_dict_test(self):
        controller = DocumentListController()

        document = Document()
        controller.add(document)
        controller.remove(document)

        self.assertEquals(0, len(controller.association))
Example #14
0
 def remove_item_dict2_test(self):
     controller = DocumentListController()
     
     document = Document()
     document2 = Document()
     controller.add(document)
     controller.add(document2)
     controller.remove(document)
     
     self.assertEquals(1, len(controller.association))
     self.assertTrue(document2 in controller.association.values())
     self.assertFalse(document in controller.association.values())
Example #15
0
    def change_filename_test(self):
        controller = DocumentListController()

        document = Document()
        document.path = "/path/to/othertest.tf"

        controller.add(document)
        item = controller.association.keys()[0]
        controller.change_filename(document, "/new/file/name.tf")

        self.assertEquals("name.tf", item.text())
Example #16
0
class DocumentList(QtGui.QTreeView):
    def __init__(self, parent):
        super(DocumentList, self).__init__(parent)
        self.setFrameShape(QtGui.QFrame.NoFrame)
        self.setFrameShadow(QtGui.QFrame.Plain)
        self.setHeaderHidden(True)
        self.setIndentation(0)
        self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.setFocusPolicy(QtCore.Qt.NoFocus)
        self.setItemDelegate(LineStyleDelegate())
        
        self.controller = DocumentListController()
        self.model = QtGui.QStandardItemModel()
        self.setModel(self.model)
        
        QtCore.QObject.connect(self.selectionModel(), QtCore.SIGNAL("selectionChanged(QItemSelection, QItemSelection)"), self.select)
        
        QtCore.QObject.connect(self, QtCore.SIGNAL("clicked(QModelIndex)"), self.clicked)
    
    def add(self, editor):
        document = editor.controller.document
        item = self.controller.add(document)
        item.setEditable(False)
        
        icon_item = QtGui.QStandardItem()
        icon_item.setEditable(False)
        icon = QtGui.QIcon("ui/close.png")
        icon_item.setData(icon, QtCore.Qt.DecorationRole)
        icon_item.setIcon(icon)
        
        row_count = self.model.rowCount()
        self.model.setItem(row_count, 0, item)
        self.model.setItem(row_count, 1, icon_item)
        
        self.select_document(document)

    def remove(self, document):
        item = self.controller.remove(document)
        index = self.model.indexFromItem(item)
        self.model.removeRow(index.row())
        
    def select_document(self, document):
        item = self.controller.get_item_from_document(document)
        index = self.model.indexFromItem(item)
        self.setCurrentIndex(index)
        
    def update(self, document):
        self.controller.change_filename(document, str(document.path))

    ### Callbacks ###
    
    def select(self, selected, deselected):
        if len(selected.indexes()) == 0:
            return
            
        row_index = selected.indexes()[0].row()
        item = self.model.item(row_index)
        document = self.controller.association[item]
        
        self.emit(QtCore.SIGNAL("selection_changed"), document)
        
    def clicked(self, index):
        item = self.model.itemFromIndex(index)
        row = index.row()
        first_col_item = self.model.item(row, 0)
        
        #detecting de click position to get only the icon.
        #the close icon column minimum possible size is bigger
        #than the close icon, so we need this workaround to get
        #the click only in the icon.
        cursor_pos = self.mapFromGlobal(QtGui.QCursor.pos())
        
        icon_size = 15
        icon_x = self.visualRect(index).x() + self.columnWidth(1) - icon_size
        if item.column() == 1:
            cell_rect = self.visualRect(index)
            if cursor_pos.x() >= icon_x and \
               cursor_pos.x() < icon_x + icon_size:
               document = self.controller.association[first_col_item] 
               self.emit(QtCore.SIGNAL("close"), document)
               self.remove(document)
        
        
    def resizeEvent(self, event):
        close_icon_width = 27
        self.setColumnWidth(0, self.width() - close_icon_width)
        self.setColumnWidth(1, close_icon_width)