1 # Authors: Amaury Medeiros and Paulo Ouriques
2 # Software License: GPL
4 from PyQt4.QtCore import *
5 from PyQt4.QtGui import *
7 class PCSBackupListUi(QTableView):
9 ''' Class that creates a table, where the backups will be shown '''
11 def __init__(self, backupManager):
12 super(PCSBackupListUi, self).__init__()
14 self.setSelectionBehavior(QAbstractItemView.SelectRows)
15 self.setSelectionMode(QAbstractItemView.ExtendedSelection)
16 self.setAlternatingRowColors(True)
17 self.setShowGrid(False)
18 self.setEditTriggers(QAbstractItemView.NoEditTriggers)
19 self.model = QStandardItemModel()
20 self.setModel(self.model)
22 hHeader = QHeaderView(Qt.Horizontal)
23 hHeader.setObjectName("listHeader")
24 hHeader.setAttribute(Qt.WA_NoSystemBackground)
25 hHeader.setStretchLastSection(True)
26 hHeader.setResizeMode(QHeaderView.ResizeToContents)
27 hHeader.setMinimumSectionSize(100)
29 hHeader.setClickable(False)
31 self.setHorizontalHeader(hHeader)
33 vHeader = QHeaderView(Qt.Vertical)
34 vHeader.setVisible(False)
35 self.setVerticalHeader(vHeader)
36 self._backupManager = backupManager
38 def updateBackupList(self):
40 self.model.setHorizontalHeaderItem(0, QStandardItem("NAME"))
41 self.model.setHorizontalHeaderItem(1, QStandardItem("SIZE"))
42 self.model.setHorizontalHeaderItem(2, QStandardItem("DATE"))
44 backupList = self._backupManager.getBackupList()
45 for backupInfo in backupList:
46 name = backupInfo.getName()
47 date = str(backupInfo.getDate())
48 size = self._formatBackupSize(backupInfo.getSize())
49 backupData = [QStandardItem(name), QStandardItem(size), QStandardItem(date)]
50 self.model.appendRow(backupData)
52 def removeSelectedBackups(self):
53 selectionModel = self.selectionModel()
54 indexList = selectionModel.selectedRows()
55 for index in reversed(sorted(indexList)):
58 data = self.model.itemData(index)
59 backupName = data[0].toString()
60 if self._backupManager.removeBackup((str(backupName).strip())):
61 self.model.removeRow(row)
62 self.updateBackupList()
64 def renameSelectedBackup (self, newName):
65 #!!!!!!! getSelectedBackup
66 backupName = (str(self.getSelectedBackup())).strip()
67 if backupName != None:
68 if self._backupManager.renameBackup(backupName, newName):
69 self.updateBackupList()
74 def getSelectedBackup(self):
75 list = self.getSelectedBackupList()
76 if list and len(list) > 0:
81 def getSelectedBackupList(self):
82 selectionModel = self.selectionModel()
83 indexList = selectionModel.selectedRows()
85 for index in indexList:
88 data = self.model.itemData(index)
89 backupList.append(data[0].toString())
92 def getBackupManager(self):
93 return self._backupManager
95 def _formatBackupSize(self, size):
96 """ Return a string with a more suited size and byte multiple for the
100 String/Float/Int size - size in bytes or string representing it.
104 multiples = ["B", "KB", "MB", "GB"]
106 while size > 1000 and divisions <= 3:
110 return "%.1f %s" % (size, multiples[divisions])