added messages option, autoselect category

This commit is contained in:
Basile Burg 2014-11-30 05:02:28 +01:00
parent a449f8c922
commit a4e18c1bb8
1 changed files with 42 additions and 6 deletions

View File

@ -39,6 +39,7 @@ type
procedure ListDblClick(Sender: TObject); procedure ListDblClick(Sender: TObject);
procedure ListKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure ListKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
private private
fActAutoSel: TAction;
fActClearAll: TAction; fActClearAll: TAction;
fActClearCurCat: TAction; fActClearCurCat: TAction;
fActSaveMsg: TAction; fActSaveMsg: TAction;
@ -48,8 +49,11 @@ type
fProj: TCEProject; fProj: TCEProject;
fDoc: TCESynMemo; fDoc: TCESynMemo;
fCtxt: TCEAppMessageCtxt; fCtxt: TCEAppMessageCtxt;
fAutoSelect: boolean;
fBtns: array[TCEAppMessageCtxt] of TToolButton;
procedure filterMessages(aCtxt: TCEAppMessageCtxt); procedure filterMessages(aCtxt: TCEAppMessageCtxt);
procedure clearOutOfRangeMessg; procedure clearOutOfRangeMessg;
procedure actAutoSelExecute(Sender: TObject);
procedure actClearCurCatExecute(Sender: TObject); procedure actClearCurCatExecute(Sender: TObject);
procedure actClearAllExecute(Sender: TObject); procedure actClearAllExecute(Sender: TObject);
procedure actSaveMsgExecute(Sender: TObject); procedure actSaveMsgExecute(Sender: TObject);
@ -62,6 +66,8 @@ type
// //
procedure optset_MaxMessageCount(aReader: TReader); procedure optset_MaxMessageCount(aReader: TReader);
procedure optget_MaxMessageCount(awriter: TWriter); procedure optget_MaxMessageCount(awriter: TWriter);
procedure optset_AutoSelect(aReader: TReader);
procedure optget_AutoSelect(awriter: TWriter);
published published
property maxMessageCount: Integer read fMaxMessCnt write setMaxMessageCount default 125; property maxMessageCount: Integer read fMaxMessCnt write setMaxMessageCount default 125;
public public
@ -107,6 +113,10 @@ begin
fMaxMessCnt := 125; fMaxMessCnt := 125;
fCtxt := amcAll; fCtxt := amcAll;
// //
fActAutoSel := TAction.Create(self);
fActAutoSel.Caption := 'Auto select message category';
fActAutoSel.AutoCheck := true;
fActAutoSel.OnExecute := @actAutoSelExecute;
fActClearAll := TAction.Create(self); fActClearAll := TAction.Create(self);
fActClearAll.OnExecute := @actClearAllExecute; fActClearAll.OnExecute := @actClearAllExecute;
fActClearAll.caption := 'Clear all messages'; fActClearAll.caption := 'Clear all messages';
@ -133,6 +143,11 @@ begin
btnSelEdit.OnClick := @selCtxtClick; btnSelEdit.OnClick := @selCtxtClick;
btnSelApp.OnClick := @selCtxtClick; btnSelApp.OnClick := @selCtxtClick;
btnSelAll.OnClick := @selCtxtClick; btnSelAll.OnClick := @selCtxtClick;
fBtns[amcAll] := btnSelAll;
fBtns[amcApp] := btnSelApp;
fBtns[amcEdit]:= btnSelEdit;
fBtns[amcMisc]:= btnSelMisc;
fBtns[amcProj]:= btnSelProj;
// //
btnClearCat.OnClick := @actClearCurCatExecute; btnClearCat.OnClick := @actClearCurCatExecute;
// //
@ -218,11 +233,24 @@ begin
aWriter.WriteInteger(fMaxMessCnt); aWriter.WriteInteger(fMaxMessCnt);
end; end;
procedure TCEMessagesWidget.optset_AutoSelect(aReader: TReader);
begin
fAutoSelect := aReader.ReadBoolean;
fActAutoSel.Checked := fAutoSelect;
end;
procedure TCEMessagesWidget.optget_AutoSelect(awriter: TWriter);
begin
awriter.WriteBoolean(fAutoSelect);
end;
procedure TCEMessagesWidget.sesoptDeclareProperties(aFiler: TFiler); procedure TCEMessagesWidget.sesoptDeclareProperties(aFiler: TFiler);
begin begin
inherited; inherited;
aFiler.DefineProperty(Name + '_MaxMessageCount', @optset_MaxMessageCount, aFiler.DefineProperty(Name + '_MaxMessageCount', @optset_MaxMessageCount,
@optget_MaxMessageCount, true); @optget_MaxMessageCount, true);
aFiler.DefineProperty(Name + '_AutoSelectCategory', @optset_AutoSelect,
@optget_AutoSelect, true);
end; end;
{$ENDREGION} {$ENDREGION}
@ -234,21 +262,27 @@ end;
function TCEMessagesWidget.contextActionCount: integer; function TCEMessagesWidget.contextActionCount: integer;
begin begin
result := 5; result := 6;
end; end;
function TCEMessagesWidget.contextAction(index: integer): TAction; function TCEMessagesWidget.contextAction(index: integer): TAction;
begin begin
case index of case index of
0: result := fActClearAll; 0: result := fActAutoSel;
1: result := fActClearCurCat; 1: result := fActClearAll;
2: result := fActCopyMsg; 2: result := fActClearCurCat;
3: result := fActSelAll; 3: result := fActCopyMsg;
4: result := fActSaveMsg; 4: result := fActSelAll;
5: result := fActSaveMsg;
else result := nil; else result := nil;
end; end;
end; end;
procedure TCEMessagesWidget.actAutoSelExecute(Sender: TObject);
begin
fAutoSelect := fActAutoSel.Checked;
end;
procedure TCEMessagesWidget.actClearAllExecute(Sender: TObject); procedure TCEMessagesWidget.actClearAllExecute(Sender: TObject);
begin begin
lmClearbyContext(amcAll); lmClearbyContext(amcAll);
@ -378,6 +412,8 @@ begin
clearOutOfRangeMessg; clearOutOfRangeMessg;
scrollToBack; scrollToBack;
Application.ProcessMessages; Application.ProcessMessages;
if fAutoSelect then if fCtxt <> aCtxt then
fBtns[aCtxt].Click;
filterMessages(fCtxt); filterMessages(fCtxt);
end; end;