├── DisunityGuiHelper ├── WinShellIcon.ico ├── Resources │ └── DropZoneImage.png ├── Properties │ ├── Settings.settings │ ├── AssemblyInfo.cs │ ├── Settings.Designer.cs │ ├── Resources.Designer.cs │ └── Resources.resx ├── App.config ├── Settings.cs ├── src │ ├── ToolTarget.cs │ ├── ToolDialog.cs │ ├── ToolGuidedCmd.cs │ ├── ToolConfig.cs │ ├── ToolOutput.cs │ ├── Program.cs │ ├── ToolWindow.cs │ ├── ATA4.cs │ └── ToolWindow.Designer.cs └── DisunityGuiHelper.csproj ├── .gitattributes ├── README.md ├── DisunityGuiHelper.sln └── .gitignore /DisunityGuiHelper/WinShellIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Scrivener07/DisunityGuiHelper/HEAD/DisunityGuiHelper/WinShellIcon.ico -------------------------------------------------------------------------------- /DisunityGuiHelper/Resources/DropZoneImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Scrivener07/DisunityGuiHelper/HEAD/DisunityGuiHelper/Resources/DropZoneImage.png -------------------------------------------------------------------------------- /DisunityGuiHelper/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Disunity Gui Helper 2 | ========= 3 | An unofficial stopgap interface tool for [Disunity](https://github.com/ata4/disunity). An interface is planned for later versions of Disunity when it is ready. This tool will provide an interface in the interim. 4 | Disunity and Java are required for this application to run. 64bit processor recommended for larger files. 5 | 6 | Get the latest release [here](https://github.com/Scrivener07/DisunityGuiHelper/releases) or check out some screenshots of [Guided Command](http://i1268.photobucket.com/albums/jj569/Scrivener07/Gcmd.png) and 7 | [Expert Command](http://i1268.photobucket.com/albums/jj569/Scrivener07/Ecmd.png) in action. 8 | 9 | Directions.. 10 | Add the exe to the same folder as disunity.jar and run. 11 | 12 | -------------------------------------------------------------------------------- /DisunityGuiHelper/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /DisunityGuiHelper.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Express 2013 for Windows Desktop 4 | VisualStudioVersion = 12.0.30110.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DisunityGuiHelper", "DisunityGuiHelper\DisunityGuiHelper.csproj", "{82495A72-D51E-4CDD-870C-CD84DCA99BEF}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {82495A72-D51E-4CDD-870C-CD84DCA99BEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {82495A72-D51E-4CDD-870C-CD84DCA99BEF}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {82495A72-D51E-4CDD-870C-CD84DCA99BEF}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {82495A72-D51E-4CDD-870C-CD84DCA99BEF}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /DisunityGuiHelper/Settings.cs: -------------------------------------------------------------------------------- 1 | namespace DisunityGuiHelper.Properties { 2 | 3 | 4 | // This class allows you to handle specific events on the settings class: 5 | // The SettingChanging event is raised before a setting's value is changed. 6 | // The PropertyChanged event is raised after a setting's value is changed. 7 | // The SettingsLoaded event is raised after the setting values are loaded. 8 | // The SettingsSaving event is raised before the setting values are saved. 9 | public sealed partial class Settings { 10 | 11 | public Settings() { 12 | // // To add event handlers for saving and changing settings, uncomment the lines below: 13 | // 14 | // this.SettingChanging += this.SettingChangingEventHandler; 15 | // 16 | // this.SettingsSaving += this.SettingsSavingEventHandler; 17 | // 18 | } 19 | 20 | private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) { 21 | // Add code to handle the SettingChangingEvent event here. 22 | } 23 | 24 | private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) { 25 | // Add code to handle the SettingsSaving event here. 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /DisunityGuiHelper/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("DisunityGui")] 9 | [assembly: AssemblyDescription("A graphical user interface for Disunity.")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Disunity Gui Helper")] 13 | [assembly: AssemblyCopyright("Copyright © 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("20513468-c9b6-4600-885d-ba28eb644c0e")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("0.0.2.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /DisunityGuiHelper/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18444 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace DisunityGuiHelper.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] 16 | public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | 26 | [global::System.Configuration.UserScopedSettingAttribute()] 27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 28 | [global::System.Configuration.DefaultSettingValueAttribute("")] 29 | public string WorkingTargetFolder { 30 | get { 31 | return ((string)(this["WorkingTargetFolder"])); 32 | } 33 | set { 34 | this["WorkingTargetFolder"] = value; 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /DisunityGuiHelper/src/ToolTarget.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows.Forms; 7 | using System.Diagnostics; 8 | using System.IO; 9 | using System.Drawing; 10 | 11 | 12 | // TODO: Add batching support. 13 | 14 | namespace DisunityGuiHelper 15 | { 16 | public partial class ToolWindow 17 | { 18 | 19 | 20 | // Browse Target 21 | ///----------------------------------------------------------------------------------- 22 | private void TargetBrowseButton_OnClick(object sender, EventArgs e) 23 | { 24 | ShowFileBrowser(typefilter_UNITY); 25 | SetTargetPath(BrowseFileDialog.FileName); 26 | } 27 | 28 | 29 | 30 | private void DropZonePanel_OnDragEnter(object sender, DragEventArgs e) 31 | { 32 | if (e.Data.GetDataPresent(DataFormats.FileDrop)) 33 | { 34 | e.Effect = DragDropEffects.All; 35 | } 36 | else 37 | { 38 | e.Effect = DragDropEffects.None; 39 | } 40 | } 41 | 42 | 43 | 44 | private void DropZonePanel_OnDragDrop(object sender, DragEventArgs e) 45 | { 46 | string[] dzPath = (string[])e.Data.GetData(DataFormats.FileDrop, false); 47 | 48 | if (dzPath.Length > 1) //multi-target 49 | { 50 | this.WriteOutput(WarnNoBatch); 51 | } 52 | SetTargetPath(dzPath[0]); 53 | 54 | //for (int i = 0; i < dzPath.Length; i++) 55 | //{ 56 | // SetTargetPath(dzPath[i]); 57 | //} 58 | } 59 | 60 | 61 | 62 | private void SetTargetPath(string evalPath) 63 | { 64 | if (File.Exists(evalPath)) 65 | { 66 | ProcessTarget = evalPath; 67 | TargetTextBox.Text = evalPath; 68 | WriteOutput("Pending File: " + evalPath); 69 | } 70 | else 71 | { 72 | ProcessTarget = null; 73 | TargetTextBox.Text = "Select a unity file to process."; 74 | WriteOutput("No file selected"); 75 | } 76 | } 77 | 78 | 79 | 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /DisunityGuiHelper/src/ToolDialog.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows.Forms; 7 | using System.Diagnostics; 8 | using System.IO; 9 | 10 | 11 | 12 | namespace DisunityGuiHelper 13 | { 14 | public partial class ToolWindow 15 | { 16 | 17 | public const string typefilter_ALL = "All Files (*.*)|*.*"; 18 | public const string typefilter_UNITY = "Unity Files |*.*"; 19 | public const string typefilter_TEXT = "Text |*.txt|Any File|*.*"; 20 | 21 | 22 | private string ShowFolderBrowser(bool a_addPathSeperator = false) 23 | { 24 | if (this.BrowseFolderDialog.ShowDialog() == DialogResult.OK) 25 | { 26 | if (a_addPathSeperator) 27 | { 28 | return this.BrowseFolderDialog.SelectedPath + "\\"; 29 | } 30 | else 31 | { 32 | return this.BrowseFolderDialog.SelectedPath; 33 | } 34 | } 35 | else 36 | { 37 | return null; 38 | } 39 | } 40 | 41 | 42 | 43 | private string ShowFileBrowser(string filter = typefilter_ALL) 44 | { 45 | this.BrowseFileDialog.FileName = null; 46 | this.BrowseFileDialog.Filter = filter; 47 | if (this.BrowseFileDialog.ShowDialog() == DialogResult.OK) 48 | { 49 | return this.BrowseFileDialog.FileName; 50 | } 51 | else 52 | { 53 | return null; 54 | } 55 | } 56 | 57 | 58 | 59 | private bool ShowSaveFileBrowser(object data, string filter = typefilter_TEXT) 60 | { 61 | this.SaveFileDialog.FileName = "DisunityReport"; 62 | this.SaveFileDialog.Filter = filter; 63 | 64 | if (this.SaveFileDialog.ShowDialog() == DialogResult.OK) 65 | { 66 | using (StreamWriter sw = new StreamWriter(SaveFileDialog.FileName)) 67 | { 68 | sw.Write(data); 69 | sw.Flush(); 70 | sw.Close(); 71 | return true; 72 | } 73 | } 74 | else 75 | { 76 | return false; 77 | } 78 | } 79 | 80 | 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /DisunityGuiHelper/src/ToolGuidedCmd.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows.Forms; 7 | using System.Diagnostics; 8 | using System.IO; 9 | using System.Drawing; 10 | 11 | 12 | 13 | namespace DisunityGuiHelper 14 | { 15 | 16 | public partial class ToolWindow 17 | { 18 | 19 | 20 | // Guided Command 21 | ///----------------------------------------------------------------------------------- 22 | private void SetupPresetSelection() 23 | { 24 | this.RunPresetSelection.Items.Clear(); 25 | foreach (string item in DisunityHelper.CommandList) 26 | { 27 | this.RunPresetSelection.Items.Add(item); 28 | } 29 | this.RunPresetSelection.SelectedIndex = 0; 30 | RunPresetInput = this.RunPresetSelection.SelectedIndex; 31 | } 32 | 33 | 34 | 35 | private void RunPresetSelection_OnChangeCommitted(object sender, EventArgs e) 36 | { 37 | RunPresetInput = this.RunPresetSelection.SelectedIndex; 38 | WriteOutput("Pending Command: " + DisunityHelper.CommandList.ElementAt(RunPresetInput)); 39 | UpdateHint(); 40 | UpdateFilter(); 41 | } 42 | 43 | 44 | 45 | // Filter 46 | ///----------------------------------------------------------------------------------- 47 | private void FilterTextBox_OnTextChanged(object sender, EventArgs e) 48 | { 49 | ProcessFilter = this.FilterTextBox.Text.ToLower(); 50 | } 51 | 52 | 53 | 54 | private void UpdateFilter() 55 | { 56 | Trace.WriteLine("Updating class filter controls.."); 57 | 58 | if (UseExpert) 59 | { 60 | this.FilterLabel.Enabled = false; 61 | this.FilterLabel.Visible = false; 62 | this.FilterTextBox.Enabled = false; 63 | this.FilterTextBox.Visible = false; 64 | } 65 | else 66 | { 67 | bool CanUseFilter = (RunPresetInput == ATA4.IDExtract || RunPresetInput == ATA4.IDExtractRaw || RunPresetInput == ATA4.IDDump || RunPresetInput == ATA4.IDDumpStruct || RunPresetInput == ATA4.IDBundleExtract); 68 | 69 | if (CanUseFilter) 70 | { 71 | this.FilterLabel.Enabled = true; 72 | this.FilterLabel.Visible = true; 73 | this.FilterTextBox.Enabled = true; 74 | this.FilterTextBox.Visible = true; 75 | EnableSupport(); 76 | this.WriteHint(ATA4.ClassFilterMessage); 77 | } 78 | else 79 | { 80 | this.FilterLabel.Enabled = false; 81 | this.FilterLabel.Visible = false; 82 | this.FilterTextBox.Enabled = false; 83 | this.FilterTextBox.Visible = false; 84 | EnableSupport(false); 85 | } 86 | } 87 | 88 | } 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /DisunityGuiHelper/src/ToolConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows.Forms; 7 | using System.Diagnostics; 8 | using System.IO; 9 | using System.Drawing; 10 | 11 | namespace DisunityGuiHelper 12 | { 13 | public partial class ToolWindow 14 | { 15 | 16 | private bool IsBusy = false; 17 | 18 | string hintExpert = "You are using expert mode.\n".Replace("\n", Environment.NewLine) + 19 | "In this mode you can execute any commands by typing them into the command field.\n".Replace("\n", Environment.NewLine) + 20 | "This tool will still provide the java and disunity arguments for you.\n".Replace("\n", Environment.NewLine) + 21 | "The gui will provide the target parameter as well if 'Use Target' is checked.".Replace("\n", Environment.NewLine); 22 | 23 | string WarnNoBatch = "Sorry, batch processing not implemented yet." + 24 | "You can use 'Expert Mode' or the standalone version of disunity to gain this functionality."; 25 | 26 | 27 | 28 | // Application Status 29 | ///----------------------------------------------------------------------------------- 30 | private void SetBusyLight() 31 | { 32 | IsBusy = true; 33 | this.ExecuteButton.Enabled = false; 34 | this.ExecuteButton.Click -= ExecuteButton_OnClick; 35 | this.BusyIndicator.BackColor = Color.IndianRed; 36 | this.BusyStatusLabel.Text = "Busy"; 37 | this.HelpHintTextbox.Text = "The application is busy processing your command..\nPlease dont try to interact with or exit this application until it is ready.".Replace("\n", Environment.NewLine); 38 | this.BusyIndicator.Refresh(); 39 | this.BusyStatusLabel.Refresh(); 40 | this.HelpHintTextbox.Refresh(); 41 | } 42 | 43 | 44 | private void SetReadyLight() 45 | { 46 | this.ExecuteButton.Enabled = true; 47 | this.ExecuteButton.Click += ExecuteButton_OnClick; 48 | this.BusyIndicator.BackColor = Color.MediumSeaGreen; 49 | this.BusyStatusLabel.Text = "Ready"; 50 | this.BusyIndicator.Refresh(); 51 | this.BusyStatusLabel.Refresh(); 52 | IsBusy = false; 53 | UpdateHint(); 54 | } 55 | 56 | 57 | 58 | 59 | // Support 60 | ///----------------------------------------------------------------------------------- 61 | private void SupportButton_OnClick(object sender, EventArgs e) 62 | { 63 | if (true) 64 | { 65 | this.WriteOutput(ATA4.ShowHintMessage()); 66 | } 67 | } 68 | 69 | 70 | private void UpdateHint() 71 | { 72 | if (UseExpert) 73 | { 74 | this.HelpHintTextbox.Text = hintExpert; 75 | } 76 | else 77 | { 78 | HelpHintTextbox.Text = DisunityHelper.CommandHintList[RunPresetSelection.SelectedIndex]; 79 | } 80 | } 81 | 82 | 83 | 84 | public void WriteHint(string text) 85 | { 86 | this.HelpHintTextbox.Text += text; 87 | Debug.WriteLine(text); 88 | } 89 | 90 | 91 | 92 | private void EnableSupport(bool enable = true) 93 | { 94 | if (enable) 95 | { 96 | this.SupportButton.Enabled = true; 97 | this.SupportButton.Visible = true; 98 | } 99 | else 100 | { 101 | this.SupportButton.Enabled = false; 102 | this.SupportButton.Visible = false; 103 | } 104 | } 105 | 106 | 107 | 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /DisunityGuiHelper/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18444 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace DisunityGuiHelper.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DisunityGuiHelper.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// Looks up a localized resource of type System.Drawing.Bitmap. 65 | /// 66 | internal static System.Drawing.Bitmap DropZoneImage { 67 | get { 68 | object obj = ResourceManager.GetObject("DropZoneImage", resourceCulture); 69 | return ((System.Drawing.Bitmap)(obj)); 70 | } 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | *.pydevproject 6 | .project 7 | .metadata 8 | bin/ 9 | tmp/ 10 | *.tmp 11 | *.bak 12 | *.swp 13 | *~.nib 14 | local.properties 15 | .classpath 16 | .settings/ 17 | .loadpath 18 | 19 | # External tool builders 20 | .externalToolBuilders/ 21 | 22 | # Locally stored "Eclipse launch configurations" 23 | *.launch 24 | 25 | # CDT-specific 26 | .cproject 27 | 28 | # PDT-specific 29 | .buildpath 30 | 31 | 32 | ################# 33 | ## Visual Studio 34 | ################# 35 | 36 | ## Ignore Visual Studio temporary files, build results, and 37 | ## files generated by popular Visual Studio add-ons. 38 | 39 | # User-specific files 40 | *.suo 41 | *.user 42 | *.sln.docstates 43 | 44 | # Build results 45 | 46 | [Dd]ebug/ 47 | [Rr]elease/ 48 | x64/ 49 | build/ 50 | [Bb]in/ 51 | [Oo]bj/ 52 | 53 | # MSTest test Results 54 | [Tt]est[Rr]esult*/ 55 | [Bb]uild[Ll]og.* 56 | 57 | *_i.c 58 | *_p.c 59 | *.ilk 60 | *.meta 61 | *.obj 62 | *.pch 63 | *.pdb 64 | *.pgc 65 | *.pgd 66 | *.rsp 67 | *.sbr 68 | *.tlb 69 | *.tli 70 | *.tlh 71 | *.tmp 72 | *.tmp_proj 73 | *.log 74 | *.vspscc 75 | *.vssscc 76 | .builds 77 | *.pidb 78 | *.log 79 | *.scc 80 | 81 | # Visual C++ cache files 82 | ipch/ 83 | *.aps 84 | *.ncb 85 | *.opensdf 86 | *.sdf 87 | *.cachefile 88 | 89 | # Visual Studio profiler 90 | *.psess 91 | *.vsp 92 | *.vspx 93 | 94 | # Guidance Automation Toolkit 95 | *.gpState 96 | 97 | # ReSharper is a .NET coding add-in 98 | _ReSharper*/ 99 | *.[Rr]e[Ss]harper 100 | 101 | # TeamCity is a build add-in 102 | _TeamCity* 103 | 104 | # DotCover is a Code Coverage Tool 105 | *.dotCover 106 | 107 | # NCrunch 108 | *.ncrunch* 109 | .*crunch*.local.xml 110 | 111 | # Installshield output folder 112 | [Ee]xpress/ 113 | 114 | # DocProject is a documentation generator add-in 115 | DocProject/buildhelp/ 116 | DocProject/Help/*.HxT 117 | DocProject/Help/*.HxC 118 | DocProject/Help/*.hhc 119 | DocProject/Help/*.hhk 120 | DocProject/Help/*.hhp 121 | DocProject/Help/Html2 122 | DocProject/Help/html 123 | 124 | # Click-Once directory 125 | publish/ 126 | 127 | # Publish Web Output 128 | *.Publish.xml 129 | *.pubxml 130 | 131 | # NuGet Packages Directory 132 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 133 | #packages/ 134 | 135 | # Windows Azure Build Output 136 | csx 137 | *.build.csdef 138 | 139 | # Windows Store app package directory 140 | AppPackages/ 141 | 142 | # Others 143 | sql/ 144 | *.Cache 145 | ClientBin/ 146 | [Ss]tyle[Cc]op.* 147 | ~$* 148 | *~ 149 | *.dbmdl 150 | *.[Pp]ublish.xml 151 | *.pfx 152 | *.publishsettings 153 | 154 | # RIA/Silverlight projects 155 | Generated_Code/ 156 | 157 | # Backup & report files from converting an old project file to a newer 158 | # Visual Studio version. Backup files are not needed, because we have git ;-) 159 | _UpgradeReport_Files/ 160 | Backup*/ 161 | UpgradeLog*.XML 162 | UpgradeLog*.htm 163 | 164 | # SQL Server files 165 | App_Data/*.mdf 166 | App_Data/*.ldf 167 | 168 | ############# 169 | ## Windows detritus 170 | ############# 171 | 172 | # Windows image file caches 173 | Thumbs.db 174 | ehthumbs.db 175 | 176 | # Folder config file 177 | Desktop.ini 178 | 179 | # Recycle Bin used on file shares 180 | $RECYCLE.BIN/ 181 | 182 | # Mac crap 183 | .DS_Store 184 | 185 | 186 | ############# 187 | ## Python 188 | ############# 189 | 190 | *.py[co] 191 | 192 | # Packages 193 | *.egg 194 | *.egg-info 195 | dist/ 196 | build/ 197 | eggs/ 198 | parts/ 199 | var/ 200 | sdist/ 201 | develop-eggs/ 202 | .installed.cfg 203 | 204 | # Installer logs 205 | pip-log.txt 206 | 207 | # Unit test / coverage reports 208 | .coverage 209 | .tox 210 | 211 | #Translations 212 | *.mo 213 | 214 | #Mr Developer 215 | .mr.developer.cfg 216 | -------------------------------------------------------------------------------- /DisunityGuiHelper/src/ToolOutput.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Diagnostics; 7 | using System.Drawing; 8 | using System.Windows.Forms; 9 | 10 | 11 | // TODO: UseScrollToEnd does not hold position 12 | 13 | namespace DisunityGuiHelper 14 | { 15 | 16 | /// 17 | /// A RichTextBox that behaves similar to a console output window. 18 | /// 19 | public partial class ToolWindow 20 | { 21 | 22 | public int CurrentColumn 23 | { 24 | get { return this.OutputBox.SelectionStart - this.OutputBox.GetFirstCharIndexOfCurrentLine() + 1; } 25 | } 26 | 27 | public int CurrentLine 28 | { 29 | get { return this.OutputBox.GetLineFromCharIndex(this.OutputBox.SelectionStart) + 1; } 30 | } 31 | 32 | 33 | // Output 34 | ///----------------------------------------------------------------------------------- 35 | 36 | private void SetupOutput() 37 | { 38 | this.OutputBox.HideSelection = false; 39 | this.OutputBox.ShowSelectionMargin = true; 40 | } 41 | 42 | 43 | 44 | 45 | public void WriteOutput(string text) 46 | { 47 | string output = text + Environment.NewLine + Environment.NewLine; 48 | if (UseScrollToEnd) 49 | { 50 | this.OutputBox.AppendText(output); 51 | } 52 | else 53 | { 54 | this.OutputBox.Text += output; 55 | } 56 | } 57 | 58 | 59 | 60 | private void ClearOutput() 61 | { 62 | this.OutputBox.Lines = new string[] { "" }; 63 | } 64 | 65 | 66 | 67 | private void HightlightText() 68 | { 69 | if (UseHighlightLine) 70 | { 71 | this.OutputBox.Select(this.OutputBox.SelectionStart, this.OutputBox.SelectionLength); 72 | this.OutputBox.SelectionBackColor = Color.Khaki; 73 | } 74 | } 75 | 76 | 77 | 78 | private void ClearHightlights() 79 | { 80 | string s = this.OutputBox.Text; 81 | this.OutputBox.Clear(); 82 | this.OutputBox.Text = s; 83 | } 84 | 85 | 86 | 87 | 88 | 89 | 90 | // Events 91 | ///----------------------------------------------------------------------------------- 92 | /// 93 | private void ToggleUseLineHightlight_CheckedChanged(object sender, EventArgs e) 94 | { 95 | UseHighlightLine = this.ToggleUseLineHightlight.Checked; 96 | 97 | if (!UseHighlightLine) 98 | { 99 | ClearHightlights(); 100 | } 101 | } 102 | 103 | 104 | private void OutputBox_OnClick(object sender, EventArgs e) 105 | { 106 | Trace.WriteLine("Line:" + CurrentLine + ", Column:" + CurrentColumn); 107 | } 108 | 109 | 110 | private void OutputBox_SelectionChanged(object sender, EventArgs e) 111 | { 112 | } 113 | 114 | 115 | private void OutputBox_TextChanged(object sender, EventArgs e) 116 | { 117 | } 118 | 119 | 120 | private void OutputBox_MouseUp(object sender, MouseEventArgs e) 121 | { 122 | HightlightText(); 123 | } 124 | 125 | 126 | private void OutputBox_LinkClicked(object sender, LinkClickedEventArgs e) 127 | { 128 | Process.Start(e.LinkText); 129 | } 130 | 131 | 132 | private void SaveLogOutputButton_OnClick(object sender, EventArgs e) 133 | { 134 | ShowSaveFileBrowser(this.OutputBox.Text, typefilter_TEXT); 135 | } 136 | 137 | 138 | private void ClearLogOutputButton_OnClick(object sender, EventArgs e) 139 | { 140 | ClearOutput(); 141 | } 142 | 143 | 144 | 145 | // Message 146 | ///----------------------------------------------------------------------------------- 147 | private void WriteWelcome() 148 | { 149 | this.WriteOutput("To get started, choose a file or directory with the browse button or drag and drop one onto the drop zone.\n" + 150 | "Configure the file process by selecting a command from the drop down menu. Click execute when ready.\n" + 151 | "You may also save to file or clear this output windows content at any time."); 152 | } 153 | 154 | 155 | 156 | public void WriteInfo() 157 | { 158 | Trace.WriteLine("Writing tool window values..\n" + 159 | "\nDisunityHelper: " + DisunityHelper.ToString() + 160 | "\nUseExpert: " + UseExpert + 161 | "\nUseVerbose: " + UseVerbose + 162 | "\nUseTarget: " + UseTarget + 163 | "\nUseScrollToEnd: " + UseScrollToEnd + 164 | "\nUserCommandPresetInput: " + RunPresetInput + 165 | "\nUserCommandManualInput: " + RunExpertInput + 166 | "\nProcessTarget: " + ProcessTarget + 167 | "\nProcessFilter: " + ProcessFilter); 168 | } 169 | 170 | 171 | 172 | } 173 | } 174 | -------------------------------------------------------------------------------- /DisunityGuiHelper/src/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | using System.Diagnostics; 7 | using System.IO; 8 | using Microsoft.Win32; 9 | 10 | 11 | namespace DisunityGuiHelper 12 | { 13 | internal sealed class Program 14 | { 15 | 16 | public static string JavaPath 17 | { 18 | get { return user_javapath; } 19 | set { user_javapath = value; } 20 | } 21 | private static string user_javapath; 22 | 23 | 24 | public static string ProgramPath 25 | { 26 | get { return user_ProgramPath; } 27 | set { user_ProgramPath = value; } 28 | } 29 | private static string user_ProgramPath; 30 | 31 | 32 | public static string DisunityPath 33 | { 34 | get { return user_DisunityPath; } 35 | set { user_DisunityPath = value; } 36 | } 37 | private static string user_DisunityPath; 38 | 39 | 40 | private const string disunityAssemblyName = "disunity.jar"; 41 | private const string disunityPrompt = "Could not find " + disunityAssemblyName + " in startup directory.\nPress OK to browse for disunity or Cancel to exit the application."; 42 | 43 | private const string javaPrompt = "No standard Java installation found.\nPress OK to browse for java.exe or Cancel to exit the application."; 44 | 45 | 46 | 47 | [STAThread] 48 | static void Main() 49 | { 50 | Application.EnableVisualStyles(); 51 | Application.SetCompatibleTextRenderingDefault(false); 52 | Startup(); 53 | Application.Run(new ToolWindow()); 54 | } 55 | 56 | 57 | private static void Startup() 58 | { 59 | user_ProgramPath = Application.StartupPath; 60 | Console.WriteLine("Startup Path [" + user_ProgramPath + "]\n"); 61 | 62 | user_DisunityPath = LocateDisunity(); 63 | Console.WriteLine("Disunity [" + user_DisunityPath + "]\n"); 64 | 65 | user_javapath = LocateJava(); 66 | Console.WriteLine("Java [" + user_javapath + "]\n"); 67 | } 68 | 69 | 70 | 71 | 72 | private static string LocateDisunity() 73 | { 74 | Console.WriteLine("Looking for Disunity."); 75 | 76 | if (File.Exists(disunityAssemblyName)) 77 | { 78 | Console.WriteLine("Found Disunity in the application startup directory."); 79 | return disunityAssemblyName; 80 | } 81 | else 82 | { 83 | DialogResult result = MessageBox.Show(disunityPrompt, "Could not find " + disunityAssemblyName, MessageBoxButtons.OKCancel); 84 | if (result == DialogResult.OK) 85 | { 86 | string custompath = FindAssemblyDialog("Disunity Assembly | *.jar"); 87 | if (!File.Exists(custompath)) 88 | { 89 | Environment.Exit(0); 90 | } 91 | else 92 | { 93 | Console.WriteLine("Non-standard Disunity path has been selected."); 94 | return custompath; 95 | } 96 | } 97 | else if (result == DialogResult.Cancel) 98 | { 99 | Console.WriteLine("Please close this dialog and exit the application."); 100 | Environment.Exit(0); 101 | } 102 | return ""; 103 | } 104 | } 105 | 106 | 107 | 108 | 109 | 110 | private static string LocateJava() 111 | { 112 | Console.WriteLine("Looking for Java."); 113 | const string java64 = @"C:\Program Files\Java\jre7\bin\java.exe"; 114 | const string java32 = @"C:\Program Files (x86)\Java\jre7\bin\java.exe"; 115 | 116 | if (File.Exists(java64)) 117 | { 118 | Console.WriteLine("-Standard 64bit JRE installation exists."); 119 | return java64; 120 | } else if (File.Exists(java32)) { 121 | Console.WriteLine("-Standard 32bit JRE installation exists. Avoid processing larger files because of limited heap size."); 122 | return java32; 123 | } 124 | else 125 | { 126 | DialogResult result = MessageBox.Show(javaPrompt, "Could not find java.exe", MessageBoxButtons.OKCancel); 127 | if (result == DialogResult.OK) 128 | { 129 | string custompath = FindAssemblyDialog("Java Assembly |java.exe"); 130 | if (!File.Exists(custompath)) 131 | { 132 | Environment.Exit(0); 133 | } 134 | else 135 | { 136 | Console.WriteLine("Non-standard Java path has been selected."); 137 | return custompath; 138 | } 139 | } 140 | else if (result == DialogResult.Cancel) 141 | { 142 | Console.WriteLine("Please close this dialog and exit the application."); 143 | Environment.Exit(0); 144 | } 145 | return ""; 146 | } 147 | } 148 | 149 | 150 | 151 | 152 | private static string FindAssemblyDialog(string filter) 153 | { 154 | OpenFileDialog dialog = new OpenFileDialog(); 155 | dialog.InitialDirectory = ProgramPath; 156 | dialog.Filter = filter; 157 | dialog.RestoreDirectory = true; 158 | 159 | if (dialog.ShowDialog() == DialogResult.OK) 160 | { 161 | return dialog.FileName; 162 | } 163 | else 164 | { 165 | return ""; 166 | } 167 | } 168 | 169 | 170 | 171 | 172 | } 173 | } 174 | 175 | -------------------------------------------------------------------------------- /DisunityGuiHelper/src/ToolWindow.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | using System.Diagnostics; 11 | using System.IO; 12 | 13 | 14 | 15 | namespace DisunityGuiHelper 16 | { 17 | public partial class ToolWindow : Form 18 | { 19 | 20 | private ATA4 DisunityHelper; 21 | private bool UseExpert = false; 22 | private bool UseVerbose = false; 23 | private bool UseTarget = true; 24 | private bool UseScrollToEnd = true; 25 | private bool UseHighlightLine = false; 26 | private int RunPresetInput = 0; 27 | private string RunExpertInput = null; 28 | private string ProcessTarget = null; 29 | private string ProcessFilter = null; 30 | 31 | 32 | public ToolWindow() 33 | { 34 | InitializeComponent(); 35 | DisunityHelper = new ATA4(); 36 | Setup(); 37 | WriteWelcome(); 38 | } 39 | 40 | 41 | private void Setup() 42 | { 43 | SetupOutput(); 44 | SetupOptions(); 45 | SetupPresetSelection(); 46 | SetCommandMode(UseExpert); 47 | } 48 | 49 | 50 | private void SetupOptions() 51 | { 52 | this.TargetTextBox.Text = "Select a file or directory to process."; 53 | this.ToggleUseExpert.Checked = UseExpert; 54 | this.ToggleUseTarget.Checked = UseTarget; 55 | this.ToggleUseVerbose.Checked = UseVerbose; 56 | this.ToggleUseScrollToEnd.Checked = UseScrollToEnd; 57 | this.ToggleUseLineHightlight.Checked = UseHighlightLine; 58 | } 59 | 60 | 61 | 62 | private void SetCommandMode(bool isExpert) 63 | { 64 | if (isExpert) 65 | { 66 | this.ToggleUseTarget.Enabled = true; 67 | this.ToggleUseVerbose.Enabled = false; 68 | this.RunExpertSelection.Enabled = true; 69 | this.RunExpertSelection.Visible = true; 70 | this.RunPresetSelection.Enabled = false; 71 | this.RunPresetSelection.Visible = false; 72 | this.RunExpertSelection.Dock = DockStyle.Fill; 73 | this.FilterTextBox.Enabled = false; 74 | this.FilterTextBox.Visible = false; 75 | this.WriteOutput("Expert Mode: Visit https://github.com/ata4/disunity for additional command usage information."); 76 | EnableSupport(false); 77 | } 78 | else 79 | { 80 | UseTarget = true; 81 | this.ToggleUseTarget.Enabled = false; 82 | this.ToggleUseTarget.Checked = UseTarget; 83 | this.ToggleUseVerbose.Enabled = true; 84 | this.RunExpertSelection.Enabled = false; 85 | this.RunExpertSelection.Visible = false; 86 | this.RunExpertSelection.Dock = DockStyle.None; 87 | this.RunPresetSelection.Enabled = true; 88 | this.RunPresetSelection.Visible = true; 89 | UpdateFilter(); 90 | } 91 | 92 | UpdateHint(); 93 | this.WriteInfo(); 94 | } 95 | 96 | 97 | 98 | 99 | // Toggles and Options 100 | ///----------------------------------------------------------------------------------- 101 | private void ToggleUseExpert_OnCheckedChanged(object sender, EventArgs e) 102 | { 103 | UseExpert = this.ToggleUseExpert.Checked; 104 | SetCommandMode(UseExpert); 105 | } 106 | 107 | 108 | private void ToggleUseVerbose_OnCheckedChanged(object sender, EventArgs e) 109 | { 110 | UseVerbose = this.ToggleUseVerbose.Checked; 111 | } 112 | 113 | 114 | private void ToggleUseTarget_OnCheckedChanged(object sender, EventArgs e) 115 | { 116 | UseTarget = this.ToggleUseTarget.Checked; 117 | if (!UseTarget) 118 | { 119 | SetTargetPath(null); 120 | } 121 | } 122 | 123 | 124 | private void ToggleUseScrollToEnd_OnCheckedChanged(object sender, EventArgs e) 125 | { 126 | UseScrollToEnd = this.ToggleUseScrollToEnd.Checked; 127 | } 128 | 129 | 130 | 131 | // Selection 132 | ///----------------------------------------------------------------------------------- 133 | private void RunExpertSelection_OnTextChanged(object sender, EventArgs e) 134 | { 135 | RunExpertInput = this.RunExpertSelection.Text; 136 | } 137 | 138 | 139 | 140 | // Execute 141 | ///----------------------------------------------------------------------------------- 142 | private void ExecuteButton_OnClick(object sender, EventArgs e) 143 | { 144 | Execute(); 145 | } 146 | 147 | 148 | private void RunExpertSelection_OnKeyPress(object sender, KeyPressEventArgs e) 149 | { 150 | if (e.KeyChar == (char)13) 151 | { 152 | Execute(); 153 | } 154 | } 155 | 156 | 157 | private void FilterTextBox_OnKeyPress(object sender, KeyPressEventArgs e) 158 | { 159 | if (e.KeyChar == (char)13) 160 | { 161 | Execute(); 162 | } 163 | } 164 | 165 | 166 | 167 | private void Execute() 168 | { 169 | if (IsBusy) //TODO: isBusy/return does not block multiple execution. Must fix before batching. 170 | { 171 | return; 172 | } 173 | else 174 | { 175 | SetBusyLight(); 176 | string result; 177 | if (UseExpert) 178 | { 179 | if (UseTarget) 180 | { 181 | result = DisunityHelper.RequestCommand(RunExpertInput, ProcessTarget); 182 | } 183 | else 184 | { 185 | result = DisunityHelper.RequestCommand(RunExpertInput, null); 186 | } 187 | } 188 | else 189 | { 190 | result = DisunityHelper.RequestPreset(UseVerbose, RunPresetInput, ProcessTarget, ProcessFilter); 191 | } 192 | this.WriteOutput(result); 193 | SetReadyLight(); 194 | } 195 | } 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | } 204 | } 205 | -------------------------------------------------------------------------------- /DisunityGuiHelper/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | ..\Resources\DropZoneImage.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 123 | 124 | -------------------------------------------------------------------------------- /DisunityGuiHelper/DisunityGuiHelper.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {82495A72-D51E-4CDD-870C-CD84DCA99BEF} 8 | Exe 9 | Properties 10 | DisunityGuiHelper 11 | DisunityGui 12 | v4.5 13 | 512 14 | publish\ 15 | true 16 | Disk 17 | false 18 | Foreground 19 | 7 20 | Days 21 | false 22 | false 23 | true 24 | 0 25 | 1.0.0.%2a 26 | false 27 | false 28 | true 29 | 30 | 31 | AnyCPU 32 | true 33 | full 34 | false 35 | bin\Debug\ 36 | DEBUG;TRACE 37 | prompt 38 | 4 39 | 40 | 41 | AnyCPU 42 | pdbonly 43 | false 44 | bin\Release\ 45 | TRACE 46 | prompt 47 | 4 48 | 49 | 50 | DisunityGuiHelper.Program 51 | 52 | 53 | WinShellIcon.ico 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | Form 73 | 74 | 75 | Form 76 | 77 | 78 | Form 79 | 80 | 81 | Form 82 | 83 | 84 | Form 85 | 86 | 87 | ToolWindow.cs 88 | 89 | 90 | 91 | 92 | Form 93 | 94 | 95 | ToolWindow.cs 96 | 97 | 98 | ResXFileCodeGenerator 99 | Resources.Designer.cs 100 | Designer 101 | 102 | 103 | True 104 | Resources.resx 105 | True 106 | 107 | 108 | PublicSettingsSingleFileGenerator 109 | Settings.Designer.cs 110 | 111 | 112 | True 113 | Settings.settings 114 | True 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | False 123 | Microsoft .NET Framework 4.5 %28x86 and x64%29 124 | true 125 | 126 | 127 | False 128 | .NET Framework 3.5 SP1 Client Profile 129 | false 130 | 131 | 132 | False 133 | .NET Framework 3.5 SP1 134 | false 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 150 | -------------------------------------------------------------------------------- /DisunityGuiHelper/src/ATA4.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Diagnostics; 6 | using System.IO; 7 | using System.Windows.Forms; 8 | 9 | 10 | namespace DisunityGuiHelper 11 | { 12 | class ATA4 13 | { 14 | public string[] CommandList = new string[] 15 | { 16 | /*0*/ " Help ", 17 | /*1*/ " list ", 18 | /*2*/ " info ", 19 | /*3*/ " info-stats ", 20 | /*4*/ " dump ", 21 | /*5*/ " dump-struct ", 22 | /*6*/ " extract ", 23 | /*7*/ " extract-raw ", 24 | /*8*/ " fixrefs ", 25 | /*9*/ " split ", 26 | /*10*/ " bundle-list ", 27 | /*11*/ " bundle-extract ", 28 | /*12*/ " learn " 29 | }; 30 | 31 | 32 | 33 | public string[] CommandHintList = new string[] 34 | { 35 | /*0*/ "Help, the same as using the -h switch for further usage information.", 36 | /*1*/ "Lists all asset objects in a tabular form.", 37 | /*2*/ "Outputs various information for asset and asset bundle files.", 38 | /*3*/ "Outputs class usage statistics for asset files.", 39 | /*4*/ "Converts binary object data to human-readable plain text, similar to the binary2text tool shipped with the Unity editor.", 40 | /*5*/ "Like dump, but just for the structure information.", 41 | /*6*/ "Extracts asset objects to regular files (.txt, .wav, .tga, etc.)", 42 | /*7*/ "Extracts raw serialized object data. Could be useful for manual extraction if extract doesn't support the wanted asset type.", 43 | /*8*/ "Fixes shared asset references in extracted scene files by converting relative to absolute paths so they can be opened with the Unity editor correctly. Note: If the shared assets are moved to a different folder, the scene needs to be fixed again.", 44 | /*9*/ "Attempts to split an asset file into multiple smaller asset files.", 45 | /*10*/ "Lists all files contained in Unity webplayer bundles (*.unity3d).", 46 | /*11*/ "Extracts all packed files from Unity webplayer bundles (*.unity3d).", 47 | /*12*/ "Learns the structure information from the submitted files and stores any new structs in the database file structdb.dat. The database is required to deserialize standalone asset files, which usually don't contain any structure information." 48 | }; 49 | 50 | 51 | public const int IDHelp = 0; 52 | public const int IDList = 1; 53 | public const int IDInfo = 2; 54 | public const int IDInfoStats = 3; 55 | public const int IDDump = 4; 56 | public const int IDDumpStruct = 5; 57 | public const int IDExtract = 6; 58 | public const int IDExtractRaw = 7; 59 | public const int IDFixRefs = 8; 60 | public const int IDSplit = 9; 61 | public const int IDBundleList = 10; 62 | public const int IDBundleExtract = 11; 63 | public const int IDLearn = 12; 64 | public static string ClassFilterMessage = "\n\nUse the class filter to only process objects of the specified class.\nThe filter expects a string with class names, separated by commas. \nSee SUPPORT.md for a list of supported asset types.".Replace("\n", Environment.NewLine); 65 | 66 | 67 | private string DisunityCommand; 68 | 69 | 70 | 71 | /// 72 | /// Object for interacting with ata4's disunity cli. 73 | /// 74 | public ATA4() 75 | { 76 | DisunityCommand = " -jar \"" + Program.DisunityPath + "\""; 77 | } 78 | 79 | 80 | 81 | public static string ShowHintMessage(int msg = 0) 82 | { 83 | if (msg == 0) 84 | { 85 | string s = 86 | "Type: AudioClip, Status: Ok" + 87 | "\nType: Font, Status: Ok, but wrong file extension for OpenType fonts" + 88 | "\nType: Mesh, Status: Unity 4 and uncompressed only" + 89 | "\nType: TextAsset, Status: Ok" + 90 | "\nType: Shader, Status: Ok" + 91 | "\nType: Texture2D, Status: Missing support for PVR, ATC and some exotic color formats" + 92 | "\nType: Cubemap, Status: Wrong texture flags" + 93 | "\nType: SubstanceArchive, Status: Ok" + 94 | "\nType: MovieTexture, Status: Ok"; 95 | return s; 96 | } 97 | else 98 | { 99 | return "Sorry, no message at that index."; 100 | } 101 | } 102 | 103 | 104 | 105 | /// 106 | /// Sends user provided command and target to disunity. 107 | /// 108 | /// The command to execute. 109 | /// The file or directory to process. 110 | /// Disunitys standard output. 111 | public string RequestCommand(string cmd, string target = null) 112 | { 113 | if (!String.IsNullOrEmpty(target)) 114 | { 115 | target = " \"" + target + "\""; 116 | } 117 | if (!String.IsNullOrEmpty(cmd)) 118 | { 119 | cmd = " " + cmd; 120 | } 121 | return SendCommand(cmd + target); 122 | } 123 | 124 | 125 | 126 | 127 | /// 128 | /// Send command preset with parameters. 129 | /// 130 | /// Shows more verbose log output. 131 | /// The processing command to use. 132 | /// The file or directory to process. 133 | /// Only process objects that use these classes. 134 | /// Disunitys standard output. 135 | public string RequestPreset(bool verbose = true, int cmd = 0, string target = null, string filter = null) 136 | { 137 | if (cmd == 0) 138 | { 139 | return AskHelp(); 140 | } 141 | string f = ""; 142 | if (!String.IsNullOrEmpty(filter)) 143 | { 144 | f = " -f " + filter + " "; 145 | } 146 | string v = ""; 147 | if (verbose) 148 | { 149 | v = " -v "; 150 | } 151 | return SendCommand(CommandList[cmd] + f + v + " \"" + target + "\""); 152 | } 153 | 154 | 155 | 156 | 157 | /// 158 | /// Execute disunity with -h switch for basic usage information. 159 | /// 160 | /// Disunitys standard output. 161 | public string AskHelp() 162 | { 163 | return SendCommand(" -h"); 164 | } 165 | 166 | 167 | 168 | 169 | /// 170 | /// Starts a new disunity process using the provided arguments. 171 | /// 172 | /// 173 | /// Disunitys standard output. 174 | private string SendCommand(string a_args) 175 | { 176 | ProcessStartInfo startinfo = new ProcessStartInfo(); 177 | startinfo.FileName = Program.JavaPath; 178 | startinfo.Arguments = DisunityCommand + a_args; 179 | startinfo.UseShellExecute = false; 180 | startinfo.CreateNoWindow = true; 181 | startinfo.RedirectStandardInput = true; 182 | startinfo.RedirectStandardOutput = true; 183 | Console.WriteLine(">Executing.. " + Program.JavaPath + " " + DisunityCommand + " " + a_args + "\nBusy, this may take a minute or two."); 184 | Process javaProc = new Process(); 185 | javaProc.StartInfo = startinfo; 186 | javaProc.Start(); 187 | string output = javaProc.StandardOutput.ReadToEnd(); 188 | javaProc.WaitForExit(); 189 | // System.Threading.Thread.Sleep(1000); 190 | Console.WriteLine("Done executing.\n"); 191 | return output; 192 | } 193 | 194 | } 195 | } 196 | -------------------------------------------------------------------------------- /DisunityGuiHelper/src/ToolWindow.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace DisunityGuiHelper 2 | { 3 | partial class ToolWindow 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ToolWindow)); 32 | this.OutputBox = new System.Windows.Forms.RichTextBox(); 33 | this.DropZonePanel = new System.Windows.Forms.Panel(); 34 | this.TargetBrowseButton = new System.Windows.Forms.Button(); 35 | this.TargetTextBox = new System.Windows.Forms.TextBox(); 36 | this.FilterTextBox = new System.Windows.Forms.TextBox(); 37 | this.RunPresetSelection = new System.Windows.Forms.ComboBox(); 38 | this.ExecuteButton = new System.Windows.Forms.Button(); 39 | this.ClearLogOutputButton = new System.Windows.Forms.Button(); 40 | this.SaveLogOutputButton = new System.Windows.Forms.Button(); 41 | this.BrowseFileDialog = new System.Windows.Forms.OpenFileDialog(); 42 | this.BrowseFolderDialog = new System.Windows.Forms.FolderBrowserDialog(); 43 | this.SaveFileDialog = new System.Windows.Forms.SaveFileDialog(); 44 | this.WindowSplitContainer = new System.Windows.Forms.SplitContainer(); 45 | this.UprightSplitContainer = new System.Windows.Forms.SplitContainer(); 46 | this.panel3 = new System.Windows.Forms.Panel(); 47 | this.BusyStatusLabel = new System.Windows.Forms.Label(); 48 | this.BusyIndicator = new System.Windows.Forms.Panel(); 49 | this.WindowLayout = new System.Windows.Forms.TableLayoutPanel(); 50 | this.HelpHintTextbox = new System.Windows.Forms.TextBox(); 51 | this.panel4 = new System.Windows.Forms.Panel(); 52 | this.panel5 = new System.Windows.Forms.Panel(); 53 | this.RunExpertSelection = new System.Windows.Forms.TextBox(); 54 | this.panel2 = new System.Windows.Forms.Panel(); 55 | this.CommandLabel = new System.Windows.Forms.Label(); 56 | this.ToggleUseExpert = new System.Windows.Forms.CheckBox(); 57 | this.TargetPanel = new System.Windows.Forms.Panel(); 58 | this.ToggleUseLineHightlight = new System.Windows.Forms.CheckBox(); 59 | this.SupportButton = new System.Windows.Forms.Button(); 60 | this.ToggleUseScrollToEnd = new System.Windows.Forms.CheckBox(); 61 | this.ToggleUseVerbose = new System.Windows.Forms.CheckBox(); 62 | this.panel1 = new System.Windows.Forms.Panel(); 63 | this.FilterLabel = new System.Windows.Forms.Label(); 64 | this.ToggleUseTarget = new System.Windows.Forms.CheckBox(); 65 | ((System.ComponentModel.ISupportInitialize)(this.WindowSplitContainer)).BeginInit(); 66 | this.WindowSplitContainer.Panel1.SuspendLayout(); 67 | this.WindowSplitContainer.Panel2.SuspendLayout(); 68 | this.WindowSplitContainer.SuspendLayout(); 69 | ((System.ComponentModel.ISupportInitialize)(this.UprightSplitContainer)).BeginInit(); 70 | this.UprightSplitContainer.Panel1.SuspendLayout(); 71 | this.UprightSplitContainer.Panel2.SuspendLayout(); 72 | this.UprightSplitContainer.SuspendLayout(); 73 | this.panel3.SuspendLayout(); 74 | this.WindowLayout.SuspendLayout(); 75 | this.panel4.SuspendLayout(); 76 | this.panel5.SuspendLayout(); 77 | this.panel2.SuspendLayout(); 78 | this.TargetPanel.SuspendLayout(); 79 | this.panel1.SuspendLayout(); 80 | this.SuspendLayout(); 81 | // 82 | // OutputBox 83 | // 84 | this.OutputBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 85 | this.OutputBox.Dock = System.Windows.Forms.DockStyle.Fill; 86 | this.OutputBox.HideSelection = false; 87 | this.OutputBox.Location = new System.Drawing.Point(0, 0); 88 | this.OutputBox.Name = "OutputBox"; 89 | this.OutputBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.ForcedBoth; 90 | this.OutputBox.ShowSelectionMargin = true; 91 | this.OutputBox.Size = new System.Drawing.Size(579, 211); 92 | this.OutputBox.TabIndex = 0; 93 | this.OutputBox.TabStop = false; 94 | this.OutputBox.Text = ""; 95 | this.OutputBox.WordWrap = false; 96 | this.OutputBox.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.OutputBox_LinkClicked); 97 | this.OutputBox.SelectionChanged += new System.EventHandler(this.OutputBox_SelectionChanged); 98 | this.OutputBox.Click += new System.EventHandler(this.OutputBox_OnClick); 99 | this.OutputBox.TextChanged += new System.EventHandler(this.OutputBox_TextChanged); 100 | this.OutputBox.MouseUp += new System.Windows.Forms.MouseEventHandler(this.OutputBox_MouseUp); 101 | // 102 | // DropZonePanel 103 | // 104 | this.DropZonePanel.AllowDrop = true; 105 | this.DropZonePanel.BackColor = System.Drawing.SystemColors.ControlLightLight; 106 | this.DropZonePanel.BackgroundImage = global::DisunityGuiHelper.Properties.Resources.DropZoneImage; 107 | this.DropZonePanel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; 108 | this.DropZonePanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 109 | this.DropZonePanel.Location = new System.Drawing.Point(5, 38); 110 | this.DropZonePanel.MaximumSize = new System.Drawing.Size(100, 75); 111 | this.DropZonePanel.MinimumSize = new System.Drawing.Size(100, 75); 112 | this.DropZonePanel.Name = "DropZonePanel"; 113 | this.DropZonePanel.Size = new System.Drawing.Size(100, 75); 114 | this.DropZonePanel.TabIndex = 0; 115 | this.DropZonePanel.DragDrop += new System.Windows.Forms.DragEventHandler(this.DropZonePanel_OnDragDrop); 116 | this.DropZonePanel.DragEnter += new System.Windows.Forms.DragEventHandler(this.DropZonePanel_OnDragEnter); 117 | // 118 | // TargetBrowseButton 119 | // 120 | this.TargetBrowseButton.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.MenuHighlight; 121 | this.TargetBrowseButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 122 | this.TargetBrowseButton.Location = new System.Drawing.Point(5, 7); 123 | this.TargetBrowseButton.Name = "TargetBrowseButton"; 124 | this.TargetBrowseButton.Size = new System.Drawing.Size(100, 25); 125 | this.TargetBrowseButton.TabIndex = 1; 126 | this.TargetBrowseButton.Text = "Browse"; 127 | this.TargetBrowseButton.UseVisualStyleBackColor = true; 128 | this.TargetBrowseButton.Click += new System.EventHandler(this.TargetBrowseButton_OnClick); 129 | // 130 | // TargetTextBox 131 | // 132 | this.TargetTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 133 | | System.Windows.Forms.AnchorStyles.Left) 134 | | System.Windows.Forms.AnchorStyles.Right))); 135 | this.TargetTextBox.BackColor = System.Drawing.SystemColors.InactiveBorder; 136 | this.WindowLayout.SetColumnSpan(this.TargetTextBox, 2); 137 | this.TargetTextBox.Enabled = false; 138 | this.TargetTextBox.Location = new System.Drawing.Point(3, 3); 139 | this.TargetTextBox.Name = "TargetTextBox"; 140 | this.TargetTextBox.ReadOnly = true; 141 | this.TargetTextBox.Size = new System.Drawing.Size(459, 20); 142 | this.TargetTextBox.TabIndex = 1; 143 | this.TargetTextBox.TabStop = false; 144 | // 145 | // FilterTextBox 146 | // 147 | this.FilterTextBox.BackColor = System.Drawing.SystemColors.InactiveBorder; 148 | this.FilterTextBox.Dock = System.Windows.Forms.DockStyle.Fill; 149 | this.FilterTextBox.Location = new System.Drawing.Point(0, 0); 150 | this.FilterTextBox.Name = "FilterTextBox"; 151 | this.FilterTextBox.Size = new System.Drawing.Size(259, 20); 152 | this.FilterTextBox.TabIndex = 0; 153 | this.FilterTextBox.TextChanged += new System.EventHandler(this.FilterTextBox_OnTextChanged); 154 | this.FilterTextBox.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.FilterTextBox_OnKeyPress); 155 | // 156 | // RunPresetSelection 157 | // 158 | this.RunPresetSelection.BackColor = System.Drawing.SystemColors.InactiveBorder; 159 | this.RunPresetSelection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 160 | this.RunPresetSelection.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 161 | this.RunPresetSelection.FormattingEnabled = true; 162 | this.RunPresetSelection.Location = new System.Drawing.Point(3, 0); 163 | this.RunPresetSelection.Name = "RunPresetSelection"; 164 | this.RunPresetSelection.Size = new System.Drawing.Size(100, 21); 165 | this.RunPresetSelection.TabIndex = 0; 166 | this.RunPresetSelection.SelectionChangeCommitted += new System.EventHandler(this.RunPresetSelection_OnChangeCommitted); 167 | // 168 | // ExecuteButton 169 | // 170 | this.ExecuteButton.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.MenuHighlight; 171 | this.ExecuteButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 172 | this.ExecuteButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 173 | this.ExecuteButton.Location = new System.Drawing.Point(5, 119); 174 | this.ExecuteButton.Name = "ExecuteButton"; 175 | this.ExecuteButton.Size = new System.Drawing.Size(100, 25); 176 | this.ExecuteButton.TabIndex = 0; 177 | this.ExecuteButton.Text = "Execute"; 178 | this.ExecuteButton.Click += new System.EventHandler(this.ExecuteButton_OnClick); 179 | // 180 | // ClearLogOutputButton 181 | // 182 | this.ClearLogOutputButton.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.MenuHighlight; 183 | this.ClearLogOutputButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 184 | this.ClearLogOutputButton.Location = new System.Drawing.Point(125, 2); 185 | this.ClearLogOutputButton.Name = "ClearLogOutputButton"; 186 | this.ClearLogOutputButton.Size = new System.Drawing.Size(60, 24); 187 | this.ClearLogOutputButton.TabIndex = 3; 188 | this.ClearLogOutputButton.Text = "Clear"; 189 | this.ClearLogOutputButton.UseVisualStyleBackColor = true; 190 | this.ClearLogOutputButton.Click += new System.EventHandler(this.ClearLogOutputButton_OnClick); 191 | // 192 | // SaveLogOutputButton 193 | // 194 | this.SaveLogOutputButton.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.MenuHighlight; 195 | this.SaveLogOutputButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 196 | this.SaveLogOutputButton.Location = new System.Drawing.Point(125, 29); 197 | this.SaveLogOutputButton.Name = "SaveLogOutputButton"; 198 | this.SaveLogOutputButton.Size = new System.Drawing.Size(60, 25); 199 | this.SaveLogOutputButton.TabIndex = 4; 200 | this.SaveLogOutputButton.Text = "Save As"; 201 | this.SaveLogOutputButton.UseVisualStyleBackColor = true; 202 | this.SaveLogOutputButton.Click += new System.EventHandler(this.SaveLogOutputButton_OnClick); 203 | // 204 | // BrowseFileDialog 205 | // 206 | this.BrowseFileDialog.Title = "Target Unity Asset"; 207 | // 208 | // WindowSplitContainer 209 | // 210 | this.WindowSplitContainer.BackColor = System.Drawing.SystemColors.ControlLight; 211 | this.WindowSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill; 212 | this.WindowSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; 213 | this.WindowSplitContainer.IsSplitterFixed = true; 214 | this.WindowSplitContainer.Location = new System.Drawing.Point(0, 0); 215 | this.WindowSplitContainer.Name = "WindowSplitContainer"; 216 | this.WindowSplitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal; 217 | // 218 | // WindowSplitContainer.Panel1 219 | // 220 | this.WindowSplitContainer.Panel1.BackColor = System.Drawing.Color.AliceBlue; 221 | this.WindowSplitContainer.Panel1.Controls.Add(this.UprightSplitContainer); 222 | this.WindowSplitContainer.Panel1MinSize = 100; 223 | // 224 | // WindowSplitContainer.Panel2 225 | // 226 | this.WindowSplitContainer.Panel2.Controls.Add(this.OutputBox); 227 | this.WindowSplitContainer.Size = new System.Drawing.Size(579, 387); 228 | this.WindowSplitContainer.SplitterDistance = 175; 229 | this.WindowSplitContainer.SplitterWidth = 1; 230 | this.WindowSplitContainer.TabIndex = 2; 231 | // 232 | // UprightSplitContainer 233 | // 234 | this.UprightSplitContainer.BackColor = System.Drawing.SystemColors.ControlLightLight; 235 | this.UprightSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill; 236 | this.UprightSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; 237 | this.UprightSplitContainer.IsSplitterFixed = true; 238 | this.UprightSplitContainer.Location = new System.Drawing.Point(0, 0); 239 | this.UprightSplitContainer.Name = "UprightSplitContainer"; 240 | // 241 | // UprightSplitContainer.Panel1 242 | // 243 | this.UprightSplitContainer.Panel1.BackColor = System.Drawing.SystemColors.ControlLightLight; 244 | this.UprightSplitContainer.Panel1.Controls.Add(this.DropZonePanel); 245 | this.UprightSplitContainer.Panel1.Controls.Add(this.TargetBrowseButton); 246 | this.UprightSplitContainer.Panel1.Controls.Add(this.ExecuteButton); 247 | this.UprightSplitContainer.Panel1.Controls.Add(this.panel3); 248 | this.UprightSplitContainer.Panel1MinSize = 110; 249 | // 250 | // UprightSplitContainer.Panel2 251 | // 252 | this.UprightSplitContainer.Panel2.Controls.Add(this.WindowLayout); 253 | this.UprightSplitContainer.Panel2MinSize = 300; 254 | this.UprightSplitContainer.Size = new System.Drawing.Size(579, 175); 255 | this.UprightSplitContainer.SplitterDistance = 110; 256 | this.UprightSplitContainer.TabIndex = 0; 257 | // 258 | // panel3 259 | // 260 | this.panel3.Controls.Add(this.BusyStatusLabel); 261 | this.panel3.Controls.Add(this.BusyIndicator); 262 | this.panel3.Location = new System.Drawing.Point(20, 149); 263 | this.panel3.Name = "panel3"; 264 | this.panel3.Size = new System.Drawing.Size(67, 22); 265 | this.panel3.TabIndex = 7; 266 | // 267 | // BusyStatusLabel 268 | // 269 | this.BusyStatusLabel.AutoEllipsis = true; 270 | this.BusyStatusLabel.Location = new System.Drawing.Point(24, 4); 271 | this.BusyStatusLabel.Name = "BusyStatusLabel"; 272 | this.BusyStatusLabel.Size = new System.Drawing.Size(38, 13); 273 | this.BusyStatusLabel.TabIndex = 2; 274 | this.BusyStatusLabel.Text = "Ready"; 275 | // 276 | // BusyIndicator 277 | // 278 | this.BusyIndicator.BackColor = System.Drawing.Color.MediumSeaGreen; 279 | this.BusyIndicator.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 280 | this.BusyIndicator.Location = new System.Drawing.Point(3, 3); 281 | this.BusyIndicator.MaximumSize = new System.Drawing.Size(15, 15); 282 | this.BusyIndicator.MinimumSize = new System.Drawing.Size(15, 15); 283 | this.BusyIndicator.Name = "BusyIndicator"; 284 | this.BusyIndicator.Size = new System.Drawing.Size(15, 15); 285 | this.BusyIndicator.TabIndex = 1; 286 | // 287 | // WindowLayout 288 | // 289 | this.WindowLayout.ColumnCount = 2; 290 | this.WindowLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 200F)); 291 | this.WindowLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); 292 | this.WindowLayout.Controls.Add(this.HelpHintTextbox, 1, 3); 293 | this.WindowLayout.Controls.Add(this.TargetTextBox, 0, 0); 294 | this.WindowLayout.Controls.Add(this.panel4, 1, 2); 295 | this.WindowLayout.Controls.Add(this.panel5, 1, 1); 296 | this.WindowLayout.Controls.Add(this.panel2, 0, 1); 297 | this.WindowLayout.Controls.Add(this.TargetPanel, 0, 3); 298 | this.WindowLayout.Controls.Add(this.panel1, 0, 2); 299 | this.WindowLayout.Dock = System.Windows.Forms.DockStyle.Fill; 300 | this.WindowLayout.Location = new System.Drawing.Point(0, 0); 301 | this.WindowLayout.Name = "WindowLayout"; 302 | this.WindowLayout.RowCount = 4; 303 | this.WindowLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F)); 304 | this.WindowLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); 305 | this.WindowLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); 306 | this.WindowLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 27F)); 307 | this.WindowLayout.Size = new System.Drawing.Size(465, 175); 308 | this.WindowLayout.TabIndex = 0; 309 | // 310 | // HelpHintTextbox 311 | // 312 | this.HelpHintTextbox.BackColor = System.Drawing.SystemColors.InactiveBorder; 313 | this.HelpHintTextbox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 314 | this.HelpHintTextbox.Dock = System.Windows.Forms.DockStyle.Fill; 315 | this.HelpHintTextbox.Location = new System.Drawing.Point(203, 88); 316 | this.HelpHintTextbox.Multiline = true; 317 | this.HelpHintTextbox.Name = "HelpHintTextbox"; 318 | this.HelpHintTextbox.ReadOnly = true; 319 | this.HelpHintTextbox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; 320 | this.HelpHintTextbox.Size = new System.Drawing.Size(259, 84); 321 | this.HelpHintTextbox.TabIndex = 0; 322 | this.HelpHintTextbox.TabStop = false; 323 | // 324 | // panel4 325 | // 326 | this.panel4.Controls.Add(this.FilterTextBox); 327 | this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; 328 | this.panel4.Location = new System.Drawing.Point(203, 58); 329 | this.panel4.Name = "panel4"; 330 | this.panel4.Size = new System.Drawing.Size(259, 24); 331 | this.panel4.TabIndex = 9; 332 | // 333 | // panel5 334 | // 335 | this.panel5.Controls.Add(this.RunPresetSelection); 336 | this.panel5.Controls.Add(this.RunExpertSelection); 337 | this.panel5.Dock = System.Windows.Forms.DockStyle.Fill; 338 | this.panel5.Location = new System.Drawing.Point(203, 28); 339 | this.panel5.Name = "panel5"; 340 | this.panel5.Size = new System.Drawing.Size(259, 24); 341 | this.panel5.TabIndex = 16; 342 | // 343 | // RunExpertSelection 344 | // 345 | this.RunExpertSelection.AcceptsReturn = true; 346 | this.RunExpertSelection.BackColor = System.Drawing.SystemColors.InactiveBorder; 347 | this.RunExpertSelection.Location = new System.Drawing.Point(109, 1); 348 | this.RunExpertSelection.Name = "RunExpertSelection"; 349 | this.RunExpertSelection.Size = new System.Drawing.Size(100, 20); 350 | this.RunExpertSelection.TabIndex = 1; 351 | this.RunExpertSelection.TextChanged += new System.EventHandler(this.RunExpertSelection_OnTextChanged); 352 | this.RunExpertSelection.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.RunExpertSelection_OnKeyPress); 353 | // 354 | // panel2 355 | // 356 | this.panel2.Controls.Add(this.CommandLabel); 357 | this.panel2.Controls.Add(this.ToggleUseExpert); 358 | this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; 359 | this.panel2.Location = new System.Drawing.Point(3, 28); 360 | this.panel2.Name = "panel2"; 361 | this.panel2.Size = new System.Drawing.Size(194, 24); 362 | this.panel2.TabIndex = 15; 363 | // 364 | // CommandLabel 365 | // 366 | this.CommandLabel.AutoSize = true; 367 | this.CommandLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 368 | this.CommandLabel.Location = new System.Drawing.Point(129, 5); 369 | this.CommandLabel.Name = "CommandLabel"; 370 | this.CommandLabel.Size = new System.Drawing.Size(61, 13); 371 | this.CommandLabel.TabIndex = 8; 372 | this.CommandLabel.Text = "Command"; 373 | // 374 | // ToggleUseExpert 375 | // 376 | this.ToggleUseExpert.AutoSize = true; 377 | this.ToggleUseExpert.Location = new System.Drawing.Point(12, 4); 378 | this.ToggleUseExpert.Name = "ToggleUseExpert"; 379 | this.ToggleUseExpert.Size = new System.Drawing.Size(86, 17); 380 | this.ToggleUseExpert.TabIndex = 0; 381 | this.ToggleUseExpert.Text = "Expert Mode"; 382 | this.ToggleUseExpert.UseVisualStyleBackColor = true; 383 | this.ToggleUseExpert.CheckedChanged += new System.EventHandler(this.ToggleUseExpert_OnCheckedChanged); 384 | // 385 | // TargetPanel 386 | // 387 | this.TargetPanel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; 388 | this.TargetPanel.Controls.Add(this.ToggleUseLineHightlight); 389 | this.TargetPanel.Controls.Add(this.SupportButton); 390 | this.TargetPanel.Controls.Add(this.ToggleUseScrollToEnd); 391 | this.TargetPanel.Controls.Add(this.ClearLogOutputButton); 392 | this.TargetPanel.Controls.Add(this.SaveLogOutputButton); 393 | this.TargetPanel.Controls.Add(this.ToggleUseVerbose); 394 | this.TargetPanel.Dock = System.Windows.Forms.DockStyle.Fill; 395 | this.TargetPanel.Location = new System.Drawing.Point(3, 88); 396 | this.TargetPanel.Name = "TargetPanel"; 397 | this.TargetPanel.Size = new System.Drawing.Size(194, 84); 398 | this.TargetPanel.TabIndex = 14; 399 | // 400 | // ToggleUseLineHightlight 401 | // 402 | this.ToggleUseLineHightlight.AutoSize = true; 403 | this.ToggleUseLineHightlight.Location = new System.Drawing.Point(10, 59); 404 | this.ToggleUseLineHightlight.Name = "ToggleUseLineHightlight"; 405 | this.ToggleUseLineHightlight.Size = new System.Drawing.Size(94, 17); 406 | this.ToggleUseLineHightlight.TabIndex = 2; 407 | this.ToggleUseLineHightlight.Text = "Mark Highlight"; 408 | this.ToggleUseLineHightlight.UseVisualStyleBackColor = true; 409 | this.ToggleUseLineHightlight.CheckedChanged += new System.EventHandler(this.ToggleUseLineHightlight_CheckedChanged); 410 | // 411 | // SupportButton 412 | // 413 | this.SupportButton.FlatAppearance.MouseOverBackColor = System.Drawing.SystemColors.MenuHighlight; 414 | this.SupportButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 415 | this.SupportButton.Location = new System.Drawing.Point(125, 56); 416 | this.SupportButton.Name = "SupportButton"; 417 | this.SupportButton.Size = new System.Drawing.Size(60, 23); 418 | this.SupportButton.TabIndex = 5; 419 | this.SupportButton.Text = "Support"; 420 | this.SupportButton.UseVisualStyleBackColor = true; 421 | this.SupportButton.Click += new System.EventHandler(this.SupportButton_OnClick); 422 | // 423 | // ToggleUseScrollToEnd 424 | // 425 | this.ToggleUseScrollToEnd.AutoSize = true; 426 | this.ToggleUseScrollToEnd.Location = new System.Drawing.Point(10, 33); 427 | this.ToggleUseScrollToEnd.Name = "ToggleUseScrollToEnd"; 428 | this.ToggleUseScrollToEnd.Size = new System.Drawing.Size(72, 17); 429 | this.ToggleUseScrollToEnd.TabIndex = 1; 430 | this.ToggleUseScrollToEnd.Text = "Autoscroll"; 431 | this.ToggleUseScrollToEnd.UseVisualStyleBackColor = true; 432 | this.ToggleUseScrollToEnd.CheckedChanged += new System.EventHandler(this.ToggleUseScrollToEnd_OnCheckedChanged); 433 | // 434 | // ToggleUseVerbose 435 | // 436 | this.ToggleUseVerbose.AutoSize = true; 437 | this.ToggleUseVerbose.Location = new System.Drawing.Point(10, 8); 438 | this.ToggleUseVerbose.Name = "ToggleUseVerbose"; 439 | this.ToggleUseVerbose.Size = new System.Drawing.Size(65, 17); 440 | this.ToggleUseVerbose.TabIndex = 0; 441 | this.ToggleUseVerbose.Text = "Verbose"; 442 | this.ToggleUseVerbose.UseVisualStyleBackColor = true; 443 | this.ToggleUseVerbose.CheckedChanged += new System.EventHandler(this.ToggleUseVerbose_OnCheckedChanged); 444 | // 445 | // panel1 446 | // 447 | this.panel1.Controls.Add(this.FilterLabel); 448 | this.panel1.Controls.Add(this.ToggleUseTarget); 449 | this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; 450 | this.panel1.Location = new System.Drawing.Point(3, 58); 451 | this.panel1.Name = "panel1"; 452 | this.panel1.Size = new System.Drawing.Size(194, 24); 453 | this.panel1.TabIndex = 15; 454 | // 455 | // FilterLabel 456 | // 457 | this.FilterLabel.AutoSize = true; 458 | this.FilterLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 459 | this.FilterLabel.Location = new System.Drawing.Point(155, 4); 460 | this.FilterLabel.Name = "FilterLabel"; 461 | this.FilterLabel.Size = new System.Drawing.Size(35, 13); 462 | this.FilterLabel.TabIndex = 6; 463 | this.FilterLabel.Text = "Filter"; 464 | // 465 | // ToggleUseTarget 466 | // 467 | this.ToggleUseTarget.AutoSize = true; 468 | this.ToggleUseTarget.Location = new System.Drawing.Point(12, 4); 469 | this.ToggleUseTarget.Name = "ToggleUseTarget"; 470 | this.ToggleUseTarget.Size = new System.Drawing.Size(79, 17); 471 | this.ToggleUseTarget.TabIndex = 0; 472 | this.ToggleUseTarget.Text = "Use Target"; 473 | this.ToggleUseTarget.UseVisualStyleBackColor = true; 474 | this.ToggleUseTarget.CheckedChanged += new System.EventHandler(this.ToggleUseTarget_OnCheckedChanged); 475 | // 476 | // ToolWindow 477 | // 478 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 479 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 480 | this.BackColor = System.Drawing.SystemColors.ControlLightLight; 481 | this.ClientSize = new System.Drawing.Size(579, 387); 482 | this.Controls.Add(this.WindowSplitContainer); 483 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 484 | this.MinimumSize = new System.Drawing.Size(595, 425); 485 | this.Name = "ToolWindow"; 486 | this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; 487 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 488 | this.Text = "Disunity Graphical Interface"; 489 | this.WindowSplitContainer.Panel1.ResumeLayout(false); 490 | this.WindowSplitContainer.Panel2.ResumeLayout(false); 491 | ((System.ComponentModel.ISupportInitialize)(this.WindowSplitContainer)).EndInit(); 492 | this.WindowSplitContainer.ResumeLayout(false); 493 | this.UprightSplitContainer.Panel1.ResumeLayout(false); 494 | this.UprightSplitContainer.Panel2.ResumeLayout(false); 495 | ((System.ComponentModel.ISupportInitialize)(this.UprightSplitContainer)).EndInit(); 496 | this.UprightSplitContainer.ResumeLayout(false); 497 | this.panel3.ResumeLayout(false); 498 | this.WindowLayout.ResumeLayout(false); 499 | this.WindowLayout.PerformLayout(); 500 | this.panel4.ResumeLayout(false); 501 | this.panel4.PerformLayout(); 502 | this.panel5.ResumeLayout(false); 503 | this.panel5.PerformLayout(); 504 | this.panel2.ResumeLayout(false); 505 | this.panel2.PerformLayout(); 506 | this.TargetPanel.ResumeLayout(false); 507 | this.TargetPanel.PerformLayout(); 508 | this.panel1.ResumeLayout(false); 509 | this.panel1.PerformLayout(); 510 | this.ResumeLayout(false); 511 | 512 | } 513 | 514 | #endregion 515 | 516 | private System.Windows.Forms.RichTextBox OutputBox; 517 | private System.Windows.Forms.Panel DropZonePanel; 518 | private System.Windows.Forms.Button ClearLogOutputButton; 519 | private System.Windows.Forms.Button SaveLogOutputButton; 520 | private System.Windows.Forms.Button ExecuteButton; 521 | private System.Windows.Forms.ComboBox RunPresetSelection; 522 | private System.Windows.Forms.Button TargetBrowseButton; 523 | private System.Windows.Forms.TextBox TargetTextBox; 524 | private System.Windows.Forms.OpenFileDialog BrowseFileDialog; 525 | private System.Windows.Forms.FolderBrowserDialog BrowseFolderDialog; 526 | private System.Windows.Forms.SaveFileDialog SaveFileDialog; 527 | private System.Windows.Forms.SplitContainer WindowSplitContainer; 528 | private System.Windows.Forms.TextBox FilterTextBox; 529 | private System.Windows.Forms.Label FilterLabel; 530 | private System.Windows.Forms.Panel panel3; 531 | private System.Windows.Forms.Label BusyStatusLabel; 532 | private System.Windows.Forms.Panel BusyIndicator; 533 | private System.Windows.Forms.Label CommandLabel; 534 | private System.Windows.Forms.Panel panel4; 535 | private System.Windows.Forms.CheckBox ToggleUseVerbose; 536 | private System.Windows.Forms.CheckBox ToggleUseExpert; 537 | private System.Windows.Forms.TextBox RunExpertSelection; 538 | private System.Windows.Forms.TextBox HelpHintTextbox; 539 | private System.Windows.Forms.Panel TargetPanel; 540 | private System.Windows.Forms.CheckBox ToggleUseTarget; 541 | private System.Windows.Forms.CheckBox ToggleUseScrollToEnd; 542 | private System.Windows.Forms.SplitContainer UprightSplitContainer; 543 | private System.Windows.Forms.Panel panel1; 544 | private System.Windows.Forms.TableLayoutPanel WindowLayout; 545 | private System.Windows.Forms.Panel panel2; 546 | private System.Windows.Forms.Panel panel5; 547 | private System.Windows.Forms.Button SupportButton; 548 | private System.Windows.Forms.CheckBox ToggleUseLineHightlight; 549 | } 550 | } 551 | 552 | --------------------------------------------------------------------------------