Last active
August 8, 2020 05:03
-
-
Save Yogendra0Sharma/0ba0ab54ed5e9322bae3b4a3cd3cd785 to your computer and use it in GitHub Desktop.
TreeView Checkbox
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class CheckableDirModel(QtGui.QFileSystemModel): | |
def __init__(self, resultFormats, parent=None): | |
QtGui.QFileSystemModel.__init__(self, None) | |
filters = QStringList() | |
#import ipdb;ipdb.set_trace() | |
filters.append('*.odb') | |
resultFormats = resultFormats.split(',') | |
for resultFormat in resultFormats: | |
filters.append('*.' + resultFormat) | |
self.setNameFilters(filters) | |
#set to False to hide files that match the filter | |
self.setNameFilterDisables(True) | |
self.checks = {} | |
self.selectedFiles = set() | |
#self.b1 = QCheckBox("SPM_CAE_DATA") | |
#self.b1.setChecked(True) | |
#Show the particular formate ('.pages') file into result set for the checked folder | |
def addFile(self,path1): | |
# import ipdb;ipd b.set_trace() | |
files = glob.iglob(os.path.join(str(path1), "*.pages"))#size= os.path.getsize(fp) | |
for file in files: | |
print(file) | |
if os.path.isfile(file): | |
#print(file) | |
Formate.append(file) | |
shutil.copy2(file, reportpath + '/../Particular_Formate') | |
#print(Formate) | |
#treeView1 = TreeView(reportpath) | |
#Show the file greater than 250 MB into list | |
def addFilegt250mb(self,path1): | |
# import ipdb;ipd b.set_trace() | |
global listview1 | |
for root, dirs, files in os.walk(str(path1), topdown=False): | |
for name in files: | |
f = os.path.join(root, name) | |
if os.path.isfile(f):#if os.path.isfile(f) | |
if os.path.getsize(f) >= 0: | |
greaterSize.append(f) | |
print(name) | |
shutil.copy2(f, reportpath+ '/../Particular_Formate_size') | |
#print(greaterSize) | |
#remove the File, When uncheck the Folder | |
def deleteFile(self,path2): | |
for root, dirs, files in os.walk(str(path2), topdown=False): | |
for name in files: | |
f = os.path.join(root, name) | |
if name == ".DS_Store" : | |
pass | |
else: | |
if os.path.getsize(f) >=0 : | |
greaterSize.remove(f) | |
for x in Formate: | |
if x == f : | |
Formate.remove(x) | |
#Formate.remove(f) | |
self.deletSize(name) | |
self.deletFormate(name) | |
#print(greaterSize) | |
#print(Formate) | |
#remove the file size greater then 250 MB , When Folder is uncheck | |
def deletSize(self,name) : | |
folder = reportpath +'/../Particular_Formate_size' | |
for the_file in os.listdir(folder): | |
file_path = os.path.join(folder, the_file) | |
if the_file == name : | |
try: | |
if os.path.isfile(file_path): | |
os.unlink(file_path) | |
#elif os.path.isdir(file_path): shutil.rmtree(file_path) | |
except Exception as e: | |
print(e) | |
#print(greaterSize) | |
#Renove the particular formate file | |
def deletFormate(self,name) : | |
folder = reportpath + '/../Particular_Formate' | |
for the_file in os.listdir(folder): | |
file_path = os.path.join(folder, the_file) | |
if the_file == name : | |
try: | |
if os.path.isfile(file_path): | |
os.unlink(file_path) | |
#import ipdb;ipdb.set_trace() | |
#elif os.path.isdir(file_path): shutil.rmtree(file_path) | |
except Exception as e: | |
print(e) | |
def data(self, index, role=QtCore.Qt.DisplayRole): | |
#import ipdb;ipdb.set_trace() | |
if role != QtCore.Qt.CheckStateRole: | |
return QtGui.QFileSystemModel.data(self, index, role) | |
else: | |
if index.column() == 0: | |
return self.checkState(index) | |
def flags(self, index): | |
#import ipdb;ipdb.set_trace() | |
return QtGui.QFileSystemModel.flags(self, index) | QtCore.Qt.ItemIsUserCheckable | |
def checkState(self, index): | |
#import ipdb;ipdb.set_trace() | |
if index in self.checks: | |
return self.checks[index] | |
else: | |
return QtCore.Qt.Unchecked | |
#import ipdb;ipdb.set_trace() | |
def setData(self, index, value, role): | |
#list=[] | |
view = TreeView.getUiList() | |
listView = TreeView.getList() | |
if (role == QtCore.Qt.CheckStateRole and index.column() == 0): | |
# print(QtGui.QFileSystemModel.filePath(self, index)) | |
self.checks[index] = value | |
if QtGui.QFileSystemModel.filePath(self, index) in self.selectedFiles: | |
self.selectedFiles.remove(QtGui.QFileSystemModel.filePath(self, index)) | |
#import ipdb;ipdb.set_trace() | |
path2=QtGui.QFileSystemModel.filePath(self, index) | |
self.deleteFile(path2) | |
model1 = MyListModel(greaterSize, self) | |
view.setModel(model1) | |
model2 = MyListModel(Formate, self) | |
listView.setModel(model2) | |
#import ipdb;ipdb.set_trace() | |
else: | |
path1 =QtGui.QFileSystemModel.filePath(self, index) | |
self.addFile(path1) | |
self.addFilegt250mb(path1) | |
self.selectedFiles.add(QtGui.QFileSystemModel.filePath(self, index)) | |
model1 = MyListModel(greaterSize, self) | |
view.setModel(model1) | |
model2 = MyListModel(Formate, self) | |
listView.setModel(model2) | |
self.emit(QtCore.SIGNAL("dataChanged(QModelIndex,QModelIndex)"), index, index) | |
return True | |
return QtGui.QFileSystemModel.setData(self, index, value, role) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment