Merge branch 'a12_2_a13'

This commit is contained in:
Basile Burg 2015-02-22 12:49:57 +01:00
commit ba0019e62a
8 changed files with 160 additions and 87 deletions

View File

@ -151,6 +151,7 @@
<Unit3>
<Filename Value="..\src\ce_d2syn.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ce_d2syn"/>
</Unit3>
<Unit4>
<Filename Value="..\src\ce_dcd.pas"/>
@ -213,7 +214,6 @@
<ComponentName Value="CEMiniExplorerWidget"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="ce_miniexplorer"/>
</Unit14>
<Unit15>
<Filename Value="..\src\ce_observer.pas"/>
@ -237,7 +237,6 @@
<ComponentName Value="CEProjectConfigurationWidget"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="ce_projconf"/>
</Unit18>
<Unit19>
<Filename Value="..\src\ce_project.pas"/>
@ -264,16 +263,15 @@
<ComponentName Value="CEStaticExplorerWidget"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="ce_staticexplorer"/>
</Unit22>
<Unit23>
<Filename Value="..\src\ce_staticmacro.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ce_staticmacro"/>
</Unit23>
<Unit24>
<Filename Value="..\src\ce_symstring.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ce_symstring"/>
</Unit24>
<Unit25>
<Filename Value="..\src\ce_synmemo.pas"/>
@ -290,6 +288,7 @@
<ComponentName Value="CEToolsEditorWidget"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="ce_toolseditor"/>
</Unit27>
<Unit28>
<Filename Value="..\src\ce_txtsyn.pas"/>
@ -305,6 +304,7 @@
<Unit30>
<Filename Value="..\src\ce_writablecomponent.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ce_writableComponent"/>
</Unit30>
<Unit31>
<Filename Value="..\src\ce_todolist.pas"/>
@ -324,7 +324,6 @@
<ComponentName Value="CEOptionEditorWidget"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="ce_optionseditor"/>
</Unit33>
<Unit34>
<Filename Value="..\src\ce_editoroptions.pas"/>
@ -341,7 +340,6 @@
<ComponentName Value="CEShortcutEditor"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Frame"/>
<UnitName Value="ce_shortcutseditor"/>
</Unit36>
</Units>
</ProjectOptions>
@ -353,7 +351,7 @@
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<OtherUnitFiles Value="..\src;$(LazarusDir)\components\anchordocking"/>
<OtherUnitFiles Value="..\src"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<CodeGeneration>

View File

@ -7,8 +7,8 @@ interface
uses
Classes, SysUtils, FileUtil, SynEditKeyCmds, SynHighlighterLFM, Forms,
AnchorDocking, AnchorDockStorage, AnchorDockOptionsDlg, Controls, Graphics,
Dialogs, Menus, ActnList, ExtCtrls, process, XMLPropStorage, dynlibs, SynExportHTML,
ce_common, ce_dmdwrap, ce_project, ce_dcd, ce_plugin, ce_synmemo, ce_widget,
Dialogs, Menus, ActnList, ExtCtrls, process, XMLPropStorage, SynExportHTML,
ce_common, ce_dmdwrap, ce_project, ce_dcd, ce_synmemo, ce_widget,
ce_messages, ce_interfaces, ce_editor, ce_projinspect, ce_projconf, ce_search,
ce_staticexplorer, ce_miniexplorer, ce_libman, ce_libmaneditor, ce_todolist,
ce_observer, ce_writableComponent, ce_toolseditor, ce_procinput, ce_optionseditor,

View File

@ -37,7 +37,6 @@ inherited CEMessagesWidget: TCEMessagesWidget
ShowLines = False
ShowRoot = False
TabOrder = 0
OnDblClick = ListDblClick
OnKeyDown = ListKeyDown
Options = [tvoAllowMultiselect, tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoToolTips, tvoThemedDraw]
end
@ -63,6 +62,7 @@ inherited CEMessagesWidget: TCEMessagesWidget
end
object ToolButton2: TToolButton
Left = 133
Height = 24
Top = 2
Width = 5
Caption = 'ToolButton2'
@ -76,6 +76,7 @@ inherited CEMessagesWidget: TCEMessagesWidget
end
object ToolButton4: TToolButton
Left = 238
Height = 24
Top = 2
Width = 5
Caption = 'ToolButton4'
@ -89,6 +90,7 @@ inherited CEMessagesWidget: TCEMessagesWidget
end
object ToolButton8: TToolButton
Left = 343
Height = 24
Top = 2
Width = 5
Caption = 'ToolButton8'
@ -102,6 +104,7 @@ inherited CEMessagesWidget: TCEMessagesWidget
end
object ToolButton10: TToolButton
Left = 448
Height = 24
Top = 2
Width = 5
Caption = 'ToolButton10'
@ -158,6 +161,7 @@ inherited CEMessagesWidget: TCEMessagesWidget
end
object ToolButton1: TToolButton
Left = 28
Height = 24
Top = 2
Width = 5
Caption = 'ToolButton1'

