ShowInFinder function in Cinema 4D S26
-
Hi, just noticed that ShowInFinder function in Cinema 4D S26 opens the parent directory instead of the given directory, like in previous C4D versions. Is this a known change or a bug?
Here is an example script that should open the _bugreports folder
import os import c4d from c4d import storage def main(): folder = storage.GeGetC4DPath(c4d.C4D_PATH_PREFS) folder = os.path.dirname(folder) folder = os.path.join(folder, '_bugreports') storage.ShowInFinder(folder) if __name__=='__main__': main()
It works in Cinema 4D R25 (and older versions) but in S26 it opens the parent directory of _bugreports instead.
-
Hi,
sorry i was not able to reproduce the issue on my mac. What OSX are you testing on? Intel or M1 (just in case)
The parent directory is always displayed on my test. While if i pass True as the second parameter of the
ShowInFinder
function, it will display the directory itself.There is also a new method to retrieve the different Cinema 4D folders using the maxon api.
maxon.Application.GetUrl(maxon.APPLICATION_URLTYPE.PREFS_DIR)
Cheers,
Manuel -
Hi, sorry I totally forgot to tell the system specs. I did just a couple tests. Looks like it just was a Windows - Mac difference before.
Windows 11 and Cinema 4D R26.013 -> Opens parent folder
Windows 11 and Cinema 4D R25.117 -> Opens folder itself
Windows 11 and Cinema 4D R21.207 -> Opens folder itselfMacOS 12.3.1 (2018 MBP) and R26.013 -> Opens parent folder
MacOS 12.3.1 (2018 MBP) and R21.207 -> Opens parent folderI'm gonna use following code to open straight to the folder location
import os import c4d from c4d import storage def main(): f = storage.GeGetC4DPath(c4d.C4D_PATH_PREFS) # Get preference folder path f = os.path.dirname(r''+f+'') # Go up f = os.path.join(f, '_bugreports') # Bug reports folder storage.ShowInFinder(f) # Open folder if c4d.GeGetCurrentOS() == c4d.OPERATINGSYSTEM_WIN: # If operating system is Windows os.startfile(folder) else: # If operating system is Mac os.system('open "%s"' % folder) if __name__=='__main__': main()
Thanks for pointing out!
-
Hi,
Ok i was able to reproduce the issue on Windows 10. We can say that now, both OS are aligned and works the same, so i would not consider this as a bug. This is also how the button on preferences works, by showing the parent folder of the preferences.
As i said adding True as the second parameter will open the right directory.
storage.ShowInFinder(folder, True)
Cheers,
Manuel -
Hi, not sure how I missed the solution from your first post. I need to be more careful. Thanks and sorry for the confusion.
storage.ShowInFinder(folder, True)
Works prefectly. Cheers!
-
I tend to use
GeExecuteFile()
to open directories in Explorer/Finder. This seems to work for me regardless of OS.
Are there any advantages of usingShowInFinder()
instead? Or any disadvantages of usingGeExecuteFile()
.Cheers
-
@a_block said in ShowInFinder function in Cinema 4D S26:
I tend to use GeExecuteFile() to open directories in Explorer/Finder. This seems to work for me regardless of OS.
Are there any advantages of using ShowInFinder() instead? Or any disadvantages of using GeExecuteFile().Absolutely None, except that the name of the function makes more sense if you just want to show the directory. Thanks for pointing that out, i overlooked that line.
Bool ShowInFinder(const Filename& path, Bool open) { if (open) return GeExecuteFile(path);
Cheers,
Manuel