editModule.tscript 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. //
  2. function AssetBrowser::ConvertFolderIntoModule(%this, %folderName)
  3. {
  4. if(!isDirectory("data/" @ %folderName))
  5. return;
  6. AssetBrowser_AddModule-->moduleName.text = %folderName;
  7. AssetBrowser_addModuleWindow.callbackFunction = "AssetBrowser.loadDirectories();";
  8. AssetBrowser_addModuleWindow.CreateNewModule();
  9. }
  10. function AssetBrowser::CreateNewModule(%this, %callback)
  11. {
  12. Canvas.pushDialog(AssetBrowser_AddModule);
  13. AssetBrowser_addModuleWindow.selectWindow();
  14. AssetBrowser_addModuleWindow.callbackFunction = "AssetBrowser.promptNewModuleFolders();";
  15. AssetBrowser_addModuleWindow.callbackFallthrough = %callback;
  16. }
  17. function AssetBrowser::promptNewModuleFolders(%this)
  18. {
  19. toolsMessageBoxYesNo("Create Folders?",
  20. "Do you want to create some common folders for organization of your new Module?",
  21. "AssetBrowser.makeModuleFolders();", //if yes, make the foldesr
  22. "AssetBrowser.loadDirectories();"); //if no, just refresh
  23. if(AssetBrowser_addModuleWindow.callbackFallthrough !$= "")
  24. eval(AssetBrowser_addModuleWindow.callbackFallthrough);
  25. }
  26. function AssetBrowser::makeModuleFolders(%this)
  27. {
  28. %moduleId = AssetBrowser.newModuleId;
  29. %moduleDef = ModuleDatabase.findModule(%moduleId);
  30. %modulePath = %moduleDef.ModulePath;
  31. %count = 0;
  32. %defaultModuleFolders[%count++] = "datablocks";
  33. %defaultModuleFolders[%count++] = "terrains";
  34. %defaultModuleFolders[%count++] = "postFXs";
  35. %defaultModuleFolders[%count++] = "levels";
  36. %defaultModuleFolders[%count++] = "shapes";
  37. %defaultModuleFolders[%count++] = "guis";
  38. %defaultModuleFolders[%count++] = "scripts";
  39. %defaultModuleFolders[%count++] = "scripts/client";
  40. %defaultModuleFolders[%count++] = "scripts/server";
  41. for(%i=0; %i <= %count; %i++)
  42. {
  43. %this.dirHandler.createFolder(%modulePath @ "/" @ %defaultModuleFolders[%i]);
  44. }
  45. AssetBrowser.loadDirectories();
  46. }
  47. function AssetBrowser::createNewEditorTool(%this)
  48. {
  49. Canvas.pushDialog(AssetBrowser_AddModule);
  50. AssetBrowser_addModuleWindow.selectWindow();
  51. AssetBrowser_addModuleWindow.callbackFunction = "AssetBrowser.loadDirectories();";
  52. AssetBrowser_addModuleWindow.CreateNewModule();
  53. }
  54. function AssetBrowser_editModule::saveModule(%this)
  55. {
  56. //Check what special actions we may need to do, such as renames
  57. %moduleDef = ModuleDatabase.findModule(AssetBrowser.selectedModule, 1);
  58. %oldModuleName = %moduleDef.ModuleID;
  59. if(%oldModuleName !$= AssetBrowser.tempModule.ModuleID)
  60. {
  61. //rename the script file and script namespaces
  62. %oldScriptFilePath = "data/" @ %oldModuleName @ "/" @ %moduleDef.scriptFile;
  63. %newscriptFilePath = "data/" @ AssetBrowser.tempModule.ModuleID @ "/";
  64. %scriptExt = fileExt(%moduleDef.scriptFile);
  65. %newScriptFileName = %newscriptFilePath @ "/" @ AssetBrowser.tempModule.ModuleID @ %scriptExt;
  66. %newScriptFileOldName = %newscriptFilePath @ "/" @ %oldModuleName @ %scriptExt;
  67. %moduleDef.ModuleId = AssetBrowser.tempModule.ModuleID;
  68. %moduleDef.scriptFile = AssetBrowser.tempModule.ModuleID @ %scriptExt;
  69. ModuleDatabase.copyModule(%moduleDef, AssetBrowser.tempModule.ModuleID, "data/" @ AssetBrowser.tempModule.ModuleID);
  70. //Go through our scriptfile and replace the old namespace with the new
  71. %editedFileContents = "";
  72. %file = new FileObject();
  73. if ( %file.openForRead( %newScriptFileOldName ) )
  74. {
  75. while ( !%file.isEOF() )
  76. {
  77. %line = %file.readLine();
  78. %line = trim( %line );
  79. %editedFileContents = %editedFileContents @ strreplace(%line, %oldModuleName, AssetBrowser.tempModule.ModuleID) @ "\n";
  80. }
  81. %file.close();
  82. }
  83. if(%editedFileContents !$= "")
  84. {
  85. %file.openForWrite(%newScriptFileName);
  86. %file.writeline(%editedFileContents);
  87. %file.close();
  88. }
  89. %success = fileDelete(%newScriptFileOldName);
  90. ModuleDatabase.unloadExplicit(%oldModuleName);
  91. %success = fileDelete("data/" @ %oldModuleName);
  92. ModuleDatabase.loadExplicit(AssetBrowser.tempModule.ModuleID);
  93. }
  94. //Now, update the module file itself
  95. //%file = ModuleDatabase.getAssetFilePath(%moduleDef.ModuleID);
  96. //%success = TamlWrite(AssetBrowser_editAsset.editedAsset, %file);
  97. AssetBrowser.loadFilters();
  98. Canvas.popDialog(AssetBrowser_editModule);
  99. }
  100. function AssetBrowser::editModuleInfo(%this)
  101. {
  102. Canvas.pushDialog(AssetBrowser_editModule);
  103. %moduleDef = ModuleDatabase.findModule(AssetBrowser.selectedModule, 1);
  104. AssetBrowser.tempModule = new ModuleDefinition();
  105. AssetBrowser.tempModule.assignFieldsFrom(%moduleDef);
  106. AssetBrowser_editModule.editedModuleId = AssetBrowser.selectedModule;
  107. AssetBrowser_editModule.editedModule = AssetBrowser.tempModule;
  108. /// Module configuration.
  109. ModuleEditInspector.startGroup("General");
  110. ModuleEditInspector.addField("ModuleId", "ModuleId", "string", "", AssetBrowser.tempModule.ModuleId, "", AssetBrowser.tempModule);
  111. ModuleEditInspector.addField("VersionId", "VersionId", "string", "", AssetBrowser.tempModule.VersionId, "", AssetBrowser.tempModule);
  112. ModuleEditInspector.addField("BuildId", "BuildId", "string", "", AssetBrowser.tempModule.BuildId, "", AssetBrowser.tempModule);
  113. ModuleEditInspector.addField("enabled", "enabled", "bool", "", AssetBrowser.tempModule.enabled, "", AssetBrowser.tempModule);
  114. ModuleEditInspector.addField("Description", "Description", "command", "", AssetBrowser.tempModule.Description, "", AssetBrowser.tempModule);
  115. ModuleEditInspector.addField("Group", "Group", "string", "", AssetBrowser.tempModule.Group, "", AssetBrowser.tempModule);
  116. ModuleEditInspector.endGroup();
  117. ModuleEditInspector.startGroup("Management");
  118. ModuleEditInspector.addField("Synchronized", "Synchronized", "bool", "", AssetBrowser.tempModule.Synchronized, "", AssetBrowser.tempModule);
  119. ModuleEditInspector.addField("Deprecated", "Deprecated", "bool", "", AssetBrowser.tempModule.Deprecated, "", AssetBrowser.tempModule);
  120. ModuleEditInspector.addField("CriticalMerge", "CriticalMerge", "bool", "", AssetBrowser.tempModule.CriticalMerge, "", AssetBrowser.tempModule);
  121. ModuleEditInspector.addField("OverrideExistingObjects", "OverrideExistingObjects", "bool", "", AssetBrowser.tempModule.OverrideExistingObjects, "", AssetBrowser.tempModule);
  122. ModuleEditInspector.endGroup();
  123. ModuleEditInspector.startGroup("Meta");
  124. ModuleEditInspector.addField("Author", "Author", "string", "", AssetBrowser.tempModule.Author, "", AssetBrowser.tempModule);
  125. ModuleEditInspector.addField("Type", "Type", "string", "", AssetBrowser.tempModule.Type, "", AssetBrowser.tempModule);
  126. ModuleEditInspector.endGroup();
  127. ModuleEditInspector.startGroup("Script");
  128. ModuleEditInspector.addField("ScriptFile", "ScriptFile", "string", "", AssetBrowser.tempModule.ScriptFile, "", AssetBrowser.tempModule);
  129. ModuleEditInspector.addField("CreateFunction", "CreateFunction", "string", "", AssetBrowser.tempModule.CreateFunction, "", AssetBrowser.tempModule);
  130. ModuleEditInspector.addField("DestroyFunction", "DestroyFunction", "string", "", AssetBrowser.tempModule.DestroyFunction, "", AssetBrowser.tempModule);
  131. ModuleEditInspector.endGroup();
  132. ModuleEditInspector.startGroup("Dependencies");
  133. ModuleEditInspector.addField("ModuleDependencies", "Module Dependencies", "ModuleDependenciesButton", "", "", "", AssetBrowser.tempModule);
  134. ModuleEditInspector.endGroup();
  135. }
  136. function AssetBrowser::editModuleScript(%this)
  137. {
  138. %moduleDef = ModuleDatabase.findModule(AssetBrowser.selectedModule, 1);
  139. %scriptFile = %moduleDef.ModuleScriptFilePath;
  140. EditorOpenFileInTorsion(makeFullPath(%scriptFile), 0);
  141. }
  142. function AssetBrowser::renameModule(%this)
  143. {
  144. }
  145. function AssetBrowser::reloadModule(%this)
  146. {
  147. ModuleDatabase.unregisterModule(AssetBrowser.SelectedModule, 1);
  148. ModuleDatabase.loadExplicit(AssetBrowser.SelectedModule);
  149. }
  150. function AssetBrowser::deleteModule(%this)
  151. {
  152. %moduleDef = ModuleDatabase.findModule(AssetBrowser.selectedModule, 1);
  153. toolsMessageBoxYesNo("Delete Module?",
  154. "This will permanently delete the module " @ %moduleDef.moduleId @ " and all it's contents. <br><br> Do you wish to continue?",
  155. "AssetBrowser.doDeleteModule();",
  156. "");
  157. }
  158. function AssetBrowser::doDeleteModule(%this)
  159. {
  160. //First, get the module path
  161. %moduleDef = ModuleDatabase.findModule(AssetBrowser.selectedModule, 1);
  162. %modulePath = %moduleDef.ModulePath;
  163. //Next, unregister the module
  164. ModuleDatabase.unregisterModule(AssetBrowser.SelectedModule, 1);
  165. //Then, delete it
  166. %this.deleteFolder(%modulePath);
  167. //Remove the module def
  168. %moduleDef.delete();
  169. //And refresh the browser
  170. %this.loadDirectories();
  171. }
  172. function AssetBrowser::RefreshModuleDependencies(%this, %moduleDef)
  173. {
  174. //Iterate through all our modules
  175. //then, iterate through the module's assets
  176. //if an asset has a module that isn't us, queue that into the dependencies list
  177. //AssetBrowser.RefreshModuleDependencies(16823);
  178. %modulePath = filePath(%moduleDef.ModuleFilePath);
  179. %filePattern = "*." @ $TorqueScriptFileExtension TAB "*.taml" TAB "*.mis";
  180. //First, wipe out any files inside the folder first
  181. %file = makeFullPath(findFirstFileMultiExpr( %filePattern, true));
  182. %fileObj = new FileObject();
  183. %modulesList = ModuleDatabase.findModules(false);
  184. new ArrayObject(moduleDepList);
  185. while( %file !$= "" )
  186. {
  187. if(startsWith(%file, %modulePath))
  188. {
  189. if(%fileObj.openForRead(%file))
  190. {
  191. while( !%fileObj.isEOF() )
  192. {
  193. %line = %fileObj.readLine();
  194. if(%line $= "")
  195. continue;
  196. for(%i=0; %i < getWordCount(%modulesList); %i++)
  197. {
  198. %moduleName = getWord(%modulesList, %i).moduleID;
  199. //if(%moduleName $= %moduleDef.moduleID)
  200. // continue;
  201. %hasMatch = strIsMatchExpr( "*"@%moduleName@":*", %line );
  202. if(%hasMatch)
  203. {
  204. moduleDepList.add(%moduleName);
  205. }
  206. }
  207. }
  208. }
  209. }
  210. %file = makeFullPath(findNextFileMultiExpr( %filePattern ));
  211. }
  212. %fileObj.delete();
  213. }