View File

@ -24,9 +24,19 @@ type
private
fMaxCount: Integer;
fAutoSelect: boolean;
fSingleClick: boolean;
fFont: TFont;
procedure setFont(aValue: TFont);
published
property maxMessageCount: integer read fMaxCount write fMaxCount;
property autoSelect: boolean read fAutoSelect write fAutoSelect;
property singleMessageClick: boolean read fSingleClick write fSingleClick;
property font: TFont read fFont write setFont;
public
constructor Create(AOwner: TComponent); override;
destructor destroy; override;
procedure assign(Source: TPersistent); override;
procedure AssignTo(Dest: TPersistent); override;
end;
TCEMessagesWidget = class(TCEWidget, ICEEditableOptions, ICEMultiDocObserver, ICEProjectObserver, ICEMessagesDisplay)
@ -44,7 +54,6 @@ type
btnSelProj: TToolButton;
ToolButton8: TToolButton;
btnSelApp: TToolButton;
procedure ListDblClick(Sender: TObject);
procedure ListKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
private
fActAutoSel: TAction;
@ -58,7 +67,9 @@ type
fDoc: TCESynMemo;
fCtxt: TCEAppMessageCtxt;
fAutoSelect: boolean;
fEditableOptions: TCEMessagesOptions;
fSingleClick: boolean;
fOptions: TCEMessagesOptions;
fOptionsBackup: TCEMessagesOptions;
fBtns: array[TCEAppMessageCtxt] of TToolButton;
procedure filterMessages(aCtxt: TCEAppMessageCtxt);
procedure clearOutOfRangeMessg;
@ -69,14 +80,12 @@ type
procedure actCopyMsgExecute(Sender: TObject);
procedure actSelAllExecute(Sender: TObject);
procedure setMaxMessageCount(aValue: Integer);
procedure setAutoSelectCategory(aValue: boolean);
procedure setSingleMessageClick(aValue: boolean);
procedure listDeletion(Sender: TObject; Node: TTreeNode);
procedure selCtxtClick(Sender: TObject);
function iconIndex(aKind: TCEAppMessageKind): Integer;
//
procedure optset_MaxMessageCount(aReader: TReader);
procedure optget_MaxMessageCount(aWriter: TWriter);
procedure optset_AutoSelect(aReader: TReader);
procedure optget_AutoSelect(aWriter: TWriter);
procedure handleMessageClick(Sender: TObject);
//
procedure projNew(aProject: TCEProject);
procedure projClosing(aProject: TCEProject);
@ -99,19 +108,19 @@ type
procedure clearbyContext(aCtxt: TCEAppMessageCtxt);
procedure clearbyData(aData: Pointer);
protected
procedure sesoptDeclareProperties(aFiler: TFiler); override;
//
function contextName: string; override;
function contextActionCount: integer; override;
function contextAction(index: integer): TAction; override;
published
property maxMessageCount: Integer read fMaxMessCnt write setMaxMessageCount default 125;
//
property maxMessageCount: Integer read fMaxMessCnt write setMaxMessageCount;
property autoSelectCategory: boolean read fAutoSelect write setAutoSelectCategory;
property singleMessageClick: boolean read fSingleClick write setSingleMessageClick;
public
constructor create(aOwner: TComponent); override;
destructor destroy; override;
//
procedure scrollToBack;
end;
function guessMessageKind(const aMessg: string): TCEAppMessageKind;
@ -121,8 +130,73 @@ type
implementation
{$R *.lfm}
const
optname = 'messages.txt';
{$REGION TCEMessagesOptions ----------------------------------------------------}
constructor TCEMessagesOptions.Create(AOwner: TComponent);
begin
inherited;
fFont := TFont.Create;
end;
destructor TCEMessagesOptions.destroy;
begin
fFont.Free;
inherited;
end;
procedure TCEMessagesOptions.setFont(aValue: TFont);
begin
fFont.Assign(aValue);
end;
procedure TCEMessagesOptions.assign(Source: TPersistent);
var
widg : TCEMessagesWidget;
opts : TCEMessagesOptions;
begin
if Source is TCEMessagesOptions then
begin
opts := TCEMessagesOptions(Source);
fFont.BeginUpdate;
fFont.Assign(opts.font);
fMaxCount := opts.fMaxCount;
fAutoSelect := opts.fAutoSelect;
fSingleClick := opts.fSingleClick;
fFont.EndUpdate;
end
else if Source is TCEMessagesWidget then
begin
widg := TCEMessagesWidget(Source);
fFont.Assign(widg.List.Font);
fMaxCount := widg.fMaxMessCnt;
fAutoSelect := widg.fAutoSelect;
fSingleClick := widg.fSingleClick;
end
else inherited;
end;
procedure TCEMessagesOptions.AssignTo(Dest: TPersistent);
var
widg : TCEMessagesWidget;
begin
if Dest is TCEMessagesWidget then
begin
widg := TCEMessagesWidget(Dest);
widg.List.Font.Assign(fFont);
widg.maxMessageCount := fMaxCount;
widg.autoSelectCategory := fAutoSelect;
widg.singleMessageClick := fSingleClick;
end
else inherited;
end;
{$ENDREGION}
{$REGION Standard Comp/Obj------------------------------------------------------}
constructor TCEMessagesWidget.create(aOwner: TComponent);
var
fname: string;
begin
fMaxMessCnt := 500;
fCtxt := amcAll;
@ -149,8 +223,10 @@ begin
//
inherited;
//
fEditableOptions := TCEMessagesOptions.Create(Self);
fEditableOptions.Name:= 'messageOptions';
fOptions := TCEMessagesOptions.Create(Self);
fOptions.assign(self);
fOptions.Name:= 'messageOptions';
fOptionsBackup := TCEMessagesOptions.Create(Self);
//
List.PopupMenu := contextMenu;
List.OnDeletion := @ListDeletion;
@ -168,12 +244,20 @@ begin
//
btnClearCat.OnClick := @actClearCurCatExecute;
//
fname := getCoeditDocPath + optname;
if fileExists(fname) then
begin
fOptions.loadFromFile(fname);
fOptions.AssignTo(self);
end;
//
EntitiesConnector.addObserver(self);
EntitiesConnector.addSingleService(self);
end;
destructor TCEMessagesWidget.destroy;
begin
fOptions.saveToFile(getCoeditDocPath + optname);
EntitiesConnector.removeObserver(self);
Inherited;
end;
@ -225,6 +309,36 @@ begin
fCtxt := amcMisc;
filterMessages(fCtxt);
end;
procedure TCEMessagesWidget.setMaxMessageCount(aValue: Integer);
begin
if aValue < 5 then
aValue := 5;
if fMaxMessCnt = aValue then
exit;
fMaxMessCnt := aValue;
clearOutOfRangeMessg;
end;
procedure TCEMessagesWidget.setAutoSelectCategory(aValue: boolean);
begin
fAutoSelect := aValue;
fActAutoSel.Checked:= fAutoSelect;
end;
procedure TCEMessagesWidget.setSingleMessageClick(aValue: boolean);
begin
fSingleClick := aValue;
if fSingleClick then
begin
List.OnClick := @handleMessageClick;
List.OnDblClick:= nil;
end else begin
List.OnClick := nil;
List.OnDblClick:= @handleMessageClick;
end;
end;
{$ENDREGION}
{$REGION ICEEditableOptions ----------------------------------------------------}
@ -240,61 +354,20 @@ end;
function TCEMessagesWidget.optionedWantContainer: TPersistent;
begin
fEditableOptions.maxMessageCount:= fMaxMessCnt;
fEditableOptions.autoSelect:= fActAutoSel.Checked;
exit(fEditableOptions);
fOptions.assign(self);
fOptionsBackup.assign(self);
exit(fOptions);
end;
procedure TCEMessagesWidget.optionedEvent(anEvent: TOptionEditorEvent);
begin
if anEvent = oeeAccept then
begin
fMaxMessCnt := fEditableOptions.maxMessageCount;
fActAutoSel.Checked := fEditableOptions.autoSelect;
clearOutOfRangeMessg;
case anEvent of
oeeAccept:
fOptionsBackup.assign(fOptions);
oeeCancel:
fOptions.assign(fOptionsBackup);
end;
end;
{$ENDREGION}
{$REGION ICESessionOptionsObserver ---------------------------------------------}
procedure TCEMessagesWidget.setMaxMessageCount(aValue: Integer);
begin
if aValue < 5 then
aValue := 5;
if fMaxMessCnt = aValue then
exit;
fMaxMessCnt := aValue;
clearOutOfRangeMessg;
end;
procedure TCEMessagesWidget.optset_MaxMessageCount(aReader: TReader);
begin
maxMessageCount := aReader.ReadInteger;
end;
procedure TCEMessagesWidget.optget_MaxMessageCount(aWriter: TWriter);
begin
aWriter.WriteInteger(fMaxMessCnt);
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);
begin
inherited;
aFiler.DefineProperty(Name + '_MaxMessageCount', @optset_MaxMessageCount,
@optget_MaxMessageCount, true);
aFiler.DefineProperty(Name + '_AutoSelectCategory', @optset_AutoSelect,
@optget_AutoSelect, true);
fOptions.AssignTo(self);
end;
{$ENDREGION}
@ -537,7 +610,7 @@ begin
List.BottomItem.MakeVisible;
end;
procedure TCEMessagesWidget.ListDblClick(Sender: TObject);
procedure TCEMessagesWidget.handleMessageClick(Sender: TObject);
var
pos: TPoint;
msg: string;

