diff options
author | daviddavid <geiger.david68210@gmail.com> | 2015-03-01 09:32:43 +0100 |
---|---|---|
committer | Papoteur <papoteur@mageialinux-online.org> | 2015-03-25 15:55:37 +0100 |
commit | bd67303adf12e5be8f2caf1b18c842b5754272f6 (patch) | |
tree | c708d91f1d5ead61fe281bba0f6eb6f78e5b3930 /mageiaSync/mageiasync.py | |
parent | 67094f1b283010064e80fd22586b228c71d0b787 (diff) | |
download | MageiaSync-bd67303adf12e5be8f2caf1b18c842b5754272f6.tar MageiaSync-bd67303adf12e5be8f2caf1b18c842b5754272f6.tar.gz MageiaSync-bd67303adf12e5be8f2caf1b18c842b5754272f6.tar.bz2 MageiaSync-bd67303adf12e5be8f2caf1b18c842b5754272f6.tar.xz MageiaSync-bd67303adf12e5be8f2caf1b18c842b5754272f6.zip |
New release 0.1.4
Sur la branche master
Modifications qui seront validées :
modifié : CHANGELOG
Replace remote list with table view
Diffstat (limited to 'mageiaSync/mageiasync.py')
-rw-r--r-- | mageiaSync/mageiasync.py | 122 |
1 files changed, 77 insertions, 45 deletions
diff --git a/mageiaSync/mageiasync.py b/mageiaSync/mageiasync.py index 9b9c6d4..8f77458 100644 --- a/mageiaSync/mageiasync.py +++ b/mageiaSync/mageiasync.py @@ -92,15 +92,23 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): self.rsyncThread.checkSignal.connect(self.checks) self.checkThreads=[] # A list of thread for each iso - # Model for list view in a table - self.model = QStandardItemModel(0, 6, self) - headers=[self.tr("Directory"),self.tr("Name"),self.tr("Size"),self.tr("Date"),"SHA1","MD5"] + # Model for local list view in a table + self.model = QStandardItemModel(0, 5, self) + headers=[self.tr("Directory"),self.tr("Name"),self.tr("Size"),"SHA1","MD5"] i=0 for label in headers: self.model.setHeaderData(i, QtCore.Qt.Horizontal,label ) i+=1 -# settings for the list view +# Model for remote list view in a table + self.modelRemote = QStandardItemModel(0, 4, self) + headers=[self.tr("Directory"),self.tr("Name"),self.tr("Size"),self.tr("Date")] + i=0 + for label in headers: + self.modelRemote.setHeaderData(i, QtCore.Qt.Horizontal,label ) + i+=1 + +# settings for the local list view self.localList.setModel(self.model) self.localList.setColumnWidth(0,220) self.localList.setColumnWidth(1,220) @@ -109,31 +117,53 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): # settings for local iso names management self.localListNames=[] - def multiSelect(self): - # allows to select multiple lines in remote ISOs list - self.listIsos.setSelectionMode(2) # MultiSelection +# settings for the remote list view + self.listIsos.setModel(self.modelRemote) + self.listIsos.setColumnWidth(0,160) + self.listIsos.setColumnWidth(1,350) + self.listIsos.setColumnWidth(2,120) + self.listIsos.horizontalHeader().setStretchLastSection(True) + self.listIsos.setSelectionMode(2) # MultiSelection + self.listIsosNames=[] - def add(self, iso): + def add(self, path,iso,isoSize,date): # Add an remote ISO in list - self.listIsos.addItem(iso) + itemPath=QStandardItem(path) + itemPath.setData(path,3) # Add tooltip + itemIso=QStandardItem(iso) + itemIso.setData(iso,3) # Add tooltip + if isoSize==0: + itemSize=QStandardItem('--') + else: + formatedSize=isoSize.replace(","," ") + itemSize=QStandardItem(formatedSize) + itemSize.setData(formatedSize,3) # Add tooltip + itemSize.setTextAlignment(QtCore.Qt.AlignVCenter|QtCore.Qt.AlignHCenter) + + itemDate=QStandardItem(date) + itemDate.setData(date,3) # Add tooltip + itemDate.setTextAlignment(QtCore.Qt.AlignVCenter|QtCore.Qt.AlignHCenter) + self.modelRemote.appendRow([itemPath,itemIso,itemSize,itemDate,]) + self.listIsosNames.append([path,iso]) def localAdd(self, path,iso,isoSize): # Add an entry in local ISOs list, with indications about checking itemPath=QStandardItem(path) + itemPath.setData(path,3) # Add tooltip itemIso=QStandardItem(iso) + itemIso.setData(iso,3) # Add tooltip if isoSize==0: itemSize=QStandardItem('--') else: formatedSize='{:n}'.format(isoSize).replace(","," ") itemSize=QStandardItem(formatedSize) + itemSize.setData(formatedSize,3) # Add tooltip itemSize.setTextAlignment(QtCore.Qt.AlignVCenter|QtCore.Qt.AlignHCenter) - itemDate=QStandardItem("--/--/--") - itemDate.setTextAlignment(QtCore.Qt.AlignVCenter|QtCore.Qt.AlignHCenter) itemCheck1=QStandardItem("--") itemCheck1.setTextAlignment(QtCore.Qt.AlignVCenter|QtCore.Qt.AlignHCenter) itemCheck5=QStandardItem("--") itemCheck5.setTextAlignment(QtCore.Qt.AlignVCenter|QtCore.Qt.AlignHCenter) - self.model.appendRow([itemPath,itemIso,itemSize,itemDate, itemCheck1, itemCheck5,]) + self.model.appendRow([itemPath,itemIso,itemSize,itemCheck1, itemCheck5,]) self.localListNames.append([path,iso]) def setProgress(self, value): @@ -153,7 +183,7 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): self.timeRemaining.setTime(content) def manualChecks(self): - for iso in self.listIsos.selectedItems(): + for iso in self.modelRemote.selectedItems(): path,name=iso.text().split('/') try: # Look for ISO in local list @@ -178,7 +208,7 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): isoIndex) self.checkThreads[-1].md5Signal.connect(self.md5Check) self.checkThreads[-1].sha1Signal.connect(self.sha1Check) - self.checkThreads[-1].dateSignal.connect(self.dateCheck) +# self.checkThreads[-1].dateSignal.connect(self.dateCheck) self.checkThreads[-1].sizeFinalSignal.connect(self.sizeUpdate) self.checkThreads[-1].checkStartSignal.connect(self.checkStart) self.checkThreads[-1].start() @@ -197,7 +227,7 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): else: val=self.tr("Failed") row=check - self.model.setData(self.model.index(row, 5, QtCore.QModelIndex()), val) + self.model.setData(self.model.index(row, 4, QtCore.QModelIndex()), val) def sha1Check(self,check): if check>=128: @@ -206,7 +236,7 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): else: val=self.tr("Failed") row=check - self.model.setData(self.model.index(row, 4, QtCore.QModelIndex()), val) + self.model.setData(self.model.index(row, 3, QtCore.QModelIndex()), val) def dateCheck(self,check): if check>=128: @@ -317,12 +347,12 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): def selectAllIsos(self): # Select or unselect the ISOs in remote list if self.selectAllState : - for i in range(self.listIsos.count()): - self.listIsos.item(i).setSelected(True) + for i in range(self.modelRemote.count()): + self.modelRemote.item(i).setSelected(True) self.selectAll.setText(self.tr("Unselect &All")) else: - for i in range(self.listIsos.count()): - self.listIsos.item(i).setSelected(False) + for i in range(self.modelRemote.count()): + self.modelRemote.item(i).setSelected(False) self.selectAll.setText(self.tr("Select &All")) self.selectAllState=not self.selectAllState @@ -340,7 +370,7 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): # From the menu entry self.lw = LogWindow() self.lw.show() - self.listIsos.clear() + self.modelRemote.removeRows(0,self.modelRemote.rowCount()) self.model.removeRows(0,self.model.rowCount()) if self.location == "" : self.nameWithPath='rsync://'+self.user+'@bcd.mageia.org/isos/'+self.release+'/' @@ -415,25 +445,29 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): # Connect the button Stop self.stop.clicked.connect(self.stopSync) self.rsyncThread.params(self.password, self.bwl) - for iso in self.listIsos.selectedItems(): - path,name=iso.text().split('/') - try: - # Look for ISO in local list - item=self.model.findItems(name,QtCore.Qt.MatchExactly,1)[0] - except: - # Remote ISO is not yet in local directory. We add it in localList and create the directory - self.localAdd(path,name,0) - basedir=QtCore.QDir(self.destination) - basedir.mkdir(path) - item=self.model.findItems(name,QtCore.Qt.MatchExactly,1)[0] - row=self.model.indexFromItem(item).row() - if self.location == "" : - self.nameWithPath='rsync://'+self.user+'@bcd.mageia.org/isos/'+self.release+'/'+path - else: - self.nameWithPath=self.location+path - if (not str(path).endswith('/')): - self.nameWithPath+='/' - self.rsyncThread.setup(self.nameWithPath, self.destination+'/'+path+'/',row) + remoteRow=-1 + for isoIndex in self.listIsos.selectionModel().selectedIndexes(): + if remoteRow != isoIndex.row(): + remoteRow = isoIndex.row() + path = self.model.data(self.model.index(remoteRow,0)) + name = self.model.data(self.model.index(remoteRow,1)) + try: + # Look for ISO in local list + item=self.model.findItems(name,QtCore.Qt.MatchExactly,1)[0] + except: + # Remote ISO is not yet in local directory. We add it in localList and create the directory + self.localAdd(path,name,0) + basedir=QtCore.QDir(self.destination) + basedir.mkdir(path) + item=self.model.findItems(name,QtCore.Qt.MatchExactly,1)[0] + row=self.model.indexFromItem(item).row() + if self.location == "" : + self.nameWithPath='rsync://'+self.user+'@bcd.mageia.org/isos/'+self.release+'/'+path + else: + self.nameWithPath=self.location+path + if (not str(path).endswith('/')): + self.nameWithPath+='/' + self.rsyncThread.setup(self.nameWithPath, self.destination+'/'+path+'/',row) self.rsyncThread.start() # start the thread # Pour les tests uniquement #rsync://$user@bcd.mageia.org/isos/$release/ @@ -442,16 +476,15 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): def closeFill(self,code): if code==0: # list returned list=self.fillList.getList() - for iso in list: - self.add(iso) + for size, date,longName in list: + path=longName.split('/') + self.add(path[0], path[-1], size,date) elif code==1: self.lvMessage(self.tr("Command rsync not found")) elif code==2: self.lvMessage(self.tr("Error in rsync parameters")) elif code==3: self.lvMessage(self.tr("Unknown error in rsync")) - list=self.fillList.getList() - list=self.fillList.getLocal() for path,iso,isoSize in list: self.localAdd(path,iso, isoSize) @@ -473,7 +506,6 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): self.prefsInit() # look for Isos list and add it to the isoSync list. Update preferences self.updateList() - self.multiSelect() def close(self): self.rsyncThread.stop() |