public override void DoIt() { var dlgFactory = Services.RequireService <IDialogFactory>(); var uiSvc = Services.RequireService <IDecompilerShellUiService>(); Procedure_v1 sProc; if (!program.User.Procedures.TryGetValue(address, out sProc)) { sProc = new Procedure_v1 { Name = procedure.Name } } ; //$REVIEW: use dialog factory. var i = new ProcedureDialogInteractor(program, sProc); using (ProcedureDialog dlg = i.CreateDialog()) { if (DialogResult.OK == uiSvc.ShowModalDialog(dlg)) { i.ApplyChanges(); program.User.Procedures[address] = sProc; procedure.Name = sProc.Name; } } } }
public void OnProcedure() { proc.Name = " foo "; using (ProcedureDialog dlg = interactor.CreateDialog()) { dlg.Show(); Assert.AreEqual("foo", dlg.ProcedureName.Text); } }
public void PopulateWithEmptySignature() { proc.Name = "foo"; proc.Signature = new SerializedSignature(); proc.Signature.Arguments = new Argument_v1[0]; using (ProcedureDialog dlg = interactor.CreateDialog()) { dlg.Show(); Assert.AreEqual("void foo()", dlg.Signature.Text); } }
public void PopulateWithEmptySignature() { proc.Name = "foo"; proc.CSignature = "void foo()"; using (ProcedureDialog dlg = interactor.CreateDialog()) { dlg.Show(); Assert.AreEqual("foo", dlg.ProcedureName.Text); Assert.IsFalse(dlg.ProcedureName.Enabled); Assert.AreEqual("void foo()", dlg.Signature.Text); } }
public void InvalidSignatureText() { proc.Name = "foo"; proc.CSignature = "void foo()"; using (ProcedureDialog dlg = interactor.CreateDialog()) { dlg.Show(); Assert.AreEqual("void foo()", dlg.Signature.Text); dlg.Signature.Text = "void fbn("; Assert.AreEqual(Color.Red, dlg.Signature.ForeColor); Assert.IsFalse(dlg.OkButton.Enabled); } }
public void ValidSignatureText() { proc.Name = "foo"; proc.Signature = new SerializedSignature(); proc.Signature.Arguments = new Argument_v1[0]; using (ProcedureDialog dlg = interactor.CreateDialog()) { dlg.Show(); Assert.AreEqual("void foo()", dlg.Signature.Text); interactor.UserChangeSignatureText("void foo(word32 eax)"); Assert.AreEqual(SystemColors.WindowText, dlg.Signature.ForeColor); Assert.IsTrue(dlg.OkButton.Enabled); } }
public void InvalidSignatureText() { proc.Name = "foo"; proc.Signature = new SerializedSignature(); proc.Signature.Arguments = new Argument_v1[0]; using (ProcedureDialog dlg = interactor.CreateDialog()) { dlg.Show(); Assert.AreEqual("void foo()", dlg.Signature.Text); interactor.UserChangeSignatureText("void fbn("); Assert.AreEqual(System.Drawing.Color.Red, dlg.Signature.ForeColor); Assert.IsFalse(dlg.OkButton.Enabled); } }
public void CheckBoxesDefault() { using (ProcedureDialog dlg = interactor.CreateDialog()) { dlg.Show(); Assert.IsTrue(dlg.Decompile.Checked); Assert.IsFalse(dlg.Allocator.Checked); Assert.IsFalse(dlg.Terminates.Checked); dlg.Decompile.Checked = false; interactor.ApplyChanges(); } Assert.IsFalse(proc.Decompile); Assert.IsFalse(proc.Characteristics.Allocator); Assert.IsFalse(proc.Characteristics.Terminates); }
public void ValidSignatureText() { proc.Name = "foo"; proc.CSignature = "void foo()"; using (ProcedureDialog dlg = interactor.CreateDialog()) { dlg.Show(); Assert.AreEqual("void foo()", dlg.Signature.Text); dlg.Signature.Text = "void foo_new(int eax)"; Assert.AreEqual(SystemColors.WindowText, dlg.Signature.ForeColor); Assert.IsTrue(dlg.OkButton.Enabled); interactor.ApplyChanges(); Assert.AreEqual("void foo_new(int eax)", proc.CSignature); Assert.AreEqual("foo_new", proc.Name); } }
public void CheckBoxesCanceled() { proc.Decompile = false; using (ProcedureDialog dlg = interactor.CreateDialog()) { dlg.Show(); Assert.IsFalse(dlg.Decompile.Checked); Assert.IsFalse(dlg.Allocator.Checked); Assert.IsFalse(dlg.Terminates.Checked); dlg.Allocator.Checked = true; dlg.Terminates.Checked = true; dlg.Decompile.Checked = true; } Assert.IsFalse(proc.Decompile); Assert.IsNull(proc.Characteristics); }
public void SelectReturnValue() { proc.Name = "x"; proc.Signature = new SerializedSignature(); proc.Signature.Arguments = new Argument_v1[0]; CreateReturnValue(proc.Signature); using (ProcedureDialog dlg = interactor.CreateDialog()) { dlg.Show(); interactor.UserSwitchTab(1); interactor.UserSelectedItem(dlg.ArgumentList, 0); ListViewItem item = dlg.ArgumentList.Items[0]; Assert.AreEqual("<Return value>", item.Text); Assert.AreSame(item.Tag, dlg.ArgumentProperties.SelectedObject); } }
public void EnterProcedureName() { proc.Name = "foo"; proc.CSignature = "void foo()"; using (ProcedureDialog dlg = interactor.CreateDialog()) { dlg.Show(); Assert.AreEqual("void foo()", dlg.Signature.Text); Assert.IsFalse(dlg.ProcedureName.Enabled); dlg.Signature.Text = ""; Assert.IsTrue(dlg.ProcedureName.Enabled); dlg.ProcedureName.Text = "test123"; Assert.AreEqual(SystemColors.WindowText, dlg.Signature.ForeColor); Assert.IsTrue(dlg.OkButton.Enabled); interactor.ApplyChanges(); Assert.IsNull(proc.CSignature); Assert.AreEqual("test123", proc.Name); } }
public void ReturnValue() { proc.Name = "x"; proc.Signature = new SerializedSignature(); proc.Signature.Arguments = new Argument_v1[0]; CreateReturnValue(proc.Signature); //proc.Signature.Arguments = new SerializedArgument[1]; //proc.Signature.Arguments[0] = new SerializedArgument(); //proc.Signature.Arguments[0].Name = "arg0"; //proc.Signature.Arguments[0].Kind = new SerializedStackVariable(4); //proc.Signature.Arguments[0].Type = "int32"; using (ProcedureDialog dlg = interactor.CreateDialog()) { dlg.Show(); Assert.AreEqual(1, dlg.ArgumentList.Items.Count); Assert.AreEqual("<Return value>", dlg.ArgumentList.Items[0].Text); } }
public override void DoIt() { var dlgFactory = Services.RequireService <IDialogFactory>(); var uiSvc = Services.RequireService <IDecompilerShellUiService>(); var platform = program.Platform; var ser = platform.CreateProcedureSerializer(new TypeLibraryLoader(platform, true), "stdapi"); var sProc = ser.Serialize(procedure, address); //$REVIEW: use dialog factory. var i = new ProcedureDialogInteractor(platform.Architecture, sProc); using (ProcedureDialog dlg = i.CreateDialog()) { if (DialogResult.OK == uiSvc.ShowModalDialog(dlg)) { program.UserProcedures[address] = i.SerializedProcedure; ser = platform.CreateProcedureSerializer(new TypeLibraryLoader(platform, true), "stdapi"); procedure.Signature = ser.Deserialize(i.SerializedProcedure.Signature, procedure.Frame); // canAdvance = false; } } }