View File

@ -6,7 +6,7 @@ interface
uses
Classes, SysUtils, FileUtil, RTTIGrids, Forms, Controls, Graphics, ExtCtrls,
Menus, ComCtrls, StdCtrls, Buttons, ce_common, ce_widget, ce_interfaces,
Menus, ComCtrls, Buttons, ce_common, ce_widget, ce_interfaces,
ce_observer;
type
@ -155,12 +155,11 @@ begin
if selCat.Selected = nil then exit;
if selcat.Selected.Data = nil then exit;
//
if inspector.Parent <> nil then
inspector.ItemIndex := -1;
PCategoryData(selCat.Selected.Data)^
.observer
.optionedEvent(oeeCancel);
//
// if generic editor then
// refresh displayed value since the provider may have updated the options container
end;
procedure TCEOptionEditorWidget.btnAcceptClick(Sender: TObject);
@ -168,6 +167,8 @@ begin
if selCat.Selected = nil then exit;
if selcat.Selected.Data = nil then exit;
//
if inspector.Parent <> nil then
inspector.ItemIndex := -1;
PCategoryData(selCat.Selected.Data)^
.observer
.optionedEvent(oeeAccept);

View File

@ -6,7 +6,7 @@ interface
uses
Classes, SysUtils, FileUtil, TreeFilterEdit, Forms, Controls, Menus, Graphics,
ExtCtrls, LCLProc, ComCtrls, StdCtrls, LMessages, Buttons, LCLType,
ExtCtrls, LCLProc, ComCtrls, StdCtrls, Buttons, LCLType,
ce_observer, ce_interfaces, ce_common, ce_writableComponent;
type
@ -41,8 +41,6 @@ type
property item[index: Integer]: TShortcutItem read getShortcut; default;
end;
{ TCEShortcutEditor }
TCEShortcutEditor = class(TFrame, ICEEditableOptions)
shcCatch: TEdit;
Panel1: TPanel;
@ -189,7 +187,6 @@ end;
procedure TCEShortcutEditor.optionedEvent(anEvent: TOptionEditorEvent);
begin
// todo
end;
{$ENDREGION}

View File

@ -5,9 +5,9 @@ unit ce_todolist;
interface
uses
Classes, SysUtils, FileUtil, TreeFilterEdit, ListFilterEdit, Forms, Controls,
strutils, Graphics, Dialogs, ExtCtrls, Menus, Buttons, StdCtrls, ComCtrls,
asyncprocess, ce_widget, process, ce_common, ce_interfaces, ce_synmemo,
Classes, SysUtils, FileUtil, ListFilterEdit, Forms, Controls,
strutils, Graphics, Dialogs, ExtCtrls, Menus, Buttons, ComCtrls,
ce_widget, process, ce_common, ce_interfaces, ce_synmemo,
ce_project, ce_symstring;
type

View File

@ -5,7 +5,7 @@ unit ce_writableComponent;
interface
uses
Classes, SysUtils, ce_common, typinfo, fpjson, jsonparser, fpjsonrtti, fpjsondataset;
Classes, SysUtils, ce_common, typinfo, fpjson, jsonparser, fpjsonrtti;
type