editModule.tscript 10 KB

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