On Sun, Nov 22, 2020, 2:49 AM Benjam901 <[email protected]> wrote:
> Hello group, > > It has been a long time since I've posted btu I have a problem that I need > some help with in PySide2. > > So, I have a QFileSystemModel set up as the model for a TreeView to list > dirs in a system. What I am setting up for the user is for them to choose > which dirs are listed, include favourites etc. What I am trying to achieve > is for the test_duplicates folder to be the ONLY folder that is shown & > expandable with all relevant filetypes that the user may want shown, audio > files, image files etc. > > > > When searching for a solution to this problem I cam across this old post: > https://groups.google.com/g/python_inside_maya/c/a2QM_KvgfeI > > I have implemented justins example but have tried to flip it so that ONLY > a certain dir shows up instead of exluding the dir pattern I get an empty > result set. When I debugged it, it looked like QFileSystemModel iterates > the entire dir tree and excludes the root level folders too... is this > expected behaviour? > Yes the proxy model is generic so it isn't specifically aware of files vs directories and it going to just ask you if any row should be filtered out. The difference between your modification and the original code is that the original naively assumes directories won't match extensions and will always end up being shown. So it was just files with extensions thag would be subject to exclusion if they match the ext list. When you try and flip the logic you are now saying that even directories that don't have the desired ext should be excluded which means the children are gone too. What you might want to do is to check if the index is a directory first. if sourceModel.isDir(idx): return True This will get you part of the way there since it will now only exclude files that don't match. But you will be left with empty dirs. There could be a few ways to handle this. One is more manual work since it would require that you perform your own listing on the dir and check all the children to see if it's going to end up empty. If so then you want to return False so it will exclude the dir. Another option is to make the proxy model system do all the work and create a second proxy model that can run a filter pass after the first one removes all the files. That would then let you look for dirs and the source proxy model will tell you if it has children. Justin > > > Here is what I did, nothing mega really, just inverted the True/False for > Justins model > https://gist.github.com/ben-hearn-sb/ab2693db819248efea85ecef355e0887 > > Cheers! > > Ben > > -- > You received this message because you are subscribed to the Google Groups > "Python Programming for Autodesk Maya" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/python_inside_maya/b79c066f-d181-4e88-a250-d2f2654452f9n%40googlegroups.com > <https://groups.google.com/d/msgid/python_inside_maya/b79c066f-d181-4e88-a250-d2f2654452f9n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA28kNe0-YcX%2Bpj7NM5zekXEhUvbrEMA7q35aexX3%2BCfjA%40mail.gmail.com.
