Jump to content

SD Card - Sorting the list on UM2 screen


pm_dude

Recommended Posts

Posted · SD Card - Sorting the list on UM2 screen

Hello,

A while ago someone said that he would like to sort the list of files and folder displayed in the UM2 print menu.

I've looked at the Marlin code for that a bit and no sorting is done at all. It really depend on when the file was placed on the card or in a given folder.

I didn't wanted to start making a sort directly in Marlin when we load the content of the folder since the browser is already slow when many files are present so I did a Python script that goes through the folders recursively and move the folders and files in order (sorted folder first, then sorted files) in and out of a temp folder just to force the FAT to be ordered. It doesnt change the modified date of the files.

Currently it works on Windows. I haven't padded much since it was just a quick test. The path to start the sort is set as root manually at the end. I don't think it would be safe enough at the moment for a wide distribution but if you want to test it out here is the code. The worst that can happen is that files or folders will be moved in a temp folder at the same level and wont be moved back.

 


import os
import tempfile
def SortContent(folder):
print "sorting content for", folder
content = os.listdir(folder)
tempdir = tempfile.mkdtemp(dir=folder)
content.sort()
for f in content:
realPath = os.path.join(folder, f)
if os.path.isdir(realPath):
tempPath = os.path.join(tempdir, f)
try:
os.rename(realPath, tempPath)
os.rename(tempPath, realPath)
except:
print "ERROR: Folder could not be sorted", realPath, tempPath

for f in content:
realPath = os.path.join(folder, f)
if not os.path.isdir(realPath):
tempPath = os.path.join(tempdir, f)
try:
os.rename(realPath, tempPath)
os.rename(tempPath, realPath)
except:
print "ERROR: File could not be sorted", realPath, tempPath

for f in content:
realPath = os.path.join(folder, f)
if os.path.isdir(realPath):
SortContent(realPath)
os.rmdir(tempdir)

root = r'I:\\'
SortContent(root)

 

  • Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    • Our picks

      • UltiMaker Cura 5.8 beta released
        Another Cura release has arrived and in this 5.8 beta release, the focus is on improving Z seams, as well as completing support for the full Method series of printers by introducing a profile for the UltiMaker Method.
          • Like
        • 1 reply
      • Introducing the UltiMaker Factor 4
        We are happy to announce the next evolution in the UltiMaker 3D printer lineup: the UltiMaker Factor 4 industrial-grade 3D printer, designed to take manufacturing to new levels of efficiency and reliability. Factor 4 is an end-to-end 3D printing solution for light industrial applications
          • Thanks
          • Like
        • 3 replies
    ×
    ×
    • Create New...