📄 filedisassemblerwindow.cs
字号:
this.cbProjectType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbProjectType.Items.AddRange(new object[] {
"None",
"Class Library",
"Windows Application",
"Console Application"});
this.cbProjectType.Location = new System.Drawing.Point(288, 12);
this.cbProjectType.Name = "cbProjectType";
this.cbProjectType.Size = new System.Drawing.Size(132, 21);
this.cbProjectType.TabIndex = 1;
//
// outputDirectoryText
//
this.outputDirectoryText.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
this.outputDirectoryText.Location = new System.Drawing.Point(8, 40);
this.outputDirectoryText.Name = "outputDirectoryText";
this.outputDirectoryText.Size = new System.Drawing.Size(328, 20);
this.outputDirectoryText.TabIndex = 0;
this.outputDirectoryText.Text = "";
this.outputDirectoryText.TextChanged += new System.EventHandler(this.OutputDirectoryText_TextChanged);
//
// progressBar
//
this.progressBar.Anchor = ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
this.progressBar.Location = new System.Drawing.Point(8, 424);
this.progressBar.Name = "progressBar";
this.progressBar.Size = new System.Drawing.Size(416, 23);
this.progressBar.TabIndex = 6;
this.progressBar.TabStop = false;
this.progressBar.Visible = false;
//
// outputDirectoryLabel
//
this.outputDirectoryLabel.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.outputDirectoryLabel.Location = new System.Drawing.Point(8, 16);
this.outputDirectoryLabel.Name = "outputDirectoryLabel";
this.outputDirectoryLabel.Size = new System.Drawing.Size(100, 16);
this.outputDirectoryLabel.TabIndex = 0;
this.outputDirectoryLabel.Text = "&Output Directory:";
//
// generateButton
//
this.generateButton.Anchor = (System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right);
this.generateButton.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.generateButton.Location = new System.Drawing.Point(344, 40);
this.generateButton.Name = "generateButton";
this.generateButton.Size = new System.Drawing.Size(75, 21);
this.generateButton.TabIndex = 2;
this.generateButton.Text = "&Generate";
this.generateButton.Click += new System.EventHandler(this.GenerateButton_Click);
//
// logTextBox
//
this.logTextBox.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right);
this.logTextBox.Location = new System.Drawing.Point(8, 72);
this.logTextBox.MaxLength = 16777216;
this.logTextBox.Multiline = true;
this.logTextBox.Name = "logTextBox";
this.logTextBox.ReadOnly = true;
this.logTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.logTextBox.Size = new System.Drawing.Size(416, 344);
this.logTextBox.TabIndex = 5;
this.logTextBox.Text = "";
this.logTextBox.Visible = false;
this.logTextBox.WordWrap = false;
//
// FileDisassemblerWindow
//
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.lnkHomepage,
this.label7,
this.groupBox4});
this.Name = "FileDisassemblerWindow";
this.Size = new System.Drawing.Size(464, 592);
this.groupBox4.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.groupBox1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private void lnkHomepage_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
{
ProcessStartInfo sInfo = new ProcessStartInfo("iexplore.exe", "-new " + lnkHomepage.Text);
Process.Start(sInfo);
}
public IAssemblyBrowser AssemblyBrowser
{
get { return _assemblyBrowser; }
set
{
if (_assemblyBrowser != null)
{
_assemblyBrowser.ActiveItemChanged -= new EventHandler(AssemblyBrowser_ActiveItemChanged);
}
_assemblyBrowser = value;
if (_assemblyBrowser != null)
{
_assemblyBrowser.ActiveItemChanged += new EventHandler(AssemblyBrowser_ActiveItemChanged);
}
}
}
protected override void OnParentChanged(EventArgs e)
{
base.OnParentChanged(e);
outputDirectoryText.Enabled = true;
generateButton.Enabled = true;
logTextBox.Visible = false;
progressBar.Visible = false;
AssemblyBrowser_ActiveItemChanged(this, EventArgs.Empty);
}
private void GenerateButton_Click(object sender, System.EventArgs e)
{
outputDirectoryText.Enabled = false;
generateButton.Enabled = false;
cbProjectType.Enabled = false;
string outputDirectory = Path.Combine(Environment.CurrentDirectory, Environment.ExpandEnvironmentVariables(outputDirectoryText.Text));
try
{
if (!Directory.Exists(outputDirectory))
{
Directory.CreateDirectory(outputDirectory);
}
}
catch(IOException)
{
MessageBox.Show("Invalid path. Please enter a correct path", "Invalid Path", MessageBoxButtons.OK);
}
catch(NotSupportedException)
{
MessageBox.Show("Invalid path. Please enter a correct path", "Invalid Path", MessageBoxButtons.OK);
}
logTextBox.Text = string.Empty;
logTextBox.Visible = true;
progressBar.Value = 0;
progressBar.Visible = true;
FileDisassemblerHelper helper = new FileDisassemblerHelper(
AssemblyManager, TranslatorManager, LanguageManager, cbProjectType.SelectedIndex, outputDirectory,
new FileDisassemblerHelper.WriteLineDelegate(WriteLine),
new FileDisassemblerHelper.SetProgressBarDelegate(SetProgressBar));
int exceptions = helper.GenerateCode(_assemblyBrowser.ActiveItem);
WriteLine(string.Format("{0} error(s).", exceptions));
WriteLine("Done.");
progressBar.Value = 100;
outputDirectoryText.Enabled = true;
generateButton.Enabled = true;
cbProjectType.Enabled = true;
}
private void SetProgressBar(int pos)
{
progressBar.Value = pos;
}
private void WriteLine(string text)
{
logTextBox.Focus();
logTextBox.AppendText(text + Environment.NewLine);
logTextBox.ScrollToCaret();
System.Windows.Forms.Application.DoEvents();
}
private void AssemblyBrowser_ActiveItemChanged(object sender, EventArgs e)
{
IAssembly assembly = _assemblyBrowser.ActiveItem as IAssembly;
ITypeDeclaration typeDeclaration = _assemblyBrowser.ActiveItem as ITypeDeclaration;
if ((assembly != null) && (assembly.Location != null) && (assembly.Location.Length != 0))
{
string folderName = assembly.Name + "_Source";
outputDirectoryText.Text = Path.Combine(Path.GetDirectoryName(assembly.Location), folderName);
outputDirectoryText.Enabled = true;
generateButton.Enabled = true;
cbProjectType.SelectedIndex = 1;
cbProjectType.Enabled = true;
}
else if (typeDeclaration != null)
{
outputDirectoryText.Text = "";
outputDirectoryText.Enabled = true;
generateButton.Enabled = true;
cbProjectType.SelectedIndex = 0;
cbProjectType.Enabled = true;
}
else
{
outputDirectoryText.Text = "<No assembly selected>";
outputDirectoryText.Enabled = false;
generateButton.Enabled = false;
cbProjectType.SelectedIndex = -1;
cbProjectType.Enabled = false;
}
}
private void OutputDirectoryText_TextChanged(object sender, EventArgs e)
{
generateButton.Enabled = ((outputDirectoryText.Text != null) && (outputDirectoryText.Text.Length != 0));
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -