From e770473dbb1df2ef67f3c2600efba4464c00d2e4 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Mon, 11 May 2015 13:42:10 +0200 Subject: [PATCH] added small dialog to set the switches used to compile a runnable. --- src/ce_main.lfm | 48 ++++++++++++++++++++++++++++++++++++++++-- src/ce_main.pas | 55 +++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 99 insertions(+), 4 deletions(-) diff --git a/src/ce_main.lfm b/src/ce_main.lfm index 6155cfa6..61376ffb 100644 --- a/src/ce_main.lfm +++ b/src/ce_main.lfm @@ -572,6 +572,9 @@ object CEMainForm: TCEMainForm 07FFB47A07FFB47A08FFB57C0AFFB67F0FFFB88114FFBA851B23 } end + object MenuItem68: TMenuItem + Action = actSetRunnableSw + end object MenuItem59: TMenuItem Caption = '-' end @@ -1818,6 +1821,9 @@ object CEMainForm: TCEMainForm 07FFB47A07FFB47A08FFB57C0AFFB67F0FFFB88114FFBA851B23 } end + object MenuItem67: TMenuItem + Action = actSetRunnableSw + end object MenuItem10: TMenuItem Caption = '-' end @@ -2365,11 +2371,17 @@ object CEMainForm: TCEMainForm OnExecute = actFileUnittestExecute OnUpdate = updateDocumentBasedAction end + object actSetRunnableSw: TAction + Category = 'File' + Caption = 'Set runnable switches' + ImageIndex = 34 + OnExecute = actSetRunnableSwExecute + end end object imgList: TImageList left = 64 Bitmap = { - 4C69220000001000000010000000008F4E00008C4AB000965DFF00935AFF0093 + 4C69230000001000000010000000008F4E00008C4AB000965DFF00935AFF0093 59FF009359FF009359FF009359FF009359FF00945AFF008743FF008945FF008A 49A8FFFFFF00008F4E00008F4F00008E4E00008A47FF66E2D0FF62DDCAFF62DD C8FF62DDC8FF62DDC8FF62DDC8FF62DDC8FF62DDC9FF61E0CAFF62DEC8FF3ABA @@ -3457,7 +3469,39 @@ object CEMainForm: TCEMainForm FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00 + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF007E7E7E007F7F7F4D7F7F7F667F7F7F667F7F + 7F667F7F7F667F7F7F667F7F7F667F7F7F667F7F7F667F7F7F667F7F7F667F7F + 7F667F7F7F667F7F7F4D7E7E7E007C7C7C007C7C7C67FFFFFFFFFEFEFEFFFEFE + FEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFFFFFFFF7C7C7C677C7C7C007878780078787868FBFBFBFFAAAAAAFFF7F7 + F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFF7F7F7FFAAAA + AAFFFAFAFAFF7878786878787800737373007373736AF6F6F6FFF6F6F6FFEEEE + EEFFE2E2E2FFD6D6D6FFD6D6D6FFD6D6D6FFD6D6D6FFE2E2E2FFEEEEEEFFF6F6 + F6FFF3F3F3FF7373736A737373006E6E6E006E6E6E6BF1F1F1FFE5E5E5FFE5E5 + E5FFD2D2D2FF575757FF575757FF575757FF575757FFCACACAFFDADADAFFDDDD + DDFFE7E7E7FF6E6E6E6B6E6E6E00696969006969696DEBEBEBFFDEDEDEFFDEDE + DEFFCFCFCFFF5E5E5EFFD2D2D2FFD2D2D2FF5E5E5EFFBDBCBCFFCECDCDFFCECD + CDFFD7D6D6FF6969696D69696900636363006363636EE9E9E9FFDDDCDCFFD7D5 + D5FFCBC9C9FF686868FFE1E1E1FFE1E1E1FF686868FFB7B6B6FFD1CFCFFFD1CF + CFFFD7D4D4FF6363636E636363005C5C5C005C5C5C70E6E5E5FFD8D4D4FFD6D1 + D1FFD0CCCCFF747474FFB2B2B2FFB2B2B2FF747474FFB3AFAFFFD6D1D1FFD6D1 + D1FFD9D4D4FF5C5C5C705C5C5C005555550055555571E3DEDEFFDBD4D4FFDBD4 + D4FFD6D0D0FF808080FFFDFDFDFFFDFDFDFF808080FFAEA9A9FF64BA55FF3CB2 + 2AFF64BB56FF55555571555555004F4F4F004F4F4F73E5DCDCFFE0D6D6FFE0D6 + D6FFDCD3D3FF8C8C8CFFF2F2F2FFF2F2F2FF8C8C8CFFB1A9A9FF3BAC2AFF75EE + 64FF3CAE2BFF4F4F4F73317728004848480048484874E8DDDDFFE4D9D9FFE4D9 + D9FFE3D8D8FFA8A5A5FFD2D2D2FFD2D2D2FF479A3DFF33A123FF38A528FF66EB + 55FF3CA92BFF179407E3129C00993D3D3D003D3D3D76EBDDDDFF999999FFE9DB + DBFFE9DBDBFFE9DBDBFFC7BABAFFBBAFAFFF329B23FF52E741FF52E741FF52E7 + 41FF52E741FF52E741FF109500CC0B0B0B0023232377EDDDDDFFF6E5E5FFECDC + DCFFECDCDCFFECDCDCFFECDCDCFFECDCDCFF67AD58FF3A9C2CFF3A9C2CFF3DE2 + 2CFF3A9C2CFF108104E40B6A00990000001E0B0B0B640D0D0D780D0D0D780D0D + 0D780D0D0D780D0D0D780D0D0D780D0D0D780D0D0D780D0D0D780C7602E42BDF + 1AFF0C7602E40B0B0B640000001E00000000000000170000001A0000001A0000 + 001A0000001A0000001A0000001A0000001A0000001A0000001A0669009E0566 + 00D10669009E0000001700000000 } end object ApplicationProperties1: TApplicationProperties diff --git a/src/ce_main.pas b/src/ce_main.pas index ff8a466a..fdeef8cf 100644 --- a/src/ce_main.pas +++ b/src/ce_main.pas @@ -5,8 +5,8 @@ unit ce_main; interface uses - Classes, SysUtils, FileUtil, SynEditKeyCmds, SynHighlighterLFM, Forms, - AnchorDocking, AnchorDockStorage, AnchorDockOptionsDlg, Controls, Graphics, + Classes, SysUtils, FileUtil, SynEditKeyCmds, SynHighlighterLFM, Forms, StdCtrls, + AnchorDocking, AnchorDockStorage, AnchorDockOptionsDlg, Controls, Graphics, strutils, Dialogs, Menus, ActnList, ExtCtrls, process, XMLPropStorage, SynExportHTML, ce_common, ce_dmdwrap, ce_project, ce_dcd, ce_synmemo, ce_writableComponent, ce_widget, ce_messages, ce_interfaces, ce_editor, ce_projinspect, ce_projconf, @@ -34,6 +34,7 @@ type actFileHtmlExport: TAction; actFileUnittest: TAction; actFileCompileAndRunOut: TAction; + actSetRunnableSw: TAction; actLayoutSave: TAction; actProjOpenContFold: TAction; actProjOptView: TAction; @@ -122,6 +123,8 @@ type MenuItem64: TMenuItem; MenuItem65: TMenuItem; MenuItem66: TMenuItem; + MenuItem67: TMenuItem; + MenuItem68: TMenuItem; mnuLayout: TMenuItem; mnuItemMruFile: TMenuItem; mnuItemMruProj: TMenuItem; @@ -132,6 +135,7 @@ type MenuItem7: TMenuItem; MenuItem8: TMenuItem; MenuItem9: TMenuItem; + procedure actSetRunnableSwExecute(Sender: TObject); procedure updateDocumentBasedAction(sender: TObject); procedure updateProjectBasedAction(sender: TObject); procedure updateDocEditBasedAction(sender: TObject); @@ -1353,6 +1357,53 @@ begin (inph as ICEProcInputHandler).removeProcess(proc); end; +procedure TCEMainForm.actSetRunnableSwExecute(Sender: TObject); +var + form: TForm; + memo: TMemo; + i, j: integer; + cur: string; +begin + if fRunnableSw = '' then + fRunnableSw := '-vcolumns'#13'-w'#13'-wi'; + form := TForm.Create(nil); + form.BorderIcons:= [biSystemMenu]; + memo := TMemo.Create(form); + memo.Align := alClient; + memo.BorderSpacing.Around:=4; + memo.Text := fRunnableSw; + memo.Parent := form; + form.ShowModal; + // + fRunnableSw := ''; + for i := memo.Lines.Count-1 downto 0 do + begin + cur := memo.Lines.Strings[i]; + // duplicated item + j := memo.Lines.IndexOf(cur); + if (j > -1) and (j < i) then + continue; + // not a switch + if length(cur) < 2 then + continue; + if cur[1] <> '-' then + continue; + // added dynamically when needed + if cur = '-unittest' then + continue; + if cur = '-main' then + continue; + RemoveTrailingChars(cur, [#0..#30]); + fRunnableSw += (cur + #13); + end; + if (fRunnableSw <> '') and (fRunnableSw[length(fRunnableSw)] = #13) then + fRunnableSw := fRunnableSw[1..length(fRunnableSw)-1]; + if fRunnableSw = '' then + fRunnableSw := '-vcolumns'#13'-w'#13'-wi'; + // + form.Free; +end; + procedure TCEMainForm.compileAndRunFile(unittest: boolean = false; redirect: boolean = true; const runArgs: string = ''); var