# Script to print out directory/file listing
#
# By PhilC
#
# Use Poser menu File\RunPython script to run.
# When prompted select the directory you wish
# to be listed out. The files and directory names
# will then be displayed and a copy saved as
# a TXT file.
#
# 02-26-2009 ammended to account for no AppVersion
# in Poser 6
#
#############################################

import poser
import os
import sys
import string

lines = ["FileLister.py 02-26-2009"]

def search():
	# User input to find starting directory
	parentDialog = 0
	message = "Select a folder"
	startDir = os.path.split(poser.AppLocation())[0] 
	chooseDir = poser.DialogDirChooser(parentDialog,message,startDir)

	if (chooseDir.Show()):
		listStartDir = chooseDir.Path()
		return listStartDir

def visit(something, dirname, names):
	global lines
	line = "-------------------------------------------------------"
	print line
	lines.append(line)
	line = dirname
	print line
	lines.append(line)
	line = "-------------------------------------------------------"
	print line
	lines.append(line)
	for name in names:
		if (string.find(name, '.') != -1):
			print "    ",name
			lines.append("    %s" % name)
		else:
			print "[DIR] ",name
			lines.append("[DIR] %s" % name)
	return

def info():
	global lines
	pathname = os.path.split(poser.AppLocation())[0]
	line = "------------------------------------------------------------"
	print line
	lines.append(line)
	line = "System information:"
	print line
	lines.append(line)
	line = "   sys.argv: %s" % sys.argv
	print line
	lines.append(line)
	line = "   sys.argv[0]: %s" % sys.argv[0]
	print line
	lines.append(line)
	line = "   abspath: %s" % os.path.abspath(pathname)
	print line
	lines.append(line)
	line = "   working directory: %s" % os.getcwd()
	print line
	lines.append(line)
	line = ""
	print line
	lines.append(line)
	line = "Python information:"
	print line
	lines.append(line)
	line = "   version: %s" % sys.version
	print line
	lines.append(line)
	line = "   platform: %s" % sys.platform
	print line
	lines.append(line)
	line = ""
	print line
	lines.append(line)
	line = "Loaded Python modules:"
	print line
	lines.append(line)
	m = list(sys.modules.keys())
	m.sort()
	line = string.join(m, ', ')
	print line
	lines.append(line)
	line = ""
	print line
	lines.append(line)
	line = "Poser information:"
	print line
	lines.append(line)
	line = "   Poser location: %s" % poser.AppLocation()
	print line
	lines.append(line)
	line = "   language: %s" % poser.Language()
	print line
	lines.append(line)
	if float(poser.Version()) < 7.0:
                line = "   version: %s" % poser.Version()
        else:
                line = "   version: %s" % poser.AppVersion()
	print line
	lines.append(line)
	line = ""
	print line
	lines.append(line)
	line = ""
	print line
	lines.append(line)
	line = " If the location of the Poser installation is NOT as above please let me know."
	print line
	lines.append(line)
	line = "------------------------------------------------------------"
	print line
	lines.append(line)

def SaveLinesToFile(lines):
	pathname = os.path.split(poser.AppLocation())[0]
	filename = os.path.join(pathname,'FileLister_RESULT.txt')
	fd = open(filename, 'wb')
	s = string.join(lines, '\n')
	fd.write(s)
	fd.close()


def doIt():
	global lines
	arg = None
	listStartDir = search()
	os.path.walk(listStartDir, visit, arg)
	info()
	SaveLinesToFile(lines)
	print "\n\n-------------------------------------------------------\n"
	print " File list saved as:-"
	print " %s\\FlieLister_RESULT.txt" % os.path.split(poser.AppLocation())[0]
	print ""
	print " Please email as an attachment to pcooke@philc.net"
	print "\n\n-------------------------------------------------------\n"

doIt()

