diff --git a/src/ce_infos.lfm b/src/ce_infos.lfm index abc2c49c..73628b90 100644 --- a/src/ce_infos.lfm +++ b/src/ce_infos.lfm @@ -1,21 +1,21 @@ inherited CEInfoWidget: TCEInfoWidget Left = 713 - Height = 457 + Height = 502 Top = 245 Width = 411 BorderIcons = [biSystemMenu, biMinimize, biMaximize] Caption = 'About' - ClientHeight = 457 + ClientHeight = 502 ClientWidth = 411 inherited Back: TPanel - Height = 457 + Height = 502 Width = 411 - ClientHeight = 457 + ClientHeight = 502 ClientWidth = 411 inherited Content: TPanel - Height = 457 + Height = 502 Width = 411 - ClientHeight = 457 + ClientHeight = 502 ClientWidth = 411 object GroupBox1: TGroupBox[0] Left = 4 @@ -46,18 +46,18 @@ inherited CEInfoWidget: TCEInfoWidget end object GroupBox2: TGroupBox[1] Left = 4 - Height = 340 + Height = 385 Top = 113 Width = 403 Align = alClient BorderSpacing.Around = 4 Caption = 'tools status' - ClientHeight = 310 + ClientHeight = 355 ClientWidth = 399 TabOrder = 1 object boxTools: TScrollBox Left = 4 - Height = 302 + Height = 347 Top = 4 Width = 391 HorzScrollBar.Page = 1 diff --git a/src/ce_infos.pas b/src/ce_infos.pas index 49826b4c..35bba863 100644 --- a/src/ce_infos.pas +++ b/src/ce_infos.pas @@ -176,6 +176,10 @@ begin fIsModal := true; fIsDockable := false; // + toolItem := TToolInfo.Construct(self, tikOptional, 'dscanner', + 'optional, the D source code analyzer'); + toolItem.Parent := boxTools; + toolItem.ReAlign; toolItem := TToolInfo.Construct(self, tikOptional, 'dfmt', 'optional, the D source code formater, needed by the Dfmt commander widget'); toolItem.Parent := boxTools; diff --git a/src/ce_main.lfm b/src/ce_main.lfm index db4fee46..61080902 100644 --- a/src/ce_main.lfm +++ b/src/ce_main.lfm @@ -2188,6 +2188,9 @@ object CEMainForm: TCEMainForm object MenuItem59: TMenuItem Caption = '-' end + object MenuItem78: TMenuItem + Action = actFileDscanner + end object MenuItem60: TMenuItem Action = actFileOpenContFold Bitmap.Data = { @@ -4252,11 +4255,18 @@ object CEMainForm: TCEMainForm OnExecute = actFileSaveCopyAsExecute OnUpdate = updateDocumentBasedAction end + object actFileDscanner: TAction + Category = 'File' + Caption = 'Verify with Dscanner' + ImageIndex = 35 + OnExecute = actFileDscannerExecute + OnUpdate = updateDocumentBasedAction + end end object imgList: TImageList left = 64 Bitmap = { - 4C69230000001000000010000000008F4E00008C4AB000965DFF00935AFF0093 + 4C69240000001000000010000000008F4E00008C4AB000965DFF00935AFF0093 59FF009359FF009359FF009359FF009359FF00945AFF008743FF008945FF008A 49A8FFFFFF00008F4E00008F4F00008E4E00008A47FF66E2D0FF62DDCAFF62DD C8FF62DDC8FF62DDC8FF62DDC8FF62DDC8FF62DDC9FF61E0CAFF62DEC8FF3ABA @@ -5376,7 +5386,39 @@ object CEMainForm: TCEMainForm 0D780D0D0D780D0D0D780D0D0D780D0D0D780D0D0D780D0D0D780C7602E42BDF 1AFF0C7602E40B0B0B640000001E00000000000000170000001A0000001A0000 001A0000001A0000001A0000001A0000001A0000001A0000001A0669009E0566 - 00D10669009E0000001700000000 + 00D10669009E00000017000000002178AD002178AD002178AD002178AD002178 + AD002077AC001E75AA001B73A8FF1E75AA002077AC002178AD002178AD002178 + AD002178AD002178AD002178AD002178AD002178AD002178AD002178AD002177 + AC001E75AA00186EA4FFD0F9FFFF186EA3FF1E75A9002177AC002178AD002178 + AD002178AD002178AD002178AD002178AD002178AD002178AD002178AC001F75 + AA001B6FA3FF83DCFFFF16B2FFFF82DBFFFF1A6EA2FF1E74A9002177AC002178 + AD002178AD002178AD002178AD002178AD002178AD002177AC001E75AA001B6F + A3FF52B8F1FF22B9FFFF22BAFFFF21B8FFFF81DDFFFF1A6DA2FF1E74A9002177 + AC002178AD002178AD002178AD002178AD002177AC001E74A9001A6EA2FF7EDF + FFFF29BBFFFF2AC0FFFF3C1808FF2AC0FFFF27BAFFFF7DDEFFFF1A6DA2FF1E74 + A9002177AC002178AD002178AD002077AC001E74A9001A6DA2FF7CDFFFFF2CBD + FFFF2FBEFFFF2FC6FFFF492A1CFF2FC6FFFF2EBEFFFF2CBDFFFF7CDFFFFF1A6D + A2FF1E74A9002077AC002178AD001E75AA00196DA3FF78E0FFFF32C1FFFF34C0 + FFFF35C2FFFF34CAFFFF563529FF34CAFFFF35C2FFFF34C0FFFF32C1FFFF78E0 + FFFF196DA4FF1F75AB002177AE001C73A8FF9BF5FFFF36C8FFFF39C4FFFF3BC4 + FFFF3BC6FFFF39CCFFFF643F30FF39CCFFFF3BC6FFFF3BC4FFFF39C4FFFF38C7 + FFFF9EF2FFFF206FB1FF2473B50000000033196DA3FF6FE2FFFF3ECCFFFF3FC9 + FFFF3FC9FFFF3FCEFFFF3FD3FFFF40CEFFFF3FCAFFFF3FC8FFFF40CAFFFF73DC + FFFF008231FF00883CFF00A457002077AC00000000331B6DA3FF4EC1F0FF45D1 + FFFF45CEFFFF47D4FFFF31351CFF33C1DAFF48D0FFFF47CFFFFF48C2D9FF0096 + 48FF00E095FF00E49CFF009F5DFF2178AD002177AC00000000331B6DA3FF6BE6 + FFFF4DD6FFFF52D8FFFF008536FF008334FF55D7FFFF71E1FFFF007E32FF00DF + 95FF00E09AFF009C5BFF000000332178AD002178AD002177AC00000000331C6E + A5FF51C7F9FF00822CFF00E394FF00E196FF007F38FF007F38FF00E096FF00E1 + 9BFF008445FF0000003300A160002178AD002178AD002178AD002177AC000000 + 00331D6FA8FF6DEDFFFF008234FF00E096FF00DE97FF00DE97FF00E29BFF0086 + 46FF0000003300A2610000A160002178AD002178AD002178AD002178AD002177 + AD00000000331E6EAAFF6FF0FFFF00843CFF00E29BFF00E39CFF008647FF0000 + 0033008C4D0000A3620000A160002178AD002178AD002178AD002178AD002178 + AD002177AC00000000332270B3FF00000033008A48FF008A4AFF00000033008E + 4E00008D4D0000A3620000A16000000000000000000000000000000000000000 + 0000000000000000000000000033000000000000003300000033000000000000 + 0000000000000000000000000000 } end object ApplicationProperties1: TApplicationProperties diff --git a/src/ce_main.pas b/src/ce_main.pas index f4002aee..f699e33e 100644 --- a/src/ce_main.pas +++ b/src/ce_main.pas @@ -39,6 +39,7 @@ type actFileSaveCopyAs: TAction; actFileCompile: TAction; actFileRun: TAction; + actFileDscanner: TAction; actProjNewDubJson: TAction; actProjNewNative: TAction; actSetRunnableSw: TAction; @@ -140,6 +141,7 @@ type MenuItem75: TMenuItem; MenuItem76: TMenuItem; MenuItem77: TMenuItem; + MenuItem78: TMenuItem; mnuLayout: TMenuItem; mnuItemMruFile: TMenuItem; mnuItemMruProj: TMenuItem; @@ -151,6 +153,7 @@ type MenuItem8: TMenuItem; MenuItem9: TMenuItem; procedure actFileCompileExecute(Sender: TObject); + procedure actFileDscannerExecute(Sender: TObject); procedure actFileRunExecute(Sender: TObject); procedure actFileSaveCopyAsExecute(Sender: TObject); procedure actProjNewDubJsonExecute(Sender: TObject); @@ -2189,6 +2192,38 @@ begin compileRunnable(false); end; +procedure TCEMainForm.actFileDscannerExecute(Sender: TObject); +var + lst: TStringList; + prc: TProcess; + pth: string; + msg: string; +begin + if fDoc.isNil then + exit; + if fDoc.isTemporary and fDoc.modified then + fDoc.saveTempFile; + pth := exeFullName('dscanner' + exeExt); + if not pth.fileExists then + exit; + prc := TProcess.Create(nil); + lst := TStringList.Create; + try + prc.Executable:=pth; + prc.Options:= [poUsePipes]; + prc.ShowWindow:= swoHIDE; + prc.Parameters.Add(fDoc.fileName); + prc.Parameters.Add('-S'); + prc.Execute; + processOutputToStrings(prc, lst); + for msg in lst do + fMsgs.message(msg, fDoc, amcEdit, amkAuto); + finally + prc.Free; + lst.Free; + end; +end; + procedure TCEMainForm.actFileRunExecute(Sender: TObject); var fname: string;