From: <ror...@us...> - 2007-07-27 10:18:53
|
Revision: 122 http://roreditor.svn.sourceforge.net/roreditor/?rev=122&view=rev Author: rorthomas Date: 2007-07-27 03:17:33 -0700 (Fri, 27 Jul 2007) Log Message: ----------- * modtool moved to class in lib/ror * now supporting installrepo target: downloads a file from the repository and installs it instantly Modified Paths: -------------- trunk/modtool.bat trunk/modtool.py Added Paths: ----------- trunk/devtools/rorrepo.reg trunk/lib/ror/modtool.py Added: trunk/devtools/rorrepo.reg =================================================================== --- trunk/devtools/rorrepo.reg (rev 0) +++ trunk/devtools/rorrepo.reg 2007-07-27 10:17:33 UTC (rev 122) @@ -0,0 +1,12 @@ +REGEDIT4 + +[HKEY_CLASSES_ROOT\RoRRepo] +@="URL:RoRRepo Protocol" +"URL Protocol"="" + +[HKEY_CLASSES_ROOT\RoRRepo\shell] + +[HKEY_CLASSES_ROOT\RoRRepo\shell\open] + +[HKEY_CLASSES_ROOT\RoRRepo\shell\open\command] +@="\"D:\\projects\\sfproject\\svn\\trunk\\modtool.bat\" \"installrepo\" \"%1\"" \ No newline at end of file Added: trunk/lib/ror/modtool.py =================================================================== --- trunk/lib/ror/modtool.py (rev 0) +++ trunk/lib/ror/modtool.py 2007-07-27 10:17:33 UTC (rev 122) @@ -0,0 +1,289 @@ +#Thomas Fischer 31/05/2007, th...@th... +import sys, os, os.path, shutil, urllib, re + +from logger import log +from settingsManager import getSettingsManager + +REPOSITORY_URL = "http://repository.rigsofrods.com/files/%(file)s" +TEMPDIR = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "..", "temp")) +DOWNLOADDIR = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "..", "downloaded")) + +class ModTool: + def __init__(self): + pass + + def work(self, mode, targetfile, verbose, dryrun, installtarget=None): + self.dryrun = dryrun + self.verbose = verbose + log().info("### modinstaller started with %s, %s" % (mode, targetfile)) + if mode == "install": + filename = os.path.abspath(targetfile) + self.ExtractToTemp(targetfile) + target = installtarget + log().info("### validating target ...") + import ror.depchecker + dc = ror.depchecker.RoRDepChecker(TEMPDIR, "dtree", target, verbose) + if dc.invalid: + log().error("### target invalid!") + log().info("### please use the list mode to get valid targets") + usage() + + log().info("### target valid!") + #print dc.dstree + installcounter = 0 + for file in dc.dstree: + filename = file['filename'] + filenamefound = self.searchFile(filename, TEMPDIR) + if filenamefound is None: + log().error("File %s not found in %s!" % (filename, TEMPDIR)) + sys.exit(1) + self.installfile(target, filenamefound, dryrun) + installcounter += 1 + if dryrun: + log().info("### would install %d files." % installcounter) + else: + log().info("### %d files installed, finished!" % installcounter) + self.removetemp(False) + return [target] + + elif mode == "installall": + filename = os.path.abspath(targetfile) + self.ExtractToTemp(targetfile) + validtargets, invalidtargets = self.getTargets(verbose) + log().info("### installing %d found modifications:" % (len(validtargets))) + installcounter = 0 + for target in validtargets: + log().info("### installing modification '%s'" % target) + import ror.depchecker + dc = ror.depchecker.RoRDepChecker(TEMPDIR, "dtree", target, verbose) + if dc.dstree is None: + log().error("no dependenytree for File %s!" % (filename)) + continue + for file in dc.dstree: + filename = file['filename'] + filenamefound = self.searchFile(filename, TEMPDIR) + if filenamefound is None: + log().error("File %s not found in %s!" % (filename, TEMPDIR)) + sys.exit(1) + self.installfile(target, filenamefound, dryrun) + installcounter += 1 + if dryrun: + log().info("### would install %d files." % installcounter) + else: + log().info("### %d files installed, finished!" % installcounter) + self.removetemp(False) + return validtargets + + elif mode == "installrepo": + if targetfile.find("://") != -1: + m = re.match(r"^.*://(.*)$", targetfile) + if not m is None and len(m.groups()) > 0: + targetfile = m.groups()[0].rstrip("/") + else: + log().error("error while installing from repo: wrong URL scheme") + return False + else: + log().info("manual use, not parsing URL") + if not self.getRepoFile(targetfile): + log().error("error while installing from repo.") + return False + targetfile = os.path.join(DOWNLOADDIR, targetfile) + return ModTool().work("installall", targetfile, self.verbose, self.dryrun) + + elif mode in ["list", "listall"]: + filename = os.path.abspath(targetfile) + self.ExtractToTemp(targetfile) + validtargets, invalidtargets = self.getTargets(verbose) + if mode == "listall": + if len(invalidtargets) > 0: + log().info("broken modifications found:") + for v in invalidtargets: + log().info(" %-20s" % v) + log().info("use the --verbose flag to find the missing files!") + else: + log().info("no broken modifications found") + + if len(validtargets) > 0: + log().info("installable modifications found:") + for v in validtargets: + log().info(" %-20s" % v) + else: + log().info("no installable modifications found! :(") + # todo : remove workaround! + self.removetemp(False) + return validtargets + + elif mode in ["listinstalled"]: + targets = self.getRoRMods(verbose) + if len(targets) > 0: + log().info("### Found Mods:") + for target in targets: + log().info(" "+target) + else: + log().info("### No Mods found!") + + if mode in ["uninstall"]: + rorpath = getSettingsManager().getSetting("RigsOfRods", "BasePath") + log().info("### validating target ...") + import ror.depchecker + dc = ror.depchecker.RoRDepChecker(rorpath, "dtree", targetfile, verbose) + if dc.invalid: + log().error("### target invalid! (Target not found)") + log().info("### please use the 'listinstalled' mode to get valid uninstallation targets") + return None + + log().info("### target valid!") + + #print dc.dstree + newtargets = [] + md5s = dc.readMD5File() + for file in dc.dstree: + filename = file['filename'] + if not os.path.basename(filename) in md5s.keys(): + newtargets.append(filename) + log().info("### removed %d files from dependency tree." % (len(dc.dstree)-len(newtargets))) + #print newtargets + if dryrun: + log().info("### would uninstall %d file(s):" % len(newtargets)) + else: + log().info("### uninstalling %d file(s):" % len(newtargets)) + for target in newtargets: + filenamefound = self.searchFile(target, rorpath) + if filenamefound is None: + log().error("### File not found: %s" % target) + continue + log().info(" %s" % filenamefound) + if not dryrun: + os.unlink(filenamefound) + + return None + + def wgetreporthook(self, *arg): + percentdone = int(((arg[0] * arg[1]) / float(arg[2]))*100) + if percentdone % 10 == 0: + log().info("Downloading, % 4d%% done..." % percentdone) + + def wget(self, url, filename): + file, msg = urllib.urlretrieve(url, filename, self.wgetreporthook) + if os.path.isfile(file): + return True + return False + + + def getRepoFile(self, repofilename): + if not os.path.isdir(DOWNLOADDIR): + os.mkdir(DOWNLOADDIR) + try: + log().info("trying to download the file %s form the repository..." % repofilename) + src = REPOSITORY_URL %{"file":repofilename} + dst = os.path.join(DOWNLOADDIR, repofilename) + #print src, dst + return self.wget(src, dst) + except Exception, err: + log().error("Error while trying to donwload file from the Repository:") + log().error(str(err)) + self.removetemp(False) + return False + + def removetemp(self, reporterrors=True): + if os.path.isdir(TEMPDIR): + try: + shutil.rmtree(TEMPDIR) + #os.rmdir(TEMPDIR) + except Exception, err: + if not reporterrors: + return + log().error(str(err)) + log().error("could not remove temporary diretory: %s! please delete by hand." % TEMPDIR) + sys.exit(1) + + def ExtractToTemp(self, filename): + file, extension = os.path.splitext(filename) + self.removetemp(False) + os.mkdir(TEMPDIR) + if extension.lower() == ".rar": + import UnRAR + dst = os.path.join(TEMPDIR, os.path.basename(filename)) + shutil.copyfile(filename, dst) + os.chdir(TEMPDIR) + UnRAR.Archive(os.path.basename(filename)).extract() + + # remove .rar file instantly + os.unlink(os.path.join(TEMPDIR, os.path.basename(filename))) + + # change back to current path + os.chdir(os.path.dirname(os.path.abspath(__file__))) + return True + elif extension.lower() == ".zip": + import UnZIP + UnZIP.unzip(filename, TEMPDIR) + return True + else: + log().info("copying "+filename+" to "+os.path.join(TEMPDIR, os.path.basename(filename))) + shutil.copyfile(filename, os.path.join(TEMPDIR, os.path.basename(filename))) + return False + + def installfile(self, maintarget, srcfile, dryrun): + file, extension = os.path.splitext(maintarget) + rorpath = getSettingsManager().getSetting("RigsOfRods", "BasePath") + + if extension in ['.truck', '.load']: + path = os.path.join(rorpath, "data", "trucks") + elif extension in ['.terrn']: + path = os.path.join(rorpath, "data", "terrains") + else: + path = rorpath + if dryrun: + log().info("would install %s to %s" % (os.path.basename(srcfile), path)) + else: + log().info("installing %s to %s" % (os.path.basename(srcfile), path)) + shutil.copyfile(srcfile, os.path.join(path, os.path.basename(srcfile))) + + def searchFile(self, filename, top): + for root, dirs, files in os.walk(top, topdown=False): + if filename in files: + return os.path.join(root, filename) + return None + + def getTargets(self, verbose): + import ror.depchecker + dc = ror.depchecker.RoRDepChecker(TEMPDIR, "getfiles", "", False) + targets = [] + for file in dc.files: + filename, extension = os.path.splitext(file) + if extension.lower() in ['.truck', '.terrn', '.load']: + targets.append(os.path.basename(file)) + + validtargets = [] + invalidtargets = [] + if len(targets) == 0: + log().info("### no targets found") + return validtargets, invalidtargets + + log().info("### found %d targets, checking them separatly now" % len(targets)) + for target in targets: + log().info("### checking target %s..." % target) + dc = ror.depchecker.RoRDepChecker(TEMPDIR, "dtree", target, verbose) + if dc.everythingfound: + validtargets.append(target) + else: + invalidtargets.append(target) + return validtargets, invalidtargets + + def getRoRMods(self, verbose): + import ror.depchecker + rorpath = getSettingsManager().getSetting("RigsOfRods", "BasePath") + dc = ror.depchecker.RoRDepChecker(rorpath, "getfiles", "", False) + targets = [] + for file in dc.files: + filename, extension = os.path.splitext(file) + if extension.lower() in ['.truck', '.terrn', '.load']: + targets.append(os.path.basename(file)) + newtargets = [] + md5s = dc.readMD5File() + for target in targets: + if not os.path.basename(target) in md5s.keys(): + newtargets.append(target) + return newtargets + + \ No newline at end of file Modified: trunk/modtool.bat =================================================================== --- trunk/modtool.bat 2007-07-23 16:51:11 UTC (rev 121) +++ trunk/modtool.bat 2007-07-27 10:17:33 UTC (rev 122) @@ -1 +1 @@ -@%systemdrive%\python25\python.exe modtool.py %1 %2 %3 %4 %5 %6 %7 %8 %9 +@%systemdrive%\python25\python.exe D:\projects\sfproject\svn\trunk\modtool.py %1 %2 %3 %4 %5 %6 %7 %8 %9 Modified: trunk/modtool.py =================================================================== --- trunk/modtool.py 2007-07-23 16:51:11 UTC (rev 121) +++ trunk/modtool.py 2007-07-27 10:17:33 UTC (rev 122) @@ -2,241 +2,7 @@ import sys, os, os.path, shutil sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib")) -from ror.logger import log -from ror.settingsManager import getSettingsManager -TEMPDIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "temp") - -def removetemp(reporterrors=True): - if os.path.isdir(TEMPDIR): - try: - shutil.rmtree(TEMPDIR) - #os.rmdir(TEMPDIR) - except Exception, err: - if not reporterrors: - return - log().error(str(err)) - log().error("could not remove temporary diretory: %s! please delete by hand." % TEMPDIR) - sys.exit(1) - -def ExtractToTemp(filename): - file, extension = os.path.splitext(filename) - removetemp(False) - os.mkdir(TEMPDIR) - if extension.lower() == ".rar": - import UnRAR - dst = os.path.join(TEMPDIR, os.path.basename(filename)) - shutil.copyfile(filename, dst) - os.chdir(TEMPDIR) - UnRAR.Archive(os.path.basename(filename)).extract() - - # remove .rar file instantly - os.unlink(os.path.join(TEMPDIR, os.path.basename(filename))) - - # change back to current path - os.chdir(os.path.dirname(os.path.abspath(__file__))) - return True - elif extension.lower() == ".zip": - import UnZIP - UnZIP.unzip(filename, TEMPDIR) - return True - else: - log().info("copying "+filename+" to "+os.path.join(TEMPDIR, os.path.basename(filename))) - shutil.copyfile(filename, os.path.join(TEMPDIR, os.path.basename(filename))) - return False - -def installfile(maintarget, srcfile, dryrun): - file, extension = os.path.splitext(maintarget) - rorpath = getSettingsManager().getSetting("RigsOfRods", "BasePath") - - if extension in ['.truck', '.load']: - path = os.path.join(rorpath, "data", "trucks") - elif extension in ['.terrn']: - path = os.path.join(rorpath, "data", "terrains") - else: - path = rorpath - if dryrun: - log().info("would install %s to %s" % (os.path.basename(srcfile), path)) - else: - log().info("installing %s to %s" % (os.path.basename(srcfile), path)) - shutil.copyfile(srcfile, os.path.join(path, os.path.basename(srcfile))) - -def searchFile(filename, top): - for root, dirs, files in os.walk(top, topdown=False): - if filename in files: - return os.path.join(root, filename) - return None - -def getTargets(verbose): - import ror.depchecker - dc = ror.depchecker.RoRDepChecker(TEMPDIR, "getfiles", "", False) - targets = [] - for file in dc.files: - filename, extension = os.path.splitext(file) - if extension.lower() in ['.truck', '.terrn', '.load']: - targets.append(os.path.basename(file)) - - validtargets = [] - invalidtargets = [] - if len(targets) == 0: - log().info("### no targets found") - return validtargets, invalidtargets - - log().info("### found %d targets, checking them separatly now" % len(targets)) - for target in targets: - log().info("### checking target %s..." % target) - dc = ror.depchecker.RoRDepChecker(TEMPDIR, "dtree", target, verbose) - if dc.everythingfound: - validtargets.append(target) - else: - invalidtargets.append(target) - return validtargets, invalidtargets - -def getRoRMods(verbose): - import ror.depchecker - rorpath = getSettingsManager().getSetting("RigsOfRods", "BasePath") - dc = ror.depchecker.RoRDepChecker(rorpath, "getfiles", "", False) - targets = [] - for file in dc.files: - filename, extension = os.path.splitext(file) - if extension.lower() in ['.truck', '.terrn', '.load']: - targets.append(os.path.basename(file)) - newtargets = [] - md5s = dc.readMD5File() - for target in targets: - if not os.path.basename(target) in md5s.keys(): - newtargets.append(target) - return newtargets - - -def work(mode, targetfile, verbose, dryrun, installtarget=None): - log().info("### modinstaller started with %s, %s" % (mode, targetfile)) - if mode == "install": - filename = os.path.abspath(targetfile) - ExtractToTemp(targetfile) - target = installtarget - log().info("### validating target ...") - import ror.depchecker - dc = ror.depchecker.RoRDepChecker(TEMPDIR, "dtree", target, verbose) - if dc.invalid: - log().error("### target invalid!") - log().info("### please use the list mode to get valid targets") - usage() - - log().info("### target valid!") - #print dc.dstree - installcounter = 0 - for file in dc.dstree: - filename = file['filename'] - filenamefound = searchFile(filename, TEMPDIR) - if filenamefound is None: - log().error("File %s not found in %s!" % (filename, TEMPDIR)) - sys.exit(1) - installfile(target, filenamefound, dryrun) - installcounter += 1 - if dryrun: - log().info("### would install %d files." % installcounter) - else: - log().info("### %d files installed, finished!" % installcounter) - removetemp(False) - return [target] - - elif mode == "installall": - filename = os.path.abspath(targetfile) - ExtractToTemp(targetfile) - validtargets, invalidtargets = getTargets(verbose) - log().info("### installing %d found modifications:" % (len(validtargets))) - installcounter = 0 - for target in validtargets: - log().info("### installing modification '%s'" % target) - import ror.depchecker - dc = ror.depchecker.RoRDepChecker(TEMPDIR, "dtree", target, verbose) - if dc.dstree is None: - log().error("no dependenytree for File %s!" % (filename)) - continue - for file in dc.dstree: - filename = file['filename'] - filenamefound = searchFile(filename, TEMPDIR) - if filenamefound is None: - log().error("File %s not found in %s!" % (filename, TEMPDIR)) - sys.exit(1) - installfile(target, filenamefound, dryrun) - installcounter += 1 - if dryrun: - log().info("### would install %d files." % installcounter) - else: - log().info("### %d files installed, finished!" % installcounter) - removetemp(False) - return validtargets - - elif mode in ["list", "listall"]: - filename = os.path.abspath(targetfile) - ExtractToTemp(targetfile) - validtargets, invalidtargets = getTargets(verbose) - if mode == "listall": - if len(invalidtargets) > 0: - log().info("broken modifications found:") - for v in invalidtargets: - log().info(" %-20s" % v) - log().info("use the --verbose flag to find the missing files!") - else: - log().info("no broken modifications found") - - if len(validtargets) > 0: - log().info("installable modifications found:") - for v in validtargets: - log().info(" %-20s" % v) - else: - log().info("no installable modifications found! :(") - # todo : remove workaround! - removetemp(False) - return validtargets - - elif mode in ["listinstalled"]: - targets = getRoRMods(verbose) - if len(targets) > 0: - log().info("### Found Mods:") - for target in targets: - log().info(" "+target) - else: - log().info("### No Mods found!") - - if mode in ["uninstall"]: - rorpath = getSettingsManager().getSetting("RigsOfRods", "BasePath") - log().info("### validating target ...") - import ror.depchecker - dc = ror.depchecker.RoRDepChecker(rorpath, "dtree", targetfile, verbose) - if dc.invalid: - log().error("### target invalid! (Target not found)") - log().info("### please use the 'listinstalled' mode to get valid uninstallation targets") - return None - - log().info("### target valid!") - - #print dc.dstree - newtargets = [] - md5s = dc.readMD5File() - for file in dc.dstree: - filename = file['filename'] - if not os.path.basename(filename) in md5s.keys(): - newtargets.append(filename) - log().info("### removed %d files from dependency tree." % (len(dc.dstree)-len(newtargets))) - #print newtargets - if dryrun: - log().info("### would uninstall %d file(s):" % len(newtargets)) - else: - log().info("### uninstalling %d file(s):" % len(newtargets)) - for target in newtargets: - filenamefound = searchFile(target, rorpath) - if filenamefound is None: - log().error("### File not found: %s" % target) - continue - log().info(" %s" % filenamefound) - if not dryrun: - os.unlink(filenamefound) - - return None - def usage(): print "usage (general): %s <mode> <additionaloptions> [--verbose] [--dryrun]" % (os.path.basename(sys.argv[0])) print "list <filename>" @@ -248,6 +14,9 @@ print "installall <filename> --verbose --dryrun" print " install all found modifications in filename" print "" + print "installrepo <filename> --verbose --dryrun" + print " install all found modifications in filename that is downloaded from the repository" + print "" print "install <filename> <modification> --verbose --dryrun" print " install a certain modifications in filename (valid and invalid)" print "" @@ -262,7 +31,6 @@ sys.exit(0) def main(): - # check for valid RoR Directory! import ror.settingsManager rorpath = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") @@ -274,7 +42,7 @@ usage() mode = sys.argv[1] - if not mode in ['list', 'listall', 'install', 'installall', 'listinstalled','uninstall']: + if not mode in ['list', 'listall', 'install', 'installall', 'listinstalled','uninstall', 'installrepo']: usage() if len(sys.argv) < 4 and mode in ['install']: usage() @@ -286,11 +54,11 @@ usage() elif mode in ['listinstalled']: targetfile = rorpath + elif mode in ['installrepo']: + targetfile = sys.argv[2] elif mode == 'uninstall': targetfile = sys.argv[2] - - # get optional flags verbose = False dryrun = False @@ -311,9 +79,8 @@ installtarget = sys.argv[3] else: installtarget = None - work(mode, targetfile, verbose, dryrun, installtarget) + import ror.modtool + ror.modtool.ModTool().work(mode, targetfile, verbose, dryrun, installtarget) - - if __name__=="__main__": - main() \ No newline at end of file + main() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ror...@us...> - 2007-07-27 12:29:16
|
Revision: 132 http://roreditor.svn.sourceforge.net/roreditor/?rev=132&view=rev Author: rorthomas Date: 2007-07-27 05:29:13 -0700 (Fri, 27 Jul 2007) Log Message: ----------- * moved setup to separate folder * added python file extension .reg file Modified Paths: -------------- trunk/postinstall.py Added Paths: ----------- trunk/devtools/python.reg trunk/devtools/setup/ trunk/devtools/setup/readme-installer.txt trunk/devtools/setup/setup.nsi trunk/devtools/setup/splash.bmp Removed Paths: ------------- trunk/readme-installer.txt trunk/setup.nsi trunk/splash.bmp trunk/testunrar.py trunk/testunzip.py Added: trunk/devtools/python.reg =================================================================== (Binary files differ) Property changes on: trunk/devtools/python.reg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/devtools/setup/readme-installer.txt =================================================================== --- trunk/devtools/setup/readme-installer.txt (rev 0) +++ trunk/devtools/setup/readme-installer.txt 2007-07-27 12:29:13 UTC (rev 132) @@ -0,0 +1,2 @@ +have fun and report bugs and feature requests! :) +http://forum.rigsofrods.com \ No newline at end of file Added: trunk/devtools/setup/setup.nsi =================================================================== --- trunk/devtools/setup/setup.nsi (rev 0) +++ trunk/devtools/setup/setup.nsi 2007-07-27 12:29:13 UTC (rev 132) @@ -0,0 +1,262 @@ +; Script generated by the HM NIS Edit Script Wizard. + +; HM NIS Edit Wizard helper defines +!define PRODUCT_NAME "RoRToolkit" +!define PRODUCT_VERSION "r105" +!define PRODUCT_PUBLISHER "Thomas Fischer" +!define PRODUCT_WEB_SITE "http://wiki.rigsofrods.com/index.php?title=RoRToolkit" +!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" +!define PRODUCT_UNINST_ROOT_KEY "HKLM" + +!define PYTHONVERSION "2.5" +!define PYTHONDLURL "http://python.org/ftp/python/2.5.1/python-2.5.1.msi" +!define PYTHONDLFN "python-2.5.1.msi" + +SetCompressor lzma + +BrandingText "Rigs of Rods Toolkit" +InstProgressFlags smooth colored +XPStyle on +ShowInstDetails show +ShowUninstDetails show +SetDateSave on +#SetDatablockOptimize on +CRCCheck on +#SilentInstall normal + +; MUI 1.67 compatible ------ +!include "MUI.nsh" +!include "LogicLib.nsh" + +; MUI Settings +!define MUI_ABORTWARNING +!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-blue.ico" +!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall-blue.ico" + +; Language Selection Dialog Settings +!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" +!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" +!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language" + +; Welcome page +!insertmacro MUI_PAGE_WELCOME +; License page +!insertmacro MUI_PAGE_LICENSE "readme-installer.txt" +; Directory page +!insertmacro MUI_PAGE_DIRECTORY +; Instfiles page +!insertmacro MUI_PAGE_INSTFILES +; Finish page +;!define MUI_FINISHPAGE_RUN "$INSTDIR\rortoolkit.bat" +;!define MUI_FINISHPAGE_RUN_PARAMETERS "" +#!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\Example.file" + +!define MUI_FINISHPAGE_NOAUTOCLOSE +!define MUI_FINISHPAGE_RUN +!define MUI_FINISHPAGE_RUN_NOTCHECKED +!define MUI_FINISHPAGE_RUN_TEXT "Update and start (Can take some time)" +!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchPostInstallation" +!insertmacro MUI_PAGE_FINISH + +; Uninstaller pages +!insertmacro MUI_UNPAGE_INSTFILES + +; Language files +!insertmacro MUI_LANGUAGE "English" +!insertmacro MUI_LANGUAGE "French" +!insertmacro MUI_LANGUAGE "German" +!insertmacro MUI_LANGUAGE "Spanish" +!insertmacro MUI_LANGUAGE "Polish" +!insertmacro MUI_LANGUAGE "Russian" +!insertmacro MUI_LANGUAGE "Ukrainian" +!insertmacro MUI_LANGUAGE "Finnish" +!insertmacro MUI_LANGUAGE "Czech" +!insertmacro MUI_LANGUAGE "Italian" + +; Reserve files +!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS + +; MUI end ------ + +Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" +OutFile "RoRToolkitSetup.exe" +;InstallDir "$PROGRAMFILES\RoRToolkit" +InstallDir "c:\rortoolkit" +ShowInstDetails show +ShowUnInstDetails show + +Var /GLOBAL PYOK +Var /GLOBAL PYPATH +Var /GLOBAL PYINSTALLED + +Function DetectPython + ReadRegStr $R6 HKCU "SOFTWARE\Python\PythonCore\${PYTHONVERSION}\InstallPath" "" + ${If} $R6 == '' + ReadRegStr $R6 HKLM "SOFTWARE\Python\PythonCore\${PYTHONVERSION}\InstallPath" "" + ${If} $R6 == '' + Push "No registry key found" + Push "NOK" + Return + ${EndIf} + ${EndIf} + + ${If} ${FileExists} "$R6\python.exe" + Push "$R6" + Push "OK" + ${Else} + Push "No python.exe found" + Push "NOK" + ${EndIf} +FunctionEnd + +Function CheckForPython + Banner::show /NOUNLOAD "Checking for Python ${PYTHONVERSION} ..." + StrCpy $PYINSTALLED "" + Call DetectPython + Pop $PYOK + Pop $PYPATH + Banner::destroy + ${If} $PYOK == 'OK' + DetailPrint "Detected Python ${PYTHONVERSION}!" + Return + ${Else} + MessageBox MB_YESNOCANCEL|MB_ICONEXCLAMATION "The installer cannot find Python ${PYTHONVERSION}!$\r$\nWould you like the installer to download and install Python ${PYTHONVERSION} for you?" IDNO abort IDCANCEL abort + DetailPrint "Downloading ${PYTHONDLURL}..." + + NSISdl::download ${PYTHONDLURL} ${PYTHONDLFN} + Pop $R0 ;Get the return value + StrCmp $R0 "success" dlok abort + dlok: + DetailPrint "Installing Python ${PYTHONVERSION}..." + ExecWait '"msiExec" /q /i "${PYTHONDLFN}"' + StrCpy $PYINSTALLED "" + Call DetectPython + Pop $PYOK + Pop $PYPATH + ${If} $PYOK == 'OK' + DetailPrint "Detected Python ${PYTHONVERSION}!" + Return + ${Else} + MessageBox MB_OK "Python ${PYTHONVERSION} installation failed! Please install by hand and restart this installation!" + Abort + ${EndIf} + Return + ${EndIf} + Return + abort: + MessageBox MB_OK "Please install Python ${PYTHONVERSION} and retry this installation!" + Abort +FunctionEnd + +Function InstallDirectX + InitPluginsDir + File /oname=$PLUGINSDIR\dxwebsetup.exe "tools\dxwebsetup.exe" + Banner::show /NOUNLOAD "Installing lastest DirectX ..." + ExecWait '"$PLUGINSDIR\dxwebsetup.exe /Q"' + Delete $PLUGINSDIR\dxwebsetup.exe + Banner::destroy +FunctionEnd + + +Function InstallPyWin32 + InitPluginsDir + File /oname=$PLUGINSDIR\pywin32-setup.exe "tools\pywin32-setup.exe" + Banner::show /NOUNLOAD "Installing Python for Windows ..." + ExecWait '"$PLUGINSDIR\pywin32-setup.exe"' + Delete $PLUGINSDIR\pywin32-setup.exe + Banner::destroy +FunctionEnd + +Function InstallPyParsing + InitPluginsDir + File /oname=$PLUGINSDIR\pyparsing-1.4.6.win32.exe "tools\pyparsing-1.4.6.win32.exe" + Banner::show /NOUNLOAD "Installing PyParsing Python Module ..." + ExecWait '"$PLUGINSDIR\pyparsing-1.4.6.win32.exe"' + Delete $PLUGINSDIR\pyparsing-1.4.6.win32.exe + Banner::destroy +FunctionEnd + +Function InstallGraphViz + InitPluginsDir + File /oname=$PLUGINSDIR\graphviz-2.12.exe "tools\graphviz-2.12.exe" + Banner::show /NOUNLOAD "Installing Graphviz for Windows ..." + ExecWait '"$PLUGINSDIR\graphviz-2.12.exe"' + Delete $PLUGINSDIR\graphviz-2.12.exe + Banner::destroy +FunctionEnd + + +Function .onInit + InitPluginsDir + File /oname=$PLUGINSDIR\..bmp "splash.bmp" + advsplash::show 1000 1300 600 -1 $PLUGINSDIR\splash + Pop $0 + Delete $PLUGINSDIR\splash.bmp + !insertmacro MUI_LANGDLL_DISPLAY +FunctionEnd + +Section "Install Python" SEC01 + Call CheckForPython +SectionEnd + +Section "Install Tools" SEC02 + Call InstallDirectX + Call InstallPyWin32 + Call InstallPyParsing + Call InstallGraphViz +SectionEnd + +Section "Full Installation" SEC03 + SetOutPath "$INSTDIR" + SetOverwrite try + File "/r" "..\..\*" +SectionEnd + +Function "LaunchPostInstallation" + ExecWait '"$INSTDIR\update.bat"' + ExecWait '"$INSTDIR\rortoolkit.bat"' +FunctionEnd + +Section -AdditionalIcons + SetOutPath $INSTDIR + WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" + CreateDirectory "$SMPROGRAMS\RoRToolkit" +# CreateShortCut "$SMPROGRAMS\RoRToolkit\RoR Truck Editor.lnk" "$INSTDIR\terraineditor.bat" "" "$INSTDIR\ror.ico" + CreateShortCut "$SMPROGRAMS\RoRToolkit\RoR Toolkit.lnk" "$INSTDIR\rortoolkit.bat" "" "$INSTDIR\ror.ico" + CreateShortCut "$SMPROGRAMS\RoRToolkit\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" + CreateShortCut "$SMPROGRAMS\RoRToolkit\Uninstall.lnk" "$INSTDIR\uninst.exe" +SectionEnd + +Section -Post + WriteUninstaller "$INSTDIR\uninst.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" +SectionEnd + + +Function un.onUninstSuccess + HideWindow + MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was uninstalled successfully." +FunctionEnd + +Function un.onInit + MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Do you want to uninstall $(^Name)?" IDYES +2 + Abort +FunctionEnd + +Section Uninstall + Delete "$INSTDIR\${PRODUCT_NAME}.url" + Delete "$INSTDIR\uninst.exe" + #RMDir "/r" "$INSTDIR\media" + RMDir "/r" "$INSTDIR" + + RMDir "/r" "$SMPROGRAMS\RoRToolkit" + Delete "$STARTMENU.lnk" + RMDir "$INSTDIR" + + DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" + SetAutoClose false +SectionEnd \ No newline at end of file Added: trunk/devtools/setup/splash.bmp =================================================================== (Binary files differ) Property changes on: trunk/devtools/setup/splash.bmp ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/postinstall.py =================================================================== --- trunk/postinstall.py 2007-07-27 12:14:42 UTC (rev 131) +++ trunk/postinstall.py 2007-07-27 12:29:13 UTC (rev 132) @@ -18,7 +18,7 @@ basename = os.path.basename(filename) filenameonly, extension = os.path.splitext(basename) thispath = os.path.join(installpath, filenameonly+".py") - pythonpath = "%systemdrive%\python25\python.exe" + pythonpath = "%systemdrive%\python25\pythonw.exe" content = ["@%s %s %%*" % (pythonpath, thispath)] saveFile(filename, content) Deleted: trunk/readme-installer.txt =================================================================== --- trunk/readme-installer.txt 2007-07-27 12:14:42 UTC (rev 131) +++ trunk/readme-installer.txt 2007-07-27 12:29:13 UTC (rev 132) @@ -1,2 +0,0 @@ -have fun and report bugs and feature requests! :) -http://forum.rigsofrods.com \ No newline at end of file Deleted: trunk/setup.nsi =================================================================== --- trunk/setup.nsi 2007-07-27 12:14:42 UTC (rev 131) +++ trunk/setup.nsi 2007-07-27 12:29:13 UTC (rev 132) @@ -1,262 +0,0 @@ -; Script generated by the HM NIS Edit Script Wizard. - -; HM NIS Edit Wizard helper defines -!define PRODUCT_NAME "RoRToolkit" -!define PRODUCT_VERSION "r105" -!define PRODUCT_PUBLISHER "Thomas Fischer" -!define PRODUCT_WEB_SITE "http://wiki.rigsofrods.com/index.php?title=RoRToolkit" -!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" -!define PRODUCT_UNINST_ROOT_KEY "HKLM" - -!define PYTHONVERSION "2.5" -!define PYTHONDLURL "http://python.org/ftp/python/2.5.1/python-2.5.1.msi" -!define PYTHONDLFN "python-2.5.1.msi" - -SetCompressor lzma - -BrandingText "Rigs of Rods Toolkit" -InstProgressFlags smooth colored -XPStyle on -ShowInstDetails show -ShowUninstDetails show -SetDateSave on -#SetDatablockOptimize on -CRCCheck on -#SilentInstall normal - -; MUI 1.67 compatible ------ -!include "MUI.nsh" -!include "LogicLib.nsh" - -; MUI Settings -!define MUI_ABORTWARNING -!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install-blue.ico" -!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall-blue.ico" - -; Language Selection Dialog Settings -!define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" -!define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" -!define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language" - -; Welcome page -!insertmacro MUI_PAGE_WELCOME -; License page -!insertmacro MUI_PAGE_LICENSE "readme-installer.txt" -; Directory page -!insertmacro MUI_PAGE_DIRECTORY -; Instfiles page -!insertmacro MUI_PAGE_INSTFILES -; Finish page -;!define MUI_FINISHPAGE_RUN "$INSTDIR\rortoolkit.bat" -;!define MUI_FINISHPAGE_RUN_PARAMETERS "" -#!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\Example.file" - -!define MUI_FINISHPAGE_NOAUTOCLOSE -!define MUI_FINISHPAGE_RUN -!define MUI_FINISHPAGE_RUN_NOTCHECKED -!define MUI_FINISHPAGE_RUN_TEXT "Update and start (Can take some time)" -!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchPostInstallation" -!insertmacro MUI_PAGE_FINISH - -; Uninstaller pages -!insertmacro MUI_UNPAGE_INSTFILES - -; Language files -!insertmacro MUI_LANGUAGE "English" -!insertmacro MUI_LANGUAGE "French" -!insertmacro MUI_LANGUAGE "German" -!insertmacro MUI_LANGUAGE "Spanish" -!insertmacro MUI_LANGUAGE "Polish" -!insertmacro MUI_LANGUAGE "Russian" -!insertmacro MUI_LANGUAGE "Ukrainian" -!insertmacro MUI_LANGUAGE "Finnish" -!insertmacro MUI_LANGUAGE "Czech" -!insertmacro MUI_LANGUAGE "Italian" - -; Reserve files -!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS - -; MUI end ------ - -Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" -OutFile "RoRToolkitSetup.exe" -;InstallDir "$PROGRAMFILES\RoRToolkit" -InstallDir "c:\rortoolkit" -ShowInstDetails show -ShowUnInstDetails show - -Var /GLOBAL PYOK -Var /GLOBAL PYPATH -Var /GLOBAL PYINSTALLED - -Function DetectPython - ReadRegStr $R6 HKCU "SOFTWARE\Python\PythonCore\${PYTHONVERSION}\InstallPath" "" - ${If} $R6 == '' - ReadRegStr $R6 HKLM "SOFTWARE\Python\PythonCore\${PYTHONVERSION}\InstallPath" "" - ${If} $R6 == '' - Push "No registry key found" - Push "NOK" - Return - ${EndIf} - ${EndIf} - - ${If} ${FileExists} "$R6\python.exe" - Push "$R6" - Push "OK" - ${Else} - Push "No python.exe found" - Push "NOK" - ${EndIf} -FunctionEnd - -Function CheckForPython - Banner::show /NOUNLOAD "Checking for Python ${PYTHONVERSION} ..." - StrCpy $PYINSTALLED "" - Call DetectPython - Pop $PYOK - Pop $PYPATH - Banner::destroy - ${If} $PYOK == 'OK' - DetailPrint "Detected Python ${PYTHONVERSION}!" - Return - ${Else} - MessageBox MB_YESNOCANCEL|MB_ICONEXCLAMATION "The installer cannot find Python ${PYTHONVERSION}!$\r$\nWould you like the installer to download and install Python ${PYTHONVERSION} for you?" IDNO abort IDCANCEL abort - DetailPrint "Downloading ${PYTHONDLURL}..." - - NSISdl::download ${PYTHONDLURL} ${PYTHONDLFN} - Pop $R0 ;Get the return value - StrCmp $R0 "success" dlok abort - dlok: - DetailPrint "Installing Python ${PYTHONVERSION}..." - ExecWait '"msiExec" /q /i "${PYTHONDLFN}"' - StrCpy $PYINSTALLED "" - Call DetectPython - Pop $PYOK - Pop $PYPATH - ${If} $PYOK == 'OK' - DetailPrint "Detected Python ${PYTHONVERSION}!" - Return - ${Else} - MessageBox MB_OK "Python ${PYTHONVERSION} installation failed! Please install by hand and restart this installation!" - Abort - ${EndIf} - Return - ${EndIf} - Return - abort: - MessageBox MB_OK "Please install Python ${PYTHONVERSION} and retry this installation!" - Abort -FunctionEnd - -Function InstallDirectX - InitPluginsDir - File /oname=$PLUGINSDIR\dxwebsetup.exe "tools\dxwebsetup.exe" - Banner::show /NOUNLOAD "Installing lastest DirectX ..." - ExecWait '"$PLUGINSDIR\dxwebsetup.exe /Q"' - Delete $PLUGINSDIR\dxwebsetup.exe - Banner::destroy -FunctionEnd - - -Function InstallPyWin32 - InitPluginsDir - File /oname=$PLUGINSDIR\pywin32-setup.exe "tools\pywin32-setup.exe" - Banner::show /NOUNLOAD "Installing Python for Windows ..." - ExecWait '"$PLUGINSDIR\pywin32-setup.exe"' - Delete $PLUGINSDIR\pywin32-setup.exe - Banner::destroy -FunctionEnd - -Function InstallPyParsing - InitPluginsDir - File /oname=$PLUGINSDIR\pyparsing-1.4.6.win32.exe "tools\pyparsing-1.4.6.win32.exe" - Banner::show /NOUNLOAD "Installing PyParsing Python Module ..." - ExecWait '"$PLUGINSDIR\pyparsing-1.4.6.win32.exe"' - Delete $PLUGINSDIR\pyparsing-1.4.6.win32.exe - Banner::destroy -FunctionEnd - -Function InstallGraphViz - InitPluginsDir - File /oname=$PLUGINSDIR\graphviz-2.12.exe "tools\graphviz-2.12.exe" - Banner::show /NOUNLOAD "Installing Graphviz for Windows ..." - ExecWait '"$PLUGINSDIR\graphviz-2.12.exe"' - Delete $PLUGINSDIR\graphviz-2.12.exe - Banner::destroy -FunctionEnd - - -Function .onInit - InitPluginsDir - File /oname=$PLUGINSDIR\splash.bmp "splash.bmp" - advsplash::show 1000 1300 600 -1 $PLUGINSDIR\splash - Pop $0 - Delete $PLUGINSDIR\splash.bmp - !insertmacro MUI_LANGDLL_DISPLAY -FunctionEnd - -Section "Install Python" SEC01 - Call CheckForPython -SectionEnd - -Section "Install Tools" SEC02 - Call InstallDirectX - Call InstallPyWin32 - Call InstallPyParsing - Call InstallGraphViz -SectionEnd - -Section "Full Installation" SEC03 - SetOutPath "$INSTDIR" - SetOverwrite try - File "/r" "*" -SectionEnd - -Function "LaunchPostInstallation" - ExecWait '"$INSTDIR\update.bat"' - ExecWait '"$INSTDIR\rortoolkit.bat"' -FunctionEnd - -Section -AdditionalIcons - SetOutPath $INSTDIR - WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" - CreateDirectory "$SMPROGRAMS\RoRToolkit" -# CreateShortCut "$SMPROGRAMS\RoRToolkit\RoR Truck Editor.lnk" "$INSTDIR\terraineditor.bat" "" "$INSTDIR\ror.ico" - CreateShortCut "$SMPROGRAMS\RoRToolkit\RoR Toolkit.lnk" "$INSTDIR\rortoolkit.bat" "" "$INSTDIR\ror.ico" - CreateShortCut "$SMPROGRAMS\RoRToolkit\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" - CreateShortCut "$SMPROGRAMS\RoRToolkit\Uninstall.lnk" "$INSTDIR\uninst.exe" -SectionEnd - -Section -Post - WriteUninstaller "$INSTDIR\uninst.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" -SectionEnd - - -Function un.onUninstSuccess - HideWindow - MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was uninstalled successfully." -FunctionEnd - -Function un.onInit - MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Do you want to uninstall $(^Name)?" IDYES +2 - Abort -FunctionEnd - -Section Uninstall - Delete "$INSTDIR\${PRODUCT_NAME}.url" - Delete "$INSTDIR\uninst.exe" - #RMDir "/r" "$INSTDIR\media" - RMDir "/r" "$INSTDIR" - - RMDir "/r" "$SMPROGRAMS\RoRToolkit" - Delete "$STARTMENU.lnk" - RMDir "$INSTDIR" - - DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" - SetAutoClose false -SectionEnd \ No newline at end of file Deleted: trunk/splash.bmp =================================================================== (Binary files differ) Deleted: trunk/testunrar.py =================================================================== --- trunk/testunrar.py 2007-07-27 12:14:42 UTC (rev 131) +++ trunk/testunrar.py 2007-07-27 12:29:13 UTC (rev 132) @@ -1,24 +0,0 @@ -#Thomas Fischer 31/05/2007, th...@th... -import sys, os, os.path, shutil - -def main(): - sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib")) - - fn = 'MudFest_v1-isc-d.rar' - - import UnRAR - #extract all the files in test.rar - zipdir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "temp") - if os.path.isdir(zipdir): - shutil.rmtree(zipdir) - os.rmdir(zipdir) - os.mkdir(zipdir) - dst = os.path.join(zipdir, fn) - src = os.path.join(os.path.dirname(os.path.abspath(__file__)), fn) - shutil.copyfile(src, dst) - os.chdir(zipdir) - - UnRAR.Archive(fn).extract() - -if __name__=="__main__": - main() \ No newline at end of file Deleted: trunk/testunzip.py =================================================================== --- trunk/testunzip.py 2007-07-27 12:14:42 UTC (rev 131) +++ trunk/testunzip.py 2007-07-27 12:29:13 UTC (rev 132) @@ -1,18 +0,0 @@ -#Thomas Fischer 31/05/2007, th...@th... -import sys, os, os.path, shutil - -def main(): - sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib")) - - fn = 'daf_swapbody.zip' - - import UnZIP - - zipdir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "temp") - if os.path.isdir(zipdir): - shutil.rmtree(zipdir) - - UnZIP.unzip(fn, zipdir) - -if __name__=="__main__": - main() \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ror...@us...> - 2007-07-27 12:51:37
|
Revision: 133 http://roreditor.svn.sourceforge.net/roreditor/?rev=133&view=rev Author: rorthomas Date: 2007-07-27 05:51:32 -0700 (Fri, 27 Jul 2007) Log Message: ----------- * reordered directory structure Modified Paths: -------------- trunk/devtools/setup/setup.nsi trunk/rortoolkit.bat trunk/terraineditor.bat trunk/truckeditor.bat Added Paths: ----------- trunk/terraineditor.pyw trunk/tools/3rdparty/ trunk/tools/3rdparty/dxwebsetup.exe trunk/tools/3rdparty/graphviz-2.12.exe trunk/tools/3rdparty/pyparsing-1.4.6.win32.exe trunk/tools/3rdparty/pywin32-setup.exe trunk/tools/checkmods.bat trunk/tools/checkmods.py trunk/tools/depchecker.bat trunk/tools/depchecker.py trunk/tools/postinstall.bat trunk/tools/postinstall.py trunk/tools/update.bat trunk/tools/update.py trunk/tools/updaterestart.bat trunk/tools/updaterestart.py trunk/truckeditor.pyw Removed Paths: ------------- trunk/checkmods.bat trunk/checkmods.py trunk/depchecker.bat trunk/depchecker.py trunk/postinstall.bat trunk/postinstall.py trunk/rortoolkit.py trunk/terraineditor.py trunk/tools/dxwebsetup.exe trunk/tools/graphviz-2.12.exe trunk/tools/pyparsing-1.4.6.win32.exe trunk/tools/pywin32-setup.exe trunk/truckeditor.py trunk/update.bat trunk/update.py trunk/updaterestart.bat trunk/updaterestart.py Deleted: trunk/checkmods.bat =================================================================== --- trunk/checkmods.bat 2007-07-27 12:29:13 UTC (rev 132) +++ trunk/checkmods.bat 2007-07-27 12:51:32 UTC (rev 133) @@ -1,2 +0,0 @@ -...@po...t checkmods -@%systemdrive%\python25\python.exe checkmods.py %* \ No newline at end of file Deleted: trunk/checkmods.py =================================================================== --- trunk/checkmods.py 2007-07-27 12:29:13 UTC (rev 132) +++ trunk/checkmods.py 2007-07-27 12:51:32 UTC (rev 133) @@ -1,45 +0,0 @@ -import os.path, sys, installmod, time - -sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib")) -from ror.logger import log -from ror.settingsManager import getSettingsManager - -def getFiles(top): - fl = {} - for root, dirs, files in os.walk(top): - for f in files: - fn = os.path.join(root, f) - fl[fn] = {} - for fk in fl.keys(): - log().info("%10s %s" % ("", os.path.basename(fk))) - - log().info("found %d files!" % (len(fl.keys()))) - return fl - -def main(): - dir = sys.argv[1] - mode = sys.argv[2] - files = getFiles(dir) - valid={} - counter = 0 - countervalid = 0 - for file in files.keys(): - log().info("## %s (%d/%d)##################################" % (os.path.basename(file), counter, len(files))) - counter += 1 - mods = installmod.work(mode, file, verbose=(len(sys.argv)== 4 and sys.argv[3] == "--verbose"), dryrun=True) - if len(mods) == 0: - log().info("!!! INVALID: "+ os.path.basename(file)) - else: - log().info("VALID: "+ os.path.basename(file)) - valid[file] = mods - log().info("#######################################################################") - time.sleep(0.01) - log().info("===========================================================") - log().info("===== FINISHED found, valid mods:") - for f in valid.keys(): - log().info( f + str(valid[f])) - log().info("%d of %d files containing valid mods!" % (len(valid), len(files))) - - -if __name__=="__main__": - main() \ No newline at end of file Deleted: trunk/depchecker.bat =================================================================== --- trunk/depchecker.bat 2007-07-27 12:29:13 UTC (rev 132) +++ trunk/depchecker.bat 2007-07-27 12:51:32 UTC (rev 133) @@ -1,2 +0,0 @@ -...@po...t depchecker -@%systemdrive%\python25\python.exe depchecker.py %* \ No newline at end of file Deleted: trunk/depchecker.py =================================================================== --- trunk/depchecker.py 2007-07-27 12:29:13 UTC (rev 132) +++ trunk/depchecker.py 2007-07-27 12:51:32 UTC (rev 133) @@ -1,56 +0,0 @@ -#Thomas Fischer 31/05/2007, th...@th... -import sys, os, os.path - -def usage(): - print "usage: %s <path to inspect> <all or unused or missing>" % os.path.basename(sys.argv[0]) - print "for example: %s c:\\ror\\data missing" % os.path.basename(sys.argv[0]) - print " valid modes:" - print " 'all' displays all dependencies, inclusive fulfilled ones" - print " 'missing' displays only unfulfilled dependencies" - print " 'unused' displays resources that are not in use" - print " 'dtree <resourcename>' displays the dependency tree of the given resource name" - print " 'md5sum' creates the md5sums of all files" - sys.exit(0) - - -def main(): - """ - main method - """ - - sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib")) - import ror.settingsManager - path = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") - if not os.path.isfile(os.path.join(path,"RoR.exe")): - import ror.starter - ror.starter.startApp() - - # Import Psyco if available - try: - import psyco - psyco.full() - except ImportError: - pass - - if len(sys.argv) < 3: - usage() - path = sys.argv[1] - if path.strip() == "rordir": - path = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") - if not os.path.isdir(path): - print "%s is not a valid directory!" % path - usage() - if (len(sys.argv) == 3 and sys.argv[2] in ['all', 'missing', 'unused', 'record']) or (len(sys.argv) == 4 and sys.argv[2] in ['dtree']): - pass - else: - print "%s is not a valid mode, or incorrect arguments!" % sys.argv[2] - usage() - - import ror.depchecker - dependfilename = "" - if len(sys.argv) == 4 and sys.argv[2] in ['dtree'] and sys.argv[3].strip() != "": - dependfilename = sys.argv[3].strip() - ror.depchecker.RoRDepChecker(path , sys.argv[2], dependfilename) - -if __name__=="__main__": - main() \ No newline at end of file Modified: trunk/devtools/setup/setup.nsi =================================================================== --- trunk/devtools/setup/setup.nsi 2007-07-27 12:29:13 UTC (rev 132) +++ trunk/devtools/setup/setup.nsi 2007-07-27 12:51:32 UTC (rev 133) @@ -150,7 +150,7 @@ Function InstallDirectX InitPluginsDir - File /oname=$PLUGINSDIR\dxwebsetup.exe "tools\dxwebsetup.exe" + File /oname=$PLUGINSDIR\dxwebsetup.exe "..\..\tools\3rdparty\dxwebsetup.exe" Banner::show /NOUNLOAD "Installing lastest DirectX ..." ExecWait '"$PLUGINSDIR\dxwebsetup.exe /Q"' Delete $PLUGINSDIR\dxwebsetup.exe @@ -160,7 +160,7 @@ Function InstallPyWin32 InitPluginsDir - File /oname=$PLUGINSDIR\pywin32-setup.exe "tools\pywin32-setup.exe" + File /oname=$PLUGINSDIR\pywin32-setup.exe "..\..\tools\3rdparty\pywin32-setup.exe" Banner::show /NOUNLOAD "Installing Python for Windows ..." ExecWait '"$PLUGINSDIR\pywin32-setup.exe"' Delete $PLUGINSDIR\pywin32-setup.exe @@ -169,7 +169,7 @@ Function InstallPyParsing InitPluginsDir - File /oname=$PLUGINSDIR\pyparsing-1.4.6.win32.exe "tools\pyparsing-1.4.6.win32.exe" + File /oname=$PLUGINSDIR\pyparsing-1.4.6.win32.exe "..\..\tools\3rdparty\pyparsing-1.4.6.win32.exe" Banner::show /NOUNLOAD "Installing PyParsing Python Module ..." ExecWait '"$PLUGINSDIR\pyparsing-1.4.6.win32.exe"' Delete $PLUGINSDIR\pyparsing-1.4.6.win32.exe @@ -178,7 +178,7 @@ Function InstallGraphViz InitPluginsDir - File /oname=$PLUGINSDIR\graphviz-2.12.exe "tools\graphviz-2.12.exe" + File /oname=$PLUGINSDIR\graphviz-2.12.exe "..\..\tools\3rdparty\graphviz-2.12.exe" Banner::show /NOUNLOAD "Installing Graphviz for Windows ..." ExecWait '"$PLUGINSDIR\graphviz-2.12.exe"' Delete $PLUGINSDIR\graphviz-2.12.exe @@ -222,7 +222,7 @@ WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" CreateDirectory "$SMPROGRAMS\RoRToolkit" # CreateShortCut "$SMPROGRAMS\RoRToolkit\RoR Truck Editor.lnk" "$INSTDIR\terraineditor.bat" "" "$INSTDIR\ror.ico" - CreateShortCut "$SMPROGRAMS\RoRToolkit\RoR Toolkit.lnk" "$INSTDIR\rortoolkit.bat" "" "$INSTDIR\ror.ico" + CreateShortCut "$SMPROGRAMS\RoRToolkit\RoR Toolkit.lnk" "%systemdrive%\python25\pythonw.exe $INSTDIR\rortoolkit.pyw" "" "$INSTDIR\ror.ico" CreateShortCut "$SMPROGRAMS\RoRToolkit\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" CreateShortCut "$SMPROGRAMS\RoRToolkit\Uninstall.lnk" "$INSTDIR\uninst.exe" SectionEnd Deleted: trunk/postinstall.bat =================================================================== --- trunk/postinstall.bat 2007-07-27 12:29:13 UTC (rev 132) +++ trunk/postinstall.bat 2007-07-27 12:51:32 UTC (rev 133) @@ -1 +0,0 @@ -@%systemdrive%\python25\python.exe postinstall.py %* \ No newline at end of file Deleted: trunk/postinstall.py =================================================================== --- trunk/postinstall.py 2007-07-27 12:29:13 UTC (rev 132) +++ trunk/postinstall.py 2007-07-27 12:51:32 UTC (rev 133) @@ -1,34 +0,0 @@ -import sys, os, os.path, subprocess - -def getBATFiles(): - batfiles = [] - dir = os.path.dirname(os.path.abspath(__file__)) - for filename in os.listdir(dir): - filenameonly, extension = os.path.splitext(filename) - if extension.lower() == ".bat": - batfiles.append(os.path.join(dir, filename)) - return batfiles - -def saveFile(filename, lines): - f = open(filename, 'w') - f.writelines(lines) - f.close() - -def addPath(filename, installpath): - basename = os.path.basename(filename) - filenameonly, extension = os.path.splitext(basename) - thispath = os.path.join(installpath, filenameonly+".py") - pythonpath = "%systemdrive%\python25\pythonw.exe" - content = ["@%s %s %%*" % (pythonpath, thispath)] - saveFile(filename, content) - -def main(): - installpath = os.path.dirname(os.path.abspath(__file__)) - for batfile in getBATFiles(): - addPath(batfile, installpath) - print "Post-Installed all .bat files, please restart the program now!" - cmd = os.path.join(installpath, sys.argv[1]+".bat") - subprocess.Popen(cmd, shell = True) - -if __name__=="__main__": - main() Modified: trunk/rortoolkit.bat =================================================================== --- trunk/rortoolkit.bat 2007-07-27 12:29:13 UTC (rev 132) +++ trunk/rortoolkit.bat 2007-07-27 12:51:32 UTC (rev 133) @@ -1,2 +1,2 @@ -...@po...t rortoolkit -@%systemdrive%\python25\python.exe rortoolkit.py %* \ No newline at end of file +@tools\postinstall.bat rortoolkit +@%systemdrive%\python25\pythonw.exe rortoolkit.pyw %* \ No newline at end of file Deleted: trunk/rortoolkit.py =================================================================== --- trunk/rortoolkit.py 2007-07-27 12:29:13 UTC (rev 132) +++ trunk/rortoolkit.py 2007-07-27 12:51:32 UTC (rev 133) @@ -1,25 +0,0 @@ -#Thomas Fischer 31/05/2007, th...@th... -import sys, os, os.path - -def main(): - """ - main method - """ - - sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib")) - - # Import Psyco if available - try: - import psyco - #psyco.full() - #psyco.log() - #psyco.profile() - except ImportError: - pass - - import ror.starter - ror.starter.startApp() - - -if __name__=="__main__": - main() \ No newline at end of file Modified: trunk/terraineditor.bat =================================================================== --- trunk/terraineditor.bat 2007-07-27 12:29:13 UTC (rev 132) +++ trunk/terraineditor.bat 2007-07-27 12:51:32 UTC (rev 133) @@ -1,2 +1,2 @@ @postinstall.bat terraineditor -@%systemdrive%\python25\python.exe terraineditor.py %* \ No newline at end of file +@%systemdrive%\python25\pythonw.exe terraineditor.pyw %* \ No newline at end of file Deleted: trunk/terraineditor.py =================================================================== --- trunk/terraineditor.py 2007-07-27 12:29:13 UTC (rev 132) +++ trunk/terraineditor.py 2007-07-27 12:51:32 UTC (rev 133) @@ -1,28 +0,0 @@ -#Thomas Fischer 31/05/2007, th...@th... -import sys, os, os.path - -def main(): - """ - main method - """ - - sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib")) - import ror.settingsManager - path = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") - if not os.path.isfile(os.path.join(path,"RoR.exe")): - import ror.starter - ror.starter.startApp() - - # Import Psyco if available - try: - import psyco - psyco.full() - except ImportError: - pass - - import rorterraineditor.MainFrame - rorterraineditor.MainFrame.startApp() - - -if __name__=="__main__": - main() \ No newline at end of file Copied: trunk/terraineditor.pyw (from rev 131, trunk/terraineditor.py) =================================================================== --- trunk/terraineditor.pyw (rev 0) +++ trunk/terraineditor.pyw 2007-07-27 12:51:32 UTC (rev 133) @@ -0,0 +1,28 @@ +#Thomas Fischer 31/05/2007, th...@th... +import sys, os, os.path + +def main(): + """ + main method + """ + + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib")) + import ror.settingsManager + path = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") + if not os.path.isfile(os.path.join(path,"RoR.exe")): + import ror.starter + ror.starter.startApp() + + # Import Psyco if available + try: + import psyco + psyco.full() + except ImportError: + pass + + import rorterraineditor.MainFrame + rorterraineditor.MainFrame.startApp() + + +if __name__=="__main__": + main() \ No newline at end of file Added: trunk/tools/3rdparty/dxwebsetup.exe =================================================================== (Binary files differ) Property changes on: trunk/tools/3rdparty/dxwebsetup.exe ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/tools/3rdparty/graphviz-2.12.exe =================================================================== (Binary files differ) Property changes on: trunk/tools/3rdparty/graphviz-2.12.exe ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/tools/3rdparty/pyparsing-1.4.6.win32.exe =================================================================== (Binary files differ) Property changes on: trunk/tools/3rdparty/pyparsing-1.4.6.win32.exe ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/tools/3rdparty/pywin32-setup.exe =================================================================== (Binary files differ) Property changes on: trunk/tools/3rdparty/pywin32-setup.exe ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/tools/checkmods.bat =================================================================== --- trunk/tools/checkmods.bat (rev 0) +++ trunk/tools/checkmods.bat 2007-07-27 12:51:32 UTC (rev 133) @@ -0,0 +1,2 @@ +...@po...t checkmods +@%systemdrive%\python25\python.exe checkmods.py %* \ No newline at end of file Added: trunk/tools/checkmods.py =================================================================== --- trunk/tools/checkmods.py (rev 0) +++ trunk/tools/checkmods.py 2007-07-27 12:51:32 UTC (rev 133) @@ -0,0 +1,45 @@ +import os.path, sys, installmod, time + +sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib")) +from ror.logger import log +from ror.settingsManager import getSettingsManager + +def getFiles(top): + fl = {} + for root, dirs, files in os.walk(top): + for f in files: + fn = os.path.join(root, f) + fl[fn] = {} + for fk in fl.keys(): + log().info("%10s %s" % ("", os.path.basename(fk))) + + log().info("found %d files!" % (len(fl.keys()))) + return fl + +def main(): + dir = sys.argv[1] + mode = sys.argv[2] + files = getFiles(dir) + valid={} + counter = 0 + countervalid = 0 + for file in files.keys(): + log().info("## %s (%d/%d)##################################" % (os.path.basename(file), counter, len(files))) + counter += 1 + mods = installmod.work(mode, file, verbose=(len(sys.argv)== 4 and sys.argv[3] == "--verbose"), dryrun=True) + if len(mods) == 0: + log().info("!!! INVALID: "+ os.path.basename(file)) + else: + log().info("VALID: "+ os.path.basename(file)) + valid[file] = mods + log().info("#######################################################################") + time.sleep(0.01) + log().info("===========================================================") + log().info("===== FINISHED found, valid mods:") + for f in valid.keys(): + log().info( f + str(valid[f])) + log().info("%d of %d files containing valid mods!" % (len(valid), len(files))) + + +if __name__=="__main__": + main() \ No newline at end of file Added: trunk/tools/depchecker.bat =================================================================== --- trunk/tools/depchecker.bat (rev 0) +++ trunk/tools/depchecker.bat 2007-07-27 12:51:32 UTC (rev 133) @@ -0,0 +1,2 @@ +...@po...t depchecker +@%systemdrive%\python25\python.exe depchecker.py %* \ No newline at end of file Added: trunk/tools/depchecker.py =================================================================== --- trunk/tools/depchecker.py (rev 0) +++ trunk/tools/depchecker.py 2007-07-27 12:51:32 UTC (rev 133) @@ -0,0 +1,56 @@ +#Thomas Fischer 31/05/2007, th...@th... +import sys, os, os.path + +def usage(): + print "usage: %s <path to inspect> <all or unused or missing>" % os.path.basename(sys.argv[0]) + print "for example: %s c:\\ror\\data missing" % os.path.basename(sys.argv[0]) + print " valid modes:" + print " 'all' displays all dependencies, inclusive fulfilled ones" + print " 'missing' displays only unfulfilled dependencies" + print " 'unused' displays resources that are not in use" + print " 'dtree <resourcename>' displays the dependency tree of the given resource name" + print " 'md5sum' creates the md5sums of all files" + sys.exit(0) + + +def main(): + """ + main method + """ + + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib")) + import ror.settingsManager + path = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") + if not os.path.isfile(os.path.join(path,"RoR.exe")): + import ror.starter + ror.starter.startApp() + + # Import Psyco if available + try: + import psyco + psyco.full() + except ImportError: + pass + + if len(sys.argv) < 3: + usage() + path = sys.argv[1] + if path.strip() == "rordir": + path = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") + if not os.path.isdir(path): + print "%s is not a valid directory!" % path + usage() + if (len(sys.argv) == 3 and sys.argv[2] in ['all', 'missing', 'unused', 'record']) or (len(sys.argv) == 4 and sys.argv[2] in ['dtree']): + pass + else: + print "%s is not a valid mode, or incorrect arguments!" % sys.argv[2] + usage() + + import ror.depchecker + dependfilename = "" + if len(sys.argv) == 4 and sys.argv[2] in ['dtree'] and sys.argv[3].strip() != "": + dependfilename = sys.argv[3].strip() + ror.depchecker.RoRDepChecker(path , sys.argv[2], dependfilename) + +if __name__=="__main__": + main() \ No newline at end of file Deleted: trunk/tools/dxwebsetup.exe =================================================================== (Binary files differ) Deleted: trunk/tools/graphviz-2.12.exe =================================================================== (Binary files differ) Added: trunk/tools/postinstall.bat =================================================================== --- trunk/tools/postinstall.bat (rev 0) +++ trunk/tools/postinstall.bat 2007-07-27 12:51:32 UTC (rev 133) @@ -0,0 +1 @@ +@%systemdrive%\python25\python.exe postinstall.py %* \ No newline at end of file Added: trunk/tools/postinstall.py =================================================================== --- trunk/tools/postinstall.py (rev 0) +++ trunk/tools/postinstall.py 2007-07-27 12:51:32 UTC (rev 133) @@ -0,0 +1,36 @@ +import sys, os, os.path, subprocess + +def getBATFiles(): + batfiles = [] + dir = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")) + for filename in os.listdir(dir): + filenameonly, extension = os.path.splitext(filename) + if extension.lower() == ".bat": + batfiles.append(os.path.join(dir, filename)) + return batfiles + +def saveFile(filename, lines): + f = open(filename, 'w') + f.writelines(lines) + f.close() + +def addPath(filename, installpath): + basename = os.path.basename(filename) + filenameonly, extension = os.path.splitext(basename) + thispath = os.path.join(installpath, filenameonly+".py") + if not os.path.isfile(thispath): + thispath = os.path.join(installpath, filenameonly+".pyw") + pythonpath = "%systemdrive%\python25\pythonw.exe" + content = ["@%s %s %%*" % (pythonpath, thispath)] + saveFile(filename, content) + +def main(): + installpath = os.path.dirname(os.path.abspath(__file__)) + for batfile in getBATFiles(): + addPath(batfile, installpath) + print "Post-Installed all .bat files, please restart the program now!" + cmd = os.path.join(installpath, sys.argv[1]+".bat") + subprocess.Popen(cmd, shell = True) + +if __name__=="__main__": + main() Deleted: trunk/tools/pyparsing-1.4.6.win32.exe =================================================================== (Binary files differ) Deleted: trunk/tools/pywin32-setup.exe =================================================================== (Binary files differ) Added: trunk/tools/update.bat =================================================================== --- trunk/tools/update.bat (rev 0) +++ trunk/tools/update.bat 2007-07-27 12:51:32 UTC (rev 133) @@ -0,0 +1,2 @@ +...@po...t update +@%systemdrive%\python25\python.exe update.py %* \ No newline at end of file Added: trunk/tools/update.py =================================================================== --- trunk/tools/update.py (rev 0) +++ trunk/tools/update.py 2007-07-27 12:51:32 UTC (rev 133) @@ -0,0 +1,21 @@ +import sys, os, os.path + +def main(): + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib")) + guiVersion = True + if guiVersion: + import wx + + MainApp = wx.PySimpleApp(0) + wx.InitAllImageHandlers() #you may or may not need this + + import ror.svngui + gui = ror.svngui.svnUpdate(False) + del gui + else: + #non-gui version: + import ror.svn + ror.svn.run() + +if __name__=="__main__": + main() \ No newline at end of file Added: trunk/tools/updaterestart.bat =================================================================== --- trunk/tools/updaterestart.bat (rev 0) +++ trunk/tools/updaterestart.bat 2007-07-27 12:51:32 UTC (rev 133) @@ -0,0 +1,2 @@ +...@po...t updaterestart +@%systemdrive%\python25\python.exe updaterestart.py %* \ No newline at end of file Added: trunk/tools/updaterestart.py =================================================================== --- trunk/tools/updaterestart.py (rev 0) +++ trunk/tools/updaterestart.py 2007-07-27 12:51:32 UTC (rev 133) @@ -0,0 +1,12 @@ +import sys, os, os.path +from subprocess import Popen + +def main(): + import time + time.sleep(1) + path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "rortoolkit.bat") + p = Popen(path, shell = True) + sys.exit(0) + +if __name__=="__main__": + main() \ No newline at end of file Modified: trunk/truckeditor.bat =================================================================== --- trunk/truckeditor.bat 2007-07-27 12:29:13 UTC (rev 132) +++ trunk/truckeditor.bat 2007-07-27 12:51:32 UTC (rev 133) @@ -1,2 +1,2 @@ -...@po...t truckeditor -@%systemdrive%\python25\python.exe truckeditor.py %* \ No newline at end of file +@tools\postinstall.bat truckeditor +@%systemdrive%\python25\pythonw.exe truckeditor.pyw %* \ No newline at end of file Deleted: trunk/truckeditor.py =================================================================== --- trunk/truckeditor.py 2007-07-27 12:29:13 UTC (rev 132) +++ trunk/truckeditor.py 2007-07-27 12:51:32 UTC (rev 133) @@ -1,28 +0,0 @@ -#Thomas Fischer 31/05/2007, th...@th... -import sys, os, os.path - -def main(): - """ - main method - """ - - sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib")) - import ror.settingsManager - path = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") - if not os.path.isfile(os.path.join(path,"RoR.exe")): - import ror.starter - ror.starter.startApp() - - # Import Psyco if available - try: - import psyco - psyco.full() - except ImportError: - pass - - import rortruckeditor.MainFrame - rortruckeditor.MainFrame.startApp() - - -if __name__=="__main__": - main() \ No newline at end of file Copied: trunk/truckeditor.pyw (from rev 131, trunk/truckeditor.py) =================================================================== --- trunk/truckeditor.pyw (rev 0) +++ trunk/truckeditor.pyw 2007-07-27 12:51:32 UTC (rev 133) @@ -0,0 +1,28 @@ +#Thomas Fischer 31/05/2007, th...@th... +import sys, os, os.path + +def main(): + """ + main method + """ + + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib")) + import ror.settingsManager + path = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") + if not os.path.isfile(os.path.join(path,"RoR.exe")): + import ror.starter + ror.starter.startApp() + + # Import Psyco if available + try: + import psyco + psyco.full() + except ImportError: + pass + + import rortruckeditor.MainFrame + rortruckeditor.MainFrame.startApp() + + +if __name__=="__main__": + main() \ No newline at end of file Deleted: trunk/update.bat =================================================================== --- trunk/update.bat 2007-07-27 12:29:13 UTC (rev 132) +++ trunk/update.bat 2007-07-27 12:51:32 UTC (rev 133) @@ -1,2 +0,0 @@ -...@po...t update -@%systemdrive%\python25\python.exe update.py %* \ No newline at end of file Deleted: trunk/update.py =================================================================== --- trunk/update.py 2007-07-27 12:29:13 UTC (rev 132) +++ trunk/update.py 2007-07-27 12:51:32 UTC (rev 133) @@ -1,21 +0,0 @@ -import sys, os, os.path - -def main(): - sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib")) - guiVersion = True - if guiVersion: - import wx - - MainApp = wx.PySimpleApp(0) - wx.InitAllImageHandlers() #you may or may not need this - - import ror.svngui - gui = ror.svngui.svnUpdate(False) - del gui - else: - #non-gui version: - import ror.svn - ror.svn.run() - -if __name__=="__main__": - main() \ No newline at end of file Deleted: trunk/updaterestart.bat =================================================================== --- trunk/updaterestart.bat 2007-07-27 12:29:13 UTC (rev 132) +++ trunk/updaterestart.bat 2007-07-27 12:51:32 UTC (rev 133) @@ -1,2 +0,0 @@ -...@po...t updaterestart -@%systemdrive%\python25\python.exe updaterestart.py %* \ No newline at end of file Deleted: trunk/updaterestart.py =================================================================== --- trunk/updaterestart.py 2007-07-27 12:29:13 UTC (rev 132) +++ trunk/updaterestart.py 2007-07-27 12:51:32 UTC (rev 133) @@ -1,12 +0,0 @@ -import sys, os, os.path -from subprocess import Popen - -def main(): - import time - time.sleep(1) - path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "rortoolkit.bat") - p = Popen(path, shell = True) - sys.exit(0) - -if __name__=="__main__": - main() \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ror...@us...> - 2007-07-27 13:11:53
|
Revision: 135 http://roreditor.svn.sourceforge.net/roreditor/?rev=135&view=rev Author: rorthomas Date: 2007-07-27 06:11:52 -0700 (Fri, 27 Jul 2007) Log Message: ----------- * corrected postinstall * setup changed, but not finished yet Modified Paths: -------------- trunk/devtools/setup/setup.nsi trunk/tools/postinstall.py Modified: trunk/devtools/setup/setup.nsi =================================================================== --- trunk/devtools/setup/setup.nsi 2007-07-27 13:01:34 UTC (rev 134) +++ trunk/devtools/setup/setup.nsi 2007-07-27 13:11:52 UTC (rev 135) @@ -185,7 +185,16 @@ Banner::destroy FunctionEnd +Function InstallRoRRepoReg + InitPluginsDir + File /oname=$PLUGINSDIR\graphviz-2.12.exe "..\rorrepo.reg" + Banner::show /NOUNLOAD "Installing RoR Repository Protocol Extensions ..." + ExecWait '"regedit /s $PLUGINSDIR\rorrepo.reg"' + Delete $PLUGINSDIR\rorrepo.reg + Banner::destroy +FunctionEnd + Function .onInit InitPluginsDir File /oname=$PLUGINSDIR\..bmp "splash.bmp" @@ -204,6 +213,7 @@ Call InstallPyWin32 Call InstallPyParsing Call InstallGraphViz + Call InstallRoRRepoReg SectionEnd Section "Full Installation" SEC03 Modified: trunk/tools/postinstall.py =================================================================== --- trunk/tools/postinstall.py 2007-07-27 13:01:34 UTC (rev 134) +++ trunk/tools/postinstall.py 2007-07-27 13:11:52 UTC (rev 135) @@ -2,7 +2,7 @@ def getBATFiles(): batfiles = [] - dir = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")) + dir = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)))) for filename in os.listdir(dir): filenameonly, extension = os.path.splitext(filename) if extension.lower() == ".bat": This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ror...@us...> - 2007-07-27 18:27:44
|
Revision: 136 http://roreditor.svn.sourceforge.net/roreditor/?rev=136&view=rev Author: rorthomas Date: 2007-07-27 11:27:37 -0700 (Fri, 27 Jul 2007) Log Message: ----------- * removed all .bat files (too much troubles with it...) * fixed some bugs * improved setup Modified Paths: -------------- trunk/devtools/rorrepo.reg trunk/devtools/setup/setup.nsi trunk/lib/ror/starter.py trunk/lib/ror/svngui.py Removed Paths: ------------- trunk/tools/checkmods.bat trunk/tools/depchecker.bat trunk/tools/modtool.bat trunk/tools/postinstall.bat trunk/tools/postinstall.py trunk/tools/update.bat trunk/tools/updaterestart.bat Modified: trunk/devtools/rorrepo.reg =================================================================== --- trunk/devtools/rorrepo.reg 2007-07-27 13:11:52 UTC (rev 135) +++ trunk/devtools/rorrepo.reg 2007-07-27 18:27:37 UTC (rev 136) @@ -9,4 +9,4 @@ [HKEY_CLASSES_ROOT\RoRRepo\shell\open] [HKEY_CLASSES_ROOT\RoRRepo\shell\open\command] -@="\"D:\\projects\\sfproject\\svn\\trunk\\modtool.bat\" \"installrepo\" \"%1\"" \ No newline at end of file +@="\"c:\\roryoolkit\\tools\\modtool.py\" \"installrepo\" \"%1\"" \ No newline at end of file Modified: trunk/devtools/setup/setup.nsi =================================================================== --- trunk/devtools/setup/setup.nsi 2007-07-27 13:11:52 UTC (rev 135) +++ trunk/devtools/setup/setup.nsi 2007-07-27 18:27:37 UTC (rev 136) @@ -42,6 +42,8 @@ !insertmacro MUI_PAGE_WELCOME ; License page !insertmacro MUI_PAGE_LICENSE "readme-installer.txt" +; Components page +!insertmacro MUI_PAGE_COMPONENTS ; Directory page !insertmacro MUI_PAGE_DIRECTORY ; Instfiles page @@ -85,6 +87,7 @@ ShowInstDetails show ShowUnInstDetails show + Var /GLOBAL PYOK Var /GLOBAL PYPATH Var /GLOBAL PYINSTALLED @@ -186,18 +189,18 @@ FunctionEnd Function InstallRoRRepoReg - InitPluginsDir - File /oname=$PLUGINSDIR\graphviz-2.12.exe "..\rorrepo.reg" - Banner::show /NOUNLOAD "Installing RoR Repository Protocol Extensions ..." - ExecWait '"regedit /s $PLUGINSDIR\rorrepo.reg"' - Delete $PLUGINSDIR\rorrepo.reg - Banner::destroy + Banner::show /NOUNLOAD "Updating RoR Repository Protocol Extensions ..." + WriteRegStr HKCR "RoRRepo" "" "URL:RoRRepo Protocol" + WriteRegStr HKCR "RoRRepo" "URL Protocol" "" + WriteRegStr HKCR "RoRRepo\shell" "" "" + WriteRegStr HKCR "RoRRepo\shell\open" "" "" + WriteRegStr HKCR "RoRRepo\shell\open\command" "" "'$INSTPATH' 'installrepo' '%1'" + Banner::destroy FunctionEnd - Function .onInit InitPluginsDir - File /oname=$PLUGINSDIR\..bmp "splash.bmp" + File /oname=$PLUGINSDIR\splash.bmp "splash.bmp" advsplash::show 1000 1300 600 -1 $PLUGINSDIR\splash Pop $0 Delete $PLUGINSDIR\splash.bmp @@ -213,13 +216,13 @@ Call InstallPyWin32 Call InstallPyParsing Call InstallGraphViz - Call InstallRoRRepoReg + Call ChangeRoRRepoReg SectionEnd Section "Full Installation" SEC03 SetOutPath "$INSTDIR" SetOverwrite try - File "/r" "..\..\*" + File /r /x *.pyc /x .svn /x ..\..\tools\3rdparty /x ..\devtools ..\..\* SectionEnd Function "LaunchPostInstallation" @@ -269,4 +272,148 @@ DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" SetAutoClose false -SectionEnd \ No newline at end of file +SectionEnd + +# tools following: +Function AdvReplaceInFile +Exch $0 ;file to replace in +Exch +Exch $1 ;number to replace after +Exch +Exch 2 +Exch $2 ;replace and onwards +Exch 2 +Exch 3 +Exch $3 ;replace with +Exch 3 +Exch 4 +Exch $4 ;to replace +Exch 4 +Push $5 ;minus count +Push $6 ;universal +Push $7 ;end string +Push $8 ;left string +Push $9 ;right string +Push $R0 ;file1 +Push $R1 ;file2 +Push $R2 ;read +Push $R3 ;universal +Push $R4 ;count (onwards) +Push $R5 ;count (after) +Push $R6 ;temp file name + + GetTempFileName $R6 + FileOpen $R1 $0 r ;file to search in + FileOpen $R0 $R6 w ;temp file + StrLen $R3 $4 + StrCpy $R4 -1 + StrCpy $R5 -1 + +loop_read: + ClearErrors + FileRead $R1 $R2 ;read line + IfErrors exit + + StrCpy $5 0 + StrCpy $7 $R2 + +loop_filter: + IntOp $5 $5 - 1 + StrCpy $6 $7 $R3 $5 ;search + StrCmp $6 "" file_write2 + StrCmp $6 $4 0 loop_filter + +StrCpy $8 $7 $5 ;left part +IntOp $6 $5 + $R3 +IntCmp $6 0 is0 not0 +is0: +StrCpy $9 "" +Goto done +not0: +StrCpy $9 $7 "" $6 ;right part +done: +StrCpy $7 $8$3$9 ;re-join + +IntOp $R4 $R4 + 1 +StrCmp $2 all file_write1 +StrCmp $R4 $2 0 file_write2 +IntOp $R4 $R4 - 1 + +IntOp $R5 $R5 + 1 +StrCmp $1 all file_write1 +StrCmp $R5 $1 0 file_write1 +IntOp $R5 $R5 - 1 +Goto file_write2 + +file_write1: + FileWrite $R0 $7 ;write modified line +Goto loop_read + +file_write2: + FileWrite $R0 $R2 ;write unmodified line +Goto loop_read + +exit: + FileClose $R0 + FileClose $R1 + + SetDetailsPrint none + Delete $0 + Rename $R6 $0 + Delete $R6 + SetDetailsPrint both + +Pop $R6 +Pop $R5 +Pop $R4 +Pop $R3 +Pop $R2 +Pop $R1 +Pop $R0 +Pop $9 +Pop $8 +Pop $7 +Pop $6 +Pop $5 +Pop $0 +Pop $1 +Pop $2 +Pop $3 +Pop $4 +FunctionEnd + + +Function StrRep + Exch $R4 ; $R4 = Replacement String + Exch + Exch $R3 ; $R3 = String to replace (needle) + Exch 2 + Exch $R1 ; $R1 = String to do replacement in (haystack) + Push $R2 ; Replaced haystack + Push $R5 ; Len (needle) + Push $R6 ; len (haystack) + Push $R7 ; Scratch reg + StrCpy $R2 "" + StrLen $R5 $R3 + StrLen $R6 $R1 +loop: + StrCpy $R7 $R1 $R5 + StrCmp $R7 $R3 found + StrCpy $R7 $R1 1 ; - optimization can be removed if U know len needle=1 + StrCpy $R2 "$R2$R7" + StrCpy $R1 $R1 $R6 1 + StrCmp $R1 "" done loop +found: + StrCpy $R2 "$R2$R4" + StrCpy $R1 $R1 $R6 $R5 + StrCmp $R1 "" done loop +done: + StrCpy $R3 $R2 + Pop $R7 + Pop $R6 + Pop $R5 + Pop $R2 + Pop $R1 + Pop $R4 + Exch $R3 +FunctionEnd \ No newline at end of file Modified: trunk/lib/ror/starter.py =================================================================== --- trunk/lib/ror/starter.py 2007-07-27 13:11:52 UTC (rev 135) +++ trunk/lib/ror/starter.py 2007-07-27 18:27:37 UTC (rev 136) @@ -127,7 +127,7 @@ def OnDepGraph(self, event=None): import ror.depchecker ror.depchecker.RoRDepChecker(self.rordir, "all", "") - file = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..\\..\\graphs\\alldependencies.png")) + file = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "..", "graphs", "alldependencies.png")) #print file if os.path.isfile(file): dlg = wx.MessageDialog(self, "Graph successfully created:\n"+file, "Info", wx.OK | wx.ICON_INFORMATION) @@ -135,6 +135,10 @@ dlg.Destroy() cmd = file p = subprocess.Popen(cmd, shell = True, stderr = subprocess.PIPE, stdout = subprocess.PIPE) + else: + dlg = wx.MessageDialog(self, "Graph creation failed :(", "Info", wx.OK | wx.ICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() def OnUpdate(self, event=None): Modified: trunk/lib/ror/svngui.py =================================================================== --- trunk/lib/ror/svngui.py 2007-07-27 13:11:52 UTC (rev 135) +++ trunk/lib/ror/svngui.py 2007-07-27 18:27:37 UTC (rev 136) @@ -23,8 +23,7 @@ del self.pr def restart(self): - path = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)),"..\\..")) - path = os.path.join(path, "updaterestart.bat") + path = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "..", "tools", "updaterestart.py")) log().info("restarting ...") p = Popen(path, shell = True) sys.exit(0) Deleted: trunk/tools/checkmods.bat =================================================================== --- trunk/tools/checkmods.bat 2007-07-27 13:11:52 UTC (rev 135) +++ trunk/tools/checkmods.bat 2007-07-27 18:27:37 UTC (rev 136) @@ -1,2 +0,0 @@ -...@po...t checkmods -@%systemdrive%\python25\python.exe checkmods.py %* \ No newline at end of file Deleted: trunk/tools/depchecker.bat =================================================================== --- trunk/tools/depchecker.bat 2007-07-27 13:11:52 UTC (rev 135) +++ trunk/tools/depchecker.bat 2007-07-27 18:27:37 UTC (rev 136) @@ -1,2 +0,0 @@ -...@po...t depchecker -@%systemdrive%\python25\python.exe depchecker.py %* \ No newline at end of file Deleted: trunk/tools/modtool.bat =================================================================== --- trunk/tools/modtool.bat 2007-07-27 13:11:52 UTC (rev 135) +++ trunk/tools/modtool.bat 2007-07-27 18:27:37 UTC (rev 136) @@ -1,2 +0,0 @@ -...@po...t modtool -@%systemdrive%\python25\python.exe modtool.py %* \ No newline at end of file Deleted: trunk/tools/postinstall.bat =================================================================== --- trunk/tools/postinstall.bat 2007-07-27 13:11:52 UTC (rev 135) +++ trunk/tools/postinstall.bat 2007-07-27 18:27:37 UTC (rev 136) @@ -1 +0,0 @@ -@%systemdrive%\python25\python.exe postinstall.py %* \ No newline at end of file Deleted: trunk/tools/postinstall.py =================================================================== --- trunk/tools/postinstall.py 2007-07-27 13:11:52 UTC (rev 135) +++ trunk/tools/postinstall.py 2007-07-27 18:27:37 UTC (rev 136) @@ -1,40 +0,0 @@ -import sys, os, os.path, subprocess - -def getBATFiles(): - batfiles = [] - dir = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)))) - for filename in os.listdir(dir): - filenameonly, extension = os.path.splitext(filename) - if extension.lower() == ".bat": - batfiles.append(os.path.join(dir, filename)) - return batfiles - -def saveFile(filename, lines): - f = open(filename, 'w') - f.writelines(lines) - f.close() - -def addPath(filename, installpath): - basename = os.path.basename(filename) - filenameonly, extension = os.path.splitext(basename) - - # with console - thispath = os.path.join(installpath, filenameonly+".py") - pythonpath = "%systemdrive%\python25\python.exe" - if not os.path.isfile(thispath): - # without console - thispath = os.path.join(installpath, filenameonly+".pyw") - pythonpath = "%systemdrive%\python25\pythonw.exe" - content = ["@%s %s %%*" % (pythonpath, thispath)] - saveFile(filename, content) - -def main(): - installpath = os.path.dirname(os.path.abspath(__file__)) - for batfile in getBATFiles(): - addPath(batfile, installpath) - print "Post-Installed all .bat files, please restart the program now!" - cmd = os.path.join(installpath, sys.argv[1]+".bat") - subprocess.Popen(cmd, shell = True) - -if __name__=="__main__": - main() Deleted: trunk/tools/update.bat =================================================================== --- trunk/tools/update.bat 2007-07-27 13:11:52 UTC (rev 135) +++ trunk/tools/update.bat 2007-07-27 18:27:37 UTC (rev 136) @@ -1,2 +0,0 @@ -...@po...t update -@%systemdrive%\python25\python.exe update.py %* \ No newline at end of file Deleted: trunk/tools/updaterestart.bat =================================================================== --- trunk/tools/updaterestart.bat 2007-07-27 13:11:52 UTC (rev 135) +++ trunk/tools/updaterestart.bat 2007-07-27 18:27:37 UTC (rev 136) @@ -1,2 +0,0 @@ -...@po...t updaterestart -@%systemdrive%\python25\python.exe updaterestart.py %* \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ror...@us...> - 2007-07-28 15:37:04
|
Revision: 144 http://roreditor.svn.sourceforge.net/roreditor/?rev=144&view=rev Author: rorthomas Date: 2007-07-28 08:37:02 -0700 (Sat, 28 Jul 2007) Log Message: ----------- * added Mod Uninstaller Modified Paths: -------------- trunk/lib/ror/starter.py Added Paths: ----------- trunk/lib/ror/modgui.py trunk/tools/modgui.py Added: trunk/lib/ror/modgui.py =================================================================== --- trunk/lib/ror/modgui.py (rev 0) +++ trunk/lib/ror/modgui.py 2007-07-28 15:37:02 UTC (rev 144) @@ -0,0 +1,95 @@ +#Thomas Fischer 31/05/2007, th...@th... + +import sys, os, os.path, base64 + +sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")) + +from logger import log +from settingsManager import getSettingsManager +import modtool + +import wx, wx.html + +class ModGUI(wx.Frame): + def __init__(self, *args, **kwds): + kwds["style"] = wx.DEFAULT_FRAME_STYLE + wx.Frame.__init__(self, *args, **kwds) + + + self.mainPanel = wx.Panel(self, wx.ID_ANY) + + self.listbox = wx.ListBox(self.mainPanel, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, [], wx.LB_MULTIPLE) + self.chkDryRun = wx.CheckBox(self.mainPanel, wx.ID_ANY, "Dry run (only print out what would be done)") + self.btnNext = wx.Button(self.mainPanel, wx.ID_ANY, "Uninstall selected") + self.btnCancel = wx.Button(self.mainPanel, wx.ID_ANY, "Exit") + + self.Bind(wx.EVT_BUTTON, self.onUninstall , self.btnNext) + self.Bind(wx.EVT_BUTTON, self.onCancel , self.btnCancel) + + self.updateData() + + if len(self.data) == 0: + dlg = wx.MessageDialog(self, "No Mods found to uninstall!\n Uninstaller will now exit.", "Info", wx.OK | wx.ICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() + self.Close() + return + + + self.__set_properties() + self.__do_layout() + + def updateData(self): + self.data = modtool.ModTool().getRoRMods(False) + self.listbox.Set(self.data) + + + def onCancel(self, event=None): + self.Close() + + def onUninstall(self, event=None): + if len(self.listbox.GetSelections()) == 0: + dlg = wx.MessageDialog(self, "Please select a Mod to uninstall!", "Info", wx.OK | wx.ICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() + return + counter = 0 + dryrun = self.chkDryRun.GetValue() + log().info("starting uninstallation using the GUI") + for number in self.listbox.GetSelections(): + targetname = self.data[number] + log().info("trying to uninstall mod %s ..." % targetname) + modtool.ModTool().work("uninstall", targetname, False, dryrun) + counter += 1 + if not dryrun: + dlg = wx.MessageDialog(self, "%d Mods uninstalled!" % counter, "Info", wx.OK | wx.ICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() + log().info("finished uninstallation using the GUI.") + self.updateData() + + def __set_properties(self): + self.SetTitle("Mod Uninstaller") + self.SetSize((400, 400)) + + def __do_layout(self): + sizer_panel = wx.BoxSizer(wx.VERTICAL) + sizer_panel.Add(self.listbox, 1, wx.EXPAND, 0) + + sizer_panel.Add(self.chkDryRun, 0, wx.EXPAND, 0) + + sizer_buttons = wx.BoxSizer(wx.HORIZONTAL) + sizer_buttons.Add(self.btnNext, 1, wx.EXPAND, 0) + sizer_buttons.Add(self.btnCancel, 1, wx.EXPAND, 0) + + sizer_panel.Add(sizer_buttons, 0, wx.EXPAND, 0) + + self.mainPanel.SetSizer(sizer_panel) + + sizer_main = wx.BoxSizer(wx.VERTICAL) + sizer_main.Add(self.mainPanel, 1, wx.EXPAND, 0) + + self.SetAutoLayout(True) + self.SetSizer(sizer_main) + sizer_main.Fit(self) + sizer_main.SetSizeHints(self) Modified: trunk/lib/ror/starter.py =================================================================== --- trunk/lib/ror/starter.py 2007-07-28 11:29:50 UTC (rev 143) +++ trunk/lib/ror/starter.py 2007-07-28 15:37:02 UTC (rev 144) @@ -64,6 +64,9 @@ self.btnDepGraph = wx.Button(self.panel, wx.ID_ANY, "Create dependency Graph") self.Bind(wx.EVT_BUTTON, self.OnDepGraph, self.btnDepGraph) + self.btnModUninstaller = wx.Button(self.panel, wx.ID_ANY, "Mod Uninstaller") + self.Bind(wx.EVT_BUTTON, self.OnModUninstaller, self.btnModUninstaller) + self.btnRepClient = wx.Button(self.panel, wx.ID_ANY, "Open Repository Client") self.Bind(wx.EVT_BUTTON, self.OnRepClient, self.btnRepClient) @@ -140,7 +143,12 @@ dlg.ShowModal() dlg.Destroy() - + def OnModUninstaller(self, event=None): + import modgui + gui = modgui.ModGUI(None, -1, "") + gui.Show() + del gui + def OnUpdate(self, event=None): import svngui gui = svngui.svnUpdate() @@ -253,6 +261,7 @@ sizer_panel.Add(self.btnUpdate, 0, wx.EXPAND, 0) sizer_panel.Add(self.btnDepGraph, 0, wx.EXPAND, 0) sizer_panel.Add(self.btnRepClient, 0, wx.EXPAND, 0) + sizer_panel.Add(self.btnModUninstaller, 0, wx.EXPAND, 0) sizer_panel.Add(self.btnExit, 0, wx.EXPAND, 0) self.panel.SetSizer(sizer_panel) Added: trunk/tools/modgui.py =================================================================== --- trunk/tools/modgui.py (rev 0) +++ trunk/tools/modgui.py 2007-07-28 15:37:02 UTC (rev 144) @@ -0,0 +1,21 @@ +#Thomas Fischer 31/05/2007, th...@th... +import sys, os, os.path, shutil + +sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib")) + +from ror.logger import log +from ror.settingsManager import getSettingsManager +import ror.modgui +import wx + +def main(): + app = wx.PySimpleApp(0) + wx.InitAllImageHandlers() + frame_1 = ror.modgui.ModGUI(None, -1, "") + app.SetTopWindow(frame_1) + frame_1.Show() + app.MainLoop() + + +if __name__=="__main__": + main() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ror...@us...> - 2007-08-02 14:26:55
|
Revision: 149 http://roreditor.svn.sourceforge.net/roreditor/?rev=149&view=rev Author: rorthomas Date: 2007-08-02 07:26:50 -0700 (Thu, 02 Aug 2007) Log Message: ----------- * deleted unused mesh * added object browser and re-added functionality to add objects to the terrain * splitted up some code, to use it in more than one place (odefparser, simpletruckrep.) Modified Paths: -------------- trunk/lib/ror/rorcommon.py trunk/lib/rorterraineditor/MainFrame.py trunk/lib/rorterraineditor/RoRTerrainOgreWindow.py trunk/media/materials/mysimple.material Added Paths: ----------- trunk/lib/ror/SimpleTruckRepresentation.py trunk/lib/ror/odefparser.py trunk/lib/rorterraineditor/GUIObjectTree.py trunk/lib/rorterraineditor/GUIPreviewObject.py trunk/lib/rorterraineditor/RoRObjectPreviewOgreWindow.py Removed Paths: ------------- trunk/media/models/wheel.mesh Added: trunk/lib/ror/SimpleTruckRepresentation.py =================================================================== --- trunk/lib/ror/SimpleTruckRepresentation.py (rev 0) +++ trunk/lib/ror/SimpleTruckRepresentation.py 2007-08-02 14:26:50 UTC (rev 149) @@ -0,0 +1,105 @@ +#Thomas Fischer 31/05/2007, th...@th... +import wx, os, os.path, copy +import ogre.renderer.OGRE as ogre +from ror.truckparser import * +from ror.terrainparser import * +from wxogre.OgreManager import * +from wxogre.wxOgreWindow import * +from ror.rorcommon import * + +def createTruckMesh(sceneManager, fn, uuid): + if not os.path.isfile(fn): + #print "truck file not found: " + fn + log().error("truck file not found: %s" % fn) + return + p = rorparser() + p.parse(fn) + if not 'nodes' in p.tree.keys() or not 'beams' in p.tree.keys(): + log().error("error while processing truck file %s" % fn) + return False + + try: + myManualObject = sceneManager.createManualObject(str(uuid)+"manual") + + #myManualObjectMaterial = ogre.MaterialManager.getSingleton().create("manualmaterial"+truckname+str(self.randomcounter),"debugger"); + #myManualObjectMaterial.setReceiveShadows(False) + #myManualObjectMaterial.getTechnique(0).setLightingEnabled(True) + #myManualObjectMaterial.getTechnique(0).getPass(0).setDiffuse(0,0,1,0) + #myManualObjectMaterial.getTechnique(0).getPass(0).setAmbient(0,0,1) + #myManualObjectMaterial.getTechnique(0).getPass(0).setSelfIllumination(0,0,1) + #myManualObjectMaterial.getTechnique(0).getPass(0).setCullingMode(ogre.CULL_ANTICLOCKWISE) + + matname = "" + if fn[-4:].lower() == "load": + matname = 'mysimple/loadcolor' + elif fn[-5:].lower() == "truck": + matname = 'mysimple/truckcolor' + + myManualObject.useIndexes = True + myManualObject.estimateVertexCount(2000) + myManualObject.estimateIndexCount(2000) + + myManualObject.begin(matname+"grid", ogre.RenderOperation.OT_LINE_LIST) + for nodeobj in p.tree['nodes']: + if nodeobj.has_key('type'): + continue + node = nodeobj['data'] + myManualObject.position(float(node[1]),float(node[2]),float(node[3])) + for beamobj in p.tree['beams']: + if beamobj.has_key('type'): + continue + beam = beamobj['data'] + myManualObject.index(int(beam[0])) + myManualObject.index(int(beam[1])) + myManualObject.end() + myManualObject.begin(matname, ogre.RenderOperation.OT_TRIANGLE_LIST) + for nodeobj in p.tree['nodes']: + if nodeobj.has_key('type'): + continue + node = nodeobj['data'] + myManualObject.position(float(node[1]),float(node[2]),float(node[3])) + + #print len(p.tree['submeshgroups']) + if len(p.tree['submeshgroups']) > 0: + faces = [] + for smobj in p.tree['submeshgroups']: + for cabobj in smobj['cab']: + if cabobj.has_key('type'): + continue + cab = cabobj['data'] + #print "########face" + if cab != []: + try: + myManualObject.triangle(int(cab[0]),int(cab[1]),int(cab[2])) + except: + print "error with cab: " + str(cab) + pass + else: + print "truck has no faces!" + + myManualObject.end() + + try: + mesh = myManualObject.convertToMesh(str(uuid)+"manual") + entity = sceneManager.createEntity(str(uuid)+"entity", str(uuid)+"manual") + #trucknode = sceneManager.getRootSceneNode().createChildSceneNode() + myManualObjectNode = sceneManager.getRootSceneNode().createChildSceneNode(str(uuid)+"node") + myManualObjectNode.attachObject(myManualObject) + mesh = myManualObject.convertToMesh(str(uuid)+"manual") + entity = sceneManager.createEntity(str(uuid)+"entity", str(uuid)+"manual") + #trucknode = sceneManager.getRootSceneNode().createChildSceneNode() + myManualObjectNode = sceneManager.getRootSceneNode().createChildSceneNode(str(uuid)+"node") + myManualObjectNode.attachObject(entity) + myManualObjectNode.attachObject(myManualObject) + except: + mesh = None + entity = None + myManualObjectNode = sceneManager.getRootSceneNode().createChildSceneNode(str(uuid)+"node") + myManualObjectNode.attachObject(myManualObject) + + + return myManualObjectNode, entity, mesh + except Exception, err: + log().error("error while processing truck file %s" % fn) + log().error(str(err)) + return None, None, None \ No newline at end of file Added: trunk/lib/ror/odefparser.py =================================================================== --- trunk/lib/ror/odefparser.py (rev 0) +++ trunk/lib/ror/odefparser.py 2007-08-02 14:26:50 UTC (rev 149) @@ -0,0 +1,10 @@ +def loadOdef(odefFilename): + f=open(odefFilename, 'r') + content = f.readlines() + f.close() + meshname = content[0].strip() + scalearr = [1,1,1] + if len(content) > 2: + scalearr = content[1].split(",") + + return (meshname, float(scalearr[0]), float(scalearr[1]), float(scalearr[2])) Modified: trunk/lib/ror/rorcommon.py =================================================================== --- trunk/lib/ror/rorcommon.py 2007-08-01 12:09:55 UTC (rev 148) +++ trunk/lib/ror/rorcommon.py 2007-08-02 14:26:50 UTC (rev 149) @@ -14,9 +14,10 @@ dlg.ShowModal() dlg.Destroy() - - + +uniqueIDs = [] def randomID(num_bits=64): + global uniqueIDs """Return a string representing a bitfield num_bits long. Maximum artbitrarily set to 1025""" @@ -36,4 +37,11 @@ # The 2: removes the '0x' and :-1 removes the L rnd_id = hex(tmp_id)[2:-1] - return(rnd_id) \ No newline at end of file + + # this ensure that all ids are unique + if rnd_id in uniqueIDs: + rnd_id = randomID(num_bits) + else: + uniqueIDs.append(rnd_id) + + return rnd_id \ No newline at end of file Added: trunk/lib/rorterraineditor/GUIObjectTree.py =================================================================== --- trunk/lib/rorterraineditor/GUIObjectTree.py (rev 0) +++ trunk/lib/rorterraineditor/GUIObjectTree.py 2007-08-02 14:26:50 UTC (rev 149) @@ -0,0 +1,119 @@ +import sys, os, os.path + +import wx +import wx.grid +import wx.html +import wx.aui +import ror.settingsManager + +import cStringIO + +RORPATH = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") +DATADIR = os.path.join(RORPATH, "data") +TRUCKDIR = os.path.join(DATADIR, "trucks") +TERRAINDIR = os.path.join(DATADIR, "terrains") +OBJECTDIR = os.path.join(DATADIR, "objects") + +class RoRObjectTreeCtrl(wx.Panel): + def __init__(self, parent, frame): + wx.Panel.__init__(self, parent, wx.ID_ANY, wx.DefaultPosition, + wx.DefaultSize) + + self.parent = parent + self._frame = frame + + + vert = wx.BoxSizer(wx.VERTICAL) + + + tree = wx.TreeCtrl(self, -1, wx.Point(0, 0), wx.DefaultSize, wx.NO_BORDER) + + root = tree.AddRoot("Objects") + items = [] + + imglist = wx.ImageList(16, 16, True, 2) + imglist.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, wx.Size(16,16))) + imglist.Add(wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, wx.Size(16,16))) + tree.AssignImageList(imglist) + + trucks = self.getInstalledTrucks() + items.append(tree.AppendItem(root, "Trucks", 0)) + for truck in trucks: + truckname, extension = os.path.splitext(os.path.basename(truck)) + data = wx.TreeItemData() + data.SetData(truck) + tree.AppendItem(items[-1], truckname, 1, data=data) + + loads = self.getInstalledLoads() + items.append(tree.AppendItem(root, "Loads", 0)) + for load in loads: + loadname, extension = os.path.splitext(os.path.basename(load)) + data = wx.TreeItemData() + data.SetData(load) + tree.AppendItem(items[-1], loadname, 1, data=data) + + objects = self.getInstalledObjects() + items.append(tree.AppendItem(root, "Objects", 0)) + for object in objects: + objectname, extension = os.path.splitext(os.path.basename(object)) + data = wx.TreeItemData() + data.SetData(object) + tree.AppendItem(items[-1], objectname, 1, data=data) + + + tree.Expand(root) + vert.Add(tree, 1, wx.EXPAND, 5) + self.SetSizer(vert) + self.GetSizer().SetSizeHints(self) + + self.tree = tree + self.Bind(wx.EVT_TREE_SEL_CHANGED, self.onTreeSelectionChange, self.tree) + self.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.addStuff, self.tree) + + #self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.BeginDrag, self.tree) + + def addStuff(self, event): + fn = self.tree.GetItemData(event.GetItem()).GetData() + if fn is None: + return + self.parent.addStuff(fn) + #def BeginDrag(self, event): + # ''' + # EVT_TREE_BEGIN_DRAG handler. + # ''' + # self.dragItem = event.GetItem() + # fn = self.tree.GetItemData(event.GetItem()).GetData() + # if fn is None: + # return + # #event.Allow() + # wx.TreeEvent.Allow(event) + + def onTreeSelectionChange(self, event=None): + fn = self.tree.GetItemData(self.tree.GetSelection()).GetData() + if fn is None: + return + self.parent.previewObject(fn) + + def getInstalledTrucks(self): + files = [] + for filename in os.listdir(TRUCKDIR): + onlyfilename, extension = os.path.splitext(filename) + if extension.lower() == ".truck": + files.append(os.path.join(TRUCKDIR, filename)) + return files + + def getInstalledLoads(self): + files = [] + for filename in os.listdir(TRUCKDIR): + onlyfilename, extension = os.path.splitext(filename) + if extension.lower() == ".load": + files.append(os.path.join(TRUCKDIR, filename)) + return files + + def getInstalledObjects(self): + files = [] + for filename in os.listdir(OBJECTDIR): + onlyfilename, extension = os.path.splitext(filename) + if extension.lower() == ".odef": + files.append(os.path.join(OBJECTDIR, filename)) + return files \ No newline at end of file Added: trunk/lib/rorterraineditor/GUIPreviewObject.py =================================================================== --- trunk/lib/rorterraineditor/GUIPreviewObject.py (rev 0) +++ trunk/lib/rorterraineditor/GUIPreviewObject.py 2007-08-02 14:26:50 UTC (rev 149) @@ -0,0 +1,70 @@ +import sys, os, os.path + +import wx +import wx.grid +import wx.html +import wx.aui +import ror.settingsManager + +import cStringIO + +RORPATH = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") +DATADIR = os.path.join(RORPATH, "data") +TRUCKDIR = os.path.join(DATADIR, "trucks") +TERRAINDIR = os.path.join(DATADIR, "terrains") +OBJECTDIR = os.path.join(DATADIR, "objects") + +class RoRObjectTreeCtrl(wx.Panel): + def __init__(self, parent, frame): + wx.Panel.__init__(self, parent, wx.ID_ANY, wx.DefaultPosition, + wx.DefaultSize) + + self._frame = frame + + + vert = wx.BoxSizer(wx.VERTICAL) + + + tree = wx.TreeCtrl(self, -1, wx.Point(0, 0), wx.DefaultSize, wx.NO_BORDER) + + root = tree.AddRoot("Objects") + items = [] + + imglist = wx.ImageList(16, 16, True, 2) + imglist.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, wx.Size(16,16))) + imglist.Add(wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, wx.Size(16,16))) + tree.AssignImageList(imglist) + + trucks = self.getInstalledTrucks() + items.append(tree.AppendItem(root, "Trucks", 0)) + for truck in trucks: + truckname, extension = os.path.splitext(truck) + tree.AppendItem(items[-1], truckname, 1) + + objects = self.getInstalledObjects() + items.append(tree.AppendItem(root, "Objects", 0)) + for object in objects: + objectname, extension = os.path.splitext(object) + tree.AppendItem(items[-1], objectname, 1) + + + tree.Expand(root) + vert.Add(tree, 1, wx.EXPAND, 5) + self.SetSizer(vert) + self.GetSizer().SetSizeHints(self) + + def getInstalledTrucks(self): + files = [] + for filename in os.listdir(TRUCKDIR): + onlyfilename, extension = os.path.splitext(filename) + if extension.lower() == ".truck": + files.append(filename) + return files + + def getInstalledObjects(self): + files = [] + for filename in os.listdir(OBJECTDIR): + onlyfilename, extension = os.path.splitext(filename) + if extension.lower() == ".odef": + files.append(filename) + return files \ No newline at end of file Modified: trunk/lib/rorterraineditor/MainFrame.py =================================================================== --- trunk/lib/rorterraineditor/MainFrame.py 2007-08-01 12:09:55 UTC (rev 148) +++ trunk/lib/rorterraineditor/MainFrame.py 2007-08-02 14:26:50 UTC (rev 149) @@ -8,9 +8,12 @@ from ror.rorcommon import * from RoRTerrainOgreWindow import * +from RoRObjectPreviewOgreWindow import * from RoRTerrainSelectedObjectOgreWindow import * from RoRTerrainSelectedObjectTopOgreWindow import * +# GUI Tools: +from GUIObjectTree import * from MainFrame_Tools import * import wx @@ -34,14 +37,12 @@ ID_CreateOgre = wx.NewId() -ID_CreateTree = wx.NewId() ID_CreateGrid = wx.NewId() ID_CreateText = wx.NewId() ID_CreateHTML = wx.NewId() ID_CreateSizeReport = wx.NewId() ID_GridContent = wx.NewId() ID_TextContent = wx.NewId() -ID_TreeContent = wx.NewId() ID_HTMLContent = wx.NewId() ID_SizeReportContent = wx.NewId() ID_CreatePerspective = wx.NewId() @@ -86,14 +87,12 @@ view_menu.Append(ID_CreateOgre, "Create OgreWindow") view_menu.Append(ID_CreateText, "Create Text Control") view_menu.Append(ID_CreateHTML, "Create HTML Control") - view_menu.Append(ID_CreateTree, "Create Tree") view_menu.Append(ID_CreateGrid, "Create Grid") view_menu.Append(ID_CreateSizeReport, "Create Size Reporter") view_menu.AppendSeparator() view_menu.Append(ID_GridContent, "Use a Grid for the Content Pane") view_menu.Append(ID_TextContent, "Use a Text Control for the Content Pane") view_menu.Append(ID_HTMLContent, "Use an HTML Control for the Content Pane") - view_menu.Append(ID_TreeContent, "Use a Tree Control for the Content Pane") view_menu.Append(ID_SizeReportContent, "Use a Size Reporter for the Content Pane") @@ -137,38 +136,65 @@ tb1.SetToolBitmapSize(wx.Size(16,16)) tb1.AddLabelTool(ID_OpenTerrain, "Open Terrain", wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN)) tb1.AddLabelTool(ID_SaveTerrain, "Save Terrain", wx.ArtProvider_GetBitmap(wx.ART_FILE_SAVE)) + tb1.EnableTool(ID_SaveTerrain, False) tb1.AddLabelTool(ID_SaveTerrainAs, "Save Terrain as", wx.ArtProvider_GetBitmap(wx.ART_FILE_SAVE_AS)) + tb1.EnableTool(ID_SaveTerrainAs, False) tb1.AddSeparator() tb1.AddLabelTool(ID_AddObject, "Add Something", wx.ArtProvider_GetBitmap(wx.ART_NEW)) + tb1.EnableTool(ID_AddObject, False) tb1.AddLabelTool(ID_DeleteSelection, "Delete Selection", wx.ArtProvider_GetBitmap(wx.ART_DELETE)) + tb1.EnableTool(ID_DeleteSelection, False) tb1.AddSeparator() tb1.AddLabelTool(ID_CopySelection, "Copy Selection", wx.ArtProvider_GetBitmap(wx.ART_COPY)) + tb1.EnableTool(ID_CopySelection, False) tb1.AddLabelTool(ID_PasteSelection, "Paste Selection", wx.ArtProvider_GetBitmap(wx.ART_PASTE)) + tb1.EnableTool(ID_PasteSelection, False) tb1.AddSeparator() tb1.AddLabelTool(ID_UndoAction, "Undo last Action", wx.ArtProvider_GetBitmap(wx.ART_UNDO)) + tb1.EnableTool(ID_UndoAction, False) tb1.AddLabelTool(ID_RedoAction, "Redo last Undo", wx.ArtProvider_GetBitmap(wx.ART_REDO)) + tb1.EnableTool(ID_RedoAction, False) tb1.AddSeparator() tb1.AddLabelTool(ID_FindObject, "Find Object", wx.ArtProvider_GetBitmap(wx.ART_FIND)) + tb1.EnableTool(ID_FindObject, False) tb1.AddSeparator() tb1.AddLabelTool(ID_Quit, "Quit", wx.ArtProvider_GetBitmap(wx.ART_QUIT)) - tb1.EnableTool(ID_SaveTerrain, False) - tb1.EnableTool(ID_SaveTerrainAs, False) tb1.Realize() self.tb1 = tb1 + + self.rordir = getSettingsManager().getSetting("RigsOfRods", "BasePath") + + # add a bunch of panes - self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo(). - Name("test1").Caption("Pane Caption").Top(). - CloseButton(True).MaximizeButton(True)) + self.objectPreviewWindow = ObjectPreviewOgreWindow(self, wx.ID_ANY, rordir=self.rordir) + self._mgr.AddPane(self.objectPreviewWindow, wx.aui.AuiPaneInfo(). + Name("ogretest1"). + Caption("Object Preview"). + Left(). + MinSize(wx.Size(200,200)). + CloseButton(True). + MaximizeButton(False)) + self._mgr.AddPane(SettingsPanel(self, self), wx.aui.AuiPaneInfo(). - Name("settings").Caption("Dock Manager Settings"). - Dockable(False).Float().Hide().CloseButton(True).MaximizeButton(True)) + Name("settings"). + Caption("Dock Manager Settings"). + Dockable(False). + Float(). + Fixed(). + Hide(). + CloseButton(True). + MaximizeButton(True)) + + self._mgr.AddPane(RoRObjectTreeCtrl(self, self), wx.aui.AuiPaneInfo(). + Caption("Object Tree"). + MinSize(wx.Size(200,100)). + Left(). + CloseButton(True). + MaximizeButton(True)) # create some center panes - self._mgr.AddPane(self.CreateTreeCtrl(), wx.aui.AuiPaneInfo().Name("tree_content"). - CenterPane().Hide()) - self._mgr.AddPane(self.CreateSizeReportCtrl(), wx.aui.AuiPaneInfo().Name("sizereport_content"). CenterPane().Hide()) @@ -191,7 +217,7 @@ self.guitimer.Start(200) - self.rordir = getSettingsManager().getSetting("RigsOfRods", "BasePath") + self.terrainOgreWin = RoRTerrainOgreWindow(self, wx.ID_ANY, rordir=self.rordir) self._mgr.AddPane(self.terrainOgreWin, wx.aui.AuiPaneInfo().Name("ogre_content"). CenterPane()) @@ -211,9 +237,9 @@ # all - perspective all_panes = self._mgr.GetAllPanes() - for ii in xrange(len(all_panes)): - if not all_panes[ii].IsToolbar(): - all_panes[ii].Hide() + #for ii in xrange(len(all_panes)): + # if not all_panes[ii].IsToolbar(): + # all_panes[ii].Hide() self._mgr.GetPane("ogre_content").Show() perspective_default = self._mgr.SavePerspective() @@ -238,7 +264,6 @@ self.Bind(wx.EVT_MENU, self.OnCreateOgre, id=ID_CreateOgre) - self.Bind(wx.EVT_MENU, self.OnCreateTree, id=ID_CreateTree) self.Bind(wx.EVT_MENU, self.OnCreateGrid, id=ID_CreateGrid) self.Bind(wx.EVT_MENU, self.OnCreateText, id=ID_CreateText) self.Bind(wx.EVT_MENU, self.OnCreateHTML, id=ID_CreateHTML) @@ -249,7 +274,6 @@ self.Bind(wx.EVT_MENU, self.OnSettings, id=ID_Settings) self.Bind(wx.EVT_MENU, self.OnChangeContentPane, id=ID_GridContent) - self.Bind(wx.EVT_MENU, self.OnChangeContentPane, id=ID_TreeContent) self.Bind(wx.EVT_MENU, self.OnChangeContentPane, id=ID_TextContent) self.Bind(wx.EVT_MENU, self.OnChangeContentPane, id=ID_SizeReportContent) self.Bind(wx.EVT_MENU, self.OnChangeContentPane, id=ID_HTMLContent) @@ -259,6 +283,28 @@ self.Bind(wx.EVT_MENU_RANGE, self.OnRestorePerspective, id=ID_FirstPerspective, id2=ID_FirstPerspective+1000) + def addStuff(self, filename): + try: + onlyfilename, extension = os.path.splitext(os.path.basename(filename)) + if extension.lower() in ['.truck', '.load']: + if not self.terrainOgreWin.addTruckToTerrain(truckFilename=filename): + dlg = wx.MessageDialog(self, "You must select a position on the ground first!", "error", wx.OK | wx.ICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() + elif extension.lower() in ['.odef']: + if not self.terrainOgreWin.addObjectToTerrain(odefFilename=filename): + dlg = wx.MessageDialog(self, "You must select a position on the ground first!", "error", wx.OK | wx.ICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() + except: + pass + + def previewObject(self, filename): + try: + self.objectPreviewWindow.loadFile(filename) + except: + pass + def updateObjPosRot(self, event=None): self.statusbar.SetStatusText(self.terrainOgreWin.currentStatusMsg, 1) if self.terrainOgreWin.terrain is None: @@ -297,6 +343,13 @@ if res == wx.ID_OK: filename = dialog.GetPath() self.terrainOgreWin.LoadTerrain(filename) + self.tb1.EnableTool(ID_AddObject, True) + self.tb1.EnableTool(ID_DeleteSelection, True) + self.tb1.EnableTool(ID_CopySelection, True) + self.tb1.EnableTool(ID_PasteSelection, True) + self.tb1.EnableTool(ID_UndoAction, True) + self.tb1.EnableTool(ID_RedoAction, True) + self.tb1.EnableTool(ID_FindObject, True) self.tb1.EnableTool(ID_SaveTerrain, True) self.tb1.EnableTool(ID_SaveTerrainAs, True) @@ -322,7 +375,7 @@ def OnPaneClose(self, event): caption = event.GetPane().caption - if caption in ["Tree Pane", "Dock Manager Settings", "Fixed Pane"]: + if caption in ["Dock Manager Settings", "Fixed Pane"]: msg = "Are You Sure You Want To Close This Pane?" dlg = wx.MessageDialog(self, msg, "AUI Question", wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION) @@ -410,14 +463,6 @@ return wx.Point(pt.x + x, pt.y + x) - def OnCreateTree(self, event): - self._mgr.AddPane(self.CreateTreeCtrl(), wx.aui.AuiPaneInfo(). - Caption("Tree Control"). - Float().FloatingPosition(self.GetStartPosition()). - FloatingSize(wx.Size(150, 300)).CloseButton(True).MaximizeButton(True)) - self._mgr.Update() - - def OnCreateGrid(self, event): self._mgr.AddPane(self.CreateGrid(), wx.aui.AuiPaneInfo(). Caption("Grid"). @@ -454,7 +499,6 @@ self._mgr.GetPane("grid_content").Show(event.GetId() == ID_GridContent) self._mgr.GetPane("text_content").Show(event.GetId() == ID_TextContent) - self._mgr.GetPane("tree_content").Show(event.GetId() == ID_TreeContent) self._mgr.GetPane("sizereport_content").Show(event.GetId() == ID_SizeReportContent) self._mgr.GetPane("html_content").Show(event.GetId() == ID_HTMLContent) self._mgr.Update() @@ -463,12 +507,12 @@ self._mgr.AddPane(self.CreateOgreCtrl(), wx.aui.AuiPaneInfo(). Caption("Ogre Window"). Float().FloatingPosition(self.GetStartPosition()). - CloseButton(True).MaximizeButton(True)) + CloseButton(True).MaximizeButton(False)) self._mgr.Update() def CreateOgreCtrl(self): - return RoRTerrainOgreWindow(self, wx.ID_ANY, scenemanager=self.ogrewin.sceneManager) + return RoRTerrainOgreWindow(self, wx.ID_ANY, scenemanager=self.terrainOgreWin.sceneManager) def CreateTextCtrl(self): text = ("This is text box %d")%(self.n + 1) @@ -483,39 +527,6 @@ grid.CreateGrid(50, 20) return grid - - def CreateTreeCtrl(self): - tree = wx.TreeCtrl(self, -1, wx.Point(0, 0), wx.Size(160, 250), - wx.TR_DEFAULT_STYLE | wx.NO_BORDER) - - root = tree.AddRoot("AUI Project") - items = [] - - imglist = wx.ImageList(16, 16, True, 2) - imglist.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, wx.Size(16,16))) - imglist.Add(wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, wx.Size(16,16))) - tree.AssignImageList(imglist) - - items.append(tree.AppendItem(root, "Item 1", 0)) - items.append(tree.AppendItem(root, "Item 2", 0)) - items.append(tree.AppendItem(root, "Item 3", 0)) - items.append(tree.AppendItem(root, "Item 4", 0)) - items.append(tree.AppendItem(root, "Item 5", 0)) - - for ii in xrange(len(items)): - - id = items[ii] - tree.AppendItem(id, "Subitem 1", 1) - tree.AppendItem(id, "Subitem 2", 1) - tree.AppendItem(id, "Subitem 3", 1) - tree.AppendItem(id, "Subitem 4", 1) - tree.AppendItem(id, "Subitem 5", 1) - - tree.Expand(root) - - return tree - - def CreateSizeReportCtrl(self, width=80, height=80): ctrl = SizeReportCtrl(self, -1, wx.DefaultPosition, wx.Size(width, height), self._mgr) Added: trunk/lib/rorterraineditor/RoRObjectPreviewOgreWindow.py =================================================================== --- trunk/lib/rorterraineditor/RoRObjectPreviewOgreWindow.py (rev 0) +++ trunk/lib/rorterraineditor/RoRObjectPreviewOgreWindow.py 2007-08-02 14:26:50 UTC (rev 149) @@ -0,0 +1,211 @@ +#Thomas Fischer 31/05/2007, th...@th... +import wx, math +import ogre.renderer.OGRE as ogre +from wxogre.OgreManager import * +from wxogre.wxOgreWindow import * +from ror.SimpleTruckRepresentation import * +from ror.odefparser import * +from ror.rorcommon import * + + +class TreeDropTarget(wx.PyDropTarget): + def __init__(self, window): + wx.PyDropTarget.__init__(self) + self.do = wx.FileDataObject() + self.SetDataObject(self.do) + + def OnEnter(self, x, y, d): + print "OnEnter: %d, %d, %d\n" % (x, y, d) + return wx.DragCopy + + def OnDragOver(self, x, y, d): + print "OnDragOver: %d, %d, %d\n" % (x, y, d) + return wx.DragCopy + + def OnLeave(self): + print "OnLeave\n" + + def OnDrop(self, x, y): + print "OnDrop: %d %d\n" % (x, y) + return True + + def OnData(self, x, y, d): + print "OnData: %d, %d, %d\n" % (x, y, d) + self.GetData() + print "%s\n" % self.do.GetFilenames() + return d + +class ObjectPreviewOgreWindow(wxOgreWindow): + def __init__(self, parent, ID, size = wx.Size(200,200), rordir = "", **kwargs): + self.rordir = rordir + self.parent = parent + self.objnode = None + self.objentity = None + self.camalpha = 0 + self.radius = 40 + self.dragging = False + wxOgreWindow.__init__(self, parent, ID, size = size, **kwargs) + droptarget = TreeDropTarget(self) + self.SetDropTarget(droptarget) + + + def SceneInitialisation(self): + addresources = [self.rordir+"\\data\\terrains",self.rordir+"\\data\\trucks",self.rordir+"\\data\\objects"] + # only init things in the main window, not in shared ones! + # setup resources + for r in addresources: + ogre.ResourceGroupManager.getSingleton().addResourceLocation(r, "FileSystem", "General", False) + + ogre.ResourceGroupManager.getSingleton().addResourceLocation("media/packs/OgreCore.zip", "Zip", "Bootstrap", False) + ogre.ResourceGroupManager.getSingleton().addResourceLocation("media", "FileSystem", "General", False) + ogre.ResourceGroupManager.getSingleton().addResourceLocation("media/materials", "FileSystem", "General", False) + ogre.ResourceGroupManager.getSingleton().addResourceLocation("media/models", "FileSystem", "General", False) + ogre.ResourceGroupManager.getSingleton().initialiseAllResourceGroups() + + #get the scenemanager + self.sceneManager = getOgreManager().createSceneManager(ogre.ST_GENERIC) + + # create a camera + self.camera = self.sceneManager.createCamera(str(randomID())+'Camera') + self.camera.lookAt(ogre.Vector3(0, 0, 0)) + self.camera.setPosition(ogre.Vector3(0, 0, 100)) + self.camera.nearClipDistance = 0.1 + self.camera.setAutoAspectRatio(True) + + # create the Viewport" + self.viewport = self.renderWindow.addViewport(self.camera, 0, 0.0, 0.0, 1.0, 1.0) + self.viewport.backgroundColour = ogre.ColourValue(0, 0, 0) + + # bind mouse and keyboard + d=10.0 #displacement for key strokes + self.ControlKeyDict={wx.WXK_LEFT:ogre.Vector3(-d,0.0,0.0), + wx.WXK_RIGHT:ogre.Vector3(d,0.0,0.0), + wx.WXK_UP:ogre.Vector3(0.0,0.0,-d), + wx.WXK_DOWN:ogre.Vector3(0.0,0.0,d), + wx.WXK_PAGEUP:ogre.Vector3(0.0,d,0.0), + wx.WXK_PAGEDOWN:ogre.Vector3(0.0,-d,0.0)} + self.Bind(wx.EVT_KEY_DOWN, self.onKeyDown) + self.Bind(wx.EVT_MOUSE_EVENTS, self.onMouseEvent) + + #create objects + self.populateScene() + + def loadFile(self, filename): + self.filename = filename + filenameonly, extension = os.path.splitext(filename) + if extension.lower() in [".truck", ".load"]: + self.free() + uuid = randomID() + self.objnode, self.objentity, manualobject = createTruckMesh(self.sceneManager, filename, uuid) + elif extension.lower() in [".odef"]: + self.free() + uuid = randomID() + self.loadodef(filename, uuid) + + def loadodef(self, filename, uuid): + try: + (meshname, sx, sy, sz) = loadOdef(filename) + except Exception, err: + log().error("error while processing odef file %s" % odefFilename) + log().error(str(err)) + return + # create mesh + print meshname, sx, sy, sz + self.objnode = self.sceneManager.getRootSceneNode().createChildSceneNode(uuid+"objnode") + self.objentity = self.sceneManager.createEntity(uuid+'objentity', meshname) + self.objnode.attachObject(self.objentity) + self.objnode.rotate(ogre.Vector3.UNIT_X, ogre.Degree(-90),relativeTo=ogre.Node.TransformSpace.TS_WORLD) + #self.objnode.setPosition(0,0,0) + if not sx is None: + self.objnode.setScale(sx, sy, sz) + + def free(self): + try: + self.sceneManager.destroyAllManualObjects() + except: + pass + try: + self.objnode.detachAllObjects() + self.sceneManager.destroySceneNode(self.objnode.getName()) + except: + pass + try: + self.sceneManager.destroyEntity(self.objentity) + except: + pass + + def populateScene(self): + self.sceneManager.AmbientLight = ogre.ColourValue(0.7, 0.7, 0.7 ) + self.sceneManager.setShadowTechnique(ogre.ShadowTechnique.SHADOWTYPE_STENCIL_ADDITIVE); + self.sceneManager.setSkyDome(True, 'mysimple/terraineditor/previewwindowsky', 4.0, 8.0) + + self.MainLight = self.sceneManager.createLight('MainLight') + self.MainLight.setPosition (ogre.Vector3(20, 80, 130)) + + # add some fog + self.sceneManager.setFog(ogre.FOG_EXP, ogre.ColourValue.White, 0.0002) + + # create a floor Mesh + plane = ogre.Plane() + plane.normal = ogre.Vector3(0, 1, 0) + plane.d = 200 + uuid = str(randomID()) + ogre.MeshManager.getSingleton().createPlane(uuid + 'FloorPlane', "General", plane, 200000.0, 200000.0, + 20, 20, True, 1, 50.0, 50.0,ogre.Vector3(0, 0, 1), + ogre.HardwareBuffer.HBU_STATIC_WRITE_ONLY, + ogre.HardwareBuffer.HBU_STATIC_WRITE_ONLY, + True, True) + + # create floor entity + entity = self.sceneManager.createEntity(uuid+'floor', uuid + 'FloorPlane') + entity.setMaterialName('mysimple/terraineditor/previewwindowfloor') + self.sceneManager.getRootSceneNode().createChildSceneNode().attachObject(entity) + + def updateCamera(self): + if not self.objnode is None: + if self.objentity is None: + self.radius = 15 + height = 2 + else: + self.radius = self.objentity.getBoundingRadius() * 2 + height = self.objentity.getBoundingBox().getMaximum().z + pos = self.objnode.getPosition() + ogre.Vector3(0, height*0.4, 0) + dx = math.cos(self.camalpha) * self.radius + dy = math.sin(self.camalpha) * self.radius + self.camera.setPosition(pos - ogre.Vector3(dx, -5, dy)) + self.camera.lookAt(pos + ogre.Vector3(0, height / 2, 0)) + if self.dragging == False: + self.camalpha += math.pi / 720 + if self.camalpha >= 360: + self.camalpha -= 360 + + + def OnFrameStarted(self): + self.updateCamera() + wxOgreWindow.OnFrameStarted(self) + + def onKeyDown(self,event): + validMove = self.ControlKeyDict.get(event.m_keyCode, False) + if validMove: + pos = self.camera.getPosition() + pos += validMove + self.camera.setPosition(pos) + event.Skip() + + def onMouseEvent(self, event): + self.SetFocus() #Gives Keyboard focus to the window + + if event.RightDown(): #Precedes dragging + self.StartDragX, self.StartDragY = event.GetPosition() #saves position of initial click + elif event.Dragging() and event.RightIsDown(): #Dragging with RMB + x,y = event.GetPosition() + dx = self.StartDragX - x + dy = self.StartDragY - y + self.StartDragX, self.StartDragY = x, y + self.camalpha -= float(dx) * (math.pi / 720) + self.updateCamera() + self.dragging = True + else: + self.dragging = False + event.Skip() + \ No newline at end of file Modified: trunk/lib/rorterraineditor/RoRTerrainOgreWindow.py =================================================================== --- trunk/lib/rorterraineditor/RoRTerrainOgreWindow.py 2007-08-01 12:09:55 UTC (rev 148) +++ trunk/lib/rorterraineditor/RoRTerrainOgreWindow.py 2007-08-02 14:26:50 UTC (rev 149) @@ -3,11 +3,12 @@ import ogre.renderer.OGRE as ogre from ror.truckparser import * from ror.terrainparser import * +from ror.odefparser import * from wxogre.OgreManager import * from wxogre.wxOgreWindow import * from ror.rorcommon import * +from ror.SimpleTruckRepresentation import * - ADDEDBY = "//added by the terrrain editor:\n" SHIFT_SPEED_FACTOR = 20 SLOW_DOWN_FACTOR = 0.75 @@ -26,6 +27,33 @@ Position = None Rotation = None +class MyDropTarget(wx.PyDropTarget): + def __init__(self, window): + wx.PyDropTarget.__init__(self) + self.do = wx.FileDataObject() + self.SetDataObject(self.do) + + def OnEnter(self, x, y, d): + print "OnEnter: %d, %d, %d\n" % (x, y, d) + return wx.DragCopy + + def OnDragOver(self, x, y, d): + print "OnDragOver: %d, %d, %d\n" % (x, y, d) + return wx.DragCopy + + def OnLeave(self): + print "OnLeave\n" + + def OnDrop(self, x, y): + print "OnDrop: %d %d\n" % (x, y) + return True + + def OnData(self, x, y, d): + print "OnData: %d, %d, %d\n" % (x, y, d) + self.GetData() + print "%s\n" % self.do.GetFilenames() + return d + class RoRTerrainOgreWindow(wxOgreWindow): terrain = None @@ -65,8 +93,9 @@ self.size = size self.kwargs = kwargs self.ID = ID - wxOgreWindow.__init__(self, self.parent, self.ID, size = self.size, **self.kwargs) + myDrop = MyDropTarget(self) + self.SetDropTarget(myDrop) def CameraLandCollision(self, value): self.cameralandcollisionenabled = value @@ -417,21 +446,7 @@ log().error("Error while adding an object to the terrain:") log().error(str(err)) - self.currentStatusMsg = "Terrain loaded" - - - def loadOdef(self, odefFilename): - f=open(odefFilename, 'r') - content = f.readlines() - f.close() - meshname = content[0].strip() - scalearr = [1,1,1] - if len(content) > 2: - scalearr = content[1].split(",") - - return (meshname, float(scalearr[0]), float(scalearr[1]), float(scalearr[2])) - - + self.currentStatusMsg = "Terrain loaded" def addObjectToTerrain(self, data=None, odefFilename=None, coords=None): if coords is None: @@ -460,7 +475,7 @@ meshname = None try: - (meshname, sx, sy, sz) = self.loadOdef(odefFilename) + (meshname, sx, sy, sz) = loadOdef(odefFilename) except Exception, err: data.error=True log().error("error while processing odef file %s" % odefFilename) @@ -513,7 +528,7 @@ entry = Entry() entry.uuid = uuid - entry.node, entry.entity, entry.manualobject = self.createTruckMesh(truckFilename, uuid) + entry.node, entry.entity, entry.manualobject = createTruckMesh(truckFilename, uuid) entry.data = data entry.node.rotate(ogre.Vector3.UNIT_Z, ogre.Degree(data.rotz).valueRadians(), relativeTo=ogre.Node.TransformSpace.TS_WORLD) @@ -523,89 +538,8 @@ self.entries[uuid] = entry return True - def createTruckMesh(self, fn, uuid): - if not os.path.isfile(fn): - #print "truck file not found: " + fn - return - p = rorparser() - p.parse(fn) - if not 'nodes' in p.tree.keys() or not 'beams' in p.tree.keys() : - return False - - try: - myManualObject = self.sceneManager.createManualObject(str(uuid)+"manual") - #myManualObjectMaterial = ogre.MaterialManager.getSingleton().create("manualmaterial"+truckname+str(self.randomcounter),"debugger"); - #myManualObjectMaterial.setReceiveShadows(False) - #myManualObjectMaterial.getTechnique(0).setLightingEnabled(True) - #myManualObjectMaterial.getTechnique(0).getPass(0).setDiffuse(0,0,1,0) - #myManualObjectMaterial.getTechnique(0).getPass(0).setAmbient(0,0,1) - #myManualObjectMaterial.getTechnique(0).getPass(0).setSelfIllumination(0,0,1) - #myManualObjectMaterial.getTechnique(0).getPass(0).setCullingMode(ogre.CULL_ANTICLOCKWISE) - matname = "" - if fn[-4:].lower() == "load": - matname = 'mysimple/loadcolor' - elif fn[-5:].lower() == "truck": - matname = 'mysimple/truckcolor' - - myManualObject.useIndexes = True - myManualObject.estimateVertexCount(2000) - myManualObject.estimateIndexCount(2000) - - myManualObject.begin(matname+"grid", ogre.RenderOperation.OT_LINE_LIST) - for nodeobj in p.tree['nodes']: - if nodeobj.has_key('type'): - continue - node = nodeobj['data'] - myManualObject.position(float(node[1]),float(node[2]),float(node[3])) - for beamobj in p.tree['beams']: - if beamobj.has_key('type'): - continue - beam = beamobj['data'] - myManualObject.index(int(beam[0])) - myManualObject.index(int(beam[1])) - myManualObject.end() - myManualObject.begin(matname, ogre.RenderOperation.OT_TRIANGLE_LIST) - for nodeobj in p.tree['nodes']: - if nodeobj.has_key('type'): - continue - node = nodeobj['data'] - myManualObject.position(float(node[1]),float(node[2]),float(node[3])) - - #print len(p.tree['submeshgroups']) - if len(p.tree['submeshgroups']) > 0: - faces = [] - for smobj in p.tree['submeshgroups']: - for cabobj in smobj['cab']: - if cabobj.has_key('type'): - continue - cab = cabobj['data'] - #print "########face" - if cab != []: - try: - myManualObject.triangle(int(cab[0]),int(cab[1]),int(cab[2])) - except: - print "error with cab: " + str(cab) - pass - else: - print "truck has no faces!" - - myManualObject.end() - mesh = myManualObject.convertToMesh(str(uuid)+"manual") - entity = self.sceneManager.createEntity(str(uuid)+"entity", str(uuid)+"manual") - #trucknode = self.sceneManager.getRootSceneNode().createChildSceneNode() - myManualObjectNode = self.sceneManager.getRootSceneNode().createChildSceneNode(str(uuid)+"node") - myManualObjectNode.attachObject(entity) - - myManualObjectNode.attachObject(myManualObject) - - return myManualObjectNode, entity, mesh - except Exception, err: - log().error("error while processing truck file %s" % fn) - log().error(str(err)) - return None, None, None - def getPointedPosition(self, event): x, y = event.GetPosition() width, height, a, b, c = self.renderWindow.getMetrics() Modified: trunk/media/materials/mysimple.material =================================================================== --- trunk/media/materials/mysimple.material 2007-08-01 12:09:55 UTC (rev 148) +++ trunk/media/materials/mysimple.material 2007-08-02 14:26:50 UTC (rev 149) @@ -75,6 +75,7 @@ } } } + material mysimple/truckcolor { technique @@ -289,3 +290,33 @@ } } } + +material mysimple/terraineditor/previewwindowfloor +{ + technique + { + pass + { + lighting off + texture_unit + { + colour_op_ex source1 src_manual src_current 0.8 0.8 0.8 + } + } + } +} + +material mysimple/terraineditor/previewwindowsky +{ + technique + { + pass + { + lighting off + texture_unit + { + colour_op_ex source1 src_manual src_current 0.8 0.8 0.8 + } + } + } +} \ No newline at end of file Deleted: trunk/media/models/wheel.mesh =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ror...@us...> - 2007-08-03 12:22:03
|
Revision: 155 http://roreditor.svn.sourceforge.net/roreditor/?rev=155&view=rev Author: rorthomas Date: 2007-08-03 04:49:20 -0700 (Fri, 03 Aug 2007) Log Message: ----------- * re-enabled rotation for trucks * changed 3d models of arrows and the ground pointer Modified Paths: -------------- trunk/lib/ror/terrainparser.py trunk/lib/rorterraineditor/RoRTerrainOgreWindow.py trunk/media/models/roundarrow.mesh Added Paths: ----------- trunk/media/models/cylinder.mesh Removed Paths: ------------- trunk/media/models/circlepointer.mesh Modified: trunk/lib/ror/terrainparser.py =================================================================== --- trunk/lib/ror/terrainparser.py 2007-08-03 01:07:48 UTC (rev 154) +++ trunk/lib/ror/terrainparser.py 2007-08-03 11:49:20 UTC (rev 155) @@ -156,7 +156,7 @@ truck.setPosition(x, y, z) truck.setRotation(rx, ry, -rz) truck.additionaloptions = objname[1:] - truck.mayRotate=False + #truck.mayRotate=False self.trucks.append(truck) continue if objname[0][0:4] == "load" and len(objname) > 1: @@ -168,7 +168,7 @@ load.setPosition(x, y, z) load.setRotation(rx, ry, -rz) load.additionaloptions = objname[1:] - load.mayRotate=False + #load.mayRotate=False self.loads.append(load) continue Modified: trunk/lib/rorterraineditor/RoRTerrainOgreWindow.py =================================================================== --- trunk/lib/rorterraineditor/RoRTerrainOgreWindow.py 2007-08-03 01:07:48 UTC (rev 154) +++ trunk/lib/rorterraineditor/RoRTerrainOgreWindow.py 2007-08-03 11:49:20 UTC (rev 155) @@ -296,6 +296,7 @@ nry = nr.createChildSceneNode("rotatearrowsnodeY") ery = self.sceneManager.createEntity("rotatearrowsY", "roundarrow.mesh") + nry.rotate(ogre.Vector3.UNIT_X, ogre.Degree(180).valueRadians(), relativeTo=ogre.Node.TransformSpace.TS_WORLD) nry.rotate(ogre.Vector3.UNIT_Y, ogre.Degree(90).valueRadians(), relativeTo=ogre.Node.TransformSpace.TS_WORLD) ery.setMaterialName("mysimple/transred") nry.setInheritOrientation(True) @@ -309,10 +310,11 @@ # terrain selection node nt = self.sceneManager.getRootSceneNode().createChildSceneNode("terrainselectnode") - et = self.sceneManager.createEntity("circlepointer", "circlepointer.mesh") + et = self.sceneManager.createEntity("circlepointer", "cylinder.mesh") et.setMaterialName("mysimple/terrainselect") nt.rotate(ogre.Vector3.UNIT_X, ogre.Degree(90).valueRadians(), relativeTo=ogre.Node.TransformSpace.TS_WORLD) nt.attachObject(et) + nt.setScale(5,5,5) self.TerrainSelectNode = nt self.TranslateNode = n Deleted: trunk/media/models/circlepointer.mesh =================================================================== (Binary files differ) Added: trunk/media/models/cylinder.mesh =================================================================== (Binary files differ) Property changes on: trunk/media/models/cylinder.mesh ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/media/models/roundarrow.mesh =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ror...@us...> - 2007-08-07 23:14:36
|
Revision: 159 http://roreditor.svn.sourceforge.net/roreditor/?rev=159&view=rev Author: rorthomas Date: 2007-08-07 16:14:17 -0700 (Tue, 07 Aug 2007) Log Message: ----------- * updated starter * merged all editors into one GUI * added nice terrain preview feature Modified Paths: -------------- trunk/lib/ror/starter.py trunk/lib/wxogre/OgreManager.py Added Paths: ----------- trunk/lib/roreditor/ trunk/lib/roreditor/GUIObjectTree.py trunk/lib/roreditor/GUIPreviewObject.py trunk/lib/roreditor/MainFrame.py trunk/lib/roreditor/MainFrame_Tools.py trunk/lib/roreditor/MainFrame_Tools_ODefEditor.py trunk/lib/roreditor/MainFrame_old.py trunk/lib/roreditor/MainFrame_org.py trunk/lib/roreditor/RoRObjectPreviewOgreWindow.py trunk/lib/roreditor/RoROdefEditorOgreWindow.py trunk/lib/roreditor/RoRTerrainOgreWindow.py trunk/lib/roreditor/RoRTerrainSelectedObjectOgreWindow.py trunk/lib/roreditor/RoRTerrainSelectedObjectTopOgreWindow.py trunk/lib/roreditor/RoRTruckOgreWindow.py trunk/lib/roreditor/RoRTruckUVOgreWindow.py trunk/lib/roreditor/__init__.py trunk/lib/roreditor/terrainhelp.html trunk/roreditors.py Removed Paths: ------------- trunk/lib/rorterraineditor/ trunk/lib/rortruckeditor/ trunk/terraineditor.py trunk/truckeditor.py Modified: trunk/lib/ror/starter.py =================================================================== --- trunk/lib/ror/starter.py 2007-08-07 15:14:01 UTC (rev 158) +++ trunk/lib/ror/starter.py 2007-08-07 23:14:17 UTC (rev 159) @@ -7,6 +7,7 @@ from ror.logger import log from ror.settingsManager import getSettingsManager +import roreditor.MainFrame import wx, os, os.path @@ -39,7 +40,7 @@ self.image = ImagePanel(self.panel, wx.ID_ANY, SPLASHIMAGE) - self.lblRoRDir = wx.StaticText(self.panel, wx.ID_ANY, "Please select Rigs of Rods Directory!", size = (20, 20), style = wx.ALIGN_CENTRE | wx.ST_NO_AUTORESIZE) + self.lblRoRDir = wx.StaticText(self.panel, wx.ID_ANY, "Please select Rigs of Rods Directory!", size = (20, 40), style = wx.ALIGN_CENTRE | wx.ST_NO_AUTORESIZE) self.btnSelectRoRDir = wx.Button(self.panel, wx.ID_ANY, "Select RoR Directory") self.Bind(wx.EVT_BUTTON, self.OnSelectRoRDir, self.btnSelectRoRDir) @@ -49,12 +50,9 @@ self.cbbRenderEngine = wx.ComboBox(self.panel, wx.ID_ANY, RENDERSYSTEMS[0], style=wx.CB_READONLY, choices=RENDERSYSTEMS) self.Bind(wx.EVT_COMBOBOX, self.OnSelectRenderer, self.cbbRenderEngine) - self.btnStartTerrainEditor = wx.Button(self.panel, wx.ID_ANY, "Start Terrain Editor") + self.btnStartTerrainEditor = wx.Button(self.panel, wx.ID_ANY, "Start Editor") self.Bind(wx.EVT_BUTTON, self.OnTerrainEditor, self.btnStartTerrainEditor) - self.btnStartTruckEditor = wx.Button(self.panel, wx.ID_ANY, "Start Truck Editor") - self.Bind(wx.EVT_BUTTON, self.OnTruckEditor, self.btnStartTruckEditor) - self.btnBugReport = wx.Button(self.panel, wx.ID_ANY, "Report a Bug") self.Bind(wx.EVT_BUTTON, self.OnBugReport, self.btnBugReport) @@ -90,13 +88,13 @@ def displayRoRDir(self): if self.rordir == "": self.btnStartRoR.Enable(False) - self.btnStartTruckEditor.Enable(False) + #self.btnStartTruckEditor.Enable(False) self.btnStartTerrainEditor.Enable(False) self.btnBugReport.Enable(False) self.lblRoRDir.SetLabel("Please select Rigs of Rods Directory!") else: self.btnStartRoR.Enable(True) - self.btnStartTruckEditor.Enable(True) + #self.btnStartTruckEditor.Enable(True) self.btnStartTerrainEditor.Enable(True) self.btnBugReport.Enable(True) self.lblRoRDir.SetLabel("Selected Rigs of Rods Directory: " + self.rordir) @@ -168,15 +166,15 @@ except Exception, e: log().exception(str(e)) - def OnTruckEditor(self, event=None): - try: - import rortruckeditor.MainFrame - self.Close() - log().info("starting Truckeditor") - app = rortruckeditor.MainFrame.startApp() - del app - except Exception, e: - log().exception(str(e)) + # def OnTruckEditor(self, event=None): + # try: + # import rortruckeditor.MainFrame + # self.Close() + # log().info("starting Truckeditor") + # app = rortruckeditor.MainFrame.startApp() + # del app + # except Exception, e: + # log().exception(str(e)) def OnBugReport(self, event=None): try: @@ -195,10 +193,9 @@ def OnTerrainEditor(self, event=None): try: - import rorterraineditor.MainFrame log().info("starting Terraineditor") self.Close() - app = rorterraineditor.MainFrame.startApp() + app = roreditor.MainFrame.startApp() del app except Exception, e: log().exception(str(e)) @@ -261,7 +258,7 @@ sizer_b.Add(self.btnStartRoR, 0, wx.EXPAND, 0) sizer_c = wx.BoxSizer(wx.VERTICAL) - sizer_c.Add(self.btnStartTruckEditor, 1, wx.EXPAND, 0) + #sizer_c.Add(self.btnStartTruckEditor, 1, wx.EXPAND, 0) sizer_c.Add(self.btnStartTerrainEditor, 1, wx.EXPAND, 0) sizer_b.Add(sizer_c, 1, wx.EXPAND, 0) Added: trunk/lib/roreditor/GUIObjectTree.py =================================================================== --- trunk/lib/roreditor/GUIObjectTree.py (rev 0) +++ trunk/lib/roreditor/GUIObjectTree.py 2007-08-07 23:14:17 UTC (rev 159) @@ -0,0 +1,190 @@ +import sys, os, os.path + +import wx +import wx.grid +import wx.html +import wx.aui +import ror.settingsManager + +import cStringIO + +RORPATH = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") +DATADIR = os.path.join(RORPATH, "data") +TRUCKDIR = os.path.join(DATADIR, "trucks") +TERRAINDIR = os.path.join(DATADIR, "terrains") +OBJECTDIR = os.path.join(DATADIR, "objects") + +class RoRObjectTreeCtrl(wx.Panel): + def __init__(self, parent, frame): + wx.Panel.__init__(self, parent, wx.ID_ANY, wx.DefaultPosition, + wx.DefaultSize) + + self.parent = parent + self._frame = frame + + + vert = wx.BoxSizer(wx.VERTICAL) + + + tree = wx.TreeCtrl(self, -1, wx.Point(0, 0), wx.DefaultSize, wx.NO_BORDER | wx.TR_HIDE_ROOT) + + root = tree.AddRoot("Objects") + items = [] + + imglist = wx.ImageList(16, 16, True, 2) + imglist.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, wx.Size(16,16))) + imglist.Add(wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, wx.Size(16,16))) + tree.AssignImageList(imglist) + + terrains = self.getInstalledTerrains() + items.append(tree.AppendItem(root, "Terrains", 0)) + for terrain in terrains: + terrainname, extension = os.path.splitext(os.path.basename(terrain)) + data = wx.TreeItemData() + data.SetData(terrain) + tree.AppendItem(items[-1], terrainname, 1, data=data) + + trucks = self.getInstalledTrucks() + items.append(tree.AppendItem(root, "Trucks", 0)) + for truck in trucks: + truckname, extension = os.path.splitext(os.path.basename(truck)) + data = wx.TreeItemData() + data.SetData(truck) + tree.AppendItem(items[-1], truckname, 1, data=data) + + loads = self.getInstalledLoads() + items.append(tree.AppendItem(root, "Loads", 0)) + for load in loads: + loadname, extension = os.path.splitext(os.path.basename(load)) + data = wx.TreeItemData() + data.SetData(load) + tree.AppendItem(items[-1], loadname, 1, data=data) + + objects = self.getInstalledObjects() + items.append(tree.AppendItem(root, "Objects", 0)) + for object in objects: + objectname, extension = os.path.splitext(os.path.basename(object)) + data = wx.TreeItemData() + data.SetData(object) + tree.AppendItem(items[-1], objectname, 1, data=data) + + # root is hidden, no expand! + #tree.Expand(root) + vert.Add(tree, 1, wx.EXPAND, 5) + self.SetSizer(vert) + self.GetSizer().SetSizeHints(self) + + self.tree = tree + + # this dows not work :( + #self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDClick, self.tree) + self.Bind(wx.EVT_TREE_SEL_CHANGED, self.onTreeSelectionChange, self.tree) + self.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.OnRightClick, self.tree) + + #self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.BeginDrag, self.tree) + def OnLeftDClick(self, event): + #this is just a shortcut! + self.selectedfn = self.tree.GetItemData(event.GetItem()).GetData() + if self.selectedfn[-4:].lower() == "odef": + self.editOdef() + if self.selectedfn[-5:].lower() == "terrn": + self.editTerrain() + if self.selectedfn[-5:].lower() == 'truck' or self.selectedfn[-4:].lower() == 'load': + self.editTruck() + + def OnRightClick(self, event): + self.selectedfn = self.tree.GetItemData(event.GetItem()).GetData() + if self.selectedfn is None: + event.Skip() + return + + menu = wx.Menu() + + #create various menu entries + if self.selectedfn[-4:].lower() == "odef": + item_edit_odef = menu.Append(wx.ID_ANY, "Edit in ODef Editor") + self.Bind(wx.EVT_MENU, self.editOdef, item_edit_odef) + if self.selectedfn[-5:].lower() == "terrn": + item_edit_terrain = menu.Append(wx.ID_ANY, "Edit in Terrain Editor") + self.Bind(wx.EVT_MENU, self.editTerrain, item_edit_terrain) + if self.selectedfn[-5:].lower() == 'truck' or self.selectedfn[-4:].lower() == 'load': + item_edit_truck = menu.Append(wx.ID_ANY, "Edit in Truck Editor") + self.Bind(wx.EVT_MENU, self.editTruck, item_edit_truck) + menu.AppendSeparator() + item_add = menu.Append(wx.ID_ANY, "add to Terrain") + self.Bind(wx.EVT_MENU, self.addObjectToTerrain, item_add) + + self.PopupMenu(menu) + menu.Destroy() + + def editTruck(self, event=None): + if self.selectedfn is None: + return + self.parent.editTruck(self.selectedfn) + + def editOdef(self, event=None): + if self.selectedfn is None: + return + self.parent.editODefFile(self.selectedfn) + + def editTerrain(self, event=None): + if self.selectedfn is None: + return + self.parent.openTerrain(self.selectedfn) + + def addObjectToTerrain(self, event=None): + if self.selectedfn is None: + return + self.parent.addObjectToTerrain(self.selectedfn) + #def BeginDrag(self, event): + # ''' + # EVT_TREE_BEGIN_DRAG handler. + # ''' + # self.dragItem = event.GetItem() + # fn = self.tree.GetItemData(event.GetItem()).GetData() + # if fn is None: + # return + # #event.Allow() + # wx.TreeEvent.Allow(event) + + def onTreeSelectionChange(self, event=None): + fn = self.tree.GetItemData(self.tree.GetSelection()).GetData() + if fn is None: + return + self.parent.previewObject(fn) + + def getInstalledTerrains(self): + files = [] + for filename in os.listdir(TERRAINDIR): + onlyfilename, extension = os.path.splitext(filename) + if extension.lower() == ".terrn": + files.append(os.path.join(TERRAINDIR, filename)) + files.sort() + return files + + def getInstalledTrucks(self): + files = [] + for filename in os.listdir(TRUCKDIR): + onlyfilename, extension = os.path.splitext(filename) + if extension.lower() == ".truck": + files.append(os.path.join(TRUCKDIR, filename)) + files.sort() + return files + + def getInstalledLoads(self): + files = [] + for filename in os.listdir(TRUCKDIR): + onlyfilename, extension = os.path.splitext(filename) + if extension.lower() == ".load": + files.append(os.path.join(TRUCKDIR, filename)) + files.sort() + return files + + def getInstalledObjects(self): + files = [] + for filename in os.listdir(OBJECTDIR): + onlyfilename, extension = os.path.splitext(filename) + if extension.lower() == ".odef": + files.append(os.path.join(OBJECTDIR, filename)) + files.sort() + return files \ No newline at end of file Added: trunk/lib/roreditor/GUIPreviewObject.py =================================================================== --- trunk/lib/roreditor/GUIPreviewObject.py (rev 0) +++ trunk/lib/roreditor/GUIPreviewObject.py 2007-08-07 23:14:17 UTC (rev 159) @@ -0,0 +1,70 @@ +import sys, os, os.path + +import wx +import wx.grid +import wx.html +import wx.aui +import ror.settingsManager + +import cStringIO + +RORPATH = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") +DATADIR = os.path.join(RORPATH, "data") +TRUCKDIR = os.path.join(DATADIR, "trucks") +TERRAINDIR = os.path.join(DATADIR, "terrains") +OBJECTDIR = os.path.join(DATADIR, "objects") + +class RoRObjectTreeCtrl(wx.Panel): + def __init__(self, parent, frame): + wx.Panel.__init__(self, parent, wx.ID_ANY, wx.DefaultPosition, + wx.DefaultSize) + + self._frame = frame + + + vert = wx.BoxSizer(wx.VERTICAL) + + + tree = wx.TreeCtrl(self, -1, wx.Point(0, 0), wx.DefaultSize, wx.NO_BORDER) + + root = tree.AddRoot("Objects") + items = [] + + imglist = wx.ImageList(16, 16, True, 2) + imglist.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, wx.Size(16,16))) + imglist.Add(wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, wx.Size(16,16))) + tree.AssignImageList(imglist) + + trucks = self.getInstalledTrucks() + items.append(tree.AppendItem(root, "Trucks", 0)) + for truck in trucks: + truckname, extension = os.path.splitext(truck) + tree.AppendItem(items[-1], truckname, 1) + + objects = self.getInstalledObjects() + items.append(tree.AppendItem(root, "Objects", 0)) + for object in objects: + objectname, extension = os.path.splitext(object) + tree.AppendItem(items[-1], objectname, 1) + + + tree.Expand(root) + vert.Add(tree, 1, wx.EXPAND, 5) + self.SetSizer(vert) + self.GetSizer().SetSizeHints(self) + + def getInstalledTrucks(self): + files = [] + for filename in os.listdir(TRUCKDIR): + onlyfilename, extension = os.path.splitext(filename) + if extension.lower() == ".truck": + files.append(filename) + return files + + def getInstalledObjects(self): + files = [] + for filename in os.listdir(OBJECTDIR): + onlyfilename, extension = os.path.splitext(filename) + if extension.lower() == ".odef": + files.append(filename) + return files \ No newline at end of file Added: trunk/lib/roreditor/MainFrame.py =================================================================== --- trunk/lib/roreditor/MainFrame.py (rev 0) +++ trunk/lib/roreditor/MainFrame.py 2007-08-07 23:14:17 UTC (rev 159) @@ -0,0 +1,545 @@ +import sys, os, os.path + +from wxogre.OgreManager import * +from ror.RoROgreWindow import * + +from ror.logger import log +from ror.settingsManager import getSettingsManager + +from ror.rorcommon import * +from RoRTerrainOgreWindow import * +from RoRObjectPreviewOgreWindow import * +from RoRTerrainSelectedObjectOgreWindow import * +from RoRTerrainSelectedObjectTopOgreWindow import * +from RoROdefEditorOgreWindow import * +from RoRTruckOgreWindow import * +from RoRTruckUVOgreWindow import * + +# GUI Tools: +from GUIObjectTree import * +from MainFrame_Tools import * +from MainFrame_Tools_ODefEditor import * + +import wx +import wx.grid +import wx.html +import wx.aui + +import cStringIO + +ID_OpenTerrain = wx.NewId() +ID_SaveTerrain = wx.NewId() +ID_SaveTerrainAs = wx.NewId() +ID_AddObject = wx.NewId() +ID_DeleteSelection = wx.NewId() +ID_CopySelection = wx.NewId() +ID_PasteSelection = wx.NewId() +ID_UndoAction = wx.NewId() +ID_RedoAction = wx.NewId() +ID_FindObject = wx.NewId() +ID_Quit = wx.NewId() + +ID_ViewHelp = wx.NewId() + +ID_CreateOgre = wx.NewId() + +ID_CreatePerspective = wx.NewId() +ID_CopyPerspective = wx.NewId() + +ID_Settings = wx.NewId() +ID_About = wx.NewId() +ID_FirstPerspective = ID_CreatePerspective+1000 + +DATADIR = "data" +TRUCKDIR = os.path.join(DATADIR, "trucks") +TERRAINDIR = os.path.join(DATADIR, "terrains") +OBJECTDIR = os.path.join(DATADIR, "objects") + +class MainFrame(wx.Frame): + + def __init__(self, parent, id=-1, title="", pos=wx.DefaultPosition, + size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE | + wx.SUNKEN_BORDER | + wx.CLIP_CHILDREN): + + wx.Frame.__init__(self, parent, id, title, pos, size, style) + + # tell FrameManager to manage this frame + self._mgr = wx.aui.AuiManager() + self._mgr.SetManagedWindow(self) + + self._perspectives = [] + self.n = 0 + self.x = 0 + + self.SetIcon(wx.Icon('ror.ico',wx.BITMAP_TYPE_ICO)) + + # create menu + mb = wx.MenuBar() + + file_menu = wx.Menu() + file_menu.Append(ID_OpenTerrain, "Open Terrain") + #file_menu.Append(wx.ID_EXIT, "Exit") + + #view_menu = wx.Menu() + #view_menu.Append(ID_CreateOgre, "Create new 3D View") + + self.managerInit() + options_menu = wx.Menu() + options_menu.Append(ID_Settings, "GUI Settings Pane") + + self._perspectives_menu = wx.Menu() + self._perspectives_menu.Append(ID_CreatePerspective, "Create Perspective") + #self._perspectives_menu.Append(ID_CopyPerspective, "Copy Perspective Data To Clipboard") + self._perspectives_menu.AppendSeparator() + self._perspectives_menu.Append(ID_FirstPerspective+0, "Default Startup") + self._perspectives_menu.Append(ID_FirstPerspective+1, "Terrain") + self._perspectives_menu.Append(ID_FirstPerspective+2, "ODef Editor") + self._perspectives_menu.Append(ID_FirstPerspective+3, "Truck Editor") + + help_menu = wx.Menu() + help_menu.Append(ID_About, "About...") + help_menu.Append(ID_ViewHelp, "View Help") + + mb.Append(file_menu, "File") + #mb.Append(view_menu, "View") + mb.Append(self._perspectives_menu, "Perspectives") + mb.Append(options_menu, "Options") + mb.Append(help_menu, "Help") + + self.SetMenuBar(mb) + + self.statusbar = self.CreateStatusBar(5, 0, wx.ID_ANY, "mainstatusbar") + self.statusbar.SetStatusWidths([-1, 200, 130, 250, 80]) + + # min size for the frame itself isn't completely done. + # see the end up FrameManager::Update() for the test + # code. For now, just hard code a frame minimum size + self.SetMinSize(wx.Size(600, 400)) + try: + import ror.svn + self.SetTitle("Rigs of Rods Terrain Editor revision %d" % ror.svn.getRevision()) + except: + self.SetTitle("Rigs of Rods Terrain Editor") + + # create some toolbars + self.terraintoolbar = wx.ToolBar(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TB_FLAT | wx.TB_NODIVIDER) + self.terraintoolbar.SetToolBitmapSize(wx.Size(16,16)) + self.terraintoolbar.AddLabelTool(ID_OpenTerrain, "Open Terrain", wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN)) + self.terraintoolbar.AddLabelTool(ID_SaveTerrain, "Save Terrain", wx.ArtProvider_GetBitmap(wx.ART_FILE_SAVE)) + self.terraintoolbar.EnableTool(ID_SaveTerrain, False) + self.terraintoolbar.AddLabelTool(ID_SaveTerrainAs, "Save Terrain as", wx.ArtProvider_GetBitmap(wx.ART_FILE_SAVE_AS)) + self.terraintoolbar.EnableTool(ID_SaveTerrainAs, False) + self.terraintoolbar.AddSeparator() + self.terraintoolbar.AddLabelTool(ID_AddObject, "Add Something", wx.ArtProvider_GetBitmap(wx.ART_NEW)) + self.terraintoolbar.EnableTool(ID_AddObject, False) + self.terraintoolbar.AddLabelTool(ID_DeleteSelection, "Delete Selection", wx.ArtProvider_GetBitmap(wx.ART_DELETE)) + self.terraintoolbar.EnableTool(ID_DeleteSelection, False) + self.terraintoolbar.AddSeparator() + self.terraintoolbar.AddLabelTool(ID_CopySelection, "Copy Selection", wx.ArtProvider_GetBitmap(wx.ART_COPY)) + self.terraintoolbar.EnableTool(ID_CopySelection, False) + self.terraintoolbar.AddLabelTool(ID_PasteSelection, "Paste Selection", wx.ArtProvider_GetBitmap(wx.ART_PASTE)) + self.terraintoolbar.EnableTool(ID_PasteSelection, False) + self.terraintoolbar.AddSeparator() + self.terraintoolbar.AddLabelTool(ID_UndoAction, "Undo last Action", wx.ArtProvider_GetBitmap(wx.ART_UNDO)) + self.terraintoolbar.EnableTool(ID_UndoAction, False) + self.terraintoolbar.AddLabelTool(ID_RedoAction, "Redo last Undo", wx.ArtProvider_GetBitmap(wx.ART_REDO)) + self.terraintoolbar.EnableTool(ID_RedoAction, False) + self.terraintoolbar.AddSeparator() + self.terraintoolbar.AddLabelTool(ID_FindObject, "Find Object", wx.ArtProvider_GetBitmap(wx.ART_FIND)) + self.terraintoolbar.EnableTool(ID_FindObject, False) + self.terraintoolbar.AddSeparator() + self.terraintoolbar.AddLabelTool(ID_Quit, "Quit", wx.ArtProvider_GetBitmap(wx.ART_QUIT)) + self.terraintoolbar.Realize() + + self.rordir = getSettingsManager().getSetting("RigsOfRods", "BasePath") + + + # add a bunch of panes + self.objectPreviewWindow = ObjectPreviewOgreWindow(self, wx.ID_ANY, rordir=self.rordir) + + self._mgr.AddPane(self.objectPreviewWindow, wx.aui.AuiPaneInfo(). + Name("object_preview"). + Caption("Object Preview"). + CenterPane(). + MinSize(wx.Size(200,200)). + CloseButton(True). + MaximizeButton(False)) + + self._mgr.AddPane(HelpPanel(self, self), wx.aui.AuiPaneInfo(). + Name("help"). + Caption("Help"). + Dockable(False). + Float(). + Fixed(). + Hide(). + CloseButton(True). + MaximizeButton(True)) + + self._mgr.AddPane(SettingsPanel(self, self), wx.aui.AuiPaneInfo(). + Name("settings"). + Caption("Dock Manager Settings"). + Dockable(False). + Float(). + Fixed(). + Hide(). + CloseButton(True). + MaximizeButton(True)) + + self._mgr.AddPane(RoRObjectTreeCtrl(self, self), wx.aui.AuiPaneInfo(). + Name("object_tree"). + Caption("Object Tree"). + MinSize(wx.Size(200,100)). + Left(). + CloseButton(True). + MaximizeButton(True)) + + + # odef editor panels + self.oddefEditorViewSettings = OdefViewPanel(self, self) + self._mgr.AddPane(self.oddefEditorViewSettings, wx.aui.AuiPaneInfo(). + Name("odef_editor_view_settings"). + Caption("ODef Editor View Settings"). + MinSize(wx.Size(200,100)). + Left(). + CloseButton(True). + MaximizeButton(False). + Hide()) + + + # create the center pane(s) + #Timer creation (for rendering) + self.ogreTimer = wx.Timer() + self.ogreTimer.SetOwner(self) + self.Bind(wx.EVT_TIMER, self.onUpdateRender, self.ogreTimer) + self.ogreTimer.Start(25) + + # create timer for gui update + self.guitimer = wx.Timer() + self.guitimer.SetOwner(self) #Sets the timer to notify self: binding the timer event is not enough + self.Bind(wx.EVT_TIMER, self.OnGUITimer, self.guitimer) + self.guitimer.Start(200) + + # the terrain editor ogre window + self.terrainOgreWin = RoRTerrainOgreWindow(self, wx.ID_ANY, rordir=self.rordir) + self._mgr.AddPane(self.terrainOgreWin, wx.aui.AuiPaneInfo().Name("ogre_terrain_content").CenterPane().Hide()) + + # the odef editor ogre window + self.odefEditorOgreWin = ODefEditorOgreWindow(self, wx.ID_ANY, rordir=self.rordir) + self._mgr.AddPane(self.odefEditorOgreWin, wx.aui.AuiPaneInfo().Name("ogre_odef_editor_content").CenterPane().Hide()) + + # the truck editor window + self.truckEditorOgreWin = RoRTruckOgreWindow(self, wx.ID_ANY) + self._mgr.AddPane(self.truckEditorOgreWin, wx.aui.AuiPaneInfo().Name("ogre_truck_editor_content").CenterPane().Hide()) + + # the truck editor UV window + self.truckEditorUVOgreWin = RoRTruckUVOgreWindow(self, wx.ID_ANY) + self._mgr.AddPane(self.truckEditorUVOgreWin, wx.aui.AuiPaneInfo().Name("ogre_truck_editor_uv_content").Float().Hide()) + + + # add the toolbars to the manager + self._mgr.AddPane(self.terraintoolbar, wx.aui.AuiPaneInfo(). + Name("terrain_toolbar"). + Caption("General Toolbar"). + ToolbarPane().Top(). + LeftDockable(False). + RightDockable(False). + Hide() + ) + + # make some default perspectives + self._perspectives.append(self._mgr.SavePerspective()) + + # hide all first + self.terraintoolbar.Hide() + all_panes = self._mgr.GetAllPanes() + for ii in xrange(len(all_panes)): + if not all_panes[ii].IsToolbar(): + all_panes[ii].Hide() + + # terrain perspective + self._mgr.GetPane("ogre_truck_editor_uv_content").Show(False) + self._mgr.GetPane("terrain_toolbar").Show(True) + self._mgr.GetPane("ogre_truck_editor_content").Show(False) + self._mgr.GetPane("ogre_odef_editor_content").Show(False) + self._mgr.GetPane("odef_editor_view_settings").Show(False) + self._mgr.GetPane("ogre_terrain_content").Show(True) + self._mgr.GetPane("object_preview").Show(True).Left() + self._mgr.GetPane("object_tree").Show(True) + self.objectPreviewWindow + self._perspectives.append(self._mgr.SavePerspective()) + + # odef editor perspective + self._mgr.GetPane("ogre_truck_editor_uv_content").Show(False) + self._mgr.GetPane("terrain_toolbar").Show(False) + self._mgr.GetPane("ogre_truck_editor_content").Show(False) + self._mgr.GetPane("object_preview").Show(False) + self._mgr.GetPane("ogre_terrain_content").Show(False) + self._mgr.GetPane("ogre_odef_editor_content").Show(True) + self._mgr.GetPane("odef_editor_view_settings").Show(True) + self._mgr.GetPane("object_tree").Show(True) + self._perspectives.append(self._mgr.SavePerspective()) + + # truck editor perspective + self._mgr.GetPane("ogre_truck_editor_uv_content").Show(True) + self._mgr.GetPane("terrain_toolbar").Show(False) + self._mgr.GetPane("ogre_truck_editor_content").Show(True) + self._mgr.GetPane("object_preview").Show(False) + self._mgr.GetPane("ogre_terrain_content").Show(False) + self._mgr.GetPane("ogre_odef_editor_content").Show(False) + self._mgr.GetPane("odef_editor_view_settings").Show(False) + self._mgr.GetPane("object_tree").Show(False) + self._perspectives.append(self._mgr.SavePerspective()) + + # load startup perspective + self._mgr.LoadPerspective(self._perspectives[0]) + + # "commit" all changes made to FrameManager + self._mgr.Update() + + self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground) + self.Bind(wx.EVT_SIZE, self.OnSize) + self.Bind(wx.EVT_CLOSE, self.OnClose) + + self.Bind(wx.EVT_MENU, self.OnOpenTerrain, id=ID_OpenTerrain) + self.Bind(wx.EVT_MENU, self.OnSaveTerrain, id=ID_SaveTerrain) + self.Bind(wx.EVT_MENU, self.OnSaveTerrainAs, id=ID_SaveTerrainAs) + self.Bind(wx.EVT_MENU, self.OnViewHelp, id=ID_ViewHelp) + + self.Bind(wx.EVT_MENU, self.OnCreateOgre, id=ID_CreateOgre) + + self.Bind(wx.EVT_MENU, self.OnCreatePerspective, id=ID_CreatePerspective) + self.Bind(wx.EVT_MENU, self.OnCopyPerspective, id=ID_CopyPerspective) + + self.Bind(wx.EVT_MENU, self.OnSettings, id=ID_Settings) + + self.Bind(wx.EVT_MENU, self.OnExit, id=ID_Quit) + self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT) + self.Bind(wx.EVT_MENU, self.OnAbout, id=ID_About) + + self.Bind(wx.EVT_MENU_RANGE, self.OnRestorePerspective, id=ID_FirstPerspective, + id2=ID_FirstPerspective+1000) + + def changeEditorMode(self, id): + self._mgr.LoadPerspective(self._perspectives[id]) + self._mgr.Update() + + def OnViewHelp(self, event=None): + # show the settings pane, and float it + floating_pane = self._mgr.GetPane("help").Float().Show() + + if floating_pane.floating_pos == wx.DefaultPosition: + floating_pane.FloatingPosition(self.GetStartPosition()) + + self._mgr.Update() + + + def addObjectToTerrain(self, filename): + try: + self.changeEditorMode(1) + onlyfilename, extension = os.path.splitext(os.path.basename(filename)) + if extension.lower() in ['.truck', '.load']: + if not self.terrainOgreWin.addTruckToTerrain(truckFilename=filename): + dlg = wx.MessageDialog(self, "You must select a position on the ground first!", "error", wx.OK | wx.ICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() + elif extension.lower() in ['.odef']: + if not self.terrainOgreWin.addObjectToTerrain(odefFilename=filename): + dlg = wx.MessageDialog(self, "You must select a position on the ground first!", "error", wx.OK | wx.ICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() + except: + pass + + def previewObject(self, filename): + #try: + self.objectPreviewWindow.loadFile(filename) + #except: + # pass + + def editODefFile(self, filename): + #try: + self.odefEditorOgreWin.loadFile(filename) + self.changeEditorMode(2) + self.oddefEditorViewSettings.resetControls() + #except Exception, err: + # print err + # pass + + def editTruck(self, filename): + #try: + tree = self.truckEditorOgreWin.LoadTruck(filename) + self.changeEditorMode(3) + self.truckEditorUVOgreWin.setTree(tree) + #except Exception, err: + # print err + # pass + + def updateObjPosRot(self, event=None): + self.statusbar.SetStatusText(self.terrainOgreWin.currentStatusMsg, 1) + if self.terrainOgreWin.terrain is None: + return + if self.terrainOgreWin.selectedEntry is None: + self.statusbar.SetStatusText("Nothing selected", 2) + return + entry = self.terrainOgreWin.selectedEntry + #comment = self.terrainOgreWin.getCommentsForObject(n.getName()).lstrip('/') + #if comment.strip() != "": + # txt = "%s / %s" % (n.getName(), comment) + #else: + txt = "%s %s" % (entry.data.name, " ".join(entry.data.additionaloptions)) + self.statusbar.SetStatusText(txt, 2) + + posx, posy, posz, rotx, roty, rotz = self.terrainOgreWin.getSelectionPositionRotation() + txt = "%0.2f, %0.2f, %0.2f / %0.2f, %0.2f, %0.2f" % (posx, posy, posz, rotx, roty, rotz) + self.statusbar.SetStatusText(txt, 3) + + def OnGUITimer(self, event): + #fill labels with some information, all windows have the same FPS! + txt = "%0.2f FPS" % (self.terrainOgreWin.renderWindow.getStatistics().lastFPS) + self.statusbar.SetStatusText(txt, 4) + self.updateObjPosRot() + + def onUpdateRender(self, event=None): + getOgreManager().RenderAll() + pass + + def openTerrain(self, filename): + self.changeEditorMode(1) + self.terrainOgreWin.LoadTerrain(filename) + self.terraintoolbar.EnableTool(ID_AddObject, True) + self.terraintoolbar.EnableTool(ID_DeleteSelection, True) + self.terraintoolbar.EnableTool(ID_CopySelection, True) + self.terraintoolbar.EnableTool(ID_PasteSelection, True) + self.terraintoolbar.EnableTool(ID_UndoAction, True) + self.terraintoolbar.EnableTool(ID_RedoAction, True) + self.terraintoolbar.EnableTool(ID_FindObject, True) + self.terraintoolbar.EnableTool(ID_SaveTerrain, True) + self.terraintoolbar.EnableTool(ID_SaveTerrainAs, True) + + def OnOpenTerrain(self, event=None): + default = "" + if self.rordir: + default = os.path.join(self.rordir, TERRAINDIR) + dialog = wx.FileDialog(self, "Open Terrain", default, "", "Terrain Files (*.terrn)|*.terrn", wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) + res = dialog.ShowModal() + if res == wx.ID_OK: + self.openTerrain(dialog.GetPath()) + + def OnSaveTerrain(self, event=None): + if not self.terrainOgreWin.SaveTerrain(): + dlg = wx.MessageDialog(self, "error while saving, see console!\n","error", wx.OK | wx.ICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() + + def OnSaveTerrainAs(self, event=None): + default = "" + if self.rordir: + default = os.path.join(self.rordir, TERRAINDIR) + dialog = wx.FileDialog(self, "Save Terrain as", default, "", "Terrain Files (*.terrn)|*.terrn", wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT) + res = dialog.ShowModal() + if res == wx.ID_OK: + if not self.terrainOgreWin.SaveTerrain(dialog.GetPath()): + dlg = wx.MessageDialog(self, "error while saving as another file, see console!\n","error", wx.OK | wx.ICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() + + def OnClose(self, event): + self.OnExit(event) + + def OnExit(self, event): + all_panes = self._mgr.GetAllPanes() + for ii in xrange(len(all_panes)): + if not all_panes[ii].IsToolbar(): + all_panes[ii].Hide() + self._mgr.UnInit() + del self._mgr + self.Destroy() + self.Close() + + def OnAbout(self, event): + ShowOnAbout() + + def GetDockArt(self): + return self._mgr.GetArtProvider() + + def DoUpdate(self): + self._mgr.Update() + + def OnEraseBackground(self, event): + event.Skip() + + def OnSize(self, event): + event.Skip() + + def OnSettings(self, event): + # show the settings pane, and float it + floating_pane = self._mgr.GetPane("settings").Float().Show() + + if floating_pane.floating_pos == wx.DefaultPosition: + floating_pane.FloatingPosition(self.GetStartPosition()) + + self._mgr.Update() + + def managerInit(self): + flags = self._mgr.GetFlags() + # based on default settings! + flags |= wx.aui.AUI_MGR_ALLOW_ACTIVE_PANE + flags &= ~wx.aui.AUI_MGR_TRANSPARENT_DRAG + self._mgr.SetFlags(flags) + + def OnCreatePerspective(self, event): + dlg = wx.TextEntryDialog(self, "Enter a name for the new perspective:", "AUI Test") + + dlg.SetValue(("Perspective %d")%(len(self._perspectives)+1)) + if dlg.ShowModal() != wx.ID_OK: + return + + if len(self._perspectives) == 0: + self._perspectives_menu.AppendSeparator() + + self._perspectives_menu.Append(ID_FirstPerspective + len(self._perspectives), dlg.GetValue()) + self._perspectives.append(self._mgr.SavePerspective()) + + + def OnCopyPerspective(self, event): + s = self._mgr.SavePerspective() + + if wx.TheClipboard.Open(): + + wx.TheClipboard.SetData(wx.TextDataObject(s)) + wx.TheClipboard.Close() + + def OnRestorePerspective(self, event): + self._mgr.LoadPerspective(self._perspectives[event.GetId() - ID_FirstPerspective]) + + + def GetStartPosition(self): + self.x = self.x + 20 + x = self.x + pt = self.ClientToScreen(wx.Point(0, 0)) + + return wx.Point(pt.x + x, pt.y + x) + + def OnCreateOgre(self, event): + self._mgr.AddPane(self.CreateOgreCtrl(), wx.aui.AuiPaneInfo(). + Caption("Ogre Window"). + Float().FloatingPosition(self.GetStartPosition()). + CloseButton(True).MaximizeButton(False)) + self._mgr.Update() + + def CreateOgreCtrl(self): + return RoRTerrainOgreWindow(self, wx.ID_ANY, maininstance=self.terrainOgreWin) + +def startApp(): + MainApp = wx.PySimpleApp(0) + wx.InitAllImageHandlers() #you may or may not need this + myFrame = MainFrame(None, -1, "") + + MainApp.SetTopWindow(myFrame) + + myFrame.SetSize((800, 600)) + myFrame.SetFocus() + myFrame.Show() + + MainApp.MainLoop() \ No newline at end of file Added: trunk/lib/roreditor/MainFrame_Tools.py =================================================================== --- trunk/lib/roreditor/MainFrame_Tools.py (rev 0) +++ trunk/lib/roreditor/MainFrame_Tools.py 2007-08-07 23:14:17 UTC (rev 159) @@ -0,0 +1,342 @@ +import sys, os, os.path + +from ror.logger import log +from ror.settingsManager import getSettingsManager + +import wx +import wx.grid +import wx.html +import wx.aui + +import cStringIO +# -- wx.SizeReportCtrl -- +# (a utility control that always reports it's client size) + +HELPFILENAME = os.path.join(os.path.dirname(os.path.abspath(__file__)), "terrainhelp.html") + +class HelpPanel(wx.Panel): + def __init__(self, parent, frame): + wx.Panel.__init__(self, parent, wx.ID_ANY, wx.DefaultPosition, + wx.DefaultSize) + self._frame = frame + + vert = wx.BoxSizer(wx.VERTICAL) + self.htmlctrl = wx.html.HtmlWindow(self, wx.ID_ANY, wx.DefaultPosition, wx.Size(800, 600)) + if "gtk2" in wx.PlatformInfo: + ctrl.SetStandardFonts() + readme = self.loadReadme() + if readme is None: + self.Hide() + return + self.htmlctrl.SetPage(readme) + vert.Add(self.htmlctrl, 2, wx.EXPAND, 0) + self.SetSizer(vert) + self.GetSizer().SetSizeHints(self) + + def loadReadme(self): + if os.path.isfile(HELPFILENAME): + try: + f = open(HELPFILENAME,'r') + content = f.read() + f.close() + return content + except Exception, err: + log().error(str(err)) + return None + else: + log().error("TerrainEditor Readme not found: %s" % HELPFILENAME) + return None + +ID_PaneBorderSize = wx.ID_HIGHEST + 1 +ID_SashSize = ID_PaneBorderSize + 1 +ID_CaptionSize = ID_PaneBorderSize + 2 +ID_BackgroundColor = ID_PaneBorderSize + 3 +ID_SashColor = ID_PaneBorderSize + 4 +ID_InactiveCaptionColor = ID_PaneBorderSize + 5 +ID_InactiveCaptionGradientColor = ID_PaneBorderSize + 6 +ID_InactiveCaptionTextColor = ID_PaneBorderSize + 7 +ID_ActiveCaptionColor = ID_PaneBorderSize + 8 +ID_ActiveCaptionGradientColor = ID_PaneBorderSize + 9 +ID_ActiveCaptionTextColor = ID_PaneBorderSize + 10 +ID_BorderColor = ID_PaneBorderSize + 11 +ID_GripperColor = ID_PaneBorderSize + 12 + +class SettingsPanel(wx.Panel): + + def __init__(self, parent, frame): + + wx.Panel.__init__(self, parent, wx.ID_ANY, wx.DefaultPosition, + wx.DefaultSize) + + self._frame = frame + + vert = wx.BoxSizer(wx.VERTICAL) + + s1 = wx.BoxSizer(wx.HORIZONTAL) + self._border_size = wx.SpinCtrl(self, ID_PaneBorderSize, "", wx.DefaultPosition, wx.Size(50,20)) + s1.Add((1, 1), 1, wx.EXPAND) + s1.Add(wx.StaticText(self, -1, "Pane Border Size:")) + s1.Add(self._border_size) + s1.Add((1, 1), 1, wx.EXPAND) + s1.SetItemMinSize(1, (180, 20)) + #vert.Add(s1, 0, wx.EXPAND | wxLEFT | wxBOTTOM, 5) + + s2 = wx.BoxSizer(wx.HORIZONTAL) + self._sash_size = wx.SpinCtrl(self, ID_SashSize, "", wx.DefaultPosition, wx.Size(50,20)) + s2.Add((1, 1), 1, wx.EXPAND) + s2.Add(wx.StaticText(self, -1, "Sash Size:")) + s2.Add(self._sash_size) + s2.Add((1, 1), 1, wx.EXPAND) + s2.SetItemMinSize(1, (180, 20)) + #vert.Add(s2, 0, wx.EXPAND | wxLEFT | wxBOTTOM, 5) + + s3 = wx.BoxSizer(wx.HORIZONTAL) + self._caption_size = wx.SpinCtrl(self, ID_CaptionSize, "", wx.DefaultPosition, wx.Size(50,20)) + s3.Add((1, 1), 1, wx.EXPAND) + s3.Add(wx.StaticText(self, -1, "Caption Size:")) + s3.Add(self._caption_size) + s3.Add((1, 1), 1, wx.EXPAND) + s3.SetItemMinSize(1, (180, 20)) + #vert.Add(s3, 0, wx.EXPAND | wxLEFT | wxBOTTOM, 5) + + #vert.Add(1, 1, 1, wx.EXPAND) + + b = self.CreateColorBitmap(wx.BLACK) + + s4 = wx.BoxSizer(wx.HORIZONTAL) + self._background_color = wx.BitmapButton(self, ID_BackgroundColor, b, wx.DefaultPosition, wx.Size(50,25)) + s4.Add((1, 1), 1, wx.EXPAND) + s4.Add(wx.StaticText(self, -1, "Background Color:")) + s4.Add(self._background_color) + s4.Add((1, 1), 1, wx.EXPAND) + s4.SetItemMinSize(1, (180, 20)) + + s5 = wx.BoxSizer(wx.HORIZONTAL) + self._sash_color = wx.BitmapButton(self, ID_SashColor, b, wx.DefaultPosition, wx.Size(50,25)) + s5.Add((1, 1), 1, wx.EXPAND) + s5.Add(wx.StaticText(self, -1, "Sash Color:")) + s5.Add(self._sash_color) + s5.Add((1, 1), 1, wx.EXPAND) + s5.SetItemMinSize(1, (180, 20)) + + s6 = wx.BoxSizer(wx.HORIZONTAL) + self._inactive_caption_color = wx.BitmapButton(self, ID_InactiveCaptionColor, b, + wx.DefaultPosition, wx.Size(50,25)) + s6.Add((1, 1), 1, wx.EXPAND) + s6.Add(wx.StaticText(self, -1, "Normal Caption:")) + s6.Add(self._inactive_caption_color) + s6.Add((1, 1), 1, wx.EXPAND) + s6.SetItemMinSize(1, (180, 20)) + + s7 = wx.BoxSizer(wx.HORIZONTAL) + self._inactive_caption_gradient_color = wx.BitmapButton(self, ID_InactiveCaptionGradientColor, + b, wx.DefaultPosition, wx.Size(50,25)) + s7.Add((1, 1), 1, wx.EXPAND) + s7.Add(wx.StaticText(self, -1, "Normal Caption Gradient:")) + s7.Add(self._inactive_caption_gradient_color) + s7.Add((1, 1), 1, wx.EXPAND) + s7.SetItemMinSize(1, (180, 20)) + + s8 = wx.BoxSizer(wx.HORIZONTAL) + self._inactive_caption_text_color = wx.BitmapButton(self, ID_InactiveCaptionTextColor, b, + wx.DefaultPosition, wx.Size(50,25)) + s8.Add((1, 1), 1, wx.EXPAND) + s8.Add(wx.StaticText(self, -1, "Normal Caption Text:")) + s8.Add(self._inactive_caption_text_color) + s8.Add((1, 1), 1, wx.EXPAND) + s8.SetItemMinSize(1, (180, 20)) + + s9 = wx.BoxSizer(wx.HORIZONTAL) + self._active_caption_color = wx.BitmapButton(self, ID_ActiveCaptionColor, b, + wx.DefaultPosition, wx.Size(50,25)) + s9.Add((1, 1), 1, wx.EXPAND) + s9.Add(wx.StaticText(self, -1, "Active Caption:")) + s9.Add(self._active_caption_color) + s9.Add((1, 1), 1, wx.EXPAND) + s9.SetItemMinSize(1, (180, 20)) + + s10 = wx.BoxSizer(wx.HORIZONTAL) + self._active_caption_gradient_color = wx.BitmapButton(self, ID_ActiveCaptionGradientColor, + b, wx.DefaultPosition, wx.Size(50,25)) + s10.Add((1, 1), 1, wx.EXPAND) + s10.Add(wx.StaticText(self, -1, "Active Caption Gradient:")) + s10.Add(self._active_caption_gradient_color) + s10.Add((1, 1), 1, wx.EXPAND) + s10.SetItemMinSize(1, (180, 20)) + + s11 = wx.BoxSizer(wx.HORIZONTAL) + self._active_caption_text_color = wx.BitmapButton(self, ID_ActiveCaptionTextColor, + b, wx.DefaultPosition, wx.Size(50,25)) + s11.Add((1, 1), 1, wx.EXPAND) + s11.Add(wx.StaticText(self, -1, "Active Caption Text:")) + s11.Add(self._active_caption_text_color) + s11.Add((1, 1), 1, wx.EXPAND) + s11.SetItemMinSize(1, (180, 20)) + + s12 = wx.BoxSizer(wx.HORIZONTAL) + self._border_color = wx.BitmapButton(self, ID_BorderColor, b, wx.DefaultPosition, + wx.Size(50,25)) + s12.Add((1, 1), 1, wx.EXPAND) + s12.Add(wx.StaticText(self, -1, "Border Color:")) + s12.Add(self._border_color) + s12.Add((1, 1), 1, wx.EXPAND) + s12.SetItemMinSize(1, (180, 20)) + + s13 = wx.BoxSizer(wx.HORIZONTAL) + self._gripper_color = wx.BitmapButton(self, ID_GripperColor, b, wx.DefaultPosition, + wx.Size(50,25)) + s13.Add((1, 1), 1, wx.EXPAND) + s13.Add(wx.StaticText(self, -1, "Gripper Color:")) + s13.Add(self._gripper_color) + s13.Add((1, 1), 1, wx.EXPAND) + s13.SetItemMinSize(1, (180, 20)) + + grid_sizer = wx.GridSizer(0, 2) + grid_sizer.SetHGap(5) + grid_sizer.Add(s1) + grid_sizer.Add(s4) + grid_sizer.Add(s2) + grid_sizer.Add(s5) + grid_sizer.Add(s3) + grid_sizer.Add(s13) + grid_sizer.Add((1, 1)) + grid_sizer.Add(s12) + grid_sizer.Add(s6) + grid_sizer.Add(s9) + grid_sizer.Add(s7) + grid_sizer.Add(s10) + grid_sizer.Add(s8) + grid_sizer.Add(s11) + + cont_sizer = wx.BoxSizer(wx.VERTICAL) + cont_sizer.Add(grid_sizer, 1, wx.EXPAND | wx.ALL, 5) + self.SetSizer(cont_sizer) + self.GetSizer().SetSizeHints(self) + + self._border_size.SetValue(frame.GetDockArt().GetMetric(wx.aui.AUI_DOCKART_PANE_BORDER_SIZE)) + self._sash_size.SetValue(frame.GetDockArt().GetMetric(wx.aui.AUI_DOCKART_SASH_SIZE)) + self._caption_size.SetValue(frame.GetDockArt().GetMetric(wx.aui.AUI_DOCKART_CAPTION_SIZE)) + + self.UpdateColors() + + self.Bind(wx.EVT_SPINCTRL, self.OnPaneBorderSize, id=ID_PaneBorderSize) + self.Bind(wx.EVT_SPINCTRL, self.OnSashSize, id=ID_SashSize) + self.Bind(wx.EVT_SPINCTRL, self.OnCaptionSize, id=ID_CaptionSize) + self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_BackgroundColor) + self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_SashColor) + self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_InactiveCaptionColor) + self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_InactiveCaptionGradientColor) + self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_InactiveCaptionTextColor) + self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_ActiveCaptionColor) + self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_ActiveCaptionGradientColor) + self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_ActiveCaptionTextColor) + self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_BorderColor) + self.Bind(wx.EVT_BUTTON, self.OnSetColor, id=ID_GripperColor) + + + def CreateColorBitmap(self, c): + image = wx.EmptyImage(25, 14) + + for x in xrange(25): + for y in xrange(14): + pixcol = c + if x == 0 or x == 24 or y == 0 or y == 13: + pixcol = wx.BLACK + + image.SetRGB(x, y, pixcol.Red(), pixcol.Green(), pixcol.Blue()) + + return image.ConvertToBitmap() + + + def UpdateColors(self): + + bk = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_BACKGROUND_COLOUR) + self._background_color.SetBitmapLabel(self.CreateColorBitmap(bk)) + + cap = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_INACTIVE_CAPTION_COLOUR) + self._inactive_caption_color.SetBitmapLabel(self.CreateColorBitmap(cap)) + + capgrad = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR) + self._inactive_caption_gradient_color.SetBitmapLabel(self.CreateColorBitmap(capgrad)) + + captxt = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR) + self._inactive_caption_text_color.SetBitmapLabel(self.CreateColorBitmap(captxt)) + + acap = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_ACTIVE_CAPTION_COLOUR) + self._active_caption_color.SetBitmapLabel(self.CreateColorBitmap(acap)) + + acapgrad = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR) + self._active_caption_gradient_color.SetBitmapLabel(self.CreateColorBitmap(acapgrad)) + + acaptxt = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR) + self._active_caption_text_color.SetBitmapLabel(self.CreateColorBitmap(acaptxt)) + + sash = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_SASH_COLOUR) + self._sash_color.SetBitmapLabel(self.CreateColorBitmap(sash)) + + border = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_BORDER_COLOUR) + self._border_color.SetBitmapLabel(self.CreateColorBitmap(border)) + + gripper = self._frame.GetDockArt().GetColour(wx.aui.AUI_DOCKART_GRIPPER_COLOUR) + self._gripper_color.SetBitmapLabel(self.CreateColorBitmap(gripper)) + + + def OnPaneBorderSize(self, event): + + self._frame.GetDockArt().SetMetric(wx.aui.AUI_DOCKART_PANE_BORDER_SIZE, + event.GetInt()) + self._frame.DoUpdate() + + + def OnSashSize(self, event): + + self._frame.GetDockArt().SetMetric(wx.aui.AUI_DOCKART_SASH_SIZE, + event.GetInt()) + self._frame.DoUpdate() + + + def OnCaptionSize(self, event): + + self._frame.GetDockArt().SetMetric(wx.aui.AUI_DOCKART_CAPTION_SIZE, + event.GetInt()) + self._frame.DoUpdate() + + + def OnSetColor(self, event): + + dlg = wx.ColourDialog(self._frame) + + dlg.SetTitle("Color Picker") + + if dlg.ShowModal() != wx.ID_OK: + return + + var = 0 + if event.GetId() == ID_BackgroundColor: + var = wx.aui.AUI_DOCKART_BACKGROUND_COLOUR + elif event.GetId() == ID_SashColor: + var = wx.aui.AUI_DOCKART_SASH_COLOUR + elif event.GetId() == ID_InactiveCaptionColor: + var = wx.aui.AUI_DOCKART_INACTIVE_CAPTION_COLOUR + elif event.GetId() == ID_InactiveCaptionGradientColor: + var = wx.aui.AUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR + elif event.GetId() == ID_InactiveCaptionTextColor: + var = wx.aui.AUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR + elif event.GetId() == ID_ActiveCaptionColor: + var = wx.aui.AUI_DOCKART_ACTIVE_CAPTION_COLOUR + elif event.GetId() == ID_ActiveCaptionGradientColor: + var = wx.aui.AUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR + elif event.GetId() == ID_ActiveCaptionTextColor: + var = wx.aui.AUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR + elif event.GetId() == ID_BorderColor: + var = wx.aui.AUI_DOCKART_BORDER_COLOUR + elif event.GetId() == ID_GripperColor: + var = wx.aui.AUI_DOCKART_GRIPPER_COLOUR + else: + return + + self._frame.GetDockArt().SetColor(var, dlg.GetColourData().GetColour()) + self._frame.DoUpdate() + self.UpdateColors() + + Added: trunk/lib/roreditor/MainFrame_Tools_ODefEditor.py =================================================================== --- trunk/lib/roreditor/MainFrame_Tools_ODefEditor.py (rev 0) +++ trunk/lib/roreditor/MainFrame_Tools_ODefEditor.py 2007-08-07 23:14:17 UTC (rev 159) @@ -0,0 +1,83 @@ +import sys, os, os.path + +from ror.logger import log +from ror.settingsManager import getSettingsManager + +import wx +import wx.aui + +import cStringIO + +ID_ChangeMainMeshTrans = wx.NewId() +ID_ChangeMainMeshVisibility = wx.NewId() +ID_ChangeNormalBoxesVisibility = wx.NewId() +ID_ChangeVirtualBoxesVisibility = wx.NewId() + +class OdefViewPanel(wx.Panel): + def __init__(self, parent, frame): + wx.Panel.__init__(self, parent, wx.ID_ANY, wx.DefaultPosition, + wx.DefaultSize) + self._frame = frame + self.parent = parent + + vert = wx.BoxSizer(wx.VERTICAL) + + s1 = wx.BoxSizer(wx.HORIZONTAL) + self.ObjTransparencySlider = wx.SpinCtrl(self, ID_ChangeMainMeshTrans, "", wx.DefaultPosition, wx.Size(50,20), min=0, max=100, initial=60) + s1.Add((1, 1), 1, wx.EXPAND) + s1.Add(wx.StaticText(self, -1, "Object Transparency:")) + s1.Add(self.ObjTransparencySlider) + s1.Add((1, 1), 1, wx.EXPAND) + vert.Add(s1, 0, wx.EXPAND | wx.LEFT | wx.BOTTOM, 5) + + self.chkMeshVisible = wx.CheckBox(self, ID_ChangeMainMeshVisibility, "Display Object", wx.DefaultPosition, wx.Size(50,20)) + vert.Add(self.chkMeshVisible, 0, wx.EXPAND | wx.LEFT | wx.BOTTOM, 5) + + self.chkBoxNormalVisible = wx.CheckBox(self, ID_ChangeNormalBoxesVisibility, "Display Collision Boxes", wx.DefaultPosition, wx.Size(50,20)) + vert.Add(self.chkBoxNormalVisible, 0, wx.EXPAND | wx.LEFT | wx.BOTTOM, 5) + + self.chkBoxVirtualVisible = wx.CheckBox(self, ID_ChangeVirtualBoxesVisibility, "Display Virtual Boxes", wx.DefaultPosition, wx.Size(50,20)) + self.chkBoxVirtualVisible.SetValue(True) + vert.Add(self.chkBoxVirtualVisible, 0, wx.EXPAND | wx.LEFT | wx.BOTTOM, 5) + + + self.Bind(wx.EVT_SPINCTRL, self.OnMainMeshTransChange, id=ID_ChangeMainMeshTrans) + self.Bind(wx.EVT_CHECKBOX, self.OnMainMeshVisibilityChange, id=ID_ChangeMainMeshVisibility) + self.Bind(wx.EVT_CHECKBOX, self.OnNormalBoxesVisibilityChange, id=ID_ChangeNormalBoxesVisibility) + self.Bind(wx.EVT_CHECKBOX, self.OnVirtualBoxesVisibilityChange, id=ID_ChangeVirtualBoxesVisibility) + + self.SetSizer(vert) + self.GetSizer().SetSizeHints(self) + self.resetControls() + + def resetControls(self): + self.chkMeshVisible.SetValue(True) + self.chkBoxNormalVisible.SetValue(True) + self.ObjTransparencySlider.SetValue(60) + + + def OnMainMeshTransChange(self, event): + self.parent.odefEditorOgreWin.setMainMeshTrans(event.GetInt()) + + def OnMainMeshVisibilityChange(self, event): + self.parent.odefEditorOgreWin.setMainMeshVisible(event.IsChecked()) + + def OnNormalBoxesVisibilityChange(self, event): + self.parent.odefEditorOgreWin.setBoxesVisibility("normal", event.IsChecked()) + + def OnVirtualBoxesVisibilityChange(self, event): + self.parent.odefEditorOgreWin.setBoxesVisibility("virtual", event.IsChecked()) + + def loadReadme(self): + if os.path.isfile(HELPFILENAME): + try: + f = open(HELPFILENAME,'r') + content = f.read() + f.close() + return content + except Exception, err: + log().error(str(err)) + return None + else: + log().error("TerrainEditor Readme not found: %s" % HELPFILENAME) + return None Added: trunk/lib/roreditor/MainFrame_old.py =================================================================== --- trunk/lib/roreditor/MainFrame_old.py (rev 0) +++ trunk/lib/roreditor/MainFrame_old.py 2007-08-07 23:14:17 UTC (rev 159) @@ -0,0 +1,412 @@ +#Thomas Fischer 31/05/2007, th...@th... +from wxogre.OgreManager import * +from ror.RoROgreWindow import * + +from ror.logger import log +from ror.settingsManager import getSettingsManager + +from ror.rorcommon import * +from RoRTerrainOgreWindow import * +from RoRTerrainSelectedObjectOgreWindow import * +from RoRTerrainSelectedObjectTopOgreWindow import * + +ID_ABOUT = 101 +ID_OPENFILE = 102 +ID_SAVEFILE = 103 +ID_VIEWOBJ = 104 +ID_OGRESET = 105 +ID_SHOWHELP = 106 +ID_ADDTRUCK = 107 +ID_ADDMESH = 108 +ID_CHECKUPDATE = 109 +ID_SAVEFILEAS = 110 +ID_TERRAINCOLLISION = 111 +ID_EXIT = 199 + +DATADIR = "data" +TRUCKDIR = os.path.join(DATADIR, "trucks") +TERRAINDIR = os.path.join(DATADIR, "terrains") +OBJECTDIR = os.path.join(DATADIR, "objects") + + +class MainFrame(wx.Frame): + def __init__(self, *args, **kwds): + kwds["style"] = wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.RESIZE_BORDER | wx.SYSTEM_MENU | wx.CAPTION | wx.CLIP_CHILDREN + + wx.Frame.__init__(self, *args, **kwds) + + + #main splitter + self.splitter = wx.SplitterWindow(self, wx.ID_ANY, style=wx.SP_PERMIT_UNSPLIT|wx.SP_3DSASH) + self.splitterleft = wx.Panel(self.splitter, wx.ID_ANY) + self.splitterright = wx.Panel(self.splitter, wx.ID_ANY) + self.splitter.SetSashGravity(1) + self.splitter.SetSashPosition(100) + self.splitter.SetMinimumPaneSize(200) + + #viewsplitter + self.viewsplitter = wx.SplitterWindow(self.splitterright, wx.ID_ANY) + self.viewsplitterup = wx.Panel(self.viewsplitter, wx.ID_ANY) + self.viewsplitterdown = wx.Panel(self.viewsplitter, wx.ID_ANY) + self.splitter.SetSashGravity(0.5) + self.splitter.SetSashPosition(100) + self.splitter.SetMinimumPaneSize(200) + + self.rordir = getSettingsManager().getSetting("RigsOfRods", "BasePath") + + #ogre windows + self.terrainOgreWin = RoRTerrainOgreWindow(self.splitterleft, wx.ID_ANY, rordir=self.rordir) + self.sharedOgreWin = RoRTerrainSelectedObjectOgreWindow(self.viewsplitterup, wx.ID_ANY, self.terrainOgreWin) + self.sharedOgreWin2 = RoRTerrainSelectedObjectTopOgreWindow(self.viewsplitterdown, wx.ID_ANY, self.terrainOgreWin) + + #some labels + #self.helptext = wx.StaticText(self.splitterleft, wx.ID_ANY, "short help: right click = ro... [truncated message content] |
From: <ror...@us...> - 2007-08-21 10:53:25
|
Revision: 166 http://roreditor.svn.sourceforge.net/roreditor/?rev=166&view=rev Author: rorthomas Date: 2007-08-21 03:53:21 -0700 (Tue, 21 Aug 2007) Log Message: ----------- dir structure 2 Added Paths: ----------- trunk/lib_common/ror/ trunk/lib_common/roreditor/ Removed Paths: ------------- trunk/lib_windows/ror/ trunk/lib_windows/roreditor/ Copied: trunk/lib_common/ror (from rev 165, trunk/lib_windows/ror) Copied: trunk/lib_common/roreditor (from rev 165, trunk/lib_windows/roreditor) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ror...@us...> - 2007-08-21 11:38:18
|
Revision: 167 http://roreditor.svn.sourceforge.net/roreditor/?rev=167&view=rev Author: rorthomas Date: 2007-08-21 04:38:15 -0700 (Tue, 21 Aug 2007) Log Message: ----------- first preparations for the linux build Modified Paths: -------------- trunk/lib_common/ror/depcheckerplugins/ror_mesh.py trunk/lib_common/ror/logger.py trunk/lib_common/ror/rorcommon.py trunk/lib_common/ror/settingsManager.py trunk/lib_common/ror/starter.py trunk/lib_common/wxogre/OgreManager.py trunk/lib_common/wxogre/wxOgreWindow.py trunk/roreditors.py trunk/rortoolkit.py trunk/tools/checkmods.py trunk/tools/depchecker.py trunk/tools/modgui.py trunk/tools/modtool.py trunk/tools/update.py Added Paths: ----------- trunk/lib_common/wxogre/ Removed Paths: ------------- trunk/lib_windows/wxogre/ Modified: trunk/lib_common/ror/depcheckerplugins/ror_mesh.py =================================================================== --- trunk/lib_common/ror/depcheckerplugins/ror_mesh.py 2007-08-21 10:53:21 UTC (rev 166) +++ trunk/lib_common/ror/depcheckerplugins/ror_mesh.py 2007-08-21 11:38:15 UTC (rev 167) @@ -1,108 +1,114 @@ import sys, os, os.path, re -import subprocess,os,sys,signal,pty,time,errno,thread +import subprocess,os,sys,signal,pty,time,errno,thread from deptools import * -# todo remove this hardcoded stuff here! -CONVERTERBIN = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..\\..\\..\\tools\\OgreCommandLineTools\\OgreXmlConverter.exe")) +cb = getSettingsManager().getSetting("RoRToolkit", "OgreXMLConverterExecutable") +if cb != '': + CONVERTERBIN = cb +else: + CONVERTERBIN = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "..", ".." "tools", "OgreCommandLineTools", "OgreXmlConverter.exe")) + + + REs = [r".*material\s?=[\"\']([a-zA-Z0-9_/\-\\]*)[\"\'].*"] def readFile(filename): - f=open(filename, 'r') - content = f.readlines() - f.close() - return content + f=open(filename, 'r') + content = f.readlines() + f.close() + return content def convertToXML(filename): - # try to convert to .msh.xml first! - cmd = CONVERTERBIN + " \"" + filename+"\"" - log().info("calling " + cmd) - - p = subprocess.Popen(cmd, shell = False, cwd = os.path.dirname(CONVERTERBIN), stderr = subprocess.PIPE, stdout = subprocess.PIPE) - smart_wait_for_subprocess(p, 10) - if not os.path.isfile(os.path.join(os.path.dirname(filename), os.path.basename(filename)+".xml")): - log().error("conversion of mesh file %s failed!" % filename) - log().info("mesh converted: " + filename) + # try to convert to .mesh.xml first! + cmd = CONVERTERBIN + " \"" + filename+"\"" + log().info("calling " + cmd) + p = subprocess.Popen(cmd, shell = False, cwd = os.path.dirname(CONVERTERBIN), stderr = subprocess.PIPE, stdout = subprocess.PIPE) + smart_wait_for_subprocess(p, 10) + if not os.path.isfile(os.path.join(os.path.dirname(filename), os.path.basename(filename)+".xml")): + log().error("conversion of mesh file %s failed!" % filename) + log().info("mesh converted: " + filename) + def smart_wait_for_subprocess(sp,timeout=30): - """ - Will wait for Process given to expire, and then kill it if - the time elapses (or never if timeout==0). - @param sp: Subprocess to watch - @param timeout: timeout length in seconds - """ - running=1 - try: - sleeps=timeout*4 - #Just wait around for termination... - - while sp.poll()==None: - #print>>efp,"WAITING:",sleeps - sleeps-=1 - time.sleep(.25) - os.kill(sp.pid,0) - if sleeps<=0 and timeout>0: - os.kill(sp.pid,signal.SIGTERM) - break - elif sleeps<=0: - break - #Did it REALLY exit? - try: - os.kill(sp.pid,0) - sleeps=20 - while sp.poll()==None: - #print>>efp,"KILLING:",sleeps - sleeps-=1 - time.sleep(.25) - - #No? KILL IT! - if sleeps<=0 and timeout>0: - #print>>efp,"KILLING2:",sleeps - os.kill(sp.pid,signal.SIGKILL) - break - elif sleeps<=0: - break - except: - running=0 - except: - #Make REALLY effing sure it exited. - os.kill(sp.pid,signal.SIGKILL) - #print>>efp,"KILLING2:",sleeps - - + """ + Will wait for Process given to expire, and then kill it if + the time elapses (or never if timeout==0). + @param sp: Subprocess to watch + @param timeout: timeout length in seconds + """ + running=1 + try: + sleeps=timeout*4 + #Just wait around for termination... + + while sp.poll()==None: + #print>>efp,"WAITING:",sleeps + sleeps-=1 + time.sleep(.25) + os.kill(sp.pid,0) + if sleeps<=0 and timeout>0: + os.kill(sp.pid,signal.SIGTERM) + break + elif sleeps<=0: + break + #Did it REALLY exit? + try: + os.kill(sp.pid,0) + sleeps=20 + while sp.poll()==None: + #print>>efp,"KILLING:",sleeps + sleeps-=1 + time.sleep(.25) + + #No? KILL IT! + if sleeps<=0 and timeout>0: + #print>>efp,"KILLING2:",sleeps + os.kill(sp.pid,signal.SIGKILL) + break + elif sleeps<=0: + break + except: + running=0 + except: + #Make REALLY effing sure it exited. + os.kill(sp.pid,signal.SIGKILL) + #print>>efp,"KILLING2:",sleeps + + def parseRE(content): - deps = [] - for line in content: - for r in REs: - m = re.match(r, line) - if not m is None and len(m.groups()) > 0: - depname = m.groups()[0] - if not depname in deps: - deps.append(depname) - return deps - - + deps = [] + for line in content: + for r in REs: + m = re.match(r, line) + if not m is None and len(m.groups()) > 0: + depname = m.groups()[0] + if not depname in deps: + deps.append(depname) + return deps + + def getDependencies(filename): - xmlfilename = os.path.join(os.path.dirname(filename), os.path.basename(filename)+".xml") - if not os.path.isfile(xmlfilename): - convertToXML(filename) - try: - content = readFile(xmlfilename) - except Exception, err: - log().error(str(err)) - return - dep = parseRE(content) - if len(dep) == 0: - log().info("no material found for file " + filename) - else: - return { - OPTIONAL:{ - }, - REQUIRES:{ - MATERIAL:dep, - }, - PROVIDES:{ - FILE:[filename], - }, - } + xmlfilename = os.path.join(os.path.dirname(filename), os.path.basename(filename)+".xml") + if not os.path.isfile(xmlfilename): + convertToXML(filename) + try: + content = readFile(xmlfilename) + except Exception, err: + log().error(str(err)) + return + dep = parseRE(content) + if len(dep) == 0: + log().info("no material found for file " + filename) + else: + return { + OPTIONAL:{ + }, + REQUIRES:{ + MATERIAL:dep, + }, + PROVIDES:{ + FILE:[filename], + }, + } Modified: trunk/lib_common/ror/logger.py =================================================================== --- trunk/lib_common/ror/logger.py 2007-08-21 10:53:21 UTC (rev 166) +++ trunk/lib_common/ror/logger.py 2007-08-21 11:38:15 UTC (rev 167) @@ -9,8 +9,9 @@ if _rorlogger is None: _rorlogger = RoRLogger() return _rorlogger.getLog() - -class RoRLogger(): + + +class RoRLogger: logconfigfilename = os.path.join(os.path.dirname(os.path.abspath(__file__)), LOGCONFIGFILE) def __init__(self): Modified: trunk/lib_common/ror/rorcommon.py =================================================================== --- trunk/lib_common/ror/rorcommon.py 2007-08-21 10:53:21 UTC (rev 166) +++ trunk/lib_common/ror/rorcommon.py 2007-08-21 11:38:15 UTC (rev 167) @@ -1,3 +1,4 @@ +import sys, os, os.path import wx from random import Random @@ -2,44 +3,57 @@ def ShowOnAbout(event = None): - rev = "" - try: - import ror.svn - rev = str(ror.svn.getRevision()) - except: - pass + rev = "" + try: + import ror.svn + rev = str(ror.svn.getRevision()) + except: + pass - dlg = wx.MessageDialog(None, "RoR Toolkit revision %s\nAuthors: Aperion, Thomas" % rev, - "About This", wx.OK | wx.ICON_INFORMATION) - dlg.ShowModal() - dlg.Destroy() + dlg = wx.MessageDialog(None, "RoR Toolkit revision %s\nAuthors: Aperion, Thomas" % rev, + "About This", wx.OK | wx.ICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() -uniqueIDs = [] +uniqueIDs = [] def randomID(num_bits=64): - global uniqueIDs - """Return a string representing a bitfield num_bits long. - Maximum artbitrarily set to 1025""" + global uniqueIDs + """Return a string representing a bitfield num_bits long. + Maximum artbitrarily set to 1025""" - if num_bits < 1: - raise RuntimeError,\ - "randomID called with negative (or zero) number of bits" - if num_bits > 1024: - raise RuntimeError,\ - "randomID called with too many bits (> 1024)" + if num_bits < 1: + raise RuntimeError,\ + "randomID called with negative (or zero) number of bits" + if num_bits > 1024: + raise RuntimeError,\ + "randomID called with too many bits (> 1024)" - # create a num_bits string from random import Random - rnd = Random() - tmp_id = 0L - for i in range(0, num_bits): - tmp_id += long(rnd.randint(0,1)) << i - #rof + # create a num_bits string from random import Random + rnd = Random() + tmp_id = 0L + for i in range(0, num_bits): + tmp_id += long(rnd.randint(0,1)) << i + #rof - # The 2: removes the '0x' and :-1 removes the L - rnd_id = hex(tmp_id)[2:-1] - - # this ensure that all ids are unique - if rnd_id in uniqueIDs: - rnd_id = randomID(num_bits) - else: - uniqueIDs.append(rnd_id) - - return rnd_id \ No newline at end of file + # The 2: removes the '0x' and :-1 removes the L + rnd_id = hex(tmp_id)[2:-1] + + # this ensure that all ids are unique + if rnd_id in uniqueIDs: + rnd_id = randomID(num_bits) + else: + uniqueIDs.append(rnd_id) + + return rnd_id + + +def checkRoRDirectory(): + rorexecutable = '' + if sys.platform in ['linux', 'linux2']: + rorexecutable = "RoR.bin" + elif sys.platform in ['win32']: + rorexecutable = "RoR.exe" + + import settingsManager + path = settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") + return os.path.isfile(os.path.join(path, rorexecutable)) + Modified: trunk/lib_common/ror/settingsManager.py =================================================================== --- trunk/lib_common/ror/settingsManager.py 2007-08-21 10:53:21 UTC (rev 166) +++ trunk/lib_common/ror/settingsManager.py 2007-08-21 11:38:15 UTC (rev 167) @@ -6,50 +6,50 @@ # singleton pattern _rorsettings = None def getSettingsManager(): - global _rorsettings - if _rorsettings is None: - _rorsettings = RoRSettings() - return _rorsettings + global _rorsettings + if _rorsettings is None: + _rorsettings = RoRSettings() + return _rorsettings class RoRSettings: - myConfig = None - configfilename = os.path.join(os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)),"..\\..")),CONFIGFILE) - #configfilename = os.path.join(os.path.dirname(os.path.abspath(__file__)), CONFIGFILE) - - def __init__(self): - self.loadSettings() - - def loadSettings(self): - try: - self.myConfig = ConfigParser.ConfigParser() - self.myConfig.read(self.configfilename) - logger.log().info("Settings loaded") - except Exception, e: - logger.log().exception(str(e)) - - def getSetting(self, group, key): - try: - return self.myConfig.get(group, key) - except Exception, e: - logger.log().exception(str(e)) - return "" + myConfig = None + configfilename = os.path.join(os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)),"..", "..")),CONFIGFILE) + #configfilename = os.path.join(os.path.dirname(os.path.abspath(__file__)), CONFIGFILE) - def saveSettings(self): - try: - fp = open(self.configfilename, 'w') - self.myConfig.write(fp) - fp.close() - logger.log().info("Settings saved") - except Exception, e: - logger.log().exception(str(e)) - - def setSetting(self, section, option, value): - try: - if not self.myConfig.has_section(section): - self.myConfig.add_section(section) - self.myConfig.set(section, option, value) - self.saveSettings() - return True - except Exception, e: - logger.log().exception(str(e)) - return False + def __init__(self): + self.loadSettings() + + def loadSettings(self): + try: + self.myConfig = ConfigParser.ConfigParser() + self.myConfig.read(self.configfilename) + logger.log().info("Settings loaded") + except Exception, e: + logger.log().exception(str(e)) + + def getSetting(self, group, key): + try: + return self.myConfig.get(group, key) + except Exception, e: + logger.log().exception(str(e)) + return "" + + def saveSettings(self): + try: + fp = open(self.configfilename, 'w') + self.myConfig.write(fp) + fp.close() + logger.log().info("Settings saved") + except Exception, e: + logger.log().exception(str(e)) + + def setSetting(self, section, option, value): + try: + if not self.myConfig.has_section(section): + self.myConfig.add_section(section) + self.myConfig.set(section, option, value) + self.saveSettings() + return True + except Exception, e: + logger.log().exception(str(e)) + return False Modified: trunk/lib_common/ror/starter.py =================================================================== --- trunk/lib_common/ror/starter.py 2007-08-21 10:53:21 UTC (rev 166) +++ trunk/lib_common/ror/starter.py 2007-08-21 11:38:15 UTC (rev 167) @@ -56,12 +56,16 @@ self.btnBugReport = wx.Button(self.panel, wx.ID_ANY, "Report a Bug") self.Bind(wx.EVT_BUTTON, self.OnBugReport, self.btnBugReport) + if sys.platform != 'win32': + self.btnBugReport.Enable(False) self.btnUpdate = wx.Button(self.panel, wx.ID_ANY, "Update") self.Bind(wx.EVT_BUTTON, self.OnUpdate, self.btnUpdate) self.btnDepGraph = wx.Button(self.panel, wx.ID_ANY, "Dependency Graph") self.Bind(wx.EVT_BUTTON, self.OnDepGraph, self.btnDepGraph) + if sys.platform != 'win32': + self.btnDepGraph.Enable(False) self.btnModUninstaller = wx.Button(self.panel, wx.ID_ANY, "Mod Uninstaller") self.Bind(wx.EVT_BUTTON, self.OnModUninstaller, self.btnModUninstaller) @@ -159,8 +163,14 @@ def OnStartRoR(self, event=None): + rorexecutable = '' + if sys.platform in ['linux', 'linux2']: + rorexecutable = "RoR" + elif sys.platform in ['win32']: + rorexecutable = "RoR.exe" + try: - path = os.path.join(self.rordir, "RoR.exe") + path = os.path.join(self.rordir, rorexecutable) log().info("starting RoR: %s" % path) p = Popen(path, shell = False, cwd = self.rordir) #sts = os.waitpid(p.pid, 0) @@ -180,11 +190,11 @@ def OnBugReport(self, event=None): try: if self.checkForUpdate(): - dlg = wx.MessageDialog(self, "Update Available!\nPlease update prior submitting a BugReport!", "Info", wx.OK | wx.ICON_INFORMATION) - dlg.ShowModal() - dlg.Destroy() - self.btnBugReport.Enable(False) - return + dlg = wx.MessageDialog(self, "Update Available!\nPlease update prior submitting a BugReport!", "Info", wx.OK | wx.ICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() + self.btnBugReport.Enable(False) + return log().info("starting bugreporter") import ror.bugreport @@ -210,8 +220,7 @@ # dlg.Destroy() # return False - exists = os.path.isfile(os.path.join(fn,"RoR.exe")) - if not exists: + if not checkRoRDirectory(): dlg = wx.MessageDialog(self, "RoR.exe not found in the selected directory!\nPlease select a new directory!", "Error", wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() dlg.Destroy() Copied: trunk/lib_common/wxogre (from rev 165, trunk/lib_windows/wxogre) Modified: trunk/lib_common/wxogre/OgreManager.py =================================================================== --- trunk/lib_windows/wxogre/OgreManager.py 2007-08-21 10:52:43 UTC (rev 165) +++ trunk/lib_common/wxogre/OgreManager.py 2007-08-21 11:38:15 UTC (rev 167) @@ -26,7 +26,7 @@ return True -class OgreManager(): +class OgreManager: renderWindows = {} def restart(self): Modified: trunk/lib_common/wxogre/wxOgreWindow.py =================================================================== --- trunk/lib_windows/wxogre/wxOgreWindow.py 2007-08-21 10:52:43 UTC (rev 165) +++ trunk/lib_common/wxogre/wxOgreWindow.py 2007-08-21 11:38:15 UTC (rev 167) @@ -44,7 +44,7 @@ if not self.sceneManager is None: getOgreManager().destroySceneManager(self.sceneManager) - def _OnSize(self, event): + def _OnSize(self, event): """ Is called when the ogre Window is getting resized @param event: the sizing event Modified: trunk/roreditors.py =================================================================== --- trunk/roreditors.py 2007-08-21 10:53:21 UTC (rev 166) +++ trunk/roreditors.py 2007-08-21 11:38:15 UTC (rev 167) @@ -1,3 +1,4 @@ +#!/bin/env python #Thomas Fischer 31/05/2007, th...@th... import sys, os, os.path @@ -2,25 +3,32 @@ def main(): - """ - main method - """ - - sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib")) - import ror.settingsManager - path = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") - if not os.path.isfile(os.path.join(path,"RoR.exe")): - import ror.starter - ror.starter.startApp() + """ + main method + """ + rorexecutable = '' + if sys.platform in ['linux', 'linux2']: + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib_common")) + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib_linux")) + rorexecutable = "RoR.bin" + elif sys.platform in ['win32']: + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib_common")) + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib_windows")) + rorexecutable = "RoR.exe" - # Import Psyco if available - try: - import psyco - psyco.full() - except ImportError: - pass + import ror.rorcommon + if not ror.rorcommon.checkRoRDirectory(): + import ror.starter + ror.starter.startApp() - import roreditor.MainFrame - roreditor.MainFrame.startApp() + # Import Psyco if available + try: + import psyco + psyco.full() + except ImportError: + pass + import roreditor.MainFrame + roreditor.MainFrame.startApp() -if __name__=="__main__": - main() \ No newline at end of file + +if __name__=="__main__": + main() \ No newline at end of file Modified: trunk/rortoolkit.py =================================================================== --- trunk/rortoolkit.py 2007-08-21 10:53:21 UTC (rev 166) +++ trunk/rortoolkit.py 2007-08-21 11:38:15 UTC (rev 167) @@ -1,3 +1,4 @@ +#!/bin/env python #Thomas Fischer 31/05/2007, th...@th... import sys, os, os.path @@ -2,22 +3,26 @@ def main(): - """ - main method - """ - - sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib")) + """ + main method + """ + if sys.platform in ['linux', 'linux2']: + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib_common")) + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib_linux")) + elif sys.platform in ['win32']: + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib_common")) + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib_windows")) - # Import Psyco if available - try: - import psyco - #psyco.full() - #psyco.log() - #psyco.profile() - except ImportError: - pass + # Import Psyco if available + try: + import psyco + #psyco.full() + #psyco.log() + #psyco.profile() + except ImportError: + pass - import ror.starter - ror.starter.startApp() + import ror.starter + ror.starter.startApp() -if __name__=="__main__": - main() \ No newline at end of file +if __name__=="__main__": + main() \ No newline at end of file Modified: trunk/tools/checkmods.py =================================================================== --- trunk/tools/checkmods.py 2007-08-21 10:53:21 UTC (rev 166) +++ trunk/tools/checkmods.py 2007-08-21 11:38:15 UTC (rev 167) @@ -1,45 +1,51 @@ import os.path, sys, installmod, time -sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib")) +if sys.platform in ['linux', 'linux2']: + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_common")) + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_linux")) +elif sys.platform in ['win32']: + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_common")) + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_windows")) + from ror.logger import log from ror.settingsManager import getSettingsManager def getFiles(top): - fl = {} - for root, dirs, files in os.walk(top): - for f in files: - fn = os.path.join(root, f) - fl[fn] = {} - for fk in fl.keys(): - log().info("%10s %s" % ("", os.path.basename(fk))) - - log().info("found %d files!" % (len(fl.keys()))) - return fl + fl = {} + for root, dirs, files in os.walk(top): + for f in files: + fn = os.path.join(root, f) + fl[fn] = {} + for fk in fl.keys(): + log().info("%10s %s" % ("", os.path.basename(fk))) + log().info("found %d files!" % (len(fl.keys()))) + return fl + def main(): - dir = sys.argv[1] - mode = sys.argv[2] - files = getFiles(dir) - valid={} - counter = 0 - countervalid = 0 - for file in files.keys(): - log().info("## %s (%d/%d)##################################" % (os.path.basename(file), counter, len(files))) - counter += 1 - mods = installmod.work(mode, file, verbose=(len(sys.argv)== 4 and sys.argv[3] == "--verbose"), dryrun=True) - if len(mods) == 0: - log().info("!!! INVALID: "+ os.path.basename(file)) - else: - log().info("VALID: "+ os.path.basename(file)) - valid[file] = mods - log().info("#######################################################################") - time.sleep(0.01) - log().info("===========================================================") - log().info("===== FINISHED found, valid mods:") - for f in valid.keys(): - log().info( f + str(valid[f])) - log().info("%d of %d files containing valid mods!" % (len(valid), len(files))) - + dir = sys.argv[1] + mode = sys.argv[2] + files = getFiles(dir) + valid={} + counter = 0 + countervalid = 0 + for file in files.keys(): + log().info("## %s (%d/%d)##################################" % (os.path.basename(file), counter, len(files))) + counter += 1 + mods = installmod.work(mode, file, verbose=(len(sys.argv)== 4 and sys.argv[3] == "--verbose"), dryrun=True) + if len(mods) == 0: + log().info("!!! INVALID: "+ os.path.basename(file)) + else: + log().info("VALID: "+ os.path.basename(file)) + valid[file] = mods + log().info("#######################################################################") + time.sleep(0.01) + log().info("===========================================================") + log().info("===== FINISHED found, valid mods:") + for f in valid.keys(): + log().info( f + str(valid[f])) + log().info("%d of %d files containing valid mods!" % (len(valid), len(files))) + if __name__=="__main__": - main() \ No newline at end of file + main() \ No newline at end of file Modified: trunk/tools/depchecker.py =================================================================== --- trunk/tools/depchecker.py 2007-08-21 10:53:21 UTC (rev 166) +++ trunk/tools/depchecker.py 2007-08-21 11:38:15 UTC (rev 167) @@ -2,55 +2,59 @@ import sys, os, os.path def usage(): - print "usage: %s <path to inspect> <all or unused or missing>" % os.path.basename(sys.argv[0]) - print "for example: %s c:\\ror\\data missing" % os.path.basename(sys.argv[0]) - print " valid modes:" - print " 'all' displays all dependencies, inclusive fulfilled ones" - print " 'missing' displays only unfulfilled dependencies" - print " 'unused' displays resources that are not in use" - print " 'dtree <resourcename>' displays the dependency tree of the given resource name" - print " 'md5sum' creates the md5sums of all files" - sys.exit(0) - - + print "usage: %s <path to inspect> <all or unused or missing>" % os.path.basename(sys.argv[0]) + print "for example: %s c:\\ror\\data missing" % os.path.basename(sys.argv[0]) + print " valid modes:" + print " 'all' displays all dependencies, inclusive fulfilled ones" + print " 'missing' displays only unfulfilled dependencies" + print " 'unused' displays resources that are not in use" + print " 'dtree <resourcename>' displays the dependency tree of the given resource name" + print " 'md5sum' creates the md5sums of all files" + sys.exit(0) + + def main(): - """ - main method - """ + """ + main method + """ + if sys.platform in ['linux', 'linux2']: + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_common")) + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_linux")) + elif sys.platform in ['win32']: + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_common")) + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_windows")) - sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib")) - import ror.settingsManager - path = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") - if not os.path.isfile(os.path.join(path,"RoR.exe")): - import ror.starter - ror.starter.startApp() + import ror.rorcommon + if not ror.rorcommon.checkRoRDirectory(): + import ror.starter + ror.starter.startApp() - # Import Psyco if available - try: - import psyco - psyco.full() - except ImportError: - pass + # Import Psyco if available + try: + import psyco + psyco.full() + except ImportError: + pass - if len(sys.argv) < 3: - usage() - path = sys.argv[1] - if path.strip() == "rordir": - path = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") - if not os.path.isdir(path): - print "%s is not a valid directory!" % path - usage() - if (len(sys.argv) == 3 and sys.argv[2] in ['all', 'missing', 'unused', 'record']) or (len(sys.argv) == 4 and sys.argv[2] in ['dtree']): - pass - else: - print "%s is not a valid mode, or incorrect arguments!" % sys.argv[2] - usage() - - import ror.depchecker - dependfilename = "" - if len(sys.argv) == 4 and sys.argv[2] in ['dtree'] and sys.argv[3].strip() != "": - dependfilename = sys.argv[3].strip() - ror.depchecker.RoRDepChecker(path , sys.argv[2], dependfilename) - -if __name__=="__main__": - main() \ No newline at end of file + if len(sys.argv) < 3: + usage() + path = sys.argv[1] + if path.strip() == "rordir": + path = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") + if not os.path.isdir(path): + print "%s is not a valid directory!" % path + usage() + if (len(sys.argv) == 3 and sys.argv[2] in ['all', 'missing', 'unused', 'record']) or (len(sys.argv) == 4 and sys.argv[2] in ['dtree']): + pass + else: + print "%s is not a valid mode, or incorrect arguments!" % sys.argv[2] + usage() + + import ror.depchecker + dependfilename = "" + if len(sys.argv) == 4 and sys.argv[2] in ['dtree'] and sys.argv[3].strip() != "": + dependfilename = sys.argv[3].strip() + ror.depchecker.RoRDepChecker(path , sys.argv[2], dependfilename) + +if __name__=="__main__": + main() \ No newline at end of file Modified: trunk/tools/modgui.py =================================================================== --- trunk/tools/modgui.py 2007-08-21 10:53:21 UTC (rev 166) +++ trunk/tools/modgui.py 2007-08-21 11:38:15 UTC (rev 167) @@ -1,7 +1,12 @@ #Thomas Fischer 31/05/2007, th...@th... import sys, os, os.path, shutil -sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib")) +if sys.platform in ['linux', 'linux2']: + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_common")) + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_linux")) +elif sys.platform in ['win32']: + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_common")) + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_windows")) from ror.logger import log from ror.settingsManager import getSettingsManager @@ -9,49 +14,48 @@ import wx def main(): - log().info("modgui started") - import wx - app = wx.PySimpleApp(0) - wx.InitAllImageHandlers() #you may or may not need this - - # check for valid RoR Directory! - import ror.settingsManager - rorpath = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") - if not os.path.isfile(os.path.join(rorpath,"RoR.exe")): - import ror.starter - ror.starter.startApp() - return + log().info("modgui started") + import wx + app = wx.PySimpleApp(0) + wx.InitAllImageHandlers() #you may or may not need this - if len(sys.argv) == 1: - log().error("missing arguments") - return - mode = sys.argv[1] - if mode in ["uninstall"]: - frame_1 = ror.modgui.ModGUI(None, -1, "") - app.SetTopWindow(frame_1) - frame_1.Show() - app.MainLoop() + # check for valid RoR Directory! + import ror.rorcommon + if not ror.rorcommon.checkRoRDirectory(): + import ror.starter + ror.starter.startApp() + return - elif mode in ['installrepo']: - if len(sys.argv) != 3: - return - targetfile = sys.argv[2] - import ror.modtool - result = ror.modtool.ModTool().work(mode, targetfile, False, False) - if result == False or result is None: - msg = "Installation failed! :( Please have a look at the file editorlog.log" - else: - msg = "Installation successfull! Mods installed:\n %s" % ", ".join(result) - dlg = wx.MessageDialog(None, msg, "Info", wx.OK | wx.ICON_INFORMATION) - dlg.ShowModal() - dlg.Destroy() - else: - log().error("function %s not implemented in gui version!" % mode) - return + if len(sys.argv) == 1: + log().error("missing arguments") + return + mode = sys.argv[1] + if mode in ["uninstall"]: + frame_1 = ror.modgui.ModGUI(None, -1, "") + app.SetTopWindow(frame_1) + frame_1.Show() + app.MainLoop() + elif mode in ['installrepo']: + if len(sys.argv) != 3: + return + targetfile = sys.argv[2] + import ror.modtool + result = ror.modtool.ModTool().work(mode, targetfile, False, False) + if result == False or result is None: + msg = "Installation failed! :( Please have a look at the file editorlog.log" + else: + msg = "Installation successfull! Mods installed:\n %s" % ", ".join(result) + dlg = wx.MessageDialog(None, msg, "Info", wx.OK | wx.ICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() + else: + log().error("function %s not implemented in gui version!" % mode) + return + if __name__=="__main__": - main() + main() Modified: trunk/tools/modtool.py =================================================================== --- trunk/tools/modtool.py 2007-08-21 10:53:21 UTC (rev 166) +++ trunk/tools/modtool.py 2007-08-21 11:38:15 UTC (rev 167) @@ -1,90 +1,94 @@ #Thomas Fischer 31/05/2007, th...@th... import sys, os, os.path, shutil -sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib")) +if sys.platform in ['linux', 'linux2']: + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_common")) + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_linux")) +elif sys.platform in ['win32']: + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_common")) + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_windows")) from ror.logger import log from ror.settingsManager import getSettingsManager def usage(): - print "usage (general): %s <mode> <additionaloptions> [--verbose] [--dryrun]" % (os.path.basename(sys.argv[0])) - print "list <filename>" - print " list all found and valid modifications in filename" - print "" - print "listall <filename> --verbose" - print " list all found modifications in filename (valid and invalid)" - print "" - print "installall <filename> --verbose --dryrun" - print " install all found modifications in filename" - print "" - print "installrepo <filename> --verbose --dryrun" - print " install all found modifications in filename that is downloaded from the repository" - print "" - print "install <filename> <modification> --verbose --dryrun" - print " install a certain modifications in filename (valid and invalid)" - print "" - print "listinstalled" - print " lists all installed RoR Mods" - print "" - print "uninstall <modname> --verbose --dryrun" - print " uninstalls a mod" - print "" - print "notes: the --verbose option is optional to increase the output for debugging" - print " the --dryrun option is optional and prints out what would be done" - sys.exit(0) + print "usage (general): %s <mode> <additionaloptions> [--verbose] [--dryrun]" % (os.path.basename(sys.argv[0])) + print "list <filename>" + print " list all found and valid modifications in filename" + print "" + print "listall <filename> --verbose" + print " list all found modifications in filename (valid and invalid)" + print "" + print "installall <filename> --verbose --dryrun" + print " install all found modifications in filename" + print "" + print "installrepo <filename> --verbose --dryrun" + print " install all found modifications in filename that is downloaded from the repository" + print "" + print "install <filename> <modification> --verbose --dryrun" + print " install a certain modifications in filename (valid and invalid)" + print "" + print "listinstalled" + print " lists all installed RoR Mods" + print "" + print "uninstall <modname> --verbose --dryrun" + print " uninstalls a mod" + print "" + print "notes: the --verbose option is optional to increase the output for debugging" + print " the --dryrun option is optional and prints out what would be done" + sys.exit(0) def main(): - # check for valid RoR Directory! - import ror.settingsManager - rorpath = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") - if not os.path.isfile(os.path.join(rorpath,"RoR.exe")): - import ror.starter - ror.starter.startApp() + # check for valid RoR Directory! + import ror.rorcommon + if not ror.rorcommon.checkRoRDirectory(): + import ror.starter + ror.starter.startApp() - if len(sys.argv) < 2: - usage() + if len(sys.argv) < 2: + usage() - mode = sys.argv[1] - if not mode in ['list', 'listall', 'install', 'installall', 'listinstalled','uninstall', 'installrepo']: - usage() - if len(sys.argv) < 4 and mode in ['install']: - usage() - - if mode in ['list', 'listall', 'install', 'installall']: - targetfile = sys.argv[2] - if not os.path.isfile(targetfile): - log().error("%s is not a valid target filename!" % targetfile) - usage() - elif mode in ['listinstalled']: - targetfile = rorpath - elif mode in ['installrepo']: - targetfile = sys.argv[2] - elif mode == 'uninstall': - targetfile = sys.argv[2] - - # get optional flags - verbose = False - dryrun = False - for option in sys.argv: - if option == "--verbose": - verbose = True - if option == "--dryrun": - dryrun = True + mode = sys.argv[1] + if not mode in ['list', 'listall', 'install', 'installall', 'listinstalled','uninstall', 'installrepo']: + usage() + if len(sys.argv) < 4 and mode in ['install']: + usage() - # Import Psyco if available - try: - import psyco - psyco.full() - except ImportError: - pass - - if len(sys.argv) == 4: - installtarget = sys.argv[3] - else: - installtarget = None - import ror.modtool - result = ror.modtool.ModTool().work(mode, targetfile, verbose, dryrun, installtarget) - + if mode in ['list', 'listall', 'install', 'installall']: + targetfile = sys.argv[2] + if not os.path.isfile(targetfile): + log().error("%s is not a valid target filename!" % targetfile) + usage() + elif mode in ['listinstalled']: + targetfile = rorpath + elif mode in ['installrepo']: + targetfile = sys.argv[2] + elif mode == 'uninstall': + targetfile = sys.argv[2] + # get optional flags + verbose = False + dryrun = False + for option in sys.argv: + if option == "--verbose": + verbose = True + if option == "--dryrun": + dryrun = True + + # Import Psyco if available + try: + import psyco + psyco.full() + except ImportError: + pass + + if len(sys.argv) == 4: + installtarget = sys.argv[3] + else: + installtarget = None + import ror.modtool + result = ror.modtool.ModTool().work(mode, targetfile, verbose, dryrun, installtarget) + + if __name__=="__main__": - main() + main() Modified: trunk/tools/update.py =================================================================== --- trunk/tools/update.py 2007-08-21 10:53:21 UTC (rev 166) +++ trunk/tools/update.py 2007-08-21 11:38:15 UTC (rev 167) @@ -1,21 +1,27 @@ import sys, os, os.path def main(): - sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib")) - guiVersion = (os.path.basename(sys.executable).lower() == "pythonw.exe") - if guiVersion: - import wx - - MainApp = wx.PySimpleApp(0) - wx.InitAllImageHandlers() #you may or may not need this + if sys.platform in ['linux', 'linux2']: + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_common")) + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_linux")) + elif sys.platform in ['win32']: + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_common")) + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_windows")) - import ror.svngui - gui = ror.svngui.svnUpdate(False) - del gui - else: - #non-gui version: - import ror.svn - ror.svn.run() + guiVersion = (os.path.basename(sys.executable).lower() == "pythonw.exe") + if guiVersion: + import wx -if __name__=="__main__": - main() \ No newline at end of file + MainApp = wx.PySimpleApp(0) + wx.InitAllImageHandlers() #you may or may not need this + + import ror.svngui + gui = ror.svngui.svnUpdate(False) + del gui + else: + #non-gui version: + import ror.svn + ror.svn.run() + +if __name__=="__main__": + main() \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ror...@us...> - 2007-08-26 11:07:22
|
Revision: 168 http://roreditor.svn.sourceforge.net/roreditor/?rev=168&view=rev Author: rorthomas Date: 2007-08-25 02:22:40 -0700 (Sat, 25 Aug 2007) Log Message: ----------- update Modified Paths: -------------- trunk/lib_common/roreditor/RoRTruckOgreWindow.py Added Paths: ----------- trunk/linux/ trunk/linux/Plugin_BSPSceneManager.so trunk/linux/Plugin_CgProgramManager.so trunk/linux/Plugin_OctreeSceneManager.so trunk/linux/Plugin_ParticleFX.so trunk/linux/RenderSystem_GL.so trunk/linux/bin/ trunk/linux/bin/openal-config trunk/linux/include/ trunk/linux/include/AL/ trunk/linux/include/AL/al.h trunk/linux/include/AL/alc.h trunk/linux/include/AL/alext.h trunk/linux/include/ogg/ trunk/linux/include/ogg/config_types.h trunk/linux/include/ogg/ogg.h trunk/linux/include/ogg/os_types.h trunk/linux/include/vorbis/ trunk/linux/include/vorbis/codec.h trunk/linux/include/vorbis/vorbisenc.h trunk/linux/include/vorbis/vorbisfile.h trunk/linux/libCEGUIBase.so trunk/linux/libCEGUIBase.so.1 trunk/linux/libCEGUIBase.so.1.0.0 trunk/linux/libCEGUIDevILImageCodec.so trunk/linux/libCEGUIDevILImageCodec.so.0 trunk/linux/libCEGUIDevILImageCodec.so.0.0.0 trunk/linux/libCEGUIExpatParser.so trunk/linux/libCEGUIExpatParser.so.0 trunk/linux/libCEGUIExpatParser.so.0.0.0 trunk/linux/libCEGUIFalagardWRBase.so trunk/linux/libCEGUIFalagardWRBase.so.1 trunk/linux/libCEGUIFalagardWRBase.so.1.0.0 trunk/linux/libCEGUIFreeImageImageCodec.so trunk/linux/libCEGUIFreeImageImageCodec.so.0 trunk/linux/libCEGUIFreeImageImageCodec.so.0.0.0 trunk/linux/libCEGUIOgreRenderer-1.4.2.so trunk/linux/libCEGUIOgreRenderer.so trunk/linux/libCEGUIOpenGLRenderer.so trunk/linux/libCEGUIOpenGLRenderer.so.0 trunk/linux/libCEGUIOpenGLRenderer.so.0.0.1 trunk/linux/libCEGUITGAImageCodec.so trunk/linux/libCEGUITGAImageCodec.so.0 trunk/linux/libCEGUITGAImageCodec.so.0.0.0 trunk/linux/libCEGUITinyXMLParser.so trunk/linux/libCEGUITinyXMLParser.so.0 trunk/linux/libCEGUITinyXMLParser.so.0.0.0 trunk/linux/libCg.so trunk/linux/libCgGL.so trunk/linux/libNewton.a trunk/linux/libOIS-1.0.0.so trunk/linux/libOIS.a trunk/linux/libOIS.so trunk/linux/libOgreAL.so trunk/linux/libOgreAL.so.0 trunk/linux/libOgreAL.so.0.0.0 trunk/linux/libOgreMain-1.4.2.so trunk/linux/libOgreMain.so trunk/linux/libOgreNewt.so trunk/linux/libOgreOde_Core.a trunk/linux/libOgreOde_Core.so trunk/linux/libOgreOde_Core.so.0 trunk/linux/libOgreOde_Core.so.0.0.0 trunk/linux/libOgreOde_Loader.a trunk/linux/libOgreOde_Loader.so trunk/linux/libOgreOde_Loader.so.0 trunk/linux/libOgreOde_Loader.so.0.0.0 trunk/linux/libOgreOde_Prefab.a trunk/linux/libOgreOde_Prefab.so trunk/linux/libOgreOde_Prefab.so.0 trunk/linux/libOgreOde_Prefab.so.0.0.0 trunk/linux/libalut.a trunk/linux/libalut.so trunk/linux/libalut.so.0 trunk/linux/libalut.so.0.1.0 trunk/linux/libboost_python-gcc41-1_34.a trunk/linux/libboost_python-gcc41-1_34.so trunk/linux/libboost_python-gcc41-1_34.so.1.34.0 trunk/linux/libboost_python-gcc41-d-1_34.a trunk/linux/libboost_python-gcc41-d-1_34.so trunk/linux/libboost_python-gcc41-d-1_34.so.1.34.0 trunk/linux/libboost_python-gcc41-d.a trunk/linux/libboost_python-gcc41-d.so trunk/linux/libboost_python-gcc41-mt-1_34.a trunk/linux/libboost_python-gcc41-mt-1_34.so trunk/linux/libboost_python-gcc41-mt-1_34.so.1.34.0 trunk/linux/libboost_python-gcc41-mt-d-1_34.a trunk/linux/libboost_python-gcc41-mt-d-1_34.so trunk/linux/libboost_python-gcc41-mt-d-1_34.so.1.34.0 trunk/linux/libboost_python-gcc41-mt-d.a trunk/linux/libboost_python-gcc41-mt-d.so trunk/linux/libboost_python-gcc41-mt.a trunk/linux/libboost_python-gcc41-mt.so trunk/linux/libboost_python-gcc41.a trunk/linux/libboost_python-gcc41.so trunk/linux/libfreeimage-3.9.3.so trunk/linux/libfreeimage.a trunk/linux/libfreeimage.so.3 trunk/linux/libode.a trunk/linux/libode.so trunk/linux/libogg.a trunk/linux/libogg.so trunk/linux/libogg.so.0 trunk/linux/libogg.so.0.5.3 trunk/linux/libopenal.a trunk/linux/libopenal.so trunk/linux/libopenal.so.0 trunk/linux/libopenal.so.0.0.0 trunk/linux/libvorbis.a trunk/linux/libvorbis.so trunk/linux/libvorbis.so.0 trunk/linux/libvorbis.so.0.3.1 trunk/linux/libvorbisenc.a trunk/linux/libvorbisenc.so trunk/linux/libvorbisenc.so.2 trunk/linux/libvorbisenc.so.2.0.2 trunk/linux/libvorbisfile.a trunk/linux/libvorbisfile.so trunk/linux/libvorbisfile.so.3 trunk/linux/libvorbisfile.so.3.1.1 trunk/plugins_linux.cfg trunk/plugins_windows.cfg trunk/windows/ trunk/windows/Plugin_BSPSceneManager.dll trunk/windows/Plugin_CgProgramManager.dll trunk/windows/Plugin_OctreeSceneManager.dll trunk/windows/Plugin_ParticleFX.dll trunk/windows/RenderSystem_Direct3D9.dll trunk/windows/RenderSystem_GL.dll Modified: trunk/lib_common/roreditor/RoRTruckOgreWindow.py =================================================================== --- trunk/lib_common/roreditor/RoRTruckOgreWindow.py 2007-08-21 11:38:15 UTC (rev 167) +++ trunk/lib_common/roreditor/RoRTruckOgreWindow.py 2007-08-25 09:22:40 UTC (rev 168) @@ -1,9 +1,12 @@ #Thomas Fischer 31/05/2007, th...@th... +# see revision 67 for new camera changes!! + import wx, os, os.path -import ogre.renderer.OGRE as ogre +import ogre.renderer.OGRE as ogre from ror.truckparser import * -from ror.camera import * +#from ror.camera import * + from ror.logger import log from ror.settingsManager import getSettingsManager @@ -19,802 +22,806 @@ #from random import random class RoRTruckOgreWindow(wxOgreWindow): - def __init__(self, parent, ID, size = wx.Size(200,200), **kwargs): - self.parent = parent - self.rordir = getSettingsManager().getSetting("RigsOfRods", "BasePath") - self.World = OgreNewt.World() - self.sceneManager = None - self.uvFrame = None - self.clearlist = {'entity':[]} - self.bodies = [] - self.initScene() - wxOgreWindow.__init__(self, parent, ID, size = size, **kwargs) + def __init__(self, parent, ID, size = wx.Size(200,200), **kwargs): + self.parent = parent + self.rordir = getSettingsManager().getSetting("RigsOfRods", "BasePath") + self.World = OgreNewt.World() + self.sceneManager = None + self.uvFrame = None + self.clearlist = {'entity':[]} + self.bodies = [] + self.initScene() + wxOgreWindow.__init__(self, parent, ID, size = size, **kwargs) - def initScene(self, resetCam = True): - if not self.sceneManager is None: - self.sceneManager.destroyAllManualObjects() - self.EntityCount = 0 - - - # try to clear things up - try: - if self.nodes != {}: - for n in self.nodes: - n[0].detachAllObjects() - self.sceneManager.destroySceneNode(n[0].getName()) - except: - pass - try: - for e in self.clearlist['entity']: - print e - self.sceneManager.destroyEntity(e) - except: - pass - try: - self.uvFrame.Close() - except: - pass - self.nodes = {} - self.beams = {} - self.shocks = {} - self.submeshs = {} - self.selection = None - self.enablephysics = False - if resetCam: - self.modeSettings = {} - self.camMode = "3d" + def initScene(self, resetCam = True): + if not self.sceneManager is None: + self.sceneManager.destroyAllManualObjects() + self.EntityCount = 0 - - def __del__ (self): - ## delete the world when we're done. - del self.bodies - del self.World - - def OnFrameStarted(self): - if self.enablephysics: - self.World.update(TIMER) - self.updateBeams() - pass - - def OnFrameEnded(self): - pass + # try to clear things up + try: + if self.nodes != {}: + for n in self.nodes: + n[0].detachAllObjects() + self.sceneManager.destroySceneNode(n[0].getName()) + except: + pass + try: + for e in self.clearlist['entity']: + print e + self.sceneManager.destroyEntity(e) + except: + pass + try: + self.uvFrame.Close() + except: + pass + self.nodes = {} + self.beams = {} + self.shocks = {} + self.submeshs = {} + self.selection = None + self.enablephysics = False + if resetCam: + self.modeSettings = {} + self.camMode = "3d" - def SceneInitialisation(self): - addresources = [self.rordir+"\\data\\trucks",self.rordir+"\\data\\objects"] - # only init things in the main window, not in shared ones! - # setup resources - for r in addresources: - ogre.ResourceGroupManager.getSingleton().addResourceLocation(r, "FileSystem", "General", False) - ogre.ResourceGroupManager.getSingleton().addResourceLocation("media/packs/OgreCore.zip", "Zip", "Bootstrap", False) - ogre.ResourceGroupManager.getSingleton().addResourceLocation("media", "FileSystem", "General", False) - ogre.ResourceGroupManager.getSingleton().addResourceLocation("media/materials", "FileSystem", "General", False) - ogre.ResourceGroupManager.getSingleton().addResourceLocation("media/models", "FileSystem", "General", False) - ogre.ResourceGroupManager.getSingleton().initialiseAllResourceGroups() + def __del__ (self): + ## delete the world when we're done. + del self.bodies + del self.World - #get the scenemanager - self.sceneManager = getOgreManager().createSceneManager(ogre.ST_GENERIC) - # create a camera - self.camera = self.sceneManager.createCamera('Camera') - #self.camera.lookAt(ogre.Vector3(0, 0, 0)) - #self.camera.setPosition(ogre.Vector3(0, 0, 3)) - #self.camera.nearClipDistance = 0.1 - #self.camera.setAutoAspectRatio(False) - self.camera2 = Camera(self.sceneManager.getRootSceneNode(), self.camera) - - # create the Viewport" - self.viewport = self.renderWindow.addViewport(self.camera, 0, 0.0, 0.0, 1.0, 1.0) - self.viewport.backgroundColour = ogre.ColourValue(0, 0, 0) + def OnFrameStarted(self): + if self.enablephysics: + self.World.update(TIMER) + self.updateBeams() + pass - #set some default values - self.sceneDetailIndex = 0 - self.filtering = ogre.TFO_BILINEAR + def OnFrameEnded(self): + pass - # bind mouse and keyboard - self.Bind(wx.EVT_KEY_DOWN, self.onKeyDown) - self.Bind(wx.EVT_MOUSE_EVENTS, self.onMouseEvent) - - #create objects - self.populateScene() + def SceneInitialisation(self): + addresources = [self.rordir+"\\data\\trucks",self.rordir+"\\data\\objects"] + # only init things in the main window, not in shared ones! + # setup resources + for r in addresources: + ogre.ResourceGroupManager.getSingleton().addResourceLocation(r, "FileSystem", "General", False) + ogre.ResourceGroupManager.getSingleton().addResourceLocation("media/packs/OgreCore.zip", "Zip", "Bootstrap", False) + ogre.ResourceGroupManager.getSingleton().addResourceLocation("media", "FileSystem", "General", False) + ogre.ResourceGroupManager.getSingleton().addResourceLocation("media/materials", "FileSystem", "General", False) + ogre.ResourceGroupManager.getSingleton().addResourceLocation("media/models", "FileSystem", "General", False) + ogre.ResourceGroupManager.getSingleton().initialiseAllResourceGroups() - def createNode(self, node): - try: - id = int(node[0]) - pos = ogre.Vector3(float(node[1]),float(node[2]),float(node[3])) - if len(node) == 5: - option = node[4] - else: - option = None + #get the scenemanager + self.sceneManager = getOgreManager().createSceneManager(ogre.ST_GENERIC) - # 0.05 - size = 0.1 - mass = 0.5 * size - - inertia = OgreNewt.CalcBoxSolid( mass, size ) - - box1node = self.sceneManager.getRootSceneNode().createChildSceneNode() - box1 = self.sceneManager.createEntity("NodeEntity"+str(self.EntityCount), "ellipsoid.mesh" ) - self.clearlist['entity'].append("NodeEntity"+str(self.EntityCount)) - self.EntityCount += 1 - box1node.attachObject( box1 ) - box1node.setScale(size) - box1.setNormaliseNormals(True) - - col = OgreNewt.Ellipsoid( self.World, size ) - bod = OgreNewt.Body(self.World, col) - self.bodies.append (bod) + # create a camera + self.camera = self.sceneManager.createCamera('Camera') + self.camera.lookAt(ogre.Vector3(0, 0, 0)) + self.camera.setPosition(ogre.Vector3(0, 0, 3)) + self.camera.nearClipDistance = 0.1 + self.camera.setAutoAspectRatio(False) - del col - - bod.attachToNode( box1node ) - bod.setMassMatrix( mass, inertia ) - bod.setStandardForceCallback() - - if option == 'l': - matname = "TruckEditor/NodeLoad" - elif option == 'f': - matname = "TruckEditor/NodeFriction" - elif option == 'x': - matname = "TruckEditor/NodeExhaust" - elif option == 'y': - matname = "TruckEditor/NodeExhaustReference" - elif option == 'c': - matname = "TruckEditor/NodeContact" - elif option == 'h': - matname = "TruckEditor/NodeHook" - else: - matname = "TruckEditor/NodeNormal" - box1.setMaterialName(matname) - box1.setCastShadows(False) - - bod.setPositionOrientation(pos, Ogre.Quaternion.IDENTITY ) - self.nodes[id] = [box1node, option, node] - return bod - except: - pass + # this is aperions new cam, but its much too buggy, so removed :(( + #self.camera2 = Camera(self.sceneManager.getRootSceneNode(), self.camera) - def showSubmeshs(self, value): - for k in self.submeshs.keys(): - submesh = self.submeshs[k] - submesh[0].setVisible(value) - - def setSubmeshMode(self, mode): - pass - - - def showExhaustRefNodes(self, value): - for k in self.nodes.keys(): - node = self.nodes[k] - if node[1] == "y": - node[0].setVisible(value) - - def showExhaustNodes(self, value): - for k in self.nodes.keys(): - node = self.nodes[k] - if node[1] == "x": - node[0].setVisible(value) - - def showHookNodes(self, value): - for k in self.nodes.keys(): - node = self.nodes[k] - if node[1] == "h": - node[0].setVisible(value) - - def showFrictionNodes(self, value): - for k in self.nodes.keys(): - node = self.nodes[k] - if node[1] == "f": - node[0].setVisible(value) - - def showContactNodes(self, value): - for k in self.nodes.keys(): - node = self.nodes[k] - if node[1] == "c": - node[0].setVisible(value) - - def showFrictionNodes(self, value): - for k in self.nodes.keys(): - node = self.nodes[k] - if node[1] == "f": - node[0].setVisible(value) - - def showLoadNodes(self, value): - for k in self.nodes.keys(): - node = self.nodes[k] - if node[1] == "l": - node[0].setVisible(value) - - def showNormalNodes(self, value): - for k in self.nodes.keys(): - node = self.nodes[k] - if node[1] == "" or node[1] == "n" or node[1] is None: - node[0].setVisible(value) - - def showNormalBeams(self, value): - for k in self.beams.keys(): - beam = self.beams[k] - if beam[3] == "" or beam[3] == "n" or beam[3] == "v" or beam[3] is None: - beam[0].setVisible(value) - - def showInvisibleBeams(self, value): - for k in self.beams.keys(): - beam = self.beams[k] - if beam[3] == "i": - beam[0].setVisible(value) - - def showRopeBeams(self, value): - for k in self.beams.keys(): - beam = self.beams[k] - if beam[3] == "r": - beam[0].setVisible(value) - - - def createBeam(self, id0, id1, id2, options): - try: - pos1 = self.nodes[id1][0].getPosition() - pos2 = self.nodes[id2][0].getPosition() + # create the Viewport" + self.viewport = self.renderWindow.addViewport(self.camera, 0, 0.0, 0.0, 1.0, 1.0) + self.viewport.backgroundColour = ogre.ColourValue(0, 0, 0) - idstr = str(id0) + str(id1) + str(id2) - line = self.sceneManager.createManualObject("manual"+idstr) - if options == "i": - mat = "TruckEditor/BeamInvisible" - elif options == "r": - mat = "TruckEditor/BeamRope" - else: - mat = "TruckEditor/BeamNormal" - line.begin(mat, ogre.RenderOperation.OT_LINE_LIST) - line.position(pos1) - line.position(pos2) - line.end() - line.setCastShadows(False) - line.setDynamic(True) - linenode = self.sceneManager.getRootSceneNode().createChildSceneNode() - linenode.attachObject(line) - self.beams[id0] = [linenode, id1, id2, options, line] - print id0 - except: - pass + #set some default values + self.sceneDetailIndex = 0 + self.filtering = ogre.TFO_BILINEAR - def updateBeams(self): - for bk in self.beams.keys(): - beam = self.beams[bk] - line = beam[4] - id1 = beam[1] - id2 = beam[2] - try: - pos1 = self.nodes[id1][0].getPosition() - pos2 = self.nodes[id2][0].getPosition() - line.beginUpdate(0) - line.position(pos1) - line.position(pos2) - line.end() - except Exception, e: - print str(e) - continue - - - def createShock(self, id0, id1, id2, options): - try: - pos1 = self.nodes[id1][0].getPosition() - pos2 = self.nodes[id2][0].getPosition() + # bind mouse and keyboard + self.Bind(wx.EVT_KEY_DOWN, self.onKeyDown) + self.Bind(wx.EVT_MOUSE_EVENTS, self.onMouseEvent) - idstr = str(id0) + str(id1) + str(id2) - line = self.sceneManager.createManualObject("manual"+idstr) - if options == "i": - mat = "TruckEditor/ShockInvisible" - else: - mat = "TruckEditor/ShockNormal" - line.begin(mat, ogre.RenderOperation.OT_LINE_LIST) - line.position(pos1) - line.position(pos2) - line.end() - line.setCastShadows(False) - linenode = self.sceneManager.getRootSceneNode().createChildSceneNode() - linenode.attachObject(line) - self.shocks[id0] = [linenode, id1, id2, options, line] - except: - pass - - def createSubMeshGroup(self, tree, smg, smgid): - #print smg - try: - # read in nodes - nodes = {} - for nodeobj in tree['nodes']: - if nodeobj.has_key('type'): - continue - node = nodeobj['data'] - nodes[int(node[0])] = ogre.Vector3(float(node[1]),float(node[2]),float(node[3])) - - # read in UVs then - uv = {} - for data in smg['texcoords']: - tex = data['data'] - uv[int(tex[0])] = [float(tex[1]), float(tex[2])] + #create objects + self.populateScene() - # and create the triangles - - #print tree['globals'][0]['data'][2] - matname = tree['globals'][0]['data'][2] - #print matname - - idstr = str(smgid) - sm = self.sceneManager.createManualObject("manualsmg"+idstr) - sm.begin(matname, ogre.RenderOperation.OT_TRIANGLE_LIST) - for data in smg['cab']: - cab = data['data'] - if len(cab) == 0: - continue - #print nodes, cab - sm.position(nodes[int(cab[0])]) - sm.textureCoord(uv[int(cab[0])][0], uv[int(cab[0])][1]) - sm.position(nodes[int(cab[1])]) - sm.textureCoord(uv[int(cab[1])][0], uv[int(cab[1])][1]) - sm.position(nodes[int(cab[2])]) - sm.textureCoord(uv[int(cab[2])][0], uv[int(cab[2])][1]) - sm.end() - sm.setCastShadows(False) - - # set culling mode for that material - mat = ogre.MaterialManager.getSingleton().getByName(matname) - if not mat is None: - mat.setCullingMode(Ogre.CullingMode.CULL_NONE) - - smnode = self.sceneManager.getRootSceneNode().createChildSceneNode() - smnode.attachObject(sm) + def createNode(self, node): + try: + id = int(node[0]) + pos = ogre.Vector3(float(node[1]),float(node[2]),float(node[3])) + if len(node) == 5: + option = node[4] + else: + option = None - self.submeshs[smgid] = [smnode, smgid, smg, sm] - except: - pass - - def makeSimpleBox( self, size, pos, orient ): - ## base mass on the size of the object. - mass = size.x * size.y * size.z * 2.5 - - ## calculate the inertia based on box formula and mass - inertia = OgreNewt.CalcBoxSolid( mass, size ) - - box1 = self.sceneManager.createEntity("Entity"+str(self.EntityCount), "cap_mid.mesh" ) - self.clearlist['entity'].append("Entity"+str(self.EntityCount)) + # 0.05 + size = 0.1 + mass = 0.5 * size - self.EntityCount += 1 - box1node = self.sceneManager.getRootSceneNode().createChildSceneNode() - box1node.attachObject( box1 ) - box1node.setScale( size ) - box1.setNormaliseNormals(True) - - col = OgreNewt.Box( self.World, size ) - bod = OgreNewt.Body( self.World, col ) - del col - - bod.attachToNode( box1node ) - bod.setMassMatrix( mass, inertia ) - bod.setStandardForceCallback() - - box1.setMaterialName( "mysimple/terrainselect" ) - box1.setCastShadows(False) - - bod.setPositionOrientation( pos, orient ) - - return bod + inertia = OgreNewt.CalcBoxSolid( mass, size ) - - def populateScene(self): - self.sceneManager.AmbientLight = ogre.ColourValue(0.7, 0.7, 0.7 ) + box1node = self.sceneManager.getRootSceneNode().createChildSceneNode() + box1 = self.sceneManager.createEntity("NodeEntity"+str(self.EntityCount), "ellipsoid.mesh" ) + self.clearlist['entity'].append("NodeEntity"+str(self.EntityCount)) + self.EntityCount += 1 + box1node.attachObject( box1 ) + box1node.setScale(size) + box1.setNormaliseNormals(True) - fadeColour = (0.8, 0.8, 0.8) - self.sceneManager.setFog(ogre.FOG_EXP, ogre.ColourValue.White, 0.0002) - #self.sceneManager.setFog(ogre.FOG_LINEAR, fadeColour, 0.001, 5000.0, 10000.0) - self.renderWindow.getViewport(0).BackgroundColour = fadeColour + col = OgreNewt.Ellipsoid( self.World, size ) + bod = OgreNewt.Body(self.World, col) + self.bodies.append (bod) - self.sceneManager.AmbientLight = ogre.ColourValue(0.7, 0.7, 0.7 ) - self.sceneManager.setShadowTechnique(ogre.ShadowTechnique.SHADOWTYPE_STENCIL_ADDITIVE); - self.sceneManager.setSkyDome(True, 'mysimple/truckEditorSky', 4.0, 8.0) + del col - self.MainLight = self.sceneManager.createLight('MainLight') - self.MainLight.setPosition (ogre.Vector3(20, 80, 130)) + bod.attachToNode( box1node ) + bod.setMassMatrix( mass, inertia ) + bod.setStandardForceCallback() - self.createGroundPlane() - - stat_col = OgreNewt.TreeCollisionSceneParser( self.World ) - stat_col.parseScene( self.planenode, True ) - bod = OgreNewt.Body( self.World, stat_col ) - self.bodies.append(bod) - del stat_col + if option == 'l': + matname = "TruckEditor/NodeLoad" + elif option == 'f': + matname = "TruckEditor/NodeFriction" + elif option == 'x': + matname = "TruckEditor/NodeExhaust" + elif option == 'y': + matname = "TruckEditor/NodeExhaustReference" + elif option == 'c': + matname = "TruckEditor/NodeContact" + elif option == 'h': + matname = "TruckEditor/NodeHook" + else: + matname = "TruckEditor/NodeNormal" + box1.setMaterialName(matname) + box1.setCastShadows(False) - def createTestRope(self): - ## make a simple rope. - size = Ogre.Vector3(5,0.5,0.5) - pos = Ogre.Vector3(0,20,0) - orient = Ogre.Quaternion.IDENTITY - - ## loop through, making bodies and connecting them. - parent = None - child = None - - for x in range (5): - ## make the next box. - child = self.makeSimpleBox(size, pos, orient) - self.bodies.append(child) - - ## make the joint right between the bodies... - if (parent): - joint = OgreNewt.BallAndSocket( self.World, child, parent, pos-Ogre.Vector3(size.x/2,0,0) ) - - else: - ## no parent, this is the first joint, so just pass NULL as the parent, to stick it to the "world" - joint = OgreNewt.BallAndSocket( self.World, child, None, pos-Ogre.Vector3(size.x/2,0,0) ) - - ## offset pos a little more. - pos += Ogre.Vector3(size.x,0,0) - - ## save the last body for the next loop! - parent = child - - ## NOW - we also have to kepe copies of the joints, otherwise they get deleted !!! - self.bodies.append (joint) - - def createGroundPlane(self): - plane = ogre.Plane() - plane.normal = ogre.Vector3(0, 1, 0) - plane.d = 2 - planesize = 200000 - # see http://www.ogre3d.org/docs/api/html/classOgre_1_1MeshManager.html#Ogre_1_1MeshManagera5 - mesh = ogre.MeshManager.getSingleton().createPlane('GroundPlane', "General", plane, planesize, planesize, - 20, 20, True, 1, 50.0, 50.0, ogre.Vector3(0, 0, 1), - ogre.HardwareBuffer.HBU_STATIC_WRITE_ONLY, - ogre.HardwareBuffer.HBU_STATIC_WRITE_ONLY, - True, True) - entity = self.sceneManager.createEntity('groundent', 'GroundPlane') - entity.setMaterialName('mysimple/truckEditorGround') - self.planenode = self.sceneManager.getRootSceneNode().createChildSceneNode() - self.planenode.attachObject(entity) - - #col = OgreNewt.TreeCollision(self.World, self.planenode, True) - groundthickness = 50 - boxsize = ogre.Vector3(planesize, groundthickness, planesize) - col = OgreNewt.Box(self.World, boxsize ) - bod = OgreNewt.Body( self.World, col ) - self.bodies.append(bod) - bod.setPositionOrientation( Ogre.Vector3(0.0, -groundthickness - plane.d, 0.0), Ogre.Quaternion.IDENTITY ) - del col - - - def LoadTruck(self, fn): - if not os.path.isfile(fn): - print "truck file not found: "+fn - return - self.filename = fn - truckname = os.path.basename(fn) - p = rorparser() - p.parse(fn) - if not 'nodes' in p.tree.keys() or not 'beams' in p.tree.keys() : - return False + bod.setPositionOrientation(pos, Ogre.Quaternion.IDENTITY ) + self.nodes[id] = [box1node, option, node] + return bod + except: + pass - self.initScene() - self.CreateTruck(p.tree) - self.createTestRope() - return p.tree + def showSubmeshs(self, value): + for k in self.submeshs.keys(): + submesh = self.submeshs[k] + submesh[0].setVisible(value) + def setSubmeshMode(self, mode): + pass - def reLoadTruck(self): - if not os.path.isfile(self.filename): - return - p = rorparser() - p.parse(self.filename) - if not 'nodes' in p.tree.keys() or not 'beams' in p.tree.keys() : - return False - self.initScene(resetCam=False) - self.CreateTruck(p.tree) - - def CreateTruck(self, tree): - try: - nodes = {} - for nodeobj in tree['nodes']: - if nodeobj.has_key('type'): - continue - node = nodeobj['data'] - nodes[int(node[0])] = ogre.Vector3(float(node[1]),float(node[2]),float(node[3])) - self.createNode(node) - + def showExhaustRefNodes(self, value): + for k in self.nodes.keys(): + node = self.nodes[k] + if node[1] == "y": + node[0].setVisible(value) - beamcounter = 0 - for beamobj in tree['beams']: - if beamobj.has_key('type'): - continue - #print beamobj - beam = beamobj['data'] - #print beam - if len(beam) == 3: - option = beam[2] - else: - option = None - #print beam - try: - self.createBeam(beamcounter, int(beam[0]),int(beam[1]), option) - beamcounter += 1 - except: - pass + def showExhaustNodes(self, value): + for k in self.nodes.keys(): + node = self.nodes[k] + if node[1] == "x": + node[0].setVisible(value) + def showHookNodes(self, value): + for k in self.nodes.keys(): + node = self.nodes[k] + if node[1] == "h": + node[0].setVisible(value) - if 'shocks' in tree.keys(): - shockcounter = 0 - for shockobj in tree['shocks']: - if shockobj.has_key('type'): - continue - shock = shockobj['data'] - if len(shock) == 8: - option = shock[7] - else: - option = None - #print beam - try: - self.createShock(shockcounter, int(shock[0]),int(shock[1]), option) - except: - pass - shockcounter += 1 - - smgcounter = 0 - for smg in tree['submeshgroups']: - print "loading submesh: ", smgcounter - self.createSubMeshGroup(tree, smg,smgcounter) - smgcounter += 1 - - from UVFrame import * - self.uvFrame = UVFrame(self, wx.ID_ANY, "") - self.uvFrame.setTree(tree) - self.uvFrame.Show() - except: - pass - - def onMouseEvent(self,event): - width, height, a, b, c = self.renderWindow.getMetrics() + def showFrictionNodes(self, value): + for k in self.nodes.keys(): + node = self.nodes[k] + if node[1] == "f": + node[0].setVisible(value) - # if event.MiddleDown(): - # self.StartDragX, self.StartDragY = event.GetPosition() + def showContactNodes(self, value): + for k in self.nodes.keys(): + node = self.nodes[k] + if node[1] == "c": + node[0].setVisible(value) - # if event.Dragging() and event.MiddleDown(): - # if not self.selection is None: - # n = self.mainWindow.mSelected.getParentNode() - # pos = n.getPosition() - # else: - # pos = Ogre.Vector3(0, 20, 0) - # self.camera.lookAt(pos) - # mx,my = event.GetPosition() - # mx = self.StartDragX - mx - # alpha = (math.pi / 720) * mx - # dx = math.cos(alpha) * self.radius - # dy = math.sin(alpha) * self.radius - # self.camera.setPosition(pos - ogre.Vector3(dx, -5, dy)) + def showFrictionNodes(self, value): + for k in self.nodes.keys(): + node = self.nodes[k] + if node[1] == "f": + node[0].setVisible(value) - mode = self.camera.getProjectionType() == Ogre.ProjectionType.PT_PERSPECTIVE - if mode: - if event.RightDown(): #Precedes dragging - self.StartDragX, self.StartDragY = event.GetPosition() #saves position of initial click - if event.GetWheelRotation() != 0: - zfactor = 0.001 - if event.ShiftDown(): - zfactor = 0.01 - zoom = zfactor * -event.GetWheelRotation() - self.camera.moveRelative(ogre.Vector3(0,0, zoom)) + def showLoadNodes(self, value): + for k in self.nodes.keys(): + node = self.nodes[k] + if node[1] == "l": + node[0].setVisible(value) - if event.Dragging() and event.RightIsDown(): - x,y = event.GetPosition() - - dx = self.StartDragX - x - dy = self.StartDragY - y - self.StartDragX, self.StartDragY = x, y - if event.ShiftDown(): - dx = float(dx) / 10 - dy = float(dy) / 10 - self.camera2.move(ogre.Vector3(dx,dy,0), event.ControlDown()) - - """ - if event.Dragging() and event.RightIsDown() and event.ControlDown(): - x,y = event.GetPosition() - dx = self.StartDragX - x - dy = self.StartDragY - y - self.StartDragX, self.StartDragY = x, y - if event.ShiftDown(): - dx = float(dx) / 10 - dy = float(dy) / 10 - else: - dx = float(dx) / 50 - dy = float(dy) / 50 - self.camera.moveRelative(ogre.Vector3(dx,-dy,0)) - - elif event.Dragging() and event.RightIsDown(): #Dragging with RMB - x,y = event.GetPosition() - dx = self.StartDragX - x - dy = self.StartDragY - y - self.StartDragX, self.StartDragY = x, y - - self.camera.yaw(ogre.Degree(dx/3.0)) - self.camera.pitch(ogre.Degree(dy/3.0)) -""" - - if event.LeftDown() and event.ControlDown() and not self.mSelected is None: - pos = self.getPointedPosition(event) - if not pos is None: - self.TranslateNode.setPosition(pos) - self.RotateNode.setPosition(pos) - self.mSelected.getParentNode().setPosition(pos) - return - if event.LeftDown(): - #self.selectnew(event) - self.StartDragLeftX, self.StartDragLeftY = event.GetPosition() #saves position of initial click - zfactor = 0.1 - if event.ShiftDown(): - zfactor = 5 - zoom = zfactor * -event.GetWheelRotation() - self.camera.moveRelative(ogre.Vector3(0,0, zoom)) - else: - if event.GetWheelRotation() != 0: - zfactor = 0.001 - if event.ShiftDown(): - zfactor = 0.01 - zoom = zfactor * -event.GetWheelRotation() - if self.camera.getNearClipDistance() + zoom > 0: - self.camera.setNearClipDistance(self.camera.getNearClipDistance() + zoom) - - if event.RightDown(): - self.StartDragX, self.StartDragY = event.GetPosition() - if event.Dragging() and event.RightIsDown(): - x,y = event.GetPosition() - dx = self.StartDragX - x - dy = self.StartDragY - y - self.StartDragX, self.StartDragY = x, y - if event.ShiftDown(): - dx = float(dx) / 30 - dy = float(dy) / 30 - else: - dx = float(dx) / 60 - dy = float(dy) / 60 - self.camera.moveRelative(ogre.Vector3(dx,-dy,0)) - event.Skip() + def showNormalNodes(self, value): + for k in self.nodes.keys(): + node = self.nodes[k] + if node[1] == "" or node[1] == "n" or node[1] is None: + node[0].setVisible(value) - def changeDisplayMode(self, mode): - - if mode == self.camMode: - pass - - #save settings - self.modeSettings[self.camMode] = [self.camera.getPosition(), self.camera.getOrientation(), self.camera.getNearClipDistance()] + def showNormalBeams(self, value): + for k in self.beams.keys(): + beam = self.beams[k] + if beam[3] == "" or beam[3] == "n" or beam[3] == "v" or beam[3] is None: + beam[0].setVisible(value) - cammode = self.camera.getProjectionType() == Ogre.ProjectionType.PT_PERSPECTIVE - if mode in self.modeSettings.keys(): - # restore settings - self.camera.setPosition(self.modeSettings[mode][0]) - self.camera.setOrientation(self.modeSettings[mode][1]) - self.camera.setNearClipDistance(self.modeSettings[mode][2]) + def showInvisibleBeams(self, value): + for k in self.beams.keys(): + beam = self.beams[k] + if beam[3] == "i": + beam[0].setVisible(value) - if mode == "3d": - if not cammode: - self.camera.setProjectionType(Ogre.ProjectionType.PT_PERSPECTIVE) - if not mode in self.modeSettings.keys(): - # set default settings - self.camera.setNearClipDistance(0.1) - self.camera.setPosition(Ogre.Vector3(0,0,1)) - self.camera.lookAt(Ogre.Vector3(0,0,0)) - - elif mode == "orthleft": - if cammode: - self.camera.setProjectionType(Ogre.ProjectionType.PT_ORTHOGRAPHIC) - if not mode in self.modeSettings.keys(): - self.camera.setNearClipDistance(5) - self.camera.setPosition(Ogre.Vector3(0,0,100)) - self.camera.lookAt(Ogre.Vector3(0,0,0)) - - elif mode == "orthright": - if cammode: - self.camera.setProjectionType(Ogre.ProjectionType.PT_ORTHOGRAPHIC) - if not mode in self.modeSettings.keys(): - self.camera.setNearClipDistance(5) - self.camera.setPosition(Ogre.Vector3(0,0,-100)) - self.camera.lookAt(Ogre.Vector3(0,0,0)) + def showRopeBeams(self, value): + for k in self.beams.keys(): + beam = self.beams[k] + if beam[3] == "r": + beam[0].setVisible(value) - elif mode == "orthrear": - if cammode: - self.camera.setProjectionType(Ogre.ProjectionType.PT_ORTHOGRAPHIC) - if not mode in self.modeSettings.keys(): - self.camera.setNearClipDistance(5) - self.camera.setPosition(Ogre.Vector3(100,0,0)) - self.camera.lookAt(Ogre.Vector3(0,0,0)) - elif mode == "orthfront": - if cammode: - self.camera.setProjectionType(Ogre.ProjectionType.PT_ORTHOGRAPHIC) - if not mode in self.modeSettings.keys(): - self.camera.setNearClipDistance(5) - self.camera.setPosition(Ogre.Vector3(-100,0,0)) - self.camera.lookAt(Ogre.Vector3(0,0,0)) - - elif mode == "orthtop": - if cammode: - self.camera.setProjectionType(Ogre.ProjectionType.PT_ORTHOGRAPHIC) - if not mode in self.modeSettings.keys(): - self.camera.setNearClipDistance(5) - self.camera.setPosition(Ogre.Vector3(0.1,100,0)) - self.camera.lookAt(Ogre.Vector3(0,0,0)) + def createBeam(self, id0, id1, id2, options): + try: + pos1 = self.nodes[id1][0].getPosition() + pos2 = self.nodes[id2][0].getPosition() - elif mode == "orthbottom": - if cammode: - self.camera.setProjectionType(Ogre.ProjectionType.PT_ORTHOGRAPHIC) - if not mode in self.modeSettings.keys(): - self.camera.setNearClipDistance(5) - self.camera.setPosition(Ogre.Vector3(0.1,-100,0)) - self.camera.lookAt(Ogre.Vector3(0,0,0)) - - self.camMode = mode - - def onKeyDown(self,event): - #print event.m_keyCode - d = 0.05 - if event.ShiftDown(): - d = 0.5 - mode = self.camera.getProjectionType() == Ogre.ProjectionType.PT_PERSPECTIVE - if mode: - if event.m_keyCode == 65: # A, wx.WXK_LEFT: - self.camera.moveRelative(ogre.Vector3(-d,0,0)) - elif event.m_keyCode == 68: # D, wx.WXK_RIGHT: - self.camera.moveRelative(ogre.Vector3(d,0,0)) - elif event.m_keyCode == 87: # W ,wx.WXK_UP: - self.camera.moveRelative(ogre.Vector3(0,0,-d)) - elif event.m_keyCode == 83: # S, wx.WXK_DOWN: - self.camera.moveRelative(ogre.Vector3(0,0,d)) - elif event.m_keyCode == wx.WXK_PAGEUP: - self.camera.moveRelative(ogre.Vector3(0,d,0)) - elif event.m_keyCode == wx.WXK_PAGEDOWN: - self.camera.moveRelative(ogre.Vector3(0,-d,0)) - elif event.m_keyCode == 84: # 84 = T - if self.filtering == ogre.TFO_BILINEAR: - self.filtering = ogre.TFO_TRILINEAR - self.Aniso = 1 - elif self.filtering == ogre.TFO_TRILINEAR: - self.filtering = ogre.TFO_ANISOTROPIC - self.Aniso = 8 - else: - self.filtering = ogre.TFO_BILINEAR - self.Aniso = 1 - ogre.MaterialManager.getSingleton().setDefaultTextureFiltering(self.filtering) - ogre.MaterialManager.getSingleton().setDefaultAnisotropy(self.Aniso) - elif event.m_keyCode == 82: # 82 = R - detailsLevel = [ ogre.PM_SOLID, - ogre.PM_WIREFRAME, - ogre.PM_POINTS ] - self.sceneDetailIndex = (self.sceneDetailIndex + 1) % len(detailsLevel) - self.camera.polygonMode=detailsLevel[self.sceneDetailIndex] - elif event.m_keyCode == 81: # Q, wx.WXK_LEFT: - self.enablephysics = not self.enablephysics - else: - if event.m_keyCode == 65: # A, wx.WXK_LEFT: - self.camera.moveRelative(ogre.Vector3(-d,0,0)) - elif event.m_keyCode == 68: # D, wx.WXK_RIGHT: - self.camera.moveRelative(ogre.Vector3(d,0,0)) - elif event.m_keyCode == 87: # W ,wx.WXK_UP: - self.camera.moveRelative(ogre.Vector3(0,d,0)) - elif event.m_keyCode == 83: # S, wx.WXK_DOWN: - self.camera.moveRelative(ogre.Vector3(0,-d,0)) - - - - if event.m_keyCode == 340: # F1 - self.changeDisplayMode("3d") - elif event.m_keyCode == 341: # F2 - self.changeDisplayMode("orthleft") - elif event.m_keyCode == 342: # F3 - self.changeDisplayMode("orthright") - elif event.m_keyCode == 343: # F4 - self.changeDisplayMode("orthfront") - elif event.m_keyCode == 344: # F5 - self.changeDisplayMode("orthrear") - elif event.m_keyCode == 345: # F6 - self.changeDisplayMode("orthtop") - elif event.m_keyCode == 346: # F7 - self.changeDisplayMode("orthbottom") - event.Skip() \ No newline at end of file + idstr = str(id0) + str(id1) + str(id2) + line = self.sceneManager.createManualObject("manual"+idstr) + if options == "i": + mat = "TruckEditor/BeamInvisible" + elif options == "r": + mat = "TruckEditor/BeamRope" + else: + mat = "TruckEditor/BeamNormal" + line.begin(mat, ogre.RenderOperation.OT_LINE_LIST) + line.position(pos1) + line.position(pos2) + line.end() + line.setCastShadows(False) + line.setDynamic(True) + linenode = self.sceneManager.getRootSceneNode().createChildSceneNode() + linenode.attachObject(line) + self.beams[id0] = [linenode, id1, id2, options, line] + print id0 + except: + pass + + def updateBeams(self): + for bk in self.beams.keys(): + beam = self.beams[bk] + line = beam[4] + id1 = beam[1] + id2 = beam[2] + try: + pos1 = self.nodes[id1][0].getPosition() + pos2 = self.nodes[id2][0].getPosition() + line.beginUpdate(0) + line.position(pos1) + line.position(pos2) + line.end() + except Exception, e: + print str(e) + continue + + + def createShock(self, id0, id1, id2, options): + try: + pos1 = self.nodes[id1][0].getPosition() + pos2 = self.nodes[id2][0].getPosition() + + idstr = str(id0) + str(id1) + str(id2) + line = self.sceneManager.createManualObject("manual"+idstr) + if options == "i": + mat = "TruckEditor/ShockInvisible" + else: + mat = "TruckEditor/ShockNormal" + line.begin(mat, ogre.RenderOperation.OT_LINE_LIST) + line.position(pos1) + line.position(pos2) + line.end() + line.setCastShadows(False) + linenode = self.sceneManager.getRootSceneNode().createChildSceneNode() + linenode.attachObject(line) + self.shocks[id0] = [linenode, id1, id2, options, line] + except: + pass + + def createSubMeshGroup(self, tree, smg, smgid): + #print smg + try: + # read in nodes + nodes = {} + for nodeobj in tree['nodes']: + if nodeobj.has_key('type'): + continue + node = nodeobj['data'] + nodes[int(node[0])] = ogre.Vector3(float(node[1]),float(node[2]),float(node[3])) + + # read in UVs then + uv = {} + for data in smg['texcoords']: + tex = data['data'] + uv[int(tex[0])] = [float(tex[1]), float(tex[2])] + + # and create the triangles + + #print tree['globals'][0]['data'][2] + matname = tree['globals'][0]['data'][2] + #print matname + + idstr = str(smgid) + sm = self.sceneManager.createManualObject("manualsmg"+idstr) + sm.begin(matname, ogre.RenderOperation.OT_TRIANGLE_LIST) + + for data in smg['cab']: + cab = data['data'] + if len(cab) == 0: + continue + #print nodes, cab + sm.position(nodes[int(cab[0])]) + sm.textureCoord(uv[int(cab[0])][0], uv[int(cab[0])][1]) + sm.position(nodes[int(cab[1])]) + sm.textureCoord(uv[int(cab[1])][0], uv[int(cab[1])][1]) + sm.position(nodes[int(cab[2])]) + sm.textureCoord(uv[int(cab[2])][0], uv[int(cab[2])][1]) + sm.end() + sm.setCastShadows(False) + + # set culling mode for that material + mat = ogre.MaterialManager.getSingleton().getByName(matname) + if not mat is None: + mat.setCullingMode(Ogre.CullingMode.CULL_NONE) + + smnode = self.sceneManager.getRootSceneNode().createChildSceneNode() + smnode.attachObject(sm) + + self.submeshs[smgid] = [smnode, smgid, smg, sm] + except: + pass + + def makeSimpleBox( self, size, pos, orient ): + ## base mass on the size of the object. + mass = size.x * size.y * size.z * 2.5 + + ## calculate the inertia based on box formula and mass + inertia = OgreNewt.CalcBoxSolid( mass, size ) + + box1 = self.sceneManager.createEntity("Entity"+str(self.EntityCount), "cap_mid.mesh" ) + self.clearlist['entity'].append("Entity"+str(self.EntityCount)) + + self.EntityCount += 1 + box1node = self.sceneManager.getRootSceneNode().createChildSceneNode() + box1node.attachObject( box1 ) + box1node.setScale( size ) + box1.setNormaliseNormals(True) + + col = OgreNewt.Box( self.World, size ) + bod = OgreNewt.Body( self.World, col ) + del col + + bod.attachToNode( box1node ) + bod.setMassMatrix( mass, inertia ) + bod.setStandardForceCallback() + + box1.setMaterialName( "mysimple/terrainselect" ) + box1.setCastShadows(False) + + bod.setPositionOrientation( pos, orient ) + + return bod + + + def populateScene(self): + self.sceneManager.AmbientLight = ogre.ColourValue(0.7, 0.7, 0.7 ) + + fadeColour = (0.8, 0.8, 0.8) + self.sceneManager.setFog(ogre.FOG_EXP, ogre.ColourValue.White, 0.0002) + #self.sceneManager.setFog(ogre.FOG_LINEAR, fadeColour, 0.001, 5000.0, 10000.0) + self.renderWindow.getViewport(0).BackgroundColour = fadeColour + + self.sceneManager.AmbientLight = ogre.ColourValue(0.7, 0.7, 0.7 ) + self.sceneManager.setShadowTechnique(ogre.ShadowTechnique.SHADOWTYPE_STENCIL_ADDITIVE); + self.sceneManager.setSkyDome(True, 'mysimple/truckEditorSky', 4.0, 8.0) + + self.MainLight = self.sceneManager.createLight('MainLight') + self.MainLight.setPosition (ogre.Vector3(20, 80, 130)) + + self.createGroundPlane() + + stat_col = OgreNewt.TreeCollisionSceneParser( self.World ) + stat_col.parseScene( self.planenode, True ) + bod = OgreNewt.Body( self.World, stat_col ) + self.bodies.append(bod) + del stat_col + + def createTestRope(self): + ## make a simple rope. + size = Ogre.Vector3(5,0.5,0.5) + pos = Ogre.Vector3(0,20,0) + orient = Ogre.Quaternion.IDENTITY + + ## loop through, making bodies and connecting them. + parent = None + child = None + + for x in range (5): + ## make the next box. + child = self.makeSimpleBox(size, pos, orient) + self.bodies.append(child) + + ## make the joint right between the bodies... + if (parent): + joint = OgreNewt.BallAndSocket( self.World, child, parent, pos-Ogre.Vector3(size.x/2,0,0) ) + + else: + ## no parent, this is the first joint, so just pass NULL as the parent, to stick it to the "world" + joint = OgreNewt.BallAndSocket( self.World, child, None, pos-Ogre.Vector3(size.x/2,0,0) ) + + ## offset pos a little more. + pos += Ogre.Vector3(size.x,0,0) + + ## save the last body for the next loop! + parent = child + + ## NOW - we also have to kepe copies of the joints, otherwise they get deleted !!! + self.bodies.append (joint) + + def createGroundPlane(self): + plane = ogre.Plane() + plane.normal = ogre.Vector3(0, 1, 0) + plane.d = 2 + planesize = 200000 + # see http://www.ogre3d.org/docs/api/html/classOgre_1_1MeshManager.html#Ogre_1_1MeshManagera5 + mesh = ogre.MeshManager.getSingleton().createPlane('GroundPlane', "General", plane, planesize, planesize, + 20, 20, True, 1, 50.0, 50.0, ogre.Vector3(0, 0, 1), + ogre.HardwareBuffer.HBU_STATIC_WRITE_ONLY, + ogre.HardwareBuffer.HBU_STATIC_WRITE_ONLY, + True, True) + entity = self.sceneManager.createEntity('groundent', 'GroundPlane') + entity.setMaterialName('mysimple/truckEditorGround') + self.planenode = self.sceneManager.getRootSceneNode().createChildSceneNode() + self.planenode.attachObject(entity) + + #col = OgreNewt.TreeCollision(self.World, self.planenode, True) + groundthickness = 50 + boxsize = ogre.Vector3(planesize, groundthickness, planesize) + col = OgreNewt.Box(self.World, boxsize ) + bod = OgreNewt.Body( self.World, col ) + self.bodies.append(bod) + bod.setPositionOrientation( Ogre.Vector3(0.0, -groundthickness - plane.d, 0.0), Ogre.Quaternion.IDENTITY ) + del col + + + def LoadTruck(self, fn): + if not os.path.isfile(fn): + print "truck file not found: "+fn + return + self.filename = fn + truckname = os.path.basename(fn) + p = rorparser() + p.parse(fn) + if not 'nodes' in p.tree.keys() or not 'beams' in p.tree.keys() : + return False + + self.initScene() + self.CreateTruck(p.tree) + self.createTestRope() + return p.tree + + + def reLoadTruck(self): + if not os.path.isfile(self.filename): + return + p = rorparser() + p.parse(self.filename) + if not 'nodes' in p.tree.keys() or not 'beams' in p.tree.keys() : + return False + + self.initScene(resetCam=False) + self.CreateTruck(p.tree) + + def CreateTruck(self, tree): + try: + nodes = {} + for nodeobj in tree['nodes']: + if nodeobj.has_key('type'): + continue + node = nodeobj['data'] + nodes[int(node[0])] = ogre.Vector3(float(node[1]),float(node[2]),float(node[3])) + self.createNode(node) + + + beamcounter = 0 + for beamobj in tree['beams']: + if beamobj.has_key('type'): + continue + #print beamobj + beam = beamobj['data'] + #print beam + if len(beam) == 3: + option = beam[2] + else: + option = None + #print beam + try: + self.createBeam(beamcounter, int(beam[0]),int(beam[1]), option) + beamcounter += 1 + except: + pass + + + if 'shocks' in tree.keys(): + shockcounter = 0 + for shockobj in tree['shocks']: + if shockobj.has_key('type'): + continue + shock = shockobj['data'] + if len(shock) == 8: + option = shock[7] + else: + option = None + #print beam + try: + self.createShock(shockcounter, int(shock[0]),int(shock[1]), option) + except: + pass + shockcounter += 1 + + smgcounter = 0 + for smg in tree['submeshgroups']: + print "loading submesh: ", smgcounter + self.createSubMeshGroup(tree, smg,smgcounter) + smgcounter += 1 + + from UVFrame import * + self.uvFrame = UVFrame(self, wx.ID_ANY, "") + self.uvFrame.setTree(tree) + self.uvFrame.Show() + except: + pass + + def onMouseEvent(self,event): + width, height, a, b, c = self.renderWindow.getMetrics() + + # if event.MiddleDown(): + # self.StartDragX, self.StartDragY = event.GetPosition() + + # if event.Dragging() and event.MiddleDown(): + # if not self.selection is None: + # n = self.mainWindow.mSelected.getParentNode() + # pos = n.getPosition() + # else: + # pos = Ogre.Vector3(0, 20, 0) + # self.camera.lookAt(pos) + # mx,my = event.GetPosition() + # mx = self.StartDragX - mx + # alpha = (math.pi / 720) * mx + # dx = math.cos(alpha) * self.radius + # dy = math.sin(alpha) * self.radius + # self.camera.setPosition(pos - ogre.Vector3(dx, -5, dy)) + + mode = self.camera.getProjectionType() == Ogre.ProjectionType.PT_PERSPECTIVE + if mode: + if event.RightDown(): #Precedes dragging + self.StartDragX, self.StartDragY = event.GetPosition() #saves position of initial click + if event.GetWheelRotation() != 0: + zfactor = 0.001 + if event.ShiftDown(): + zfactor = 0.01 + zoom = zfactor * -event.GetWheelRotation() + self.camera.moveRelative(ogre.Vector3(0,0, zoom)) + + """ + # new cam code: + if event.Dragging() and event.RightIsDown(): + x,y = event.GetPosition() + + dx = self.StartDragX - x + dy = self.StartDragY - y + self.StartDragX, self.StartDragY = x, y + if event.ShiftDown(): + dx = float(dx) / 10 + dy = float(dy) / 10 + self.camera2.move(ogre.Vector3(dx,dy,0), event.ControlDown()) + """ + + # old cam code: + if event.Dragging() and event.RightIsDown() and event.ControlDown(): + x,y = event.GetPosition() + dx = self.StartDragX - x + dy = self.StartDragY - y + self.StartDragX, self.StartDragY = x, y + if event.ShiftDown(): + dx = float(dx) / 10 + dy = float(dy) / 10 + else: + dx = float(dx) / 50 + dy = float(dy) / 50 + self.camera.moveRelative(ogre.Vector3(dx,-dy,0)) + + elif event.Dragging() and event.RightIsDown(): #Dragging with RMB + x,y = event.GetPosition() + dx = self.StartDragX - x + dy = self.StartDragY - y + self.StartDragX, self.StartDragY = x, y + + self.camera.yaw(ogre.Degree(dx/3.0)) + self.camera.pitch(ogre.Degree(dy/3.0)) + + if event.LeftDown() and event.ControlDown() and not self.mSelected is None: + pos = self.getPointedPosition(event) + if not pos is None: + self.TranslateNode.setPosition(pos) + self.RotateNode.setPosition(pos) + self.mSelected.getParentNode().setPosition(pos) + return + if event.LeftDown(): + #self.selectnew(event) + self.StartDragLeftX, self.StartDragLeftY = event.GetPosition() #saves position of initial click + zfactor = 0.1 + if event.ShiftDown(): + zfactor = 5 + zoom = zfactor * -event.GetWheelRotation() + self.camera.moveRelative(ogre.Vector3(0,0, zoom)) + else: + if event.GetWheelRotation() != 0: + zfactor = 0.001 + if event.ShiftDown(): + zfactor = 0.01 + zoom = zfactor * -event.GetWheelRotation() + if self.camera.getNearClipDistance() + zoom > 0: + self.camera.setNearClipDistance(self.camera.getNearClipDistance() + zoom) + + if event.RightDown(): + self.StartDragX, self.StartDragY = event.GetPosition() + if event.Dragging() and event.RightIsDown(): + x,y = event.GetPosition() + dx = self.StartDragX - x + dy = self.StartDragY - y + self.StartDragX, self.StartDragY = x, y + if event.ShiftDown(): + dx = float(dx) / 30 + dy = float(dy) / 30 + else: + dx = float(dx) / 60 + dy = float(dy) / 60 + self.camera.moveRelative(ogre.Vector3(dx,-dy,0)) + event.Skip() + + def changeDisplayMode(self, mode): + + if mode == self.camMode: + pass + + #save settings + self.modeSettings[self.camMode] = [self.camera.getPosition(), self.camera.getOrientation(), self.camera.getNearClipDistance()] + + cammode = self.camera.getProjectionType() == Ogre.ProjectionType.PT_PERSPECTIVE + if mode in self.modeSettings.keys(): + # restore settings + self.camera.setPosition(self.modeSettings[mode][0]) + self.camera.setOrientation(self.modeSettings[mode][1]) + self.camera.setNearClipDistance(self.modeSettings[mode][2]) + + if mode == "3d": + if not cammode: + self.camera.setProjectionType(Ogre.ProjectionType.PT_PERSPECTIVE) + if not mode in self.modeSettings.keys(): + # set default settings + self.camera.setNearClipDistance(0.1) + self.camera.setPosition(Ogre.Vector3(0,0,1)) + self.camera.lookAt(Ogre.Vector3(0,0,0)) + + elif mode == "orthleft": + if cammode: + self.camera.setProjectionType(Ogre.ProjectionType.PT_ORTHOGRAPHIC) + if not mode in self.modeSettings.keys(): + self.camera.setNearClipDistance(5) + self.camera.setPosition(Ogre.Vector3(0,0,100)) + self.camera.lookAt(Ogre.Vector3(0,0,0)) + + elif mode == "orthright": + if cammode: + self.camera.setProjectionType(Ogre.ProjectionType.PT_ORTHOGRAPHIC) + if not mode in self.modeSettings.keys(): + self.camera.setNearClipDistance(5) + self.camera.setPosition(Ogre.Vector3(0,0,-100)) + self.camera.lookAt(Ogre.Vector3(0,0,0)) + + elif mode == "orthrear": + if cammode: + self.camera.setProjectionType(Ogre.ProjectionType.PT_ORTHOGRAPHIC) + if not mode in self.modeSettings.keys(): + self.camera.setNearClipDistance(5) + self.camera.setPosition(Ogre.Vector3(100,0,0)) + self.camera.lookAt(Ogre.Vector3(0,0,0)) + + elif mode == "orthfront": + if cammode: + self.camera.setProjectionType(Ogre.ProjectionType.PT_ORTHOGRAPHIC) + if not mode in self.modeSettings.keys(): + self.camera.setNearClipDistance(5) + self.camera.setPosition(Ogre.Vector3(-100,0,0)) + self.camera.lookAt(Ogre.Vector3(0,0,0)) + + elif mode == "orthtop": + if cammode: + self.camera.setProjectionType(Ogre.ProjectionType.PT_ORTHOGRAPHIC) + if not mode in self.modeSettings.keys(): + self.camera.setNearClipDistance(5) + self.camera.setPosition(Ogre.Vector3(0.1,100,0)) + self.camera.lookAt(Ogre.Vector3(0,0,0)) + + elif mode == "orthbottom": + if cammode: + self.camera.setProjectionType(Ogre.ProjectionType.PT_ORTHOGRAPHIC) + if not mode in self.modeSettings.keys(): + self.camera.setNearClipDistance(5) + self.camera.setPosition(Ogre.Vector3(0.1,-100,0)) + self.camera.lookA... [truncated message content] |
From: <ror...@us...> - 2007-09-09 16:30:49
|
Revision: 173 http://roreditor.svn.sourceforge.net/roreditor/?rev=173&view=rev Author: rorthomas Date: 2007-09-09 09:30:45 -0700 (Sun, 09 Sep 2007) Log Message: ----------- * updated, added modcreator basics Modified Paths: -------------- trunk/lib_common/ror/depcheckerplugins/ror_cfg.py trunk/lib_common/ror/modtool.py trunk/tools/modtool.py Modified: trunk/lib_common/ror/depcheckerplugins/ror_cfg.py =================================================================== --- trunk/lib_common/ror/depcheckerplugins/ror_cfg.py 2007-09-09 15:49:39 UTC (rev 172) +++ trunk/lib_common/ror/depcheckerplugins/ror_cfg.py 2007-09-09 16:30:45 UTC (rev 173) @@ -27,7 +27,7 @@ # ignore standart configuration files file = os.path.basename(filename).lower() - if file in ['editor.cfg', 'resources.cfg', 'ror.cfg', 'wavefield.cfg', 'plugins.cfg', 'ogre.cfg', 'categories.cfg']: + if file in ['editor.cfg', 'resources.cfg', 'ror.cfg', 'wavefield.cfg', 'plugins.cfg', 'ogre.cfg', 'categories.cfg', 'plugins_windows.cfg', 'plugins_linux.cfg', 'plugins_windows_debug.cfg']: return {OPTIONAL:{},REQUIRES:{},PROVIDES:{}} dep = [] Modified: trunk/lib_common/ror/modtool.py =================================================================== --- trunk/lib_common/ror/modtool.py 2007-09-09 15:49:39 UTC (rev 172) +++ trunk/lib_common/ror/modtool.py 2007-09-09 16:30:45 UTC (rev 173) @@ -9,347 +9,404 @@ DOWNLOADDIR = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "..", "downloaded")) class ModTool: - def __init__(self): - pass - - def work(self, mode, targetfile, verbose, dryrun, installtarget=None): - self.dryrun = dryrun - self.verbose = verbose - log().info("### modinstaller started with %s, %s" % (mode, targetfile)) - if mode == "install": - filename = os.path.abspath(targetfile) - self.ExtractToTemp(targetfile) - target = installtarget - log().info("### validating target ...") - import ror.depchecker - dc = ror.depchecker.RoRDepChecker(TEMPDIR, "dtree", target, verbose) - if dc.invalid: - log().error("### target invalid!") - log().info("### please use the list mode to get valid targets") - usage() - - log().info("### target valid!") - #print dc.dstree - installcounter = 0 - for file in dc.dstree: - filename = file['filename'] - filenamefound = self.searchFile(filename, TEMPDIR) - if filenamefound is None: - log().error("File %s not found in %s!" % (filename, TEMPDIR)) - sys.exit(1) - self.installfile(target, filenamefound, dryrun) - installcounter += 1 - if dryrun: - log().info("### would install %d files." % installcounter) - else: - log().info("### %d files installed, finished!" % installcounter) - self.removetemp(False) - return [target] + def __init__(self): + pass + + def work(self, mode, targetfile, verbose, dryrun, installtarget=None): + self.dryrun = dryrun + self.verbose = verbose + log().info("### modinstaller started with %s, %s" % (mode, targetfile)) + if mode == "install": + filename = os.path.abspath(targetfile) + self.ExtractToTemp(targetfile) + target = installtarget + log().info("### validating target ...") + import ror.depchecker + dc = ror.depchecker.RoRDepChecker(TEMPDIR, "dtree", target, verbose) + if dc.invalid: + log().error("### target invalid!") + log().info("### please use the list mode to get valid targets") + usage() + + log().info("### target valid!") + #print dc.dstree + installcounter = 0 + for file in dc.dstree: + filename = file['filename'] + filenamefound = self.searchFile(filename, TEMPDIR) + if filenamefound is None: + log().error("File %s not found in %s!" % (filename, TEMPDIR)) + sys.exit(1) + self.installfile(target, filenamefound, dryrun) + installcounter += 1 + if dryrun: + log().info("### would install %d files." % installcounter) + else: + log().info("### %d files installed, finished!" % installcounter) + self.removetemp(False) + return [target] - elif mode == "installall": - filename = os.path.abspath(targetfile) - self.ExtractToTemp(targetfile) - validtargets, invalidtargets = self.getTargets(verbose) - log().info("### installing %d found modifications:" % (len(validtargets))) - installcounter = 0 - for target in validtargets: - log().info("### installing modification '%s'" % target) - import ror.depchecker - dc = ror.depchecker.RoRDepChecker(TEMPDIR, "dtree", target, verbose) - if dc.dstree is None: - log().error("no dependenytree for File %s!" % (filename)) - continue - for file in dc.dstree: - filename = file['filename'] - filenamefound = self.searchFile(filename, TEMPDIR) - if filenamefound is None: - log().error("File %s not found in %s!" % (filename, TEMPDIR)) - sys.exit(1) - self.installfile(target, filenamefound, dryrun) - installcounter += 1 - if dryrun: - log().info("### would install %d files." % installcounter) - else: - log().info("### %d files installed, finished!" % installcounter) - self.removetemp(False) - return validtargets - - elif mode == "installrepo": - if targetfile.find("://") != -1: - m = re.match(r"^.*://(.*)$", targetfile) - if not m is None and len(m.groups()) > 0: - targetfile = m.groups()[0].rstrip("/") - else: - log().error("error while installing from repo: wrong URL scheme") - return False - else: - log().info("manual use, not parsing URL") - if not self.getRepoFile(targetfile): - log().error("error while installing from repo.") - return False - targetfile = os.path.join(DOWNLOADDIR, targetfile) - return ModTool().work("installall", targetfile, self.verbose, self.dryrun) - - elif mode in ["list", "listall"]: - filename = os.path.abspath(targetfile) - self.ExtractToTemp(targetfile) - validtargets, invalidtargets = self.getTargets(verbose) - if mode == "listall": - if len(invalidtargets) > 0: - log().info("broken modifications found:") - for v in invalidtargets: - log().info(" %-20s" % v) - log().info("use the --verbose flag to find the missing files!") - else: - log().info("no broken modifications found") + elif mode == "installall": + filename = os.path.abspath(targetfile) + self.ExtractToTemp(targetfile) + validtargets, invalidtargets = self.getTargets(verbose) + log().info("### installing %d found modifications:" % (len(validtargets))) + installcounter = 0 + for target in validtargets: + log().info("### installing modification '%s'" % target) + import ror.depchecker + dc = ror.depchecker.RoRDepChecker(TEMPDIR, "dtree", target, verbose) + if dc.dstree is None: + log().error("no dependenytree for File %s!" % (filename)) + continue + for file in dc.dstree: + filename = file['filename'] + filenamefound = self.searchFile(filename, TEMPDIR) + if filenamefound is None: + log().error("File %s not found in %s!" % (filename, TEMPDIR)) + sys.exit(1) + self.installfile(target, filenamefound, dryrun) + installcounter += 1 + if dryrun: + log().info("### would install %d files." % installcounter) + else: + log().info("### %d files installed, finished!" % installcounter) + self.removetemp(False) + return validtargets + + elif mode == "installrepo": + if targetfile.find("://") != -1: + m = re.match(r"^.*://(.*)$", targetfile) + if not m is None and len(m.groups()) > 0: + targetfile = m.groups()[0].rstrip("/") + else: + log().error("error while installing from repo: wrong URL scheme") + return False + else: + log().info("manual use, not parsing URL") + if not self.getRepoFile(targetfile): + log().error("error while installing from repo.") + return False + targetfile = os.path.join(DOWNLOADDIR, targetfile) + return ModTool().work("installall", targetfile, self.verbose, self.dryrun) + + elif mode == "uniqueid": + print self.getUniqueID() + + elif mode in ["list", "listall"]: + filename = os.path.abspath(targetfile) + self.ExtractToTemp(targetfile) + validtargets, invalidtargets = self.getTargets(verbose) + if mode == "listall": + if len(invalidtargets) > 0: + log().info("broken modifications found:") + for v in invalidtargets: + log().info(" %-20s" % v) + log().info("use the --verbose flag to find the missing files!") + else: + log().info("no broken modifications found") - if len(validtargets) > 0: - log().info("installable modifications found:") - for v in validtargets: - log().info(" %-20s" % v) - else: - log().info("no installable modifications found! :(") - # todo : remove workaround! - self.removetemp(False) - return validtargets + if len(validtargets) > 0: + log().info("installable modifications found:") + for v in validtargets: + log().info(" %-20s" % v) + else: + log().info("no installable modifications found! :(") + # todo : remove workaround! + self.removetemp(False) + return validtargets - elif mode in ["listinstalled"]: - targets = self.getRoRMods(verbose) - if len(targets) > 0: - log().info("### Found Mods:") - for target in targets: - log().info(" "+target) - else: - log().info("### No Mods found!") - - if mode in ["uninstall"]: - rorpath = getSettingsManager().getSetting("RigsOfRods", "BasePath") - log().info("### validating target ...") - import ror.depchecker - dc = ror.depchecker.RoRDepChecker(rorpath, "dtree", targetfile, verbose) - if dc.invalid: - log().error("### target invalid! (Target not found)") - log().info("### please use the 'listinstalled' mode to get valid uninstallation targets") - return None - - log().info("### target valid!") + elif mode in ["listinstalled"]: + targets = self.getRoRMods(verbose) + if len(targets) > 0: + log().info("### Found Mods:") + for target in targets: + log().info(" "+target) + else: + log().info("### No Mods found!") + + if mode in ["uninstall"]: + rorpath = getSettingsManager().getSetting("RigsOfRods", "BasePath") + log().info("### validating target ...") + import ror.depchecker + dc = ror.depchecker.RoRDepChecker(rorpath, "dtree", targetfile, verbose) + if dc.invalid: + log().error("### target invalid! (Target not found)") + log().info("### please use the 'listinstalled' mode to get valid uninstallation targets") + return None + + log().info("### target valid!") - #print dc.dstree - newtargets = [] - md5s = dc.readMD5File() - for file in dc.dstree: - filename = file['filename'] - if not filename in md5s.keys(): - newtargets.append(filename) - else: - # found in original file list, but check md5 sum first! - filenamefound = self.searchFile(filename, rorpath) - filemd5 = dc.md5Sum(filenamefound) - if filemd5.strip() != md5s[filename].strip(): - newtargets.append(filename) + #print dc.dstree + newtargets = [] + md5s = dc.readMD5File() + for file in dc.dstree: + filename = file['filename'] + if not filename in md5s.keys(): + newtargets.append(filename) + else: + # found in original file list, but check md5 sum first! + filenamefound = self.searchFile(filename, rorpath) + filemd5 = dc.md5Sum(filenamefound) + if filemd5.strip() != md5s[filename].strip(): + newtargets.append(filename) - log().info("### removed %d files from dependency tree." % (len(dc.dstree)-len(newtargets))) + log().info("### removed %d files from dependency tree." % (len(dc.dstree)-len(newtargets))) - if len(newtargets) == 0: - log().error("Cannot uninstall original Files!") - return + if len(newtargets) == 0: + log().error("Cannot uninstall original Files!") + return - #print newtargets - if dryrun: - log().info("### would uninstall %d file(s):" % len(newtargets)) - else: - log().info("### uninstalling %d file(s):" % len(newtargets)) - for target in newtargets: - filenamefound = self.searchFile(target, rorpath) - if filenamefound is None: - log().error("### File not found: %s" % target) - continue - self.unInstallfile(filenamefound, dryrun) + #print newtargets + if dryrun: + log().info("### would uninstall %d file(s):" % len(newtargets)) + else: + log().info("### uninstalling %d file(s):" % len(newtargets)) + for target in newtargets: + filenamefound = self.searchFile(target, rorpath) + if filenamefound is None: + log().error("### File not found: %s" % target) + continue + self.unInstallfile(filenamefound, dryrun) - return None - - def wgetreporthook(self, *arg): - percentdone = int(((arg[0] * arg[1]) / float(arg[2]))*100) - if percentdone % 10 == 0: - log().info("Downloading, % 4d%% done..." % percentdone) - - def wget(self, url, filename): - file, msg = urllib.urlretrieve(url, filename, self.wgetreporthook) - if os.path.isfile(file): - return True - return False - + if mode in ['createmod']: + rorpath = getSettingsManager().getSetting("RigsOfRods", "BasePath") + log().info("### validating target ...") + import ror.depchecker + dc = ror.depchecker.RoRDepChecker(os.path.join(rorpath, 'data'), "dtree", targetfile, verbose) + if dc.invalid: + log().error("### target invalid! (Target not found)") + log().info("### please use the 'listinstalled' mode to get valid createmod targets") + return None + + log().info("### target valid!") - def getRepoFile(self, repofilename): - if not os.path.isdir(DOWNLOADDIR): - os.mkdir(DOWNLOADDIR) - try: - log().info("trying to download the file %s form the repository..." % repofilename) - src = REPOSITORY_URL %{"file":repofilename} - dst = os.path.join(DOWNLOADDIR, repofilename) - #print src, dst - return self.wget(src, dst) - except Exception, err: - log().error("Error while trying to donwload file from the Repository:") - log().error(str(err)) - self.removetemp(False) - return False - - def removetemp(self, reporterrors=True): - if os.path.isdir(TEMPDIR): - try: - shutil.rmtree(TEMPDIR) - #os.rmdir(TEMPDIR) - except Exception, err: - if not reporterrors: - return - log().error(str(err)) - log().error("could not remove temporary diretory: %s! please delete by hand." % TEMPDIR) - sys.exit(1) + #print dc.dstree + newtargets = dc.dstree - def ExtractToTemp(self, filename): - file, extension = os.path.splitext(filename) - self.removetemp(False) - os.mkdir(TEMPDIR) - if extension.lower() == ".rar": - import UnRAR - dst = os.path.join(TEMPDIR, os.path.basename(filename)) - shutil.copyfile(filename, dst) - os.chdir(TEMPDIR) - UnRAR.Archive(os.path.basename(filename)).extract() - - # remove .rar file instantly - os.unlink(os.path.join(TEMPDIR, os.path.basename(filename))) - - # change back to current path - os.chdir(os.path.dirname(os.path.abspath(__file__))) - return True - elif extension.lower() == ".zip": - import UnZIP - UnZIP.unzip(filename, TEMPDIR) - return True - else: - log().info("copying "+filename+" to "+os.path.join(TEMPDIR, os.path.basename(filename))) - shutil.copyfile(filename, os.path.join(TEMPDIR, os.path.basename(filename))) - return False + uniqueid='UNIQUEID' + if dryrun: + log().info("### would download a unique identification number from the repository") + log().info("### would create %d file(s)." % len(newtargets)) + else: + uniqueid=self.getUniqueID() + log().info("### generating %d file(s):" % len(newtargets)) + purefile, extension = os.path.splitext(targetfile) + packdirname = os.path.join(rorpath, "packs", uniqueid+"-"+purefile) + os.mkdir(packdirname) + for target in newtargets: + target = target['filename'] + filenamefound = self.searchFile(target, rorpath) + if filenamefound is None: + log().error("### File not found: %s" % target) + continue + dstname = os.path.join(packdirname, uniqueid+"-"+target) + log().info(dstname) + shutil.copyfile(filenamefound, dstname) + log().info("### pack successfully created in path: %s" % packdirname) + + + + return None + + def wgetreporthook(self, *arg): + percentdone = int(((arg[0] * arg[1]) / float(arg[2]))*100) + if percentdone % 10 == 0: + log().info("Downloading, % 4d%% done..." % percentdone) + + def wget(self, url, filename): + file, msg = urllib.urlretrieve(url, filename, self.wgetreporthook) + if os.path.isfile(file): + return True + return False + - def unInstallfile(self, dstfile, dryrun): - filename = os.path.basename(dstfile) - filenamesplit = filename.split(".") + def getRepoFile(self, repofilename): + if not os.path.isdir(DOWNLOADDIR): + os.mkdir(DOWNLOADDIR) + try: + log().info("trying to download the file %s form the repository..." % repofilename) + src = REPOSITORY_URL %{"file":repofilename} + dst = os.path.join(DOWNLOADDIR, repofilename) + #print src, dst + return self.wget(src, dst) + except Exception, err: + log().error("Error while trying to donwload file from the Repository:") + log().error(str(err)) + self.removetemp(False) + return False - backups = {} - for file in os.listdir(os.path.dirname(dstfile)): - #print file - tmpfilesplit = file.split(".") - if tmpfilesplit[0] == filenamesplit[0]: - if tmpfilesplit[-1] == "backup" and int(tmpfilesplit[-2]) in range(0, 99): - backups[int(tmpfilesplit[-2])] = file - if len(backups) > 0: - # sort backups to get the latest - keys = backups.keys() - keys.sort() - latestbackup = backups[keys[-1]] - latestbackup = os.path.join(os.path.dirname(dstfile), latestbackup) - log().info("Latest Backup: %s" % latestbackup) - if dryrun: - log().info("would move backup file %s to %s" % (latestbackup, dstfile)) - else: - log().info("moving backup file %s to %s" % (latestbackup, dstfile)) - shutil.move(latestbackup, dstfile) - else: - if dryrun: - log().info("would remove file %s " % (dstfile)) - else: - log().info("removing file %s " % (dstfile)) - os.unlink(dstfile) - - - - def installfile(self, maintarget, srcfile, dryrun): - file, extension = os.path.splitext(maintarget) - rorpath = getSettingsManager().getSetting("RigsOfRods", "BasePath") - - if extension in ['.truck', '.load']: - path = os.path.join(rorpath, "data", "trucks") - elif extension in ['.terrn']: - path = os.path.join(rorpath, "data", "terrains") - else: - path = rorpath - - dstfile = os.path.join(path, os.path.basename(srcfile)) - - backupnumber = -1 - if os.path.isfile(dstfile): - for i in range(0, 99): - dstfile2 = dstfile + ".%02d.backup" % i - if not os.path.isfile(dstfile2): - backupnumber = i - break - log().info("file existing, adding file to the backup queue. File got backup number %d." % backupnumber) - - - if dryrun: - if backupnumber != -1: - log().info("would move original, existing file %s to %s" % (dstfile, dstfile2)) - log().info("would install %s to %s" % (os.path.basename(srcfile), path)) - else: - if backupnumber != -1: - log().info("moving original file %s to %s" % (dstfile, dstfile2)) - shutil.move(dstfile, dstfile2) - log().info("installing %s to %s" % (os.path.basename(srcfile), path)) - shutil.copyfile(srcfile, os.path.join(path, os.path.basename(srcfile))) + def getUniqueID(self): + UNIQUEIDURL = "http://repository.rigsofrods.com/uniqueid/" + try: + log().info("trying to get a unique ID from the repository ...") + f = urllib.urlopen(UNIQUEIDURL) + lines = f.readlines() + for line in lines: + if line[0:9] == "<!--ID-->": + id = line[9:].strip() + return id + except Exception, err: + log().error("Error while trying to get a unique ID") + log().error(str(err)) + self.removetemp(False) + return False + + def removetemp(self, reporterrors=True): + if os.path.isdir(TEMPDIR): + try: + shutil.rmtree(TEMPDIR) + #os.rmdir(TEMPDIR) + except Exception, err: + if not reporterrors: + return + log().error(str(err)) + log().error("could not remove temporary diretory: %s! please delete by hand." % TEMPDIR) + sys.exit(1) - def searchFile(self, filename, top): - for root, dirs, files in os.walk(top, topdown=False): - if filename in files: - return os.path.join(root, filename) - return None + def ExtractToTemp(self, filename): + file, extension = os.path.splitext(filename) + self.removetemp(False) + os.mkdir(TEMPDIR) + if extension.lower() == ".rar": + import UnRAR + dst = os.path.join(TEMPDIR, os.path.basename(filename)) + shutil.copyfile(filename, dst) + os.chdir(TEMPDIR) + UnRAR.Archive(os.path.basename(filename)).extract() + + # remove .rar file instantly + os.unlink(os.path.join(TEMPDIR, os.path.basename(filename))) + + # change back to current path + os.chdir(os.path.dirname(os.path.abspath(__file__))) + return True + elif extension.lower() == ".zip": + import UnZIP + UnZIP.unzip(filename, TEMPDIR) + return True + else: + log().info("copying "+filename+" to "+os.path.join(TEMPDIR, os.path.basename(filename))) + shutil.copyfile(filename, os.path.join(TEMPDIR, os.path.basename(filename))) + return False - def getTargets(self, verbose): - import ror.depchecker - dc = ror.depchecker.RoRDepChecker(TEMPDIR, "getfiles", "", False) - targets = [] - for file in dc.files: - filename, extension = os.path.splitext(file) - if extension.lower() in ['.truck', '.terrn', '.load']: - targets.append(os.path.basename(file)) + def unInstallfile(self, dstfile, dryrun): + filename = os.path.basename(dstfile) + filenamesplit = filename.split(".") - validtargets = [] - invalidtargets = [] - if len(targets) == 0: - log().info("### no targets found") - return validtargets, invalidtargets - - log().info("### found %d targets, checking them separatly now" % len(targets)) - for target in targets: - log().info("### checking target %s..." % target) - dc = ror.depchecker.RoRDepChecker(TEMPDIR, "dtree", target, verbose) - if dc.everythingfound: - validtargets.append(target) - else: - invalidtargets.append(target) - return validtargets, invalidtargets + backups = {} + for file in os.listdir(os.path.dirname(dstfile)): + #print file + tmpfilesplit = file.split(".") + if tmpfilesplit[0] == filenamesplit[0]: + if tmpfilesplit[-1] == "backup" and int(tmpfilesplit[-2]) in range(0, 99): + backups[int(tmpfilesplit[-2])] = file + if len(backups) > 0: + # sort backups to get the latest + keys = backups.keys() + keys.sort() + latestbackup = backups[keys[-1]] + latestbackup = os.path.join(os.path.dirname(dstfile), latestbackup) + log().info("Latest Backup: %s" % latestbackup) + if dryrun: + log().info("would move backup file %s to %s" % (latestbackup, dstfile)) + else: + log().info("moving backup file %s to %s" % (latestbackup, dstfile)) + shutil.move(latestbackup, dstfile) + else: + if dryrun: + log().info("would remove file %s " % (dstfile)) + else: + log().info("removing file %s " % (dstfile)) + os.unlink(dstfile) + + + + def installfile(self, maintarget, srcfile, dryrun): + file, extension = os.path.splitext(maintarget) + rorpath = getSettingsManager().getSetting("RigsOfRods", "BasePath") + + if extension in ['.truck', '.load']: + path = os.path.join(rorpath, "data", "trucks") + elif extension in ['.terrn']: + path = os.path.join(rorpath, "data", "terrains") + else: + path = rorpath + + dstfile = os.path.join(path, os.path.basename(srcfile)) + + backupnumber = -1 + if os.path.isfile(dstfile): + for i in range(0, 99): + dstfile2 = dstfile + ".%02d.backup" % i + if not os.path.isfile(dstfile2): + backupnumber = i + break + log().info("file existing, adding file to the backup queue. File got backup number %d." % backupnumber) + + + if dryrun: + if backupnumber != -1: + log().info("would move original, existing file %s to %s" % (dstfile, dstfile2)) + log().info("would install %s to %s" % (os.path.basename(srcfile), path)) + else: + if backupnumber != -1: + log().info("moving original file %s to %s" % (dstfile, dstfile2)) + shutil.move(dstfile, dstfile2) + log().info("installing %s to %s" % (os.path.basename(srcfile), path)) + shutil.copyfile(srcfile, os.path.join(path, os.path.basename(srcfile))) - def getRoRMods(self, verbose): - import ror.depchecker - rorpath = getSettingsManager().getSetting("RigsOfRods", "BasePath") - dc = ror.depchecker.RoRDepChecker(rorpath, "getfiles", "", False) - targets = [] - for file in dc.files: - filename, extension = os.path.splitext(file) - if extension.lower() in ['.truck', '.terrn', '.load']: - targets.append(file) - newtargets = [] - md5s = dc.readMD5File() - for target in targets: - if not os.path.basename(target) in md5s.keys(): - newtargets.append(os.path.basename(target)) - else: - # found in original file list, but check md5 sum first! - filemd5 = dc.md5Sum(target) - if filemd5.strip() != md5s[os.path.basename(target)].strip(): - newtargets.append(os.path.basename(target)) + def searchFile(self, filename, top): + for root, dirs, files in os.walk(top, topdown=False): + if filename in files: + return os.path.join(root, filename) + return None - return newtargets + def getTargets(self, verbose): + import ror.depchecker + dc = ror.depchecker.RoRDepChecker(TEMPDIR, "getfiles", "", False) + targets = [] + for file in dc.files: + filename, extension = os.path.splitext(file) + if extension.lower() in ['.truck', '.terrn', '.load']: + targets.append(os.path.basename(file)) - \ No newline at end of file + validtargets = [] + invalidtargets = [] + if len(targets) == 0: + log().info("### no targets found") + return validtargets, invalidtargets + + log().info("### found %d targets, checking them separatly now" % len(targets)) + for target in targets: + log().info("### checking target %s..." % target) + dc = ror.depchecker.RoRDepChecker(TEMPDIR, "dtree", target, verbose) + if dc.everythingfound: + validtargets.append(target) + else: + invalidtargets.append(target) + return validtargets, invalidtargets + + def getRoRMods(self, verbose): + import ror.depchecker + rorpath = getSettingsManager().getSetting("RigsOfRods", "BasePath") + dc = ror.depchecker.RoRDepChecker(rorpath, "getfiles", "", False) + targets = [] + for file in dc.files: + filename, extension = os.path.splitext(file) + if extension.lower() in ['.truck', '.terrn', '.load']: + targets.append(file) + newtargets = [] + md5s = dc.readMD5File() + for target in targets: + if not os.path.basename(target) in md5s.keys(): + newtargets.append(os.path.basename(target)) + else: + # found in original file list, but check md5 sum first! + filemd5 = dc.md5Sum(target) + if filemd5.strip() != md5s[os.path.basename(target)].strip(): + newtargets.append(os.path.basename(target)) + + return newtargets + + \ No newline at end of file Modified: trunk/tools/modtool.py =================================================================== --- trunk/tools/modtool.py 2007-09-09 15:49:39 UTC (rev 172) +++ trunk/tools/modtool.py 2007-09-09 16:30:45 UTC (rev 173) @@ -34,6 +34,12 @@ print "uninstall <modname> --verbose --dryrun" print " uninstalls a mod" print "" + print "uniqueid new" + print " get a new id from the repository" + print "" + print "createmod <truck filename>" + print " creates a new mod using the new ID format" + print "" print "notes: the --verbose option is optional to increase the output for debugging" print " the --dryrun option is optional and prints out what would be done" sys.exit(0) @@ -49,7 +55,7 @@ usage() mode = sys.argv[1] - if not mode in ['list', 'listall', 'install', 'installall', 'listinstalled','uninstall', 'installrepo']: + if not mode in ['list', 'listall', 'install', 'installall', 'listinstalled','uninstall', 'installrepo', 'uniqueid', 'createmod']: usage() if len(sys.argv) < 4 and mode in ['install']: usage() @@ -65,6 +71,10 @@ targetfile = sys.argv[2] elif mode == 'uninstall': targetfile = sys.argv[2] + elif mode == 'createmod': + targetfile = sys.argv[2] + elif mode == 'uniqueid': + targetfile = '' # get optional flags verbose = False This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Ap...@us...> - 2007-09-20 08:15:44
|
Revision: 181 http://roreditor.svn.sourceforge.net/roreditor/?rev=181&view=rev Author: Aperion Date: 2007-09-20 01:15:43 -0700 (Thu, 20 Sep 2007) Log Message: ----------- Added todo notes to remove platform dependence. These are denoted in comments as #TODO Modified Paths: -------------- trunk/doc/createdoc.py trunk/lib_common/ror/starter.py trunk/lib_common/roreditor/MainFrame_Tools.py trunk/lib_common/roreditor/RoRObjectPreviewOgreWindow.py trunk/lib_common/roreditor/RoROdefEditorOgreWindow.py trunk/lib_common/roreditor/RoRTerrainOgreWindow.py trunk/lib_common/roreditor/RoRTruckOgreWindow.py trunk/lib_common/roreditor/RoRTruckUVOgreWindow.py trunk/lib_common/wxogre/OgreManager.py Property Changed: ---------------- trunk/ Property changes on: trunk ___________________________________________________________________ Name: svn:ignore + editor.ini Modified: trunk/doc/createdoc.py =================================================================== --- trunk/doc/createdoc.py 2007-09-20 06:51:33 UTC (rev 180) +++ trunk/doc/createdoc.py 2007-09-20 08:15:43 UTC (rev 181) @@ -6,7 +6,7 @@ main method """ - sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..\lib")) + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..","lib")) # Import Psyco if available try: Modified: trunk/lib_common/ror/starter.py =================================================================== --- trunk/lib_common/ror/starter.py 2007-09-20 06:51:33 UTC (rev 180) +++ trunk/lib_common/ror/starter.py 2007-09-20 08:15:43 UTC (rev 181) @@ -220,6 +220,7 @@ # dlg.Destroy() # return False + #TODO check for actual binary name since RoR.exe is windows only if not checkRoRDirectory(): dlg = wx.MessageDialog(self, "RoR.exe not found in the selected directory!\nPlease select a new directory!", "Error", wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() Modified: trunk/lib_common/roreditor/MainFrame_Tools.py =================================================================== --- trunk/lib_common/roreditor/MainFrame_Tools.py 2007-09-20 06:51:33 UTC (rev 180) +++ trunk/lib_common/roreditor/MainFrame_Tools.py 2007-09-20 08:15:43 UTC (rev 181) @@ -23,7 +23,7 @@ vert = wx.BoxSizer(wx.VERTICAL) self.htmlctrl = wx.html.HtmlWindow(self, wx.ID_ANY, wx.DefaultPosition, wx.Size(800, 600)) if "gtk2" in wx.PlatformInfo: - ctrl.SetStandardFonts() + self.htmlctrl.SetStandardFonts() readme = self.loadReadme() if readme is None: self.Hide() Modified: trunk/lib_common/roreditor/RoRObjectPreviewOgreWindow.py =================================================================== --- trunk/lib_common/roreditor/RoRObjectPreviewOgreWindow.py 2007-09-20 06:51:33 UTC (rev 180) +++ trunk/lib_common/roreditor/RoRObjectPreviewOgreWindow.py 2007-09-20 08:15:43 UTC (rev 181) @@ -52,6 +52,7 @@ def SceneInitialisation(self): + #TODO This section is not platform independent, needs to be fixed. addresources = [self.rordir+"\\data\\terrains",self.rordir+"\\data\\trucks",self.rordir+"\\data\\objects"] # only init things in the main window, not in shared ones! # setup resources @@ -142,8 +143,8 @@ def free(self): try: self.sceneManager.destroyAllManualObjects() - except: - pass + except Exception, e: + log().exception(str(e)) try: self.logotextnode.detachAllObjects() @@ -152,17 +153,21 @@ self.sceneManager.destroySceneNode(self.logowheelnode.getName()) self.sceneManager.destroyEntity(self.logotextentity) self.sceneManager.destroyEntity(self.logowheelentity) - except: - pass + except Exception, e: + log().exception(str(e)) try: + #BUG: next line fails and goes to except self.objnode.detachAllObjects() self.sceneManager.destroySceneNode(self.objnode.getName()) - except: - pass - try: - self.sceneManager.destroyEntity(self.objentity) - except: - pass + except Exception, e: + log().exception(str(e)) + + #try: + #BUG Entering this function alone seams to kill the application. + #self.sceneManager.destroyEntity(self.objentity) + #except Exception, e: + #log().exception(str(e)) + self.renderWindow.removeAllViewports() getOgreManager().destroySceneManager(self.sceneManager) Modified: trunk/lib_common/roreditor/RoROdefEditorOgreWindow.py =================================================================== --- trunk/lib_common/roreditor/RoROdefEditorOgreWindow.py 2007-09-20 06:51:33 UTC (rev 180) +++ trunk/lib_common/roreditor/RoROdefEditorOgreWindow.py 2007-09-20 08:15:43 UTC (rev 181) @@ -56,6 +56,7 @@ def SceneInitialisation(self): + #TODO This section is not platform independent, needs to be fixed. addresources = [self.rordir+"\\data\\terrains",self.rordir+"\\data\\trucks",self.rordir+"\\data\\objects"] # only init things in the main window, not in shared ones! # setup resources Modified: trunk/lib_common/roreditor/RoRTerrainOgreWindow.py =================================================================== --- trunk/lib_common/roreditor/RoRTerrainOgreWindow.py 2007-09-20 06:51:33 UTC (rev 180) +++ trunk/lib_common/roreditor/RoRTerrainOgreWindow.py 2007-09-20 08:15:43 UTC (rev 181) @@ -176,6 +176,7 @@ def SceneInitialisation(self): hasparent = (not self.sceneManager is None) if not hasparent: + #TODO This section is not platform independent, needs to be fixed. addresources = [self.rordir+"\\data\\terrains",self.rordir+"\\data\\trucks",self.rordir+"\\data\\objects"] # only init things in the main window, not in shared ones! # setup resources Modified: trunk/lib_common/roreditor/RoRTruckOgreWindow.py =================================================================== --- trunk/lib_common/roreditor/RoRTruckOgreWindow.py 2007-09-20 06:51:33 UTC (rev 180) +++ trunk/lib_common/roreditor/RoRTruckOgreWindow.py 2007-09-20 08:15:43 UTC (rev 181) @@ -84,6 +84,8 @@ pass def SceneInitialisation(self): + + #TODO This section is not platform independent, needs to be fixed. addresources = [self.rordir+"\\data\\trucks",self.rordir+"\\data\\objects"] # only init things in the main window, not in shared ones! # setup resources Modified: trunk/lib_common/roreditor/RoRTruckUVOgreWindow.py =================================================================== --- trunk/lib_common/roreditor/RoRTruckUVOgreWindow.py 2007-09-20 06:51:33 UTC (rev 180) +++ trunk/lib_common/roreditor/RoRTruckUVOgreWindow.py 2007-09-20 08:15:43 UTC (rev 181) @@ -70,6 +70,8 @@ pass def SceneInitialisation(self): + + #TODO This section is not platform independent, needs to be fixed. addresources = [self.rordir+"\\data\\trucks",self.rordir+"\\data\\objects"] # only init things in the main window, not in shared ones! # setup resources Modified: trunk/lib_common/wxogre/OgreManager.py =================================================================== --- trunk/lib_common/wxogre/OgreManager.py 2007-09-20 06:51:33 UTC (rev 180) +++ trunk/lib_common/wxogre/OgreManager.py 2007-09-20 08:15:43 UTC (rev 181) @@ -93,8 +93,11 @@ def createRenderWindow(self, wxOgrewin, name, width, height, fullscreen, handle): renderParameters = ogre.NameValuePairList() renderParameters['externalWindowHandle'] = str(handle) + #TODO: For some reason passing renderParameters causes the renderer not to start, passing Null is a work around + # use len to make the names unique! - renderWindow = self.ogreRoot.createRenderWindow(name + str(len(self.renderWindows)), width, height, fullscreen, renderParameters) + renderWindow = self.ogreRoot.createRenderWindow(name + str(len(self.renderWindows)), width, height, fullscreen, None) + #renderWindow = self.ogreRoot.createRenderWindow(name + str(len(self.renderWindows)), width, height, fullscreen, renderParameters) #renderWindow.active = True self.renderWindows[wxOgrewin] = renderWindow return renderWindow This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ror...@us...> - 2007-11-27 12:55:35
|
Revision: 188 http://roreditor.svn.sourceforge.net/roreditor/?rev=188&view=rev Author: rorthomas Date: 2007-11-27 04:55:32 -0800 (Tue, 27 Nov 2007) Log Message: ----------- updated setup simplified starter Modified Paths: -------------- trunk/devtools/setup/setup.nsi trunk/lib_common/ror/starter.py Modified: trunk/devtools/setup/setup.nsi =================================================================== --- trunk/devtools/setup/setup.nsi 2007-11-27 12:46:06 UTC (rev 187) +++ trunk/devtools/setup/setup.nsi 2007-11-27 12:55:32 UTC (rev 188) @@ -2,7 +2,7 @@ ; HM NIS Edit Wizard helper defines !define PRODUCT_NAME "RoRToolkit" -!define PRODUCT_VERSION "0.1.142" +!define PRODUCT_VERSION "0.1.187" !define PRODUCT_PUBLISHER "Thomas Fischer" !define PRODUCT_WEB_SITE "http://wiki.rigsofrods.com/index.php?title=RoRToolkit" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" Modified: trunk/lib_common/ror/starter.py =================================================================== --- trunk/lib_common/ror/starter.py 2007-11-27 12:46:06 UTC (rev 187) +++ trunk/lib_common/ror/starter.py 2007-11-27 12:55:32 UTC (rev 188) @@ -54,24 +54,25 @@ self.btnStartTerrainEditor = wx.Button(self.panel, wx.ID_ANY, "Start Editor") self.Bind(wx.EVT_BUTTON, self.OnTerrainEditor, self.btnStartTerrainEditor) - self.btnBugReport = wx.Button(self.panel, wx.ID_ANY, "Report a Bug") - self.Bind(wx.EVT_BUTTON, self.OnBugReport, self.btnBugReport) - if sys.platform != 'win32': - self.btnBugReport.Enable(False) + #self.btnBugReport = wx.Button(self.panel, wx.ID_ANY, "Report a Bug") + #self.Bind(wx.EVT_BUTTON, self.OnBugReport, self.btnBugReport) + #if sys.platform != 'win32': + #self.btnBugReport.Enable(False) - self.btnUpdate = wx.Button(self.panel, wx.ID_ANY, "Update") - self.Bind(wx.EVT_BUTTON, self.OnUpdate, self.btnUpdate) + #self.btnUpdate = wx.Button(self.panel, wx.ID_ANY, "Update") + #self.Bind(wx.EVT_BUTTON, self.OnUpdate, self.btnUpdate) + #self.btnUpdate.Enable(False) - self.btnDepGraph = wx.Button(self.panel, wx.ID_ANY, "Dependency Graph") - self.Bind(wx.EVT_BUTTON, self.OnDepGraph, self.btnDepGraph) - if sys.platform != 'win32': - self.btnDepGraph.Enable(False) + #self.btnDepGraph = wx.Button(self.panel, wx.ID_ANY, "Dependency Graph") + #self.Bind(wx.EVT_BUTTON, self.OnDepGraph, self.btnDepGraph) + #if sys.platform != 'win32': + # self.btnDepGraph.Enable(False) - self.btnModUninstaller = wx.Button(self.panel, wx.ID_ANY, "Mod Uninstaller") - self.Bind(wx.EVT_BUTTON, self.OnModUninstaller, self.btnModUninstaller) + #self.btnModUninstaller = wx.Button(self.panel, wx.ID_ANY, "Mod Uninstaller") + #self.Bind(wx.EVT_BUTTON, self.OnModUninstaller, self.btnModUninstaller) - self.btnRepClient = wx.Button(self.panel, wx.ID_ANY, "Repository Client") - self.Bind(wx.EVT_BUTTON, self.OnRepClient, self.btnRepClient) + #self.btnRepClient = wx.Button(self.panel, wx.ID_ANY, "Repository Client") + #self.Bind(wx.EVT_BUTTON, self.OnRepClient, self.btnRepClient) self.btnExit = wx.Button(self.panel, wx.ID_ANY, "Exit") self.Bind(wx.EVT_BUTTON, self.OnExit, self.btnExit) @@ -101,7 +102,7 @@ self.btnStartRoR.Enable(True) #self.btnStartTruckEditor.Enable(True) self.btnStartTerrainEditor.Enable(True) - self.btnBugReport.Enable(True) + #self.btnBugReport.Enable(True) self.lblRoRDir.SetLabel("Selected Rigs of Rods Directory: " + self.rordir) def OnSelectRenderer(self, id=None, func=None): @@ -254,34 +255,28 @@ sizer_panel = wx.BoxSizer(wx.VERTICAL) sizer_panel.Add(self.image, 0, wx.EXPAND, 0) - sizer_a = wx.BoxSizer(wx.HORIZONTAL) - sizer_a.Add(self.lblRoRDir, 1, wx.EXPAND, 0) + sizer_a = wx.BoxSizer(wx.VERTICAL) + sizer_a.Add(self.lblRoRDir, 0, wx.EXPAND, 0) sizer_a.Add(self.btnSelectRoRDir, 0, wx.EXPAND, 0) - sizer_panel.Add(sizer_a, 0, wx.EXPAND, 0) - - sizer_b = wx.BoxSizer(wx.HORIZONTAL) - sizer_b.Add(self.btnStartRoR, 0, wx.EXPAND, 0) - - sizer_c = wx.BoxSizer(wx.VERTICAL) #sizer_c.Add(self.btnStartTruckEditor, 1, wx.EXPAND, 0) - sizer_c.Add(self.btnStartTerrainEditor, 1, wx.EXPAND, 0) - sizer_b.Add(sizer_c, 1, wx.EXPAND, 0) + sizer_a.Add(self.btnStartRoR, 0, wx.EXPAND, 0) + sizer_a.Add(self.btnStartTerrainEditor, 1, wx.EXPAND, 0) if sys.platform == 'win32': - sizer_b.Add(self.cbbRenderEngine, 0, wx.EXPAND, 0) - sizer_panel.Add(sizer_b, 1, wx.EXPAND, 0) + sizer_a.Add(self.cbbRenderEngine, 0, wx.EXPAND, 0) + sizer_panel.Add(sizer_a, 1, wx.EXPAND, 0) - sizer_d = wx.BoxSizer(wx.HORIZONTAL) - sizer_d.Add(self.btnBugReport, 1, wx.EXPAND, 0) - sizer_d.Add(self.btnUpdate, 1, wx.EXPAND, 0) - sizer_panel.Add(sizer_d, 0, wx.EXPAND, 0) + #sizer_d = wx.BoxSizer(wx.HORIZONTAL) + #sizer_d.Add(self.btnBugReport, 1, wx.EXPAND, 0) + #sizer_d.Add(self.btnUpdate, 1, wx.EXPAND, 0) + #sizer_panel.Add(sizer_d, 0, wx.EXPAND, 0) - sizer_e = wx.BoxSizer(wx.HORIZONTAL) - sizer_e.Add(self.btnDepGraph, 1, wx.EXPAND, 0) - sizer_e.Add(self.btnRepClient, 1, wx.EXPAND, 0) - sizer_e.Add(self.btnModUninstaller, 1, wx.EXPAND, 0) - sizer_panel.Add(sizer_e, 0, wx.EXPAND, 0) + #sizer_e = wx.BoxSizer(wx.HORIZONTAL) + #sizer_e.Add(self.btnDepGraph, 1, wx.EXPAND, 0) + #sizer_e.Add(self.btnRepClient, 1, wx.EXPAND, 0) + #sizer_e.Add(self.btnModUninstaller, 1, wx.EXPAND, 0) + #sizer_panel.Add(sizer_e, 0, wx.EXPAND, 0) sizer_panel.Add(self.btnExit, 0, wx.EXPAND, 0) self.panel.SetSizer(sizer_panel) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ror...@us...> - 2008-03-12 23:21:09
|
Revision: 192 http://roreditor.svn.sourceforge.net/roreditor/?rev=192&view=rev Author: rorthomas Date: 2008-03-12 16:21:05 -0700 (Wed, 12 Mar 2008) Log Message: ----------- - updated pyogre to 1.1 - fixed resource loading (parts only) !! WIP !! Modified Paths: -------------- trunk/editor.ini trunk/lib_common/ror/odefparser.py trunk/lib_common/ror/rorcommon.py trunk/lib_common/ror/terrainparser.py trunk/lib_common/roreditor/GUIObjectTree.py trunk/lib_common/roreditor/MainFrame.py trunk/lib_common/roreditor/RoRObjectPreviewOgreWindow.py trunk/lib_common/roreditor/RoROdefEditorOgreWindow.py trunk/lib_common/roreditor/RoRTerrainOgreWindow.py trunk/lib_common/roreditor/RoRTruckOgreWindow.py trunk/lib_common/roreditor/RoRTruckUVOgreWindow.py trunk/lib_windows/ogre/__init__.py trunk/lib_windows/ogre/gui/CEGUI/CEGUIBase.dll trunk/lib_windows/ogre/gui/CEGUI/CEGUIExpatParser.dll trunk/lib_windows/ogre/gui/CEGUI/CEGUIFalagardWRBase.dll trunk/lib_windows/ogre/gui/CEGUI/OgreGUIRenderer.dll trunk/lib_windows/ogre/gui/CEGUI/__init__.py trunk/lib_windows/ogre/gui/CEGUI/_cegui_.pyd trunk/lib_windows/ogre/io/OIS/__init__.py trunk/lib_windows/ogre/io/OIS/_ois_.pyd trunk/lib_windows/ogre/physics/ODE/_ode_.pyd trunk/lib_windows/ogre/physics/OgreNewt/__init__.py trunk/lib_windows/ogre/physics/OgreNewt/_ogrenewt_.pyd trunk/lib_windows/ogre/physics/OgreOde/OgreOde_Core.dll trunk/lib_windows/ogre/physics/OgreOde/OgreOde_Loader.dll trunk/lib_windows/ogre/physics/OgreOde/OgreOde_Prefab.dll trunk/lib_windows/ogre/physics/OgreOde/_ogreode_.pyd trunk/lib_windows/ogre/physics/OgreRefApp/ReferenceAppLayer.dll trunk/lib_windows/ogre/physics/OgreRefApp/_ogrerefapp_.pyd trunk/lib_windows/ogre/renderer/OGRE/OgreMain.dll trunk/lib_windows/ogre/renderer/OGRE/__init__.py trunk/lib_windows/ogre/renderer/OGRE/_ogre_.pyd trunk/lib_windows/ogre/renderer/OGRE/_ogre_exceptions_.py trunk/lib_windows/ogre/renderer/OGRE/cg.dll trunk/lib_windows/ogre/renderer/OGRE/sf_OIS.py trunk/lib_windows/ogre/sound/OgreAL/_ogreal_.pyd trunk/lib_windows/ogre/sound/OgreAL/ogg.dll trunk/lib_windows/ogre/sound/OgreAL/vorbis.dll trunk/lib_windows/ogre/sound/OgreAL/vorbisfile.dll trunk/rortoolkit.py trunk/windows/Plugin_BSPSceneManager.dll trunk/windows/Plugin_CgProgramManager.dll trunk/windows/Plugin_OctreeSceneManager.dll trunk/windows/Plugin_ParticleFX.dll trunk/windows/RenderSystem_Direct3D9.dll trunk/windows/RenderSystem_GL.dll Removed Paths: ------------- trunk/Plugin_BSPSceneManager.dll trunk/Plugin_CgProgramManager.dll trunk/Plugin_OctreeSceneManager.dll trunk/Plugin_ParticleFX.dll trunk/RenderSystem_Direct3D9.dll trunk/RenderSystem_GL.dll trunk/media/packs/OgreCore.zip Deleted: trunk/Plugin_BSPSceneManager.dll =================================================================== (Binary files differ) Deleted: trunk/Plugin_CgProgramManager.dll =================================================================== (Binary files differ) Deleted: trunk/Plugin_OctreeSceneManager.dll =================================================================== (Binary files differ) Deleted: trunk/Plugin_ParticleFX.dll =================================================================== (Binary files differ) Deleted: trunk/RenderSystem_Direct3D9.dll =================================================================== (Binary files differ) Deleted: trunk/RenderSystem_GL.dll =================================================================== (Binary files differ) Modified: trunk/editor.ini =================================================================== --- trunk/editor.ini 2008-01-15 12:44:59 UTC (rev 191) +++ trunk/editor.ini 2008-03-12 23:21:05 UTC (rev 192) @@ -1,3 +1,3 @@ [RigsOfRods] -basepath = invalid +basepath = E:\projects\ror\main Modified: trunk/lib_common/ror/odefparser.py =================================================================== --- trunk/lib_common/ror/odefparser.py 2008-01-15 12:44:59 UTC (rev 191) +++ trunk/lib_common/ror/odefparser.py 2008-03-12 23:21:05 UTC (rev 192) @@ -1,4 +1,5 @@ -# old format: +import copy, os, os.path +import ogre.renderer.OGRE as ogre from ror.logger import log from ror.settingsManager import getSettingsManager @@ -34,12 +35,26 @@ s += " coordinates: " + str(self.coords) s += " rotation: " + str(self.rotation) return s - + +def loadOdefContent(filename): + content = [] + ds=ogre.ResourceGroupManager.getSingleton().openResource(filename, "General"); + ec=0 + while True: + line = copy.copy(ds.getLine()) + #print line, ec + if line.strip() == "": + ec+=1 + if ec > 50: + break + content.append(line) + #ds.close() + return content + + def loadOdef(odefFilename): try: - f=open(odefFilename, 'r') - content = f.readlines() - f.close() + content = loadOdefContent(os.path.basename(odefFilename)) ismovable = False meshname = content[0].strip() scalearr = [1,1,1] Modified: trunk/lib_common/ror/rorcommon.py =================================================================== --- trunk/lib_common/ror/rorcommon.py 2008-01-15 12:44:59 UTC (rev 191) +++ trunk/lib_common/ror/rorcommon.py 2008-03-12 23:21:05 UTC (rev 192) @@ -1,7 +1,8 @@ -import sys, os, os.path +import sys, os, os.path, glob import wx from random import Random from logger import log +import ogre.renderer.OGRE as ogre def ShowOnAbout(event = None): rev = "" @@ -48,6 +49,52 @@ return rnd_id +def readResourceConfig(rordir): + f = open(os.path.join(rordir, 'resources.cfg'), 'r') + lines = f.readlines() + f.close() + normalResources = [] + zipResources = [] + isZip=False + for line in lines: + if line.strip() == '[Packs]' or line.strip() == '[InternalPacks]': + isZip=True + elif line[0] == '[': + isZip=False + #print line, isZip + + if line[:11] == 'FileSystem=': + dir=line[11:].strip() + dirname = dir.replace('/', '\\') + path = os.path.join(rordir, dirname) + if isZip: + zipResources.append(path) + else: + normalResources.append(path) + return (normalResources, zipResources) + + +def initResources(rordir): + (normalResources, zipResources) = readResourceConfig(rordir) + # only init things in the main window, not in shared ones! + # setup resources + for r in normalResources: + print 'adding normal resource: ' + r + ogre.ResourceGroupManager.getSingleton().addResourceLocation(r, "FileSystem", "General", False) + + for r in zipResources: + files = glob.glob(os.path.join(r, "*.zip")) + for file in files: + print 'adding zip resource: ' + file + ogre.ResourceGroupManager.getSingleton().addResourceLocation(file, "Zip", "General", False) + + #ogre.ResourceGroupManager.getSingleton().addResourceLocation("media/packs/OgreCore.zip", "Zip", "Bootstrap", False) + ogre.ResourceGroupManager.getSingleton().addResourceLocation("media", "FileSystem", "General", False) + ogre.ResourceGroupManager.getSingleton().addResourceLocation("media/materials", "FileSystem", "General", False) + ogre.ResourceGroupManager.getSingleton().addResourceLocation("media/models", "FileSystem", "General", False) + + ogre.ResourceGroupManager.getSingleton().initialiseAllResourceGroups() + def getPlatform(): if sys.platform in ['linux', 'linux2']: return 'linux' Modified: trunk/lib_common/ror/terrainparser.py =================================================================== --- trunk/lib_common/ror/terrainparser.py 2008-01-15 12:44:59 UTC (rev 191) +++ trunk/lib_common/ror/terrainparser.py 2008-03-12 23:21:05 UTC (rev 192) @@ -1,5 +1,6 @@ -import wx, os, os.path +import wx, os, os.path, copy +import ogre.renderer.OGRE as ogre from logger import log from settingsManager import getSettingsManager @@ -12,6 +13,7 @@ rotz = None name = "" filename = "" + line = 0 additionaloptions = [] comments = [] mayRotate = True @@ -53,9 +55,18 @@ f.close() def loadFile(self,filename): - f=open(filename, 'r') - content = f.readlines() - f.close() + content = [] + ds=ogre.ResourceGroupManager.getSingleton().openResource(filename, "General"); + ec=0 + while True: + line = copy.copy(ds.getLine()) + #print line, ec + if line.strip() == "": + ec+=1 + if ec > 50: + break + content.append(line) + #ds.close() return content def __init__(self, filename): @@ -158,6 +169,7 @@ truck.setPosition(x, y, z) truck.setRotation(rx, ry, -rz) truck.additionaloptions = objname[1:] + truck.line = i #truck.mayRotate=False self.trucks.append(truck) continue @@ -166,6 +178,7 @@ load.name = "load" load.filename = objname[-1].strip() load.comments = comm + load.line=i comm = [] load.setPosition(x, y, z) load.setRotation(rx, ry, -rz) @@ -180,6 +193,7 @@ obj.name = objectname obj.filename = objectname obj.comments = comm + obj.line=i comm = [] obj.setPosition(x, y, z) obj.setRotation(rx, ry, rz) Modified: trunk/lib_common/roreditor/GUIObjectTree.py =================================================================== --- trunk/lib_common/roreditor/GUIObjectTree.py 2008-01-15 12:44:59 UTC (rev 191) +++ trunk/lib_common/roreditor/GUIObjectTree.py 2008-03-12 23:21:05 UTC (rev 192) @@ -5,186 +5,134 @@ import wx.html import wx.aui import ror.settingsManager +from ror.rorcommon import * import cStringIO -RORPATH = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") -DATADIR = os.path.join(RORPATH, "data") -TRUCKDIR = os.path.join(DATADIR, "trucks") -TERRAINDIR = os.path.join(DATADIR, "terrains") -OBJECTDIR = os.path.join(DATADIR, "objects") - class RoRObjectTreeCtrl(wx.Panel): - def __init__(self, parent, frame): - wx.Panel.__init__(self, parent, wx.ID_ANY, wx.DefaultPosition, - wx.DefaultSize) + def __init__(self, parent, frame): + wx.Panel.__init__(self, parent, wx.ID_ANY, wx.DefaultPosition, + wx.DefaultSize) - self.parent = parent - self._frame = frame - + self.parent = parent + self._frame = frame + + self.rordir = ror.settingsManager.getSettingsManager().getSetting("RigsOfRods", "BasePath") + initResources(self.rordir) - vert = wx.BoxSizer(wx.VERTICAL) + vert = wx.BoxSizer(wx.VERTICAL) - tree = wx.TreeCtrl(self, -1, wx.Point(0, 0), wx.DefaultSize, wx.NO_BORDER | wx.TR_HIDE_ROOT) - - root = tree.AddRoot("Objects") - items = [] + tree = wx.TreeCtrl(self, -1, wx.Point(0, 0), wx.DefaultSize, wx.NO_BORDER | wx.TR_HIDE_ROOT) + + root = tree.AddRoot("Objects") + items = [] - imglist = wx.ImageList(16, 16, True, 2) - imglist.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, wx.Size(16,16))) - imglist.Add(wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, wx.Size(16,16))) - tree.AssignImageList(imglist) + imglist = wx.ImageList(16, 16, True, 2) + imglist.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, wx.Size(16,16))) + imglist.Add(wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, wx.Size(16,16))) + tree.AssignImageList(imglist) - terrains = self.getInstalledTerrains() - items.append(tree.AppendItem(root, "Terrains", 0)) - for terrain in terrains: - terrainname, extension = os.path.splitext(os.path.basename(terrain)) - data = wx.TreeItemData() - data.SetData(terrain) - tree.AppendItem(items[-1], terrainname, 1, data=data) - - trucks = self.getInstalledTrucks() - items.append(tree.AppendItem(root, "Trucks", 0)) - for truck in trucks: - truckname, extension = os.path.splitext(os.path.basename(truck)) - data = wx.TreeItemData() - data.SetData(truck) - tree.AppendItem(items[-1], truckname, 1, data=data) + terrains = tree.AppendItem(root, "Terrains", 0) + terrains_editable = tree.AppendItem(terrains, "editable", 0) + terrains_noneditable = tree.AppendItem(terrains, "Non-Editable", 0) + + terrainfiles = self.getInstalledTerrains("*.terrn") + for terrain in terrainfiles: + terrainname, extension = os.path.splitext(os.path.basename(terrain)) + data = wx.TreeItemData() + data.SetData(terrain) + tree.AppendItem(items[-1], terrainname, 1, data=data) + - loads = self.getInstalledLoads() - items.append(tree.AppendItem(root, "Loads", 0)) - for load in loads: - loadname, extension = os.path.splitext(os.path.basename(load)) - data = wx.TreeItemData() - data.SetData(load) - tree.AppendItem(items[-1], loadname, 1, data=data) - - objects = self.getInstalledObjects() - items.append(tree.AppendItem(root, "Objects", 0)) - for object in objects: - objectname, extension = os.path.splitext(os.path.basename(object)) - data = wx.TreeItemData() - data.SetData(object) - tree.AppendItem(items[-1], objectname, 1, data=data) + # root is hidden, no expand! + #tree.Expand(root) + vert.Add(tree, 1, wx.EXPAND, 5) + self.SetSizer(vert) + self.GetSizer().SetSizeHints(self) + + self.tree = tree + + # this dows not work :( + #self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDClick, self.tree) + self.Bind(wx.EVT_TREE_SEL_CHANGED, self.onTreeSelectionChange, self.tree) + self.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.OnRightClick, self.tree) + + #self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.BeginDrag, self.tree) + def OnLeftDClick(self, event): + #this is just a shortcut! + self.selectedfn = self.tree.GetItemData(event.GetItem()).GetData() + if self.selectedfn[-4:].lower() == "odef": + self.editOdef() + if self.selectedfn[-5:].lower() == "terrn": + self.editTerrain() + if self.selectedfn[-5:].lower() == 'truck' or self.selectedfn[-4:].lower() == 'load': + self.editTruck() + + def OnRightClick(self, event): + self.selectedfn = self.tree.GetItemData(event.GetItem()).GetData() + if self.selectedfn is None: + event.Skip() + return + + menu = wx.Menu() + + #create various menu entries + if self.selectedfn[-4:].lower() == "odef": + item_edit_odef = menu.Append(wx.ID_ANY, "Edit in ODef Editor") + self.Bind(wx.EVT_MENU, self.editOdef, item_edit_odef) + if self.selectedfn[-5:].lower() == "terrn": + item_edit_terrain = menu.Append(wx.ID_ANY, "Edit in Terrain Editor") + self.Bind(wx.EVT_MENU, self.editTerrain, item_edit_terrain) + if self.selectedfn[-5:].lower() == 'truck' or self.selectedfn[-4:].lower() == 'load': + item_edit_truck = menu.Append(wx.ID_ANY, "Edit in Truck Editor") + self.Bind(wx.EVT_MENU, self.editTruck, item_edit_truck) + menu.AppendSeparator() + item_add = menu.Append(wx.ID_ANY, "add to Terrain") + self.Bind(wx.EVT_MENU, self.addObjectToTerrain, item_add) + + self.PopupMenu(menu) + menu.Destroy() + + def editTruck(self, event=None): + if self.selectedfn is None: + return + self.parent.editTruck(self.selectedfn) + + def editOdef(self, event=None): + if self.selectedfn is None: + return + self.parent.editODefFile(self.selectedfn) - # root is hidden, no expand! - #tree.Expand(root) - vert.Add(tree, 1, wx.EXPAND, 5) - self.SetSizer(vert) - self.GetSizer().SetSizeHints(self) - - self.tree = tree - - # this dows not work :( - #self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDClick, self.tree) - self.Bind(wx.EVT_TREE_SEL_CHANGED, self.onTreeSelectionChange, self.tree) - self.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.OnRightClick, self.tree) - - #self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.BeginDrag, self.tree) - def OnLeftDClick(self, event): - #this is just a shortcut! - self.selectedfn = self.tree.GetItemData(event.GetItem()).GetData() - if self.selectedfn[-4:].lower() == "odef": - self.editOdef() - if self.selectedfn[-5:].lower() == "terrn": - self.editTerrain() - if self.selectedfn[-5:].lower() == 'truck' or self.selectedfn[-4:].lower() == 'load': - self.editTruck() - - def OnRightClick(self, event): - self.selectedfn = self.tree.GetItemData(event.GetItem()).GetData() - if self.selectedfn is None: - event.Skip() - return - - menu = wx.Menu() - - #create various menu entries - if self.selectedfn[-4:].lower() == "odef": - item_edit_odef = menu.Append(wx.ID_ANY, "Edit in ODef Editor") - self.Bind(wx.EVT_MENU, self.editOdef, item_edit_odef) - if self.selectedfn[-5:].lower() == "terrn": - item_edit_terrain = menu.Append(wx.ID_ANY, "Edit in Terrain Editor") - self.Bind(wx.EVT_MENU, self.editTerrain, item_edit_terrain) - if self.selectedfn[-5:].lower() == 'truck' or self.selectedfn[-4:].lower() == 'load': - item_edit_truck = menu.Append(wx.ID_ANY, "Edit in Truck Editor") - self.Bind(wx.EVT_MENU, self.editTruck, item_edit_truck) - menu.AppendSeparator() - item_add = menu.Append(wx.ID_ANY, "add to Terrain") - self.Bind(wx.EVT_MENU, self.addObjectToTerrain, item_add) - - self.PopupMenu(menu) - menu.Destroy() - - def editTruck(self, event=None): - if self.selectedfn is None: - return - self.parent.editTruck(self.selectedfn) - - def editOdef(self, event=None): - if self.selectedfn is None: - return - self.parent.editODefFile(self.selectedfn) - - def editTerrain(self, event=None): - if self.selectedfn is None: - return - self.parent.openTerrain(self.selectedfn) - - def addObjectToTerrain(self, event=None): - if self.selectedfn is None: - return - self.parent.addObjectToTerrain(self.selectedfn) - #def BeginDrag(self, event): - # ''' - # EVT_TREE_BEGIN_DRAG handler. - # ''' - # self.dragItem = event.GetItem() - # fn = self.tree.GetItemData(event.GetItem()).GetData() - # if fn is None: - # return - # #event.Allow() - # wx.TreeEvent.Allow(event) - - def onTreeSelectionChange(self, event=None): - fn = self.tree.GetItemData(self.tree.GetSelection()).GetData() - if fn is None: - return - self.parent.previewObject(fn) - - def getInstalledTerrains(self): - files = [] - for filename in os.listdir(TERRAINDIR): - onlyfilename, extension = os.path.splitext(filename) - if extension.lower() == ".terrn": - files.append(os.path.join(TERRAINDIR, filename)) - files.sort() - return files - - def getInstalledTrucks(self): - files = [] - for filename in os.listdir(TRUCKDIR): - onlyfilename, extension = os.path.splitext(filename) - if extension.lower() == ".truck": - files.append(os.path.join(TRUCKDIR, filename)) - files.sort() - return files - - def getInstalledLoads(self): - files = [] - for filename in os.listdir(TRUCKDIR): - onlyfilename, extension = os.path.splitext(filename) - if extension.lower() == ".load": - files.append(os.path.join(TRUCKDIR, filename)) - files.sort() - return files - - def getInstalledObjects(self): - files = [] - for filename in os.listdir(OBJECTDIR): - onlyfilename, extension = os.path.splitext(filename) - if extension.lower() == ".odef": - files.append(os.path.join(OBJECTDIR, filename)) - files.sort() - return files \ No newline at end of file + def editTerrain(self, event=None): + if self.selectedfn is None: + return + self.parent.openTerrain(self.selectedfn) + + def addObjectToTerrain(self, event=None): + if self.selectedfn is None: + return + self.parent.addObjectToTerrain(self.selectedfn) + #def BeginDrag(self, event): + # ''' + # EVT_TREE_BEGIN_DRAG handler. + # ''' + # self.dragItem = event.GetItem() + # fn = self.tree.GetItemData(event.GetItem()).GetData() + # if fn is None: + # return + # #event.Allow() + # wx.TreeEvent.Allow(event) + + def onTreeSelectionChange(self, event=None): + fn = self.tree.GetItemData(self.tree.GetSelection()).GetData() + if fn is None: + return + self.parent.previewObject(fn) + + def getInstalledFiles(self, extension): + files = [] + filesr = ogre.ResourceGroupManager.getSingleton().findResourceFileInfo("General", extension) + for file in filesr: + files.append(file) + return files Modified: trunk/lib_common/roreditor/MainFrame.py =================================================================== --- trunk/lib_common/roreditor/MainFrame.py 2008-01-15 12:44:59 UTC (rev 191) +++ trunk/lib_common/roreditor/MainFrame.py 2008-03-12 23:21:05 UTC (rev 192) @@ -19,7 +19,7 @@ from GUIObjectTree import * from MainFrame_Tools import * from MainFrame_Tools_ODefEditor import * - + import wx import wx.grid import wx.html @@ -56,493 +56,497 @@ OBJECTDIR = os.path.join(DATADIR, "objects") class MainFrame(wx.Frame): - - def __init__(self, parent, id=-1, title="", pos=wx.DefaultPosition, - size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE | - wx.SUNKEN_BORDER | - wx.CLIP_CHILDREN): + + def __init__(self, parent, id=-1, title="", pos=wx.DefaultPosition, + size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE | + wx.SUNKEN_BORDER | + wx.CLIP_CHILDREN): - wx.Frame.__init__(self, parent, id, title, pos, size, style) - - # tell FrameManager to manage this frame - self._mgr = wx.aui.AuiManager() - self._mgr.SetManagedWindow(self) - - self._perspectives = [] - self.n = 0 - self.x = 0 - - self.SetIcon(wx.Icon('ror.ico',wx.BITMAP_TYPE_ICO)) + wx.Frame.__init__(self, parent, id, title, pos, size, style) + + # tell FrameManager to manage this frame + self._mgr = wx.aui.AuiManager() + self._mgr.SetManagedWindow(self) + + self._perspectives = [] + self.n = 0 + self.x = 0 + + self.SetIcon(wx.Icon('ror.ico',wx.BITMAP_TYPE_ICO)) - # create menu - mb = wx.MenuBar() + # create menu + mb = wx.MenuBar() - file_menu = wx.Menu() - #file_menu.Append(ID_OpenTerrain, "Open Terrain") - file_menu.Append(wx.ID_EXIT, "Exit") + file_menu = wx.Menu() + #file_menu.Append(ID_OpenTerrain, "Open Terrain") + file_menu.Append(wx.ID_EXIT, "Exit") - #view_menu = wx.Menu() - #view_menu.Append(ID_CreateOgre, "Create new 3D View") + #view_menu = wx.Menu() + #view_menu.Append(ID_CreateOgre, "Create new 3D View") - self.managerInit() - options_menu = wx.Menu() - options_menu.Append(ID_Settings, "GUI Settings Pane") + self.managerInit() + options_menu = wx.Menu() + options_menu.Append(ID_Settings, "GUI Settings Pane") - self._perspectives_menu = wx.Menu() - self._perspectives_menu.Append(ID_CreatePerspective, "Create Perspective") - #self._perspectives_menu.Append(ID_CopyPerspective, "Copy Perspective Data To Clipboard") - self._perspectives_menu.AppendSeparator() - self._perspectives_menu.Append(ID_FirstPerspective+0, "Default Startup") - self._perspectives_menu.Append(ID_FirstPerspective+1, "Terrain") - self._perspectives_menu.Append(ID_FirstPerspective+2, "ODef Editor") - self._perspectives_menu.Append(ID_FirstPerspective+3, "Truck Editor") + self._perspectives_menu = wx.Menu() + self._perspectives_menu.Append(ID_CreatePerspective, "Create Perspective") + #self._perspectives_menu.Append(ID_CopyPerspective, "Copy Perspective Data To Clipboard") + self._perspectives_menu.AppendSeparator() + self._perspectives_menu.Append(ID_FirstPerspective+0, "Default Startup") + self._perspectives_menu.Append(ID_FirstPerspective+1, "Terrain") + self._perspectives_menu.Append(ID_FirstPerspective+2, "ODef Editor") + self._perspectives_menu.Append(ID_FirstPerspective+3, "Truck Editor") - help_menu = wx.Menu() - help_menu.Append(ID_About, "About...") - help_menu.Append(ID_ViewHelp, "View Help") - - mb.Append(file_menu, "File") - #mb.Append(view_menu, "View") - mb.Append(self._perspectives_menu, "Perspectives") - mb.Append(options_menu, "Options") - mb.Append(help_menu, "Help") - - self.SetMenuBar(mb) + help_menu = wx.Menu() + help_menu.Append(ID_About, "About...") + help_menu.Append(ID_ViewHelp, "View Help") + + mb.Append(file_menu, "File") + #mb.Append(view_menu, "View") + mb.Append(self._perspectives_menu, "Perspectives") + mb.Append(options_menu, "Options") + mb.Append(help_menu, "Help") + + self.SetMenuBar(mb) - self.statusbar = self.CreateStatusBar(5, 0, wx.ID_ANY, "mainstatusbar") - self.statusbar.SetStatusWidths([-1, 200, 130, 250, 80]) + self.statusbar = self.CreateStatusBar(5, 0, wx.ID_ANY, "mainstatusbar") + self.statusbar.SetStatusWidths([-1, 200, 130, 250, 80]) - # min size for the frame itself isn't completely done. - # see the end up FrameManager::Update() for the test - # code. For now, just hard code a frame minimum size - self.SetMinSize(wx.Size(600, 400)) - try: - import ror.svn - self.SetTitle("Rigs of Rods Terrain Editor revision %d" % ror.svn.getRevision()) - except: - self.SetTitle("Rigs of Rods Terrain Editor") - - # create some toolbars - self.terraintoolbar = wx.ToolBar(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TB_FLAT | wx.TB_NODIVIDER) - self.terraintoolbar.SetToolBitmapSize(wx.Size(16,16)) - self.terraintoolbar.AddLabelTool(ID_OpenTerrain, "Open Terrain", wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN)) - self.terraintoolbar.AddLabelTool(ID_SaveTerrain, "Save Terrain", wx.ArtProvider_GetBitmap(wx.ART_FILE_SAVE)) - self.terraintoolbar.EnableTool(ID_SaveTerrain, False) - self.terraintoolbar.AddLabelTool(ID_SaveTerrainAs, "Save Terrain as", wx.ArtProvider_GetBitmap(wx.ART_FILE_SAVE_AS)) - self.terraintoolbar.EnableTool(ID_SaveTerrainAs, False) - self.terraintoolbar.AddSeparator() - self.terraintoolbar.AddLabelTool(ID_AddObject, "Add Something", wx.ArtProvider_GetBitmap(wx.ART_NEW)) - self.terraintoolbar.EnableTool(ID_AddObject, False) - self.terraintoolbar.AddLabelTool(ID_DeleteSelection, "Delete Selection", wx.ArtProvider_GetBitmap(wx.ART_DELETE)) - self.terraintoolbar.EnableTool(ID_DeleteSelection, False) - self.terraintoolbar.AddSeparator() - self.terraintoolbar.AddLabelTool(ID_CopySelection, "Copy Selection", wx.ArtProvider_GetBitmap(wx.ART_COPY)) - self.terraintoolbar.EnableTool(ID_CopySelection, False) - self.terraintoolbar.AddLabelTool(ID_PasteSelection, "Paste Selection", wx.ArtProvider_GetBitmap(wx.ART_PASTE)) - self.terraintoolbar.EnableTool(ID_PasteSelection, False) - self.terraintoolbar.AddSeparator() - self.terraintoolbar.AddLabelTool(ID_UndoAction, "Undo last Action", wx.ArtProvider_GetBitmap(wx.ART_UNDO)) - self.terraintoolbar.EnableTool(ID_UndoAction, False) - self.terraintoolbar.AddLabelTool(ID_RedoAction, "Redo last Undo", wx.ArtProvider_GetBitmap(wx.ART_REDO)) - self.terraintoolbar.EnableTool(ID_RedoAction, False) - self.terraintoolbar.AddSeparator() - self.terraintoolbar.AddLabelTool(ID_FindObject, "Find Object", wx.ArtProvider_GetBitmap(wx.ART_FIND)) - self.terraintoolbar.EnableTool(ID_FindObject, False) - self.terraintoolbar.AddSeparator() - self.terraintoolbar.AddLabelTool(ID_Quit, "Quit", wx.ArtProvider_GetBitmap(wx.ART_QUIT)) - self.terraintoolbar.Realize() - - self.rordir = getSettingsManager().getSetting("RigsOfRods", "BasePath") - - - # add a bunch of panes - self.objectPreviewWindow = ObjectPreviewOgreWindow(self, wx.ID_ANY, rordir=self.rordir) - - self._mgr.AddPane(self.objectPreviewWindow, wx.aui.AuiPaneInfo(). - Name("object_preview"). - Caption("Object Preview"). - CenterPane(). - MinSize(wx.Size(200,200)). - CloseButton(True). - MaximizeButton(False)) + # min size for the frame itself isn't completely done. + # see the end up FrameManager::Update() for the test + # code. For now, just hard code a frame minimum size + self.SetMinSize(wx.Size(600, 400)) + try: + import ror.svn + self.SetTitle("Rigs of Rods Terrain Editor revision %d" % ror.svn.getRevision()) + except: + self.SetTitle("Rigs of Rods Terrain Editor") + + # create some toolbars + self.terraintoolbar = wx.ToolBar(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TB_FLAT | wx.TB_NODIVIDER) + self.terraintoolbar.SetToolBitmapSize(wx.Size(16,16)) + self.terraintoolbar.AddLabelTool(ID_OpenTerrain, "Open Terrain", wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN)) + self.terraintoolbar.AddLabelTool(ID_SaveTerrain, "Save Terrain", wx.ArtProvider_GetBitmap(wx.ART_FILE_SAVE)) + self.terraintoolbar.EnableTool(ID_SaveTerrain, False) + self.terraintoolbar.AddLabelTool(ID_SaveTerrainAs, "Save Terrain as", wx.ArtProvider_GetBitmap(wx.ART_FILE_SAVE_AS)) + self.terraintoolbar.EnableTool(ID_SaveTerrainAs, False) + self.terraintoolbar.AddSeparator() + self.terraintoolbar.AddLabelTool(ID_AddObject, "Add Something", wx.ArtProvider_GetBitmap(wx.ART_NEW)) + self.terraintoolbar.EnableTool(ID_AddObject, False) + self.terraintoolbar.AddLabelTool(ID_DeleteSelection, "Delete Selection", wx.ArtProvider_GetBitmap(wx.ART_DELETE)) + self.terraintoolbar.EnableTool(ID_DeleteSelection, False) + self.terraintoolbar.AddSeparator() + self.terraintoolbar.AddLabelTool(ID_CopySelection, "Copy Selection", wx.ArtProvider_GetBitmap(wx.ART_COPY)) + self.terraintoolbar.EnableTool(ID_CopySelection, False) + self.terraintoolbar.AddLabelTool(ID_PasteSelection, "Paste Selection", wx.ArtProvider_GetBitmap(wx.ART_PASTE)) + self.terraintoolbar.EnableTool(ID_PasteSelection, False) + self.terraintoolbar.AddSeparator() + self.terraintoolbar.AddLabelTool(ID_UndoAction, "Undo last Action", wx.ArtProvider_GetBitmap(wx.ART_UNDO)) + self.terraintoolbar.EnableTool(ID_UndoAction, False) + self.terraintoolbar.AddLabelTool(ID_RedoAction, "Redo last Undo", wx.ArtProvider_GetBitmap(wx.ART_REDO)) + self.terraintoolbar.EnableTool(ID_RedoAction, False) + self.terraintoolbar.AddSeparator() + self.terraintoolbar.AddLabelTool(ID_FindObject, "Find Object", wx.ArtProvider_GetBitmap(wx.ART_FIND)) + self.terraintoolbar.EnableTool(ID_FindObject, False) + self.terraintoolbar.AddSeparator() + self.terraintoolbar.AddLabelTool(ID_Quit, "Quit", wx.ArtProvider_GetBitmap(wx.ART_QUIT)) + self.terraintoolbar.Realize() + + self.rordir = getSettingsManager().getSetting("RigsOfRods", "BasePath") + + + # add a bunch of panes + self.objectPreviewWindow = ObjectPreviewOgreWindow(self, wx.ID_ANY, rordir=self.rordir) + + self._mgr.AddPane(self.objectPreviewWindow, wx.aui.AuiPaneInfo(). + Name("object_preview"). + Caption("Object Preview"). + CenterPane(). + MinSize(wx.Size(200,200)). + CloseButton(True). + MaximizeButton(False)) - self._mgr.AddPane(HelpPanel(self, self), wx.aui.AuiPaneInfo(). - Name("help"). - Caption("Help"). - Dockable(False). - Float(). - Fixed(). - Hide(). - CloseButton(True). - MaximizeButton(True)) + self._mgr.AddPane(HelpPanel(self, self), wx.aui.AuiPaneInfo(). + Name("help"). + Caption("Help"). + Dockable(False). + Float(). + Fixed(). + Hide(). + CloseButton(True). + MaximizeButton(True)) - self._mgr.AddPane(SettingsPanel(self, self), wx.aui.AuiPaneInfo(). - Name("settings"). - Caption("Dock Manager Settings"). - Dockable(False). - Float(). - Fixed(). - Hide(). - CloseButton(True). - MaximizeButton(True)) + self._mgr.AddPane(SettingsPanel(self, self), wx.aui.AuiPaneInfo(). + Name("settings"). + Caption("Dock Manager Settings"). + Dockable(False). + Float(). + Fixed(). + Hide(). + CloseButton(True). + MaximizeButton(True)) - self._mgr.AddPane(RoRObjectTreeCtrl(self, self), wx.aui.AuiPaneInfo(). - Name("object_tree"). - Caption("Object Tree"). - MinSize(wx.Size(200,100)). - Left(). - CloseButton(True). - MaximizeButton(True)) - - - # odef editor panels - self.oddefEditorViewSettings = OdefViewPanel(self, self) - self._mgr.AddPane(self.oddefEditorViewSettings, wx.aui.AuiPaneInfo(). - Name("odef_editor_view_settings"). - Caption("ODef Editor View Settings"). - MinSize(wx.Size(200,100)). - Left(). - CloseButton(True). - MaximizeButton(False). - Hide()) - - - # create the center pane(s) - #Timer creation (for rendering) - self.ogreTimer = wx.Timer() - self.ogreTimer.SetOwner(self) - self.Bind(wx.EVT_TIMER, self.onUpdateRender, self.ogreTimer) - self.ogreTimer.Start(25) - - # create timer for gui update - self.guitimer = wx.Timer() - self.guitimer.SetOwner(self) #Sets the timer to notify self: binding the timer event is not enough - self.Bind(wx.EVT_TIMER, self.OnGUITimer, self.guitimer) - self.guitimer.Start(200) + self._mgr.AddPane(RoRObjectTreeCtrl(self, self), wx.aui.AuiPaneInfo(). + Name("object_tree"). + Caption("Object Tree"). + MinSize(wx.Size(200,100)). + Left(). + CloseButton(True). + MaximizeButton(True)) + + + # odef editor panels + self.oddefEditorViewSettings = OdefViewPanel(self, self) + self._mgr.AddPane(self.oddefEditorViewSettings, wx.aui.AuiPaneInfo(). + Name("odef_editor_view_settings"). + Caption("ODef Editor View Settings"). + MinSize(wx.Size(200,100)). + Left(). + CloseButton(True). + MaximizeButton(False). + Hide()) + + + # create the center pane(s) + #Timer creation (for rendering) + self.ogreTimer = wx.Timer() + self.ogreTimer.SetOwner(self) + self.Bind(wx.EVT_TIMER, self.onUpdateRender, self.ogreTimer) + self.ogreTimer.Start(25) + + # create timer for gui update + self.guitimer = wx.Timer() + self.guitimer.SetOwner(self) #Sets the timer to notify self: binding the timer event is not enough + self.Bind(wx.EVT_TIMER, self.OnGUITimer, self.guitimer) + self.guitimer.Start(200) - # the terrain editor ogre window - self.terrainOgreWin = RoRTerrainOgreWindow(self, wx.ID_ANY, rordir=self.rordir) - self._mgr.AddPane(self.terrainOgreWin, wx.aui.AuiPaneInfo().Name("ogre_terrain_content").CenterPane().Hide()) + # the terrain editor ogre window + self.terrainOgreWin = RoRTerrainOgreWindow(self, wx.ID_ANY, rordir=self.rordir) + self._mgr.AddPane(self.terrainOgreWin, wx.aui.AuiPaneInfo().Name("ogre_terrain_content").CenterPane().Hide()) # the odef editor ogre window - self.odefEditorOgreWin = ODefEditorOgreWindow(self, wx.ID_ANY, rordir=self.rordir) - self._mgr.AddPane(self.odefEditorOgreWin, wx.aui.AuiPaneInfo().Name("ogre_odef_editor_content").CenterPane().Hide()) + self.odefEditorOgreWin = ODefEditorOgreWindow(self, wx.ID_ANY, rordir=self.rordir) + self._mgr.AddPane(self.odefEditorOgreWin, wx.aui.AuiPaneInfo().Name("ogre_odef_editor_content").CenterPane().Hide()) - # the truck editor window - self.truckEditorOgreWin = RoRTruckOgreWindow(self, wx.ID_ANY) - self._mgr.AddPane(self.truckEditorOgreWin, wx.aui.AuiPaneInfo().Name("ogre_truck_editor_content").CenterPane().Hide()) + # the truck editor window + self.truckEditorOgreWin = RoRTruckOgreWindow(self, wx.ID_ANY) + self._mgr.AddPane(self.truckEditorOgreWin, wx.aui.AuiPaneInfo().Name("ogre_truck_editor_content").CenterPane().Hide()) - # the truck editor UV window - self.truckEditorUVOgreWin = RoRTruckUVOgreWindow(self, wx.ID_ANY) - self._mgr.AddPane(self.truckEditorUVOgreWin, wx.aui.AuiPaneInfo().Name("ogre_truck_editor_uv_content").Float().Hide()) - - + # the truck editor UV window + self.truckEditorUVOgreWin = RoRTruckUVOgreWindow(self, wx.ID_ANY) + self._mgr.AddPane(self.truckEditorUVOgreWin, wx.aui.AuiPaneInfo().Name("ogre_truck_editor_uv_content").Float().Hide()) + + # add the toolbars to the manager - self._mgr.AddPane(self.terraintoolbar, wx.aui.AuiPaneInfo(). - Name("terrain_toolbar"). - Caption("General Toolbar"). - ToolbarPane().Top(). - LeftDockable(False). - RightDockable(False). - Hide() - ) + self._mgr.AddPane(self.terraintoolbar, wx.aui.AuiPaneInfo(). + Name("terrain_toolbar"). + Caption("General Toolbar"). + ToolbarPane().Top(). + LeftDockable(False). + RightDockable(False). + Hide() + ) - # make some default perspectives - self._perspectives.append(self._mgr.SavePerspective()) + # make some default perspectives + self._perspectives.append(self._mgr.SavePerspective()) - # hide all first - self.terraintoolbar.Hide() - all_panes = self._mgr.GetAllPanes() - for ii in xrange(len(all_panes)): - if not all_panes[ii].IsToolbar(): - all_panes[ii].Hide() + # hide all first + self.terraintoolbar.Hide() + all_panes = self._mgr.GetAllPanes() + for ii in xrange(len(all_panes)): + if not all_panes[ii].IsToolbar(): + all_panes[ii].Hide() - # terrain perspective - self._mgr.GetPane("ogre_truck_editor_uv_content").Show(False) - self._mgr.GetPane("terrain_toolbar").Show(True) - self._mgr.GetPane("ogre_truck_editor_content").Show(False) - self._mgr.GetPane("ogre_odef_editor_content").Show(False) - self._mgr.GetPane("odef_editor_view_settings").Show(False) - self._mgr.GetPane("ogre_terrain_content").Show(True) - self._mgr.GetPane("object_preview").Show(True).Left() - self._mgr.GetPane("object_tree").Show(True) - self.objectPreviewWindow - self._perspectives.append(self._mgr.SavePerspective()) + # terrain perspective + self._mgr.GetPane("ogre_truck_editor_uv_content").Show(False) + self._mgr.GetPane("terrain_toolbar").Show(True) + self._mgr.GetPane("ogre_truck_editor_content").Show(False) + self._mgr.GetPane("ogre_odef_editor_content").Show(False) + self._mgr.GetPane("odef_editor_view_settings").Show(False) + self._mgr.GetPane("ogre_terrain_content").Show(True) + self._mgr.GetPane("object_preview").Show(True).Left() + self._mgr.GetPane("object_tree").Show(True) + self.objectPreviewWindow + self._perspectives.append(self._mgr.SavePerspective()) - # odef editor perspective - self._mgr.GetPane("ogre_truck_editor_uv_content").Show(False) - self._mgr.GetPane("terrain_toolbar").Show(False) - self._mgr.GetPane("ogre_truck_editor_content").Show(False) - self._mgr.GetPane("object_preview").Show(False) - self._mgr.GetPane("ogre_terrain_content").Show(False) - self._mgr.GetPane("ogre_odef_editor_content").Show(True) - self._mgr.GetPane("odef_editor_view_settings").Show(True) - self._mgr.GetPane("object_tree").Show(True) - self._perspectives.append(self._mgr.SavePerspective()) + # odef editor perspective + self._mgr.GetPane("ogre_truck_editor_uv_content").Show(False) + self._mgr.GetPane("terrain_toolbar").Show(False) + self._mgr.GetPane("ogre_truck_editor_content").Show(False) + self._mgr.GetPane("object_preview").Show(False) + self._mgr.GetPane("ogre_terrain_content").Show(False) + self._mgr.GetPane("ogre_odef_editor_content").Show(True) + self._mgr.GetPane("odef_editor_view_settings").Show(True) + self._mgr.GetPane("object_tree").Show(True) + self._perspectives.append(self._mgr.SavePerspective()) - # truck editor perspective - self._mgr.GetPane("ogre_truck_editor_uv_content").Show(True) - self._mgr.GetPane("terrain_toolbar").Show(False) - self._mgr.GetPane("ogre_truck_editor_content").Show(True) - self._mgr.GetPane("object_preview").Show(False) - self._mgr.GetPane("ogre_terrain_content").Show(False) - self._mgr.GetPane("ogre_odef_editor_content").Show(False) - self._mgr.GetPane("odef_editor_view_settings").Show(False) - self._mgr.GetPane("object_tree").Show(False) - self._perspectives.append(self._mgr.SavePerspective()) - - # load startup perspective - self._mgr.LoadPerspective(self._perspectives[0]) - - # "commit" all changes made to FrameManager - self._mgr.Update() + # truck editor perspective + self._mgr.GetPane("ogre_truck_editor_uv_content").Show(True) + self._mgr.GetPane("terrain_toolbar").Show(False) + self._mgr.GetPane("ogre_truck_editor_content").Show(True) + self._mgr.GetPane("object_preview").Show(False) + self._mgr.GetPane("ogre_terrain_content").Show(False) + self._mgr.GetPane("ogre_odef_editor_content").Show(False) + self._mgr.GetPane("odef_editor_view_settings").Show(False) + self._mgr.GetPane("object_tree").Show(False) + self._perspectives.append(self._mgr.SavePerspective()) + + # load startup perspective + self._mgr.LoadPerspective(self._perspectives[0]) + + # "commit" all changes made to FrameManager + self._mgr.Update() - self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground) - self.Bind(wx.EVT_SIZE, self.OnSize) - self.Bind(wx.EVT_CLOSE, self.OnClose) + self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground) + self.Bind(wx.EVT_SIZE, self.OnSize) + self.Bind(wx.EVT_CLOSE, self.OnClose) - self.Bind(wx.EVT_MENU, self.OnOpenTerrain, id=ID_OpenTerrain) - self.Bind(wx.EVT_MENU, self.OnSaveTerrain, id=ID_SaveTerrain) - self.Bind(wx.EVT_MENU, self.OnSaveTerrainAs, id=ID_SaveTerrainAs) - self.Bind(wx.EVT_MENU, self.OnViewHelp, id=ID_ViewHelp) - - self.Bind(wx.EVT_MENU, self.OnCreateOgre, id=ID_CreateOgre) - - self.Bind(wx.EVT_MENU, self.OnCreatePerspective, id=ID_CreatePerspective) - self.Bind(wx.EVT_MENU, self.OnCopyPerspective, id=ID_CopyPerspective) + self.Bind(wx.EVT_MENU, self.OnOpenTerrain, id=ID_OpenTerrain) + self.Bind(wx.EVT_MENU, self.OnSaveTerrain, id=ID_SaveTerrain) + self.Bind(wx.EVT_MENU, self.OnSaveTerrainAs, id=ID_SaveTerrainAs) + self.Bind(wx.EVT_MENU, self.OnViewHelp, id=ID_ViewHelp) + + self.Bind(wx.EVT_MENU, self.OnCreateOgre, id=ID_CreateOgre) + + self.Bind(wx.EVT_MENU, self.OnCreatePerspective, id=ID_CreatePerspective) + self.Bind(wx.EVT_MENU, self.OnCopyPerspective, id=ID_CopyPerspective) - self.Bind(wx.EVT_MENU, self.OnSettings, id=ID_Settings) - - self.Bind(wx.EVT_MENU, self.OnExit, id=ID_Quit) - self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT) - self.Bind(wx.EVT_MENU, self.OnAbout, id=ID_About) - - self.Bind(wx.EVT_MENU_RANGE, self.OnRestorePerspective, id=ID_FirstPerspective, - id2=ID_FirstPerspective+1000) - - def changeEditorMode(self, id): - self._mgr.LoadPerspective(self._perspectives[id]) - self._mgr.Update() + self.Bind(wx.EVT_MENU, self.OnSettings, id=ID_Settings) - def OnViewHelp(self, event=None): - # show the settings pane, and float it - floating_pane = self._mgr.GetPane("help").Float().Show() + self.Bind(wx.EVT_MENU, self.OnExit, id=ID_Quit) + self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT) + self.Bind(wx.EVT_MENU, self.OnAbout, id=ID_About) + + self.Bind(wx.EVT_MENU_RANGE, self.OnRestorePerspective, id=ID_FirstPerspective, + id2=ID_FirstPerspective+1000) + + def changeEditorMode(self, id): + self._mgr.LoadPerspective(self._perspectives[id]) + self._mgr.Update() + + def OnViewHelp(self, event=None): + # show the settings pane, and float it + floating_pane = self._mgr.GetPane("help").Float().Show() - if floating_pane.floating_pos == wx.DefaultPosition: - floating_pane.FloatingPosition(self.GetStartPosition()) + if floating_pane.floating_pos == wx.DefaultPosition: + floating_pane.FloatingPosition(self.GetStartPosition()) - self._mgr.Update() + self._mgr.Update() - - def addObjectToTerrain(self, filename): - try: - self.changeEditorMode(1) - onlyfilename, extension = os.path.splitext(os.path.basename(filename)) - if extension.lower() in ['.truck', '.load']: - if not self.terrainOgreWin.addTruckToTerrain(truckFilename=filename): - dlg = wx.MessageDialog(self, "You must select a position on the ground first!", "error", wx.OK | wx.ICON_INFORMATION) - dlg.ShowModal() - dlg.Destroy() - elif extension.lower() in ['.odef']: - if not self.terrainOgreWin.addObjectToTerrain(odefFilename=filename): - dlg = wx.MessageDialog(self, "You must select a position on the ground first!", "error", wx.OK | wx.ICON_INFORMATION) - dlg.ShowModal() - dlg.Destroy() - except: - pass - - def previewObject(self, filename): - #try: - self.objectPreviewWindow.loadFile(filename) - #except: - # pass + + def addObjectToTerrain(self, filename): + try: + self.changeEditorMode(1) + onlyfilename, extension = os.path.splitext(os.path.basename(filename)) + if extension.lower() in ['.truck', '.load']: + if not self.terrainOgreWin.addTruckToTerrain(truckFilename=filename): + dlg = wx.MessageDialog(self, "You must select a position on the ground first!", "error", wx.OK | wx.ICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() + elif extension.lower() in ['.odef']: + if not self.terrainOgreWin.addObjectToTerrain(odefFilename=filename): + dlg = wx.MessageDialog(self, "You must select a position on the ground first!", "error", wx.OK | wx.ICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() + except: + pass + + def previewObject(self, filename): + #try: + self.objectPreviewWindow.loadFile(filename) + #except: + # pass - def editODefFile(self, filename): - #try: - self.odefEditorOgreWin.loadFile(filename) - self.changeEditorMode(2) - self.oddefEditorViewSettings.resetControls() - #except Exception, err: - # print err - # pass + def editODefFile(self, filename): + #try: + self.odefEditorOgreWin.loadFile(filename) + self.changeEditorMode(2) + self.oddefEditorViewSettings.resetControls() + #except Exception, err: + # print err + # pass - def editTruck(self, filename): - #try: - tree = self.truckEditorOgreWin.LoadTruck(filename) - self.changeEditorMode(3) - self.truckEditorUVOgreWin.setTree(tree) - #except Exception, err: - # print err - # pass + def editTruck(self, filename): + #try: + tree = self.truckEditorOgreWin.LoadTruck(filename) + self.changeEditorMode(3) + self.truckEditorUVOgreWin.setTree(tree) + #except Exception, err: + # print err + # pass - def updateObjPosRot(self, event=None): - self.statusbar.SetStatusText(self.terrainOgreWin.currentStatusMsg, 1) - if self.terrainOgreWin.terrain is None: - return - if self.terrainOgreWin.selectedEntry is None: - self.statusbar.SetStatusText("Nothing selected", 2) - return - entry = self.terrainOgreWin.selectedEntry - #comment = self.terrainOgreWin.getCommentsForObject(n.getName()).lstrip('/') - #if comment.strip() != "": - # txt = "%s / %s" % (n.getName(), comment) - #else: - txt = "%s %s" % (entry.data.name, " ".join(entry.data.additionaloptions)) - self.statusbar.SetStatusText(txt, 2) - - posx, posy, posz, rotx, roty, rotz = self.terrainOgreWin.getSelectionPositionRotation() - txt = "%0.2f, %0.2f, %0.2f / %0.2f, %0.2f, %0.2f" % (posx, posy, posz, rotx, roty, rotz) - self.statusbar.SetStatusText(txt, 3) + def updateObjPosRot(self, event=None): + self.statusbar.SetStatusText(self.terrainOgreWin.currentStatusMsg, 1) + if self.terrainOgreWin.terrain is None: + return + if self.terrainOgreWin.selectedEntry is None: + self.statusbar.SetStatusText("Nothing selected", 2) + return + entry = self.terrainOgreWin.selectedEntry + #comment = self.terrainOgreWin.getCommentsForObject(n.getName()).lstrip('/') + #if comment.strip() != "": + # txt = "%s / %s" % (n.getName(), comment) + #else: + txt = "%s %s" % (entry.data.name, " ".join(entry.data.additionaloptions)) + self.statusbar.SetStatusText(txt, 2) + + posx, posy, posz, rotx, roty, rotz = self.terrainOgreWin.getSelectionPositionRotation() + txt = "%d, %0.2f, %0.2f, %0.2f / %0.2f, %0.2f, %0.2f" % (entry.data.line, posx, posy, posz, rotx, roty, rotz) + self.statusbar.SetStatusText(txt, 3) - def OnGUITimer(self, event): - #fill labels with some information, all windows have the same FPS! - txt = "%0.2f FPS" % (self.terrainOgreWin.renderWindow.getStatistics().lastFPS) - self.statusbar.SetStatusText(txt, 4) - self.updateObjPosRot() - - def onUpdateRender(self, event=None): - getOgreManager().RenderAll() - pass + def OnGUITimer(self, event): + #fill labels with some information, all windows have the same FPS! + txt='' + try: + txt = "%0.2f FPS" % (self.terrainOgreWin.renderWindow.getStatistics().lastFPS) + except: + pass + self.statusbar.SetStatusText(txt, 4) + self.updateObjPosRot() + + def onUpdateRender(self, event=None): + getOgreManager().RenderAll() + pass - def openTerrain(self, filename): - self.changeEditorMode(1) - self.terrainOgreWin.LoadTerrain(filename) - self.terraintoolbar.EnableTool(ID_AddObject, True) - self.terraintoolbar.EnableTool(ID_DeleteSelection, True) - self.terraintoolbar.EnableTool(ID_CopySelection, True) - self.terraintoolbar.EnableTool(ID_PasteSelection, True) - self.terraintoolbar.EnableTool(ID_UndoAction, True) - self.terraintoolbar.EnableTool(ID_RedoAction, True) - self.terraintoolbar.EnableTool(ID_FindObject, True) - self.terraintoolbar.EnableTool(ID_SaveTerrain, True) - self.terraintoolbar.EnableTool(ID_SaveTerrainAs, True) + def openTerrain(self, filename): + self.changeEditorMode(1) + self.terrainOgreWin.LoadTerrain(filename) + self.terraintoolbar.EnableTool(ID_AddObject, True) + self.terraintoolbar.EnableTool(ID_DeleteSelection, True) + self.terraintoolbar.EnableTool(ID_CopySelection, True) + self.terraintoolbar.EnableTool(ID_PasteSelection, True) + self.terraintoolbar.EnableTool(ID_UndoAction, True) + self.terraintoolbar.EnableTool(ID_RedoAction, True) + self.terraintoolbar.EnableTool(ID_FindObject, True) + self.terraintoolbar.EnableTool(ID_SaveTerrain, True) + self.terraintoolbar.EnableTool(ID_SaveTerrainAs, True) - def OnOpenTerrain(self, event=None): - default = "" - if self.rordir: - default = os.path.join(self.rordir, TERRAINDIR) - dialog = wx.FileDialog(self, "Open Terrain", default, "", "Terrain Files (*.terrn)|*.terrn", wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) - res = dialog.ShowModal() - if res == wx.ID_OK: - self.openTerrain(dialog.GetPath()) + def OnOpenTerrain(self, event=None): + default = "" + if self.rordir: + default = os.path.join(self.rordir, TERRAINDIR) + dialog = wx.FileDialog(self, "Open Terrain", default, "", "Terrain Files (*.terrn)|*.terrn", wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) + res = dialog.ShowModal() + if res == wx.ID_OK: + self.openTerrain(dialog.GetPath()) - def OnSaveTerrain(self, event=None): - if not self.terrainOgreWin.SaveTerrain(): - dlg = wx.MessageDialog(self, "error while saving, see console!\n","error", wx.OK | wx.ICON_INFORMATION) - dlg.ShowModal() - dlg.Destroy() + def OnSaveTerrain(self, event=None): + if not self.terrainOgreWin.SaveTerrain(): + dlg = wx.MessageDialog(self, "error while saving, see console!\n","error", wx.OK | wx.ICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() - def OnSaveTerrainAs(self, event=None): - default = "" - if self.rordir: - default = os.path.join(self.rordir, TERRAINDIR) - dialog = wx.FileDialog(self, "Save Terrain as", default, "", "Terrain Files (*.terrn)|*.terrn", wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT) - res = dialog.ShowModal() - if res == wx.ID_OK: - if not self.terrainOgreWin.SaveTerrain(dialog.GetPath()): - dlg = wx.MessageDialog(self, "error while saving as another file, see console!\n","error", wx.OK | wx.ICON_INFORMATION) - dlg.ShowModal() - dlg.Destroy() + def OnSaveTerrainAs(self, event=None): + default = "" + if self.rordir: + default = os.path.join(self.rordir, TERRAINDIR) + dialog = wx.FileDialog(self, "Save Terrain as", default, "", "Terrain Files (*.terrn)|*.terrn", wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT) + res = dialog.ShowModal() + if res == wx.ID_OK: + if not self.terrainOgreWin.SaveTerrain(dialog.GetPath()): + dlg = wx.MessageDialog(self, "error while saving as another file, see console!\n","error", wx.OK | wx.ICON_INFORMATION) + dlg.ShowModal() + dlg.Destroy() - def OnClose(self, event): - self.OnExit(event) - - def OnExit(self, event): - try: - all_panes = self._mgr.GetAllPanes() - for ii in xrange(len(all_panes)): - if not all_panes[ii].IsToolbar(): - all_panes[ii].Hide() - self._mgr.UnInit() - del self._mgr - self.Destroy() - self.Close() - except: - pass + def OnClose(self, event): + self.OnExit(event) + + def OnExit(self, event): + try: + all_panes = self._mgr.GetAllPanes() + for ii in xrange(len(all_panes)): + if not all_panes[ii].IsToolbar(): + all_panes[ii].Hide() + self._mgr.UnInit() + del self._mgr + self.Destroy() + self.Close() + except: + pass - def OnAbout(self, event): - ShowOnAbout() + def OnAbout(self, event): + ShowOnAbout() - def GetDockArt(self): - return self._mgr.GetArtProvider() + def GetDockArt(self): + return self._mgr.GetArtProvider() - def DoUpdate(self): - self._mgr.Update() + def DoUpdate(self): + self._mgr.Update() - def OnEraseBackground(self, event): - event.Skip() + def OnEraseBackground(self, event): + event.Skip() - def OnSize(self, event): - event.Skip() + def OnSize(self, event): + event.Skip() - def OnSettings(self, event): - # show the settings pane, and float it - floating_pane = self._mgr.GetPane("settings").Float().Show() + def OnSettings(self, event): + # show the settings pane, and float it + floating_pane = self._mgr.GetPane("settings").Float().Show() - if floating_pane.floating_pos == wx.DefaultPosition: - floating_pane.FloatingPosition(self.GetStartPosition()) + if floating_pane.floating_pos == wx.DefaultPosition: + floating_pane.FloatingPosition(self.GetStartPosition()) - self._mgr.Update() + self._mgr.Update() - def managerInit(self): - flags = self._mgr.GetFlags() - # based on default settings! - flags |= wx.aui.AUI_MGR_ALLOW_ACTIVE_PANE - flags &= ~wx.aui.AUI_MGR_TRANSPARENT_DRAG - self._mgr.SetFlags(flags) + def managerInit(self): + flags = self._mgr.GetFlags() + # based on default settings! + flags |= wx.aui.AUI_MGR_ALLOW_ACTIVE_PANE + flags &= ~wx.aui.AUI_MGR_TRANSPARENT_DRAG + self._mgr.SetFlags(flags) - def OnCreatePerspective(self, event): - dlg = wx.TextEntryDialog(self, "Enter a name for the new perspective:", "AUI Test") - - dlg.SetValue(("Perspective %d")%(len(self._perspectives)+1)) - if dlg.ShowModal() != wx.ID_OK: - return - - if len(self._perspectives) == 0: - self._perspectives_menu.AppendSeparator() - - self._perspectives_menu.Append(ID_FirstPerspective + len(self._perspectives), dlg.GetValue()) - self._perspectives.append(self._mgr.SavePerspective()) + def OnCreatePerspective(self, event): + dlg = wx.TextEntryDialog(self, "Enter a name for the new perspective:", "AUI Test") + + dlg.SetValue(("Perspective %d")%(len(self._perspectives)+1)) + if dlg.ShowModal() != wx.ID_OK: + return + + if len(self._perspectives) == 0: + self._perspectives_menu.AppendSeparator() + + self._perspectives_menu.Append(ID_FirstPerspective + len(self._perspectives), dlg.GetValue()) + self._perspectives.append(self._mgr.SavePerspective()) - def OnCopyPerspective(self, event): - s = self._mgr.SavePerspective() - - if wx.TheClipboard.Open(): - - wx.TheClipboard.SetData(wx.TextDataObject(s)) - wx.TheClipboard.Close() - - def OnRestorePerspective(self, event): - self._mgr.LoadPerspective(self._perspectives[event.GetId() - ID_FirstPerspective]) + def OnCopyPerspective(self, event): + s = self._mgr.SavePerspective() + + if wx.TheClipboard.Open(): + + wx.TheClipboard.SetData(wx.TextDataObject(s)) + wx.TheClipboard.Close() + + def OnRestorePerspective(self, event): + self._mgr.LoadPerspective(self._perspectives[event.GetId() - ID_FirstPerspective]) - def GetStartPosition(self): - self.x = self.x + 20 - x = self.x - pt = self.ClientToScreen(wx.Point(0, 0)) - - return wx.Point(pt.x + x, pt.y + x) + def GetStartPosition(self): + self.x = self.x + 20 + x = self.x + pt = self.ClientToScreen(wx.Point(0, 0)) + + return wx.Point(pt.x + x, pt.y + x) - def OnCreateOgre(self, event): - self._mgr.AddPane(self.CreateOgreCtrl(), wx.aui.AuiPaneInfo(). - Caption("Ogre Window"). - Float().FloatingPosition(self.GetStartPosition()). - CloseButton(True).MaximizeButton(False)) - self._mgr.Update() - - def CreateOgreCtrl(self): - return RoRTerrainOgreWindow(self, wx.ID_ANY, maininstance=self.terrainOgreWin) + def OnCreateOgre(self, event): + self._mgr.AddPane(self.CreateOgreCtrl(), wx.aui.AuiPaneInfo(). + Caption("Ogre Window"). + Float().FloatingPosition(self.GetS... [truncated message content] |
From: <ror...@us...> - 2008-03-12 23:28:58
|
Revision: 193 http://roreditor.svn.sourceforge.net/roreditor/?rev=193&view=rev Author: rorthomas Date: 2008-03-12 16:28:56 -0700 (Wed, 12 Mar 2008) Log Message: ----------- added forgotten files Modified Paths: -------------- trunk/lib_common/ror/odefparser.py trunk/lib_common/ror/rorcommon.py trunk/lib_common/ror/terrainparser.py Added Paths: ----------- trunk/lib_windows/ogre/addons/ trunk/lib_windows/ogre/addons/__init__.py trunk/lib_windows/ogre/addons/cadunetree/ trunk/lib_windows/ogre/addons/cadunetree/__init__.py trunk/lib_windows/ogre/addons/cadunetree/_cadunetree_.pyd trunk/lib_windows/ogre/addons/caelum/ trunk/lib_windows/ogre/addons/caelum/__init__.py trunk/lib_windows/ogre/addons/caelum/_caelum_.pyd trunk/lib_windows/ogre/addons/et/ trunk/lib_windows/ogre/addons/et/__init__.py trunk/lib_windows/ogre/addons/et/_et_.pyd trunk/lib_windows/ogre/addons/noise/ trunk/lib_windows/ogre/addons/noise/__init__.py trunk/lib_windows/ogre/addons/noise/_noise_.pyd trunk/lib_windows/ogre/addons/ofusion/ trunk/lib_windows/ogre/addons/ofusion/__init__.py trunk/lib_windows/ogre/addons/ofusion/_ofusion_.pyd trunk/lib_windows/ogre/addons/ogredshow/ trunk/lib_windows/ogre/addons/ogredshow/__init__.py trunk/lib_windows/ogre/addons/ogreforests/ trunk/lib_windows/ogre/addons/ogreforests/__init__.py trunk/lib_windows/ogre/addons/ogreforests/_ogreforests_.pyd trunk/lib_windows/ogre/addons/ogrevideoffmpeg/ trunk/lib_windows/ogre/addons/ogrevideoffmpeg/__init__.py trunk/lib_windows/ogre/addons/ogrevideoffmpeg/_ogrevideoffmpeg_.pyd trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avcodec-51.dll trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avcodec.dll trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avdevice-52.dll trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avdevice.dll trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avformat-52.dll trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avformat.dll trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avutil-49.dll trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avutil.dll trunk/lib_windows/ogre/addons/opensteer/ trunk/lib_windows/ogre/addons/opensteer/__init__.py trunk/lib_windows/ogre/addons/particleuniverse/ trunk/lib_windows/ogre/addons/particleuniverse/__init__.py trunk/lib_windows/ogre/addons/particleuniverse/_particleuniverse_.pyd trunk/lib_windows/ogre/addons/plib/ trunk/lib_windows/ogre/addons/plib/__init__.py trunk/lib_windows/ogre/addons/plib/_plib_.pyd trunk/lib_windows/ogre/addons/plib/boost_python-vc80-mt-1_35.dll trunk/lib_windows/ogre/addons/theora/ trunk/lib_windows/ogre/addons/theora/OAL_MOD.dll trunk/lib_windows/ogre/addons/theora/__init__.py trunk/lib_windows/ogre/addons/theora/_theora_.pyd trunk/lib_windows/ogre/addons/watermesh/ trunk/lib_windows/ogre/addons/watermesh/__init__.py trunk/lib_windows/ogre/addons/watermesh/_watermesh_.pyd trunk/lib_windows/ogre/gui/CEGUI/CEGUITinyXMLParser.dll trunk/lib_windows/ogre/gui/QuickGUI/ trunk/lib_windows/ogre/gui/QuickGUI/QuickGUI.dll trunk/lib_windows/ogre/gui/QuickGUI/__init__.py trunk/lib_windows/ogre/gui/QuickGUI/_quickgui_.pyd trunk/lib_windows/ogre/gui/betagui/ trunk/lib_windows/ogre/gui/betagui/__init__.py trunk/lib_windows/ogre/gui/betagui/_betagui_.pyd trunk/lib_windows/ogre/gui/navi/ trunk/lib_windows/ogre/gui/navi/__init__.py trunk/lib_windows/ogre/gui/navi/_navi_.pyd trunk/lib_windows/ogre/gui/navi/js3250.dll trunk/lib_windows/ogre/gui/navi/nspr4.dll trunk/lib_windows/ogre/gui/navi/plc4.dll trunk/lib_windows/ogre/gui/navi/plds4.dll trunk/lib_windows/ogre/gui/navi/xpcom.dll trunk/lib_windows/ogre/gui/navi/xul.dll trunk/lib_windows/ogre/io/OIS/__init__.pyc trunk/lib_windows/ogre/io/OIS/__init__.pyo trunk/lib_windows/ogre/io/__init__.pyc trunk/lib_windows/ogre/io/__init__.pyo trunk/lib_windows/ogre/physics/NxOgre/ trunk/lib_windows/ogre/physics/NxOgre/__init__.py trunk/lib_windows/ogre/physics/NxOgre_09/ trunk/lib_windows/ogre/physics/NxOgre_09/NxCharacter.dll trunk/lib_windows/ogre/physics/NxOgre_09/NxCooking.dll trunk/lib_windows/ogre/physics/NxOgre_09/NxExtensions.dll trunk/lib_windows/ogre/physics/NxOgre_09/__init__.py trunk/lib_windows/ogre/physics/NxOgre_09/_nxogre_09_.pyd trunk/lib_windows/ogre/physics/ODE/boost_python-vc80-mt-1_35.dll trunk/lib_windows/ogre/physics/OgreBulletC/ trunk/lib_windows/ogre/physics/OgreBulletC/__init__.py trunk/lib_windows/ogre/physics/OgreBulletC/_ogrebulletc_.pyd trunk/lib_windows/ogre/physics/OgreBulletD/ trunk/lib_windows/ogre/physics/OgreBulletD/__init__.py trunk/lib_windows/ogre/physics/OgreBulletD/_ogrebulletd_.pyd trunk/lib_windows/ogre/physics/OgreNewt/__init__.pyc trunk/lib_windows/ogre/physics/OgreNewt/__init__.pyo trunk/lib_windows/ogre/physics/Opcode/ trunk/lib_windows/ogre/physics/Opcode/__init__.py trunk/lib_windows/ogre/physics/Opcode/_opcode_.pyd trunk/lib_windows/ogre/physics/PhysX/ trunk/lib_windows/ogre/physics/PhysX/NxCharacter.dll trunk/lib_windows/ogre/physics/PhysX/NxCooking.dll trunk/lib_windows/ogre/physics/PhysX/NxExtensions.dll trunk/lib_windows/ogre/physics/PhysX/PhysXLoader.dll trunk/lib_windows/ogre/physics/PhysX/__init__.py trunk/lib_windows/ogre/physics/PhysX/_physx_.pyd trunk/lib_windows/ogre/physics/__init__.pyc trunk/lib_windows/ogre/physics/__init__.pyo trunk/lib_windows/ogre/physics/bullet/ trunk/lib_windows/ogre/physics/bullet/__init__.py trunk/lib_windows/ogre/physics/bullet/_bullet_.pyd trunk/lib_windows/ogre/renderer/OGRE/__init__.pyc trunk/lib_windows/ogre/renderer/OGRE/__init__.pyo trunk/lib_windows/ogre/renderer/OGRE/_ogre_exceptions_.pyc trunk/lib_windows/ogre/renderer/OGRE/_ogre_exceptions_.pyo trunk/lib_windows/ogre/renderer/OGRE/boost_python-vc80-mt-1_35.dll trunk/lib_windows/ogre/renderer/OGREdshow/ trunk/lib_windows/ogre/renderer/OGREdshow/__init__.py trunk/lib_windows/ogre/renderer/__init__.pyc trunk/lib_windows/ogre/renderer/__init__.pyo trunk/lib_windows/ogre/sound/OgreAL/vorbisenc.dll trunk/lib_windows/psyco/__init__.pyc trunk/lib_windows/psyco/__init__.pyo trunk/lib_windows/psyco/core.pyc trunk/lib_windows/psyco/core.pyo trunk/lib_windows/psyco/kdictproxy.pyc trunk/lib_windows/psyco/kdictproxy.pyo trunk/lib_windows/psyco/profiler.pyc trunk/lib_windows/psyco/profiler.pyo trunk/lib_windows/psyco/support.pyc trunk/lib_windows/psyco/support.pyo trunk/lib_windows/pydot.pyc trunk/lib_windows/pysvn/__init__.pyc trunk/lib_windows/pysvn/__init__.pyo trunk/lib_windows/wx/__init__.pyc trunk/lib_windows/wx/__init__.pyo trunk/lib_windows/wx/__version__.pyc trunk/lib_windows/wx/__version__.pyo trunk/lib_windows/wx/_controls.pyc trunk/lib_windows/wx/_controls.pyo trunk/lib_windows/wx/_core.pyc trunk/lib_windows/wx/_core.pyo trunk/lib_windows/wx/_gdi.pyc trunk/lib_windows/wx/_gdi.pyo trunk/lib_windows/wx/_misc.pyc trunk/lib_windows/wx/_misc.pyo trunk/lib_windows/wx/_windows.pyc trunk/lib_windows/wx/_windows.pyo trunk/lib_windows/wx/aui.pyc trunk/lib_windows/wx/aui.pyo trunk/lib_windows/wx/grid.pyc trunk/lib_windows/wx/grid.pyo trunk/lib_windows/wx/html.pyc trunk/lib_windows/wx/html.pyo trunk/windows/ParticleUniverse.dll trunk/windows/Plugin_PagingLandScapeSceneManager2.dll trunk/windows/Plugin_TheoraVideoSystem.dll Modified: trunk/lib_common/ror/odefparser.py =================================================================== --- trunk/lib_common/ror/odefparser.py 2008-03-12 23:21:05 UTC (rev 192) +++ trunk/lib_common/ror/odefparser.py 2008-03-12 23:28:56 UTC (rev 193) @@ -2,6 +2,7 @@ import ogre.renderer.OGRE as ogre from ror.logger import log from ror.settingsManager import getSettingsManager +from ror.rorcommon import * def loadOdef_old(odefFilename): f=open(odefFilename, 'r') @@ -36,25 +37,9 @@ s += " rotation: " + str(self.rotation) return s -def loadOdefContent(filename): - content = [] - ds=ogre.ResourceGroupManager.getSingleton().openResource(filename, "General"); - ec=0 - while True: - line = copy.copy(ds.getLine()) - #print line, ec - if line.strip() == "": - ec+=1 - if ec > 50: - break - content.append(line) - #ds.close() - return content - - def loadOdef(odefFilename): try: - content = loadOdefContent(os.path.basename(odefFilename)) + content = loadResourceFile(os.path.basename(odefFilename)) ismovable = False meshname = content[0].strip() scalearr = [1,1,1] Modified: trunk/lib_common/ror/rorcommon.py =================================================================== --- trunk/lib_common/ror/rorcommon.py 2008-03-12 23:21:05 UTC (rev 192) +++ trunk/lib_common/ror/rorcommon.py 2008-03-12 23:28:56 UTC (rev 193) @@ -95,6 +95,21 @@ ogre.ResourceGroupManager.getSingleton().initialiseAllResourceGroups() +def loadResourceFile(filename): + content = [] + ds=ogre.ResourceGroupManager.getSingleton().openResource(filename, "General"); + ec=0 + while True: + line = copy.copy(ds.getLine()) + #print line, ec + if line.strip() == "": + ec+=1 + if ec > 50: + break + content.append(line) + #ds.close() + return content + def getPlatform(): if sys.platform in ['linux', 'linux2']: return 'linux' Modified: trunk/lib_common/ror/terrainparser.py =================================================================== --- trunk/lib_common/ror/terrainparser.py 2008-03-12 23:21:05 UTC (rev 192) +++ trunk/lib_common/ror/terrainparser.py 2008-03-12 23:28:56 UTC (rev 193) @@ -3,6 +3,7 @@ import ogre.renderer.OGRE as ogre from logger import log from settingsManager import getSettingsManager +from ror.rorcommon import * class Object: x = None @@ -54,24 +55,10 @@ f.writelines(lines) f.close() - def loadFile(self,filename): - content = [] - ds=ogre.ResourceGroupManager.getSingleton().openResource(filename, "General"); - ec=0 - while True: - line = copy.copy(ds.getLine()) - #print line, ec - if line.strip() == "": - ec+=1 - if ec > 50: - break - content.append(line) - #ds.close() - return content - + def __init__(self, filename): self.filename = filename - content = self.loadFile(filename) + content = loadResourceFile(filename) self.trucks = [] self.loads = [] self.objects = [] Added: trunk/lib_windows/ogre/addons/__init__.py =================================================================== --- trunk/lib_windows/ogre/addons/__init__.py (rev 0) +++ trunk/lib_windows/ogre/addons/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1 @@ +#keep me \ No newline at end of file Added: trunk/lib_windows/ogre/addons/cadunetree/__init__.py =================================================================== --- trunk/lib_windows/ogre/addons/cadunetree/__init__.py (rev 0) +++ trunk/lib_windows/ogre/addons/cadunetree/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1 @@ +from _cadunetree_ import * Added: trunk/lib_windows/ogre/addons/cadunetree/_cadunetree_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/cadunetree/_cadunetree_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/caelum/__init__.py =================================================================== --- trunk/lib_windows/ogre/addons/caelum/__init__.py (rev 0) +++ trunk/lib_windows/ogre/addons/caelum/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1 @@ +from _caelum_ import * Added: trunk/lib_windows/ogre/addons/caelum/_caelum_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/caelum/_caelum_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/et/__init__.py =================================================================== --- trunk/lib_windows/ogre/addons/et/__init__.py (rev 0) +++ trunk/lib_windows/ogre/addons/et/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1 @@ +from _et_ import * Added: trunk/lib_windows/ogre/addons/et/_et_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/et/_et_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/noise/__init__.py =================================================================== --- trunk/lib_windows/ogre/addons/noise/__init__.py (rev 0) +++ trunk/lib_windows/ogre/addons/noise/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1 @@ +from _noise_ import * Added: trunk/lib_windows/ogre/addons/noise/_noise_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/noise/_noise_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/ofusion/__init__.py =================================================================== --- trunk/lib_windows/ogre/addons/ofusion/__init__.py (rev 0) +++ trunk/lib_windows/ogre/addons/ofusion/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1 @@ +from _ofusion_ import * Added: trunk/lib_windows/ogre/addons/ofusion/_ofusion_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/ofusion/_ofusion_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/ogredshow/__init__.py =================================================================== --- trunk/lib_windows/ogre/addons/ogredshow/__init__.py (rev 0) +++ trunk/lib_windows/ogre/addons/ogredshow/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1 @@ +from _ogredshow_ import * Added: trunk/lib_windows/ogre/addons/ogreforests/__init__.py =================================================================== --- trunk/lib_windows/ogre/addons/ogreforests/__init__.py (rev 0) +++ trunk/lib_windows/ogre/addons/ogreforests/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1 @@ +from _ogreforests_ import * Added: trunk/lib_windows/ogre/addons/ogreforests/_ogreforests_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/ogreforests/_ogreforests_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/__init__.py =================================================================== --- trunk/lib_windows/ogre/addons/ogrevideoffmpeg/__init__.py (rev 0) +++ trunk/lib_windows/ogre/addons/ogrevideoffmpeg/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1 @@ +from _ogrevideoffmpeg_ import * \ No newline at end of file Added: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/_ogrevideoffmpeg_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/_ogrevideoffmpeg_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avcodec-51.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avcodec-51.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avcodec.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avcodec.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avdevice-52.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avdevice-52.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avdevice.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avdevice.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avformat-52.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avformat-52.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avformat.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avformat.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avutil-49.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avutil-49.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avutil.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/ogrevideoffmpeg/avutil.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/opensteer/__init__.py =================================================================== --- trunk/lib_windows/ogre/addons/opensteer/__init__.py (rev 0) +++ trunk/lib_windows/ogre/addons/opensteer/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1 @@ +from _opensteer_ import * Added: trunk/lib_windows/ogre/addons/particleuniverse/__init__.py =================================================================== --- trunk/lib_windows/ogre/addons/particleuniverse/__init__.py (rev 0) +++ trunk/lib_windows/ogre/addons/particleuniverse/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1 @@ +from _particleuniverse_ import * Added: trunk/lib_windows/ogre/addons/particleuniverse/_particleuniverse_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/particleuniverse/_particleuniverse_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/plib/__init__.py =================================================================== --- trunk/lib_windows/ogre/addons/plib/__init__.py (rev 0) +++ trunk/lib_windows/ogre/addons/plib/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1,2 @@ +import sys, os +from _plib_ import * Added: trunk/lib_windows/ogre/addons/plib/_plib_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/plib/_plib_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/plib/boost_python-vc80-mt-1_35.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/plib/boost_python-vc80-mt-1_35.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/theora/OAL_MOD.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/theora/OAL_MOD.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/theora/__init__.py =================================================================== --- trunk/lib_windows/ogre/addons/theora/__init__.py (rev 0) +++ trunk/lib_windows/ogre/addons/theora/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1 @@ +from _theora_ import * \ No newline at end of file Added: trunk/lib_windows/ogre/addons/theora/_theora_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/theora/_theora_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/addons/watermesh/__init__.py =================================================================== --- trunk/lib_windows/ogre/addons/watermesh/__init__.py (rev 0) +++ trunk/lib_windows/ogre/addons/watermesh/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1 @@ +from _watermesh_ import * Added: trunk/lib_windows/ogre/addons/watermesh/_watermesh_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/addons/watermesh/_watermesh_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/gui/CEGUI/CEGUITinyXMLParser.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/gui/CEGUI/CEGUITinyXMLParser.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/gui/QuickGUI/QuickGUI.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/gui/QuickGUI/QuickGUI.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/gui/QuickGUI/__init__.py =================================================================== --- trunk/lib_windows/ogre/gui/QuickGUI/__init__.py (rev 0) +++ trunk/lib_windows/ogre/gui/QuickGUI/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1,5 @@ +import sys, os +import warnings +warnings.simplefilter('ignore', RuntimeWarning) +from _quickgui_ import * +warnings.resetwarnings( ) Added: trunk/lib_windows/ogre/gui/QuickGUI/_quickgui_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/gui/QuickGUI/_quickgui_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/gui/betagui/__init__.py =================================================================== --- trunk/lib_windows/ogre/gui/betagui/__init__.py (rev 0) +++ trunk/lib_windows/ogre/gui/betagui/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1,4 @@ +import warnings +warnings.simplefilter('ignore', RuntimeWarning) +from _betagui_ import * +warnings.resetwarnings( ) Added: trunk/lib_windows/ogre/gui/betagui/_betagui_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/gui/betagui/_betagui_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/gui/navi/__init__.py =================================================================== --- trunk/lib_windows/ogre/gui/navi/__init__.py (rev 0) +++ trunk/lib_windows/ogre/gui/navi/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1,2 @@ +import sys, os +from _navi_ import * Added: trunk/lib_windows/ogre/gui/navi/_navi_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/gui/navi/_navi_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/gui/navi/js3250.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/gui/navi/js3250.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/gui/navi/nspr4.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/gui/navi/nspr4.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/gui/navi/plc4.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/gui/navi/plc4.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/gui/navi/plds4.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/gui/navi/plds4.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/gui/navi/xpcom.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/gui/navi/xpcom.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/gui/navi/xul.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/gui/navi/xul.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/io/OIS/__init__.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/io/OIS/__init__.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/io/OIS/__init__.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/io/OIS/__init__.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/io/__init__.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/io/__init__.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/io/__init__.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/io/__init__.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/NxOgre/__init__.py =================================================================== --- trunk/lib_windows/ogre/physics/NxOgre/__init__.py (rev 0) +++ trunk/lib_windows/ogre/physics/NxOgre/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1,7 @@ +import warnings +warnings.simplefilter('ignore', RuntimeWarning) + +from _nxogre_ import * + +warnings.resetwarnings( ) + Added: trunk/lib_windows/ogre/physics/NxOgre_09/NxCharacter.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/NxOgre_09/NxCharacter.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/NxOgre_09/NxCooking.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/NxOgre_09/NxCooking.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/NxOgre_09/NxExtensions.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/NxOgre_09/NxExtensions.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/NxOgre_09/__init__.py =================================================================== --- trunk/lib_windows/ogre/physics/NxOgre_09/__init__.py (rev 0) +++ trunk/lib_windows/ogre/physics/NxOgre_09/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1,7 @@ +import warnings +warnings.simplefilter('ignore', RuntimeWarning) + +from _nxogre_09_ import * + +warnings.resetwarnings( ) + Added: trunk/lib_windows/ogre/physics/NxOgre_09/_nxogre_09_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/NxOgre_09/_nxogre_09_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/ODE/boost_python-vc80-mt-1_35.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/ODE/boost_python-vc80-mt-1_35.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/OgreBulletC/__init__.py =================================================================== --- trunk/lib_windows/ogre/physics/OgreBulletC/__init__.py (rev 0) +++ trunk/lib_windows/ogre/physics/OgreBulletC/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1 @@ +from _ogrebulletc_ import * Added: trunk/lib_windows/ogre/physics/OgreBulletC/_ogrebulletc_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/OgreBulletC/_ogrebulletc_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/OgreBulletD/__init__.py =================================================================== --- trunk/lib_windows/ogre/physics/OgreBulletD/__init__.py (rev 0) +++ trunk/lib_windows/ogre/physics/OgreBulletD/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1 @@ +from _ogrebulletd_ import * Added: trunk/lib_windows/ogre/physics/OgreBulletD/_ogrebulletd_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/OgreBulletD/_ogrebulletd_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/OgreNewt/__init__.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/OgreNewt/__init__.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/OgreNewt/__init__.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/OgreNewt/__init__.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/Opcode/__init__.py =================================================================== --- trunk/lib_windows/ogre/physics/Opcode/__init__.py (rev 0) +++ trunk/lib_windows/ogre/physics/Opcode/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1 @@ +from _opcode_ import * \ No newline at end of file Added: trunk/lib_windows/ogre/physics/Opcode/_opcode_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/Opcode/_opcode_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/PhysX/NxCharacter.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/PhysX/NxCharacter.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/PhysX/NxCooking.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/PhysX/NxCooking.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/PhysX/NxExtensions.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/PhysX/NxExtensions.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/PhysX/PhysXLoader.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/PhysX/PhysXLoader.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/PhysX/__init__.py =================================================================== --- trunk/lib_windows/ogre/physics/PhysX/__init__.py (rev 0) +++ trunk/lib_windows/ogre/physics/PhysX/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1,21 @@ +import warnings +warnings.simplefilter('ignore', RuntimeWarning) + +from _physx_ import * +import ogre.renderer.OGRE as ogre + +def NxQuat( arg0=None, arg1=None ): + if isinstance (arg0, ogre.Quaternion) : + ret = _physx_.NxQuat() + ret.w = arg0.w + ret.x = arg0.x + ret.y = arg0.y + ret.z = arg0.z + return ret + elif arg1: + return _physx_.NxQuat(arg0,arg1) + elif arg0: + return _physx_.NxQuat(arg0) + return _physx_.NxQuat() +warnings.resetwarnings( ) + \ No newline at end of file Added: trunk/lib_windows/ogre/physics/PhysX/_physx_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/PhysX/_physx_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/__init__.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/__init__.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/__init__.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/__init__.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/physics/bullet/__init__.py =================================================================== --- trunk/lib_windows/ogre/physics/bullet/__init__.py (rev 0) +++ trunk/lib_windows/ogre/physics/bullet/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1 @@ +from _bullet_ import * Added: trunk/lib_windows/ogre/physics/bullet/_bullet_.pyd =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/physics/bullet/_bullet_.pyd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/renderer/OGRE/__init__.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/renderer/OGRE/__init__.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/renderer/OGRE/__init__.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/renderer/OGRE/__init__.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/renderer/OGRE/_ogre_exceptions_.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/renderer/OGRE/_ogre_exceptions_.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/renderer/OGRE/_ogre_exceptions_.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/renderer/OGRE/_ogre_exceptions_.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/renderer/OGRE/boost_python-vc80-mt-1_35.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/renderer/OGRE/boost_python-vc80-mt-1_35.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/renderer/OGREdshow/__init__.py =================================================================== --- trunk/lib_windows/ogre/renderer/OGREdshow/__init__.py (rev 0) +++ trunk/lib_windows/ogre/renderer/OGREdshow/__init__.py 2008-03-12 23:28:56 UTC (rev 193) @@ -0,0 +1,8 @@ +import sys, os + +# Note that we put the Python-Ogre path first to ensure we don't get strange problems with windows +# picking up the wrong dlls -- Thanks to Pelle for tracking down this issue.. +if sys.platform == 'win32': + os.environ['PATH'] = __path__[0] +';' + os.environ['PATH'] + +from _ogredshow_ import * Added: trunk/lib_windows/ogre/renderer/__init__.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/renderer/__init__.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/renderer/__init__.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/renderer/__init__.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/ogre/sound/OgreAL/vorbisenc.dll =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/ogre/sound/OgreAL/vorbisenc.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/psyco/__init__.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/psyco/__init__.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/psyco/__init__.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/psyco/__init__.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/psyco/core.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/psyco/core.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/psyco/core.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/psyco/core.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/psyco/kdictproxy.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/psyco/kdictproxy.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/psyco/kdictproxy.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/psyco/kdictproxy.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/psyco/profiler.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/psyco/profiler.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/psyco/profiler.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/psyco/profiler.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/psyco/support.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/psyco/support.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/psyco/support.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/psyco/support.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/pydot.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/pydot.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/pysvn/__init__.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/pysvn/__init__.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/pysvn/__init__.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/pysvn/__init__.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/__init__.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/__init__.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/__init__.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/__init__.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/__version__.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/__version__.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/__version__.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/__version__.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/_controls.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/_controls.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/_controls.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/_controls.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/_core.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/_core.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/_core.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/_core.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/_gdi.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/_gdi.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/_gdi.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/_gdi.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/_misc.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/_misc.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/_misc.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/_misc.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/_windows.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/_windows.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/_windows.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/_windows.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/aui.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/aui.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/aui.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/aui.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/grid.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/grid.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/grid.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/grid.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/html.pyc =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/html.pyc ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/lib_windows/wx/html.pyo =================================================================== (Binary files differ) Property changes on: trunk/lib_windows/wx/html.pyo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/windows/ParticleUniverse.dll =================================================================== (Binary files differ) Property changes on: trunk/windows/ParticleUniverse.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/windows/Plugin_PagingLandScapeSceneManager2.dll =================================================================== (Binary files differ) Property changes on: trunk/windows/Plugin_PagingLandScapeSceneManager2.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/windows/Plugin_TheoraVideoSystem.dll =================================================================== (Binary files differ) Property changes on: trunk/windows/Plugin_TheoraVideoSystem.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ror...@us...> - 2008-03-17 09:45:17
|
Revision: 200 http://roreditor.svn.sourceforge.net/roreditor/?rev=200&view=rev Author: rorthomas Date: 2008-03-17 02:45:13 -0700 (Mon, 17 Mar 2008) Log Message: ----------- * fixed stupid svn bug :| Modified Paths: -------------- trunk/lib_common/ror/rorcommon.py trunk/lib_common/ror/starter.py trunk/lib_common/ror/svn.py trunk/lib_common/ror/svngui.py trunk/tools/update.py Modified: trunk/lib_common/ror/rorcommon.py =================================================================== --- trunk/lib_common/ror/rorcommon.py 2008-03-16 13:26:41 UTC (rev 199) +++ trunk/lib_common/ror/rorcommon.py 2008-03-17 09:45:13 UTC (rev 200) @@ -5,13 +5,6 @@ import ogre.renderer.OGRE as ogre def ShowOnAbout(event = None): - rev = "" - try: - import ror.svn - rev = str(ror.svn.getRevision()) - except: - pass - dlg = wx.MessageDialog(None, "RoR Toolkit version 0.34 %s\nAuthors: Thomas, Aperion", "About This", wx.OK | wx.ICON_INFORMATION) dlg.ShowModal() Modified: trunk/lib_common/ror/starter.py =================================================================== --- trunk/lib_common/ror/starter.py 2008-03-16 13:26:41 UTC (rev 199) +++ trunk/lib_common/ror/starter.py 2008-03-17 09:45:13 UTC (rev 200) @@ -153,14 +153,14 @@ gui.Show() del gui - def OnUpdate(self, event=None): - import svngui - gui = svngui.svnUpdate() - del gui + #def OnUpdate(self, event=None): + #import svngui + #gui = svngui.svnUpdate() + #del gui - def checkForUpdate(self): - import svn - return svn.checkForUpdate() + #def checkForUpdate(self): + # import svn + # return svn.checkForUpdate() def OnStartRoR(self, event=None): @@ -245,8 +245,8 @@ def __set_properties(self): #try: - import ror.svn - self.SetTitle("RoR Toolkit r%d" % ror.svn.getRevision()) + #import ror.svn + self.SetTitle("RoR Toolkit 0.34") #except: # self.SetTitle("RoR Toolkit") Modified: trunk/lib_common/ror/svn.py =================================================================== --- trunk/lib_common/ror/svn.py 2008-03-16 13:26:41 UTC (rev 199) +++ trunk/lib_common/ror/svn.py 2008-03-17 09:45:13 UTC (rev 200) @@ -1,4 +1,6 @@ #Thomas Fischer 28/06/2007, th...@th... +# this functions are deprecated +""" import sys, os, os.path try: import pysvn @@ -30,12 +32,13 @@ log().info(str(event_dict['action']) + ", " + event_dict['path']) def getRevision(client=None, path=None): - if client is None: - client = pysvn.Client() - if path is None: - path = getRootPath() - info = client.info(path) - return info['revision'].number + #if client is None: + # client = pysvn.Client() + #if path is None: + # path = getRootPath() + #info = client.info(path) + #return info['revision'].number + return -1 def checkForUpdate(): client = pysvn.Client() @@ -163,5 +166,5 @@ svnupdate() restoreBackup() else: - svncheckout() - + svncheckout() +""" \ No newline at end of file Modified: trunk/lib_common/ror/svngui.py =================================================================== --- trunk/lib_common/ror/svngui.py 2008-03-16 13:26:41 UTC (rev 199) +++ trunk/lib_common/ror/svngui.py 2008-03-17 09:45:13 UTC (rev 200) @@ -7,6 +7,9 @@ from ror.logger import log from ror.settingsManager import getSettingsManager +# these functions are deprecated + +""" import svn import wx, os, os.path @@ -50,4 +53,5 @@ msg = str(event_dict['action']) + ", " + os.path.basename(event_dict['path']) #self.pr.Update(self.changes % 100, msg) self.pr.Pulse(msg) - \ No newline at end of file + +""" \ No newline at end of file Modified: trunk/tools/update.py =================================================================== --- trunk/tools/update.py 2008-03-16 13:26:41 UTC (rev 199) +++ trunk/tools/update.py 2008-03-17 09:45:13 UTC (rev 200) @@ -1,5 +1,7 @@ import sys, os, os.path +# deprecated +""" def main(): if sys.platform in ['linux', 'linux2']: sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "lib_common")) @@ -22,6 +24,8 @@ #non-gui version: import ror.svn ror.svn.run() - +""" + if __name__=="__main__": - main() \ No newline at end of file + print "this tool is deprecated, please do not use it anymore" + #main() \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ror...@us...> - 2008-03-22 19:56:07
|
Revision: 201 http://roreditor.svn.sourceforge.net/roreditor/?rev=201&view=rev Author: rorthomas Date: 2008-03-22 12:56:01 -0700 (Sat, 22 Mar 2008) Log Message: ----------- removed old file fixed physics bug updated setup Modified Paths: -------------- trunk/devtools/setup/setup.nsi trunk/lib_common/roreditor/RoROdefEditorOgreWindow.py trunk/lib_common/roreditor/RoRTruckOgreWindow.py trunk/lib_common/roreditor/RoRTruckUVOgreWindow.py Removed Paths: ------------- trunk/rortoolkit_old.py Modified: trunk/devtools/setup/setup.nsi =================================================================== --- trunk/devtools/setup/setup.nsi 2008-03-17 09:45:13 UTC (rev 200) +++ trunk/devtools/setup/setup.nsi 2008-03-22 19:56:01 UTC (rev 201) @@ -1,8 +1,8 @@ ; Script generated by the HM NIS Edit Script Wizard. ; HM NIS Edit Wizard helper defines -!define PRODUCT_NAME "RoRToolkit" -!define PRODUCT_VERSION "0.1.187" +!define PRODUCT_NAME "Rigs of Rods Toolkit" +!define PRODUCT_VERSION "0.34-rc3" !define PRODUCT_PUBLISHER "Thomas Fischer" !define PRODUCT_WEB_SITE "http://wiki.rigsofrods.com/index.php?title=RoRToolkit" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" @@ -54,10 +54,10 @@ #!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\Example.file" !define MUI_FINISHPAGE_NOAUTOCLOSE -!define MUI_FINISHPAGE_RUN +;!define MUI_FINISHPAGE_RUN ;!define MUI_FINISHPAGE_RUN_NOTCHECKED -!define MUI_FINISHPAGE_RUN_TEXT "Update and start (Can take some time)" -!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchPostInstallation" +;!define MUI_FINISHPAGE_RUN_TEXT "Update and start (Can take some time)" +;!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchPostInstallation" !insertmacro MUI_PAGE_FINISH ; Uninstaller pages @@ -85,8 +85,8 @@ Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" OutFile "RoRToolkitSetup.exe" -;InstallDir "$PROGRAMFILES\RoRToolkit" -InstallDir "c:\rortoolkit" +InstallDir "$PROGRAMFILES\Rigs of Rods 0.34 Toolkit" +;InstallDir "c:\rortoolkit" ShowInstDetails show ShowUnInstDetails show @@ -232,7 +232,7 @@ SectionIn 1 2 RO SetOutPath "$INSTDIR" SetOverwrite try - File /r /x *.pyc /x *.pyo /x doc /x devtools /x 3rdparty /x downloaded /x graphs /x linux /x lib_linux /x tools /x .svn ..\..\* + File /r /x *.pyc /x *.pyo /x doc /x devtools /x 3rdparty /x downloaded /x graphs /x linux /x lib_linux /x tools /x .svn /x lib_linux /x linux /x rortoolkit /x *.log ..\..\* SectionEnd @@ -243,20 +243,20 @@ !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "the RoR Toolkit. It includes the Truckeditor, Terraineditor and various other tools" !insertmacro MUI_FUNCTION_DESCRIPTION_END -Function "LaunchPostInstallation" - ReadEnvStr $0 SYSTEMDRIVE - ExecWait "$0\python25\python.exe $INSTDIR\tools\update.py" - ExecWait "$0\python25\python.exe $INSTDIR\rortoolkit.py" -FunctionEnd +;Function "LaunchPostInstallation" +; ReadEnvStr $0 SYSTEMDRIVE +; ExecWait "$0\python25\python.exe $INSTDIR\tools\update.py" +; ExecWait "$0\python25\python.exe $INSTDIR\rortoolkit.py" +;FunctionEnd Section -AdditionalIcons #ReadEnvStr $0 SYSTEMDRIVE SetOutPath $INSTDIR WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" CreateDirectory "$SMPROGRAMS\RoRToolkit" - CreateShortCut "$SMPROGRAMS\RoRToolkit\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" - CreateShortCut "$SMPROGRAMS\RoRToolkit\Uninstall.lnk" "$INSTDIR\uninst.exe" - CreateShortCut '$SMPROGRAMS\RoRToolkit\RoR Toolkit.lnk' '$INSTDIR\rortoolkit.py' '' '$INSTDIR\ror.ico' + CreateShortCut "$SMPROGRAMS\Rigs of Rods Toolkit\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" + CreateShortCut "$SMPROGRAMS\Rigs of Rods Toolkit\Uninstall.lnk" "$INSTDIR\uninst.exe" + CreateShortCut '$SMPROGRAMS\Rigs of Rods Toolkit\Start Toolkit.lnk' '$INSTDIR\rortoolkit.py' '' '$INSTDIR\ror.ico' SectionEnd Section -Post Modified: trunk/lib_common/roreditor/RoROdefEditorOgreWindow.py =================================================================== --- trunk/lib_common/roreditor/RoROdefEditorOgreWindow.py 2008-03-17 09:45:13 UTC (rev 200) +++ trunk/lib_common/roreditor/RoROdefEditorOgreWindow.py 2008-03-22 19:56:01 UTC (rev 201) @@ -348,5 +348,3 @@ ogre.PM_POINTS ] self.sceneDetailIndex = (self.sceneDetailIndex + 1) % len(detailsLevel) self.camera.polygonMode=detailsLevel[self.sceneDetailIndex] - elif event.m_keyCode == 81: # Q, wx.WXK_LEFT: - self.enablephysics = not self.enablephysics \ No newline at end of file Modified: trunk/lib_common/roreditor/RoRTruckOgreWindow.py =================================================================== --- trunk/lib_common/roreditor/RoRTruckOgreWindow.py 2008-03-17 09:45:13 UTC (rev 200) +++ trunk/lib_common/roreditor/RoRTruckOgreWindow.py 2008-03-22 19:56:01 UTC (rev 201) @@ -66,9 +66,7 @@ def OnFrameStarted(self): - if self.enablephysics: - self.World.update(TIMER) - self.updateBeams() + pass def OnFrameEnded(self): pass @@ -699,8 +697,6 @@ ogre.PM_POINTS ] self.sceneDetailIndex = (self.sceneDetailIndex + 1) % len(detailsLevel) self.camera.polygonMode=detailsLevel[self.sceneDetailIndex] - elif event.m_keyCode == 81: # Q, wx.WXK_LEFT: - self.enablephysics = not self.enablephysics else: if event.m_keyCode == 65: # A, wx.WXK_LEFT: self.camera.moveRelative(ogre.Vector3(-d,0,0)) Modified: trunk/lib_common/roreditor/RoRTruckUVOgreWindow.py =================================================================== --- trunk/lib_common/roreditor/RoRTruckUVOgreWindow.py 2008-03-17 09:45:13 UTC (rev 200) +++ trunk/lib_common/roreditor/RoRTruckUVOgreWindow.py 2008-03-22 19:56:01 UTC (rev 201) @@ -11,7 +11,7 @@ from wxogre.wxOgreWindow import * import ogre.renderer.OGRE as Ogre -import ogre.physics.OgreNewt as OgreNewt +#import ogre.physics.OgreNewt as OgreNewt import ogre.io.OIS as OIS IMGSCALE = 20 Deleted: trunk/rortoolkit_old.py =================================================================== --- trunk/rortoolkit_old.py 2008-03-17 09:45:13 UTC (rev 200) +++ trunk/rortoolkit_old.py 2008-03-22 19:56:01 UTC (rev 201) @@ -1,30 +0,0 @@ -#!/bin/env python -#Thomas Fischer 31/05/2007, th...@th... -import sys, os, os.path - -def main(): - """ - main method - """ - if sys.platform in ['linux', 'linux2']: - sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib_common")) - sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib_linux")) - elif sys.platform in ['win32']: - sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib_common")) - sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "lib_windows")) - - # Import Psyco if available - try: - import psyco - #psyco.full() - #psyco.log() - #psyco.profile() - except ImportError: - pass - - import ror.starter - ror.starter.startApp() - - -if __name__=="__main__": - main() \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |