Exemple #1
0
        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);
     }
 }
Exemple #4
0
 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);
     }
 }
Exemple #5
0
 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);
     }
 }
Exemple #8
0
 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);
 }
Exemple #9
0
 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);
     }
 }
Exemple #10
0
 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);
            }
        }
Exemple #12
0
 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);
            }
        }
Exemple #14
0
        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;
                }
            }
        }